vs_3_0
Un nuanceur de vertex programmable est constitué d’un ensemble d’instructions qui fonctionnent sur les données de vertex. Enregistre les données de transfert dans et hors de l’ALU. Un contrôle supplémentaire peut être appliqué pour modifier l’instruction, les résultats ou les données écrites.
La version du nuanceur de vertex vs_3_0 étend l’ensemble de fonctionnalités pris en charge par vs_2_x. Chacune des fonctionnalités de vs_2_X qui nécessite la définition d’une limite, est disponible dans vs_3_0 sans avoir besoin de la limite.
- Instructions : vs_3_0 contient une liste des instructions disponibles.
- Registres : vs_3_0 répertorie les différents types de registres utilisés par le nuanceur de vertex ALU.
- Les modificateurs de registre du nuanceur de vertex sont utilisés pour modifier le fonctionnement d’une instruction.
- Les modificateurs de registre source du nuanceur de vertex modifient les données du registre source avant l’exécution de l’instruction.
- La swizzling du registre source permet de contrôler davantage les composants de registre qui sont lus, copiés ou écrits.
- Le masquage du registre de destination détermine quels composants du registre de destination sont écrits.
Nouvelles fonctionnalités
Les nouvelles fonctionnalités de la version du nuanceur de vertex vs_3_0 sont répertoriées dans les sections suivantes.
Registres d’indexation
Dans les modèles de nuanceur précédents, seule la banque de registre constant pouvait être indexée. Dans ce modèle, les banques de registres suivantes peuvent être indexées à l’aide du registre du compteur de boucles (aL) :
- Registre d’entrée (v#)
- Registre de sortie (o#)
Vertex Textures
Ce modèle de nuanceur prend en charge la recherche de texture dans le nuanceur de vertex à l’aide de texldl. Le moteur de vertex a quatre étapes d’échantillonnage de texture (distinctes de l’échantillonneur de carte de déplacement et des échantillonneurs de texture dans le moteur de pixels) qui peuvent être utilisées pour échantillonner des textures définies à ces étapes. Consultez Textures de vertex dans vs_3_0 (DirectX HLSL).
Fréquence du flux de vertex
Cette fonctionnalité permet d’initialiser un sous-ensemble des registres d’entrée à un rythme différent d’une fois par sommet. Consultez Dessin d’une géométrie non indexée.
Sortie du nuanceur
Comme pour vs_2_0, la sortie du nuanceur peut varier avec le contrôle de flux statique. Soyez prudent avec la branchement dynamique, car cela peut entraîner une variation des sorties du nuanceur par vertex. Cela produira des résultats imprévisibles sur différents matériels.
Contrôle de flux dynamique
Toutes les instructions de contrôle de flux dynamique sont prises en charge. La valeur de profondeur d’imbrication maximale autorisée est 24. (Pour plus d’informations, consultez Limites d’imbrication du contrôle de flux.)
Registres temporaires
Au total, 32 registres temporaires (r#) sont pris en charge.
Contrôle de flux statique
La profondeur d’imbrication maximale pour la boucle - vs/rep - vs est de 4. La profondeur d’imbrication maximale pour l’appel - vs/callnz bool - vs/callnz pred - vs est de 4. Pour si bool - vs, la valeur de profondeur d’imbrication maximale autorisée est 24. (Pour plus d’informations, consultez Limites d’imbrication du contrôle de flux.)
Prédicat
La prédication des instructions est prise en charge. Utilisez setp_comp - vs pour définir le registre de prédicat.
Nombre d’instructions
Chaque nuanceur de vertex est autorisé entre 512 et le nombre d’emplacements dans MaxVertexShader30InstructionSlots dans D3DCAPS9. Le nombre d’instructions exécutées peut être beaucoup plus élevé en raison de la prise en charge des boucles/rep ; toutefois, cela est limité par MaxVShaderInstructionsExecuted dans D3DCAPS9 qui doit être au moins 0xFFFF.
Majuscules d’appareil
Si le nuanceur de vertex 3_0 est pris en charge, les majuscules suivantes sont prises en charge dans le matériel (au minimum) :
Cap | Fonctionnalité |
---|---|
Majuscules du nuanceur |
|
GuardBandLeft, GuardBandTop, GuardBandRight, GuardBandBottom | 8 Ko |
VertexShaderVersion | 3_0 |
MaxVertexShaderConst | 256 |
MaxVertexShader30InstructionSlots | 512 |
Prise en charge du brouillard | D3DPRASTERCAPS_FOGVERTEX |
VertexTextureFilterCaps | |
D3DDEVCAPS2_VERTEXELEMENTSCANSHARESTREAMOFFSET | Les éléments de vertex dans une déclaration de vertex peuvent partager le même décalage de flux. |
Formats de vertex |
|
Rubriques connexes