26.01.2015 Views

The RenderMan Interface - Paul Bourke

The RenderMan Interface - Paul Bourke

The RenderMan Interface - Paul Bourke

SHOW MORE
SHOW LESS
  • No tags were found...

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

created using this language. This language is also used to specify volumetric attenuation,<br />

displacements, and simple image processing functions. All required shading functionality<br />

is also expressed in this language. A shading language is an essential part of a high-quality<br />

rendering program. No single material lighting equation can ever hope to model the complexity<br />

of all possible material models. <strong>The</strong> <strong>RenderMan</strong> Shading Language is described in<br />

Part II of this document.<br />

1.1 Features and Capabilities<br />

<strong>The</strong> <strong>RenderMan</strong> <strong>Interface</strong> was designed in a top-down fashion by asking what information<br />

is needed to specify a scene in enough detail so that a photorealistic image can be created.<br />

Photorealistic image synthesis is quite challenging and many rendering programs cannot<br />

implement all of the features provided by the <strong>RenderMan</strong> <strong>Interface</strong>. This section describes<br />

which features are required and which are considered advanced, and therefore optional,<br />

capabilities. <strong>The</strong> set of required features is extensive in order that application writers and<br />

end-users may reasonably expect basic compatibility between, and a high level of performance<br />

from, all implementations of the <strong>RenderMan</strong> <strong>Interface</strong>. Advanced capabilities are<br />

optional only in situations where it is reasonable to expect that some rendering programs<br />

are algorithmically incapable of supporting that capability, or where the capability is so<br />

advanced that it is reasonable to expect that most rendering implementations will not be<br />

able to provide it.<br />

1.1.1 Required features<br />

All rendering programs which implement the <strong>RenderMan</strong> <strong>Interface</strong> must implement the<br />

interface as specified in this document. Implementations which are provided as a linkable<br />

C library must provide entry points for all of the subroutines and functions, accepting<br />

the parameters as described in this specification. All of the predefined types, variables<br />

and constants (including the entire set of constant RtToken variables for the predefined<br />

string arguments to the various <strong>RenderMan</strong> <strong>Interface</strong> subroutines) must be provided. <strong>The</strong><br />

C header file ri.h (see Appendix C, Language Binding Details) describes these data items.<br />

Implementations which are provided as prelinked standalone applications must accept as<br />

input the complete <strong>RenderMan</strong> <strong>Interface</strong> Bytestream (RIB). Such implementations may also<br />

provide a complete <strong>RenderMan</strong> <strong>Interface</strong> library as above, which contains subroutine stubs<br />

whose only function is to generate RIB.<br />

All rendering programs which implement the <strong>RenderMan</strong> <strong>Interface</strong> must:<br />

• provide the complete hierarchical graphics state, including the attribute and transformation<br />

stacks and the active light list.<br />

• perform orthographic and perspective viewing transformations.<br />

• perform depth-based hidden-surface elimination.<br />

• perform pixel filtering and antialiasing.<br />

4

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!