Поделиться через


Вибрирование регистра источника (справочник по HLSL PS)

Swizzling — это возможность копирования любого компонента исходного регистра в любой компонент временного регистра. Перевораживание не влияет на данные регистра источника. Перед выполнением инструкции данные в исходном регистре копируются во временный регистр.

Source Swizzling

Source swizzle позволяет отдельному компоненту исходного регистра принимать на себя значение любого из четырех компонентов одного и того же регистра источника перед считывания регистра для вычисления.

Например, zxxy swizzle означает:

  • Компонент .x принимает значение компонента .z
  • Компонент .y принимает значение компонента .x
  • Компонент .z принимает значение компонента .x
  • Компонент .w принимает значение компонента .y

Компоненты могут отображаться в любом порядке. Если указано менее четырех компонентов, последний компонент повторяется. Пример:

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

Если компонент не указан, вращение не применяется.

Некоторые инструкции имеют ограничения для исходного swizzle. Они перечислены на эталонных страницах инструкций.

Версии шейдера пикселей 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
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).

Произвольный swizzle

Swizzles можно применять к регистрам источника в произвольном порядке; то есть любой регистр источника может принимать любую маску компонента в любом порядке.

Репликация Swizzle

Репликация swizzle копирует один компонент в другой. Это именно один из компонентов Swizzle .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