Registro de origen swizzling (referencia de PS de HLSL)
Swizzling hace referencia a la capacidad de copiar cualquier componente de registro de origen en cualquier componente de registro temporal. Swizzling no afecta a los datos de registro de origen. Antes de que se ejecute una instrucción, los datos de un registro de origen se copian en un registro temporal.
Swizzling de origen
Source swizzle permite que un componente individual de un registro de origen tome el valor de cualquiera de los cuatro componentes del mismo registro de origen antes de que se lea el registro para el cálculo.
Por ejemplo, el .zxxy swizzle significa:
- El componente .x tomará el valor del componente .z.
- El componente .y tomará el valor del componente .x
- El componente .z tomará el valor del componente .x.
- El componente .w tomará el valor de .y component
Los componentes pueden aparecer en cualquier orden. Si se especifican menos de cuatro componentes, se repite el último componente. Por ejemplo:
.xy = .xyyy
.wzx = .wzxx
.z = .zzzz
Si no se especifica ningún componente, no se aplica ningún swizzling.
Algunas instrucciones tienen restricciones para el swizzle de origen. Se enumeran en las páginas de referencia de instrucciones respetadas.
Versiones del sombreador de píxeles | 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 (valor predeterminado) | 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 | ||||
arbitrario swizzle | x | x | x | x |
* Solo está disponible si la máscara de escritura de destino es .w (.a).
Swizzle arbitrario
Los Swizzles se pueden aplicar a los registros de origen en un orden arbitrario; es decir, cualquier registro de origen puede tomar cualquier máscara de componente, en cualquier orden.
Replicación de Swizzle
La replicación de swizzle copia un componente en otro. Es decir, exactamente uno de los componentes .x, .y, .z, .w swizzle (o .r, .g, .b, .a equivalentes) debe especificarse.
Temas relacionados