This book explores the theory and the practice of using RenderMan to create computer graphics imagery (CGI) for use in motion pictures and animation. We have written many papers and taught many courses on the use of RenderMan, and this is the most advanced material we have presented yet. Readers are expected to understand the basics of using RenderMan. In this book, we will explore more advanced details on how to define scenes, discuss how to write truly excellent shaders, and will spend quite a bit of time revealing the tricks that are used in real motion picture production to create computer graphics animation and CGI special visual effects. Most importantly, we will explore topics that are beyond the scope of the only previously available reference book The RenderMan Companion.
Let us admit up front the primary bias of the authors of this book. We are the designers, implementers, and users of two specific RenderMan-compliant render-ers: Pixar's PhotoRealistic RenderMan (referred to in this text as PRMan) and Blue Moon Rendering Tools' rendrib (referred to in this text as BMRT). These render-ers are not the only Tenderers that have ever attempted to support the ambitious RenderMan Interface Specification, but they are the most well known and the most widely used. In fact, PRMan is so generally considered the "reference platform" for RenderMan that the word "RenderMan" is often used synonymously with PRMan. We recognize that by the time this book is in print, there may be a number of other RenderMan-compliant Tenderers available to our gentle readers. We believe that the vast majority of material in this book should apply equally well to any modern and fully RenderMan-compliant renderer—and in large measure to high-quality render-ers that are not RenderMan, as well.
This book is designed primarily for beginning- to intermediate-level CG technical directors in the special effects industry, or those with equivalent backgrounds (such as graduate or advanced undergraduate students, or others with a strong interest in the technical aspects of computer graphics and animation). It is not assumed that you have years of production experience, or a Ph.D., or any other such exclusive prerequisites.
Nevertheless, to make this book possible, we are forced to assume that the reader brings to the table substantial background knowledge. Specifically, we assume that
• You have some background in programming, particularly in С (or a related pro
gramming language). You should be familiar with concepts such as data types
and variables, conditionals and loops, subroutines and functions, parameter
passing, and the basic mechanism of compiling programs. We will frequently ex
plain concepts by merely pointing out the differences between Shading Language
• You have a firm grasp of advanced high school math, including trigonometry,
vector algebra, elementary functions, and analytic geometry. If you are comfort
able with calculus and differential geometry, you'll be even more at home with
• You are familar with the fundamental concepts of computer graphics. At the
very least, the following phrases should be meaningful to you: shading and
illumination models, texture mapping, geometric primitives (including polygons,
patches, and NURBS), and image compositing. If you have extensively used any
modeling package, animation package, or Tenderer, you are probably up to speed
on the basic concepts of computer graphics.
In addition, there are a variety of other prerequisites that, though not strictly required, will certainly make this book much more useful to you:
• The value of some familiarity with physics, particularly with optics and material
properties, cannot be overstated. A little intuition about how light behaves in the
real world can be immensely helpful in understanding how Tenderers work.
• We tried not to leave anything out, but this book is more a discussion of ad
vanced topics than a tutorial or a proper reference. Therefore we do recommend
that you have The RenderMan Companion (Upstill, 1990) and the official Render-
Man Interface Specification (Pixar, 1989) handy. (The RI Specification is available
online at www. pi xar. com.)
• It would certainly help if you had one of the several RenderMan-compliant ren-
derers so that you can try out the examples. If you do not have PRMan, we
partisanly recommend the Blue Moon Rendering Tools, which is free for noncom
mercial use, and can be downloaded from www. bmrt. org.
• Some knowledge of, and preferably experience with, the terminology and practice
of composing and lighting of live-action and/or CG scenes is helpful. Chapter 13
provides some of this background and recommends several additional sources
for this material.
A glance at the table of contents should reveal that this book is composed of very advanced material, hence the title. We have tried to provide as much context as possible by providing chapters giving introductory material on the APIs, Shading Language, and mathematical background. However, these chapters are designed more for quick reference, and while complete, they ramp up very quickly and assume substantial prior experience in certain areas. Moreover, because the material
in the book is "advanced," much of it is interrelated, without a single linear path of progressing levels of difficulty. We tried to do our best to make few assumptions in earlier chapters, building on this material for later chapters, but this was not always possible.
Well, there it is. We don't want to scare anybody off, and we have tried to make this book as self-contained as practical. But we're writing about tools actually used to make films, and they do require a lot of detailed technical knowledge.
We would like to thank all of our alpha and beta readers, Dana Batali, Rob Cook, Tom Duff, Steve May, Chris Perry, Tom Porter, Guido Quaroni, Rick Sayre, Steve Upstill, Steve Westin, and Wayne Wooten, who added so much to the clarity and technical veracity of our prose. We are also indebted to Pixar Animation Studios, Walt Disney Feature Animation, Sony Pictures Imageworks, and Warner Brothers Feature Animation for their kind permission to use images from their work.
But we are especially thankful to Ed Catmull and the whole executive team at Pixar for creating and fostering an environment in which research and development of innovative rendering techniques is actively pursued, and where, while these techniques are developed to further our proprietary animation production systems, we are still allowed to publish our ideas and discoveries and share them with the graphics community at large.
Chapter 1 is adapted from "Photosurrealism," Ninth Eurographics Workshop on Rendering, Vienna, Austria, July 1998, published by Springer-Verlag, and is used with permission. Chapter 14 is adapted from "Lighting Controls for Computer Cinematography," Journal of Graphics Tools, Vol. 2, No. 1, and is used with permission. Much of the rest of the book was adapted from sections in various Siggraph course notes, particularly Advanced RenderMan: Beyond the Companion (Siggraph, 1998), Writing RenderMan Shaders (Siggraph, 1992), and Pixel Cinematography: A Lighting Approach for Computer Graphics (Siggraph, 1996).
RenderMan is a registered trademark of Pixar. PhotoRealistic RenderMan is a trademark of Pixar. The RenderMan Interface Specification and the documentation for The RenderMan Toolkit are copyrighted by Pixar, and excerpts are used with permission. All product names are trademarked by the companies that trademarked them.
About the Companion Web Site
Readers are encouraged to visit the companion Web site to this book at http: //www .mkp.com/renderman.At the Web site you will find all of the code in this book, both library routines and full shaders. No need to type in any program listings—plus, the
Web site's files will include any extensions and corrections that might be made after the book is printed. In addition, the Web site contains other examples, pointers to RenderMan-related URLs, and other resources, as well as an area where we can post additional examples and shaders, written and contributed by users, that are based on the material in the book.