While we were testing the Fable Legends DirectX 12 benchmark, we had the chance to ask Lionhead a couple questions about the DX12 features they have picked for the game (which will be the first DX12-only title).
The review guide contained the following statement:
Lionhead Studios has made several additions to the engine to implement advanced visual effects, and has made use of several new DirectX 12 features, such as Async Compute, manual Resource Barrier tracking, and explicit memory management to help the game achieve the best possible performance.
This piqued our curiosity and we had to investigate. Here's what we found out:
In your statement, you mentioned using Async Compute. Can you tell us how you're using it in Fable Legends? Multi-engine is the official D3D12 term for that feature. We’re using it quite heavily across the scene, including dynamic GI compute shaders, GPU-based culling for instanced foliage, Forward Plus compute shaders (light gathering). In addition, all the foliage physics in the scene (bushes, grass, etc.) is simulated on the GPU that also runs concurrently with the graphics.You've also mentioned using manual Resource Barrier tracking and explicit memory management. In your experience developing Fable Legends, which one proved to be more important in terms of raw performance gains?The resource barrier tracking gave us some really significant wins in terms of performance. Fable Legends is a compute-shader heavy game, and D3D12’s Resource Barrier tracking features allow us to kick off large numbers of compute shader dispatches without creating stalls on the GPU between each one.As a reminder, Fable Legends is powered by Epic's Unreal Engine 4 and is currently in Closed Beta for PC and Xbox One; the Open Beta phase should start soon. It will be interesting to see what kind of DX12 features will be implemented by future UE4 titles; stay tuned for more coverage on DirectX 12 and its application in upcoming games.