Partager via


Registre des couleurs de sortie

Les registres de sortie de couleur du nuanceur de pixels (oC#) sont des registres en écriture seule qui génèrent des résultats dans plusieurs cibles de rendu.

Syntaxe

Oc#

 

Où:

Nom Description
oC0 render target #0
oC1 render target #1
oC2 render target #2
oC3 render target #3

 

Remarques

  • Si oCn est écrit mais qu’il n’existe aucune cible de rendu correspondante, cette écriture dans oCn est ignorée.
  • Les états de rendu D3DRS_COLORWRITEENABLE, D3DRS_COLORWRITEENABLE1, D3DRS_COLORWRITEENABLE2 et D3DRS_COLORWRITEENABLE3 déterminer quels composants d’oCn sont finalement écrits dans la cible de rendu (après fusion, le cas échéant). Si le nuanceur écrit certains composants, mais pas tous les composants définis par les états de rendu D3DRS_COLORWRITEENABLE* pour un registre oCn donné, les canaux non écrits produisent des valeurs non définies dans la cible de rendu correspondante. Si aucun des composants d’un oCn n’est écrit, la cible de rendu correspondante ne doit pas être mise à jour du tout (comme indiqué ci-dessus), de sorte que les états de rendu D3DRS_COLORWRITEENABLE* ne s’appliquent pas.

Restrictions du modèle de nuanceur 2

  • oCn ne peut être écrit qu’avec la mov - ps instruction.
  • oC0 doit toujours être écrit dans le nuanceur.
  • Aucune source swizzle (sauf .xyzw = default swizzle) ou modificateur source n’est autorisé lors de l’écriture dans n’importe quel oCn.
  • Aucun masque d’écriture de destination (sauf .xyzw = masque par défaut) ou modificateur d’instruction n’est autorisé lors de l’écriture dans n’importe quel oCn.
  • Si oCn est écrit, oC0 - oCn-1 doit également être écrit. Par exemple, pour écrire dans oC2, vous devez également écrire dans oC0 et oC1.
  • Au plus un écriture dans n’importe quel oC# par nuanceur est autorisé.
  • Pour ps_2_x et ps_3_0, vous ne pouvez pas écrire dans des registres oC# et oD# dans le contrôle de flux dynamique ou la prédication (les écritures dans oC# à l’intérieur du contrôle de flux statique sont correctes).

Restrictions du modèle de nuanceur 3

  • Pour ps_3_0, les registres de sortie oC# et oD# peuvent être écrits n’importe quel nombre de fois. La sortie du nuanceur de pixels provient du contenu des registres de sortie à la fin de l’exécution du nuanceur. Si une écriture dans un registre de sortie ne se produit pas, peut-être en raison d’un contrôle de flux ou si le nuanceur vient de ne pas l’écrire, le rendertarget correspondant n’est pas également mis à jour. Si un sous-ensemble des canaux d’un registre de sortie est écrit, les valeurs non définies sont écrites dans les canaux restants.
  • Pour ps_3_0, les registres oC# peuvent être écrits avec n’importe quel masque d’écriture.
  • Pour ps_2_x et ps_3_0, vous ne pouvez pas écrire dans des registres oC# et oD# dans le contrôle de flux dynamique ou la prédication (les écritures dans oC# à l’intérieur du contrôle de flux statique sont correctes).
  • Vous ne pouvez pas effectuer de calculs de dégradé (ou des opérations qui appellent implicitement des calculs de dégradé tels que texld - ps_2_0 et jusqu’à, texldb - ps, texldp - ps) à l’intérieur des instructions de contrôle de flux dont les conditions de branchement varient selon la primitive (c’est-à-dire : instructions de contrôle de flux dynamique). La prédication des instructions n’est pas considérée comme un contrôle de flux dynamique.

Registres

plusieurs cibles de rendu (Direct3D 9)