Archive for July, 2012
Bidirectional Path Tracing in Participating Media
The framework for integration over path space described by Veach [1] can be extended to integrate over volumes ([3] and [4]), using the original rendering equation as a boundary condition. An alternative framework was also developed by Lafortune in [2]. In the approaches described by these papers, scattering events are sampled according to the cumulative scattering density along a ray.
Here is some programmer art rendered using a brute force bidirectional path tracer that implements this approach, stopped at around 1000 samples per pixel.

Still noisy but working volume caustics, so achieves my goals. Since this is a brute force sampling (no MLT or manifolds) there are still issues with SDS paths that show up as unexpected bright spots on the glass sphere. If I manage to resurrect MLT code for [5] I’ll post an update.
This post is an attempt to gather together the definitions and equations for the weighted path contribution and MIS probability ratios for this sampling technique, as I’ve not seen this written down all in one place (with all of the interior terms of the weighted path contribution cancelled etc). Where possible I’ve tried to use similar notation to [1], [3] and [4]. This post is unapologetically maths-heavy!