An anonymous reader writes “The Principal Graphics Programmer for BioShock Infinite has put up a post about how the game’s lighting was developed. We don’t usually get this kind of look into the creation of AAA game releases, but the studio shut down recently, so ex-employees are more willing to explain. The game uses a hybrid lighting system: direct lighting is dynamic, indirect uses lightmaps, shadows are a mix. ‘Dynamic lighting was handled primarily with a deferred lighting/light-pre pass renderer. This met our goals of high contrast/high saturation — direct lighting baked into lightmaps tends to be flat, mostly because the specular approximations available were fairly limited.’ It’s interesting how much detail goes into something you don’t really think about when you’re playing through the game. ‘We came up with a system that supported baked shadows but put a fixed upper bound on the storage required for baked shadows. The key observation was that if two lights do not overlap in 3D space, they will never overlap in texture space. We made a graph of lights and their overlaps. Lights were the vertices in the graph and the edges were present if two lights’ falloff shapes overlapped in 3D space. We could then use this graph to do a vertex coloring to assign one of four shadow channels (R,G,B,A) to each light. Overlapping lights would be placed in different channels, but lights which did not overlap could reuse the same channel. This allowed us to pack a theoretically infinite number of lights in a single baked shadow texture as long as the graph was 4-colorable.'”
Read more of this story at Slashdot.