Condividi tramite


Fase vertex shader (VS)

La fase Vertex Shader (VS) elabora i vertici, in genere eseguendo operazioni come trasformazioni, rivestimento e illuminazione. Un vertex shader accetta un singolo vertice di input e produce un singolo vertice di output.

Scopo e usi

La fase Vertex Shader (VS) viene usata per l'elaborazione di singoli singoli vertici, ad esempio:

  • Trasformazioni
  • Rivestimento
  • Morphing
  • Illuminazione per vertice

La fase vertex shader è una fase programmabile-shader; viene visualizzata come blocco arrotondato nel diagramma della pipeline grafica. Questa fase dello shader usa il modello di shader 4.0 core common-shader.

La fase vertex-shader (VS) elabora i vertici dall'assembler di input. I vertex shader operano sempre su un singolo vertice di input e producono un singolo vertice di output. La fase vertex shader deve essere sempre attiva per l'esecuzione della pipeline. Se non è necessaria alcuna modifica o trasformazione dei vertici, è necessario creare e impostare un vertex shader pass-through sulla pipeline.

Ogni vertice di input del vertex shader può essere costituito da un massimo di 16 vettori a 32 bit (fino a 4 componenti ciascuno). Ogni vertice di output può essere costituito da un numero di vettori a 4 componenti a 16 a 32 bit. Tutti i vertex shader devono avere almeno un input e un output, che può essere minore di un valore scalare.

La fase vertex shader può utilizzare due valori generati dal sistema dall'assembler di input: VertexID e InstanceID (vedere Valori di sistema e semantica). Poiché VertexID e InstanceID sono entrambi significativi a livello di vertice e gli ID generati dall'hardware possono essere inseriti solo nella prima fase che li riconosce, questi valori ID possono essere inseriti solo nella fase vertex-shader.

I vertex shader vengono sempre eseguiti su tutti i vertici, inclusi i vertici adiacenti nelle topologie primitive di input con adiacenza. Il numero di volte in cui è stato eseguito il vertex shader può essere eseguito dalla CPU usando la statistica della pipeline VSInvocations.

Un vertex shader può eseguire operazioni di campionamento di carico e trama in cui non sono necessari derivati dello spazio dello schermo (usando funzioni intrinseche HLSL: Sample (oggetto trama DirectX HLSL), SampleCmpLevelZero (oggetto trama DirectX HLSL)e SampleGrad (oggetto trama DirectX HLSL).

Input

Un singolo vertice, con valori generati dal sistema VertexID e InstanceID. Ogni vertice di input del vertex shader può essere costituito da un massimo di 16 vettori a 32 bit (fino a 4 componenti ciascuno).

Output

Un singolo vertice. Ogni vertice di output può essere costituito da un numero di vettori a 4 componenti a 16 a 32 bit.

Pipeline grafica