Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Siggraph 2011: Occlusion culling in Alan Wake

9,772 views

Published on

Umbra Software's Principal programmer Ari Silvennoinen discusses "Occlusion Culling in Alan Wake" as Remedy's critically-acclaimed thriller utilized Umbra's occlusion culling solution.

We'd like to thank the fine gentlemen at Remedy for their help in putting together this presentation.

Published in: Technology, Business
  • Be the first to comment

Siggraph 2011: Occlusion culling in Alan Wake

  1. 1.
  2. 2. Occlusion Culling in Alan Wake<br />Ari Silvennoinen<br />
  3. 3. Rendering Challenges in Alan Wake<br />
  4. 4. Introduction<br /><ul><li>Rendering challenges in Alan Wake
  5. 5. Large outdoor world
  6. 6. Dynamic objects
  7. 7. Local shadow rendering
  8. 8. Global shadow rendering
  9. 9. Umbra internals
  10. 10. Techniques and ideas used to tackle the rendering challenges
  11. 11. Umbra is the visibility middleware used in Alan Wake
  12. 12. Supports both hardware and software occlusion </li></li></ul><li>Large Outdoor Worlds<br /><ul><li>Occlusion Culling and LOD
  13. 13. Efficient data handling
  14. 14. Only a subset of the world fits in the memory</li></li></ul><li>Requirements for Visibility<br /><ul><li>Scalable culling (view frustum, distance and occlusion)
  15. 15. Out-of-core objects should be cheap
  16. 16. Efficient initial construction
  17. 17. Incremental updates for dynamic objects</li></li></ul><li>Umbra Architecture <br />Client<br />Umbra<br />Insert/Update<br />Spatial database<br />Query begin<br />Query traversal<br />Callbacks<br />Query end<br />
  18. 18. Spatial Database<br /><ul><li>Axis-aligned BSP-tree with varying SAH split planes
  19. 19. Premultiplied OBB representation for objects
  20. 20. 4x3 matrix for mapping the unit cube to world space OBB
  21. 21. Lazy update mechanism based on camera frustum
  22. 22. Mark nodes as dirty, update when actually traversed
  23. 23. Automatic amortized updates
  24. 24. Split plane optimization to improve spatial subdivision
  25. 25. Dead node cleanup to save memory on out-of-core locations</li></li></ul><li>Occlusion Culling<br /><ul><li>Hierarchical hardware occlusion culling
  26. 26. Avoiding latency by interleaving work
  27. 27. Umbra does hierarchy traversal and database update tasks to prevent CPU stalling
  28. 28. Works well in practice, however 100% utilization impossible due to GPU starvation
  29. 29. Avoiding latency by delayed reads
  30. 30. Artifacts!
  31. 31. Can not use full hierarchy -> not scalable</li></li></ul><li>Occlusion Culling<br /><ul><li>Hybrid solution brings the best of both worlds
  32. 32. Screen space error bounds for artifacts
  33. 33. Adaptive query bounds
  34. 34. Some queries can be guaranteed to be ready with high probability
  35. 35. Keep the query count low
  36. 36. Queries are cheap but not free
  37. 37. Intelligent batching
  38. 38. Special rules for expensive objects</li></li></ul><li>Occlusion Culling<br />
  39. 39. Dynamic Objects<br /><ul><li>Dynamic objects live in the same database
  40. 40. Temporal bounding volumes
  41. 41. Linear prediction with conservative dynamics model
  42. 42. Stable and fast
  43. 43. Temporal bounds are AABBs
  44. 44. Has even been used with bullets driven by physics 
  45. 45. Take advantage of lazy and amortized updates
  46. 46. Keeps hierarchy balanced during movement
  47. 47. Ensures optimal node placement when object becomes static</li></li></ul><li>Dynamic Objects<br />
  48. 48. Local Shadows<br /><ul><li>Accurate bounding geometry
  49. 49. Spheres and frustums
  50. 50. Aggressive culling
  51. 51. Distance culling
  52. 52. Test every frame
  53. 53. No batching
  54. 54. Shadow casters use frustum culling</li></li></ul><li>Global Shadows<br /><ul><li>Shadow map costs
  55. 55. Shadow map generation
  56. 56. Shadow map sampling + filtering
  57. 57. Lot of objects + cascaded shadows = high shadow map generation cost
  58. 58. What do we really need to draw to a shadow map?</li></li></ul><li>Observation I<br />Cull objects in shadow<br />
  59. 59. Observation II<br />Cull objects in which do not cast a visible shadow<br />
  60. 60. Shadow Caster Culling<br /><ul><li>Use camera visibility to determine relevant shadow casters
  61. 61. Test each cascade for visibility
  62. 62. Check if the cascade contains any visible objects
  63. 63. Can potentially skip shadow map generation
  64. 64. Compute light space scissor rectangle for each cascade
  65. 65. Early geometry culling
  66. 66. These ideas generalize
  67. 67. Bittner et. Al, Shadow Caster Culling for Efficient Shadow Mapping, I3D 2011</li></li></ul><li>Cascaded Shadow Maps<br />
  68. 68. Cascaded Shadow Maps<br />
  69. 69. Cascaded Shadow Maps<br />
  70. 70. Cascaded Shadow Maps<br />Small scissor<br />Empty cascade<br />
  71. 71. Conclusions and Future Work<br /><ul><li>Efficient spatial database in a key role
  72. 72. Visibility-aware algorithms
  73. 73. Shadow caster culling
  74. 74. Streaming?
  75. 75. Simulation and AI?
  76. 76. Rethink visibility and spatial connectivity
  77. 77. See our slides from “Advances in Real-Time Rendering in Games” course </li></li></ul><li>Thanks<br /><ul><li>Remedy Entertainment
  78. 78. Petri Häkkinen
  79. 79. Markus Mäki
  80. 80. Olli Tervo
  81. 81. TuukkaTaipalvesi
  82. 82. Colleagues at Umbra Software
  83. 83. TimoAila
  84. 84. Ville Miettinen</li></li></ul><li>Questions? <br />Questions?<br />

×