Похожим способом можно заносить в gl_F ragColог отладочную информацию. Допустим, в шейдере есть математическая функция, значение которой должно принадлежать диапазону [0,1] со средним значением 0,5, можно занести в gl _FragCol or зеленый цвет, если значение функции меньше нуля, красный цвет, если значение от 0 до 0,5, синий, если значение от 0,5 до 1,0, и белый, если значение больше 1,0. Такой способ отладки может быстро показать, что же не так.
8.3.3. Простые геометрические фигуры
Для отладки вычислений с текстурами можно выполнить рендеринг простого большого прямоугольника с идентичными матрицами модели, вида и проекции и посмотреть, что получится. Применяя в виде текстуры простое изображение, например цветные прямоугольники или плавный переход цвета, можно легко определить, что идет не так в операциях текстурирования.
8.4. Средства разработки шейдеров
В будущем появятся гораздо более мощные средства разработки шейдеров, чем существуют сейчас. В этом разделе описаны средства, доступные во время написания этой книги.
8.4.1. RenderMonkey
С тех пор как появились программируемые графические процессоры, стало понятно, что, кроме разработки собственно кода для шейдеров, следует обращать внимание и на другие моменты. Шейдеры могут быть настраиваемыми до такой степени, что мохуг работать так, как от них ожидается, только в простых случаях.
Исходный код шейдера, текстуры, геометрические фигуры, начальные значения uniform-переменных - все это важные составные части качественного шейдера. Чтобы помочь разработчикам преуспеть, нужно обеспечить их средствами для распознавания, модификации и поддержки всех основных элементов шейдера.
Еще один фактор, который нужно учитывать при разработке шейдеров, - это то, что обычно код шейдера и код приложения пишут разные разработчики. Зачастую дизайн текстур делает вообще художник, и он же принимает участие иди даже контролирует процесс разработки шейдера. Сотрудничество художника и разработчика игровых приложений является существенным влияющим фактором, и это тоже должно учитываться при создании инструментов разработки.
Комплексная среда для разработки (IDE) позволяет разработчикам и художникам разрабатывать шейдеры и экспериментировать с ними вне приложения. Это уменьшает сложность задач, стоящих перед разработчиком, и стимулирует быструю разработку интерфейса и процедуры экспериментирования. Законченные шейдеры - интеллектуальная собственность, и ее сопровождение, кросс-платформенность и легкость внедрения на различных платформах очень важны для получения компанией-разработчиком максимальной выгоды. IDE должно работать со всеми элементами законченного шейдера: управлять ими, совместно использовать, инкапсулировать и экспортировать.
Самая первая среда для разработки - RenderMonkey - была выпущена ATI в 2002 г. Самая первая версия RenderMonkey поддерживала разработку вершинных и пиксельных шейдеров для DirectX. Однако RenderMonkey был спроектирован так, что его можно легко расширять и этим обеспечить поддержку других шейдерных языков. В начале 2004 г. компании ATI и 3Dlabs совместно разработали версию RenderMonkey, которая поддерживала высокоуровневую разработку шейдеров в OpenGL на языке шейдеров OpenGL в дополнение к языку шейдеров DirectX. Бесплатную версию RenderMonkey IDE можно найти на веб-сайтах этих компаний: http://www.3dlabs.com и http://www.ati.com.