I was reading a paper on BRDF. I've come across this formula : $$ f(\omega_i, \omega_o ) = \frac{FDG}{4(N.V)(N.L)}$$

The (N.L) term can be cancelled by the cosine term which appears in the rendering equation :

$$ L_o = \int f(\omega_i, \omega_o) L_i cos(\theta) d\omega_i $$

What about the (N.V) term ? What happens if (N.V) = 0 ?


2 Answers 2


Firstly, I highly suggest reading Eric Heitz's paper "Understanding the Masking-Shadowing Function in Microfacet-Based BRDFs", which covers the full derivation of microfacet-based BRDFs.

The $\frac{1}{4(N \cdot V)(N \cdot L)}$ term is a side effect of the derivation of the BRDF for specular microfacets. Specifically, it comes from the Jacobian of the reflection transformation. See the paper and/or Walter et. al's 2007 paper for more details.

As for your concern for a divide by zero, the definition of the rendering equation prevents it. Let me explain:

For $(N \cdot V)$ to equal zero, they must be orthogonal. In this case, the visibility term of the rendering equation will cull the cases at / below the horizon.

  • $\begingroup$ Does that mean that the geometry term cancels the cosine term ? $\endgroup$
    – Livetrack
    May 25, 2016 at 17:35
  • $\begingroup$ No. The geometry term is a normalization factor that accounts for the fact that the microfacets will shadow and mask each other. The 'visibility' term I mention in answer is the integral itself. The integral adds up all visible incoming light. $\endgroup$
    – RichieSams
    May 25, 2016 at 17:45
  • $\begingroup$ However, in the book Real Time Rendering I read that for the Blinn-Phong model, the geometry term is (n.v)(n.l) which cancels the denominator. $\endgroup$
    – Livetrack
    May 25, 2016 at 20:06
  • 1
    $\begingroup$ @Livetrack: The part (n.v)(n.l) is not usually called "geometry factor", that is the G in the formula. The only part which gets cancelled when this BRDF is placed into the rendering equation is (n.l). $\endgroup$
    – ivokabel
    May 25, 2016 at 21:54
  • $\begingroup$ I don't understand how the integral (which is about incoming lights) can cancel the cosine term. $\endgroup$
    – Livetrack
    May 27, 2016 at 21:05

Don't forget that at the end this is to be integrated in some cone (e.g. pixel footprint). Then the visible cross section of differential surface dN is also be $(N\cdot V)$.

  • $\begingroup$ I don't understand, can you be more precise ? $\endgroup$
    – Livetrack
    May 25, 2016 at 16:28
  • $\begingroup$ The other answer state the same differently in its last paragraph :-) $\endgroup$ May 26, 2016 at 15:54
  • $\begingroup$ I don't understand : Imagine that I have a single point source, then I can simplify the equation like this : $$ L = f(\omega_o, \omega_i) E(\omega_i) $$. Why don't I need to bother about the cosine term ? PS : J'ai vu que vous êtes chercheur à l'Inria. Je ne veux pas trop vous déranger mais vous pourriez faire l'explication en français ? Merci. $\endgroup$
    – Livetrack
    May 27, 2016 at 21:02
  • $\begingroup$ You have to bother about the cosine Term. The thing with $E(\omega_i)$ is that it is defined as $E = \frac{\Phi}{A}$ and $A$ is in this case orthogonal to the light direction, i.e. $A$ is projected from the original surface onto a plane orthogonal to the light direction. In short, you can't ignore $cos$, but in the equation it is implicitly handled. $\endgroup$
    – Tare
    Oct 13, 2017 at 9:51

Your Answer

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

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