源寄存器重排(HLSL PS 参考)

重排是指将任何源注册组件复制到任何临时注册组件的功能。 重排不会影响源寄存器数据。 在指令运行之前,源寄存器中的数据将复制到临时寄存器。

源重排

源重排允许源寄存器的各个组件在读取寄存器以供计算之前接受同一源寄存器的四个组件中的任何一个组件的值。

例如,.zxxy 重排表示:

  • .x 组件将接受 .z 组件的值
  • .y 组件将接受 .x 组件的值
  • .z 组件将接受 .x 组件的值
  • .w 组件将接受 .y 组件的值

组件可以按任意顺序显示。 如果指定了少于四个组件,则重复最后一个组件。 例如:

.xy  = .xyyy
.wzx = .wzxx
.z   = .zzzz

如果未指定任何组件,则不会应用重排。

某些说明对源重排有限制。 它们列在已遵循的指令参考页中。

像素着色器版本 1_1 1_2 1_3 1_4 2_0 2_x 2_sw 3_0 3_sw
.x x x x x x x
.y x x x x x x
.z x* x* x* x x x x x x
.w x x x x x x x x x
.xyzw (默认值) x x x x x x x x x
.yzxw x x x x x
.zxyw x x x x x
.wzyx x x x x x
任意重排 x x x x

 

* 仅当目标写入掩码为 .w (.a) 时才可用。

任意重排

可按任意顺序将重排应用于源寄存器;也就是说,任何源寄存器都可以按任意顺序获取任何组件掩码。

复制重排

复制重排会将一个组件复制到另一个组件。 这是必须指定 .x、.y、.z、.w 重排组件(或 .r、.g、.b、.a 等效组件)之一。

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

ps_1_1__ps_1_2__ps_1_3__ps_1_4 注册

ps_2_0 注册

ps_2_x 注册

ps_3_0 注册