We describe the design and evolution of UberBake, a global illumination system developed by Activision, which supports limited lighting changes in response to certain player interactions. Instead of relying on a fully dynamic solution, we use a traditional static light baking pipeline and extend it with a small set of features that allow us to dynamically update the precomputed lighting at run-time while introducing little to no overhead. This means that our system works on the complete set of target hardware, ranging from high-end PCs to previous generation gaming consoles, allowing the use of lighting changes for gameplay purposes. In particular, we show how to efficiently precompute lighting changes due to individual lights being enabled and disabled and doors opening and closing. Finally, we provide a detailed performance evaluation of our system using a set of production levels and discuss how to extend its dynamic capabilities in the future.
We had the good fortune to work with many talented lighters while designing the system: Luka Romel, Vivian Ding, Dave Blizard, Omar Gatica, Velinda Reys, Krzystof Wojcik, Marko Vukovic. Many Ko, Michael Stark and Adrien Dubouchet contributed to UberBake code. We also worked closely with several engineers: Stephanus Fnu, Danny Chan, Michal Drobot, Peter Pon, Akimitsu Hogge and Michael Vance. We are also grateful for encouragement and support from Andy Hendrickson, Dave Stohl and Patrick Kelly.