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 输出的单深度值将用于每个子像素深度比较测试。

像素着色器说明