Swizzling de registro de origem (referência do PS HLSL)

Swizzling refere-se à capacidade de copiar qualquer componente de registro de origem para qualquer componente de registro temporário. O swizzling não afeta os dados de registro de origem. Antes que uma instrução seja executada, os dados em um registro de origem são copiados para um registro temporário.

Swizzling de origem

O swizzle de origem permite que um componente individual de um registro de origem assuma o valor de qualquer um dos quatro componentes do mesmo registro de origem antes que o registro seja lido para computação.

Por exemplo, o swizzle .zxxy significa:

  • O componente .x assumirá o valor do componente .z
  • O componente .y assumirá o valor do componente .x
  • O componente .z assumirá o valor do componente .x
  • O componente .w assumirá o valor do componente .y

Os componentes podem aparecer em qualquer ordem. Se menos de quatro componentes forem especificados, o último componente será repetido. Por exemplo:

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

Se nenhum componente for especificado, nenhum swizzling será aplicado.

Algumas instruções têm restrições para o swizzle de origem. Eles são listados nas páginas de referência de instrução respeitadas.

Versões do sombreador de pixel 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 (padrão) 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
swizzle arbitrário x x x x

 

* Disponível somente se a máscara de gravação de destino for .w (.a).

Swizzle arbitrário

Os Swizzles podem ser aplicados aos registros de origem em uma ordem arbitrária; ou seja, qualquer registro de origem pode usar qualquer máscara de componente, em qualquer ordem.

Replicar Swizzle

Replicar o swizzle copia um componente para outro. Isto é, exatamente um dos componentes .x, .y, .z, .w swizzle (ou os equivalentes .r, .g, .b, .a) devem ser especificados.

Modificadores de registro de origem do sombreador de pixel

Registros de ps_1_1__ps_1_2__ps_1_3__ps_1_4

Registros de ps_2_0

Registros de ps_2_x

Registros de ps_3_0