From Wakapon
Revision as of 17:51, 25 December 2012 by Patapom (talk | contribs)
Jump to: navigation, search

Characteristics of a BRDF

We're going to use <math>\omega_i</math> and <math>\omega_o</math> as denoting the incoming and outgoing directions respectively. These only represent directions, we don't care if it's a view direction or light direction: for radiance estimates, the outgoing direction is obviously the view direction while the incoming direction is the light direction. For importance estimates, it's the opposite.

Also note that we use vectors pointing TOWARD the view or the light.

So, what's a BRDF? As I see it, it's an abstract tool that helps us to describe the macroscopic behavior of materials when photons hit this material. It's a convenient black box, a huge multi-dimensional lookup table (3, 4, or sometimes 5, 6 dimensions when including space variations) that contains the amount of photons bouncing off the surface in a specific (outgoing) direction when coming from another specific (incoming) direction (and potential another location).

A Bidrectional Reflectance Distribution Function or BRDF is only a subset of the phenomena that happen when photons hit a material but there are plenty of other kinds of BxDFs:

  • The BRDF only deals about reflection, so photons come from outside the material and scatter back outside the material as well.
  • The BTDF (Transmittance) only deals about transmission of photons coming from outside the material and scattering inside the material (i.e. refraction).
    • Note that the BRDF and BTDF only need to consider the upper or lower hemispheres of directions (which we call <math>\Omega</math>, or sometimes <math>\Omega^+</math> and <math>\Omega^-</math> if the distinction is required)
  • The BSDF (Scattering) is the general term that encompasses both the BRDF and BTDF. This time, it considers the entire sphere of directions.
    • Anyway, the BSDF, BRDF and BTDF iares generally 4-dimensional as they make the (usually correct) assumption that both the incoming and outgoing rays interact with the material at a unique and same location.
  • The BSSRDF (Surface Scattering Reflectance) is a much larger model that also accounts for different locations for the incoming and outgoing rays. It thus becomes 5- or even 6-dimensional.


Mathematically

Integration of radiance times dot(N,L) yields the irradiance (<math>W.m^{-2}</math>):

<math> E_r(x) = \int_\Omega dE_i(c,\omega_i) = \int_\Omega L_i(c,\omega_i) (n.\omega_i) \, d\omega_i </math>

But when we inject the BRDF into the integral, we obtain a new radiance (<math>W.m^{-2}.sr^{-1}</math>):

<math>L_r(x,\omega_o) = \int_\Omega f_r(x,\omega_o,\omega_i) L_i(\omega_i) (n.\omega_i) \, d\omega_i</math>

Indeed, the expression of the BRDF (<math>sr^{-1}</math>) is:

<math>f_r(x,\omega_o,\omega_i) = \frac{dL_r(x,\omega_o)}{dE_i(x,\omega_i)}</math>

From the first equation of the irradiance, we can deduce that:

<math>dE_i(c,\omega_i) = L_i(c,\omega_i) (n.\omega_i) d\omega_i</math> (note that we simply removed the integral signs to get this)

We can then rewrite the BRDF as:

<math>f_r(x,\omega_o,\omega_i) = \frac{dL_r(x,\omega_o)}{L_i(c,\omega_i) (n.\omega_i) d\omega_i}</math>


It can be seen as the infinitesimal amount of reflected radiance by the infinitesimal amount of incoming irradiance. We thus realize it's defined as an infinitesimal quantity (so we need to integrate it to obtain the final result) and it's expressed in <math>sr^{-1}</math> units.


The fundamental characteristics of a real material BRDf are:

  • Reciprocity (a.k.a. Helmoltz principle), guaranteeing the BRDF returns the same value if <math>\omega_o</math> and <math>\omega_i</math> are reversed (i.e. view is swapped with light).
  • Energy conservation, guaranteeing the total amount of reflected light is less or equal to the amount of incoming light.


Sources

I've been reading interesting papers from the Siggraph 2012 talk about Practical Physically Based Shading in Film and Game Production which is available here

Some ideas are worth mentioning.


S4.gif