The Shading Language distinguishes between shaders and functions . Shaders are procedures that are referred to by RenderMan Interface procedures.
Functions are procedures that can be called from within the Shading Language.
The distinction between shaders and functions is primarily a consequence of different argument passing conventions. Shaders Shaders are introduced by the keywords light , surface , volume , displacement , transformation , or imager and are followed by the name of the shader and the statements that comprise its definition. These keywords indicate the type of RenderMan Interface shader that is being defined. The RenderMan Interface uses the shader type to enforce a type match in subsequent calls to RenderMan Interface procedures. For example, it is illegal to declare a shader to be of type light and then instance it using RiSurface .