Preprint (PDF, 14M)
Supplemental material (PDF, 600k)
Supplemental images
The implementation builds on Mitsuba renderer, and we provide binaries built with Visual Studio 2013 with CUDA or CPU reconstruction. The code implements gradient-domain path tracing (G-PT) and gradient-domain bidirectional path tracing (G-BDPT).
Updated on 2016-01-05: Fix a bug in vertex classification of perfectly specular material components.
Code (GitHub)
Win64 (CPU)
Win64 (CUDA)
Poisson solver
Scenes
We introduce gradient-domain rendering for Monte Carlo image synthesis. While previous gradient-domain Metropolis Light Transport sought to distribute more samples in areas of high gradients, we show, in contrast, that estimating image gradients is also possible using standard (non-Metropolis) Monte Carlo algorithms, and furthermore, that even without changing the sample distribution, this often leads to significant error reduction. This broadens the applicability of gradient rendering considerably. To gain insight into the conditions under which gradient-domain sampling is beneficial, we present a frequency analysis that compares Monte Carlo sampling of gradients followed by Poisson reconstruction to traditional Monte Carlo sampling. Finally, we describe Gradient-Domain Path Tracing (G-PT), a relatively simple modification of the standard path tracing algorithm that can yield far superior results.
The ``Door'' scene was modeled after a scene by Eric Veach by Miika Aittala, Samuli Laine, and Jaakko Lehtinen. The ``Sponza'' scene is courtesy of Marko Dabrovic. The ``Bookshelf'' and ``Bathroom'' scenes have been ported to Mitsuba by Tiziano Portenier. This work was partially suported by the Academy of Finland grant no. 277833, NSF grant no. IIS-1420122, Swiss National Science Foundation grant no. 143886, and by the Helsinki Doctoral Education Network in Information and Communications Technology (HICT).
The way we describe the relative MSE in Section 6 slightly differs from how we computed it for the results and comparisons: We average the errors of each color channel instead of summing them up and use an epsilon value of 0.01 instead of 0.001. We provide a Matlab script to reproduce our error measurements: relative MSE script.