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.

A Real-time Radiosity Architecture

76,912 views

Published on

Joint talk by DICE and Geomerics in the Advances in Real-time Rendering course at SIGGRAPH 2010

Published in: Entertainment & Humor
  • Hey guys! Who wants to chat with me? More photos with me here 👉 http://www.bit.ly/katekoxx
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Keep up the good work!
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

A Real-time Radiosity Architecture

  1. 1. A Real Time Radiosity Architecture for Video Games Sam Martin, Per Einarsson Geomerics, EA DICE
  2. 2. Radiosity Architecture • Hot topic: real time radiosity – Research focus on algorithms – Several popular “categories” of algorithm • Architecture – Structure surrounding the algorithm – Use case: Integration in Frostbite 2
  3. 3. Agenda • Enlighten – Overview – Architectural Features • Frostbite – Overview – Pipelines – Demo • Summary / Questions
  4. 4. Overview: Goals And Trade-offs • XBox360, PS3, Multi-core PCs Target current consoles • Cost and quality must be scalable Flexible toolkit, not fixed solution • Cannot sacrifice VQ for real timeMaintain visual quality • Physically based but controllable “Believability” over accuracy
  5. 5. Four Key Architectural Features 1. Separate lighting pipeline 2. Single bounce with feedback 3. Lightmap output 4. Relighting from target geometry
  6. 6. “Arches”
  7. 7. Enlighten Pipeline Precompute • Decompose scene into systems • Project detail geometry to target geometry for relighting • Distill target shape for real time radiosity Runtime • Render direct lighting as usual (GPU) • Asynchronously generate radiosity (CPU) • Combine direct and indirect shading on GPU
  8. 8. Runtime Lighting Pipeline On target mesh On detail mesh + indirect specular Standard lighting Point-sampled input to Enlighten Point Spot Directional Environment Area User-specified + radiosity from previous frame Direct Light Sources Final GPU composite
  9. 9. Direct Lighting
  10. 10. Point Sampled Direct Lighting
  11. 11. Enlighten Output (Target)
  12. 12. Enlighten Output (Detail)
  13. 13. Final Composite
  14. 14. Model single bounce with feedback Bounce feedback scale = 1.0 Bounce feedback scale = 0.0
  15. 15. Enlighten Lightmap Output 106 x 106 texels 90% coverage “Directional Irradiance” “Spherical”
  16. 16. Target Geometry Has simple UV surface area Tri count not important Various authoring options
  17. 17. Detail Geometry UVs generated by projection No additional lighting data “Off-axis” lighting comes from directional data in lightmap Does not interact with radiosity
  18. 18. Example UV Projection
  19. 19. Recap: Architectural Features 1. Separate lighting pipeline 2. Single bounce with feedback 3. Lightmap output 4. Relighting from target geometry
  20. 20. Agenda • Enlighten – Quick overview, Key decisions, The future • Frostbite – Motivation – Pipeline – Runtime – Demo • QA?
  21. 21. Motivation • Why real-time radiosity in Frostbite? - Workflows and iteration times - Dynamic environments - Flexible architecture
  22. 22. Precompute pipeline 1. Classify static and dynamic objects 2. Generate radiosity systems 3. Parametrize static geometry 4. Generate runtime data
  23. 23. 1. Static & dynamic geometry • Static objects receive and bounce light - Uses dynamic lightmaps • Dynamic object only receive light - Samples lighting from lightprobes Mesh classification Underlying geometry Transferred lightingInput scene
  24. 24. 2. Radiosity systems • Processed and updated in parallel • Input dependencies control light transport • Used for radiosity granularity Systems Input dependencies
  25. 25. 3. Parametrization Automatic uv projection System atlases • Static meshes uses target geometry - Target geometry is used to compute radiosity - Project detail mesh onto target mesh to get uvs • Systems packed into separate uv atlases
  26. 26. 4. Runtime data generation Distributed precompute pipeline generates runtime datasets for dynamic radiosity updates • One dataset per system (streaming friendly) • Distributed precompute with Incredibuild’s XGI • Data dependent on geometry only (not light or albedo) •
  27. 27. Rendering • Separate direct light / radiosity pipeline - CPU: radiosity - GPU: direct light & compositing • Frostbite uses deferred rendering - All lights can bounce dynamic radiosity • Separate lightmap / lightprobe rendering - Lighmaps rendered in forward pass - Lightprobes added to 3D textures and rendered deferred
  28. 28. Runtime pipeline 1) Radiosity pass (CPU)  Update indirect lightmaps & lightprobes  Lift lightprobes into 3D textures 2) Geometry pass (GPU)  Add indirect lightmaps to separate g-buffer  Use stencil buffer to mask out dynamic objects 3) Light pass (GPU)  Render deferred light sources  Add lightmaps from g-buffer  Add lightprobes from 3D textures
  29. 29. Direct lightingRadiosity
  30. 30. Direct light
  31. 31. Lightmaps
  32. 32. Lightprobes
  33. 33. Final composite
  34. 34. Demo
  35. 35. Summary / Questions? • Thanks! • per.einarsson@dice.se • sam.martin@geomerics.com
  36. 36. Bonus Extras! Enlighten Future • Replace lightmaps? • Shift more towards data parallel? • Incremental update vs fixed cost? • Split lighting integral by distance?

×