[Bf-committers] From Farsthary another anouncement

Yves Poissant ypoissant2 at videotron.ca
Thu Feb 5 15:15:34 CET 2009

From: "Brecht Van Lommel" <brecht at blender.org>
Sent: Thursday, February 05, 2009 2:03 AM

> Mainly my point here was that if you are implementing photon mapping or 
> something similar in Blender with the existing shaders, it is easy to make 
> a black box out of them for path tracing.

Technically, I agree that it is relatively easy to wrap those components 
into a black box. Would it be a good idea to use that for path tracing? If 
it is only for playing or experimenting with it, then yes. But if it is to 
calibrate the path tracing so it can serve as a reference for other GI 
algorithm later, then I would say this is a very risky idea.

> If you don't bother with things like importance sampling, to get the full 
> BRDF value it is really just a matter of adding the results from the 
> individual ones together, as far as I understand.

Typically, you approach BRDF sampling in a probabilistic way using the 
technique of russian roulette. When the BRDF is composed of separate 
components, you first select which one of the components is going to be 
sampled with the roulette then this component does its distribution thing 
and returns the result. In some way, it can be viewed as adding together the 
components results but really, it serves better the comprehension of the 
modelt to view each sample as coming from a different event and independent. 
Not added together. It is more like the global result of all this that is 
important. And the global result is also probailistic in the sense that we 
evaluate the density of those individual irradiance events in the scene.

> I'm not saying though that in a physically based renderer this will give 
> great results, but it should be the same as when you use those functions 
> in another algorithm if that algorithm is implemented correctly, so it's a 
> useful sanity check.

I have a lot to say about this but I need to go to work and if I start I 
will write yet another lecture ;-). So I'll wait for when I come back from 

But just for a start, because I mentioned using the russian roulette for 
selecting which component is to be selected for sampling. The russian 
roulette assumes, for separable BRDF, that the coefficients (kd, ks, kr, 
etc) represent the probabilities of contribution and thus the probabilites 
of being selected. So it is assumed that the total of kd+ks+kr+kt == 1. 
Typically, that is almost never the case from legacy material representation 
and the total is usually much higher than 1. So before using the roulette, 
the coefficients are normalized so the total is one, in some way, forcing 
some form of physicallly correctness. The render result will be different in 
both renderer.

This is just the tip of the iceberg though. There are more issues coming 
mainly from the specular component and its normalization (or lack of it) but 
also from the other components. More to come.

> Heh, the thing I thought may be difficult is turning the physical ones 
> into legacy ones, so they would still give reasonable results when using 
> algorithms that rely on splitting things up (for example irradiance 
> caching, SSS, baking GI for games, .. ). I have never tried this though so 
> I wouldn't know.
> The other way around seem quite doable to me _if_ you don't expect those 
> things to give physically correct results, which I think is reasonable.

That is another topic where I have a lot to say.

>From a technical POV, indeed, you are right. Packing the legacy components 
into a black box is easy to do and we use to call that "shaders" although 
"shaders" nowaday can mean a lot more than that. And still from a technical 
POV, doing the reverse is hard. I agree.

When I say the reverse, I'm not refering to the technical challenge of 
implementing those "conversions". I'm refering to the impossibility of 
coming up with an infaillible algorithm that will do the correct legacy to 
physically plausible conversion automatically as the user originally 
designed the material. This, in my experience, is very hard to do (meaning 
impossible right now) and is related to the "tip of the iceberg" I refered 
to earlier. The reverse conversion may require numerical integration of the 
BRDF to figure equivalent legacy coefficients but it is doable as long as 
the BRDF is not one of those weirdly anysotropic ones. It is even possible 
to get OpenGL 1.1 render to look almost photorealistic using such 

Got to leave for work now.


More information about the Bf-committers mailing list