Jump to content
Posted 05 July 2012 - 02:31 AM
Posted 05 July 2012 - 07:52 AM
Edited by jameszhao00, 05 July 2012 - 08:00 AM.
Posted 05 July 2012 - 05:03 PM
Posted 05 July 2012 - 06:24 PM
if you have smaller lightsources
Are you by any chance referring to MIS path tracing? where we combine brdf sampling (good for specularish surfaces) and explicit light sampling (good for small lights)?
Posted 05 July 2012 - 07:51 PM
Posted 05 July 2012 - 10:56 PM
Edited by jameszhao00, 06 July 2012 - 12:22 AM.
Posted 06 July 2012 - 07:15 AM
Edited by xieofxie, 06 July 2012 - 07:17 AM.
Posted 10 July 2012 - 07:29 AM
Uniformly sampled bidirectional tracer is noisier in mostly directly light situations.
On debugging: You're on the right track with the reference image comparison. Get ready for a boatload of pain though.
I really suggest you download the Intel compiler trial. It saves a lot of debugging time (as the generated code pretty much beats VC++ by 10-20% usually)
For BDPT, the weights for path configurations of a given path length must sum to 1. So, we can have any weights we want, as long as it sums to 1. Some things I would try
- render with path length = 3 only, compare uniform bdpt with reference
- render with path length = 3 only, render with 4 eye verts, 0 light verts weighted to 1,
- render with path length = 3 only, render with 3 eye verts, 1 light verts weighted to 1,
Also, I've found it extremely helpful to posterize the images in a photo editor (I use Paint.Net) and compare. It lets me see the lighting gradients very well.
Also, having a crapload of asserts is extremely helpful (check your understanding, detect undesirable nan/infs)
Also, I have some stuff in my blog when I implemented BDPT. (I have not yet written about MIS BDPT)
Here's my reference uniform BDPT code by the way
MIS BDPT (Does not handle specular / escaped ray)
My implementation requires at least 2 eye vertices (so weights change slightly)