ps_1_X的修饰符
指令修饰符在写入目标寄存器之前影响指令的结果。 例如,使用它们将结果乘以或除以两个因子,或将结果固定在零和 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。
指令修饰符可用于算术指令。 它们可能不会用于纹理地址指令。
乘法修饰符
此示例使用源作数(src0 和 src1)中的两种颜色的总和加载目标寄存器(dest),并将结果乘以两种。
add_x2 dest, src0, src1
此示例合并了两个指令修饰符。 首先,将添加源作数(src0 和 src1)中的两种颜色。 然后,结果乘以 2,并为每个组件固定在 0.0 到 1.0 之间。 结果保存在目标寄存器中。
add_x2_sat dest, src0, src1
除法修饰符
此示例使用源作数(src0 和 src1)中的两种颜色的总和加载目标寄存器(dest),并将结果除以两种。
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 多文本语法的一致仿真,其中定义饱和度在每个阶段发生。
此示例使用源作数(src0 和 src1)中的两种颜色的总和加载目标寄存器(dest),并将结果固定到每个组件的 0.0 到 1.0 范围内。
add_sat dest, src0, src1
此示例合并了两个指令修饰符。 首先,将添加源作数(src0 和 src1)中的两种颜色。 结果乘以 2,每个组件的 0.0 到 1.0 之间固定。 结果保存在目标寄存器中。
add_x2_sat dest, src0, src1
相关主题