How to setup "thin" translucent material in Cycles for grass and foliage?

What’s is the proper way? I tried translucent BSDF and mix shader to mix with diffuse BSDF but looks like translucent BSDF doesn’t let the light go through a lot really. Just makes backsides glow .
It makes too dark areas in between grass blades IMO . Requires too many bounces .

Many renderers have a special “thin” option for transmitting light . I tried principle BSDF with high transmission and transmitting roughness but it doesn’t look right too somehow. I see sort of Fresnel threshold .

So what’s an efficient way currently? Could somebody share the material and efficient render settings for big grassy scenes.

Should I do alpha in the grass and leaves or it’s better to get it as geometry speed wise ?
Also is there a way to show not each and every blade in geometry node pane while render them all?
Is it still easier to use old particle system?

Funny I just researched this again yesterday to make a foliage material. Thanks to everybody who shared the workaround : https://devtalk.blender.org/t/diffuse-translucency-way-too-difficult-to-set-up-in-cycles/807/26

3 Likes

Thanks a lot for the link Hadriscus
I am not sure I’ve understood why it needs second roughness although.

But since I am not going to do close ups with normal maps . Just a landscape render I am more concerned about this:

The left side is Cycles , the right side is LuxCore Render . Notice how in right side more green light coming through the planes and makes indirect illumination in the shadows close to transmitting planes .
And I set the Cycle look to lowest contrast.

I have no idea which one is more physically correct but I would like to reach that Lux Core look . Tried to increase transmission bounces but it doesn’t make it.

IMO this lack of transmitted light makes sort of too much of a contrast and dark spots in between grass bunches. Nothing it couldn’t be tweaked on compositing stage but I am still wonder if there is something in render settings that could make it .

1 Like

I thought the translucent BSDF was supposed the be added ( with add shader node) on top of an existing standard material… That’s what I do for foliage or paper and if works well.

Since the translucent node produce only the back light I’m wondering if it’s meant to be mixed, even though that’s what we are supposed to do in general…

Any more insight on that ?

There’s no recommended workflow with shaders in Cycles, to my understanding the different bsdfs were added to cover some ground, but there were never guidelines, so to say… it’s always been up to the user to mix them achieve produce realistic results. It’s also not a very At least until the principled was added. So you can mix it however you like, the issue has to do with how the fresnel node returns an invalid value on backfaces. The IOR has to be inverted to behave the same as frontfaces.

1 Like

Ok thanks for explaining !
However I’m pretty sure there is a standard way of mixing nodes, if not why all these discussion about PBR and such, we would all do things differently, and truth is , we can mix glossy and diffuse how we want but mixing it with fresnel is the standard way at least.

I’m pretty sure it’s the same with transluscent and probably other corner cases, but indeed the proper way of how to mix them is hard to find. But I’m pretty sure there is one at least somewhere in the CG realm.

Wouldn’t that be confusing to code a functionality without any prior thought on how it should be used ?

1 Like

I’m not sure the translucent BSDF is very physically accurate to begin with? (https://docs.blender.org/manual/en/latest/render/shader_nodes/shader/translucent.html#translucent-bsdf) Seems like it just scatters rays through the medium, not accounting for refraction. The way I understand it is an approximation of what would be a more “physical” setup : leaves with some actual thickness, and SSS for transmission.

For reference the workaround produces these results in my case (mangrove tree)


I don’t think there is a proper way, it’s just approximations all the way down. Would you say there is a “proper way”? A leaf is so complex : https://en.wikipedia.org/wiki/Plant_cuticle I think branching off the cuticle into its own glossy bsdf or a clearcoat layer makes sense, because that’s the first surface a given ray encounters. Beyond, I think there’s no point in trying to model it accurately. It’s layers upon layers of polymers and cell water, each absorbing a little light… The best candidate for that is SSS, but my object needs to have volume for it to work. So I’m going for a mix of diffuse and translucent, because it allows for shadows to be casted through the object. It works okay with a backlight too :

3 Likes

I think Transluscent , SSS and Volume and probably refraction simulates light passing through a volume but they’ve got different use case for optimization purpose.

In case of a sheet of paper the volume is so thin that it’s not worth using SSS, and SSS is a specific case of volume…

In theory we could use one in place of the other, but it won’t be practical.

As for how physically accurate transluscent is, I don’t know, but still that doesn’t mean there isn’t a proper way to use it.

2 Likes

I apologize for going on a tangent.

Translucent rays aren’t considered transmission rays as far as I know, so that makes sense.

There’s more light bleeding in luxcore… that could be for a number of reasons. Lighter ground albedo? lower ground roughness? or simply differences in closures or light transport, that you can never have exactly match. Try using an add shader for the translucency instead, or mix it with less diffuse? Or you can ditch the translucency and go for a refraction bsdf with high roughness instead, but it’ll likely be longer to converge and noisier.

1 Like

Thanks for suggestion Hadriscus.
It doesn’t seem like depends on roughness or albedo a lot.
For a tree render it makes an impression of sort of SSS , the light penetrating deeper into leaves canopy making it look softer like a bit of a bloom added . The effect I couldn’t recreate in Cycles well enough. I see same thing in 3d max actually . A bit of light going through the translucent surface .

I set the same color and roughness in both renders. The difference is not that much noticeable as with LuxCore although. In 3d max it’s physics materia (Arnold GPU) with “thin” checkbox that switch SSS to translucency.

I don’t think so. For a fully white Diffuse and Translucent material lit from both sides you now get them added together obviously breaking energy conservation. My translucent materials are mixed somewhere in the 1%-40% range (maybe also refraction, then glossy is mixed in with fresnel at the very end - just be aware of and fix Snell’s window on thin geometry) and works fine for me. Using Translucency with Principled is technically wrong as glossy no longer comes last, but if it works okay then it works okay.

2 Likes

Yes, translucency is technically for thin, SSS for solids. Except that SSS doesn’t function as light transport. Fully covered solid colored curtains with SSS will not let through any light into the room, only make the material glow. Translucency is only Diffuse acting on the backface, spreading light uniformly rather than directionally like Refraction.

3 Likes

Thanks a lot for the explanations !

Sounds right indeed !!

I’m not sure about that, at least it’s close to what is happening in real life, if light enter both side of the sheet they influence both sides as well ?

I’ve tried that :


1 : Diffuse
2 : Translucent
3 : Diffuse and translucent added
4 : same as 3 but mixed with glossy

1 Like

The translucent shader is an additive shader. Don’t use mix, the translucent shader is effectively an inverted diffuse shader that only catches light on the back sides of the mesh instead of the front side.

One way to offset potential energy issues you can give each shader half value rgb. I’m not at my pc I can’t verify anything at the second

3 Likes

Don’t just “look at the white”, measure it. Setting it up so I get close to 1, it adds up to 2 using Add Shader. Think of it physically:
If 100 photons is part of the absorption portion, you can have all 100 bounce around inside a little, pick up any color, and bounce right back out in all directions. This would be the Diffuse Shader.
Or all 100 bounce around inside a little, pick up any - more color more likely - and penetrate through to the backside and scatter out in all directions. This would be the Translucent Shader.
These 100 photons can’t possibly be bouncing back AND bouncing through at the same time.
Well, at least that’s my logic. I’ll typically use a hue saturation node to bring down the value and the saturation up for the translucent portion, and also make sure the mix factor is never above 50% - at least I can’t imagine any materials having this property.
Similarly, we use fresnel to mix diffuse and glossy, as simply adding them together would break energy conservation, as the photons can’t do both.

Would like to see some devs pitch in on this, as the manual wording “The Translucent BSDF is used to add Lambertian diffuse transmission.” doesn’t convince me.

That’s the same as multiplying the color going into diffuse and glossy with 1-fresnel and fresnel and then adding diffuse and glossy. Result is the same, but less elegant and I don’t see why when we don’t have to. For some reason I’m getting a blast from the past on this one. :smile:

1 Like