Recently I implemented some punctual lights (spot and point) with everything I learned from Frostbite's course in Sig'14. By the advice of Sebastien Lagarde in his course, I used 'Luminous Power' (i.e. lm) as the measure unit for the light intensity. Everything is fine and I am so excited.
But unfortunately, I found some difficulty to implement the simplest Directional Lighting... because I couldn’t found some ‘fall-off’ term by distance. I have learned from the course that EV100 is a suitable measure for luminance, and the equation for converting the EV100 to luminance is: L=2^(EV100-3). So I just simply used this L to calculate the diffuse & specular values, without any 'fall-off' terms. My pseudo-code is shown below:
float3 L = pow(2, EV100) * 12.5f * 0.01f; //i.e. 2^(EV100-3)
float3 l = normalize(-light.dir); //dir to light
float NoL = dot(l, n);
float3 diffuse = L * NoL; //without any 'fall-off' terms...because directional light DO NOT has any punctual position..
float3 specular = NormalizedBRDF(...) * L * NoL; //The BRDF is correct and normalized. so I ommited its details here.
I have also learned from the web that in a real scene for the day-light, its typical EV100 value is something about 14. But when I directly used the EV100(14) to test my directional light, something was definitely wired…My result picture is shown below. The whole picture is obviously OVER-EXPOSURED. I don't know why I couldn't get any 'natural lighting' sense from it. For comparition purpose I also attached my result of EV100=4.
I used FP16bit RT to render the scene, all results are gamma-corrected and I have also tried some tonemapping, but little helps... What‘s wrong about it? If I missed something (such as auto-exposure etc.)?
Any suggestion would be greatly appreciated, thanks!