像素着色器源寄存器修饰符

在指令运行之前,使用源寄存器修饰符更改从寄存器读取的值。 源寄存器的内容保持不变。 修饰符可用于调整注册数据范围,以便为指令做准备。 一组称为选择器的修饰符将复制或复制单个通道中的数据, (r,g,b,) 复制到其他通道。

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,签名缩放可用于任何纹理地址指令的源参数。

某些修饰符特定的限制:

  • 反门可以与偏差、有符号缩放或 scalex2 修饰符结合使用。 合并后,将最后运行反门。
  • 反转不能与任何其他修饰符组合。
  • 反转、否定、偏差、有符号缩放和 scalex2 可与任何选择器结合使用。
  • 源寄存器修饰符不应用于常量寄存器,因为它们将导致未定义的结果。 对于版本 1_4,不允许常量上的修饰符,并且验证失败。

ps_2_0及更高版本

对于版本ps_2_0及上一版本,修饰符的数量已简化。

Negate

否定源寄存器的内容。

组件修饰符 说明
- r 源否定

 

不能在以下指令的第二个源寄存器上使用反门修饰符: m3x2 - psm3x3 - psm3x4 - psm4x3 - psm4x4 - 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#) ,则以下任一版本必须为 true。

  • 所有常量浮点寄存器都必须使用 abs 修饰符。
  • 常量浮点寄存器都不能使用 abs 修饰符。

像素着色器寄存器修饰符