Como depurar programas shader?

18

Estou no processo de depuração de shaders de vértice GLSL e não consigo abalar a sensação de estar fazendo errado.

Em geral, tenho duas estratégias para compensar a falta de rastreamento

  • Coloco valores em uma cor de depuração variando que passo para o sombreador de fragmento e depois tento interpretar as cores.
  • Eu mudo o código do vertex shader e vejo o que acontece.

Estou pensando que, idealmente, eu poderia compensar a falta de rastreamento escrevendo valores em uma textura de alguma forma, lendo a textura da GPU e imprimindo os valores inseridos na textura.

Meu palpite é que pode haver maneiras muito melhores. Alguma sugestão?

Jonathan Fischoff
fonte

Respostas:

3

Um amigo meu usou o glslDevil para isso e disse que estava tudo bem.

Se você não está ligado ao GLSL, a Microsoft possui uma ferramenta incrível para o DirectX chamada PIX , mas não acho que exista algo equivalente ao OpenGL.


fonte
Fiz o download do glslDevil, mas não consigo fazer com que a maioria dos recursos funcione. O rastreamento funciona e o passo a passo pelos shaders, mas não consigo ver os valores das variáveis.
Jonathan Fischoff
2

A nVidia possui um incrível depurador de shader. Você pode encontrá-lo, e suas especificações, AQUI

Atualização 2016: Há também um plug-in do Visual Studio, que provavelmente é seu esforço mais recente para ajudar os desenvolvedores, aqui: https://developer.nvidia.com/nvidia-nsight-visual-studio-edition

Nailer
fonte
erro de digitação: suas especificações
o0 '.
valeu. =) Eu entendi direito 70% das vezes. Eu culpo DainBramage.
Nailer
nenhum suporte GLSL embora :(, mas parece que eu posso converter shaders cg para GLSL automaticamente, pode dar um que tente.
Jonathan Fischoff
Você está certo sobre isso, mas acho que as vantagens superam as desvantagens. Além disso, o compositor FX é um aplicativo bastante bacana.
Nailer
Link quebrado ...
UpTheCreek 13/01