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


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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.