Keep in mind that the light coming from an object will come from both the surface and the subsurface of a material.
If we’re just talking about light being scattered back out and not about transmittance (refraction), then only the surface can produce a smooth specular reflection. Specular as in mirror-like.
For most non-metals the biggest percentage of light being bounced back out will come from the sub-surface. The sub-surface is what gives the material its ‘colour’, meaning some wavelengths don’t make it back out. For most materials it’s as scattered as you can get (Lambert).
The light being reflected from the surface will not be tinted; white light will be reflected as white light. The direction and/or roughness of the reflection depends on the topology of the surface, micro and macro. The amount of light reflected back depends on the material.
So what happens when light hits a dielectric/non-metallic surface. First a part gets bounced back from the surface, this can be in several directions depending on the surface structure and the amount can be calculated with the Fresnel equation. The remainder will go through to the sub-surface where it’s either absorbed and turned into heat or re-emitted. If it’s not absorbed then it can go through in roughly the same direction it came in with, which is transmittance, think glass, or it can scatter around and go either back towards the surface and exit there or go deeper in and maybe go out the other side. As it will mostly scatter around quite a few times the direction is very randomised.
Very dark materials might have more light being reflected from the surface than from the sub-surface, as the light just gets absorbed there. If the micro-topology is so that the surface reflection might actually hit another part of the surface it will start the game over and it might get reflected back from the surface again or go on to the sub-surface. In this case the Fresnel ratio of light coming from the surface will not hold up and this is more so the case when a surface gets rougher.
For metals most of the light being reflected will come from the surface as opposed to non-metals where it’s the sub-surface. Here the amount being reflected back from the surface is very wavelength-dependent this is what gives metals their ‘colour’, again opposed to non-metals.
Light being reflected from the surface will get absorbed more or less easily depending on the wavelength of the light. Gold will reflect back more red light than blue light. White light will be reflected back yellow/orange in this case. Also here the direction will depend on the topology. The amount of light being reflected for each wavelength depends on the material.
What goes through to the sub-surface is usually not a lot and there it’s very readily absorbed. Metals do transmit/refract light though, but that’s only visible in very veeery thin sheets. For our calculations we can pretty much discard the sub-surface part. Light gets reflected back from the surface according to the full Fresnel equations and it’s important to calculate this for red, green and blue. Also here surface reflections might hit the surface again if the surface is rough.
Because only metals reflect so much from their surface and because only surfaces can give mirror-like reflections only metals are used for mirrors. You’d see about 10 to 20 times less of yourself in a smooth piece of plastic. Actually if you look closely at a mirror you see two reflections, a faint one from the glass cover and one from the metal backside.
In CG the sub-surface reflection going back out through the front surface is usually called Diffuse, Colour or Albedo. Light going through the sub-surface and out the other side is called Refraction, Translucency or Opacity. SSS shaders cover both these reflections.
The surface reflection part is called Reflection and/or Specular.
Technically speaking you should use only surface reflection parameters to describe a metal. Obviously though it’s a lot easier to calculate a very rough surface compared to a very smooth surface as you don’t have to trace as many rays. If you roughen the surface of a metal enough it will be much more effective to just set it with a Diffuse parameter instead of using Reflection and then wildly trace rays to get to the same result as a Lambert shader.
To answer your question Akin, it would be nice to have a slider that goes from a 100% randomised Lambertian direction to 0% mirror-like reflection for surface reflections. The same goes for for transmittance. In the meantime you could progressively blend in the diffuse part the rougher a surface gets. It’s not 100% technically correct especially where it’s about 50% rough but it works well enough.
I’ve said it here and on CGTalk a couple of times now, material parameters are named very confusingly. I’d like to see a shader where it’s split up in surface and sub-surface and just a roughness and a direction (multiple lobes, closer to normal, etc.) parameter for both reflectance and transmittance.
For a simple non-metal setup you can set the roughness for the surface and the sub-surface. If you want glass-like refractions you can lower the roughness for the sub-surface. You’d need an absorbtion parameter as well which will set both the depth and colour of the sub-surface (the Diffuse). This will allow for SSS results as well. Then set the IOR and you’re done.
For metals the sub-surface wouldn’t matter and you could set the surface reflection by colour for ease of use or by entering the two Fresnel parameters for metals for red, green and blue each. Then adjust surface roughness.
Of course I’d like to be able to tweak the amount of reflection vs. specular rays and things like that for speed, but for a simple setup that would make more sense and it would be a lot easier to understand what happens when light hits a surface without having to blend multiple Vray mats with SSS shaders and not understand why you’re actually doing that; it’s because there are different shaders for different kinds of roughness and transmittance.
I’ll try to put some pictures up on how that would look like.