Говоря коротко, разработка шейдера - это такой же процесс, как и создание любой другой программы: определенное время планируется для проектирования, реализации, тестирования и документирования.
Далее приводится несколько рекомендаций для разработчиков шейдеров. Это скорее советы, чем правила: вполне могут возникнуть ситуации, в которых соблюдение таких правил не имеет никакого смысла.
8.1.1. Понимание проблемы
Это кажется очевидным, однако необходимо периодически напоминать себе, что успех разработки шейдеров во многом зависит от того, как разработчик разобрался в проблеме, прежде чем писать код.
8,1. Общие принципы
Прежде чем приступать к разработке, следует убедиться в том, что вы понимаете алгоритм рендеринга, планируемого для реализации. Если цель - сделать шейдер с отображением бугристости или шероховатости поверхности, нужно убедиться в понимании соответствующих математических формул еще до кодирования. Карандаш и бумага очень помогают все обдумать и уточнить основные подробности еще до начала написания кода.
Поскольку инструменты для разработки шейдеров пока не такие мощные, как средства разработки кода для запуска на обычных процессорах, лучше попробовать сначала реализовать модель алгоритма в программе, которая будет работать На обычном процессоре, прежде чем кодировать на языке шейдеров OpenGL. Это предоставит в распоряжение разработчика мощные средства отладки: пошаговую отладку кода, точки останова и возможность наблюдать работу кода в действии. Конечно же, скоро все это станет доступным и для работы непосредственно на графическом ускорителе.
8.1.2. Постепенное усложнение Многие шейдеры зависят от большого количества подробностей и данных, помогающих достичь ожидаемого эффекта. Разрабатывать шейдер лучше таким образом, чтобы можно было сначала разработать и протестировать самые большие и важные возможности, а после того как базовый шейдер заработает, добавлять Другие условия и наращивать сложность. Например, есть задача: разработать шейдер, который будет сочетать эффект шума с присвоением изображению значений кз нескольких текстурных карт, а потом еще создавать какие-нибудь особенные эффекты освещения. Эту задачу можно выполнить несколькими способами. Один из них - сначала создать эффекты освещения, используя простую модель шейдера. После успешного тестирования этой части шейдера можно постепенно добавлять другие эффекты, наложение текстурных карт и опять тщательно тестировать. После этого добавляется эффект шума - и опять выполняется тестирование.