For the transparency I want to have the same. I want the transparency to be defined in a linear way that is artist friendly while mapping to the physical representation where required. After all the absorbtion for a surface is calculated sooner or later into a transparency/coverage factor. Think of it as the final factor affecting the light color in respect to the surface color. So unless I misunderstood you the absorption leads directly to a transparency/coverage value in the range from [0..1] for the three major wavelength like transparency(rgb) = functionOfAbsorption(rgb).
I understand, but for surface roughness, your linear range maps directly and unambiguously to exponential range, which means the result is still correct even though it's presented in a form easy to tweak by artists. But in this case, you are completely ignoring an entire dimension of the problem, distance, so what I can see is two possibilities:
- make your material's transparency depend on the thickness, which means the material is now dependent on the mesh
- convert the exponential "extinction coefficient" to a linear form which would be more useful to artists, but which will increase with distance
Otherwise, your artist-friendly value cannot and will not map to a proper absorption coefficient. In any case, your question of "what is the physical basis behind this" has been answered - there is none. However, as it is clear you do not want to do this and would rather use an approximation based on % transparency, I will stop here.
I'm operating here only in the flat surface situation where I have no knowledge about volume. Working for a true volume obviously is the next step like fog or liquids. That's though a different problem since there I can determine the distance and then absorption is useful and artist friendly. For a flat surface though it makes no sense and stuff like glass is typically rendered as a double sided triangle with mathetically infitesimally small thickness.
Ah, well that explains everything, I was under the impression you were working with volumes from the start. In that case, your incident light ray (after subsurface reflection) will just be multiplied with the transparency coefficient, for instance 0.25, which means 25% of the light makes it through the glass, and 75% is absorbed by it, and ends up in the shadow map as "absorbed light".
If your colored material has a transparency of 25%, then the transmitted ray has intensity 25% of the incident ray (after subsurface reflection), so multiplied by 0.25 (assuming that transparency applies for R, G and B - otherwise, multiply each channel as needed by the transparency coefficient). And 1 - 0.25 = 0.75 of the light ends up in the shadow map, as having been absorbed by the medium.
So, when the light hits the surface, it gets reflected according to the fresnel equations. Then, it goes on to subsurface reflection, and gets modulated by albedo:
lightColor * albedo -> this is the color that gets reflected from subsurface
Now, whatever light is left will be going through the glass and exiting at the other end (ignoring the possibility that it may get reflected back into the glass), this is where transparency comes in:
lightColor * albedo * transparency
And the shadow map is then equal to:
lightColor * albedo * (1 - transparency)
At least that's what I would expect. Can you detail exactly what all your parameters are, and what happens when light hits a glass triangle for instance?