В то же время написание шейдеров для программируемых графических акселераторов представляет собой нечто уникальное. Нужно принимать правильные решения о разделении вычислений между главным, вершинным и фрагментным процессорами. Не лишними будут хорошая математическая подготовка и знание компьютерной графики, доскональное знание работы OpenGL и понимание аппаратной базы. Зачастую приходится разрабатывать шейдер совместно с художником. Для разработчика это может послужить стимулом сделать шейдер более параметризируемым, для того чтобы его можно было использовать всесторонне.

8.6. Ссылки Существует множество книг, описывающих принципы и практические приемы разработки программного обеспечения. Две из них предназначены специально для разработки шейдеров: [4 и 2]. Некоторые рассуждения в этих книгах относятся скорее к RenderMan, но большинство принципов применимо и к разработке шейдеров на языке шейдеров OpenGL.

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

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

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

Веб-сайт ATI содержит ряд презентаций RenderMonkey. Среду для разработки и документацию можно загрузить с веб-сайта либо ATI, либо 3DIabs.

1. 3Dlabs. Веб-сайт для разработчиков (http://www.3dLabs.com/support/developer).

2. Apodaca A. A., Gritz L. Advanced RenderMan: Creating CGI for Motion Pictures. San Francisco: Morgan Kaufmann Publishers, 1999 (http://www.bmrt.org/arman/ materials.html).

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