Multiple-scattering BRDF

With rombo Reflect shaders, – we’re introducing microfacet multiple-scattering in two forms: approximated and true random walk multiple scattering. The true multiple scattering is available only with the ReflectMultipleScatter node while the approximated stuff comes with any specular additional lobe attached to the Diffuse nodes; it is an option with the MultipleScatter node itself and is also boosting the ReflectGeneralized node.

The microfaceting theory is the fundation of most BRDF implementations out there and is actually single-scattering. Microfacet models assume that the true physical surface is offset from a geometric surface in the form of a collection of microfacets called microsurface. Microfacet theory is a statistical model of the scattering properties of the microsurface. A microsurface (BRDF) model is described by a distribution of normals and a microsurface profile, the former describes how microfacets are oriented and the latter how they are organized.

Masking and shadowing functions are part of microfacet BRDFs. They give the probability that a microfacet is visible either in the outgoing direction (masking) or in the incident direction (shadowing). In other words, microfaceting is telling us the probability that a material surface has to reflect light into our view, aka how much light will come back to us once it is reflected on a rough surface.


Basically it means that when an incoming light ray is trying to reach the surface being evaluated it may be blocked by some other microfaces (shadowing) and its journey simply stops there, the same if it is lucky enough to reach the microsurface and bounce back but is then trapped by some other microfaces while is trying to get back to the viewer (masking).

It is easy to see that microfaceting theory is originally single-scatter. Only one bounce is taken into accout. But what if the ray can bounce multiple times before getting back into view ? This is multiple-scattering. When does a ray have more chances to bounce on multiple facets ? When the surface is becoming rougher.

Take care of a few things. A BRDF is called ‘physically based’ if it’s loosely based on microfaceting theory (because that is considered to have a physical fundation) and if it’s energy conserving. So all BRDFs are still physically based even when they actually lose energy that also means that here ‘physically based’ does not mean that they can precisely predict measurements from a real physical surface.

So when a single-scatter BRDF begins to crack down under its own assumptions ? The more the material gets rough. In facts the more rough is the microsurface the more probabilities we’ve that a ray can bounce against other microfaces. On the other hand as generally BRDFs do not consider multiple-scattering the more the surface is rough, the more a BRDF is losing energy. ie the more a material gets darker. (Above and below pictures from E. Heitz Multiple-Scattering Microfacet BSDFs with the Smith Model paper).

Here another comparison over different roughness values between multiple-scattering and single-scattering.

When does multiple-scattering, either true or approximated, really kick in, making the difference ?
When rendering rough metals especially.

Let’s compare a low roughness with no multiple scattering vs true multiple scattering.
We can already see a little difference on the main left knob and its reflection, if we look close.

This is the Squared Error (SE) of the two images.

Let’s increase the roughness to around 0.4 and compare with and without true multi scatter.
Here we don’t need an SE image to better see the difference between the two images as it is evident. Take also care that first image took 5.30mins while the second took 6.01mins to render. Eventually we cannot see a big difference in variance.. meaning that the true multiple scattering does a random walk over the microsurface and that should exhibits more variance than without but due to our excellent sampler 🙂 we don’t notice it.


Now let’s see a comparison between approximated and true multi scattering.

We can see that with the approximation in place (image on the left) we’re almost on pair with the true multi scatter. However notice how the secondary reflections (reflections of reflections) get a bit brighter overallly. While for a developer this might not be a big difference as it is around 5% error.. it might be a big difference perceptually.

Eventually the situation is that true multiple scattering is just taking some more time to converge (here 30secs over 6mins) but it is granted to be fully physically correct while the analytical approximation is not. It is up to us to choose the best one for the kind of shading/rendering we’re doing. Sometimes it might just be that we render with the true thing to have an overall comparison and only then see what to do. That’s why we give you the whole thing so you can decide yourself instead of having a dev manager or some designers decide for you (as it is for the Standard Arnold Material that doesn’t allow to choose between the two models).

For example if we’re rendering a super nice Leica 250 Reporter as an hero object just for fun and we don’t have other requirements other than having nice vibrant overal reflections why should we even think to use an approximation ? 🙂

Leave a Reply