Comment déboguer des programmes de shader?


18

Je suis en train de déboguer les vertex shaders GLSL et je ne peux pas me débarrasser du sentiment que je le fais mal.

En général, j'ai deux stratégies pour compenser le manque de traçage

  • Je fourre les valeurs dans une couleur de débogage variant que je passe au fragment shader puis essaie d'interpréter les couleurs.
  • Je change le code du vertex shader et vois ce qui se passe.

Je pense que, idéalement, je pourrais compenser le manque de traçage en écrivant des valeurs dans une texture, en lisant la texture à partir du GPU et en imprimant les valeurs insérées dans la texture.

Je suppose qu'il pourrait y avoir de bien meilleures façons. Aucune suggestion?

Réponses:


3

Un de mes amis a utilisé glslDevil pour cela, et a dit que ça allait.

Si vous n'êtes pas lié à GLSL, Microsoft a un outil incroyable pour DirectX appelé PIX , mais je ne pense pas qu'il y ait quelque chose d'équivalent pour OpenGL.


J'ai téléchargé glslDevil mais je n'arrive pas à faire fonctionner la plupart des fonctionnalités. Le traçage fonctionne et la progression dans les shaders, mais je ne vois pas les valeurs des variables.
Jonathan Fischoff

2

nVidia a un débogueur de shaders génial. Vous pouvez le trouver, et ses spécifications, ICI

Mise à jour 2016: Il existe également un plugin Visual Studio, qui est probablement leur nouvel effort pour aider les développeurs, ici: https://developer.nvidia.com/nvidia-nsight-visual-studio-edition


faute de frappe: ses spécifications
o0 '.

THX. =) Je reçois ces bons 70% du temps. Je blâme DainBramage.
Nailer

pas de support GLSL cependant :(, mais il semble que je puisse convertir automatiquement les shaders cg en glsl, pourrait essayer.
Jonathan Fischoff

Vous avez raison, mais je pense que les avantages l'emportent sur les inconvénients. En outre, FX composer est une application assez astucieuse.
Nailer

Lien brisé ....
UpTheCreek
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.