So, let's say I'm using a normalized Blinn-Phong BRDF. Here is the one from Real-Time Rendering, Third Edition, p. 257, Eq. 7.49:

Where:

** c_{diff}** is the diffuse reflectance

**R _{F}** is the Fresnel term (Schlick's approximation)

**α _{h}** is the angle between the view vector and the half vector

**m** is the specular exponent

**θ _{h}** is the angle between the normal and the half vector.

Now, this entire thing gets multiplied by the irradiance to get the final radiance:

It seems from this that it's quite difficult to get a nice Fresnel sheen, particularly on rough materials like asphalt. This is because, in order to maximize the specular term of the BRDF, both the view vector and the light vector have to be at grazing angles with the surface being rendered. Unfortunately, when the light vector is at a grazing angle with the surface, the irradiance factor is near zero, and so you don't get much light at all.

The situation can be somewhat improved by using a large m. Then, the normalization factor is large and this results in some light. However, it also results in a very sharp highlight, which is not helpful if the material is supposed to be rough.

In fact, it's difficult for me to envision a scenario where you can get strong Fresnel, strong n_dot_h, *and* strong irradiance.

I could divide the specular term by the clamped n_dot_l, but I'll have to add a small epsilon to avoid a singularity when n_dot_l is zero. Also, that seems to be sort of a hack without any physical basis and it doesn't conserve energy.

Is my thinking wrong?