Спецификация интерфейса RenderMan [ 1] или RISpec вкратце — это открытый API, разработанный Pixar Animation Studios для описания трехмерных сцен и превращения их в цифровые фотореалистичные изображения. Он включает в себя язык шейдеров RenderMan .
Как техническая спецификация Pixar для стандартного протокола связи (или интерфейса ) между программами моделирования и программами рендеринга, способными создавать изображения фотореалистичного качества, RISpec представляет собой концепцию, похожую на PostScript , но для описания 3D- сцен , а не 2D-макетов страниц. Таким образом, программы моделирования, которые понимают протокол RenderMan Interface, могут отправлять данные в программное обеспечение рендеринга, которое реализует RenderMan Interface, не заботясь о том, какие алгоритмы рендеринга используются последним.
Интерфейс был впервые опубликован в 1988 году (версия 3.0) и был разработан с расчетом на то, чтобы быть достаточно перспективным для охвата достижений в области технологий на протяжении значительного количества лет. Текущая версия — 3.2.1, выпущенная в ноябре 2005 года.
Что отличало RISpec от других стандартов того времени, так это то, что он позволял использовать высокоуровневые геометрические примитивы, такие как квадрики или бикубические патчи, чтобы неявно указывать геометрические примитивы, а не полагаться на приложение моделирования для генерации полигонов, аппроксимирующих эти формы явно заранее. Еще одним новшеством, представленным RISpec в то время, была спецификация языка затенения .
Язык шейдинга RenderMan позволяет описывать определения материалов поверхностей не только путем настройки небольшого набора параметров, но и произвольно сложным образом, используя язык программирования типа C для написания процедур шейдинга , обычно известных как процедурные текстуры и шейдеры . Освещение и смещения на поверхности также программируются с помощью языка шейдинга. Язык шейдинга позволяет выполнять каждый оператор в манере SIMD , но не настаивает на этом. Еще одной особенностью, которая отличает рендереры, основанные на RISpec, от многих других рендереров, является возможность выводить произвольные переменные в виде изображения: нормали поверхности, отдельные проходы освещения и почти все остальное может быть выведено из рендерера за один проход.
RenderMan имеет много общего с OpenGL (разработанным ныне несуществующей Silicon Graphics ), несмотря на то, что эти два API ориентированы на разные группы пользователей (OpenGL для аппаратного рендеринга в реальном времени и RenderMan для фотореалистичного офлайн-рендеринга). Оба API принимают форму конечного автомата на основе стека с (концептуально) немедленной отрисовкой геометрических примитивов. Можно реализовать любой API в терминах другого.
Чтобы рендерер мог называть себя «совместимым с RenderMan», он должен реализовывать как минимум следующие возможности:
Кроме того, рендерер может реализовать любую из следующих дополнительных возможностей: