Global Illumination Filtering for Interactive Applications

Rendering 3D scenes with both fast and accurate global illumination is still a very tough problem: there is a large number of methods giving approximate results, each one with different compromise. Path tracing is, given it's accurate and unbiased nature, often the method of choice here. It is still, however, very hard to do in real-time due to its complex recursive light interactions: even the newest GPUs struggle to keep real-time frame rates for more than just a few samples per pixel, which can lead to a very noisy output or even no useful data for some more problematic areas. A recent approach to processing the resulting image is described and experimented with in this thesis: diffuse light samples are accumulated from previous frames using reprojection and subsequently filtered by a fast bilateral filter constrained by normals, depth, and variance (which will stop blurring valuable details). This results in a temporally stable noise-free output which converges in a few frames. We implemented the method using OpenGL and incorporated it in an existing high-performance CPU-based path tracer VRUT. We extended the approach by putting it in the progressive rendering framework, where initially less than one sample per pixel is shot to increase interactivity. We evaluate the performance and visual quality of this algorithm in several test cases with diffuse illumination.