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 par rapport à la mémoire tampon de profondeur du gabarit.
Syntaxe
oDepth |
---|
Où:
Nom | Description |
---|---|
oDepth | Nouvelle valeur de profondeur pour un test de profondeur par rapport à la mémoire tampon de profondeur du gabarit |
Il est important de savoir que l’écriture dans oDepth entraîne la perte d’algorithmes d’optimisation de mémoire tampon de profondeur spécifiques au matériel (c’est-à-dire hiérarchique Z) qui accélèrent les performances des tests de profondeur.
La réplication de la source swizzle (.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/pentescale). 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 plusieurs échantillonnages et que vous écrivez dans oDepth, étant donné que le nuanceur de pixels s’exécute une seule fois par pixel, votre valeur de profondeur est répliquée pour tous les emplacements de sous-échantillon 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 le feriez si vous n’avez pas écrit oDepth.
Si une application a un jeu w-buffer comme mémoire tampon de profondeur, elle doit tenir compte de cela lors de l’écriture dans oDepth. Il doit potentiellement envoyer des informations w-range au nuanceur de pixels et calculer la plage w pour mettre à l’échelle les valeurs w écrites en oDepth.
restrictions de ps_2_0 et de ps_2_x
- oDepth ne peut être écrit qu’avec le mov - ps instruction 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 de ps_3_0
- 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, la cible de rendu correspondante n’est pas également 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 possibles peuvent éventuellement écrire dans le registre.
- 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.
Rubriques connexes