Share via


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.

Modificateurs de registre source du nuanceur de pixels

ps_1_1__ps_1_2__ps_1_3__ps_1_4 Registres

ps_2_0 Registres

ps_2_x Registres

ps_3_0 Registres