It’s long been known that Rust has poor visibility culling. The problem is mostly because we can’t use Unity’s own occlusion system simply due to the fact that our maps are procedurally generated. However, there are some solutions out there that work with dynamically generated worlds, and I’ve been working on implementing such a system.
The new occlusion culling recognizes occluders, like terrain, and allows for fully dynamic occludees. The first version of the system just landed on Prerelease and can be toggable using the console command “culling.enabled 1”. Please note that it’s not improving performance just yet as we’re still testing and validating results. Do expect improvements over the coming days, however.
The image below shows how the system working on our procedurally placed rocks and cliffs:
On the bottom left you can see our current distance-based culling, while on the bottom right you can see the new system working that can cull objects which are not within the camera view or are occluded by terrain.