Exemplarische Vorgehensweisen zu D3D12-Code
Dieser Abschnitt enthält Code für Beispielszenarien. Viele der exemplarische Vorgehensweisen enthalten Details dazu, welche Codierung einem einfachen Beispiel hinzugefügt werden muss, um zu vermeiden, dass der grundlegende Komponentencode für jedes Szenario wiederholt wird.
Die grundlegendste Komponente finden Sie im Abschnitt Erstellen einer einfachen Direct3D 12-Komponente . In den folgenden exemplarische Vorgehensweisen werden komplexere Szenarien beschrieben.
In diesem Abschnitt
Thema | Beschreibung |
---|---|
D2D mit D3D11on12 |
Im D3D1211on12-Beispiel wird veranschaulicht, wie D2D-Inhalte über D3D12-Inhalte gerendert werden, indem Ressourcen zwischen einem 11-basierten Gerät und einem 12-basierten Gerät freigegeben werden. |
N-Körper-Schwerkraftsimulation mit mehreren Modulen |
Das D3D12nBodyGravity-Beispiel veranschaulicht, wie Computearbeit asynchron ausgeführt wird. Das Beispiel startet eine Reihe von Threads mit jeweils einer Computebefehlswarteschlange und plant Computearbeit auf der GPU, die eine n-Körper-Schwerkraftsimulation ausführt. Jeder Thread arbeitet mit zwei Puffern voller Positions- und Geschwindigkeitsdaten. Bei jeder Iteration liest der Compute-Shader die aktuelle Position und die Geschwindigkeitsdaten aus einem Puffer und schreibt die nächste Iteration in den anderen Puffer. Nach Abschluss der Iteration wechselt der Compute-Shader, welcher Puffer die SRV zum Lesen von Positions-/Geschwindigkeitsdaten ist, und welches UAV zum Schreiben von Positions-/Geschwindigkeitsupdates ist, indem der Ressourcenzustand für jeden Puffer geändert wird. |
Prädikationsabfragen |
Das D3D12PredicationQueries-Beispiel veranschaulicht die Okklusionskulling mithilfe von DirectX 12-Abfrageheaps und Prädication. In der exemplarischen Vorgehensweise wird der zusätzliche Code beschrieben, der zum Erweitern des HelloConstBuffer-Beispiels zur Verarbeitung von Prädication-Abfragen erforderlich ist. |
Dynamische Indizierung mit HLSL 5.1 |
Das D3D12DynamicIndexing-Beispiel veranschaulicht einige der neuen HLSL-Features, die im Shadermodell 5.1 verfügbar sind – insbesondere dynamische Indizierung und ungebundene Arrays –, um das gleiche Gitter mehrmals zu rendern, jedes Mal, wenn es mit einem dynamisch ausgewählten Material gerendert wird. Bei der dynamischen Indizierung können Shader jetzt in ein Array indiziert werden, ohne den Wert des Indexes zur Kompilierzeit zu kennen. In Kombination mit nicht gebundenen Arrays bietet dies eine weitere Dereferenzierungs- und Flexibilitätsebene für Shaderautoren und Kunstpipelines. |
Indirektes Zeichnen und GPU-Culling |
Das D3D12ExecuteIndirect-Beispiel veranschaulicht, wie indirekte Befehle zum Zeichnen von Inhalten verwendet werden. Außerdem wird veranschaulicht, wie diese Befehle auf der GPU in einem Compute-Shader bearbeitet werden können, bevor sie ausgegeben werden. |