Condividi tramite


Fase vertex-shader

La fase vertex-shader (VS) elabora i vertici dall'assembler di input, eseguendo operazioni per vertice, ad esempio trasformazioni, skinning, morfiing e illuminazione per vertice. 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.

Vertex shader

Ogni vertice di input del vertex shader può essere costituito da un massimo di 16 vettori a 32 bit (fino a 4 componenti ciascuno) e ogni vertice di output può essere costituito da un massimo di 16 vettori a 4 componenti 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ò usare due valori generati dal sistema dall'assembler di input: VertexID e InstanceID (vedere semantica dei valori di sistema). 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 i derivati dello spazio dello schermo non sono necessari (usando funzioni intrinseche HLSL: Sample (Oggetto trama DirectX HLSL), SampleCmpLevelZero (oggetto trama DirectX HLSL)e SampleGrad (Oggetto trama DirectX HLSL)).