The Ghostrunner demo is beautiful - and ray tracing adds to the spectacle
Stress-testing Unreal Engine's DXR features.
Ray traced cyberpunk ninjas - four words that sum up Ghostrunner, a new Unreal Engine 4-powered speed running assassination game that melds the kind of 3D traversal we saw in Mirror's Edge with an aesthetic heavily inspired by Blade Runner. It's all night time, glass, metal and rain - the perfect scenario to get the most out of hardware accelerated ray tracing - and the perfect setting to look into the RT features delivered by the Epic middleware. First impressions? It's very promising, but also in its early days, with lots of tuning and optimisation required.
The Ghostrunner demo itself is essentially an extended tutorial that guides you through the play mechanics before settings you loose on some 'content'. You'll learn to run, jump, wall-run, boost and to laser-lasso to grapple points. You'll also learn focus: a Matrix-inspired bullet time mechanic that allows you to dodge incoming fire before unleashing katana justice on anyone who crosses your path. It's fast, it's brutal, it's relentless - and it's fun.
In terms of play, what sets Ghostrunner apart from Mirror's Edge is that the mechanics are set up to incorporate kills into your speed run, as opposed to breaking the flow and slowing you down. It's also a game that encourages experimentation through the use of a rapid restart mechanic. Death is an ever-present companion in Ghostrunner but with one button press you're instantly back in the action with no loading.
But it's the real-time hardware accelerated ray tracing features I was really interested in checking out. This is the second public release of Unreal Engine 4 RT content we're aware of (the first being Deliver Us The Moon from Keoken Interactive and Wired Productions) and it's flagged as being experimental in nature. Turning on the RTX features enables three features: ray traced shadows, ambient occlusion and reflections. Suffice to say that the performance cost is high: in our tests, frame-rates are generally reduced by 64 per cent, but it the RT features are experimental and there are numerous routes forward for the developer to improve matters.
I can say this with some degree of confidence having taken a more detailed looked under the hood. The Universal Unreal Engine 4 Unlocker is a fascinating tool that opens up the command console within UE4 titles, and from there we're able to individual enable RT components, adjust their parameters and measure performance. For example, RT shadows adds shade to smaller objects, increases shadow resolution significantly and adds contact hardening (the closer to the object, the more defined the shadow - the further away, the more diffuse). It's often a 'light' RT feature but here it can still have an impact of between 39 to 63 per cent to performance. Ambient occlusion sits on top of the game's SSAO and has a flatter cost - between 28 to 34 percent.
And here's where the first potential optimisation for Ghostrunner's RT implementation could kick in. The game's environments have mostly static lighting, with many of the shadows and much of the ambient occlusion 'baked' into the environments. RT adds quality but doesn't massively improve the quality of the presentation - so there's an argument here that per-effect toggles could add immensely to scalability without a big hit to performance. In fact, you can see for yourself by using the UUU and turning off the features in the console. The notion of selectable RT features makes even more sense when looking at Ghostrunner's ray traced reflections, which do substantially alter and improve the aesthetic of the game - as you would expect with visuals so heavily inspired by Blade Runner. The cost of this feature is significant - anything from 30 per cent in general gameplay to 70 per cent if you occupy the entire viewpoint with a reflected surface.
I also tested used an EVGA RTX 2060 KO - one of the cheapest versions of the entry-level RTX card - and found that the game ran at circa 40fps with the standard RTX mode with all three features enabled at 1080p resolution - and I have the sneaking suspicion that VRAM is over-committed too, leading to obvious stutter. However, enabling reflections only delivered the best RT bang for the buck and kept frame-rates above 60fps for the vast majority of the duration of the demo. The only dips beneath came from specific points in the demo that saw weird stutter - which perhaps may be shader compilation bottlenecks, something seen frequently in titles running under DirectX 12.
Another potential route forward for optimisation comes from the sheer volume of rays being cast to produce the RT effects in Ghostrunner. For example, the reflections are full resolution, when Battlefield 5's reflections at max settings still look wonderful and use just 40 per cent of screen resolution. It's still eminently possible to get a great RT experience from Ghostrunner then, but there's the sense that optimisations from Epic itself in UE4's implementation combined with more flexibility in choosing which effects you use could deliver huge increases to overall performance.
Using the Unreal Engine 4 Unlocker also allows us to tweak variables and even add features. The engine supported real-time global illumination from dynamic light sources and while it can beautifully embellish the scene, a 76 per cent performance hit is enough to ensure that the developer don't include it in the game. For reflections, the roughness cut-off can also be tweaked: right now, only the most smoothest surfaces have reflections, but the engine can be tweaked so that any material with any level of reflectivity can use the effect. Again, the cost is extreme.
For the 'lulz', I gradually turned on every single RT feature ramped up to the max - so that's features not included in the game and those that are see their fidelity pushed as far as it will go. From a non-RT 88fps, performance drops to a mere seven frames per second. Obviously, this is using settings and quality levels that nobody in their right mind would use, but it does illustrate how much scalability is built into the engine and also that it's still early days for UE4's RT features - we should expect more optimisation as the tech evolves, especially as so many PlayStation 5 and Xbox Series X titles will be using ray traced features.
Of course, Ghostrunner's DX12 renderer and its ray traced features are flagged as experimental and I hope to see something more refined and optimal for the game when it ships. After all, as you'll see by watching the embedded video above, just dipping into the command console and making some tweaks can still deliver a performant, worthwhile RT upgrade even with the least capable RTX GPU on the market. Those without ray tracing hardware still get a great game, of course, and our testing showed that a GTX 1660 Super typically runs at 80-110fps at 1080p resolution on full-fat 'epic' settings.
Already performant, there are further options open to the Ghostrunner developers that could make this game fly even higher. For example, UE4 resolution scaler is in effect, allowing you to run at sub-native resolutions (68 per cent of 4K being native 1440p, for example). This speeds up performance but at the expense of visual quality. However, currently the game does not support UE4's temporal upscaler, which accumulates data from prior frames to increase detail in the current one. I found that turning this on improved quality with no measurable hit to performance. On top of that, Nvidia's borderline-miraculous DLSS 2.0 technology isn't in the demo - and this proven AI upscaling technology is integrated into UE4 and would be a welcome addition to the PC game.
Overall, this demo is really impressive - the game is shaping up beautifully from a visual perspective, I'm really liking the gameplay mechanics and while its various inspirations are self-evident, Ghostrunner still feels fresh and different. It's impressive stuff, and I'm really looking forward to getting my hands on final code.