registres ps_3_0
Les nuanceurs de pixels dépendent des registres pour obtenir des données de vertex, de générer des données de pixels, de conserver des résultats temporaires pendant les calculs et d’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 flottants et les registre de coordonnées de textures (t#) ont été consolidés dans celui-ci. 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 vertex) pour ce modèle. Aucune pince n’est effectuée 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 contiendra finalement 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 inverse). 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 prendre une décision quant à la technique d’éclairage à utiliser. L’éclairage à deux côtés peut être réalisé de cette façon. Ce registre nécessite une déclaration. Par conséquent, l’utilisation non déclarée est marquée comme une erreur. Pour les primitives de lignes et de points, ce registre n’est pas défini. Le registre des visages ne peut être utilisé qu’en tant que condition avec les instructions suivantes : setp_comp - ps, if_comp - psou break_comp - ps.
Registre du compteur de boucles
Le registre de compteurs de boucles (aL) est nouveau pour ce modèle. Il est incrémenté automatiquement dans chaque exécution de la boucle - ps/endloop - ps bloc. Il peut être utilisé dans le bloc pour l’adressage relatif si nécessaire. Il n’est pas valide d’utiliser le registre de compteurs de boucles en dehors de la boucle.
Registre de position
Le registre de positions (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. Par conséquent, 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 d’inscription d’entrée
Registre | Nom | Compter | R/W | Ports de lecture # | Nombre de lectures/inst | Dimension | RelAddr | Par défaut | Nécessite la liste de contrôle de contrôle d’accès |
---|---|---|---|---|---|---|---|---|---|
v# | registre d’entrée | 10 | R | 1 | Illimité | 4 | Al | Aucun | Oui |
r# | registre temporaire | 32 | R/W | 3 | Illimité | 4 | Non | Aucun | Non |
c# | de registre float constant | 224 | R | 1 | Illimité | 4 | Non | 0000 | Non |
Je# | entier entier | 16 | R | 1 | 1 | 4 | Non | 0000 | Non |
b# | registre booléen constant | 16 | R | 1 | 1 | 1 | Non | FAUX | Non |
p0 | Registre de prédicats | 1 | R | 1 | 1 | 1 | Non | Aucun | Non |
s# | Sampler (Direct3D 9 asm-ps) | 16 | R | 1 | 1 | 4 | Non | Voir la note 1 | Oui |
vFace | Face_Register | 1 | R | 1 | Illimité | 1 | Non | Aucun | Oui |
vPos | Position_Register | 1 | R | 1 | Illimité | 4 | Non | Aucun | Oui |
Al | Loop_Counter_Register | 1 | R | 1 | Illimité | 1 | n/a | Aucun | Non |
Notes:
- Les valeurs par défaut pour les recherches d’échantillonneur existent, mais les valeurs dépendent du format de texture.
Le nombre de lectures est le nombre de registres différents (pour chaque type de registre) qui peuvent être lus dans une seule instruction.
Types de registre de sortie
Registre | Nom | Compter | R/W | Dimension | RelAddr | Par défaut | Nécessite la liste de contrôle de contrôle d’accès |
---|---|---|---|---|---|---|---|
Oc# | registre de couleurs de sortie | Consultez textures à plusieurs éléments (Direct3D 9) | W | 4 | Non | Aucun | Non |
oDepth | registre de profondeur de sortie | 1 | W | 1 | Non | Aucun | Non |
Rubriques connexes