Mesh Shaders und Amplification Shaders: Neuordnung der Geometrie-Pipeline in Direct3D 12

Im DirectX Developer Blog stellte Microsoft am 8. November 2019 Mesh Shader und Amplification Shader für Direct3D 12 vor. Die beiden Shader-Stufen ersetzen den vorderen Teil der klassischen Geometrie-Pipeline und geben Entwicklern mehr Kontrolle über die Verarbeitung von Dreiecken.

Mesh Shader ersetzt mehrere feste Pipeline-Stufen

Die bisherige Geometrie-Pipeline besteht aus Input Assembler, Vertex Shader, Hull Shader, Domain Shader und Geometry Shader. Mesh Shader und Amplification Shader übernehmen diesen Abschnitt in einem flexibleren Programmiermodell. Rasterisierung und die nachfolgenden Stufen bleiben unverändert.

Der Mesh Shader arbeitet ähnlich wie ein Compute Shader mit Threadgroups und groupshared memory. Er erzeugt Attribute pro Vertex und Primitive und verarbeitet dafür sogenannte Meshlets. Das sind vorab gebildete Teilmengen einer größeren Geometrie, die gemeinsam mit den übrigen Modelldaten abgelegt werden.

Amplification Shader steuert das Culling

Der Amplification Shader kann dem Mesh Shader vorgeschaltet werden. Über DispatchMesh() verteilt er Threadgroups und kann früh entscheiden, welche Geometrie überhaupt verarbeitet werden muss. Microsoft nennt unter anderem Culling pro Instanz als möglichen Einsatzbereich. Nicht sichtbare Geometrie wird damit vor der eigentlichen Mesh-Shader-Verarbeitung entfernt.

Für die Nutzung waren eine Windows-10-Insider-Preview aus dem 20H1-Zweig, eine aktuelle Version des DirectX Shader Compilers und geeignete GPU-Hardware erforderlich. Die Unterstützung lässt sich über D3D12_FEATURE_DATA_D3D12_OPTIONS7 abfragen. Einen historischen Überblick über die Low-Level-API bietet auch unser Beitrag zu DirectX 12.

Weitere News

Weitere News

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein