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.
onto a surface. Texture maps are used in many different ways: direct image mapping<br />
to change the surface’s color, transparency mapping, bump mapping for changing<br />
its normal vector, displacement mapping for modifying position, environment or reflection<br />
mapping for efficiently calculating global illumination, and shadow maps for<br />
simulating the presence of shadows.<br />
<strong>The</strong> <strong>RenderMan</strong> <strong>Interface</strong> is designed so that the information needed to specify a photorealistic<br />
image can be passed to different rendering programs compactly and efficiently. <strong>The</strong><br />
interface itself is designed to drive different hardware devices, software implementations<br />
and rendering algorithms. Many types of rendering systems are accommodated by this interface,<br />
including z-buffer-based, scanline-based, ray tracing, terrain rendering, molecule<br />
or sphere rendering and the Reyes rendering architecture. In order to achieve this, the<br />
interface does not specify how a picture is rendered, but instead specifies what picture is<br />
desired. <strong>The</strong> interface is designed to be used by both batch-oriented and real-time interactive<br />
rendering systems. Real-time rendering is accommodated by ensuring that all the<br />
information needed to draw a particular geometric primitive is available when the primitive<br />
is defined. Both batch and real-time rendering is accommodated by making limited<br />
use of inquiry functions and call-backs.<br />
<strong>The</strong> <strong>RenderMan</strong> <strong>Interface</strong> is meant to be complete, but minimal, in its transfer of scene<br />
descriptions from modeling programs to rendering programs. <strong>The</strong> interface usually provides<br />
only a single way to communicate a parameter; it is expected that the modeling front<br />
end will provide other convenient variations. An example is color coordinate systems –<br />
the <strong>RenderMan</strong> <strong>Interface</strong> supports multiple-component color models because a rendering<br />
program intrinsically computes with an n-component color model. However, the Render-<br />
Man <strong>Interface</strong> does not support all color coordinate systems because there are so many and<br />
because they must normally be immediately converted to the color representation used by<br />
the rendering program. Another example is geometric primitives – the primitives defined<br />
by the <strong>RenderMan</strong> <strong>Interface</strong> are considered to be rendering primitives, not modeling primitives.<br />
<strong>The</strong> primitives were chosen either because special graphics algorithms or hardware<br />
is available to draw those primitives, or because they allow for a compact representation<br />
of a large database. <strong>The</strong> task of converting higher-level modeling primitives to rendering<br />
primitives must be done by the modeling program.<br />
<strong>The</strong> <strong>RenderMan</strong> <strong>Interface</strong> is not designed to be a complete three-dimensional interactive<br />
programming environment. Such an environment would include many capabilities not<br />
addressed in this interface. <strong>The</strong>se include: 1) screen space or two-dimensional primitives<br />
such as annotation text, markers, and 2-D lines and curves, and 2) user-interface issues<br />
such as window systems, input devices, events, selecting, highlighting, and incremental<br />
redisplay.<br />
<strong>The</strong> <strong>RenderMan</strong> <strong>Interface</strong> is a collection of procedures to transfer the description of a scene<br />
to the rendering program. <strong>The</strong>se procedures are described in Part I. A rendering program<br />
takes this input and produces an image. This image can be immediately displayed on a<br />
given display device or saved in an image file. <strong>The</strong> output image may contain color as well<br />
as coverage and depth information for postprocessing. Image files are also used to input<br />
texture maps. This document does not specify a ”standard format” for image files.<br />
<strong>The</strong> <strong>RenderMan</strong> Shading Language is a programming language for extending the predefined<br />
functionality of the <strong>RenderMan</strong> <strong>Interface</strong>. New materials and light sources can be<br />
3