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.92k stars 1.2k forks source link

A quick question on computing Pa(.) in mis on short paths. #81

Closed JossWhittle closed 8 years ago

JossWhittle commented 8 years ago

Sorry if this isn't the right place to ask, Matt.

I'm currently implementing recursive mis from the Streaming BDPT algorithm, as presented in Dietger van Antwerpen's thesis (page 71) https://drive.google.com/file/d/0B9-nZAz05kYqVDNLX0p2Q1Q5S1E/view

For a path X composed of a light path y_{1} .. y_{s} and an eye path z_{1} .. z_{t} we need to compute probabilities with respect to area of the form:

Pa( z_{t-1} -> z_{t} -> y_{s}) = Psig( z_{t-1} -> z_{t} -> y_{s} ) * G( z_{t} <-> y_{s} )

However, when the eye path scholastically hits an emitter we have paths of the form:

Pa( z_{t-1} -> z_{t} -> y_{0} ) = ?

Where there is no y_{0}. Is it correct to say that Pa( z_{t-1} -> z_{t} -> y_{0}) = 1 as it is the probability of being at z_{t} and staying there?

Similarly, in the case of computing:

Pa( y_{-1} -> y_{0} -> z_{t} ) = ?

Is this the probability of being nowhere and and just sampling z_{t} from the area of the triangle? That is:

Pa( y_{-1} -> y_{0} -> z_{t} ) =  Pa( z_{t} ) = 1 / area

I completely understand if this is the wrong place to ask, but I thought I'd wing it as you were kind enough to help me with adjoint light transport before.

Best, Joss