Partager via


Masque d’écriture du registre de destination

Un masque d’écriture contrôle les composants d’un registre de destination qui sont écrits une fois qu’une instruction est terminée. Un masque d’écriture de sortie est autorisé tant que les composants sont dans l’ordre de .rgba ou .xyzw. Autrement dit, .rba et .xw sont des masques valides. Les registres de texture ont un ensemble de règles et les registres non texturés ont un autre ensemble de règles.

Syntaxe

dst.writemask

 

where

  • dst est un registre de destination.
  • writemask est une séquence de masques d’un ensemble : (x,y,z,w) ou (rouge, vert, bleu, alpha).

Notes

Les masques d’écriture de destination suivants sont disponibles.

Versions du nuanceur de pixels 1_1 1_2 1_3 1_4 2_0 2_x 2_sw 3_0 3_sw
.xyzw (par défaut) x x x x x x x x x
.Xyz x x x x x x x x x
.W x x x x x x x x x
masque arbitraire x x x x x x

 

Le masque arbitraire permet de combiner n’importe quel ensemble de canaux pour produire un masque. Les canaux doivent être répertoriés dans l’ordre r, g, b, a , par exemple register.rba, qui met à jour les canaux rouge, bleu et alpha de la destination. Le masque arbitraire est disponible dans la version 1_4 ou ultérieure.

Si aucun masque d’écriture de destination n’est spécifié, le masque d’écriture de destination est défini par défaut sur le cas rgba. En d’autres termes, tous les canaux du registre de destination sont mis à jour.

Pour les versions 1_0 à 1_3, l’instruction arithmétique dp3 - ps dp3 peut utiliser uniquement les masques d’écriture de sortie .rgb ou .rgba.

Les masques d’écriture de registre de destination sont pris en charge uniquement pour les opérations arithmétiques. Ils ne peuvent pas être utilisés sur les instructions d’adressage de texture, à l’exception des instructions de la version 1_4, texcrd - ps et texld - ps_2_0 et jusqu’à.

La valeur par défaut consiste à écrire les quatre canaux de couleur.

// All four color channels can be written by explicitly listing them.
mul r0.rgba, t0, v0

// Or, the default mask can be used to write all four channels.
mul r0, t0, v0

Le masque d’écriture alpha est également appelé masque d’écriture scalaire, car il utilise le pipeline scalaire.

add r0.a, t1, v1

Par conséquent, cette instruction place efficacement la somme du composant alpha de t1 et du composant alpha de v1 dans r0.a.

Le masque d’écriture de couleur est utilisé pour contrôler l’écriture dans les canaux de couleurs.

// The color write mask is also referred to as the vector write mask, 
//   because it uses the vector pipeline.
mul r0.rgb, t0, v0

Pour la version 1_4, les masques d’écriture de destination peuvent être utilisés dans n’importe quelle combinaison tant que les masques sont commandés r,g,b,a.

// This example updates the red, blue, and alpha channels.
mov r0.rba, r1

Une instruction co-émise permet d’émettre simultanément deux instructions potentiellement différentes. Pour ce faire, exécutez les instructions dans le pipeline alpha et le pipeline RVB.

  mul r0.rgb, t0, v0
+ add r1.a,   t1, c1

L’avantage de jumeler les instructions de cette façon est qu’elle permet d’effectuer différentes opérations dans le pipeline vectoriel et scalaire en parallèle.

Ces registres de sortie du nuanceur de vertex sont limités aux masques d’écriture suivants :

Type d’inscription Masque d’écriture obligatoire
oFog aucun masque d’écriture explicite n’est autorisé sur ce registre scalaire
Opte aucun masque d’écriture explicite n’est autorisé sur ce registre scalaire
Opos .xyzw(qui est la valeur par défaut)
Ot # masque combiné : .x | .xy | .xyz | .xyzw (qui est la valeur par défaut)

 

Modificateurs de registre du nuanceur de pixels