void sample_bsdf(bsdf F, vector viewer_u, vector &dir, vector &eval, int &type, float sx, float sy, ...)
void sample_bsdf(bsdf F, vector viewer_u, vector &dir, vector &eval, int &type, float sx, float sy, int mask, ...)
void sample_bsdf(bsdf F, vector viewer_u, vector &dir, vector &eval, float &pdf, int &type, float sx, float sy, ...)
void sample_bsdf(bsdf F, vector viewer_u, vector &dir, vector &eval, float &pdf, int &type, float sx, float sy, int mask, ...)
void sample_bsdf(bsdf b, vector viewer_u, vector normal_v, int &flags, vector &dir, vector &eval, float &pdf, int &type, float sx, float sy, int mask, ...)
F
サンプリングするBSDF。
viewer_u
Uベクトル(入力のビューア方向)。
normal_v
Vベクトル(入力のサーフェス法線)。
&flags
pbr.h
で定義されているBSDFのフラグのビットフィールド。この関数は、PBR_BSDF_REVERSE
またはPBR_BSDF_O_EVENT_EXIT
のようなフラグを設定することができます。
&dir
この関数は、出射光線方向でこの変数を上書きします。
&eval
この関数は、アルベドでスケールされた出射光線カラーでこの変数を上書きします。
これは、eval_bsdf
オペレーションが返す評価されたベクトルと同じではありません。
ここでは、&eval
は、出射サンプル方向で変化しません。
&pdf
この関数は、BSDFの計算されたPDFでこの変数を上書きします。
&type
複合BSDFでは、これは、サンプリングされたバウンスタイプを返します。
コンポーネントラベルビットマスクの詳細は、bouncemaskを参照してください。
sx
とsy
例えばnextsampleで生成されたランダム値。sx
とsy
の値が異なれば、サンプリングするランダムな方向が異なることを意味します。
&eval
サンプリングされたコンポーネントをアルベドでスケールしたカラーで上書きされます。
&pdf
サンプリングされたコンポーネントのサンプリングPDF。
bounces
許可されているバウンスタイプを示したビットマスク。
sample_bsdf
関数は、評価するBSDFにキーワード引数を渡します。
カスタムBSDFに関しては、それらのキーワード引数をシェーダ引数にバインドします(例えば、直接照明または間接照明に対してBSDFを評価するかどうかを指示します)。
BSDFが情報をsample_bsdf
に返すことも可能です。
キーワード引数の値をBSDFから取り込むように指定するには、そのキーワードの頭に“import:”を付けます。例:
Examples ¶
sample_bsdf(F, inI, outI, eval, type, sx, sy, "direct", 0, // 間接照明を指定します。 "import:sssmfp", sssmfp, // エクスポートされたsssmfpパラメータを読み込みます。 ... );
See also | |
bsdf |
|
pbr |
|
sampling |