Grafikpipeline

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

Diagramm des Datenflusses in der programmierbaren pipeline direct3d 11

Die Grafikpipeline für Microsoft Direct3D 11 unterstützt dieselben Phasen wie die Direct3D 10-Grafikpipeline, mit zusätzlichen Stufen zur Unterstützung erweiterter Features.

Sie können die Direct3D 11API verwenden, um alle Phasen zu konfigurieren. Phasen mit gemeinsamen Shaderkernen (die abgerundeten rechteckigen Blöcke) können mithilfe der Programmiersprache HLSL programmiert werden. Wie Sie sehen werden, macht die Pipeline dadurch extrem flexibel und anpassungsfähig.

In diesem Abschnitt

Thema Beschreibung
Eingabe-Assembler-Phase
Die Direct3D 10- und höher-API unterteilt Funktionsbereiche der Pipeline in Phasen. die erste Phase in der Pipeline ist die Input-Assembler-Phase (IA).
Vertex-Shaderphase
Die Vertex-Shader-Phase (VS) verarbeitet Scheitelpunkte aus dem Eingabeassemhalter und führt Vorgänge pro Vertex aus, z. B. Transformationen, Skinning, Morphing und Pro-Vertex-Beleuchtung. Vertex-Shader arbeiten immer an 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 Passthrough-Vertex-Shader erstellt und auf die Pipeline festgelegt werden.
Tessellationsphasen
Die Direct3D 11-Runtime unterstützt drei neue Phasen, die tessellation implementieren, wodurch Unterteilungsflächen mit geringer Detailgenauigkeit in Grundtypen mit höherem Detail auf der GPU konvertiert werden. Tessellationkacheln (oder zerlegt) hohe Oberflächen in geeignete Strukturen zum Rendern.
Geometrie-Shaderphase
Die Geometry-Shader-Phase (GS) führt anwendungsspezifischen Shadercode mit Scheitelpunkten als Eingabe und der Möglichkeit aus, Scheitelpunkte bei der Ausgabe zu generieren.
Streamausgabephase
Der Zweck der Stream-Ausgabephase besteht darin, kontinuierlich Vertexdaten aus der Geometry-Shader-Phase (oder der Vertex-Shader-Stufe, wenn die Geometry-Shader-Phase inaktiv ist) in einen oder mehrere Puffer im Arbeitsspeicher auszugeben (siehe Erste Schritte mit der Stream-Ausgabephase).
Rasterungsphase
Die Rasterphase konvertiert Vektorinformationen (bestehend aus Formen oder Primitiven) in ein Rasterbild (bestehend aus Pixeln), um 3D-Grafiken in Echtzeit anzuzeigen.
Pixel-Shaderphase
Die Pixel-Shader-Phase (PS) ermöglicht umfassende Schattierungstechniken wie Die Beleuchtung pro Pixel und die Nachbearbeitung. Ein Pixel-Shader ist ein Programm, das konstante Variablen, Texturdaten, interpolierte Werte pro Vertex und andere Daten kombiniert, um Ausgaben pro Pixel zu erzeugen. Die Rasterisierungsphase 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 das Ausführen eines Shaders zu vermeiden.
Output-Merger-Phase
Die Om-Phase (Output-Merger) generiert die endgültige gerenderte Pixelfarbe unter Verwendung einer Kombination aus dem 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 zum Bestimmen der sichtbaren Pixel (mit Tiefenschablonentests) und zum Mischen der endgültigen Pixelfarben.