RenderMan Interface Specification - RenderMan Interface Specification

RenderMan Interface Specification

What set the RISpec apart from other standards of the time was that it allowed using high-level geometric primitives, like quadrics or bicubic patches, to specify geometric primitives implicitly, rather than relying on a modeling application to generate polygons approximating these shapes explicitly beforehand. Another novelty introduced by the RISpec at the time was the specification of a shading language.

The RenderMan shading language allows material definitions of surfaces to be described not only by adjusting a small set of parameters, but in an arbitrarily complex fashion by using a C-like programming language to write shading procedures commonly known as procedural textures and shaders. Lighting, and displacements on the surface are also programmable using the shading language. The shading language allows each statement to be executed in a SIMD manner, but does not insist on it. Another feature that sets renderers based on the RISpec apart from many other renderers is the ability to output arbitrary variables as an image; surface normals, separate lighting passes and pretty much anything else can be output from the renderer in a single pass.

RenderMan has much in common with OpenGL, despite the two APIs being targeted to different sets of users (OpenGL to real-time hardware-assisted rendering and RenderMan to photorealistic off-line rendering). Both APIs take the form of a stack-based state machine with (conceptually) immediate rendering of geometric primitives. It is possible to implement either API in terms of the other.

Read more about this topic:  RenderMan Interface Specification