[Studio Beta] Introducing Occlusion Culling

funny how a feature that has been a gaming industry standard since the early 2000s getting added now

but better late then never, W update
thank you roblox

4 Likes

I noticed that when meshparts are covering other meshparts the system breaks at around 150 studs away. However, at the same distance with a part covering the meshpart the system works fine.

Normal view with no part in the way:

Wireframe at 150 studs away:

Normal view with part in the way:

Wireframe at 150 studs away with part in the way:

Video showcasing occusion culling failing at distances past 150 studs when meshpart is covering other meshparts:

7 Likes

I’ve noticed the same issue but just on the baseplate seems to be a issue at certain camera anglse/positions

2 Likes

There might be some small flaws that will be ironed out over time. But I do not care. Please make this available in live servers ASAP!!

2 Likes

Amazing!

With this update, my laptop will no longer mimic the sound of an airplane, thank you!

5 Likes

please allow certain parts and models, such as highlighted instances, to be exempt from this!!!

if this is already in the works / implemented ignore this :slight_smile:

2 Likes

It’s honestly a great update! It’s nearly perfect for a city setting. In my case, the only remaining thing this would need is culling terrain and skinned meshes (since my game’s map has large mountains and dense skinned foliage)

2 Likes

What would this achieve in your case? It sounds like there’s a potential issue you may be running into

if something is culled with a highlight, that’ll be bad for things like seeing teammates (ik players aren’t culled yet) or objectives

1 Like

Does the same happen with unions that have empty areas?

1 Like

Objects with highlights are never culled it seems, this is actually kinda bad because it’s true weather highlights are set to AlwaysOnTop or Occluded (It won’t cull objects with disabled highlights either). Though it probably doesn’t matter in practice because you’ll only ever have a max of 31 highlights in a scene.

In general though, still an amazing update. Even in this first day of beta I’ve seen it work pretty much flawlessly in my scenes. This is definitely a great step forward for Roblox!

5 Likes

When will you add this?

  • Root motion (Animation)
  • Size bone (Animation)
2 Likes

Amazing update; huge kudos to the team working on this. The amount of draw calls in the most dense scene in my game has been reduced by ~80%. It helps a lot that the majority of objects in my game are behind various walls and rooms.

2 Likes

When I tried this I felt like it would have issues and stutter whenever it tries to occlude something sometimes.

This is automatic occlusion though

I thought this is going to be like SKIP and HINT from the Source Engine or something.

Along with a property like Visible from Frames, but for EVERYTHING else :thinking:

6 Likes

This is a tricky limitation from our system, but a known one :slight_smile:
Our algorithm doesn’t require any work from Creators, which means we do a number of calculations behind the scenes to identify what should be an occluder. These calculations can take time and because we don’t want Occlusion Culling to end up slowing down performance, we have included some safeguards in our algorithm.

Because of our safeguards and to avoid performance slow-downs, the wall made of many parts ends up not being considered as an occluder (we would have to identify each small parts individually as an occluder to compose the wall’s occlusion). On the other hand, the wall that is just one big part is easily caught by our algorithm well before the safeguards kick in.

This is a known limitation of our system at this time, but we are aware that it means some objects that are hidden could still get rendered at times. We are going to share more details about what are those safeguards and limitations in the future.

9 Likes

As in… a new “Occluder” part property…? :sunglasses:

7 Likes

Very good!! More optimizations allow more players and more detailed environments!!

If something is culled with a highlight the highlight will still display from my testing

HELL YEA, we needed this a lot, thank you so much, this and the VR Emulator are amazing updates!

1 Like

Awesome. Don’t really have anything to complain.

Something nice to get would be maybe some sort of method to check whenever or not an instance is occluded. Maybe some sort of method to check if an instance would be occluded at a given CFrame from the perspective of another CFrame? Maybe im pushing my luck here a bit.

Though how does this system work? Are the occlusion checks done on the CPU or GPU? And how much time does it take to check a large scene with tons of parts? I’m asking because i wish to know if occlusion culling can end up offering no real performance benefits to even performance downgrades in CPU bottlenecked situations. I do wish there would be a way to disable it for developers (just in case it may or may not start tanking CPU performance on low end systems).

2 Likes