Subsurface Scattering in Roblox Forests

As you know, Roblox dosen’t allow for subsurface scattering. It’s not included in their Surface Appearance. This bothers the heck out of me since photorealistic forests rely on translucency/subsurface scattering to make a convincing scene.


(Blender Forum, 2021)


(Reddit, by user soulmaskglobal2024. Originally from RDR2)


(Wikimedia Commons)

My goal is to make realistic forests that are optimized to run in real time in my upcoming military rpg.

I have most of the pre-production details done, but one thing I can’t crack is how to integrate quality subsurface scattering in real time.

One of my makeshift ideas is just compartamentalising leaf textures and use raycasting to detect if they are being struck by the sun, then toggle a texture on the bottom half that glows (like a sunkissed leaf). This would be graphically expensive, and would need to be limited to the player’s surroundings.



Scripting not done, but a texture that is majority struck by sunlight will enable a texture on the underside

I spent some time here and there asking and debating with scripters if another way is possible.

For now, I will scrap the idea until Roblox (eventually) introduces something similar to subsurface scattering, or unless someone here has a solution.

Thank you.

4 Likes

There is one heck of a solution that is miserable honestly.

You could export the whole thing into Substance Painter for example and bake it leaving the Ambient Occlusion setting on the default and then make 3 different versions updating the mesh.

Of course, this is a horrible horrible solution and would take up too many resources.

But having subsurface scattering would definetly be something that we should have in Studios.

3 Likes

I don’t have the solution to your problem, but I messed around a bit to fake it on a player model.


As for the leaves, just a thought, maybe inset an edge and flip those normal in the opposite direction.

2 Likes

Hey, what do you mean by edge? sounds interesting, so I flip the normal map.

2 Likes

Hello, I just sort of found out a solution that uses beams. If you put a grass or leaf texture on a beam, it lets light pass through it.

Althought you have to adjust the brightness and light influence, you can get a pretty good result.
For grass or leaves, I recommend playing with the curve size and attachment location to get natural curves in the “model”.

I also used several beams and rotated them to make the whole grass model look 3D, like any other model.

Cheers!

2 Likes

unfortunately roblox kind of just flips us off on any kind of resource-intensive features, so of course we have to find hacky ways around it.

I’d assume you have dynamic lighting (day/night cycle) but you could try baking the subsurface scattering into the texture from blender or whatever software you happen to use…

1 Like