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.
Argomenti correlati