跳转到内容

sample_light

上下文置换 雾效 表面

int  sample_light(int lightid, vector pos, vector sam, float time, vector &pos, vector &clr, float &scale, ...)

lightid

标识光源的整数值。您可以使用getlights获取影响当前着色表面的光源ID列表。

pos

采样光源的起始表面点。面光源会根据该位置的立体角分布采样——即距离该位置较近的光源几何体会获得更多采样。

sam

随机值向量,例如由nextsample生成的数值。目前仅使用sam的前2个分量。不同的sam值会转换为光源几何体上不同的随机位置。

time

着色时间。

该函数会修改以下参数的值:

pos

光源上的采样位置。

clr

由灯光着色器设置的灯光颜色。

scale

灯光的平均半球强度(针对面光源)。

返回值

表示该光源影响哪些类型组件反弹的组件位掩码

提示 如果您使用sample_light生成灯光颜色(例如要重现illuminance循环产生的Cl值),您需要将clr归一化到scale

clr *= scale / luminance(clr);