Разработка шейдера

8.2.5. Представление сложных функций в виде текстур

Так как обработка фрагментов уже программ ируема, область применения текстур для рисования изображения значительно расширена. Можно сохранять в виде текстур сложные функции, а затем вместо громоздких вычислений просто проводить поиск из фрагментного шейдера. Пример такого использования текстур приведен в главе 12, где функция шума представлена в виде ЗО-текстуры. Этот подход дает преимущество при использовании специализированного высокопроизводительного аппаратного обеспечения, обеспечивающего доступ к текстурам, а также аппаратного обеспечения, которое выполняет интерполяцию между значениями, хранящимися в виде текстур.

8.2.6. Анализ информационного журнала

OpenGL может обеспечивать обратную связь, чтобы сообщать о происходящем, через информационные журналы шейдериого и программного объектов (см. раздел 7.5). В процессе разработки шейдера совершенно необходимо просматривать информационные журналы компиляции и компоновки, содержащие сообщения о наличии ошибок, следует также обращать внимание и на предупреждения и другие замечания. Эти журналы - основной способ OpenGL сообщить разработчику о производительности, ограничении ресурсов и т. п.

8.3. Отладка шейдера Инструментальные средства для разработки шейдеров еще очень несовершенны, и отладка шейдеров - трудная задача. Вот несколько практических советов, которые могут оказаться полезными при отладке шейдеров.

8.3.1. Анализ выходных данных вершинного шейдера Чтобы узнать, работает ли код вершинного шейдера так, как ожидалось, можно проверять промежуточные значения для выявления неожиданных результатов. Если таковые будут обнаружены, можно изменить одно из выходных значений шейдера и посмотреть, как это повлияет на результат. Например, если разработчик ожидает, что значение foo не превысит 5,0, можно задавать цвет фрагмента черным, розовым или ярко-зеленым при превышении переменной foo этого значения. Если это недостаточно очевидно и преобразованные однородные координаты уже вычислены, можно попробовать сделать что-то вроде следующего:


⇐ Предыдущая| |Следующая ⇒