Freigeben über


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.

Diagramm zur Veranschaulichung der Funktionsblöcke der Direct3D-Renderingpipeline.

  • 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.