Condividi tramite


Fase vertex-shader

La fase vertex-shader (VS) elabora vertici dall'assembler di input, eseguendo operazioni per vertice, ad esempio trasformazioni, skinning, morphing 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 del vertice, è necessario creare un vertex shader pass-through e impostare sulla pipeline.

The Vertex-shader

Ogni vertice di input di vertex shader può essere costituito da un massimo di 16 vettori a 32 bit (fino a 4 componenti) 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 un minimo di un input e un output, che può essere minore di un valore scalare.

La fase vertex-shader può utilizzare due valori di sistema generati dall'assembler di input: VertexID e InstanceID (vedere Semantica del valore 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 comprende, 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 ajacency. Il numero di volte in cui è stato eseguito il vertex-shader può essere eseguito una query 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 (DirectX HLSL Texture Object), SampleCmpLevelZero (DirectX HLSL Texture Object) e SampleGrad (Oggetto trama DirectX HLSL)).