texm3x2tex - ps

执行 3x2 矩阵乘法的最后一行,并使用结果进行纹理查找。 texm3x2tex 必须与 texm3x2pad - ps 指令结合使用。

语法

texm3x2tex dst, src

 

其中

  • dst 是目标寄存器。
  • src 是源寄存器。

备注

像素着色器版本 1_1 1_2 1_3 1_4 2_0 2_x 2_sw 3_0 3_sw
texm3x2tex x x x

 

指令用作表示 3x2 矩阵乘法运算的两个指令之一。 此指令必须与 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
                              // Perform first row of matrix multiply
texm3x2tex  t(m+1), t(n)      // Perform second row of matrix multiply 
                              // to get (u,v) to sample texture 
                              // associated with stage m+1

下面是有关如何实现 3x2 乘法的更多详细信息。

texm3x2pad 指令执行乘法的第一行以查找 u'

u' = t (n) RGB * TextureCoordinates (阶段 m) UVW

texm3x2tex 指令执行乘法的第二行以查找 v'

v' = t (n) RGB * TextureCoordinates (阶段 m+1) UVW

texm3x2tex 指令使用 (u', v') 对舞台上 (m+1) 的纹理进行采样,并将结果存储在 t (m+1) 中。

t (m+1) RGB = TextureSample (阶段 m+1) RGB ,使用 (u', v' ) 作为坐标

示例

下面是一个示例着色器,其中标识了纹理贴图和纹理阶段。

ps_1_1
tex t0                // Bind texture in stage 0 to register t0
texm3x2pad  t1,  t0   // First row of matrix multiply
texm3x2tex  t2,  t0   // Second row of matrix multiply to get (u,v)
                      // with which to sample texture in stage 2
mov r0, t2            // Output result

此示例在以下纹理阶段中需要以下纹理。

  • 阶段 0 采用包含 (x,y,z) 扰动数据的地图。
  • 阶段 1 保存纹理坐标。 纹理阶段中不需要纹理。
  • 阶段 2 同时保留纹理坐标以及在该纹理阶段设置的 2D 纹理。

像素着色器说明