vs_3_0

Un vertex shader programmabile è costituito da un set di istruzioni che operano sui dati dei vertici. Registra i dati in e fuori dall'ALU. È possibile applicare un controllo aggiuntivo per modificare l'istruzione, i risultati o i dati scritti.

La versione del vertex shader vs_3_0 estende il set di funzionalità supportato da vs_2_x. Ognuna delle funzionalità di vs_2_X che richiede un limite da impostare, è disponibile in vs_3_0 senza richiedere il limite.

Nuove funzioni e caratteristiche

Le nuove funzionalità della versione del vertex shader vs_3_0 sono elencate nelle sezioni seguenti.

Registri di indicizzazione

Nei modelli di shader precedenti è possibile indicizzare solo la banca di registrazione costante. In questo modello è possibile indicizzare le banche di registrazione seguenti usando il registro del contatore del ciclo (aL):

  • Registro di input (v#)
  • Registro di output (o#)

Trame del vertice

Questo modello shader supporta la ricerca della trama nel vertex shader usando texldl. Il motore del vertice include quattro fasi di esempio trama (distinte dall'sampler mappa di spostamento e dagli esempi di trama nel motore pixel) che possono essere usate per campioni di trame impostate in queste fasi. Vedere Trame vertex in vs_3_0 (DirectX HLSL).

Frequenza di flusso vertex

Questa funzionalità consente l'inizializzazione di un subset dei registri di input a una frequenza diversa da una volta per vertice. Vedere Disegno di geometria non indicizzata.

Shader Output

Analogamente a vs_2_0, l'output del shader può variare con il controllo flusso statico. Prestare attenzione al ramo dinamico in quanto ciò può causare la variazione degli output shader per vertice. Ciò produrrà risultati imprevedibili su hardware diverso.

Controllo flusso dinamico

Sono supportate tutte le istruzioni di controllo del flusso dinamico. Il valore massimo di profondità annidamento consentito è 24. Per informazioni dettagliate, vedere Limiti di annidamento del flusso .

Registri temporanei

È supportato un totale di 32 registri temporanei (r#).

Controllo flusso statico

La profondità massima di annidamento per il ciclo - vs/rep - vs è 4. La profondità massima di annidamento per la chiamata- vs callnz bool - vs/callnz pred - vs/ è 4. Per se bool - vs, il valore massimo di profondità di annidamento consentito è 24. Per informazioni dettagliate, vedere Limiti di annidamento del flusso .

Predicazione

La predicazione delle istruzioni è supportata. Usare setp_comp - vs per impostare il registro predicato.

Conteggio istruzioni

Ogni vertex shader è consentito ovunque da 512 fino al numero di slot in MaxVertexShader30InstructionSlots in D3DCAPS9. Il numero di istruzioni eseguite può essere molto più alto a causa del supporto ciclo/rep; tuttavia, questo è limitato da MaxVShaderInstructionsExecuted in D3DCAPS9 che deve essere almeno 0xFFFF.

Maiuscole dispositivo

Se vertex Shader 3_0 è supportato, i limiti seguenti sono supportati nell'hardware (almeno):

Cap Funzionalità
Maiuscole shader
  • DynamicFlowControlDepth è 24
  • NumTemps è 32
  • StaticFlowControlDepth è 4
  • La predicazione è supportata.
GuardBandLeft, GuardBandTop, GuardBandRight, GuardBandBottom 8 K
VertexShaderVersion 3_0
MaxVertexShaderConst 256
MaxVertexShader30InstructionSlots 512
Supporto per la nebbia D3DPRASTERCAPS_FOGVERTEX
VertexTextureFilterCaps
D3DDEVCAPS2_VERTEXELEMENTSCANSHARESTREAMOFFSET Gli elementi vertex in una dichiarazione di vertice possono condividere lo stesso offset di flusso.
Formati di vertice
  • D3DDECLTYPE_UBYTE4
  • D3DDECLTYPE_UBYTE4N
  • D3DDECLTYPE_SHORT2N
  • D3DDECLTYPE_SHORT4N
  • D3DDECLTYPE_FLOAT16_2
  • D3DDECLTYPE_FLOAT16_4

 

Vertex Shader