registres ps_3_0
Les nuanceurs de pixels dépendent des registres pour obtenir des données de vertex, pour générer des données de pixels, pour conserver des résultats temporaires pendant les calculs et pour identifier les étapes d’échantillonnage de texture. Il existe plusieurs types de registres, chacun avec une fonctionnalité unique. Cette section contient des informations de référence pour les registres d’entrée et de sortie implémentés par le nuanceur de pixels version 3_0.
Nouveaux registres
Registre d’entrée
Les registres d’entrée (v#) sont désormais entièrement à virgule flottante et les registres de coordonnéesde texture (t#) y ont été consolidés. Le dcl_semantics (sm3 - ps asm) en haut du nuanceur est utilisé pour décrire ce qui est contenu dans un Input_Register particulier. Une sémantique pour les types de pixels est introduite (analogue au côté du sommet) pour ce modèle. Aucun serrage n’est effectué lorsque les registres d’entrée sont définis en tant que couleurs (comme les coordonnées de texture). L’évaluation des registres définis en tant que couleur diffère des coordonnées de texture lors de l’échantillonnage multiple.
Registre des visages
Le registre de visages (vFace) est nouveau pour ce modèle. Il s’agit d’un registre scalaire à virgule flottante qui finira par contenir la zone primitive. Toutefois, dans ps_3_0, seul le signe de ce registre est valide. Par conséquent, si la valeur est inférieure à zéro (le bit de signe est défini négatif), la primitive est la face arrière (la zone est négative, dans le sens contraire des aiguilles d’une montre). Par conséquent, dans ps_3_0 il est logique de comparer ce registre à 0 (> 0 ou < 0). À l’intérieur du nuanceur de pixels, l’application peut décider de la technique d’éclairage à utiliser. L’éclairage bidirectionnel peut être obtenu de cette façon. Ce registre nécessite une déclaration, de sorte que l’utilisation non déclarée est marquée comme une erreur. Pour les lignes et les primitives de points, ce registre n’est pas défini. Le registre de visages ne peut être utilisé qu’en tant que condition avec les instructions suivantes : setp_comp - ps, if_comp - ps ou break_comp - ps.
Registre du compteur de boucles
Le registre du compteur de boucles (aL) est nouveau pour ce modèle. Il est incrémenté automatiquement à chaque exécution de la boucle - ps/endloop - bloc ps . Il peut être utilisé dans le bloc pour l’adressage relatif si nécessaire. L’utilisation du registre du compteur de boucles en dehors de la boucle n’est pas valide.
Registre de position
Le registre de position (vPos) est nouveau pour ce modèle. Il contient les pixels actuels (x, y) dans les canaux correspondants. Les canaux (z, w) ne sont pas définis. Ce registre nécessite une déclaration, de sorte que l’utilisation non déclarée est marquée comme une erreur. Lorsqu’il est déclaré, ce registre doit avoir exactement l’un des masques suivants : .x, .y, .xy.
Types de registre d’entrée
S’inscrire | Nom | Count | R/W (Lecture/écriture) | Nombre de ports de lecture | Nombre de lectures/inst | Dimension | RelAddr | Valeurs par défaut | Nécessite la liste de contrôle de contrôle d’accès |
---|---|---|---|---|---|---|---|---|---|
C # | Registre d’entrée | 10 | R | 1 | Illimité | 4 | Al | Aucune | Oui |
R # | Registre temporaire | 32 | R/W (Lecture/écriture) | 3 | Illimité | 4 | Non | None | Non |
c# | Registre float constant | 224 | R | 1 | Illimité | 4 | Non | 0000 | Non |
Je # | Registre d’entiers constants | 16 | R | 1 | 1 | 4 | Non | 0000 | Non |
B # | Registre booléen constant | 16 | R | 1 | 1 | 1 | Non | FALSE | Non |
p0 | Registre du prédicat | 1 | R | 1 | 1 | 1 | Non | None | Non |
s # | Sampler (Direct3D 9 asm-ps) | 16 | R | 1 | 1 | 4 | Non | Voir la remarque 1 | Oui |
vFace | Face_Register | 1 | R | 1 | Illimité | 1 | Non | None | Oui |
vPos | Position_Register | 1 | R | 1 | Illimité | 4 | Non | None | Oui |
Al | Loop_Counter_Register | 1 | R | 1 | Illimité | 1 | n/a | Aucun | Non |
Remarques :
- Les valeurs par défaut pour les recherches d’échantillonneur existent, mais les valeurs dépendent du format de texture.
Le nombre de readports correspond au nombre de registres différents (pour chaque type de registre) qui peuvent être lus dans une seule instruction.
Types de registre de sortie
S’inscrire | Nom | Count | R/W (Lecture/écriture) | Dimension | RelAddr | Valeurs par défaut | Nécessite la liste de contrôle |
---|---|---|---|---|---|---|---|
Oc # | Registre des couleurs de sortie | Consultez Textures à éléments multiples (Direct3D 9) | W | 4 | Non | None | Non |
oDepth | Registre de profondeur de sortie | 1 | W | 1 | Non | None | Non |
Rubriques connexes