Page 1 of 1

Joint Importance Sampling of Low-order Volumetric Scattering

Posted: Wed Nov 27, 2013 3:09 pm
by ingenious
Hi all,

Our SIGGRAPH Asia 2013 paper "Joint Importance Sampling of Low-order Volumetric Scattering" is now publicly available at

http://www.iliyan.com/publications/JointPathSampling

In case you missed the presentation last week in Hong Kong, you can have a look at the annotated slides, which provide a high-level explanation of the idea using much fewer than 54 equations :)

Re: Joint Importance Sampling of Low-order Volumetric Scatte

Posted: Thu Nov 28, 2013 2:30 pm
by Dietger
Cool paper!

Tiny question; when you make a comparison with 'traditional path tracing', did you include the contribution of random walks hitting the light sources directly in there with MIS or did you rely completely on next event estimation? Maybe you mentioned it somewhere but I missed it. Including direct light source hits should fix the infinite variance problem as well right?

Dietger

Re: Joint Importance Sampling of Low-order Volumetric Scatte

Posted: Thu Nov 28, 2013 3:25 pm
by ingenious
Dietger wrote:Tiny question; when you make a comparison with 'traditional path tracing', did you include the contribution of random walks hitting the light sources directly in there with MIS or did you rely completely on next event estimation? Maybe you mentioned it somewhere but I missed it. Including direct light source hits should fix the infinite variance problem as well right?


Indeed, including pure unidirectional sampling via MIS removes the geometric singularities (though I haven't seen this proven formally anywhere yet). Nevertheless, when the light source is small, the variance can still be arbitrarily high. For producing the results for the paper, I haven't used this technique in any method. It would improve all images with area lights (with all methods), but only slightly and mostly in the areas very close to the light sources.

Re: Joint Importance Sampling of Low-order Volumetric Scatte

Posted: Thu Nov 28, 2013 4:57 pm
by Dietger
ingenious wrote:It would improve all images with area lights (with all methods), but only slightly and mostly in the areas very close to the light sources.

Right, that obviously only improves things if the probability of actually hitting the light source is significant which is the case close to the lights. But especially in low density volumes it will also get rid of some arbitrarily bright fireflies from paths through any pixel that get too close to a light source after multiple scatter events. Anyhow, with or without unidirectional sampling traditional path tracing still sucks at volumes, so your joint IS is a pretty cool improvement!

Re: Joint Importance Sampling of Low-order Volumetric Scatte

Posted: Thu Nov 28, 2013 6:50 pm
by ingenious
Dietger wrote:Right, that obviously only improves things if the probability of actually hitting the light source is significant which is the case close to the lights. But especially in low density volumes it will also get rid of some arbitrarily bright fireflies from paths through any pixel that get too close to a light source after multiple scatter events. Anyhow, with or without unidirectional sampling traditional path tracing still sucks at volumes, so your joint IS is a pretty cool improvement!


Exactly, unidirectional sampling works well for paths whose second last vertex is close to the light source, where there's a reasonably high chance of hitting the light by shooting in a random direction.

Re: Joint Importance Sampling of Low-order Volumetric Scatte

Posted: Sat Apr 26, 2014 2:05 am
by guo
Hi,

I love this paper and I have several small questions.
The equation (42) is
$$p(w_{u,v})=p(w)\left|\frac{dw}{dw_{u,v}}\right|\sin\theta_{dc}$$
Here why $\theta_{dc}$ is used instead of $\theta_{cb}$?
And from equation (27) we know the singularity originates from $\frac{1}{\sin \theta_{cb}}$, which can be cancelled just by the transformation
$$p(\theta_{cb},\phi_{cb})=\sin\theta_{cb} p(w_{cb})$$
It seems $p(\theta_{cb},\phi_{cb})$ can be tabulated directly, though it is less flat than $p(u,v)$. So I am wondering if the warp $w_{u,v}=w(\pi (1-\sqrt{u}),2\pi v)$ is necessary?
Moreover, the equation (46) reads $\left|\frac{du}{dv}\right|=\frac{1}{\sqrt{1+u^2}}$. Since $v=\operatorname{asinh}u$, I think it is $\left|\frac{du}{dv}\right|=\sqrt{1+u^2}$.
These may also apply to the case of bidirectional factorization.
It turns out that I missed something. :shock:

Thanks,
Guo

Re: Joint Importance Sampling of Low-order Volumetric Scatte

Posted: Sat Apr 26, 2014 1:25 pm
by ingenious
Hi guo. We really need the MathJax plugin, indeed. I had to paste your questions in a LaTeX document in order to read them :)

Thanks for reporting the errors in equations (42) and (46)! I re-checked them and indeed it seems you're right about both. The same error from (46) also appears in (50). I will fix these ASAP.

Assuming I've understood your question the direction transformation correctly, my answer it that yes, this transformation is in fact needed. The standard (\theta, \phi) transformation you mention yields a uniform direction distribution over the sphere. You need to more aggressively warp the \theta angle in order to cancel the singularity around the pole.

EDIT: I have uploaded a revised version of the paper here. Thanks again for reporting the errors, guo!

Re: Joint Importance Sampling of Low-order Volumetric Scatte

Posted: Sun Apr 27, 2014 1:02 am
by guo
ingenious wrote:Assuming I've understood your question the direction transformation correctly, my answer it that yes, this transformation is in fact needed. The standard (\theta, \phi) transformation you mention yields a uniform direction distribution over the sphere. You need to more aggressively warp the \theta angle in order to cancel the singularity around the pole.

Thanks for your reply, ingenious. So the more aggressive warp can eliminate variations of geometric term, leaving only the phase function stuff for tabulation. Great idea. :D

Re: Joint Importance Sampling of Low-order Volumetric Scatte

Posted: Tue Jan 20, 2015 10:20 pm
by shiqiu1105
Hi, just want to ask is there an implementation of this publicly available anywhere?
I wish to implement this in my renderer and a reference would be really handy.