Das DirectX-Team von Microsoft hat am 28. Oktober 2019 eine Entwickler-Preview dreier neuer Direct3D-12-Features veröffentlicht. DirectX Raytracing Tier 1.1, Mesh Shader und Sampler Feedback stehen über das Windows Insider Program in den Windows-10-Insider-Preview-Builds der Vorabversion 20H1 bereit. Voraussetzung für den Zugriff sind der aktuelle SDK-Preview-Build sowie der jeweils passende DirectX Shader Compiler. Die Bereitstellung markiert den technischen Vorlauf zu der später unter der Sammelbezeichnung DirectX 12 Ultimate geführten Feature-Generation.
DXR Tier 1.1: Inline-Raytracing und GPU-gesteuerte Strahlerzeugung
DirectX Raytracing Tier 1.1 baut auf der im Oktober 2018 eingeführten ersten DXR-Stufe auf und ergänzt sie um drei Funktionen. Mit additiven Pipeline State Objects lassen sich zusätzliche Shader an ein bestehendes Raytracing-PSO anfügen, was die Effizienz dynamischer PSO-Erweiterungen erhöht. Die Unterstützung von ExecuteIndirect für Raytracing erlaubt adaptive Algorithmen, bei denen die Anzahl der Strahlen erst auf der Ausführungszeitachse der GPU festgelegt wird. Das Inline-Raytracing bietet direktere Kontrolle über den Traversierungsalgorithmus und die Shader-Planung und öffnet damit neue Anwendungsfälle im Compute-Bereich, darunter Culling, Physik und Occlusion-Abfragen.
Mesh Shader und Sampler Feedback
Der Mesh Shader ersetzt Stufen der herkömmlichen Geometrie-Pipeline und arbeitet mit kooperativen Thread-Gruppen, die kleine Stapel von Vertices und Primitiven vor der Rasterisierung verarbeiten, vergleichbar mit einem Compute-Shader. Dieser Ansatz erlaubt das vorgelagerte Culling von Geometrie und senkt den Speicheraufwand gegenüber dem bisherigen Input-Assembler-Modell mit fester Funktion. Welche Möglichkeiten sich aus der direkten Verarbeitung von Geometrie auf der GPU ergeben, lässt sich auch an Techniken wie der Vertex-Animation über den Shader ablesen. Sampler Feedback wiederum zeichnet auf Hardware-Ebene auf, welche Texturbereiche während des Renderings tatsächlich abgetastet werden. Daraus ergeben sich zwei zentrale Einsatzgebiete. Beim Texture-Streaming lässt sich gezielt nur der benötigte Teil der detailliertesten MIP-Stufen laden, statt komplette Texturatlanten vorzuhalten. Beim Texture-Space-Shading reduziert das Verfahren räumliche und zeitliche Redundanz, indem Shader-Werte dynamisch in Texturen berechnet werden.
