Occlusion Systems

11/20/07 - 16:00 PST - Posted by Mike Acton, Engine Director

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)
  • One frame lag issues
  • 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.
Download the presentation

[ 0 ]