If you’re curious to see how Quantum Break‘s impressive graphics are generated step by step as lighting shading and effects are added, you have come to the right place, thanks to a presentation by Remedy Entertainment Graphics Programmer Ville Timonen, hosted at GDC in San Francisco.
Quantum Break uses an in-house engine aptly named Northlight. It was first used in Alan Wake and ported to DirectX 12 for the latest game.
Below you can see how Northlight renders an image in the game, with each step adding a new rendering element.
1. GBuffer, Velocity, Shadow passes (threaded)
2. Full-screen shadowing
3. Full-screen lighting
4. Primary, transparent passes (threaded)
5. Post-processing (final result)
During the presentation, Timonen brought up some interesting points on the passage from DirectX 11 to DirectX 12. He mentions that developers “are the drivers now,” meaning that they need to take care of optimizations that would previously be handled by the driver.
Developers also need to be mindful of memory usage and performance, and focus optimizations on actual bottlenecks. It’s also important to think in separate timelines for CPU and GPU.
The final evaluation is that DirectX 12 matches DirectX 11’s GPU performance only if the developers do things right. This isn’t trivial on all architectures, and messing up memory management for the GPU can have a sizable performance cost.
On the CPU side, it’s easy to outperform DirectX 11 by using DirectX 12, but only if the game is API overhead-bound. It allows to avoid swamping the driver with calls thanks to instancing, LODs and good culling.