Share via


Registre de profondeur de sortie

Le registre de profondeur de sortie du nuanceur de pixels (oDepth) est un registre scalaire en écriture seule avec la plage [0.1] qui retourne une nouvelle valeur de profondeur pour un test de profondeur sur la mémoire tampon de gabarit de profondeur.

Syntaxe

oDepth

 

Où :

Nom Description
oDepth Nouvelle valeur de profondeur pour un test de profondeur sur la mémoire tampon de gabarit de profondeur

 

Il est important de savoir que l’écriture dans oDepth entraîne la perte de tous les algorithmes d’optimisation de la mémoire tampon de profondeur spécifiques au matériel (par exemple, Z hiérarchique) qui accélèrent les performances des tests de profondeur.

La réplication swizzle source (.x | .y | .z | .w) est requise lors de l’écriture dans oDepth. Les masques d’écriture explicite ne sont pas autorisés.

L’écriture dans le registre oDepth remplace la valeur de profondeur interpolée (et ignore les renderstates de biais de profondeur/pente). Si aucune mémoire tampon de profondeur n’a été créée ou attachée à l’appareil, l’écriture dans oDepth est ignorée.

Si vous effectuez un multi-échantillonnage et que vous écrivez dans oDepth, étant donné que le nuanceur de pixels ne s’exécute qu’une seule fois par pixel, votre valeur de profondeur est répliquée pour tous les sous-emplacements couverts. Le test de profondeur se produit toujours par échantillon, mais vous n’avez pas de valeur de profondeur par échantillon entrant dans la comparaison à partir du nuanceur de pixels comme vous l’auriez fait si vous n’avez pas écrit oDepth.

Si une application a un jeu w-buffer comme mémoire tampon de profondeur, elle doit en tenir compte lors de l’écriture dans oDepth. Il doit potentiellement envoyer des informations de plage w au nuanceur de pixels et calculer la plage w pour mettre à l’échelle les valeurs w écrites sur oDepth.

restrictions ps_2_0 et ps_2_x

  • oDepth ne peut être écrit qu’avec l’instruction mov - ps et ne peut être effectué qu’une seule fois.
  • Aucun modificateur source n’est autorisé lors de l’écriture dans oDepth.
  • Aucun modificateur d’instruction n’est autorisé lors de l’écriture dans oDepth.
  • Aucune écriture dans oDepth à partir d’une construction de contrôle de flux ou lors de l’utilisation de la prédication.

restrictions ps_3_0

  • Par 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 du contrôle de flux ou si le nuanceur ne l’a tout simplement pas écrit, la cible de rendu correspondante n’est pas non plus mise à 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.
  • Vous pouvez écrire dans oDepth dans le contrôle de flux ou la prédication tant que tous les chemins d’accès possibles finissent par écrire dans le registre.
  • Vous ne pouvez pas effectuer de calculs de gradient (ou d’opérations qui appellent implicitement des calculs de gradient tels que texld - ps_2_0 et jusqu’à, texldb - ps, texldp - ps) à l’intérieur d’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