It’s surprising that your load times are affected. The studio beta option only toggles whether you do the culling part. The bookkeeping for occlusion culling is done whether you are using it or not, and was on the order of milliseconds for all the places I tested.
You may have found something we didn’t, so I tested load time. I measured from clicking
on your experience in the Roblox menu until I can press “Play”, with and without occlusion culling enabled. The load times seemed identical either way. What were you doing where you noticed a difference?
Might have been a false alarm on occlusion culling, actually. I think what actually improved the load time was restarting Studio. Seems like there’s a memory leak that’s particularly brutal in my game after lots of iterations of Play Solo.
I believe this is related to Occlusion Culling, for some reason it constantly spikes and even takes over 11+ms of frame times in some cases, is this normal or expected? I think this is too much frame time for Occlusion Culling. This is on my Samsung Galaxy M12 phone. I am seeing it taking up to 6+ms of frame times sometimes on my Windows laptop too.
Occlusion culling is asynchronous. So, it doesn’t matter how much time is spent doing the query, just how long is spent waiting on it. If it isn’t being waited on, it will spend more time (up to a point) to get more culling. If it is being waited on, it will progressively dial things back to get performance up. All our testing has shown that we wait almost no time for occlusion culling, which means it’s not a bottleneck.
I previously used the cylindrical special meshes to hide objects and since it got patched I’m wondering if we will ever get invisible occlusion cullers since it’d really be helpful when hiding things in plain sight.
I’m working on a game with a big map and I’ve noticed a scene culling a background with much more in it (Image 1) but less overall rendered triangles gets half the frames in comparison to a scene with more triangles rendered but not culling much (Image 2).
This is amazing to hear! I do have one question though, as of now it only occludes parts, but will it have the ability to occlude polygons instead of parts in the future?
Could you point me to a place file where I can reproduce this? Occlusion culling is supposed to scale itself back if it’s taking too long so that it doesn’t hurt framerate.
Culling individual triangles will always be too expensive. That’s basically what GPU hardware does when we tell it to draw everything, and software can’t compete with dedicated hardware for determining whether each triangle is visible. But we can help the GPU hardware if we can eliminate many entire objects that it no longer needs to worry about, which is what occlusion culling does.
Is there a way to turn this off? It ruined my voxel game’s performance at higher render distances or with caves enabled. It wasn’t like this before the update and you had the option to toggle it.
Are there any plans to occlude beams? I know VFX is mentioned but not sure if beams would fall under that category. Beams eat up draw calls so it could be a big benefit to games that use them heavily
Hi, I have been having a similar issue to CaspianLake with my own game, except it’s 10x worse. It is taking 100ms per frame to perform it’s task. This started on the 25th based on average playtime. Before anything was changed, the game was doing 240fps with the optimizations I implemented. After the changes, the fps has dropped to 9 fps when looking in certain directions, especially in first person.
Sorry for late reply, but I think my game is having issues due to this update possibly as it looks very similar to other reports here, could you please help us in any way?
Hi,
I’m aware that occlusion culling is supposed to dynamically scale itself based on different performance constraints, but I’m finding that occlusion culling is instead significantly degrading the performance of my game on a minimum specification mobile device (iPad Air 1st generation).
The reason for this is that occlusion culling uses up one of the two available cores on the iPad Air (Apple A7 is a dual core processor). Previously, it was possible for the render thread to run in parallel to the simulation thread with just two cores, but now one of the two cores is occupied by the occlusion checks which take up several milliseconds.
You can see this happening here: (take note of how physics and heartbeat simulations only start processing after the frame is completely finished rendering)
The way it was before this update: (this is a simulated screenshot, I unfortunately do not have any microprofiler dumps saved from before occlusion culling going live. Notice that heartbeat can begin calculations while render work is being performed)
What this effectively means is that now, on a device with only two cores (which is the case for the iPhone 5s [aka minimum spec], iPhone 6, iPhone 6s), depending on the game, frametimes could be doubled (since now the render thread and simulation thread end up occurring sequentially, not in parallel. I can confirm that for my game, scenes that used to run at 60fps on my iPad Air now run at an unstable 30-40fps.
PLEASE PLEASE make it so on devices with only two cores, occlusion culling is either disabled or only runs if the game is severely GPU bound.
(note: my game is very light on the graphics side to begin with so although the render thread may have been longer pre-occlusion culling, it was still significantly faster to run with the simulation thread happening in parallel)