lit - vs
通过计算两个点积和一个指数的照明系数,为照明提供部分支持。
语法
lit dst、src |
---|
其中
- dst 是目标寄存器。
- src 是源寄存器。
备注
顶点着色器版本 | 1_1 | 2_0 | 2_x | 2_sw | 3_0 | 3_sw |
---|---|---|---|---|---|---|
点燃 | x | x | x | x | x | x |
假定源向量包含以下伪代码中显示的值。
src.x = N*L ; The dot product between normal and direction to light
src.y = N*H ; The dot product between normal and half vector
src.z = ignored ; This value is ignored
src.w = exponent ; The value must be between -128.0 and 128.0
以下代码片段显示了执行的操作。
dest.x = 1;
dest.y = 0;
dest.z = 0;
dest.w = 1;
float power = src.w;
const float MAXPOWER = 127.9961f;
if (power < -MAXPOWER)
power = -MAXPOWER; // Fits into 8.8 fixed point format
else if (power > MAXPOWER)
power = MAXPOWER; // Fits into 8.8 fixed point format
if (src.x > 0)
{
dest.y = src.x;
if (src.y > 0)
{
// Allowed approximation is EXP(power * LOG(src.y))
dest.z = (float)(pow(src.y, power));
}
}
在计算目标 y 分量 (dest.y) 时,可接受降精度算术。 实现必须支持 power 参数中的至少 8 个分数位。 点积是使用规范化向量计算的,夹子限制为 -128 到 128。
错误应对应于 logp - vs 和 exp - vs 组合,或不超过 8 位颜色分量大约一个有效位。
相关主题