Язык шейдеров RenderMan
Язык шейдинга Renderman (сокращенно RSL) является компонентом спецификации интерфейса RenderMan и используется для определения шейдеров . Синтаксис языка C-подобен .
Шейдер, написанный на RSL, можно использовать без изменений в любом RenderMan-совместимом рендерере, таком как PhotoRealistic RenderMan от DNA Research от Pixar, 3Delight , Air от Sitexgraphics или в решении с открытым исходным кодом, таком как Pixie или Aqsis .
Язык шейдинга RenderMan определяет автономные функции и пять типов шейдеров: шейдеры поверхности, света, объема, изображения и шейдеры смещения.
Пример шейдера поверхности, определяющего металлическую поверхность:
поверхность металла ( float Ka = 1 ; float Ks = 1 ; float шероховатость = 0,1 ;) { normal Nf = faceforward ( normalize ( N ), I ); вектор V = - нормализовать ( I ); Ой = Ос ; Ci = Os * Cs * ( Ka * ambient () + Ks * specular ( Nf , V , шероховатость )); }
Шейдеры выражают свою работу, считывая и записывая специальные переменные, такие как Cs (цвет поверхности), N (нормаль в данной точке) и Ci (конечный цвет поверхности).Аргументами шейдеров являются глобальные параметры, которые прикрепляются к объектам модели (поэтому один шейдер металла можно использовать для разных металлов и так далее). Шейдеры не имеют возвращаемых значений, но можно определить функции, которые принимают аргументы и возвращают значение. Например, следующая функция вычисляет длину вектора с помощью оператора скалярного произведения «.»:
плавающей точки длина ( вектор v ) { return sqrt ( v . v ); /* . является скалярным произведением */ }
Дальнейшее чтение
[ редактировать ]- Апстил, Стив (1990). Компаньон RenderMan: руководство программиста по реалистичной компьютерной графике . Ридинг, Массачусетс: Аддисон-Уэсли. ISBN 0-201-50868-0 .
- Аподака, Энтони ; Гриц, Ларри (1999). Advanced RenderMan: создание CGI для кинофильмов . Сан-Франциско: Морган Кауфманн. ISBN 1-55860-618-1 .
- Кортес, Руди; Рагхавачари, Саты (2008). Руководство по языку шейдеров RenderMan . Бостон, Массачусетс: Технология курса Томсона. ISBN 1-59863-286-8 .