[Studio Beta] Introducing Occlusion Culling

What counts as an avatar in this context? My game uses custom characters using skinned MeshParts. Is an avatar defined based on if they are set as some player’s Player.Character property? Or this this some special R6/R15/Humanoid edge-case where custom characters would be excluded?

12 Likes

I’ve waited ages for this, probably one of the best optimizations in Roblox.

There are so many games where tons of geometry and textures are being needlessly rendered.
This will HUGELY benefit games with lots of indoor areas, caves or busy and populated cities.

This might also majorly benefit open-world games since everything that’s hidden behind a huge mountain doesn’t need to be rendered.

I wonder what the performance improvements are going to be.

9 Likes

This is insane. I learned how to do this in C++ last month. I’m so excited to see it used on Roblox!

8 Likes

omg this is amazing, imma test this rn

2 Likes

Literally the best update on roblox

4 Likes

if anybody knows just one question? when i enable the beta feature does it auotmatically enable the new update OR is there like a special property i have to change on the parts?

1 Like

Once you restart Studio, the update should automatically be enabled. You shouldn’t have to enable a property on parts to activate the occlusion culling, since this is meant to prevent parts that aren’t visible from rendering.

2 Likes

An absolutely amazing feature to have! Was wondering when this may be released since its announcement. Thank you!

2 Likes

Can’t wait too see the performance improvements, especially on large maps or games that really need the boost that this could bring!

2 Likes

alright thanks i wasnt sure on it since i didnt realize when i was testing

1 Like


Before Occlusion Culling (our most dense scene):
3mil tris, depth draw count super high

After Occlusion Culling:


372k tris, depth draw count super low

20 Likes

And with this, Roblox on mobile and old PCs just became a lot more playable.

So for those who aren’t techs, here’s a simpler explanation:

Imagine painting a scene with acrylic paint. However, you’re being told how to paint the scene blindly and have no reference art.

The person describing the painting is describing every individual object in extreme detail. This doesn’t prove a problem, but what does prove a problem is that the painter is describing details you’re painting over. He’s describing furniture in a room, for example, but the viewpoint is not inside the room, you only get the barest glimpse of a couch by the time you paint the connecting wall, which hides a lot of the details you just painted.

This is a slow process, obviously. You’re spending time painting things that just dissappear later.

But, then Oclusion Culling happens. Suddenly, you are able to tell the person describing the painting to you, to avoid describing things you are painting over. Instead of hearing about the lovely floral design in the table next to the sofa, and each individual petal, now you’re only told about the little leaf hanging over the side of the sofa. You’re completing the painting a lot faster because you no longer hear about stuff you shouldn’t need to paint.

This matters more for older PCs, or smaller hardware like phones, where every draw cycle counts. It won’t make the game playable on Pentium PCs, but it will make a lot of older Core 2 Duos able to run the game at a decent framerate once more. Especially because they aren’t painting that lovely ten thousand polygon count floral decoration that’s behind the wall.

24 Likes

Will occlusion culling have the same issues streaming service has or will scripts and the physics engine still be able to address parts that are culled?

9 Likes

W, i actually cant wait for this next generation of roblox games, so much more performance will be able to open the window for more games with high quality graphics

5 Likes

This is a rendering change only. Scripts and physics will have no issue.

7 Likes

finally i can (hopefully) run games well on my awful computer when this fully releases

3 Likes

roblox, please delete AND DONT LISTEN TO all those angry voicemails i left on your machine. I love you baby I really mean it

9 Likes

absolutely goated feature, will there be support for surfaceappearances using transparency?

7 Likes

Oh, thank goodness. I often had to script mediocre occlusion culling but I’m glad to see a more effective and convenient way to do this

2 Likes

Our top priority is to first release the current technology in a stable state to production, so that experiences can benefit from it as soon as possible.

Then, we’re going to look into extending what object types can be culled/occluders. The first objects we’d like to cover with an extension would be avatars. We’ll keep Viewport Frames in mind! We don’t have any timeline to share on extension of Occlusion Culling at this time.

Thank you @LvieReal! Forwarding to our engineering team and we’ll take a look.

+ @plaincamron666, @Astra_X2, @evilforge
We don’t have a date to share yet, but our engineers are actively working on getting it out as soon as we can and it is our top priority.

Good catch! We meant when you’re profiling your experience in Studio. If you’re profiling on Client directly, then you can disregard this warning :slight_smile: (I will specify in the announcement).

Occlusion Culling cannot cull any objects that are Fast Clusters. Skinned MeshParts would therefore not get culled.

Yes! You should not see any difference to your game’s behavior - physics and scripts should continue working as before!

22 Likes