I've seen quite often that the diffuse term is being modulated by a diffuse fresnel term using NdotL as an approximation like so:
Ldiff = cdiff * (cosTheta_i * E_L * (1.0f - DiffuseFresnel));
What I don't quite understand is since cdiff is already the directional hemispherical reflectance constant of lambert's BRDF should that not already be energy conserving ? Since we only define the diffuse color in between [0-1]. Do We need to do this because we combine it with a specular brdf ? But shouldn't it be enough then to only make sure that the specular term is energy conserving ?
Am I missing something ?