Domainshaderphase (DS)
Die Domain Shader -Stufe (DS) berechnet die Vertexposition eines unterteilten Punkts im Ausgabepatch; sie berechnet die Vertexposition, die den einzelnen Domänenbeispielen entspricht. Ein Domänen-Shader wird einmal pro Ausgabepunkt der Tessellatorphase ausgeführt und verfügt über schreibgeschützten Zugriff auf den Hull-Shader-Ausgabepatch und die Ausgabepatchkonstanten und die Tessellator-Ausgabe-UV-Koordinaten.
Zweck und Verwendung
Die Domain Shader -Stufe (DS) gibt die Vertexposition eines unterteilten Punkts im Ausgabepatch aus, basierend auf Eingaben aus der Hull-Shader-Stufe (HS) und der Tessellator-Stufe (TS).
Eingabe
- Ein Domänen-Shader verwendet Ausgabesteuerungspunkte aus der Hull-Shaderphase (HS). Zu den Hull-Shader-Ausgaben gehören:
- Kontrollpunkte.
- Patchkonstantendaten.
- Tessellationsfaktoren. Die Tessellationsfaktoren können die werte enthalten, die vom Tessellator mit fester Funktion verwendet werden, sowie die Rohwerte (z. B. vor rundung durch ganzzahlige Tessellation), die z. B. geomorphen.
- Ein Domänen-Shader wird einmal pro Ausgabekoordinate aus der Tessellatorphase (TS) aufgerufen.
Ausgabe
- Die Ds-Stufe (Domain Shader) gibt die Vertexposition eines unterteilten Punkts im Ausgabepatch aus.
Nach Abschluss des Domänen-Shaders wird die Tessellation abgeschlossen, und Pipelinedaten werden mit der nächsten Pipelinestufe fortgesetzt, z. B. die Geometry-Shaderphase (GS) und die Pixelshaderphase (PS). Ein Geometrie-Shader, der Grundtypen mit Adjacency erwartet (z. B. 6 Scheitelpunkte pro Dreieck), ist ungültig, wenn die Tessellation aktiv ist (dies führt zu einem nicht definierten Verhalten, über das sich die Debugebene beschwert).
Beispiel
void main( out MyDSOutput result,
float2 myInputUV : SV_DomainPoint,
MyDSInput DSInputs,
OutputPatch<MyOutPoint, 12> ControlPts,
MyTessFactors tessFactors)
{
...
result.Position = EvaluateSurfaceUV(ControlPoints, myInputUV);
}
Verwandte Themen