Importance Sampling back
Board:
Home
Board index
Raytracing
General Development
(L) [2012/04/23] [ost
by Igors] [Importance Sampling] Wayback!Hi All
I've implemented a simplest unbiased Monte-Carlo for indirect illumination - N rays are cast from point to hemisphere. It works but becomes very noisy for scenes with "bright spots", e.g. when a relative small area is lit a lot. In others areas only few rays (of all N) catch the spot, so need tons of rays to compensate.  I realize I need to detect such areas, do sample them more accurate and adjust bias.
Which technique/theory would you recommend?  Should I concentrate on "Instant radiosity" or there are other ways?
Thanks
(L) [2012/04/23] [ost
by stefan] [Importance Sampling] Wayback!You have plenty of options: Instant radiosity, photon mapping, irradiance caching, radiance caching, bidirectional path tracing, metropolis light transport, SPPM, ...
Your next steps depend on what you want from your renderer - easy implementation, short render times, flicker free animation, no bias?
(L) [2012/04/23] [ost
by Igors] [Importance Sampling] Wayback!>> stefan wrote:You have plenty of options: Instant radiosity, photon mapping, irradiance caching, radiance caching, bidirectional path tracing, metropolis light transport, SPPM, ...
I'm asking about how to reduce noise/variance when one/single point is sampled. I realize the N (count of rays specified by user) can be small, so it seems logical to process (re)sampling in 2 or more passes to use rays info of neighbour sampled points. Or create cached data for further sampling passes. That's what I'm interested in.
Other aspects are not involved: like how to place samples, or how to estimate secondary illumination. Let's assume we've a point to sample, know its neighbours and can get light at each ray's intersection with scene.  It's other story where it comes from.
Thanks
(L) [2012/04/23] [ost
by ingenious] [Importance Sampling] Wayback!I cannot understand what you're trying to achieve. Are you restricted to the setting, where you have one shading point and shoot final gather rays? In such case you want to shoot with higher probability inside the solid angle spawned by the brightly lit surface. This is tricky in general, but people have used photon maps and other methods to help steer sampling in these directions.
If you simply want to solve the problem, bidirectional path tracing (BDPT) is the most general unbiased way to go, and gives great results in such cased. Instant radiosity is one very special case of BDPT, which is simple to implement and also handles such cases easily. If you want good pictures with it, though, you have to make it biased via VPL clamping. Photon mapping will not help in this situation.
(L) [2012/04/23] [ost
by stefan] [Importance Sampling] Wayback!>> ingenious wrote:I cannot understand what you're trying to achieve. Are you restricted to the setting, where you have one shading point and shoot final gather rays? In such case you want to shoot with higher probability inside the solid angle spawned by the brightly lit surface. This is tricky in general, but people have used photon maps and other methods to help steer sampling in these directions.
For just that case, this might be an interesting method:
[LINK http://neulander.org/work/sketch2011.pdf]
I haven't implemented it myself yet, but it looks very promising.
(L) [2012/05/05] [ost
by Igors] [Importance Sampling] Wayback!>> stefan wrote:
For just that case, this might be an interesting method:
[LINK http://neulander.org/work/sketch2011.pdf]
Not very clear "how" - but thx anyway
Now I've implemented a simple adaptive sampling. If a ray delivers more color/energy, then "ray's cell" is sampled with additional rays and result is averaged. It works but it uses only "local" data (this ray only). So some illumination details can be missed.
It would be much better to use data of neighbour samples in passes. It's not very complex to save "paths" (point + direction + light) where most of light comes from. But I've no idea what to do with saved data during next pass. The rays layout is lost, storing all rays for each sample looks not realistic. Although I can cast extra rays in primary direction(s) but I can't integrate/rebias new data into previous result
(L) [2012/05/05] [ost
by metro] [Importance Sampling] Wayback!There are a couple of papers that of know of which do this. Some are pre-process which I guess you don't want. Lafortune had a 5D tree ([LINK http://citeseer.uark.edu:8080/citeseerx/viewdoc/summary?doi=10.1.1.23.2520]) which seems good, and more recently there have been a couple that I know of: [LINK http://ieeexplore.ieee.org/xpl/login.jsp?tp=&arnumber=5171420&url=http%3A%2F%2Fieeexplore.ieee.org%2Fxpls%2Fabs_all.jsp%3Farnumber%3D5171420] , which uses a pre-process to seed important locations and adaptively sample them and [LINK http://onlinelibrary.wiley.com/doi/10.1111/j.1467-8659.2012.02099.x/abstract] , which adaptively samples cosine lobes. They might be a good starting point.
(L) [2012/05/08] [ost
by ingenious] [Importance Sampling] Wayback!A couple of months ago a paper on this topic, titled "A Significance Cache for Accelerating Global Illumination", appeared in Computer Graphics Forum:
[LINK http://onlinelibrary.wiley.com/doi/10.1111/j.1467-8659.2012.02099.x/abstract;jsessionid=D5D65831986C5AA9B35C01FD7B653911.d02t02]
(L) [2012/05/08] [ost
by spectral] [Importance Sampling] Wayback!Has someone read this paper, how to compare it to an "improved" MLT algorithm ? Like "Noise aware MLT" ?
What about the memory usage ? I mainly think about a GPU implementation... where we still have some limits to the used memory !
(L) [2012/05/09] [ost
by spectral] [Importance Sampling] Wayback!Please, can you show which kind of scene you are talking about ?
So, first do you implement MIS or BDPT ? have you implemented basic MLT ? For sure it will help a lot !
Once done, you can also check for "noise aware" MLT and "Filtered Importance Sampling"
back