On this page | |
Context(s) | shading |
vector occlusion(vector P, vector N, ...)
法線NのポイントPでアンビエントオクルージョンを計算します。まさにirradiance関数と同様で、半球状にサンプリングされます。 しかし、irradianceと違って、半球状のサンプリング中に交差したサーフェスがシェーディングされません。 この関数を適切に動作させるには、定数背景色または環境マップをオプションのスコープパラメータに指定しなければなりません。
void occlusion(float &coverage, vector &missed_direction, vector P, vector N, ...)
アンビエントオクルージョンからカラー情報を計算するのではなく、この形式は適用範囲(オクルージョンのパーセンテージ)と空っぽの空間の平均方向を計算します。 平均方向を使えば、事前にブラーした環境マップのカラーを検索することができます。
サンプル適応オプション ¶
"adaptive
",
1
または0
。
サンプル数を増やしてもオクルージョンにほとんど違いがないような時にそのサンプル数を減らす自動最適化を有効にします。
これは、何かしらのチラツキやノイズが発生する可能性がありますがパフォーマンスが改善されます。
"bias
",
float
=0.001
レイトレーシングのバイアス。 これは自己交差を制御することができます。
光線オプション ¶
Tip
テクスチャを指定する時に例えばenvironment
キーワードと同様に、
画像フィルタリングキーワード引数を使用することもできます。
画像フィルタキーワード引数のリストは、environmentを参照してください。
"scope
",
string
光線に当たることができるオブジェクトのリスト。これを指定すると、scope
は、指定したraystyle
が選択されるようになっていたデフォルトのスコープを上書きします。
scope:default
値は、scope
引数が現在のコンテキストのデフォルトのスコープを使用するようにします。つまり、この引数を指定しなかった時の挙動になります。
光線の交差に対してスコープの上書きが可能になります。
特別なスコープ引数のscope:self
は、現在シェーディングされているオブジェクトにマッチします。
"currentobject
",
material
現行シェーディングオブジェクトがどれなのかを指定するために使用します。例えば、scope引数を使ったscope:self
は、この引数によって渡されたオブジェクトと同じ意味になります。
"maxdist
",
float
=-1
オブジェクトを検索する最大距離。これは、オブジェクトの検索を、その近くにあるオブジェクトだけに制限するために使います。指定したmaxdist
がマイナスなら、最大距離が指定されていないと見なされます。
交差をテストする時に光線が移動できる最大距離を上書きすることができます。 いくつかの関数(例えばfastshadow)には、(光線の長さによって)暗黙的に最大距離が定義されているものがあり、おそらくこのオプションを使用することができません。 しかし、反射、グローバルイルミネーション、屈折などの計算をする時には、このオプションを効果的に使用することができます。
"variancevar
",
string
分散アンチエイリアスで使用するVEXエクスポート変数の名前。レンダラーは、マイクロポリゴンレンダリングでこの値と隣接するマイクロポリゴンを比較し、さらにサンプルを必要とするシェーディングポイントを判断します(閾値としてvm_variance
propertyを使用)。もっとサンプルが必要なら、アルゴリズムは指定した最大光線サンプル数までサンプルを引き上げます。
この変数は、ヒットサーフェスからインポートされなければならないので、この変数はインポートする名前のリストになければなりません(以下の“光線から情報をインポートする”を参照)。名前を付けた変数がインポートされなければ、このオプションは無視されます。
分散アンチエイリアスは、高い分散値を持つ画像の領域内(例えば、シャープなシャドウエッジ)により多くのサンプルを配置します。これはvm_dorayvariance
が有効な時だけに使われます。そうでない場合は、最小光線サンプル(または明示的に指定したsamples
の値)のみがgatherループのアンチエイリアスで使われます。
グローバルのVarianceコントロール(Mantraの-vオプション)を上書きします。 このコントロールは、レイトレーシングのアンチエイリアス品質の決定に使用されます。 詳細は、Mantraのドキュメントを参照してください。
"angle
",
float
=0
分布角度(ラジアンで指定)。gather()に関しては、光線はこのアングル内で分布します。trace()に関しては、この角度は、交差距離が長くなるにつれてフィルタ幅が広がる速さを示すために使用されます。 角度が大きいほど、より遠くにあるヒットサーフェスほど、より大きい微分を使用するので、テクスチャリングとディスプレイスメントのパフォーマンスが良くなります。
効果を出すには、samplesパラメータも指定してください。
"samples
",
int|float
=1
フィルタ光線に送信されるサンプル数。イラディアンスとオクルージョンの関数に関しては、samplesパラメータを指定することで、デフォルトのイラディアンスサンプリングが上書きされます。
"environment
",
string
シーンに送信された光線がどこにも当たらなかった場合に評価される環境マップを指定することができます。
光線の方向を使用すると、指定した環境マップが評価されて、その結果のカラーが返されます。 ほとんどの場合、環境マップを評価するには、トランスフォーム空間を指定する必要があります。
refractlightとtraceの場合では、指定した背景カラーに関係なくOfとAfの変数に0が設定されます。
環境マップを指定する時、texture()のフィルタオプションにも対応しています。
環境/反射マップを作成する方法を参照してください。
"envobject
",
string
環境マップが使用されている場合、光線をシーン内の他のオブジェクト、ライトオブジェクト、フォグオブジェクトの空間に変換することで、その環境マップの向きを指定することができます。 Houdiniでは、Nullオブジェクトを使用して、その向きを指定することができます。例:
Cf = R*reflectlight(bias, max(R), "environment", "map.rat", "envobject", "null_object_name");
"envlight
",
string
環境マップが使用されている場合、光線をシーン内のライトの空間に変換することで、その環境マップの向きを指定することができます。
"envtint
",
vector
環境マップが使用されている場合、このカラーを使って環境マップに色味を付けます。
"background
",
vector
光線がどのオブジェクトにも当たらなかった場合、これをシーンの背景カラーとして使用します。 refractlightとtraceの場合では、指定した背景カラーに関係なくOfとAfの変数に0が設定されます。
"distribution
",
string
関数: irradiance, occlusion
イラディアンスの計算をするための分布。デフォルトでは、コサイン分布(ディフューズ照明)を使用します。
スタイルに指定可能な値は、均一なサンプリングをするnonweighted
、コサインウェイトのサンプリングをするcosine
です。
See also | |
light |
|
surface |