Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Mit dem HLSL-Debugger, der eines der Grafikdiagnosetools in Visual Studio können Sie erkennen, wie der HLSL-Shader-Code mit Grafikdaten funktioniert, die während einer Grafikdiagnose-Erfassungssitzung aufgezeichnet wurden.
Dies ist der HLSL-Debugger:
.png)
Grundlegendes zum HLSL-Debugger
Der HLSL-Debugger kann Ihnen helfen, Probleme zu verstehen, die im Shader-Code auftreten.Das Debuggen von HLSL-Code in Visual Studio ähnelt dem Debuggen von Code, der in anderen Sprachen wie C++, C# oder Visual Basic geschrieben wird.Sie können den Inhalt von Variablen überprüfen, Haltepunkte festlegen, den Code durchlaufen und die Aufrufliste abarbeiten, so wie Sie es auch beim Debuggen anderer Sprachen können.
Da CPU-Hardware und -Software (App-Code) sich von GPU-Hardware und -Software (Shader-Code) unterscheidet, ist eine CPU-ähnliche Debugleistung nicht auf einem GPU-Computer möglich, es sei denn, der GPU-Debugger funktioniert auf eine grundlegend andere Weise.Der wesentliche Unterschied zwischen der Arbeitsweise von GPUs und CPUs, besteht darin, dass GPUs die Arbeit auf Hunderte langsamer, relativ einfacher Prozessoren verteilen, die so optimiert werden, dass Grafikoperationen sehr umfangreiche Datasets verarbeiten. CPUs dagegen verwenden eine Handvoll relativ schneller, schwieriger Prozessoren, die kleinere, allgemeine Arbeitslasten verarbeiten können.Da eine GPU im Wesentlichen ein unabhängiger Computer ist, der seine eigenen internen Funktionen verwaltet und nur selten Informationen für die CPU freigibt, ist es für einen Debugger, der auf der CPU ausgeführt wird, sehr schwierig zu wissen, was auf dem GPU-Computer zu einem beliebigen Zeitpunkt geschieht.Auch wenn eine CPU mithalten kann, verwendet GPU-Code einfach zu viele Threads und generiert zu viele Daten, die ein Entwickler nicht durchsuchen kann.
Um diese Probleme zu umgehen, erstellt der HLSL-Debugger aufgezeichnete Frames neu, indem er Informationen verwendet, die in einem Grafikprotokoll aufgezeichnet wurden, und versucht nicht, eine GPU in Echtzeit zu überwachen, während der Shader-Code ausgeführt wird.Da ein Grafikprotokoll genügend Informationen enthält, um einen Teil der Ausgabe neu zu erstellen, und da die Grafikdiagnose Tools bereitstellt, die Ihnen helfen können, das genaue Pixel und das Ereignis festzulegen, in dem ein Fehler auftritt, muss der HLSL-Debugger den genauen Shaderthread nur simulieren, der Sie interessiert.Dies bedeutet, dass die Arbeit des Shaders für die CPU simuliert werden kann, in der die internen Funktionen in der Vollansicht angezeigt werden.Aus diesem Grund bietet der HLSL-Debugger eine CPU-ähnliche Debugleistung.
Allerdings unterliegt der HLSL-Debugger gerade folgenden Einschränkungen:
Der HLSL-Debugger unterstützt nicht die Funktion Bearbeiten und Fortfahren.
Es ist nicht möglich, eine Anwendung und ihren Shader-Code gleichzeitig zu debuggen.Sie können jedoch zwischen beiden wechseln.
Sie können dem Überwachungsfenster Variablen und Register hinzufügen, aber Ausdrücke werden nicht unterstützt.
Berechnungsshader werden nicht unterstützt.
Dennoch stellt der HLSL-Debugger eine bessere, CPU-ähnlichere Debugleistung zur Verfügung, als andernfalls möglich wäre.
Siehe auch
Aufgaben
Exemplarische Vorgehensweise: Fehlende Objekte durch Vertexschattierung