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:
- Is there a version that conserves all energy exactly?
- 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.