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. Эти фрагменты кода в дальнейшем могут быть использованы как отправные точки для создания чего-то большего и лучшего.

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

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

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

gl_Posi tion = ftransform():

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


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