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.

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
  • DynamicFlowControlDepth est 24
  • NumTemps est 32
  • StaticFlowControlDepth est 4
  • La prédication est prise 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 de 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 de vertex