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é.

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
  • DynamicFlowControlDepth est 24
  • NumTemps est 32
  • StaticFlowControlDepth est 4
  • Le prédicat est pris en charge.
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
  • D3DDECLTYPE_UBYTE4
  • D3DDECLTYPE_UBYTE4N
  • D3DDECLTYPE_SHORT2N
  • D3DDECLTYPE_SHORT4N
  • D3DDECLTYPE_FLOAT16_2
  • D3DDECLTYPE_FLOAT16_4

Nuanceurs vertex