Beyond Spatiotemporal Variance-Guided Filtering: Temporally Stable Filtering of Path-Traced Reflections in Real-Time

A research project by Victor Voorhuis
Conducted at 3Dimerce at the Master program
Under supervision of Jacco Bikker, Huub van Summeren
Jun 2018

The path tracing rendering algorithm has long been considered to be unsuitable for real-time rendering, since a large amount of samples is required to produce noise-free renders. Many filtering methods have been proposed, which denoise renders by trading variance for bias. The recently introduced Spatiotemporal Variance-Guided Filter (SVGF) achieves real-time denoising of path-traced renders, requiring only one sample per pixel. SVGF employs a reprojection step to increase the amount of samples in the filter input. This leads to increased temporal stability. Reprojection is also employed to estimate the per-pixel variance, which is used to locally adapt the filter bandwidth to the signal. SVGF however only reprojects the primary hit, and is therefore not able to reproject geometry visible in reflections. We extend SVGF to reproject and filter geometry visible in both pure and glossy specular reflections. To prevent this reprojection from introducing ghosting artifacts, we apply a form of neighborhood clipping which is tailored to SVGF. With our modifications, SVGF can produce temporally stable filtered reflections in real-time. We also extend SVGF to support supersampling and introduce several modifications to improve the robustness of the algorithm when the probability of paths that return energy is low. Our work makes SVGF usable in a wider variety of scenes and improves reconstruction quality in several scenarios, while retaining real-time performance on consumer hardware.

Rendering, Path tracing, Filtering, Denoising, Reflections, SVGF, Reprojection, Supersampling



A short video which explains the very basics of path tracing and SVGF. We demonstrate our extension for reprojecting reflections. This video is targeted at those who do not have a background in computer science.