texm3x2depth - ps
计算要用于此像素的深度测试的深度值。
语法
texm3x2depth dst, src |
---|
其中
- dst 是目标寄存器。
- src 是源寄存器。
备注
像素着色器版本 | 1_1 | 1_2 | 1_3 | 1_4 | 2_0 | 2_x | 2_sw | 3_0 | 3_sw |
---|---|---|---|---|---|---|---|---|---|
texm3x2depth | x |
此指令必须与 texm3x2pad - ps 指令一起使用。
使用这两个指令时,纹理寄存器必须使用以下序列。
tex t(n) // Define tn as a standard 3-vector.(tn must be
// defined in some way before it is used
texm3x2pad t(m), t(n) // Where m > n
// Calculate z value
texm3x2depth t(m+1), t(n) // Calculate w value; use both z and w to
// find depth
深度计算是在使用点积运算查找 z 和 w 后完成的。 下面是有关如何完成深度计算的更多详细信息。
texm3x2pad 指令计算 z。
z = TextureCoordinates (stage m) UVW * t (n) RGB
texm3x2depth 指令计算 w.
w = TextureCoordinates (阶段 m+1) UVW * t (n) RGB
计算深度并将结果存储在 t (m+1) 。
if (w == 0)
t(m+1) = 1.0
else
t(m+1) = z/w
计算的深度标记为用于像素的深度测试,替换像素的现有深度测试值。
请确保将 z/w 固定在 (0-1) 范围内。 如果 z/w 超出此范围,则存储在深度缓冲区中的结果将不确定。
运行 texm3x2depth 后,寄存器 t (m+1) 不再可用于着色器。
多重采样时,使用此指令将消除更高分辨率深度缓冲区的大部分好处。 由于像素着色器每个像素运行一次,因此 texm3x2depth 或 texdepth - ps 输出的单深度值将用于每个子像素深度比较测试。
相关主题