Experimenting with volume rendering and multiple scattering has been on my todo list for a long time, so recently I started trying to understand how scattering events fit into a bidirectional path tracer. I found surprisingly few references that deal with volume scattering in the Veach framework (or more accurately, extend the Veach framework to deal with this). Most useful to me so far were:
- Metropolis Light Transport for Participating Media by Mark Pauly, Thomas Kollig, Alexander Keller (EG 2000).
- Manifold Exploration: A Markov Chain Monte Carlo technique for rendering scenes with difficult specular transport by Wenzel Jakob, Steve Marschner (to appear in SIGGRAPH 2012).
It was quite quick to add support for vertices that represent scattering events, but it certainly wasn’t trivial to calculate pdf ratios for multiple importance sampling. I’m going to do a proper writeup of all the equations in the next post. For now, here are two quick test renders:
Image statistics: bidirectional path tracing with multiple importance sampling, multiple scattering in (unbounded) isotropic medium with isotropic phase function, max path length 16, approximately 500spp.
Once I get volume caustics working I will have a small party. And then get back to finishing the VPL post from April…