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

Веб-сайт ATI содержит ряд презентаций Render Monkey. Среду для разработки и документацию можно загрузить е веб-сайта либо 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).

3. ATI. Веб-сайт для разработчиков (http://www.ati.com/na/pages/resource_centre/ dev„rel/devrel.html).

4. Texturing and Modeling: A Procedural Approach. 3rd ed./D. S. Ebert, J. Hart, B. Mark, at al. San Francisco: Morgan Kaufmann Publishers, 2002 (http://www.tex-turingandmodeling.com).

5. NVIDIA. Веб-сайт для разработчиков (http://deveLoper.nvidia.com).

Традиционные шейдеры

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

В этой главе показано, как код шейдера OpcnGL может имитировать стандартную функциональность OpenGL для обработки вершин и фрагментов. Цель кода, приведенного здесь, - дать точное представление о стандартной функциональности OpenGL 1.5. Примеры кода содержат ссылки на всевозможные состояния OpenGL с помощью встроенных переменных. В собственных шейдерах можно все это передавать через определенные разработчиком uniform-переменные, а не считывать состояние OpenGL. Делая это, читатель будет готов отказаться от использования машины состояний OpenGL вообще с целью расширения шейдеров и поиска новых возможностей кода.

.1. Преобразования

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

// преобразование вершинных координат в координаты пространства отсечения gl Positiort = gl_ModelViewProjectionMatrix * gl_Vertex: а второй:


⇐ вернуться назад | | далее ⇒