Fable Legends Global Illumination Blog

Lionhead's latest Fable Legends blog covers the game's impressive global illumination technology. I'm personally skeptical of the gameplay's quality based on my past experiences with the franchise, but, based on this post, I'm sure it will look good. Here's a snippet, though I recommend checking the link for screenshots:

We made a decision early on to have fully dynamic lighting in our game. We think this is important for a number of reasons: It allows dynamic time of day, which adds variation to our world; it massively improves iteration times for artists; and it supports dynamic objects both reflecting and receiving light. Dynamic GI can also give higher quality results than baked lighting in some cases, for example, reflections, where lighting needs to take into account the view position.

Dynamic direct lighting has been around in games for a number of years, but dynamic indirect lighting (i.e bounce lighting or global illumination) i.e. light bouncing off objects in the scene onto other objects - is a much harder problem to solve, so generally it either isn't computed dynamically, or a very simple representation is used (e.g. a single hemispherical light for the sky).

Unreal Engine 4 has an excellent deferred renderer, which supports physically-based materials and can support large numbers of lights efficiently. We did some work optimising UE4's cascaded shadow maps (which Epic also integrated into Unreal), but the missing piece of the puzzle for us was dynamic indirect lighting.

Epic has previously researched a real-time GI method called SVOGI with promising results, but it was never quite fast enough. Of all the papers on the subject, Crytek's Light Propagation Volumes seemed like the best solution for our game. It was fast, scalable and could also support reflections and secondary occlusion. However, this method was a DirectX 9 implementation, and we felt we could do even better with modern DirectX 11-class hardware and the power of compute shaders.

We developed an implementation of Light Propagation Volumes, specifically targeted at modern GPUs (such as the one in Xbox One). Our method supports 2nd-Order Spherical Harmonics, which gives better directionality than the original method. We use compute shaders to generate a high quality voxel representation of the scene's geometry, which we use to provide secondary occlusion and multiple light bounces.


Thanks, VG247.