Fase domain shader (DS)
La fase Domain Shader (DS) calcola la posizione del vertice di un punto suddiviso nella patch di output. Calcola la posizione del vertice corrispondente a ogni campione di dominio. Un domain shader viene eseguito una volta per ogni punto di output della fase tessellator e ha accesso in sola lettura alle costanti patch di output e patch di output dello hull shader nonché alle coordinate UV di uscita della fase tessellator.
Scopo e usi
La fase Domain Shader (DS) restituisce la posizione del vertice di un punto suddiviso nella patch di output, in base all'input della fase Hull Shader (HS) e alla fase TS (Tessellator).
Immissione
- Uno shader di dominio utilizza i punti di controllo di output dalla fase hull shader (HS). Gli output dello hull shader includono:
- Punti di controllo
- Dati costanti di patch
- Fattori di tassellatura. I fattori di tassellatura possono includere i valori utilizzati dal mosaico a funzione fissa, nonché i valori non elaborati (prima dell'arrotondamento per tassellatura intera, ad esempio), che facilita la geomorfia, ad esempio.
- Uno shader di dominio viene richiamato una volta per ogni coordinata di output dalla fase TS (Tessellator).
Output
- La fase Domain Shader (DS) restituisce la posizione del vertice di un punto suddiviso nella patch di output.
Al termine dello shader del dominio, la tassellatura viene completata e i dati della pipeline continuano alla fase successiva della pipeline, ad esempio la fase Geometry Shader (GS) e la fase Pixel Shader (PS). Un geometry shader che prevede primitive con adiacenza (ad esempio, 6 vertici per triangolo) non è valido quando la tassellatura è attiva (questo comporta un comportamento non definito, che comporterà il livello di debug).
Esempio
void main( out MyDSOutput result,
float2 myInputUV : SV_DomainPoint,
MyDSInput DSInputs,
OutputPatch<MyOutPoint, 12> ControlPts,
MyTessFactors tessFactors)
{
...
result.Position = EvaluateSurfaceUV(ControlPoints, myInputUV);
}
Argomenti correlati