源寄存器重排 (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寄存器