In a Tech presentation, Al Hastings (CTO) shared the details of both the static and dynamic occlusion systems that we used for both Resistance: Fall of Man and Ratchet and Clank Future: Tools of Destruction.
Our static occlusion system is basically a straightforward grid-based PVS which has the advantage of being:
•
Very fast to query at run-time - almost free
•
Relatively low memory footprint
•
Doesn't impose any restrictions on level construction techniques
But this method also comes with some disadvantages:
•
Labor intensive and time intensive process
•
Hard to keep it up-to-date during production
•
Can't handle moving geometry, deforming geometry, destructible geometry
•
Suffers from some over-inclusion (large ties are the biggest problem, compression error is a secondary problem)
•
Monolithic database (hard to stream, etc)
Our dynamic occlusion system is another straightforward system. We pre-render the bounding volumes on the GPU to determine visibility. The advantages:
•
Relatively lightweight system (rendering the bounding volumes usually takes a fraction of a millisecond)
•
Works with any level design
•
Typically it manages to cull that vast majority of objects that should be culled.
And the disadvantages:
•
Basing occlusion on bounding volume visibility works poorly for some objects (long, thin mobys in particular)
•
Visibility spikes can occur after camera cuts and mode transitions
Check out Al's slides to find out more about how they're used and implemented in practice.