Renderingpipeline
Grafikhardware, die Direct3D Version 10 unterstützt, kann mit gemeinsam programmierbaren Shaderkernen entworfen werden. Die Grafikverarbeitungseinheit (Graphics Processing Unit, GPU) kann Shaderkerne programmieren, die in den Funktionsblöcken der Renderingpipeline geplant werden können. Dieser Lastenausgleich bedeutet, dass Hardwareentwickler nicht jeden Shadertyp verwenden müssen, sondern nur diejenigen, die zum Rendern erforderlich sind. Dieser Lastenausgleich kann dann Ressourcen für Shadertypen freigeben, die aktiv sind. Die folgende Abbildung zeigt die Funktionsblöcke der Renderingpipeline. In den Abschnitten, die der Abbildung folgen, werden die Blöcke ausführlicher beschrieben.
Eingabe-Assembler
Die Eingabeassemierphase verwendet feste Funktionsvorgänge, um Scheitelpunkte aus dem Arbeitsspeicher zu lesen. Der Eingabeassesser bildet dann Geometriegrundtypen und erstellt Pipelinearbeitselemente. Automatisch generierte Vertexbezeichner, instance Bezeichner (verfügbar für den Vertex-Shader) und primitive Bezeichner (verfügbar für den Geometrie-Shader oder Pixelshader) ermöglichen bezeichnerspezifische Verarbeitung. Die gepunktete Linie in der Abbildung zeigt den Fluss der bezeichnerspezifischen Verarbeitung.
Vertexshader
Die Vertexshaderphase akzeptiert einen Scheitelpunkt als Eingabe und gibt einen Scheitelpunkt aus.
Geometrie-Shader
Die Geometry-Shaderphase verwendet einen Grundtyp als Eingabe und gibt null, einen oder mehrere Grundtypen aus. Ausgabegrundtypen können mehr Daten enthalten, als ohne den Geometry-Shader möglich sind. Die Gesamtmenge der Ausgabedaten pro Vorgang ist (Vertexgröße x Vertexanzahl).
Streamausgabe
Die Streamausgabephase verkettet (streamt aus) Grundtypen, die die Ausgabe des Geometry-Shaders erreichen, zu Ausgabepuffern. Die Streamausgabe ist dem Geometry-Shader zugeordnet, und beide werden zusammen programmiert.
Rasterisierungsfunktion
Die Rasterizer-Phasenclips (einschließlich benutzerdefinierter Clipgrenzen) sind Grundtypen, führen eine Perspektivteilung für Grundtypen durch, implementieren viewport- und scherensorische Auswahl, führen die Auswahl des Renderziels aus und führen eine primitive Einrichtung aus.
Pixelshader
Die Pixelshaderphase verwendet ein Pixel als Eingabe und gibt ein Pixel an derselben Position oder ohne Pixel aus. Der Pixelshader kann keine aktuellen Renderziele lesen.
Ausgabezusammenführung
Die Ausgabezusammenführungsphase führt feste Render-Ziel-, Tiefen- und Schablonenvorgänge aus.