4
$\begingroup$

I don't understand how to normalize the BRDF. the constraint is that for each incoming ray, the exitant ray will be $1$ at most ie integral of hemisphere of $f_r\cdot\cos(\theta)$ where $f_r$ is the BRDF and $\theta$ is the elevation angle. the integral over hemisphere is:

$0 < \phi < 2\pi$

$0 < \theta < \frac{\pi}{2}$

for lambertian the brdf is uniform i.e $f_r$ = constant the integral is summed to $2\pi$ so the constant should be $2\pi$.

However, this is not the case.

someone knows why? I saw answer here: Why normalise Lambertian BRDF by 1/pi?

but I didn't understand it, why is it matter what the incoming ray is?

let's assume the incoming ray comes in $\theta=0$ so the value is $1$ and the sum over the hemisphere is again $2\pi$ instead of $\pi$.

$\endgroup$
1
  • 1
    $\begingroup$ The integral over the hemisphere is $\pi$, not $2\pi$, because $\int_\Omega \cos\theta d\omega = \int_0^{2\pi}\int_0^{\frac{\pi}{2}} \cos\theta \cdot \sin\theta d\theta d\phi = \pi$. Have a look at scratchapixel.com/lessons/3d-basic-rendering/… $\endgroup$
    – Tare
    May 4, 2018 at 11:32

1 Answer 1

2
$\begingroup$

A surface with a Lambertian BRDF has the characteristic that independent of the direction from which one looks at that surface, one receives the same amount of reflected energy (i.e. a diffuse surface point looks the same from all possible directions). Lets consider a small plane orthogonal to this looking direction:

  • If one looks straight at the surface (i.e. the looking direction is parallel to the surface normal), the projected surface area of that plane onto the surface along the looking direction is equal to the surface area of the plane (i.e. orthogonal projection).
  • If one looks along a sharp angle at the surface, the projected surface area of that plane onto the surface along the looking direction is much larger than the surface area of the plane.

Assume an isotropic BRDF (i.e. the same reflection factor independent of the looking direction), the following normalization factor and probability density distribution over the hemisphere are obtained:

$\int_\Omega 1 \, d\omega = \int_{0}^{2\pi} \int_{0}^{\pi/2} \sin\theta \, \mathrm{d}\theta \, \mathrm{d}\phi = \int_{0}^{2\pi} \int_{0}^{1} \, \mathrm{d}\!\left(\cos\theta\right) \, \mathrm{d}\phi = 2\pi$

$\mathrm{pdf}\!\left(\theta, \phi\right) \equiv \frac{1}{2\pi}$.

Unfortunately, the differences in projected surface area dependent of the looking direction remain and thus this isotropic BRDF violates the above definition of a Lambertian BRDF.

To counteract the differences in projected surface area dependent of the looking direction, the reflection factor must compensate and be dependent of the looking direction as well. This compensating factor is $\cos\theta$ (i.e. decreases from orthogonal, $\theta=0$, to glancing, $\theta=\pi/2$ directions). The following normalization factor and probability density distribution over the hemisphere are obtained:

$\int_\Omega \cos\theta \, d\omega = \int_{0}^{2\pi} \int_{0}^{\pi/2} \cos\theta \sin\theta \, \mathrm{d}\theta \, \mathrm{d}\phi = \int_{0}^{2\pi} \int_{0}^{1} \cos\theta \, \mathrm{d}\!\left(\cos\theta\right) \, \mathrm{d}\phi = \pi$

$\mathrm{pdf}\!\left(\theta, \phi\right) = \mathrm{pdf}\!\left(\theta\right) = \frac{\cos\theta}{\pi}$

Alternatively, one can start reasoning from the amount of incident energy as well (dual). Lambert's cosine law + conservation of energy:

$\rho_d \int_\Omega \cos\theta \, d\omega = \rho_d \pi \le 1$

(For more info see this article, thanks to @Tare.)

Note that diffuse is not the same as isotropic:

  • The reflection from a surface with a Lambertian BRDF is diffuse and non-isotropic.
  • The brightness perceival from a surface with a Lambertian BRDF is non-diffuse and isotropic (i.e. looks the same from all possible directions).

(Similar for diffuse area light sources.)

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.