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