Partager via


vs_3_0

Un nuanceur de vertex programmable est constitué d’un ensemble d’instructions qui fonctionnent sur les données de vertex. Inscrit les données de transfert dans et hors de l’ALU. Vous pouvez appliquer un contrôle supplémentaire 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 nécessiter 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.

Indexation des registres

Dans les modèles de nuanceur précédents, seule la banque d’inscriptions constantes peut être indexée. Dans ce modèle, les banques d’inscription suivantes peuvent être indexées à l’aide du registre de compteurs 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 comporte 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 à un sous-ensemble des registres d’entrée d’être initialisés à un taux différent d’une fois par vertex. Consultez de dessin de 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 le branchement dynamique, car cela peut entraîner la variation des sorties du nuanceur par vertex. Cela produit 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 maximale d’imbrication autorisée est 24. (Consultez limites d’imbrication du contrôle de flux pour plus d’informations.)

Registres temporaires

Un total de 32 registres temporaires (r#) est pris en charge.

Contrôle de flux statique

La profondeur maximale d’imbrication pour boucle - vs/rep - vs est de 4. Profondeur maximale d’imbrication pour appel - vs/callnz bool - vs/callnz pred - vs est 4. Pour si bool - vs, la valeur maximale de profondeur d’imbrication autorisée est 24. (Consultez limites d’imbrication du contrôle de flux pour plus d’informations.)

Prédication

La prédication des instructions est prise en charge. Utilisez setp_comp - vs pour définir le registre de prédicats.

Nombre d’instructions

Chaque nuanceur de vertex est autorisé n’importe où 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 de la boucle/de la rep ; Toutefois, cela est limité par MaxVShaderInstructionsExecuted dans D3DCAPS9 qui doit être au moins 0xFFFF.

Caps 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) :

Casquette Capacité
Majuscules du nuanceur
  • DynamicFlowControlDepth est 24
  • NumTemps est 32
  • StaticFlowControlDepth est 4
  • La prédication est prise en charge.
GuardBandLeft, GuardBandTop, GuardBandRight, GuardBandBottom 8K
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