I'm confused by the Mitsuba bidirectional framework for quite a while now, especially by the different eval and connect functions, as well as the weight and pdf variables.

So, what is the difference between PathVertex::eval and PathVertex::weight[], and PathVertex::evalPdf and PathVertex::pdf[].

What are the differences between PathEdge::evalCached, PathEdge::eval*, PathEdge::weight[], PathEdge::pdf[], etc.

Furthermore, how do the PathVertex::connect and PathEdge::pathConnectAndCollapse differ?

To make the problem more concrete, let's say I have two vertices, one at the end of an emitter subpath, call it $y_{s-1}$ and one at the end of a sensor subpath, $x_{t-1}$, both surface interactions.

  • What is the correct way of connecting these two?
  • If I want to calculate $f(y_{s-2} \rightarrow y_{s-1} \rightarrow z_{t-1}) G(y_{s-1} \leftrightarrow x_{t-1}) f(y_{s-1} \rightarrow z_{t-1} \rightarrow z_{t-2})$, what is the correct way of going about this?

Thanks a lot in advance!


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.