ps_1_X的修饰符
指令修饰符在将指令写入目标寄存器之前影响该指令的结果。 例如,使用它们将结果乘以或除以 2,或将结果固定在 0 和 1 之间。 指令修饰符在指令运行之后、将结果写入目标寄存器之前应用。
修饰符的列表如下所示。
修饰符 | 说明 | 语法 | 版本 1_1 | 版本 1_2 | 版本 1_3 | 版本 1_4 |
---|---|---|---|---|---|---|
_x2 | 乘以 2 | instruction_x2 | X | x | X | x |
_x4 | 乘以 4 | instruction_x4 | x | X | x | x |
_x8 | 乘以 8 | instruction_x8 | x | |||
_d2 | 除以 2 | instruction_d2 | x | x | x | x |
_d4 | 除以 4 | instruction_d4 | X | |||
_d8 | 除以 8 | instruction_d8 | x | |||
_坐 | 饱和 (夹从 0 到 1) | instruction_sat | x | x | x | x |
- 乘法修饰符在读取寄存器数据后乘以 2 的幂。 这与左移相同。
- 除法修饰符在读取寄存器数据后将寄存器数据除以 2 的幂。 这与右移相同。
- 饱和修饰符将寄存器值的范围从零固定到 1。
指令修饰符可用于算术指令。 它们不能用于纹理地址指令。
乘法修饰符
此示例将目标寄存器 (dest) 与源操作数中的两种颜色之和 (src0 和 src1) ,并将结果乘以 2。
add_x2 dest, src0, src1
此示例合并了两个指令修饰符。 首先,在源操作数中添加两种颜色, (src0 和 src1) 。 然后,结果乘以 2,并针对每个分量限制在 0.0 到 1.0 之间。 结果保存在目标寄存器中。
add_x2_sat dest, src0, src1
除号修饰符
此示例使用源操作数 (src0 和 src1) 中两种颜色之和加载目标寄存器 (dest) ,并将结果除以 2。
add_d2 dest, src0, src1
饱和修饰符
对于算术指令,饱和度修饰符将每个分量将此指令的结果固定到 0.0 到 1.0 的范围内。 以下示例演示如何使用此指令修饰符。
dp3_sat r0, t0_bx2, v0_bx2 ; t0 is bump, v0 is light direction
此操作在任何乘法或除指令修饰符之后发生。 _sat最常用于固定点积结果。 但是,它还支持多通道方法的一致仿真,其中帧缓冲区始终在 0 到 1 范围内,以及 DirectX 6 和 7.0 多文本语法,其中饱和定义为在每个阶段发生。
此示例将目标寄存器 (dest) 与源操作数 (src0 和 src1) 中的两种颜色之和加载,并将每个分量的结果限制在 0.0 到 1.0 的范围内。
add_sat dest, src0, src1
此示例合并了两个指令修饰符。 首先,在源操作数中添加两种颜色, (src0 和 src1) 。 结果乘以 2,并针对每个分量限制在 0.0 到 1.0 之间。 结果保存在目标寄存器中。
add_x2_sat dest, src0, src1
相关主题