As mentioned earlier, Michael Bunnell’s key idea was to avoid ray tracing and radiosity altogether, relying instead on a point cloud format. So how do we get occlusion and color bleeding with this method? From the point of RenderMan, it is a two step process: First, a pre-pass generates a point cloud of the scene geometry and illumination in a process informally called “baking a point cloud.” Each point includes data about the area of the micropolygon and its surface normal. Once that data is generated it can be cached and reused.
An added benefit of point-based rendering is that color bleeding calculations can be computed nearly as quickly as occlusion due to the fact that shaders only need to be run when the colors are baked into a point cloud, which is a big time saving over ray tracing. The only thing the algorithm needs is for the point baking pass to include the radiance at each point (surface color and illumination). Notice the points are being used to “approximate” the geometric primitives in the scene, which is a more efficient calculation than attempting to ray trace against the actual geometry in the scene.
The second phase occurs at render time, when the baked point cloud is referred to by shaders attached to the scene geometry to calculate the point-based effect. Each of these points is then approximated with an oriented disk in space.
It is simple to compute the analytical color and occlusion contribution of a disk without having to use ray tracing. For efficiency, distant disks, which individually have a weak contribution to the overall result, are clustered and treated as one entity. The inter-disk occlusion calculation also computes the average non-occluded normal which is used for an environment lookup for image based lighting.
This is analogous to the same functionality in ray-traced occlusion. An added benefit of point-based rendering is that color bleeding calculations can be computed nearly as quickly as occlusion due to the fact that shaders only need to be run when the colors are baked into a point
The images below compare the quality of ray-traced occlusion versus point-based approximate occlusion. The visual results are very close in this instance, but a slight over-darkening can be seen in heavily occluded areas of the point-based image. However, for roughly the same visual quality, the point-based approach rendered nearly eight times faster and with a fraction of the memory overhead.
The benefits of point-based approximate GI include:
- Noise free images – high frequency “spotty” artifacts associated with ray tracing are avoided.
- Faster computation times – 4x to 10x speedup versus ray tracing large scenes.
- Color bleeding and image-based lighting (including support for HDRI) – nearly as fast as ambient occlusion.
- Lowered memory requirements – geometry does not need to be visible for ray tracing.
- Displaced surfaces – no penalty is incurred for rendering displacements, a huge advantage over ray tracing.
- Lights and objects can be easily included or excluded from computation.
There are some drawbacks:
- The effect can sometimes compute too much occlusion and color bleeding, because the points are being used to approximate the actual scene geometry. This can lead to an over darkening from occlusion or stray color bleeding from hidden surfaces.
The use of point-based rendering techniques is reserved for complicated scenes, scenes that have lots of geometry and displacement shaders. Keep in mind point-based rendering is not a silver bullet, but is rather another tool for the technical director’s bag of tricks.
At Pixar it is the supervising lighting TDs who must make the decisions as to which rendering features are most appropriate for a particular shot. Color bleeding can still be faked when possible, but when a scene is complex enough, point-based color bleeding is used. Take the case of ambient occlusion, both point-based rendering and ray tracing are used at Pixar to create this effect, and it just depends on the specific details of a shot.
What point-based rendering brings to the table is the ability to render global illumination effects on scenes that aren’t possible any other way. Some of the most complicated shots currently being rendered at Pixar are taking over 20 hours and generating point clouds over 300 gigabytes. These shots simply would have not looked the same without point-based rendering.