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);