RIB -очень хорошо продуманный расширяемый формат. Это сыграло большую роль в том, что, несмотря на свой приличный возраст, Renderman все еще опирается на RIB, время от времени добавляя новые возможности и команды - благодаря этому и сейчас, через почти что 30 лет со времени изобретения формата, мы можем использовать файлы данного формата с самыми современными версиями новых рендереров, задействуя новые возможности и технологии, о которых создатели стандарта не могли даже мечтать.
Вторая составная часть стандарта Renderman - язык Renderman Shading Language или, в приблизительном переводе, «язык закраски Renderman». Но не в наших привычках пользоваться настолько корявым переводом, и потому в дальнейшем будем использовать общепринятую аббревиатуру: SL.
Язык SL представляет из себя некоторое подмножество языка программирования С, которое позволяет нам описывать при помощи алгоритмов практически любые визуальные свойства материалов, присвоенных вашей геометрии. Это значит, что мы не ограничены какими-то встроенными в программу моделями освещенности и стандартным набором процедурных текстур, как это сделано в очень многих рендерерах - в нашем распоряжении находится вся мощь современного языка программирования, специально адаптированного для этой задачи.
Дабы избежать короткого замыкания в мозгах неискушенных пользователей MAYA, подойдем к вопросу с другой стороны. В MAYA ведь есть шейдеры? В чем же их отличие от шейдеров в Renderman?
Ответим на первый вопрос, а заодно определимся с терминологией. Итак, шейдер - это некая программа на языке программирования, которая описывает визуальные свойства того или иного объекта (например, поверхности модели). В данный момент нам не так важно, на каком языке написан шейдер и каким образом он вызывается - главное, что мы знаем, как это сделано и как работает.
Так вот, с этой точки зрения майские материалы шейдерами не являются. Вы можете скомбинировать ноды в HyperShade в нужном порядке, получив тот или иной материал - но шейдера в результате вы не получите.
Очень часто в литературе и в устном общении встречается словосочетание “процедурная текстура’’. Исходя из вышесказанного, и шейдеры и материалы - это процедурные текстураы, в отличие от текстур непроцедурных, или говоря языком родных осин - «картинок».
Вообще говоря, идея процедурного описания визуальных и геометрических свойств поверхности не была новой даже для 1987 года, когда появился стандарт Renderman. Идея эта является простой экстраполяцией того факта, что при программировании на низком уровне мы ВСЕ РАВНО описываем в виде неких алгоритмов и геометрию и визуальные свойства объектов (упомяну здесь ключевое слово для программистов: OpenGL). Теперь же, когда мы поднялись на более высокий уровень и для рендеринга картинки уже не нужно писать больших и сложных программ (а достаточно нажимать большие кнопки с красивыми иконками), оказалось, что процедурное описание закраски все еще остается полезным, поскольку представляет собой наиболее гибкий способ такого описания. Процедурные текстуры обладают и другими неоспоримыми достоинствами: например, малым (по сравнению с обычными) размером файлов; отсутствием зависимости от разрешения получаемой картинки. Но несмотря на все преимущества этого подхода, до появления Renderman написание шейдеров носило в основном экспериментальный характер; именно Renderman сделал шейдеры полноценным индустриальным стандартом; язык написания шейдеров SL