# Energy Conservation for Blinn-Phong BRDF

I am trying to sample from the Blinn-Phong BRDF.

For testing, I use a spherical light source (Lambertian emission) sitting on a specular plane. Here's a reference image using energy-conserving Phong with exponent 30000:

Notice that no energy is lost. I would now like to achieve the same thing for Blinn-Phong.

Here's my attempt (same exponent, but on Blinn-Phong BRDF):

As you can see, a substantial portion of energy is lost. The normalization term I am using comes from here and is $\frac{n+1}{2 \pi}$. The problem is this is a normalization term, not a conservation term.

I believe this is the expected result. It is common in graphics to make BRDFs reflect less than the input amount of energy, as opposed to exactly the right amount, as this is usually less difficult.1, 2

My question:

1. Is there a version that conserves all energy exactly?
2. Iff not, can someone at least confirm this is expected?

N.B. I am fairly confident this is not a ray generation/PDF issue. These images were importance sampled using a method given in the PBRT book pg. 695 - pg. 699. Moreover, a non-importance sampled version looks very similar (though I had to use a lower exponent to get it to converge fast enough, and it still took 10,000 s/p).

1This can be argued from a shadowing/masking argument on microfacets. Unfortunately, it ignores multiple scattering. The correct answer is somewhere in-between.

2Indeed, I had to derive the Phong conservation term myself.

If you did this test, you would also notice that your Phong BRDF is most likely not energy conserving. The commonly used normalization term of $\frac{n+1}{2 \pi}$ (or $\frac{n+2}{2 \pi}$, depending on who you ask) only holds at normal incidence. At other inclinations, and particularly at grazing angle, up to half of the reflected rays will land below the surface and are usually terminated (because transmitting through a reflective surface does not make sense).
It should be clear that if a simple model such as Phong is already this difficult to normalize, then Blinn-Phong is even more difficult. First of all, the $\frac{n+1}{2 \pi}$ normalization term you mention is only correct if you use Blinn-Phong as a microfacet distribution inside a full microfacet BRDF (e.g. Torrance-Sparrow or Walter). If you directly use the Blinn-Phong BRDF, then a more correct normalization term is $\frac{(n+2)(n+4)}{(8 \pi 2^{-n/2} + n)}$, derived in this short article by Fabian Giesen (second page) and also listed on the page you mention. However, this normalization term is again only correct at normal incidence and will not be exact at other inclinations. From what I can tell, no exact normalization term exists.