Rise of the Tomb Raider
As part of the R&D team at game studio Nixxes, I worked as a graphics programmer on Rise of the Tomb Raider. Under supervision of Jurjen Katsman and Morten Mikkelsen, I developed a tile-based lighting system capable of supporting thousands of dynamic lights.
A write-up of this system, “Fine-pruned Tiled Lighting”, can be found in the GPU Pro 7 book by Wolfgang Engel. Based on the then novel and nowadays wide-spread technique of Tiled Deferred Shading, our solution is compatible with Forward Rendering and includes 2 compute shader passes that substantially reduce the number of lights per tile, all at virtually no cost thanks to asynchronous compute.
The image above shows a scene from the game. The image is divided into 16x16 pixel tiles. A compute shader determines exactly which lights affect each tile. The number of lights is shown as a heat map, with red areas being affected by too many lights, reducing performance.
This image shows the result after fine-pruning. By meticulously intersecting the light’s boundaries with each tile in a second compute shader pass, the number of lights actually affecting the scene is greatly reduced and thus performance is increased.