像素着色器源寄存器修饰符
在指令运行之前,使用源寄存器修饰符更改从寄存器读取的值。 源寄存器的内容保持不变。 修饰符可用于调整寄存器数据范围,以便为指令做准备。 一组称为选择器的修饰符将数据从单个通道复制或复制到其他通道 (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 |
negate | -注册 | 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,可以对任何纹理地址指令的源参数使用带符号比例。
一些特定于修饰符的限制:
- Negate 可以与偏差、有符号缩放或 scalex2 修饰符结合使用。 组合使用时,negate 是最后一次运行。
- Invert 不能与任何其他修饰符组合使用。
- 反转、否定、偏差、有符号缩放和 scalex2 可与任何选择器结合使用。
- 源寄存器修饰符不应用于常量寄存器,因为它们将导致未定义的结果。 对于版本 1_4,不允许对常量使用修饰符,并且验证失败。
ps_2_0及更高版本
对于版本ps_2_0及更新版本,修饰符的数量已简化。
Negate
否定源寄存器的内容。
组件修饰符 | 说明 |
---|---|
-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 |
如果任何版本 3 着色器从一个或多个常量浮点寄存器读取 (c#) ,则必须满足以下条件之一。
- 所有常量浮点寄存器都必须使用 abs 修饰符。
- 任何常量浮点寄存器都不能使用 abs 修饰符。
相关主题