mitsuba
mitsuba copied to clipboard
Bug report: wrong radius update in SPPM due to the photons in opposite side
Problem
The SPPM integrator accidentally updates the radius when photons arrive at the opposite side of the surface.
Cause
It's because there are no exception codes to prevent the photons on the opposite side to be stored in KD-tree. Once they are stored, SPPM integrator finds them and reduces the radius of the corresponding pixel. The final color value is not severely corrupted because their flux is filtered out at BSDF evaluation stage, but still causes higher noise than normal due to the unexpectedly reduced radius.
Below is the image showing the sign of dot product (green:+, red:-) of geometric normal of the surface with the incoming direction of photon found at the hit point.
(Breakfast Room from link, iteration=1, photons=250K)
Red dots indicate the photon is coming from the opposite side of the surface.
Possible Solution
I will make a PR with simple workaround