Pipelinephasen (Direct3D 10)

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

Diagramm des Datenflusses in der programmierbaren Direct3d 10-Pipeline

Alle Phasen können mithilfe der API konfiguriert werden. 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 äußerst flexibel und anpassungsfähig. Der Zweck der einzelnen Phasen ist unten aufgeführt.

  • Input-Assembler Stage : Die Eingabe-Assembler-Phase ist für die Bereitstellung von Daten (Dreiecke, Linien und Punkte) an die Pipeline verantwortlich.
  • Vertex-Shader-Stufe. Die Vertex-Shader-Stufe verarbeitet Scheitelpunkte und führt dabei in der Regel Vorgänge wie Transformationen, das Anwenden von Skins und Beleuchtung aus. Ein Vertex-Shader verarbeitet immer einen einzigen Eingabescheitelpunkt und erzeugt daraus einen einzigen Ausgabescheitelpunkt.
  • Geometry-Shader Stage : Die Geometry-Shader-Phase verarbeitet ganze Grundtypen. Seine Eingabe ist ein vollständiger Grundtyp (drei Scheitelpunkte für ein Dreieck, zwei Scheitelpunkte für eine Linie oder ein einzelner Scheitelpunkt für einen Punkt). Darüber hinaus kann jeder Grundtyp auch die Vertexdaten für alle am Rand angrenzenden Grundtypen enthalten. Dies kann höchstens weitere drei Scheitelpunkte für ein Dreieck oder zusätzliche zwei Scheitelpunkte für eine Linie umfassen. Der Geometry-Shader unterstützt auch eine eingeschränkte Geometrieverstärkung und Deverstärkung. Bei einem Eingabegrundtyp kann der Geometry-Shader den Grundtyp verwerfen oder einen oder mehrere neue Grundtypen ausgeben.
  • Streamausgabephase : Die Streamausgabephase ist für das Streaming primitiver Daten aus der Pipeline in den Arbeitsspeicher auf dem Weg zum Rasterizer konzipiert. Daten können "ausgestreamt" und/oder in den Rasterizer übergeben werden. In den Arbeitsspeicher gestreamte Daten können als Eingabedaten wieder der Pipeline zugeführt oder von der CPU eingelesen werden.
  • Rasterizerphase : Der Rasterizer ist für das Beschneiden von Grundtypen, das Vorbereiten von Grundtypen für den Pixelshader und das Festlegen des Aufrufens von Pixelshadern verantwortlich.
  • Pixelshader-Stufe. Die Pixelshader-Stufe empfängt interpolierte Daten für einen Grundtyp und generiert Pro-Pixel-Daten (z. B. die Farbe).
  • Output-Merger-Phase : Die Output-Merger-Phase ist für die Kombination verschiedener Arten von Ausgabedaten (Pixelshaderwerte, Tiefe und Schabloneninformationen) mit dem Inhalt des Renderziels und der Tiefen-/Schablonenpuffer zuständig, um das endgültige Pipelineergebnis zu generieren.

Programmierhandbuch für Direct3D 10