So I am currently in the process of implementing Physically based Shading in my pathtracer using microfacet models and I'm quite stuck at comprehending light interaction with diffuse surfaces.
First of all I want to get a clear concept of how surfaces actually get their color. We all know that the color of any surface is due to their property to absorb light of certain wavelength in the Visible region of the spectrum. More specifically, according to the answer here, when light hits an atom or molecule it gets absorbed if the electrons have the same vibrational frequency as the light. Which is the reason for the color of a surface. Now let's see what happens when light interacts with a diffuse surface.
When Light hits a diffuse (dielectric or non-metal) surface 2 things happen. It gets reflected specularly or it gets refracted, scattered, and re-emitted which we call "diffuse reflection". The amount of light that gets reflected/refracted depends on the Fresnel Equation which are wave-length dependent. This gives off the hint that an RGB triple also arises due to wavelength dependent IOR and thus maybe the reason for the color. So here's the main confusion.
- When light hits a diffuse surface and gets reflected specularly it's possible that the atoms or molecules at the interaction surface absorb some of the light. This might be the reason for the color. On the other hand, the composition of light also changes in each of the R, G, B spectrum due to wavelength dependent index of refraction and Fresnel equations. So what's the real reason for the color? Is it the former or the latter or a mix of the two? I've read some notes by Naty Hoffman where he also suggests using the Fresnel Reflectance values as the specular color when calculating a specular BRDF like Cook torrance. Adds a lot more to my confusion.
After the above has been clarified how does the whole thing tie with the light that got refracted, scattered and re-emitted?
Secondly since diffuse surfaces exhibit both specular and diffuse reflection why do I mostly see people using just lambertian model for diffuse surfaces? The proper way would be to use a BRDF for diffuse reflection + a BRDF for specular like Cook Torrance. Am I correct?
Thirdly shouldn't we be weighting the diffuse component with $(1-F_{in})(1-F_{out})...$ or more fresnel terms depending on, if the refracted ray undergoes total internal reflection. Are these factors built-in by default or what?