Improved Raytracing

Ultimate success is when our work is completely unnoticed.

  • Client: Pixar
  • Completed: Jul 2010

On Cars 2, Renderman hadn't become a full raytracer yet (let alone path tracer). We would cache illumination in a voxel data structure (saved to disk) to speed up illumination at ray hit points. When we cast a ray, we would look up the value for the ray hit in the voxel structure (we called them brickmaps). The problem was we didn't always have enough fidelity in the brickmap, sometimes we didn't want to put that much data in (really big brickmaps) and sometimes even having all the data wasn't enough due to numerical precision. When we didn't have enough fidelity, our beautiful shiny cars would get these ugly, chattering artifacts in their reflections.

So I made some adjustements to the rendering system and the lighting tools to optionally preserve the pointcloud created during brickmap generation. The pointcloud didn't have the same kind of lookup performance as the brickmap, but it stored a normal with the data point that allowed us to do a more accurate read. Furthermore its data hadn't been resampled to fit into a voxel data structure.

Internally, we would check the ray footprint, i.e. how big of an area the ray wanted to average at its hit point, to choose whether we did a brickmap lookup or a pointcloud lookup. For big footprints, the brickmap was much more performant. The threshold between the two was soft but very narrow so that occasionally we would look up both and average them together. This cleaned up our renders a treat! Outside of lighting, no one even knew there was an issue.

We ended up patenting the idea, US Patent #9,208,610 B2, "Alternate Scene Representation for Optimizing Rendering of Computer Graphics"

Contact Me

Let's talk about what I can do for you (demo reel on request).

(801) 839-4359‬

info@jakemerrell.com

www.jakemerrell.com