Real-Time Shading

Chapter 12: RenderMan

RenderMan was designed by Pixar as an interface between modeling programs and a renderer. Pixar s implementation is PhotoRealistic RenderMan renderer, which runs on a variety of UNIX platforms. Other RenderMan renderers have been written. One notable example is BMRT by Larry Gritz, which is a ray tracer instead of a scan-line renderer. It is a testament to the design of the RenderMan interface that it has not only been possible to create new RenderMan renderers, but ones that operate in a completely different way than the original REYES rendering algorithm [34, 61].

Despite all these implementations, at the time of this writing RenderMan still cannot be evaluated in real time. Nonetheless, it is still worth starting our comparisons with an off-line shading language like RenderMan s. This provides a good baseline for judging the current state of real-time shading.

The RenderMan shading language is quite high-level. It should be no surprise that it closely resembles the C programming language, as it was modeled after C. It copies C s use of {} braces for grouping statements, semicolons to end them, if and f or control constructs, and other details. RenderMan does add several new language features to make writing shaders easier. A simple RenderMan shader illustrating some of these features is shown in Figure 12.1.

surface marble(){    float sc, f = ycomp(P/2);    for(sc=1; sc<=64; sc*=2)        f += abs(2*noise(P*sc/2)-l)/sc;    0i=0s;    Ci=0i *...

UNLIMITED FREE
ACCESS
TO THE WORLD'S BEST IDEAS

SUBMIT
Already a GlobalSpec user? Log in.

This is embarrasing...

An error occurred while processing the form. Please try again in a few minutes.

Customize Your GlobalSpec Experience

Category: Patch Panels
Finish!
Privacy Policy

This is embarrasing...

An error occurred while processing the form. Please try again in a few minutes.