AMD FidelityFX Super Resolution tested: big fps wins - but image quality suffers
Team Red's smart upscaler reviewed.
UPDATE 24/6/21: There's been some confusion around the Kingshunt comparisons in the first screenshot gallery below, specifically the image comparing default upscaling to FSR and TAAU. The aim of this gallery is to show that temporal upscalers can resolve detail that FSR misses, but the comparison doesn't take into account that post-process effects like depth of field adjust according to resolution, adding further artefacts. To address this, we've added a Godfall gallery beneath, which strips out post-process effects and injects UE4's TAAU technology and shows the detail differences without additional artefacts.
Original story: AMDs FidelityFX Super Resolution is finally here, and we've been able to test it out across a number of titles. The idea here is pretty straightforward: to dramatically increase performance while minimising the hit to image quality. So the questions we had going into this one were simple enough: how does FSR actually work? How does it look in comparison to native resolution imagery? And how does it stack up against top-end temporal upscaling solutions, like the excellent technique built into Unreal Engine 4? We can answer those questions today, but what we cannot do is offer any comparisons to Nvidia's DLSS: test material simply isn't available.
So how does FSR actually work? To its credit, AMD has been open with journalists about this in the run-up to launch. FSR is essentially a single frame spatial imagine enhancement technique that looks for edges and resolves those them smartly into a higher resolution grid. Jaggies and shimmer from standard upscaling are the worst upscaling artefacts and FSR aims to comprehensively address this. However, all the upscaler has to work with is the standard image - it does not gain any additional information from prior frames, neither are specific buffers isolated or rendered at a higher resolution. By default, it also 'inherits' whatever anti-aliasing solution is in play - typically TAA. So FSR does not replace TAA and cannot improve upon its flaws. The lack of a temporal component means that in-surface detail - the image 'inside' the edges - does not gain any further information, so resolves in a less distinct manner. AMD uses its contrast adaptive techniques here seen in CAS, but this cannot resolve extra detail.
So, with this information in mind, I started out by looking at Godfall - one of AMD's key games in its FSR press materials. At native 4K, there's a very crisp image and high frequency texture detail on ground artwork and foliage, plus the character's hair. Ultra quality FSR runs internally at 1662p instead, and even with the best FSR option in play, the inherently pristine nature of the presentation is definitely not quite the same. FSR is a single frame technique searching for edges, so inner surface detail looks to my eye to resolve in a similar manner to the 1662p internal resolution. Areas of the image composed of sub-pixel detail - like hair strands for example - also show visible breakup. This is inevitable when upscaling a lower resolution image that has no temporal accumulation. One area that I think fares very well in comparison to native quality in ultra quality mode are the edges of geometric objects. If we look at their edges and not their inner surface detail, we can see very similar levels of edge resolve between the two here. This is FSR's major strength.
However, not including a temporal component in FSR causes visual discontinuities. FSR only looks at a single frame at a time, so the way it treats aspects like shimmer on highly reflective materials, or thin objects like vegetation or hair will change on a per frame basis, resulting in noticeable 'noise' in motion. So by all means examine the many comparison shots on this page, but it's going to be the video that demonstrates how this all plays out in motion.
Ultra quality mode is the highest fidelity available from FSR, rebuilding a 4K image from a 1662p internal resolution. Below that, quality mode runs at 1440p internally, which is followed by balanced at 1270p. Performance mode - only recommended by AMD when out-and-out frame-rate is of the essence - operates from a base 1080p. As we go down the quality ladder, all of the challenges I've described for FSR scale up and become much more noticeable. With that said though, the smoothness of an edge does not degrade as rapidly as the rest of the image quality aspects. All of these observations are at 4K, where at ultra quality and quality modes, FSR still has a lot of native resolution to use for upscaling. However, for users on a 1440p display, there is less internal data to work from, meaning that the drawbacks of the technique are more noticeable - though FSR's edge-smoothing still looks good.
The one instance where FSR shows off different characteristics comes in another of the supplied titles we had for testing - Terminator Resistance - where even at the lower FSR presets, the game still held up well. There are multiple reasons for this: for starters, it's is a very dark game with little contrast and low texture detail and contrast. This means inner surface differences with FSR are very mitigated by the game's choice of colours and its texture detail. Another reason is that Terminator Resistance is very heavily post-processed as well with motion blur, chromatic aberration and depth of field. All of which make images of different resolutions more similar to one another. Again though, thin transparent detail such as hair or fences exhibit much greater shimmering on movement compared to the native presentation - and stand apart from most other opaque edges, where the FSR algorithm holds up well.
So, based on the initial range of titles, FSR's effective can vary on a per-title basis but based on the majority of the titles tested and what we can reasonably expect from the algorithm, AMD has delivered a technique that can have a benefit for opaque edge quality in spite of lower resolution, but inner surface detail, thin transparent edges, or moving edges will have lower detail - more similar to the internal resolution making up the image. The best case for FSR's effectiveness seems to be darker, low contrast content with a number of post-processing effects.
Of course, the biggest win from FSR is performance, gained from upscaling lower resolutions. And the boosts here are very significant. Using The Riftbreakers' GPU benchmark, ultra quality mode saw a 42 percent increase, rising to 75 percent with the quality mode. You virtually double performance with the balanced preset at 104 percent, with a huge increase of 145 percent with the performance mode. This was tested using an RX 6800 XT paired with a Core i9 10900K running all cores at 5.0GHz. But remember, FSR is an open technology. It looked the same and provided similar big performance gains on an RTX 3080.
Those are some quite large performance wins - but the question is - are they worth it for the image quality changes brought on by FSR? In my opinion, other than the ultra quality mode at 4K or in content like Terminator Resistance, I find the image quality changes brought on by FSR to be a step too far to be considered similar enough to the native resolution to be an alternative. FSR leaves me in a strange place - I like where it is going, but I am not wholly convinced of its quality and a reason for that comes when you compare it to other ways to enhance image quality.
I tested this using Kingshunt, an Unreal Engine 4 game. I compared native 1080p (with something like a simple bilinear upscale to 4K) up against AMD FSR in performance mode, which is also working with an internal 1080p framebuffer. Looking at in-surface detail, there isn't much difference and sub-pixel detail doesn't scale particularly well. Edge detail, though, is much, much better. This is what FSR's design is about, not inner surface quality or aliasing strictly, but identifying edges and not blindly blending between them like a simple upscaler - it preserves an edge well. So FSR is better than a standard upscale. The thing is, games do not just use basic scalers - Unreal Engine 4 has a temporal AA upscaler in it. Thin transparent detail resolves to a much greater degree, while the quality inside surfaces - texture detail - is also elevated beyond the 1080p standard. This happens because TAAU (as it is called) is sampling previous frames into the 4K presentation, adding detail. And by default, edge enhancement comes as part of the same algorithm.
This is the most obvious challenge FSR faces - the existing solutions on the market aren't perfect, but they're delivering fewer issues than FSR does while the performance wins are comparable. FSR costs nearly the same as TAAU in Unreal Engine 4 and I can't help but think the Epic's solution produces a better result.
Ultimately, I feel that FSR is most useful at 4K in its ultra quality mode, but its utility drops off fast at resolutions and quality modes lower than that. Conceptually, I also think FSR has a less competitive position in the market of image enhancement technology. If a game only offers basic upscaling, FSR will do a better job, but why would a game only have basic upscaling? Every major engine on the market - whether it's from Ubisoft, Epic, Capcom or Square-Enix - has some form of TAA upscaling already. And because they're accumulating and reconstructing from more available data, they deliver improved results up against a single-frame spatial scaler. AMD has said that the technology may evolve, so we may well see new and improved techniques - but the bottom line is this: right now, there is absolutely no doubt that FSR can deliver stratospheric performance wins, but the higher the gain, the higher the pain in terms of image quality compromises.