Рис. 17.4. Модель выполнения Сд
17.6. Итоги Сейчас языки шейдеров очень популярны. Первые языки шейдеров создавались не для реального режима времени, а просто для создания фотореалистичных статических изображений. Графическое оборудование, способное поддерживать интерактивный язык шейдеров, появилось в 1990-х гг., а сейчас программируемые графические акселераторы доступны практически всем. Это стимулировало разработку нескольких коммерческих языков шейдеров: ISL, языка шейдеров OpenGL, HLSL, Cg.
При всем разнообразии языков программирования, последние три упомянутых языка очень похожи между собой. Каждый из них был создан для отображения функциональности RenderMan на основании синтаксиса С и C++. В результате все три языка получились очень похожими по синтаксису и возможностям. Самое большое их различие в том, что HLSL и Cg были созданы как надстройки над стандартными интерфейсами DirectX и OpenGL, а трансляция с исходного кода в команды этих API может происходить когда угодно. Код на языке шейдеров OpenGL преобразуется прямо в машинный код драйвером OpenGL.
Спецификации HLSL и Cg контролируются компаниями Microsoft и NVIDIA соответственно. Язык шейдеров OpenGL контролируется группой OpenGL ARB, созданной представителями различных производителей графического аппаратного обеспечения. HLSL создан для использования в среде Microsoft DirectX, а язык шейдеров OpenGL - для использования совместно с OpenGL в множестве различных сред. Cg может работать как в среде DirectX, так и в среде OpenGL.
17.7. Ссылки
Язык шейдеров RenderMan описан в спецификации [14], а его применение описано в книгах [17 и 1].
OpenGL Shader и ISL описаны в документации, разработанной в компании SGI и доступной на ее веб-сайте и в докладе [12]. [11] содержит информацию о нескольких языках шейдеров, включая RenderMan, ISL и языки шейдеров, определенные и реализованные исследователями из компании UNC, Стэнфорда и университета Ватерлоо.
Стэнфордский язык шейдеров реального времени описан в докладе [15]. Книг, содержащих описание Microsoft HLSL, в момент написания данной книги найти не удалось, но есть документация, разработанная Microsoft: http://www.micro-soft. com/directx.
Cg описан в документации, разработанной в компании NVIDIA, в книге [4] и в докладе [7].
1. 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).
2. Baldwin D. OpenGL 2.0 Shading Language White Paper, Version 1.2/3Dlabs. 2002 (http://www.3dlabs.com/support/developer/ogl2).
3. Cook R. L. Shade Trees, Computer Graphics//Proc. SIGGRAPH-84.1984. P. 223-231.
4. Fernando R., Kilgard M. The Cg Tutorial, the Definitive Guide to Programmable Real-Time Graphics. Boston, MS: Addison-Wesley, 2003.
5. Kessenich J., Baldwin D., Rost R. The OpenGL Shading Language, Version 1.051/ 3Dlabs. 2003 (http://www.3dLabs.com/support/deveLoper/ogl2).