Grafikpipeline-Viewer

Im Fenster Grafikpipelinestufen, einem der Grafikdiagnosetools in Visual Studio, können Sie erkennen, wie sich ein bestimmtes Zeichnen-Ereignis durch die Grafikpipeline bewegt.

Dies ist das Fenster Grafikpipelinestufen:

Ein 3D-Objekt durchläuft die Pipelinestufen.

Grundlegendes zum Fenster Grafikpipelinestufen.

Im Fenster Grafikpipelinestufen können Sie die Ausgabe der einzelnen Grafikpipelinestufen analysieren, die auf ein spezifisches gerendertes Objekt angewendet werden.Insbesondere können Sie Stufen erkennen, in denen die Daten falsch interpretiert oder transformiert wurden. So können Sie z. B. überprüfen, ob eine Vertex-Shader-Stufe verursacht hat, das ein Objekt außerhalb des Bildschirms gezeichnet wurde.Wenn Sie die Pipelinestufe erkannt haben, in der das Problem auftritt, können Sie andere Grafikdiagnosetools verwenden, um zu überprüfen, wie die Daten interpretiert oder transformiert wurden.Renderingfehler, die in Pipelinestufen auftreten, werden häufig durch falsche Deskriptoren des Vertex-Formats, fehlerhafte Shader-Programme oder fehlkonfigurierten Gerätezustand verursacht.

Hh873194.collapse_all(de-de,VS.110).gifGrafikpipelinestufen

Im Fenster Grafikpipelinestufen werden Grafikdaten für die Pipelinestufen angezeigt, die während des Zeichnen-Aufrufs aktiv waren.Wenn Sie die Grafiktools in Visual Studio verwenden möchten, um die Ausgabe der einzelnen angezeigten Stufen zu überprüfen, wählen Sie die entsprechende Miniaturansicht im Fenster Grafikpipelinestufen.

Berechnungsshader werden nicht im Fenster Grafikpipelinestufen unterstützt.

  • Eingabe-Assembler
    Liest Index und Vertexdaten, die durch die App angegeben werden, und setzt diese für die Grafikhardware zusammen.Die Miniaturansicht zeigt ein Drahtmodell der zusammengesetzten Eckpunkte an.Die Vertexdaten, die positioniert werden können, werden durch die POSITION-Semantik bestimmt.Wenn die POSITION-Semantik nicht in der Eingabe-Assembler-Ausgabe vorhanden ist, wird nichts in der Stufe Eingabe-Assembler angezeigt.Sie können den Modell-Editor verwenden, um die Ausgabe der Eingabe-Assembler Phase zu überprüfen.

  • Vertex-Shader
    Verarbeitet Eckpunkte, in der Regel durch Ausführen von Vorgängen wie Transformationen, Skinning und Beleuchten.Ein Vertex-Shader übernimmt immer eine Vertexeingabe und erzeugt eine Vertexausgabe.Die Miniaturansicht zeigt ein Drahtmodellimage der transformierten Geometrie an.Die Vertexdaten, die positioniert werden können, werden durch die POSITION- oder die SV_POSITION-Semantik bestimmt.Wenn die POSITION- oder die SV_POSITION-Semantik nicht in der Vertex-Shader-Ausgabe vorhanden sind, wird nichts in der Vertex-Shader-Stufe angezeigt.Sie können den Grafik-Editor verwenden, um die Ausgabe der Vertex-Shader-Stufe zu überprüfen.

  • Hull-Shader
    Nur Direct3D 11.Verarbeitet geometrische Primitive, wie z. B. Quads, Dreiecke oder Zeilen, in niederwertige geometrische Patches, die als Eingabe für die fest verdrahtete Mosaikphase dienen.Für den Hull-Shader wird keine Miniaturansicht angezeigt.

  • Domain-Shader
    Nur Direct3D 11.Verarbeitet ähnlich der Vertex-Shader-Stufe die Unterteilungseckpunkte, die von der fest verdrahteten Mosaikphase ausgegeben werden.Für die Domain-Shader-Stufe wird keine Miniaturansicht angezeigt.

  • Geometrie-Shader
    Verarbeitet vollständige Primitive, z. B. Punkte, Zeilen oder Dreiecke, zusammen mit optionalen Vertexinformationen für benachbarte Primitive.Ein Geometrie-Shader kann die Grundelemente verwerfen bzw. eine oder mehrere neue Primitive ausgeben.Die Miniaturansicht zeigt ein Drahtmodellimage der transformierten Geometrie an.Sie können den Grafik-Editor verwenden, um die Ausgabe der Geometrie-Shader-Stufe zu überprüfen.

  • Pixel-Shader
    Verarbeitet interpolierte Vertexdaten, um gefärbte Pixel zu generieren.Die Miniaturansicht zeigt ein Bild der Pixel-Shader-Ausgabe an.Sie können den Grafik-Editor verwenden, um die Ausgabe der Pixel-Shader-Stufe zu überprüfen.

  • Ausgabezusammenführung
    Kombiniert verschiedene Arten von Shader-Ergebnissen, z. B. Pixel-Shader-Werte und Tiefeninformationen, zusammen mit dem Inhalt des Renderziels und des Tiefenpuffers, und den Schablonenpufferinformationen, um zu bestimmen, wie das Renderziel beeinflusst wird.Nachdem die verschiedenen Ergebnisse zusammengeführt wurden und der Inhalt des Schablonenpuffers berücksichtigt wurde, zeigt die Miniaturansicht ein Bild des Renderzielinhalts an.Sie können die Grafik-Editor verwenden, um die Ausgabe der Ausgabezusammenführung Phase zu überprüfen.

Hh873194.collapse_all(de-de,VS.110).gifAnzeige und Debuggen von Shader-Code

Sie können den Code für einen Vertex-Shader, einen Hull-Shader, einen Domain-Shader, einen Geometrie-Shader oder einen Pixel-Shader anzeigen oder debuggen, indem Sie die Steuerelemente unterhalb der Pipelinestufe verwenden, die dem Shader zugeordnet ist.

So zeigen Sie den Quellcode eines Shaders an

  • Wählen Sie unterhalb der Pipelinestufe, die dem Shader zugeordnet ist, den Sie anzeigen möchten, den Titel der Pipelinestufe aus, z. B. Vertex-Shader, um den Quellcode für den Vertex-Shader anzuzeigen.

So debuggen Sie einen Shader

  • Wählen Sie unterhalb der Shader-Stufe, die dem Shader zugeordnet ist, den Sie debuggen möchten, unterhalb des Titels der Pipelinestufe Debuggen starten aus.Dieser Einstiegspunkt in den HLSL-Debugger debuggt nur den ersten Shader-Aufruf für die entsprechende Stufe, d. h. für den ersten Eckpunkt, das erste Primitiv oder das erste Pixel, der oder das verarbeitet wird.Auf andere Aufrufe dieser Shader-Stufen kann mit dem Grafikpixelverlauf zugegriffen werden.

Um zu verstehen, warum ein Zeichnen-Aufruf auf bestimmte Weise mit der Grafikpipeline interagiert, benötigen Sie möglicherweise Informationen über den aktuellen Gerätezustand.Das Fenster Grafikpipelinestufen stellt einen Link zu diesen Informationen bereit.

Siehe auch

Aufgaben

Exemplarische Vorgehensweise: Fehlende Objekte durch Vertexschattierung

Exemplarische Vorgehensweise: Debuggen von Renderingfehlern, die durch Schattierungen entstanden sind