Inside Battlefield 5: GeForce RTX's most impressive ray tracing showcase
The future of gaming graphics?
The embargo lifts today on video capture of Battlefield 5's beautiful new Rotterdam map, which looks all the better when rendered in RTX - Nvidia's brand new ray tracing technology for its upcoming 20-series cards. We had the chance to go hands-on with an RTX-enabled version of the game, and to talk directly with the graphics engineers responsible. How does ray tracing work? What are its limitations? And with performance such a hot topic surrounding RTX titles, what are DICE's plans for future optimisation and further features?
Performance is under the microscope with regards RTX, in particular with Shadow of the Tomb Raider, which had noticeable frame-rate issues in the behind-the-scenes demo we played. However, what we do have to understand is that it is early days for RTX development. Nvidia seeded developers with Titan V hardware earlier this year - but this lacks specific ray tracing acceleration. Cards can be used in parallel to offer up something close to actual RTX performance but the bottom line is this: DICE had just two weeks with final hardware, which was dubbed simply as an 'Nvidia Graphics Device' in the device manager. In short, the developer wasn't even sure which RTX device they were working with. And as we shall discover, there's still plenty of work to do before launch in optimising an already impressive showing.
Ray tracing as it stands in the demo is used to render Battlefield 5's specular reflections - replacing 'fake' rasterisation approximations including standard cube maps and screen-space reflections. The ray tracing lines up perfectly with other lit sources in the world, including area lights, the sun or sky lighting. To get a sense of what RT reflections do differently and better, it's good to point out the limitations of the systems that it replaces.
Screen-space reflections are exactly that - the rendered scene is used for reflection information, and in turn, this introduces profound limitations. Anything occluded on-screen (by the view weapon, for example) can't be reflected - and neither can any world imagery that isn't actually on-screen. When screen-space reflections do not work, the game falls back to a cube map reflection. A cube map is a low resolution, physically incorrect, static capture of the game world, and not even from the point where the reflection is needed. Similar to most games, screen-space reflections in Battlefield 5 do not apply to transparent surfaces like glass. If they are applied to something transparent, like water for example, it require an extra pass and extra work and still has those same errors and limitations we've already discussed.
There are further fidelity issues on top of that. To save on performance, screen-space reflections in Battlefield 5 run at half resolution and they purposefully have a conservative cut-off as to which objects are tested against to have screen-space reflections. This is called a roughness cut off, so objects of a certain roughness - even if they technically have a bit of reflection in them - are cut out of getting screen-space reflections. This is done for performance and visual purposes, since the reflections which would show up on them, might have a buggy appearance anyway due to its limitations.
In short, Battlefield 5 without RT uses techniques commonly found in many games. It's a strong implementation overall, but not without its own performance cost (screen-space reflections are disabled in Battlefield 1 on console, for example). With RTX enabled, we're looking at a radically improved, obviously more correct presentation. Reflections are full-resolution and have a less conservative roughness cut-off, so they apply to more objects on-screen, making those surfaces closer to 'ground truth' realism.
Unlike cube maps or the default SSR in Frostbite, ray traced reflections respect many more realities of light and surface shading. This makes materials closer to their real life counterparts: RT reflections look more or less clear based upon a surface's type and roughness, and are also stretched appropriately and realistically. This variable glossiness and stretching leads to some interesting visual differences among the reflections themselves. An interesting test is to look at yourself reflected in a window, then try the same thing on a shiny car, to see how the look of your player character changes cast across a range of surfaces. Even a cube map updating in real-time placed directly in the location of the car (like you see in many racing games) would not look accurate.
So, in terms of gameplay applications, you can finally see reflections of yourself in objects like mirrors and unlike SSR, you also see objects off-screen with ray traced reflections. Interestingly, you can see around corners now. And while Battlefield 5 does not have a true first-person system (where first and third person models are the same) the reflections still manage to capture your third-person model as lined up with your view point. Since they are doing this in the opaque pass of the RT, you can see reflections of your character everywhere, with it technically being possible to see yourself and other third person character models within the scope of a rifle as you bring it up to aim. So yes, with ray tracing, you can see the player sneaking up behind you for a stealth kill.
Along with being more physically accurate to real light behaviour, the RT reflections in Battlefield 5 also show accurate reflections of CPU particles, like the alpha transparency of fire or smoke, and unlike SSR it is also reflected at proper depth with no discontinuities. Again, this can aid gameplay - for example, explosions occurring off-screen can be picked up by the player via the RT reflections. As a lot of graphics optimisations are based simply on rendering what's on-screen, there are additional performance implications here. At a basic level, draw call count increases - environment detail in reflections needs to be processed, for example, when it would just be culled outside of RT mode. Just the sheer amount of potential detail to reflect also poses obvious challenges.
To save on performance, the ray tracing implementation in Battlefield 5 has a few tricks and optimisations that have changed over development and will keep changing up until release. At the capture event, we noticed some of these optimisations and we talked directly with DICE engineers about them. During development, the team at DICE were developing the game on Titan V cards which lack the hardware acceleration cores for ray tracing, so they were developing at much lower frame-rates in general and also utilising more optimisation schemes to keep performance up. The Turing GPUs with hardware acceleration are much more powerful, but they still had these more conservative settings set on by default in the build we were seeing, even though they were unnecessary for performance on shipping RTX hardware.
This demo's settings as seen in the video on this page use a lower fidelity version of the opaque scene built up on the GPU for rays to be shot through it. This scene is called the bounding volume hierarchy or BVH - what you're seeing in our video shows the game's reflections built around LOD 1 geometry, which is less rounded and with lower overall detail. We were shown an .ini tweak to swap in the top-detail LOD 0 geometry (it's in the video, by the way) which produced improved reflections with no additional performance hit, and it's that quality we'll see in the final game.
Of course, there are a number of other interesting tricks and optimisations which are implemented to ensure consistent 60fps performance at 1080p resolution. Instead of letting rays bounce around continuously, the second reflection ray from a reflection - the reflection of a reflection, if you will - is not cast back into the BVH. Instead, the ray is shot back into the pre-rendered cube maps already scattered around the game level for the standard presentation. This means that reflections within reflections - such as the reflection on a character helmet as seen in a mirror - are more accurate versions of standard cube map reflections.
While DICE is getting some great quality of the rays it shoots, the unfiltered results of ray tracing are still rather noisy and imperfect. To clean that noisiness up, a custom temporal filter is used, along with a separate spatial filter after that to make sure reflections never break down and turn into their grainy unfiltered results. Interestingly, this mean that DICE is not currently using the Nvidia tensor cores or AI-trained de-noising filters to clean up its ray traced reflections. Even then, the de-noising works wonderfully in general and the RT reflections are dramatically clearer and more temporally stable and accurate than the standard game's cube maps and screen-space reflections. The only area where the denoising is imperfect right now is on transparent surfaces of a certain glossiness, where you can see them appearing visibly grainier.
The optimisations are many, but the fact remains that ray tracing like this is still vastly expensive from a computational perspective, even with dedicated hardware acceleration. The RTX implementation as it stands right now is designed to keep you above 1080p60 on an RTX 2080 Ti. The demo stations were locked to the 1080p resolution of the attached high refresh rate display, but the internal scaler allowed us to simulate 1440p and 4K resolutions. On the former, we eyeballed frame-rates in the 40-50fps area but 4K plummets into sub-30 territory. Chatting with DICE later, there was surprise that the game was running at all with 4K and RTX enabled. It really is early days with the implementation and final hardware, so even thedevelopers are not entirely sure of how far things can be pushed.
Right now, our concern is that if RTX 2080 Ti is the target, what about the less capable RTX 2070 and RTX 2080, both of which have less ray tracing acceleration? Well, there are two parts to the performance equation which are still being looked at before release. At the moment, the ray tracing resolution is a 1:1 match with your chosen rendering resolution - so ray tracing is done at 4K if your rendering resolution is 4K, for example. Likewise, the size of those BVH structures in GPU memory not only increases and decreases based upon the complexity of the scene, but they increase in size with resolution as well so there are VRAM implications here.
Tailoring the game to work on different levels of hardware at different frame-rates and within different memory limitations is being actively investigated. To allow users to achieve their desired frame-rate targets with RT reflections on, the DICE engineers mentioned their desire to give the player greater control over the quality of ray tracing in comparison to the rest of the game's visuals. This could mean controlling either the amount of rays shot per pixel or scaling the RT resolution independently of the rendering resolution. To illustrate, ray tracing could be carried out at 1080p or lower while the rest of the game is actually rendered at a higher resolution. Other potential options include intelligent upscaling of lower resolution RT outputs, using AI-based reconstruction or even checkerboarding.
Given how crisp and accurate the reflections already look at 1080p, I imagine this would a great way to allow players to have better frame-rates or higher resolutions while keeping RTX enabled. In short, it's about giving the appropriate sliders and selectables to the player, rather than a simple on/off toggle. It's also best to remember the scale of the ambition here in assessing performance overall: this is real-time ray tracing - the so-called 'holy grail' in rendering. Up until the GeForce RTX reveal, what we'd seen of ray tracing was almost like a pipedream, conjured up with the power of four GV100 Volta GPUs running in parallel. It's now on one consumer level card - an awesome achievement in itself - but the idea that you're getting RT for 'free' on top of standard 3D performance just isn't realistic.
But that's not to say that further optimisation isn't possible. Before release, DICE is also looking into other ways to speed up ray tracing while maintaining the same level of fidelity. For example, the team has noticed that triangle counts in the BVH are not affecting RT performance greatly, which is why they showed us the LOD tweak that the final game launches with. While geometry amounts do not impact RT performance greatly, they have noticed the amount of instances being drawn having an effect on performance. You can imagine an instance as being the door of a house, which is separate from other instances or objects on the house, like its walls, its floors and the bits inside it. So the team is investigating merging these meshes, so all those parts of the one house are put into the same merged acceleration structure - reducing the amount of separate instances, but keeping the same amount of triangles. Based on this optimisation alone, a projected 30 per cent increase in performance is projected.
Likewise, the developer is looking to utilise the ray tracing hardware as soon as possible in the rendering pipeline. Right now, the RT cores start their work after the rasterisation of the g-buffer has already occurred. If the RT cores were to be working in parallel with the rasterisation of the g-buffer as soon as rendering gets started, they would see much greater performance overall due to them working asynchronously, instead of the RT cores having to idle and wait. So, imagine the early rasterisation step taking 2ms of GPU time - if the RT cores were simultaneously active, we could see almost a 2ms decrease in total render time. That's a big deal when 60fps demands a 16.7ms render budget.
It's also important to remember that this is just the beginning and given tools as powerful as Turing's ray tracing technology, DICE is looking towards a future of rich possibilities. For example, the team mentioned experimenting with ray traced ambient occlusion and even the very novel idea of using the BVH structure for GPU particles - meaning that those particles would have perfect placement in the world regardless of the camera location, which could allow for the acceleration of unique effects never seen before in games. But the big deal here overall is that instead of approximating or faking very important real-time effects in their titles, DICE now has access to realistic reflections along with associated behaviours that are a natural fallout from the ray tracing itself. But equally, RTX on Battlefield 5 right now is still very much first generation work - in effect, the ray tracing toolbox has only just been opened. However, with results as impressive as this appearing out of the gate, I'm really enthusiastic about the technology, even though this is just the beginning. The future's looking bright - and exceptionally shiny.