Page 1 of 1

BDPT & Lights hits

Posted: Wed Aug 29, 2012 1:35 pm
by spectral

I already handle the lights hits in my BDPT but I'm not sure it is the right/best way to do, so I ask your advice.

Imagine that a ray hit a light, how should I add this contribution to the current path, and how does the light-pdf it affect the path-pdf ?

And about handling specular (or in general dirac delta distribution), should I explicitly handle it (like in Path tracing) ?


Re: BDPT & Lights hits

Posted: Fri Aug 31, 2012 1:12 pm
by spectral
No anwser ?

Should I handle my light hit like in a normal path tracer ? ie. stop the path when I hit a light and account for 'sky' radiance it if it is a delta distribution ?

By example my emission shader is : emission() * power / SurfaceArea... but I have no definition for the 'reflection' for the emitters (I can assume diffuse by default) ! When I hit, should I account for the reflection (it seems to me that yes). And what happend if I hit a sky light ?


Re: BDPT & Lights hits

Posted: Fri Aug 31, 2012 2:46 pm
by apaffy
Yes you should handle light hits in BDPT. Using the usual convention of s light subpath vertices and t eye subpath vertices, this is the s=0 case.

There's no need to stop the eye subpath (in PT or BDPT) unless there is no BSDF at this vertex. It's up to you whether you want the light sources in your scenes to have a BSDF in addition to an emission function. I've not seen anyone have a BSDF for distant light sources (e.g. skylight) though, they are usually emission-only, so would stop the eye subpath when "hit" (i.e. everything else missed).

I'm not sure what you mean by delta distribution in this case. Neither of these two delta cases should apply to skylight:
* Do you mean the emission function is an angular delta function, such as a laser beam (in the limit)? In this case, just as with BSDFs that are angular delta functions, the only way to take this into account is to sample it. So a laser beam light source would only contribute to paths with s>=2.
* Do you mean the area of the light source is a delta function, such as an ideal point light? In this case, it cannot be hit by the eye subpath, so would only contribute when s>=1.

Re: BDPT & Lights hits

Posted: Fri Aug 31, 2012 3:06 pm
by spectral

You confirm my belief :-)

About the delta distribution, sorry, I'm not clear and even confusing !

When I hit a mirror by example, I have a DDD (Dirac Delta Distribution), then I have to use my "emission shader" and not my "reflection shader" ?

Re: BDPT & Lights hits

Posted: Fri Aug 31, 2012 3:16 pm
by apaffy
I'm saying that when the eye subpath hits anything, you can first check if that surface is emissive. If it is, handle it and only consider the emission function when deciding if this vertex is an angular delta function (just as you would if sampling this surface as a light source for the start of the light subpath).

Once you've handled the emission part, you can move on to the BSDF and handle that independently, only considering the BSDF when deciding if this vertex is an angular delta function.

So you use your example of a mirror, the BSDFcontains a delta function, but the emission function doesn't have to (so could be completely valid for an s=0 path).

Re: BDPT & Lights hits

Posted: Sat Sep 01, 2012 8:49 am
by spectral
Thanks to confirm, it is exactly what I have implemented :-)