Rendering with Pablo

I began writing this renderer, which I refer to as pablo, for CSE 190 in spring 2003. I used the first version to win First Prize in the 2003 UCSD Rendering competition. I have continued to add features and pablo is the primary renderer I have used in my research. Currently, pablo can simulate global illumination, subsurface scattering, photon mapping, participating media, optics effects like depth-of-field as well as many other techniques and effects. The image on the right is my winning entry in the rendering competition (details can be found here). The following sections describe some of the features of pablo and show images that display the effect.
Global Illumination
A large amount of realism in high quality renders comes from simulation of global illumination effects. The image on the right was rendered using photon mapping for global illumination effects. The scene was lit with a single point source, though light bleeding into the shadows is visible including the light on the back of the column in the foreground, which was diffusely reflected at least twice before arriving on the column. The model is the Sponza atrium modeled by Marko Dabrovic.
Subsurface Scattering
The appearance of many materials is due to subsurface effects. Light enters the medium, scatters inside the medium and leaves the medium at another point on the surface. To capture these effects, I use the BSSRDF technique of Henrik et al. The image on the right shows a translucent statue that is backlit by a strong light source. The image was generated by simulating both single scattering and multiple scattering with the dipole approximation. The model used is the Lucy statue from the Standford Repository.
Optics Effects
Pablo also supports optics effects that are produced by cameras including fish-eye and orthographic cameras as well as motion blur and depth-of-field as seen in the image on the right. In many cases, rendered images look artificial because everything is simultaneously in focus. I used adaptive sampling to avoid oversampling regions that are in focus. The model used is the Dragon statue from the Standford Repository and the surface is modeled using a BRDF from the MIT/MERL BRDF Database.
Complex BRDFs and Lighting
In addition to high-quality geometry, realism can be dramatically increased by using realistic BRDFs and lighting. The image on the right shows a Buddha statue lit with complex lighting and a realistic BRDF. There are many problems that arise from these elements like the increased difficulty of sampling as compared to simpler light sources and BRDFs. To handle these problems, Pablo supports importance sampling of both BRDFs and environment maps as well as approximations using Structured Importance Sampling. The model used is the Buddha statue from the Standford Repository, the surface is modeled using a BRDF from the MIT/MERL BRDF Database and the lighting is using an environment map from Paul Debevec.
Monte Carlo Methods
If running time isn't the primary concern, many effects can be achieved using Monte Carlo methods like the indirect illumination displayed in the image on the right. This image is generated by pure path tracing in a scene with lambertian surfaces and a dome light. Monte Carlo methods are used in Pablo for depth of field, motion blur, glossy reflections and photon scattering.
Photon Mapping
Pablo uses Photon Mapping for both Global Illumination as shown above, as well as for effects like caustics as shown in the image on the right. Pablo uses two separate Photon Maps, one for global photons to capture global illumination effects and one for caustic photons. The image on the right shows the caustic that is created in the center of a ring.
Participating Media
To allow for renderings in varying environments, like the dusty room shown on the right, pablo supports simulation of participating media. Ray marching is used to capture the effects due to single scattering. Pablo also has support for varying materials and phase functions. The image on the right shows a statue in a dusty room that is lit by a directional light source.
Technical Features
Many of my favorite features in Pablo don't produce any pictures, but they make producing them much easier. These features include:
  • A highly optimized acceleration structure (bounding volume hierarchy)
  • Support for plugin shaders (materials, lights, lenses, and volume shaders) and objects.
  • Parsing language for scene description with support for the parameters of plugins
  • Custom file formats for storing scene geometry, acceleration structures, and photon maps
  • Multi-pass OpenGL-based viewer that shows renders as they are generated
  • High Dynamic range image support
  • Support for OBJ and PLY formats
  • Sampling techniques for supersampling, depth of field, motion blur, glossy reflections, etc
  • Runs on both Mac OSX and Linux and handles byte swapping issues
more to come...