Самая интересная часть RenderMan называется языком шейдеров RenderMan. Этот язык позволяет описать полностью произвольные шейдеры, которые можно передавать для рендеринга через интерфейс RenderMan. Этот язык также основан на языке программирования С, поэтому немного похож и на язык шейдеров OpenGL. В целом, интерфейс RenderMan напоминает OpenGL, а язык шейдеров RenderMan - язык шейдеров OpenGL. И интерфейс RenderMan, и OpenGL позволяют определять характеристики сцены (параметры обзора, примитивы для рендеринга и т. д.). И в одном и в другом можно вычислять цвет, координаты, прозрачность и другие характеристики точек сцены.
Одно из основных различий между языками OpenGL и RenderMan - в степени абстракции. Язык шейдеров OpenGL спроектирован так, чтобы максимально просто «вписаться» в современное графическое оборудование, поэтому в нем есть два вида шейдеров: вершинные и фрагментные. Язык шейдеров RenderMan служит, прежде всего, для создания высококачественных изображений, поэтому в нем целых пять видов шейдеров: освещения, сдвига, поверхности, объема и работы с изображением. Типы шейдеров RenderMan идеально подходят для создания
17.2. Язык RenderMan
удачных реализаций рендеринга, но не очень хорошо совмещаются с современным оборудованием, спроектированным для поддержки интерактивного рендеринга на OpenGL. В результате практически все реализации RenderMan являются программными, а не аппаратными; однако попытки ускорить работу RenderMan предпринимались [12]. Язык шейдеров OpenGL с самого начала проектировался для выполнения на графическом оборудовании.
Рис. 17.1. Модель работы языка RenderMan
В этих двух языках различаются и типы данных. RenderMan поддерживает типы, близкие к предметной области"opengl2_367.html">⇐ Предыдущая| |Следующая ⇒