Have made a simple backfacing based setup for filtering the albedo color with vains mask from albedo is based of simple inverting and contrast increase depending on the albedo ofc.
with 0.9 absorption fac
For comparison without absorption filtering.
Awesome. A question, why invert the color of the texture?
Thanks.Because this leaf albedo has very bright veins, I inverted the albedo so that the veins become darker, and then used the result as an absorption multiplier.
For other albedo maps, the method you use to create the absorption map is entirely up to you.
Here the preview from the albdeo to vein mask
This absorption map gets mulitiplyed by the absorption color to get the filtering mask
In the last color mix the amount between white (1,1,1) and the filter result gets interpolated as mix fac how strong the original albedo gets filtered,thats it
Front = Sun facing, dark shiny, adaxial side.
Back = In shade, bright rough, abaxial side.
The problem is that absorption isn’t an effect based on backfacing, but the not present thickness. So I would go further, one shader node setup for Front ; darker color, less roughness, and a different bump map than the Back side; brighter color, rougher reflections (due to the micro texture from the pores). Some grasses are much more uniform. I can’t think of anything to properly mimic a leaf with the current limitations of Principled. Do it manually, although you might not be able to get the identical response wrt energy conservation.
That would be mix of diffuse and translucency (typically less than 0.5). Then mixed with a colored refraction (Geometry/Incoming normal based) with big roughness, if you want a hint of lightsource hotspot. Then mixed with a semi rough glossy using your favorite method of “PBR.fresnel” that accounts for roughness and flipped normal, possibly microroughness (will not be equal to Principled, but “good enough” for practical purposes).
Then you do the exact same setup for the backside using a different texture set. Maybe reduce the white glossy for the Back side to mimic specular energy loss due to the pores, even if albedo is brighter.
With Front and Rear set up manually, you mix these with a Geometry/Backfacing.
Finally, you mix in Transparency Shader using the Alpha map.
For Principled to work for this, we’d need:
Of course, getting these maps is hard. Might want to craft your own based on the one set for the Front side.
The pre-filtering method I used is basically the same as what a transparent shader does.
For example, with a transparent shader, (1,1,1) is fully transparent, while (0,0,0) blocks all light. Any value in between 0 and 1 allows a corresponding amount of light to pass through.
The multiply-based pre-filter works in exactly the same way. This also happens in translucent materials.
Thickness does not necessarily represent physical absorption. It depends on the material itself. For example, if the veins of a material are hollow, like in Swiss cheese, or contain water, like in plants, they can transmit more light. On the other hand, the veins of a leaf may have much higher absorption.
However, this is mainly a mapping issue, similar to what you might encounter with SSS maps. It’s up to the artist to decide how dense, thick, or transparent a material should appear.
By the way, if you wanted to, you could also generate a thickness map from a 3D model, similar to how a height map can be generated.
Filtering should be working as said.Btw if you want to calc your absorption map then use the Beer-Lamberts law to generate a map based on physics.
You mean scattering effect by roughness in the medium.Keep in mind this filtering is based on a thin filter and not a volume based calc like a SSS. You could blur the albedo and the filter map to get a scattering roughness effect for the backside.
I think its do doable to a degree but makes mostly sence in a hardcoded shader like the principled because this needs closure calulations of the surface normal for the refraction i guess.
Look at the Open PBR thin wall spec.It works like a double side calculated shader.the best would be to have a filtering for the middle to get the simulated transclucent absorption/coloration view and lightdirection independent with the amount based on the anisothropy
If you want to scientific calculations here is a good site
With my old RYB color converter node group to get absorption for RYB wavelengths with Beer-Lamberts equations with thickness control.
Here a example with maprange that uses random object data for thickness preview
And a render with more moderat random thickness
some autumn settings,absorption preview
rendering with the autumn absorption settings and slightly different thickness variations