AMD FSR antialiasing discussion

  • Thread starter Deleted member 90741
  • Start date
Unless something has changed recently Pascal never exposed FP16 support in DX/VK. The 1/64 rate was provided in CUDA only for s/w compatibility reasons. (And I'm not talking about GP100 of course.)
this sounds correct with my experience. Thanks
 
Here's AMD's description on the process:

___________________________________________________________________________________
FidelityFX Super Resolution is a spatial upscaler: it works by taking the current anti-aliased frame and upscaling it to display resolution without relying on other data such as frame history or motion vectors.

At the heart of FSR is a cutting-edge algorithm that detects and recreates high-resolution edges from the source image. Those high-resolution edges are a critical element required for turning the current frame into a “super resolution” image.

FSR provides consistent upscaling quality regardless of whether the frame is in movement, which can provide quality advantages compared to other types of upscalers.
FSR is composed of two main passes:

  • An upscaling pass called EASU (Edge-Adaptive Spatial Upsampling) that also performs edge reconstruction. In this pass the input frame is analyzed and the main part of the algorithm detects gradient reversals – essentially looking at how neighboring gradients differ – from a set of input pixels. The intensity of the gradient reversals defines the weights to apply to the reconstructed pixels at display resolution.
  • A sharpening pass called RCAS (Robust Contrast-Adaptive Sharpening) that extracts pixel detail in the upscaled image.
FSR also comes with helper functions for color space conversions, dithering, and tone mapping to assist with integrating it into common rendering pipelines used with today’s games.

___________________________________________________________________________________

To anyone who read (and is able to understand) the code, is RCAS any different from CAS?



I was under the impression FP16 was 1/64 the performance of FP32 on pascal? (deliberate detune by Nvidia to push Data Scientists to buy the titan series)

The lonely FP16 unit in the SM is there for compliance reasons, but real FP16 throughput should be at least the same as FP32 as the driver can probably just promote all FP16 variables and operations to FP32.

I don't know if Pascal or Maxwell have any advantage in using FP16, by e.g. saving register data bandwidth. I know Polaris does this.
 
FSR seems to be a combination of Lanczos based upscaling and CAS sharpening so nothing really new and kinda explain why Lanczos upscaled screenshots look very close to what you get with FSR.
Both passes are done in compute and can run in FP16 without quality loss.
There are some hints that future FSR versions may use temporal approach too.

I don't know if Pascal or Maxwell have any advantage in using FP16, by e.g. saving register data bandwidth. I know Polaris does this.
That's another weird recommendation in AMD docs - to use FP32 on Polaris.
 
Necromundi Hired Gun has adopted FSR and it had DLSS support already.

Comparison video showing the game running at FSR Ultra Quality and DLSS 2.2 Quality.

Judge by yourself. The video doesnt show any zoomed image but the difference doesnt seem big and it performs better with FSR.

 
Obviously DLSS is providing a better image with reconstruction, more detail. Likely better in motion as well. This is a given since it's a superior technique that we've gone over many times but will be argued back and forth for the next week. There's zero surprise here.

Maybe some discussion can actually be had on specifically FSR without it degrading into the usual stupid wars... doubtful.
 
Obviously DLSS is providing a better image with reconstruction, more detail. Likely better in motion as well. This is a given since it's a superior technique that we've gone over many times but will be argued back and forth for the next week. There's zero surprise here.

At the same input resolution yes but isn't FSR ultra actually running at a higher res than DLSS quality?
 
Obviously DLSS is providing a better image with reconstruction, more detail. Likely better in motion as well. This is a given since it's a superior technique that we've gone over many times but will be argued back and forth for the next week. There's zero surprise here.

Maybe some discussion can actually be had on specifically FSR without it degrading into the usual stupid wars... doubtful.

DLSS also has some annoying aliasing, you can see interior lines with jaggies. Wish they wouldn't oversharpen or whatever is going on there, as otherwise it does look better, but those jaggy edges are going to look worse in motion as well. But then that's my preference, for a bit smoother rather than oversharpened, I always turn down sharpen filters where available.
 
Last edited:
At the same input resolution yes but isn't FSR ultra actually running at a higher res than DLSS quality?
This should not matter much.

Spatial upscaling will always be worse on pixel sized geometry without MSAA or SSAA - wires, fences, tree branches, geometry specular highlights, alpha transparent textures, such as tree branches, leaves, grass, i.e. all foliage, all other high frequency geometry details will lose definition and these details not even have to be real geometry, per pixel material blending in shaders, POM like effects, thin texture specular highlights, etc, etc, all these details will lose definition.

All this stuff is visible in these screenshots - https://forum.beyond3d.com/threads/amd-fsr-antialiasing-discussion.62394/page-40#post-2215893

Temporal accumulation can reconstruct these high frequency details in pure accumulation mode, but then TAA cuts off most of the mentioned high frequency details with neighborhood clipping and adds blur instead by clipping color space of history to a color space of 3x3 pixels in the last frame, that's why DLSS often looks better than native with TAA.

Using TAA with FSR doubles losses - that's a combination of lossy neighborhood clipping with lower resolution.

AMD suggests using FSR with lower texture mip bias and I would love to see how it affects temporal stability (would be a very bad idea to do something like this in a game with MSAA for example), neighborhood clipping in TAA is good at cutting off high frequency signal, but any texture noise that survive should be quite apparent and can be futher exaggerated by RCAS.

DLSS also has some annoying aliasing, you can see interior lines with jaggies.
TAA has it too since accumulation fails in the same cases for both, luckily aliasing can be fixed with image prefiltering with morphological AA, sad that no dev is doing this.
 
Last edited:
All these games which I don't have are getting patches.

One good thing is it looks like FSR will not require any driver changes from the Nvidia team to get an acceptable result.
The code itself can probably be optimized for Nv h/w though. FP16 version may run differently on Turing and Ampere for example. 16 series may need some special care as well.
 
Woah, that's interesting. Does anyone here have the game and can make comparisons?

All these games which I don't have are getting patches.


The code itself can probably be optimized for Nv h/w though. FP16 version may run differently on Turing and Ampere for example. 16 series may need some special care as well.

Speaking of FP16, doesn't route Nvidia FP16 calculations through the tensor cores automatically? If so, I wonder if the upscaling cost is any different on RTX GPUs compared to RDNA2.
 
Last edited:
Can you enable both at the same time though? Since that was how I understood "Hybrid Upscaling" in those patch notes.
I'm assuming it's either or situation. You can use either FSR or TAAU to upscale from some lower res to your screen. Running them both don't make much sense to me. Chances are that TAAU with some CAS on top would produce better results than TAAU+FSR.
 
Back
Top