Custom PC

Inside AMD FidelityFX Super Resolution 2

By Edward Chester. Posted

With the visual demands of modern games getting ever greater, and screen resolutions going ever higher, the brute force approach to graphics rendering is becoming less viable for many situations. That’s why in recent years we’ve seen a significant increase in the use of resolution scaling (upscaling) to allow games to still show all the latest eye candy, such as ray tracing, without frame rates plummeting when running on high-resolution screens.

Scaling new heights

Resolution scaling is where a game engine renders the 3D portion of the game at a lower resolution than the one set in the game, and stretches that image to fill a higher-resolution screen, before then applying post-processing effects – such as film grain, chromatic aberration and on-screen blood splatters – and adding the game’s heads up display (HUD).

It’s basically like running a game at a lower resolution, but without ending up with a blocky-looking, oversized HUD and menu system. And because the latter are generally only rendered in 2D, they require a fraction of the processing power of the 3D scene behind them, despite being rendered at full resolution. The ability to apply some post-processing effects at the higher resolution also helps maintain a sharper-looking image compared with just running a game at a lower resolution.

Native resolution without AA (left) vs native resolution with TAA (middle) vs FSR 2 at its Quality setting (right)

That’s the theory of resolution scaling, but there are many different techniques. For a long while, most of them offered fairly poor image quality – the step down from running at native resolution was very obvious – but the arrival of Nvidia’s Deep Learning Super Sampling (DLSS) changed all that.
The first iteration of DLSS wasn’t all that successful, but DLSS 2 has been a revelation. It offers impressive image quality in many instances, and at high quality settings can even improve image quality over running at native resolution, thanks to it replacing and doing a better job than the temporal anti-aliasing (TAA) used in many games to smooth out jagged edges. It manages this feat thanks to it using not just the visual information from the current rendered frame to upscale the image – known as spatial scaling – but also information from past frames.

By combining the past frames with object movement data from the game, the renderer can essentially add back information that is lost by initially rendering at a low resolution. This use of past data for upscaling is known generally as temporal scaling/upscaling.

FSR 1 (left) on Ultra Quality mode looks far worse than FSR 2 (middle) and DLSS 2 (right) on Quality mode

DLSS 2 isn’t perfect, as the temporal comparison can break down if the player moves too quickly. Plus, like any resolution scaling, it works best at high resolutions. Nonetheless, it’s still a very capable technique. The only major problem is that it’s exclusive to Nvidia graphics cards, and only RTX cards at that. All of which has compelled AMD to come up with its own resolution scaling technique called FidelityFX Super Resolution (FSR).

FSR 1

AMD’s first attempt to create a rival to DLSS wasn’t really a direct competitor, as it didn’t include the temporal comparison of DLSS 2. Instead, FSR 1 is a spatial scaling technique that first stretches the image then uses an edge-detection algorithm to selectively sharpen certain portions of the image.

FSR 1 looks terrible on its Performance mode (left) but FSR 2 (middle) and DLSS 2 (right) look remarkably good

It works surprisingly well, outperforming more basic scaling techniques in some games we tried. Moreover, it gained significant traction thanks to it being a completely cross-platform system that can work on any graphics card. Over 75 games had implemented it ,or announced upcoming support for it, between its June 2021 arrival and the announcement of FSR 2 in March this year.

Nonetheless, the stage was set for AMD to come up with an even better technique that could truly rival DLSS 2, which it’s hoping to achieve with FSR 2.

FSR 2

FSR 2 is a complete rework of FSR that now includes a temporal comparison element, just like DLSS 2. Each initially rendered frame is compared with the previous frame and combined with motion vector data to tell the algorithm how far every part of the image has moved. Crucially, though, where DLSS 2 takes advantage of the Tensor cores in Nvidia’s RTX graphics cards to accelerate the scaling process, making it exclusive to those cards, FSR 2 works on conventional graphics stream processors, using any GPU architecture.

FSR 2 (top) copes better with fast motion than  DLSS 2 (bottom) in our tests, with less ghosting and a crisper image

Another key distinction between FSR 2 (and DLSS) and FSR 1 is that the new technique operates earlier in the graphics pipeline and replaces the need for TAA. The older technique dealt with the fully rendered frame after any AA – whether TAA or otherwise – had already been applied to it, leaving only the very final post-processing and HUD to be added after upscaling.

The lack of a reliance on specialised processing cores, such as Nvidia’s Tensor cores, exposes the fact that FSR 2 doesn’t rely on any sort of machine learning to inform its upscaler. However, even Nvidia has admitted that DLSS 2 doesn’t really do any machine learning on the fly – as it did with DLSS 1 – the Tensor core requirement is mainly down to Nvidia simply choosing to use them rather than needing to use them.

Using FSR 2

As with other resolution scaling techniques, FSR 2 needs to be baked into the game you’re playing and can’t be enabled via a graphics driver. However, given the widespread support for FSR 1, we expect FSR 2 to receive a similarly speedy uptake. At the time of writing, three games have already implemented FSR 2 (Deathloop, God of War and Farming Simulator 22) and a further 16 games have support incoming.

DLSS 2 suffers considerably from horizontal ghosting, while FSR 2 seems to cope better. Native resolution without TAA is the sharpest though

Within games that support FSR 2 you’ll find there are up to four detail levels available – Quality, Balanced, Performance and Ultra Performance. These will render the game at an ever-lower starting resolution as you move from the highest setting to the lowest.

The exact resolution will vary depending on the output resolution (the resolution of your monitor), so for a 4K screen the Quality setting will render at 2,560 x 1,440, while for a 2,560 x 1,440 screen, the game will render at 1,706 x 960. Using the Performance setting, a 4K screen will render at 1,920 x 1,080 and the 2,560 x 1,440 screen will render at just 1,280 x 720. These are almost identical ratios to equivalent DLSS 2 settings, with just the Balanced setting of each tending to differ slightly (sometimes DLSS 2 uses a slightly higher render resolution, sometimes FSR 2 is slightly higher).

In general, any upscaling algorithm works best when starting with as high a render resolution as possible, so it’s for this reason that the FSR 2 Ultra Performance setting will often not be implemented, and it’s also why Nvidia recommends the DLSS 2 Ultra Performance mode is only used in conjunction with 8K output resolutions.

FSR 2 adds one further option with which users can tinker, which is a sharpness slider. This changes the degree to which the upscaler applies a 2D sharpening filter to the final image. Just the right amount of sharpening can be crucial to tighten up the image, but too much and there can be an unnatural quality to the final image. In Deathloop, the sharpening slider was set to its maximum by default and we did find it a little aggressive. Turning it down to five out of ten felt a little more natural looking but we’ve stuck with the default 10 setting for our test shots.

FSR 2 image quality

We used Deathloop to test FSR 2, as it’s not only the first game to implement the technology, but it also supports DLSS 2, FSR 1 and has optional TAA for use when gaming at native resolution – some games force TAA on when gaming at native resolution, which can make some image quality comparison tricky. TAA is forced on in this game when using FSR 1 though.

Screenshot 2022-08-03 at 11.39.31

Our test system included an AMD Ryzen 5 3600X, 16GB of Corsair Dominator 3600MHz DDR4 RAM and an Nvidia GeForce RTX 2060. Using the latter card enabled us to test DLSS and FSR on the same card, and it also represents a good example of the sort of card that could potentially benefit from upscaling with a game such as Deathloop. At native resolution with all in-game settings set to maximum, it delivered a just-about-playable frame rate of 31fps.

Images were captured initially with the player stood still, then we also tested for any visual artefacts while moving. We captured screenshots for the latter while walking forward with a fixed view and moving the mouse side to side.

Starting off with a comparison of FSR 1 and FSR 2, it’s like night and day even at the highest quality setting. The amount of detail FSR 2 manages to retain in the arm of the crane in our test shots is so much higher. Meanwhile, the anti-aliasing on the wired fences is much smoother with FSR 2. If both options are available, it’s clear which to use from a visual perspective.

Trying the Performance modes reveals a starker difference. The detail in the rocks behind the crane is almost completely lost with FSR 1 and the fences look a complete mess, but with FSR 2 they still look impressively smooth.
Moving on to comparing FSR 2 against native resolution and there are two key factors to note. The first is just how little detail you lose when opting for FSR 2 on its Quality setting. There are only mere hints of detail loss here and there, although certainly the aggressive sharpening algorithm helps to provide the illusion of more detail.

The second notable factor is the poor default TAA implementation in this game. It fails miserably to retain any detail in the wire fences and generally softens the image considerably. Because of this, FSR 2 in Quality mode consistently looks better than at native resolution when TAA is enabled. Without TAA, there are jagged lines everywhere but you do retain that extra sharpness.

When it comes to FSR 2 vs DLSS 2, both implementations are very similar. The more aggressive sharpening filter makes FSR 2 pop a little more but DLSS 2 arguably has a slightly more natural-looking, softer presentation. DLSS 2 also does a better job with the wire fences, retaining more detail and a more realistic smoothness. This general impression held up in moving images too, with DLSS 2 better minimising the pixel flicker from the fences as you move around.

These broader points largely held true in Performance mode too, with both DLSS 2 and FSR 2 looking very similar and both proving impressive at retaining detail. However, DLSS 2 pulled further ahead in its ability to reduce pixel flicker on fine detail, such as overhead wires and wire fences.
As for our moving gaming tests, we were surprised to find FSR 2 coped slightly better than DLSS 2 at maintaining a sharp image and minimising ghosting. While there is distortion above the edge of the barrier in our test shots with FSR 2, there’s less fully discernible ghosting, whereas the DLSS 2 shot looks softer and there are clear ghost images of the barrier above it. FSR 2, DLSS 2 and TAA all lost significant sharpness compared with native resolution with no AA too.

FSR 2 performance

We compared every possible iteration of resolution scaling available in Deathloop for the fixed 3,440 x 1,440 resolution of our test monitor, and our results were interesting. The most striking takeaway was the relatively modest performance uptick of all the upscaling modes.

With a starting point of 31fps at native resolution, the maximum frame rate, we achieved without dropping to a lower resolution or changing in-game detail settings was 40fps using the terrible-looking FSR 1 Performance mode. Meanwhile, FSR 2 and DLSS 2 were all but tied on 37fps and 39fps using their respective Performance modes.

That’s still a roughly 20 per cent gain in frame rate but considering the Performance modes use a resolution half that of native resolution, it’s not quite the performance uplift for which you might have hoped. However, these are early tests on just one game, and we fully expect to see greater variance in frame rate across different games at different resolutions.

Looking more closely at how DLSS 2 and FSR 2 compared, there was an average 4.6 per cent higher frame rate for DLSS 2 over FSR 2. This seems to tally with the fact that DLSS 2 can take advantage of the otherwise unused Tensor cores in an Nvidia RTX GPU to accelerate some of the DLSS 2 processing, whereas FSR 2 is taking up more performance from the main stream processors.

DLSS 2 and FSR 2 have very similar performance characteristics, but DLSS 2 holds a small lead

Conclusions

For several years, Nvidia has held a significant advantage over AMD thanks to its DLSS 2 technology, but with the arrival of FSR 2 AMD finally has an answer to this ‘free performance’ setting. FSR 2 looks fantastic – almost as good as DLSS 2. Both upscaling techniques can even offer image quality that’s sometimes better than native resolution. Image quality in fast motion in both techniques suffers from a bit of ghosting, but it’s only really of concern for competitive, faster-paced games.

DLSS 2 is still a little faster than FSR 2, but not by much, and the fact FSR 2 is available for just about any graphics card from the past ten years means it’s a technology that can benefit everyone.

The fact it also works on Nvidia cards means AMD doesn’t have a compelling argument for gamers buying one of its cards over one from team green, but at least buying an AMD GPU no longer means missing out on such a potentially huge performance-boosting feature

From Custom PC store

Subscribe