RenderMan Shading Language


Renderman Shading Language is a component of the RenderMan Interface Specification, and is used to define shaders. The language syntax is C-like.
A shader written in RSL can be used without changes on any RenderMan-compliant renderer, such as Pixar's PhotoRealistic RenderMan, DNA Research's 3Delight, Sitexgraphics' Air or an open source solution such as Pixie or Aqsis.
RenderMan Shading Language defines standalone functions and five types of shaders: surface, light, volume, imager and displacement shaders.
An example of a surface shader that defines a metal surface is:

surface metal

Shaders do the work by reading and writing special variables such as Cs, N, and Ci.
The arguments to the shaders are global parameters that are attached to objects of the model. Shaders have no return values, but functions can be defined which take arguments and return a value. For example, the following function computes vector length using the dot product operator ".":

float length