Grafikpipeline
Die programmierbare Direct3D 11-Pipeline ist für die Generierung von Grafiken für Echtzeit-Gaminganwendungen konzipiert. In diesem Abschnitt wird die programmierbare Direct3D 11-Pipeline beschrieben. Das folgende Diagramm zeigt den Datenfluss von der Eingabe zur Ausgabe über jede der programmierbaren Phasen.

Die Grafikpipeline für Microsoft Direct3D 11 unterstützt die gleichen Phasen wie die Direct3D 10-Grafikpipelinemit zusätzlichen Phasen zur Unterstützung erweiterter Features.
Sie können direct3D 11API verwenden, um alle Phasen zu konfigurieren. Phasen, die allgemeine Shaderkerne (die abgerundeten rechteckigen Blöcke) enthalten, sind mithilfe der HLSL-Programmiersprache programmierbar. Wie Sie sehen werden, ist die Pipeline dadurch äußerst flexibel und anpassbar.
In diesem Abschnitt
| Thema | BESCHREIBUNG |
|---|---|
| Eingabeassembliererphase |
Die Direct3D 10- und höher-API trennt Funktionsbereiche der Pipeline in Phasen. Die erste Phase in der Pipeline ist die Phase des Eingabeassemblierers (Input-Assembler, IA). |
| Vertex-Shaderphase |
Die Vertex-Shader-Stufe (VS) verarbeitet Scheitelpunkte vom Eingabeassemblierer und führt pro Scheitelpunkt Vorgänge wie Transformationen, Skinning, Morphing und Pro-Scheitelpunkt-Beleuchtung durch. Vertex-Shader arbeiten immer mit einem einzelnen Eingabevertex und erzeugen einen einzelnen Ausgabevertex. Die Vertex-Shaderphase muss immer aktiv sein, damit die Pipeline ausgeführt werden kann. Wenn keine Vertexänderung oder Transformation erforderlich ist, muss ein Pass-Through-Vertex-Shader erstellt und auf die Pipeline festgelegt werden. |
| Mosaikstufen |
Die Direct3D 11-Runtime unterstützt drei neue Phasen, die Mosaik implementieren, wodurch Unterteilungsoberflächen mit geringen Details in Primitive mit höheren Details auf der GPU konvertiert werden. Mosaikkacheln (oder unterteilt) oberflächen hoher Ordnung in geeignete Strukturen für das Rendering. |
| Geometry Shader Stage |
Die GS-Phase (geometry-shader) führt anwendungsspezifischen Shadercode mit Scheitelpunkten als Eingabe und der Möglichkeit aus, Scheitelpunkte bei der Ausgabe zu generieren. |
| Stream-Output-Phase |
Der Zweck der Streamausgabephase besteht darin, kontinuierlich Scheitelpunktdaten von der geometry-shader-Stufe (oder der Vertex-Shader-Stufe, wenn die geometry-shader-Stufe inaktiv ist) an einen oder mehrere Puffer im Arbeitsspeicher auszugeben (siehe Erste Schritte mit der Stream-Output Stage). |
| Stufe des Rasterizers |
Die Rasterungsphase konvertiert Vektorinformationen (bestehend aus Formen oder Primitiven) in ein Rasterbild (bestehend aus Pixeln), um 3D-Echtzeitgrafiken anzuzeigen. |
| Pixel-Shader-Stufe |
Die Pixel-Shader-Stufe (PS) ermöglicht umfassende Schattierungstechniken wie pixelbasierte Beleuchtung und Nachbearbeitung. Ein Pixel-Shader ist ein Programm, das konstante Variablen, Texturdaten, interpolierte Werte pro Scheitelpunkt und andere Daten kombiniert, um Pixelausgaben zu erzeugen. Die Rasterizerphase ruft einen Pixel-Shader einmal für jedes Pixel auf, das von einem Primitiven abgedeckt wird. Es ist jedoch möglich, einen NULL-Shader anzugeben, um die Ausführung eines Shaders zu vermeiden. |
| Ausgabezusammenführungsphase |
Die Ausgabezusammenführungsphase (OM) generiert die endgültige gerenderte Pixelfarbe mithilfe einer Kombination aus Pipelinezustand, den von den Pixel-Shadern generierten Pixeldaten, dem Inhalt der Renderziele und dem Inhalt der Tiefen-/Schablonenpuffer. Die OM-Phase ist der letzte Schritt, um zu bestimmen, welche Pixel sichtbar sind (mit Tiefenschablonentests) und die endgültigen Pixelfarben zu mischen. |