Jak mogę debugować programy do cieniowania?

18

Debuguję shadery wierzchołków GLSL i nie mogę pozbyć się wrażenia, że ​​robię to źle.

Ogólnie rzecz biorąc, mam dwie strategie, aby zrekompensować brak śledzenia

  • Wpisuję wartości w kolor debugowania różniący się, który przekazuję do modułu cieniującego fragmenty, a następnie próbuję interpretować kolory.
  • Zmieniam kod modułu cieniującego wierzchołki i widzę, co się stanie.

Myślę, że idealnie nadrobiłbym brak śledzenia, pisząc wartości do tekstury, czytając teksturę z GPU i drukując wartości wypchane w teksturze.

Domyślam się, że mogą istnieć o wiele lepsze sposoby. Jakieś sugestie?

Jonathan Fischoff
źródło

Odpowiedzi:

3

Mój przyjaciel użył do tego glslDevil i powiedział, że to w porządku.

Jeśli nie jesteś związany z GLSL, Microsoft ma niesamowite narzędzie dla DirectX o nazwie PIX , ale nie sądzę, że jest coś równoważnego z OpenGL.


źródło
Pobrałem glslDevil, ale nie mogę uruchomić większości funkcji. Śledzenie działa i przechodzi przez shadery, ale nie widzę wartości zmiennych.
Jonathan Fischoff,
2

nVidia ma niesamowity debugger shaderów. Możesz go znaleźć i jego specyfikacje TUTAJ

Aktualizacja 2016: Dostępna jest również wtyczka Visual Studio, która najprawdopodobniej jest ich nowym wysiłkiem w zakresie pomocy programistom, tutaj: https://developer.nvidia.com/nvidia-nsight-visual-studio-edition

Mistrz
źródło
literówka: jego specyfikacje
o0 '.
dzięki. =) Mam rację w 70% przypadków. Obwiniam DainBramage.
Nailer
nie obsługuje jednak GLSL :(, ale wygląda na to, że mogę automatycznie przekonwertować shadery cg na glsl, może spróbować
Jonathan Fischoff
Masz rację, ale myślę, że zalety przeważają nad wadami. Poza tym kompozytor efektów jest całkiem sprytną aplikacją.
Nailer
Uszkodzony link ....
UpTheCreek