Wie kann ich Shader-Programme debuggen?


18

Ich bin gerade dabei, GLSL Vertex-Shader zu debuggen und kann das Gefühl nicht loswerden, dass ich es falsch mache.

Im Allgemeinen habe ich zwei Strategien, um die fehlende Rückverfolgung auszugleichen

  • Ich füge Werte in eine Debug-Farbe ein, die von mir an den Fragment-Shader übergeben wird, und versuche dann, die Farben zu interpretieren.
  • Ich ändere den Vertex-Shader-Code und sehe, was passiert.

Ich denke, dass ich den Mangel an Nachverfolgung im Idealfall ausgleichen könnte, indem ich irgendwie Werte in eine Textur schreibe, die Textur von der GPU lese und die in die Textur gefüllten Werte drucke.

Ich vermute, dass es viel bessere Wege geben könnte. Irgendwelche Vorschläge?

Antworten:


3

Ein Freund von mir hat glslDevil dafür benutzt und gesagt, es sei in Ordnung.

Wenn Sie nicht an GLSL gebunden sind, hat Microsoft ein unglaubliches Tool für DirectX namens PIX , aber ich glaube nicht, dass es für OpenGL etwas Äquivalentes gibt.


Ich habe glslDevil heruntergeladen, kann aber die meisten Funktionen nicht zum Laufen bringen. Die Ablaufverfolgung funktioniert und das Durchlaufen von Shadern, aber ich kann die Werte von Variablen nicht sehen.
Jonathan Fischoff

2

nVidia hat einen fantastischen Shader-Debugger. Sie finden es und seine technischen Daten HIER

Update 2016: Es gibt auch ein Visual Studio-Plug-In, das wahrscheinlich ihre neueren Bemühungen ist, Entwicklern zu helfen, hier: https://developer.nvidia.com/nvidia-nsight-visual-studio-edition


Tippfehler: seine Spezifikationen
o0' .

Danke. =) Ich bekomme die 70% der Zeit richtig. Ich beschuldige DainBramage.
Nagler

Keine GLSL-Unterstützung :(, aber es sieht so aus, als könnte ich CG-Shader automatisch in GLSL konvertieren.
Jonathan Fischoff

Sie haben Recht, aber ich denke, die Vorteile überwiegen die Nachteile. Außerdem ist FX Composer eine ziemlich raffinierte App.
Nagler

Defekter Link ....
UpTheCreek
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.