[Studio Beta] Introducing Occlusion Culling

Ahh that actualy makes alot of sense especially performance wise

1 Like

This is a great update, but I hope Roblox adds advanced game settings to the game client, such as disabled Shadows, Texture Quality, Post-Processing Effects, Ambient Occlusion, Particle Effects, etc.

4 Likes

For some reason. I have a few models in particular that refuse to get culled while everything else normally does. Any idea what could be causing this?

View Not Obstructed Yet

View Is Obstructed (Everything gets culled except the trees)

This is the setup of the model
image

4 Likes

Certain objects do not culled right now, such as “Fast Clusters”:

This isn’t based on any evidence, but try removing the AnimationController.

3 Likes

Wow, roblox is finally catching up to the rest of the industry after like… well this has been a thing since before roblox lol

1 Like

A great addition to the Roblox engine!
I would love it if we some day would be able to tap into the occlusion culling system in order to see when objects etc. are occluded to use in our own systems.

1 Like

Here’s a bug. There’s nothing special about this map so i’m not really sure what to describe about it

4 Likes

This is an AMAZING step forward, I cannot wait for its full release :smile:
Although I wonder, will ViewportFrames also support Occlusion Culling? I can’t really check if this is already a thing as they are rendered normally even with Wireframe Rendering.

4 Likes

This is absolutely insane
I set up a little test scenario; a very large quantity of buildings composed of mainly parts and some meshes.

Just look at the tri count difference between birds eye, on foot looking from corner, and on foot looking at wall:



8 Likes

Please make it work on terrain, thanks :slight_smile:

10 Likes

What is the reason for terrain to not be considered an occluder? Having terrain be an occluder would help a lot with performance in open-world games that have a lot of mountains and hills.

That would seem to be the case as only rigged models have this problem, however removing animation controllers and bones doesn’t fix it and the model has to be reinserted without the rig setup in it to fix it.

1 Like

This is absolutely amazing, thanks to the engine team us developers can run Roblox way more smoother! Hoping to see this working in games soon😄

my dream come true i was waiting this for YEARS!

Amazing!! Can’t wait to use this.

thought i’d share demos

without occlusion culling


with occlusion culling


the map


(163,240 parts)

this update works really well for part-based maps, infact, overall we see like a 20-40% reduction in draw calls for any part-based map we plug it into even when it’s not occluding that much. i have thrown 450k part maps at this thing and you can get a smooth 600 draws like butter. this is so appreciated because traditional LOD scripts we were writing and others we were using would often over-chew into CPU performance and could not do occlusion culls very well. while this one is just incredibly light. curious to do more low end device testing and see the net cpu time diffs.

it’s really a game changer for developers, optimizing these insane maps takes months of work for a coder and the builder and even then you won’t get peak performance, this makes me think it’s possible, and better yet available for anyone who tries. i am very thankful for this update! massive blessing.

14 Likes

YAAAAAAAAAAAAAAAAA! I cant wait for it to work on published games too, my project will be a laggy one and I really want it to work :heart:

8 Likes

Is there already a release date? I’ve already tested it in the studio and honestly it’s extremely accurate and incredible, I can’t wait for this to be officially launched.

2 Likes

This is amazing. I’ve waited for this for an eternity. I have so many hidden caves and caverns and gorges that block line of sight all fully fleshed out with foliage and detail where I’ve already had to crunch polygons down to nearly nothing so that the game runs on phones.

I did want to bring attention to this FR. What sort of timeline would we be looking at for just this? I don’t care about terrain occluding parts, I do care about parts occluding terrain. Delaying just that use case for N months/years to offer complete terrain support all at once would suck.


All I want now is better control over my LOD models so that I can use streaming models and preserve my game’s art style. The algorithm Roblox uses to generate LODs for models is extremely squishy and unsightly. I love that they display when using streaming, but they look hideous when contrasted against the low-poly loaded in world.

I have to choose between a CPU bound distance culling system with custom LODs optimized for polycount and aesthetic, and streaming which takes advantage of all of Roblox’s optimization work and shows LODs while everything hi-fi is streamed out, but either looks like badly lit melted chocolate and uses way more polys than is necessary, or doesn’t change the model at all for some reason.

This is really the last thing I desperately want in the direction of rendering optimization.

image

RobloxStudioBeta_2b6ADolGEQ

image
RobloxStudioBeta_9TxqOoTP76

Treetops are totally molten, looks like I blew a hairdryer at it for 20 minutes… My art style is low poly with strategic hard edges. This is incompatible with how Roblox smooths the entire LOD model.
RobloxStudioBeta_nbqaeUu5U6

13 Likes

On the topic of optimization, is it possible to add custom/manual LOD models into the engine? It would prevent models looking weird and maintain the artist’s control over how it looks at longer distances.

There could be a property within meshparts that specifies meshIds for each level of detail (when no mesh is specified it just uses the current system)

I often find that models when viewed from a far distort in a really noticeable way ruining immersion.

2 Likes