Gradient-Domain Path Tracing

Markus Kettunen1 Marco Manzi2 Miika Aittala1 Jaakko Lehtinen1,3 Frédo Durand4 Matthias Zwicker2

1Aalto University 2University of Bern 3NVIDIA 4MIT CSAIL

ACM Transactions on Graphics 34(4) (Proc. SIGGRAPH 2015).


Paper, supplemental material

Preprint (PDF, 14M)
Supplemental material (PDF, 600k)
Supplemental images


Slides (PPTX, 48M)

Source Code

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.


author = {Markus Kettunen and Marco Manzi and Miika Aittala and Jaakko Lehtinen and Fr\'{e}do Durand and Matthias Zwicker},
title = {Gradient-Domain Path Tracing},
journal = {ACM Trans. Graph.},
year = {2015},
volume = {34},
number = {4},