Multiple Scattering

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:

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:

Cornell box with multiple scattering

Blender heads and multiple scattering

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...