The RenderMan Interface - Paul Bourke
The RenderMan Interface - Paul Bourke
The RenderMan Interface - Paul Bourke
- 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