Masquage du registre de destination

Le masquage spécifie les composants du registre de destination qui seront mis à jour avec le résultat d’une instruction. Les registres de texture ont un ensemble de règles et les registres de non-texte ont un autre ensemble de règles.

  • dx9_graphics_reference_asm_vs_registers_modifiers_masking : cette section contient des règles pour appliquer des masques aux registres de destination.
  • Texture_Register_Masks : les registres de textures ont des règles uniques.

Masquage du registre de destination

Comme indiqué dans le tableau suivant, le masquage (où sont l’un des registres de nuanceur de vertex de vertex valides) peut être appliqué aux composants individuels des données vectorielles.

Modificateur de composant Description
r.{x}{y}{z}{w} Masque de destination

 

  • En général, la spécification de masques d’écriture de registre de destination est un bon style de codage. Il facilite la lecture et la maintenance du code.
  • Toute combinaison de composants peut être spécifiée (y compris aucun) tant que x précède y, y précède z et z précède w.
  • Les registres de sortie oPts et oFog doivent utiliser un seul masque.
  • Certaines instructions nécessitent que le registre de destination utilise un seul masque d’écriture : exp, expp, log, logp, pow, rcp et rsq.
  • Dans la version 1.0, l’instruction frc nécessitait l’une des combinaisons de masques suivantes : .x ou .y ou .xy. La version 2.0 n’a aucune restriction de masque.
  • sincos nécessite l’une des combinaisons de masque suivantes : .x, .y ou .xyz.
  • m3x2 nécessite le masque d’écriture .xy.
  • m3x3 et m4x3 nécessitent le masque d’écriture .xyz.
  • m3x4 et m4x4 nécessitent le masque d’écriture .xyz ou le masque d’écriture par défaut (xyzw).

Masques de registre de texture

Les règles de validation pour l’utilisation de modificateurs sur les registres de coordonnées de texture sont plus strictes que les règles de validation pour les autres registres.

  • Si oTn est écrit, tous les registres précédents (oTn-1 ~ oT0) doivent également être écrits.
  • Le masque d’écriture « combiné » pour tout registre oT# doit être exactement l’un des éléments suivants :
    • .x
    • .Xy
    • .Xyz
    • .xyzw (ce qui équivaut à ne pas utiliser de modificateurs de composant)

Par exemple, un nuanceur de vertex peut générer une sortie vers des registres de texture dans des instructions distinctes.

    oT1.y  
    oT0.y  
    oT2  
    oT0.xz  
    oT1.x

Vous pouvez également combiner les instructions.

    oT0.xyz  
    oT1.xy  
    oT2.xyzw    

Ces restrictions s’appliquent uniquement aux registres de coordonnées de texture.

Modificateurs de registre du nuanceur de vertex