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

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

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

像素着色器寄存器修饰符