About volumetric caustics. back

Board: Home Board index Raytracing General Development

(L) [2013/11/13] [tby shiqiu1105] [About volumetric caustics.] Wayback!

Hi,
I am trying to render an underwater scene, where volumetric caustics due to the water surface dominates.
What is the best approach for this kinda of effect?
I already have a Bidiretional path tracing running in my ray tracer, but some related projects that I found online uses volume photon map.
[LINK http://www.smallvcm.com/] seems to suggest that photon map is not as efficient when capturing diffuse and glossy reflection compared to monte carlo approaches like BDPT. But I also know that photon map is general less noisy, so how should I judge these two kinds of algorithms?
And, any suggestion or resources on volume caustics would be very much appreciated. Thanks!
(L) [2013/11/13] [tby friedlinguini] [About volumetric caustics.] Wayback!

You might take a look at Wojciech Jarosz's (no idea if that's the right way to write the possessive. [SMILEY :-)] ) work ([LINK http://zurich.disneyresearch.com/~wjarosz/publications/]). A lot of it is photon map-like structures specialized to volumetric scene elements. Listed in that link is also a hot-off-the-presses paper in SIGGRAPH Asia about importance sampling that seems more applicable to BDPTs, though one snippet ("Though our method outperforms existing techniques in all our tests, we obtained less benefit in scenes with a combination of caustic paths and surface-to-media transport") might not bode well for your particular use case. I haven't looked at it too carefully yet.
(L) [2013/11/13] [tby ingenious] [About volumetric caustics.] Wayback!

Since VCM subsumes BPT, it should not perform mich worse than pure BPT in such a setting. Actually, for directly visible volumetric caustics BPT is usually quite good.
When volumetric caustics are seen through a reflection or refraction, though, BPT almost breaks down. Traditional photon mapping is not super efficient in this case either, however it can help, so VCM is worth the shot here too. But generally, Wojciech's beam radiance estimate can be much better, and his beam-beam estimates improve even further.
While the joint path sampling adds more volume sampling techniques to BPT, it helps mostly in the "non-specular indirect" (double-scattered) illumination from such caustics, i.e. for LS*DDS*E paths. It won't help much for LS*DS*E paths.
(L) [2013/11/14] [tby zsolnai] [About volumetric caustics.] Wayback!

Hi there,
we have some experience rendering scenes with volume caustics. Here on the first page you can see that bidirectional path tracing + the primary sample space metropolis [1] does a reasonably good job at it compared to bdpt with naive sampling techniques:
[LINK http://cg.iit.bme.hu/~zsolnai/gfx/adaptive_metropolis/adaptivemetro_supplemental.pdf]
If reimplementing Wojciech's work is not a possibility, this is a reasonably simple approach to implement. There is an excellent implementation of it in LuxRender and Mitsuba, and I also have a 300ish line path tracer with Metropolis sampling. If you need it, just drop me a line.
[1] [LINK http://sirkan.iit.bme.hu/~szirmay/paper50_electronic.pdf]
(L) [2013/11/14] [tby ingenious] [About volumetric caustics.] Wayback!

>> zsolnai wrote:...and I also have a 300ish line path tracer with Metropolis sampling. If you need it, just drop me a line.
Drop.
Seriously, if you have a "SmallMLT", please do consider releasing it publicly. Both you and the community will benefit [SMILEY ;)]
(L) [2013/11/14] [tby zsolnai] [About volumetric caustics.] Wayback!

Hi there everyone,
it is available here:
[LINK http://cg.iit.bme.hu/~zsolnai/gfx/smallpaint/]
It seems that it also has a simple BVH implementation included therefore it's a bit "fat", that is, being 800ish lines with lots of comments (effective lines of code is however a lot less than that). Please note that I have had very limited time to test it, therefore I would definitely not claim it's perfect. It might as well be even broken. If any of you happen to improve it in any way, I'll be happy to update it.
(L) [2013/11/14] [tby shiqiu1105] [About volumetric caustics.] Wayback!

Guys, thanks for the help.
I also found a project online here: [LINK http://www-graphics.stanford.edu/courses/cs348b-competition/cs348b-04/underwater/index.html]
which uses volume photon mapping and the result seems pretty good.
I have never written a MLT before and I heard it's hard.
I guess I will go with the easiest and quickest way for now... still deciding.
(L) [2013/11/14] [tby Dade] [About volumetric caustics.] Wayback!

>> shiqiu1105 wrote:I have never written a MLT before and I heard it's hard.
I guess I will go with the easiest and quickest way for now... still deciding.
It is quite a false myth, a Metropolis sampler require something like 150 lines of code: [LINK http://src.luxrender.net/luxrays/file/eeb8c20ef760/src/slg/sampler/sampler.cpp#l138]
(L) [2013/11/14] [tby toxie] [About volumetric caustics.] Wayback!

But that doesn't include all the additional mumbo-jumbo that the rest of the renderer has to support to make it "simple" like this..
(L) [2013/11/14] [tby friedlinguini] [About volumetric caustics.] Wayback!

What mumbo-jumbo is that? Kelemen-style MLT doesn't require much. You need to to feed sample results back to the random number generator, and let the thing warm up a bit to generate an average intensity and eliminate start-up bias. Otherwise it's not really any more complicated than, say, replacing a naive RNG with a QRNG. Is there something else?

back