Perfect mirror's brdf is simple,


as in http://www.pbr-book.org/3ed-2018/Reflection_Models/Specular_Reflection_and_Transmission.html

As shown in several articles, microfacet brdf can have zero roughness by definition then they should be able to represent a perfect mirror. But I cannot derive them to above correct perfect brdf.

For instance, when I put zero roughness into GGX model, (https://www.graphics.cornell.edu/~bjw/microfacetbsdf.pdf )

D(m) = D(H) goes to infinity by divided by 0 and G is just one. However, the brdf I got is,

$F\frac{DG}{4|N\cdot V||N\cdot L|}$

Then rendering equation is,

$\int F\frac{D(H)G(L,V, H)}{4|N\cdot V||N\cdot L|} \cos\theta_id\omega_i = \int F\frac{D(H)G(L,V, H)}{4|N\cdot V|} d\omega_i$

If this was correct, $\frac{D(H)G(L,V,H)}{4|N\cdot V|}$ should be a dirac delta function. But I don't think so.

Where am I wrong? How can I derive a perfect mirror from microfacet brdf?


I concluded that Cook-Torrance's brdf can not represent a perfect mirror. The equation has some small value greater than zero when H $\neq$ N even if roughness is zero. So, normalization factor $4|N\cdot V|$ should be not be removed.

Correct me if I was wrong.


2 Answers 2


If this was correct, $\frac{D(H)G(L,V,H)}{4|N⋅V|}$ should be a dirac delta function. But I don't think so.

Actually, you're close to your answer - you just are trying to find out, what the assumption was in the very beginning - if you're talking about a specular BRDF. The term $F\frac{DG}{4|N⋅V||N⋅L|}$ only works, if you start with the precondition, that you're dealing with a perfect mirror, otherwise this would be an integral itself. Have a look at PBR Diffuse Lighting for GGX+SmithMicrosurfaces by Earl Hammon Jr., where explains how to get to the specular BRDF. Especially have a look at slide 29:

  • Microfacet BRDF is a perfect mirror
    • I.e., light reflects if and only if $m = H$
      • Mathematically, BRDF is a scaled dirac delta $\delta_m(H, m)$

So the perfect mirror is your model in the beginning$^1$ - but only for the specular BRDF!

If you are trying to see, if including the diffuse BRDF into your BRDF is a perfect mirror, then this assumption does not hold any more and thus you don't have the dirac delta function.

$^1$ Note that he speaks about a microfacet being a perfect mirror. However, if all your microfacets are perfectly aligned, then your microgeometry "equals" your macrogeometry


I actually have stumbled at this same exact problem. I think I have found the solution in the pbr book: https://www.pbr-book.org/3ed-2018/Reflection_Models/Microfacet_Models#TheTorrancendashSparrowModel

Basically from what I understand, the derivation for a perfect mirror (without fresnel and geometry terms) goes like this:

$L(\omega_o)=\int \text{brdf}(\omega_i, \omega_o) \cos(\theta_i) d\omega_i=\int\frac{D(\omega_h) L_i(\omega_i)}{4\cos(\theta_i) \cos(\theta_o)}\cos(\theta_i)d\omega_i=\int\frac{D(\omega_h) L_i(\omega_i)}{4\cos(\theta_o)}d\omega_i$

However, the crucial detail is that the distribution function $D(\omega_h)=\delta(\omega_h)$ here is a function of $\omega_h$, but the integration happens over $\omega_i$. And according to formula 8.17 of the pbr book, $d\omega_h=\frac{d\omega_o}{4 \cos(\theta_h)}=\frac{d\omega_i}{4 \cos(\theta_h)}$, and for the case of integrating over a perfect mirror, $\theta_h=\theta_i=\theta_o$, which essentially means $d\omega_i=4 \cos(\theta_o)d\omega_h$.

And now, finally substituting this $d\omega_i$ and essentially integrating over $\omega_h$ instead, we get:

$L(\omega_o)=\int\frac{D(\omega_h) L_i(\omega_i(\omega_h))}{4\cos(\theta_o)}4 \cos(\omega_o)d\omega_h=\int\delta(\omega_h)L_i(\omega_i(\omega_h))d\omega_h=L(\omega_i)$

TL;DR it's because $D(\omega_h)$ is a function of $\omega_h$ and not a function of $\omega_i$. However, one can be converted to another via this "extra" term: $d\omega_h=\frac{d\omega_o}{4\cos(\omega_h)}$


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.