mmp / pbrt-v3

Source code for pbrt, the renderer described in the third edition of "Physically Based Rendering: From Theory To Implementation", by Matt Pharr, Wenzel Jakob, and Greg Humphreys.
http://pbrt.org
BSD 2-Clause "Simplified" License
4.87k stars 1.18k forks source link

SPPM implementation is not symmetric #209

Closed TzuChieh closed 4 years ago

TzuChieh commented 5 years ago

Hi everyone,

I noticed that PBRT's current implementation of SPPM does not account for the symmetric issue caused by the use of shading normals. According to Veach's paper "Non-symmetric Scattering in Light Transport Algorithms", a weighting factor needs to be used in order to correct this. Is the lack of such weighting factor intentional?

wjakob commented 5 years ago

Hi @TzuChieh,

indeed, this issue is neglected in the current implementation. The problem with the weighting factor is that it leads to extremely high variance in the photon weights (with a low probability, you end up dividing by a very small number). Depending on the scene, this can make the method unusable, hence the omission.

Best, Wenzel

TzuChieh commented 5 years ago

@wjakob Thanks for clarifying the problem! I just found out that Mitsuba source code has some relevant comment on this issue, and the weighting factor is not applied too.