dp3 - ps
计算源寄存器的三分量点乘积。
语法
dp3 dst、src0、src1 |
---|
其中
- dst 是目标寄存器。
- src0 是源寄存器。
- src1 是源寄存器。
备注
像素着色器版本 | 1_1 | 1_2 | 1_3 | 1_4 | 2_0 | 2_x | 2_sw | 3_0 | 3_sw |
---|---|---|---|---|---|---|---|---|---|
dp3 | x | x | x | x | x | x | x | x | x |
以下代码片段显示了执行的操作:
dest.x = dest.y = dest.z = dest.w =
(src0.x * src1.x) + (src0.y * src1.y) + (src0.z * src1.z);
此指令在矢量管道中运行,始终写出到颜色通道。 对于版本 1_4,此指令仍使用矢量管道,但可能会写入任何通道。
目标寄存器 .rgb (.xyz) 写入掩码的指令可能与 dp3 共同发出,如下所示。
dp3 r0.rgb, t0, v0 // Copy scalar result to color components
+mov r2.a, t0 // Copy alpha component from t0 in parallel
如果 dp3 指令尚未扩展到带符号的动态范围,则可以使用 源寄存器签名缩放 输入参数修饰符 (_bx2) 应用于其输入参数。 对于照明着色器,饱和指令修饰符 (_sat) 通常用于将负值固定为黑色,如以下示例所示。
dp3_sat r0, t0_bx2, v0_bx2 // t0 is a bump map, v0 contains the light direction
相关主题