像素着色器源寄存器修饰符
在指令运行之前,使用源寄存器修饰符更改从寄存器读取的值。 源寄存器的内容保持不变。 修饰符可用于调整寄存器数据范围,以便为指令做准备。 一组称为选择器的修饰符将数据从单个通道(r,g,b,a)复制到其他通道。
ps_1_1 - ps_1_4
此表标识支持每个修饰符的版本:
源寄存器修饰符 | 语法 | 版本 1_1 | 版本 1_2 | 版本 1_3 | 版本 1_4 |
---|---|---|---|---|---|
偏差 | register_bias | X | X | X | X |
反转 | 1 - 注册 | X | X | X | X |
否定 | -注册 | X | X | X | X |
缩放 2 | register_x2 | X | |||
签名缩放 | register_bx2 | X | X | X | X |
texld 和 texcrd 修饰符 | register_d* | X | X | X | X |
源寄存器重排 | register.xyzw | X | X | X | X |
源寄存器修饰符只能用于算术指令。 它们不能用于纹理地址指令。 例外情况是 缩放为 2 修饰符。 对于版本 1_1,签名缩放可用于任何 texm* 指令的源参数。 对于版本 1_2 或 1_3,签名缩放可用于任何纹理地址指令的源参数。
某些修饰符特定的限制:
- 反门可以与偏差、有符号缩放或 scalex2 修饰符结合使用。 组合后,求反是最后一次运行。
- 反转不能与任何其他修饰符组合。
- 反转、否定、偏差、有符号缩放和 scalex2 可以与任何选择器结合使用。
- 源寄存器修饰符不应在常量寄存器上使用,因为它们将导致未定义的结果。 对于版本 1_4,不允许对常量使用修饰符,并且验证失败。
ps_2_0及更高版本
对于版本ps_2_0及更新,修饰符的数量已简化。
否定
否定源寄存器的内容。
组件修饰符 | 描述 |
---|---|
- r | 源求反 |
这些指令的第二个源寄存器无法使用否定修饰符:m3x2 - ps、m3x3 - ps、m3x4 - ps、m4x3 - ps和 m4x4 - ps。
像素着色器版本 | 2_0 | 2_x | 2_sw | 3_0 | 3_sw |
---|---|---|---|---|---|
- | x | x | x | x | x |
绝对值
获取寄存器的绝对值。
像素着色器版本 | 2_0 | 2_x | 2_sw | 3_0 | 3_sw |
---|---|---|---|---|---|
abs | x | x |
如果从一个或多个常量浮点寄存器(c#)读取任何版本 3 着色器,则以下任一类型必须为 true。
- 所有常量浮点寄存器都必须使用 abs 修饰符。
- 没有一个常量浮点寄存器可以使用 abs 修饰符。
相关主题