Отладка пиксельных / вершинных шейдеров Directx? - PullRequest
1 голос
/ 08 октября 2009

Я пытаюсь выяснить, как отлаживать пиксельные и вершинные шейдеры в DirectX, я пытался использовать Pix для Windows, но обнаружил, что он довольно глючный и фактически не работает. Есть ли альтернатива, которая позволила бы мне отлаживать эти шейдеры внутри моего собственного приложения?

Ответы [ 4 ]

5 голосов
/ 09 октября 2009

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

Вы можете просто скопировать цели рендеринга на процессор и сохранить их в растровом изображении, распечатать на терминале или получить доступ к нему в отладчике процессора.

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

5 голосов
/ 13 октября 2009

Просто выведите отладочную информацию в цвете. Например, вы можете вывести 255 * (нормальное + 1) как r, g, b, вы можете вывести некоторую промежуточную переменную шейдера как цвет, или вы можете проверить, находится ли она в границах шейдера, и вывести белый, если он и черный если это не так. Это обычно помогает.

5 голосов
/ 08 октября 2009

Короче, нет.

Да, пикс немного глючит, но с первого выпуска улучшил его. Убедитесь, что у вас установлена ​​последняя версия SDK!

2 голосов
/ 21 апреля 2011

PIX для Windows поставляется с DirectX SDK (с июня 2010 г. я могу проверить) и позволит вам визуально отлаживать то, что вы настраиваете в зависимости от состояния, и позволит вам шаг за шагом проходить шейдеры. Это спасатель.

...