跳转到内容

sample_bsdf

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

BSDF的标志位字段,定义在pbr.h中。函数可能会设置如PBR_BSDF_REVERSEPBR_BSDF_O_EVENT_EXIT等标志。

&dir

函数会覆盖此变量为出射光线方向。

&eval

函数会覆盖此变量为出射光线颜色(经过反照率缩放)。

这与eval_bsdf操作返回的评估向量不同。此处的&eval不会随出射采样方向变化。

&pdf

函数会覆盖此变量为计算得到的BSDF概率密度函数(PDF)。

&type

在复合BSDF中,返回被采样的弹射类型。

关于组件标签位掩码的信息,请参阅bouncemask

sxsy

随机值,例如由nextsample生成。不同的sxsy值代表不同的随机采样方向。

&eval

被覆盖为采样组件的颜色(经过反照率缩放)。

&pdf

采样组件的采样概率密度函数。

bounces

表示允许的弹射类型的位掩码。

sample_bsdf函数将关键字参数传递给被评估的BSDF。对于自定义BSDF,这些关键字参数会绑定到着色器参数(例如指示BSDF是用于直接照明还是间接照明评估)。BSDF也可以将信息传回给sample_bsdf。若要表示关键字参数值应从BSDF导入,请在关键字前加上”import:“。例如:

示例

sample_bsdf(F, inI, outI, eval, type, sx, sy,
"direct", 0, // 指定间接照明
"import:sssmfp", sssmfp, // 读取导出的sssmfp参数
...
);