I’m coming from a different arena using a proprietary engine for almost a decade and I was trying my hardest to find out information about occlusion and how it works in ue4. From what I read is it done automatic based on what is seen from the camera and the static meshes bounding boxes? I’ve seen the pre computed viz volumes, which is what I’m used to. I’m building a large scale modular environment and i want to make sure I’m not rendering everything at once. Any info or a nudge to documentation to explain the process of setting it up would be greatly appreciated.
If you are building a large environment you’re not going to want to use precomputed visibility. It doesn’t scale up well in either processing time or memory to large numbers of objects and view cells. It’s mostly for smaller levels and platforms that don’t have occlusion queries (mobile).
Sadly there are no UE4 docs on these systems, but the UE3 docs are mostly relevant:
Dynamic occlusion culling is on automatically, it tests the bounding box of each object against the depth buffer from last frame to determine visibility. The default method right now is called HZB (Hierarchical Z Buffer) but there’s also the standard occlusion query method if HZB is disabled. You can test efficiency with ‘stat sceneocclusion’.
The main thing for building content is to make sure you have plenty of good occluders. This means zig-zags in the level, canyons, mountains, etc that block things behind them so they can be culled.
Is there anyway in UE4 to see stat of those?
I have used stat sceneRendering and saw initViews takes much longer with HZB than with standard hardware occlusion queries (HZB 0,91 ms and standard only 0,35 ms). I am still new to stat profiling and… well everything in UE4, but shouldnt HZB be more efficient than standard occlusion queries, or does it depend a lot on my GPU? I also notice FPS drop from 108,92 to 103,03 when using HZB.
Edit: Nevermind, seems like HZB should be really used only for large scenes with lots of occluders.