Bad Sector
Arcane
- Joined
- Mar 25, 2012
- Messages
- 2,226
- better occlusion culling, camera has far plane unlike Unreal which uses scene bounds
Camera-based culling is frustum culling and both engines use the full camera frustum (including near and far planes) to do culling.
Occlusion culling is an additional step to hide invisible stuff that are still inside the camera and Unity only does precomputed occlusion culling as described here using a PVS structure - this must be explicitly set up and of course only works with static geometry (e.g. a door that hides a ton of geometry wont stop that geometry from being sent to the GPU).
UE can do precomputed occlusion culling too as described here but it can also use hardware-based culling via occlusion queries (which is the default). This makes it possible to use not only static objects as occluders but also dynamic ones (e.g. said door above will actually stop the geometry from being sent to the GPU). In fact since occlusion queries work with the existing depth buffer anything that writes to it can become an occluder. UE also has a few other methods for dynamic occlusion culling depending on the target platform. FWIW UE used hardware occlusion queries ever since the first versions of UE3.
It seems that in this case Unity implements only a single method with the common functionality that can be found in all of its supported platforms (e.g. not all mobile devices support hardware occlusion queries) whereas Unreal implements several methods to take advantage of each target platform. This is most likely a difference in terms of expected use for the engine: Unity most likely expects people to port their games to a ton of different platforms with barely any changes (if at all), whereas Unreal expects people to only target specific platforms and make special versions for any weaker platforms if needed (consider how many UE4 games wont run on mobile platforms at all so there isn't a point in limiting their featureset to stuff supported only by those platforms).