Swizzling du registre source (référence PS HLSL)
Swizzling fait référence à la possibilité de copier n’importe quel composant de registre source vers n’importe quel composant de registre temporaire. Swizzling n’affecte pas les données du registre source. Avant l’exécution d’une instruction, les données d’un registre source sont copiées dans un registre temporaire.
Source Swizzling
Source swizzle permet à un composant individuel d’un registre source d’accepter la valeur de l’un des quatre composants du même registre source avant que le registre ne soit lu à des fins de calcul.
Par exemple, .zxxy swizzle signifie :
- Le composant .x prend la valeur du composant .z
- Le composant .y prend la valeur du composant .x
- Le composant .z prend la valeur du composant .x
- Le composant .w prend la valeur du composant .y
Les composants peuvent apparaître dans n’importe quel ordre. Si moins de quatre composants sont spécifiés, le dernier composant est répété. Par exemple :
.xy = .xyyy
.wzx = .wzxx
.z = .zzzz
Si aucun composant n’est spécifié, aucun swizzling n’est appliqué.
Certaines instructions comportent des restrictions pour la source swizzle. Ils sont répertoriés dans les pages de référence d’instructions respectées.
Versions du nuanceur de pixels | 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 (par défaut) | 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 arbitraire | x | x | x | x |
* Disponible uniquement si le masque d’écriture de destination est .w (.a).
Swizzle arbitraire
Swizzles peut être appliqué aux registres sources dans un ordre arbitraire ; autrement dit, n’importe quel registre source peut prendre n’importe quel masque de composant, dans n’importe quel ordre.
Répliquer Swizzle
Répliquer swizzle copie un composant vers un autre. Il s’agit exactement de l’un des composants .x, .y, .z, .w swizzle (ou les équivalents .r, .g, .b, .a) qui doivent être spécifiés.
Rubriques connexes