stringtranslate.com

Язык шейдеров RenderMan

Renderman Shading Language (сокращенно RSL) является компонентом спецификации интерфейса RenderMan и используется для определения шейдеров . Синтаксис языка — C-подобный .

Шейдер, написанный на RSL, можно использовать без изменений в любом рендерере, совместимом с RenderMan, например, PhotoRealistic RenderMan от Pixar, 3Delight от DNA Research , Air от Sitexgraphics или в решении с открытым исходным кодом, например, Pixie или Aqsis .

Язык шейдеров RenderMan определяет автономные функции и пять типов шейдеров: поверхностные, световые, объемные, шейдеры изображений и шейдеры смещения.

Пример поверхностного шейдера, определяющего металлическую поверхность:

поверхность металла ( float Ka = 1 ; float Ks = 1 ; float шероховатость = 0,1 ;) { нормаль Nf = лицом вперед ( нормализовать ( N ), I ); вектор V = - нормализовать ( I ); Oi = Os ; Ci = Os * Cs * ( Ka * окружающий () + Ks * зеркальный ( Nf , V , шероховатость )); }                                            

Шейдеры выражают свою работу посредством чтения и записи специальных переменных, таких как Cs (цвет поверхности), N (нормаль в заданной точке) и Ci (конечный цвет поверхности). Аргументы шейдеров — это глобальные параметры, которые прикреплены к объектам модели (поэтому один шейдер металла может использоваться для разных металлов и т. д.). Шейдеры не имеют возвращаемых значений, но можно определить функции, которые принимают аргументы и возвращают значение. Например, следующая функция вычисляет длину вектора с помощью оператора скалярного произведения ".":

float length ( vector v ) { return sqrt ( v . v ); /* . — скалярное произведение */ }          

Дальнейшее чтение

Внешние ссылки