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.
Tópicos relacionados