p is the phase funstion which specifies the spherical distribution of thescattered light. It is normalized,4¦Ðp(¦Ø, ¦Ø )d¦Ø= 1, and weassume it only depends on the cosine of the scattering angle,p(¦Ø, ¦Ø ) = p(¦Ø¡¤ ¦Ø ). The mean cosine, g, of the scattering an-gle is:g =4¦Ðp(¦Ø, ¦Ø )(¦Ø¡¤ ¦Ø )d¦Ø .
The value of g¡Ê [−1, 1] indicates the type of scattering in themedium.

singularity2006

10-17-2003, 07:58 PM

I can't quite see the equation too well but it looks like K(x,t) is a bi-variate function and o(t) is also another function. So ur in essence taking the integral of the product of two functions with between a and b. Anyhow the function as u have it, I don't think can be integrated because there's no function .... Anyhow, here's the idea with integrals. When u take the integral of some function, 2x^2 between a and b, what that says that if you graph that function, u'll get some curve. Then you take points a and b, or two values of "x" and u find the area under that curve between a and b. Those are called "limits" and a and b of those functions are limits. Anyhow, there's no easy way to explain the process of evaluating the integral u have posited if you have no calculus background in the first place... I would try looking up on google.com for some calculus primers. That might help u understand the process.

sept94

10-17-2003, 08:13 PM

thanks, i just edited my post as the image is not clear. I found some useful calculus primers and I understand the basic of integral euqation now. But I still cannot figure out the equation with phase function in last edited post.
p.s. the notation/equation might be displayed incorrectly.

rendermaniac

10-18-2003, 12:03 AM

Is that meant to be the volume rendering equation?? These sort of things are usually best worked out analytically (ie throw lots of rays at it and see what you get back). Usually there isn't a simple way of working it all out from the maths.

Keep reading the paper until you get to the description of the two step process.
You will then find out how Jensen and Buhler approximate the equation using a two step approach that is stored in a hierarchical octree. The irradiance is calculated as in most renderers using either an irradiance cache or a photon map.

sept94

10-18-2003, 08:04 AM

I feel it is very diffcult to start and digest those equations and formulae, I even don't know many technical terms such as hemisphere/sphere of direction.,etc. Although I have borrowed and try to read Jensen's "Realistic Image Synthesis using photon Mapping", Obviously it is not for beginner. Could you guys recommend some resources about shading programming for beginner?thx

playmesumch00ns

10-20-2003, 10:45 AM

You're just beginning shading programming and you're trying to do Jensen's SSS? I think you should try and tackle an easier topic first.

You need to understand the shader implementation of the platform you're developing for, as well as the maths, before you start on something this complicated.

As Simon already said, you're not trying to solve the integral analytically, it's just a way of writing the problem down formally (diagrams are always better). The actual solution should be to cache a whole load of radiance samples over the surface of your object, then when you're shading each point, go through your cache, find all the samples within a certain radius, normalize them by the area covered, and add them together. That's the way you want to approach this kind of integration practically.

Obviously the approach I've just described is pretty naive, and will take ages, that's why Jensen describes the octree structure he uses for speeding up the cache-searching process.

What platform are you developing for, RenderMan? If you're using RAT, the documentation already describes a perfectly good (if slow) subsurface approximation for a large group of forward-scattering materials e.g. wax, jade, that sort of thing. Not as good as Jensen's multiple-scattering functions, but it's a start.

:)

rendermaniac

10-20-2003, 10:20 PM

playmesumch00ns do you mean the swiss army raytracing sub-surface scattering? Ouch. Then again I guess it is blisteringly fast compared to trying to do Jensens! Without having the cache built into the renderer you're going to have a hard time getting this working.

This years Siggraph notes do have a similar solution for skin in RenderMan, but they jump through hoops to get there.

Plus using a caching mechanism isn't a one time run, then bake solution. You need to update it if you change the lighting.

Using shadow maps is a different sort of cache - it's just caching out the raytraces. Plus you then have the pain of rendering out however many maps each time you render. (you have that anyway if you are using shadows, but usually not on such a scale).

At 2K with production heavy geometry on a normal scene I don't think Sub surface scattering is very viable for animation. If you have a single hero character then maybe (Gollum, Dobby, Hulk) it's worth it.

Saying that does anyone have a half decent solution for giving an sub surface scatter effect beyond a painted texture in the self illuminance map which will not tie up your renderfarm for days?

Simon

sept94

11-01-2003, 05:19 PM

I have built a simple ray tracer and now I would like to try photon mapping. I didn't have any problem during studying (phong)shading equations.,etc. But when I was reading Jensens paper, I don't know how to evaluate those equations, and notation. say, I know how to evalute (general?) integral equation, but I have no idea how to evaluate those double (2 ohm or 3 ohm) integral equations and the meaning of other mathematics notations. Are they "surface integral" and "Volume integral"?Maybe I did not describe very well, I did not try to solve the integral analytically, all I want to do is find out how to evaluate those double (tripe) ohm notations and other mathematics notations so that I can convert them into programming code. Do I have to study monte carlo before Photonmapping?

Thanks

Originally posted by playmesumch00ns
You're just beginning shading programming and you're trying to do Jensen's SSS? I think you should try and tackle an easier topic first.

You need to understand the shader implementation of the platform you're developing for, as well as the maths, before you start on something this complicated.

As Simon already said, you're not trying to solve the integral analytically, it's just a way of writing the problem down formally (diagrams are always better). The actual solution should be to cache a whole load of radiance samples over the surface of your object, then when you're shading each point, go through your cache, find all the samples within a certain radius, normalize them by the area covered, and add them together. That's the way you want to approach this kind of integration practically.

Obviously the approach I've just described is pretty naive, and will take ages, that's why Jensen describes the octree structure he uses for speeding up the cache-searching process.

What platform are you developing for, RenderMan? If you're using RAT, the documentation already describes a perfectly good (if slow) subsurface approximation for a large group of forward-scattering materials e.g. wax, jade, that sort of thing. Not as good as Jensen's multiple-scattering functions, but it's a start.

:)

playmesumch00ns

11-01-2003, 06:33 PM

sept, I haven't got the paper in front of me, so I can't help with the exact maths I'm afraid. It's really not terribly complicated - just a convoluted way of describing something very simple.

I recommend you read this year's Siggraph RenderMan course notes:

http://www.renderman.org/RMR/Books/sig03.course09.pdf.gz

Christophe Hery's section, "Implementing a Skin BSSRDF (or Several)", is a nice discussion about implementing this in PRMan, but it should be easy to port the ideas to other systems.

If you're wanting to do this using photon mapping, I'd write the photon mapper first, before even thinking about this. If you're having trouble with that, read Jensen's photon mapping book, which has the source code for a photon mapper in the back.

sept94

11-02-2003, 10:17 AM

Hi playmesumch00ns, the paper is great and the source code is very helphul! Thank you so much!

migusan76

11-04-2003, 09:03 PM

:D Just out of curiosity, Could these integrals be computed in any of the mathematical packages. Like maple, matlab, or mathematica. To produce workable code.

playmesumch00ns

11-05-2003, 08:52 AM

Nope, they depend on, for example, the number of lights: information that's only known at render-time.

CGTalk Moderation

01-16-2006, 09:00 AM

This thread has been automatically closed as it remained inactive for 12 months. If you wish to continue the discussion, please create a new thread in the appropriate forum.