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

在指令运行之前,使用源寄存器修饰符更改从寄存器读取的值。 源寄存器的内容保持不变。 修饰符可用于调整寄存器数据范围,以便为指令做准备。 一组称为选择器的修饰符将数据从单个通道(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 - 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

 

如果从一个或多个常量浮点寄存器(c#)读取任何版本 3 着色器,则以下任一类型必须为 true。

  • 所有常量浮点寄存器都必须使用 abs 修饰符。
  • 没有一个常量浮点寄存器可以使用 abs 修饰符。

像素着色器寄存器修饰符