Как я могу отлаживать шейдерные программы?

18

Я нахожусь в процессе отладки вершинных шейдеров GLSL и не могу избавиться от ощущения, что я делаю это неправильно.

В общем у меня есть две стратегии, чтобы восполнить отсутствие отслеживания

  • Я помещаю значения в отладочный цвет, который передается фрагментному шейдеру, а затем пытаюсь интерпретировать цвета.
  • Я изменяю код вершинного шейдера и вижу, что происходит.

Я думаю, что в идеале я мог бы восполнить отсутствие трассировки, записав значения в текстуру, прочитав текстуру из графического процессора и напечатав значения, вставленные в текстуру.

Я предполагаю, что могут быть и лучшие способы. Какие-либо предложения?

Джонатан Фишофф
источник

Ответы:

3

Мой друг использовал для этого glslDevil и сказал, что все в порядке.

Если вы не привязаны к GLSL, у Microsoft есть невероятный инструмент для DirectX под названием PIX , но я не думаю, что есть что-то эквивалентное для OpenGL.


источник
Я скачал glslDevil, но не могу заставить большинство функций работать. Трассировка работает и пошагово проходит через шейдеры, но я не вижу значений переменных.
Джонатан Фишофф
2

У nVidia есть потрясающий шейдерный отладчик. Вы можете найти его и его характеристики ЗДЕСЬ

Обновление 2016: есть также плагин для Visual Studio, который, скорее всего, является их новой попыткой помочь разработчикам, здесь: https://developer.nvidia.com/nvidia-nsight-visual-studio-edition

гвоздильщик
источник
опечатка: его характеристики
o0 '.
Спасибо. =) Я понимаю это правильно в 70% случаев. Я обвиняю DainBramage.
Нейлер
нет поддержки GLSL :(, но похоже, что я могу автоматически конвертировать cg-шейдеры в glsl, возможно, стоит попробовать.
Джонатан Фишофф
Вы правы в этом, но я думаю, что преимущества перевешивают недостатки. Кроме того, FX composer - отличное приложение.
Nailer
Неработающая