vs _ 3 _ 0
Un nuanceur de sommet programmable est constitué d’un ensemble d’instructions qui fonctionnent sur des données de vertex. Enregistre les données de transfert dans et en dehors de l’ALU. Un contrôle supplémentaire peut être appliqué pour modifier l’instruction, les résultats ou les données qui sont écrites.
La version du nuanceur de sommets et _ 3 _ 0 étend l’ensemble des fonctionnalités prises en charge par vs _ 2 _ x. Chacune des fonctionnalités de vs _ 2 X nécessitant _ une limite définie est disponible dans vs _ 3 _ 0 sans nécessiter d’extrémité.
- 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 sommets alu.
- Les modificateurs de Registre du nuanceur de sommets permettent de modifier la façon dont une instruction fonctionne.
- Les modificateurs de Registre source du nuanceur de sommets modifient les données du Registre source avant l’exécution de l’instruction.
- Le Registre source Swizzling offre un contrôle supplémentaire sur les composants Register qui sont lus, copiés ou écrits.
- Le masquage du registre de destination détermine les composants du registre de destination qui sont écrits.
Nouvelles fonctionnalités
Les nouvelles fonctionnalités de la version de nuanceur de sommets et _ 3 _ 0 sont répertoriées dans les sections suivantes.
Indexation des registres
Dans les modèles de nuanceur précédents, seule la Banque de registres constantes peut être indexée. Dans ce modèle, les banques de registres suivantes peuvent être indexées à l’aide du registre de compteur de boucle (aL) :
- Registre d’entrée (v # )
- Registre de sortie (o # )
Textures de vertex
Ce modèle de nuanceur prend en charge la recherche de texture dans le nuanceur vertex à l’aide de texldl. Le moteur de vertex a quatre étapes d’échantillonnage de texture (distinctes de l’échantillonneur de mappage de déplacement et les échantillonneurs de texture dans le moteur de pixels) qui peuvent être utilisés 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 à un sous-ensemble des registres d’entrée d’être initialisés à un taux différent d’une fois par vertex. Consultez dessin de géométrie non indexée.
Sortie du nuanceur
Comme pour vs _ 2 _ 0, la sortie du nuanceur peut varier en fonction du contrôle de Flow statique. Soyez vigilant avec la branche dynamique, car cela peut entraîner une variation des sorties de nuanceur par vertex. Cela produira des résultats imprévisibles sur un matériel différent.
Contrôle de Flow dynamique
Toutes les instructions de contrôle de Flow dynamique sont prises en charge. La valeur de profondeur d’imbrication maximale autorisée est 24. (pour plus d’informations, consultez Flow les limites d’imbrication .)
Registres temporaires
Un total de 32 registres temporaires (r # ) est pris en charge.
contrôle de Flow statique
La profondeur d’imbrication maximale pour Loop-vs / REP-vs est 4. La profondeur d’imbrication maximale pour Call-vs / callnz bool-vs / callnz prédit-vs est 4. Pour si bool-vs, la valeur de profondeur d’imbrication maximale autorisée est 24. (pour plus d’informations, consultez Flow les limites d’imbrication .)
Prédicat
Le prédicat d’instruction est pris en charge. Utilisez setp _ COMP-vs pour définir le registre de prédicat.
Nombre d’instructions
Chaque nuanceur vertex est autorisé à partir de 512 jusqu’au nombre d’emplacements dans MaxVertexShader30InstructionSlots dans D3DCAPS9. Le nombre d’instructions exécutées peut être bien plus élevé en raison de la prise en charge de la boucle/REP ; Toutefois, cela est limité par MaxVShaderInstructionsExecuted dans D3DCAPS9, qui doit être au moins 0xFFFF.
Cap de l’appareil
Si le nuanceur de sommets 3 _ 0 est pris en charge, les limites suivantes sont prises en charge dans le matériel (au minimum) :
| Encapsul | Fonctionnalité |
|---|---|
| Bouchons de 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 vertex dans une déclaration de vertex peuvent partager le même décalage de flux. |
| Formats de vertex |
|