These pages provide an intro RenderMan, plus a few hints, tips and images. If you haven't used RenderMan here's some basic background info to get you started.


Angel is my RenderMan(ish) compliant renderer. It's still work in progress, so lacks a number of features, but it's making good progress..


For those who INSIST on having source code for everything, here's the source to my "alternatve" RM Renderer... Of course it's written entirly in shell script!! That's write RenderMan implemented in shell script. It was presented as a Stupid RenderMan Trick at SIGGRAPH 08.


Currently under development, SLander is runtime system for renderman shaders allowing them to be previewed more rapidly than BMRT or PRman.


Based around the SLander engine, Buffy provides a full shader debugging system.


For those that would rather paint than code, Kendra is a basic 3D painting system. Though not exactly Amazon, it allows textures to be quickly positioned on geometry described by rib files, and saved as tiff's for import into a more powerfull 2D painting system.

Rendering smoke with particle maps

This Stupid RenderMan Trick offers a new way to render smoke and other atmospheric effects. By storing particles in a photon map-like data structure, they can be ray marched in an atmosphere shader. The resulting shaders are fast, and controllable.

Implementing RenderMan on the Sony PS2

I ported Angel to the PS2, and then optimised it to use the custom hardware available on that platform. If you have a PS2 Linux kit you can get the executables from the PS2 Linux site. (pdf) (PowerPoint)

Compressing RIB Files

RIB files can get large, but you can compress them using the Unix diff command.


Faith is an experimental tool for rendering RIB files in layers.


When using RiProdecural it is oftern necessary to calculate a bouding box for a RIB archive. This can now be done trivially using BBGen.


Anti-alising shaders is a continual battle. Inoise is a filtered verision of the standard Perlin Noise function, and produces signifigantly better images than simple frequency clamping.


Mental Ray's core rendering engine is excellent, but its API's are difficult to work with, and have limited support. Ethel converts Rib files into Mental Ray compatable MI files, allowing Mental Ray to be mixed into a RenderMan based production pipeline.


RenderMan allows procedural pritives, where an external program can be called mid-render to generate additional geometry for a scene as it's needed. HaRM demonstrates how this can be used to invoke Houdini on the fly, and extract objects from hip files as required by the scene, rather than generating rib code for all primitives a-priori.


New in PRMan3.9 is the RiBlobby functions, allowing metaballs to be evaluated at rendertime. While this is relativly well documented in Pixar's Application note #31, and appears to be well designed and thought out, the actuall RIB syntax is more than a little intimidating, effectivly being machine code for a virtual dataflow machine. Edmonds is an assembler for this machine, taking a human readable description of the required object and producing the required RIB description of the object..


Packages have varying levels of support for blobby objects. However its often easier to deal with points and then convert to Blobbies at render time. RiPtoB performs this conversion on rib files.

Gamma Correction

Reguardless of what renderer you use it's important to understand the concept of Gamma correction. Hopefully this document will clarify why gamma is important, and show you how to manage it.


Here are a few little demo's that I've produced. They shouldn't be considered as final animations, as they're really just proof of concept work, demonstrating some of the fun things you can do with RenderMan.

The Candle sequence was generated entirly using the C-API. It's hard work, but allows for greater flexability than most applications. In addition to the surface shaders, the core of this image is the lighting - multiple shadow maps are used to create the multicoloured shadows.

Explosion was animated in Houdini, and the flame effect is generated using a shader generated by the Materials editor. However the cool interesting bit is the displacement shader which provides all the surface detail for the space station.

Ian Stephenson.
DCT Systems
NCCA, Bournemouth University