Hi,
In the majority of cases of 3D foliage, translucent surfaces such as grass blades, tree leaves and so on are modeled as a thin, one sided polygonal surface without any thickness, due to a sheer amount of geometry required to achieve foliage of sufficient density. It’s very rare to see clumps of grass or tree leaves modeled with actual leaf thickness, because it’d often bring viewport performance down to a crawl due to extreme polycounts.
Because of this limitation, it is not possible to utilize diffuse transmission techniques, which require some volume in order to return meaningful result, such as SSS, to shade these types of foliage. This excludes any possibility of using Principled BSDF to achieve this. The golden standard to handle this is a simple diffuse scattering on the backface, generally known as a simple translucency in most renderers. Cycles has this shader component too, in a form of Translucency BSDF.
The issue is that it’s very difficult to set it up correctly. One would assume that the setup for somewhat physically plausible material with thin translucency is pretty straightforward. You just mix Diffuse BSDF with Translucent BSDF, and then you mix the result of these two with Glossy BSDF using a Fresnel as a max factor, like this:
…and while it may appear fine at a first glance, it is wrong. The Fresnel reflection looks correct from the front, but from the back, it fades between completely reflection-less material and completely metallic material in a very narrow view angle range:
This issue stems from the core design of Cycles’ shader mixing, where Fresnel node is intended to carry also internal reflection. And the occurrence of internal reflection is based on a face normal orientation.
Fixing this, and getting a correct translucent material with right Fresnel from both sides requires quite a bit of understanding of theory behind rendering engines. The fresnel formula for the back face needs to be inverted, like this:
Only then, one can get a correct fresnel reflection on backface:
The biggest issue is that many of the Blender users are hobbyists or beginners. There is little to no chance they will stumble upon this solution by accident. Something like basic translucent material used for such a common task as shading foliage, which occurs in a lot of scenes, should not require such a deep technical knowledge.
Some users likely won’t notice something is happening, and end up with back faces of their foliage looking metallic, significantly impacting their output quality in a negative way. Others may notice it, and opt to simply mix Glossy BSDF by simple amount, rather than Fresnel falloff, which will also affect resulting quality of a material in quite a negative way. I think Cycles should kind of guide users to get good results out of the box, even if they lack advanced technical knowledge about rendering.
Here are two proposed solutions:
1,
Internal reflection should be part of Refraction BSDF, not Fresnel. This would also resolve other confusions coming from the fact it’s not possible to get a good looking refraction without mixing it with Glossy BSDF using Fresnel. But I understand it would require a deep changes in the core handling of Cycles shader Mixing, so it’s less likely.
2,
Perhaps the best solution would be to add one simple switch to Principled BSDF called “Subsurface Mode” with two options: SSS (Default) and Thin. By default, Principled BSDF would behave exactly the way it does now. When switched to “Thin”, instead of SSS, Principled BSDF would compute a simple thin translucency, exactly the same thing Translucent BSDF does:
Subsurface input would then be used as a Mix factor between Diffuse and Thin Translucency, in the same way Mix shader factor works when mixing Diffuse BSDF and Translucent BSDF, and Subsurface Color input would then become Translucent BSDF Color input.
Principled BSDF handles glossy reflections correctly on both front and back faces, so the issue would be resolved.
Furthermore, this step would greatly simplify foliage material creation. Currently, Principled BSDF material can be used for almost everything except thin foliage, which is quite a frequent use case. In that case, user has to get back to the old workflow of creating a complex material shader network like this:
Which, with the introduction of the “Thin” mode for Principled BSDF could be simplified to this:
And would not require advanced understanding of rendering to pull the shader off, aside from much faster setup and also the fact Principled BSDF could then be used to cover all of the common material types, instead of almost all of the common material types.
Thank you.