Thursday, July 15th 2021
AMD FidelityFX FSR Source Code Released & Updates Posted, Uses Lanczos under the Hood
AMD today in a blog post announced several updates to the FidelityFX Super Resolution (FSR) technology, its performance enhancement rivaling NVIDIA DLSS, which lets gamers dial up performance with minimal loss to image quality. To begin with, the company released the source code of the technology to the public under its GPUOpen initiative, under the MIT license. This makes it tremendously easy (and affordable) for game developers to implement the tech. Inspecting the source, we find that FSR relies heavily on a multi-pass Lanczos algorithm for image upscaling. Next up, we learn that close to two dozen games are already in the process of receiving FSR support. Lastly, it's announced that Unity and Unreal Engine support FSR.
AMD broadly detailed how FSR works in its June 2021 announcement of the technology. FSR sits within the render pipeline of a game, where an almost ready lower-resolution frame that's been rendered, tone-mapped, and anti-aliased, is processed by FSR in a two-pass process implemented as a shader, before the high-resolution output is passed on to post-processing effects that introduce noise (such as film-grain). HUD and other in-game text (such as subtitles), are natively rendered at the target (higher) resolution and applied post render. The FSR component makes two passes—upscaling, and sharpening. We learn from the source code that the upscaler is based on the Lanczos algorithm, which was invented in 1979. Media PC enthusiasts will know Lanczos from MadVR, which has offered various movie upscaling algorithms in the past. AMD's implementation of Lanczos-2 is different than the original—it skips the expensive sin(), rcp() and sqrt() instructions and implements them in a faster way. AMD also added additional logic to avoid the ringing effects that are often observed on images processed with Lanczos.With the source code now fully available, nothing stops developers from adding FSR into their games. Unlike NVIDIA's DLSS solution, FSR requires almost no engine tweaks, you just add the shader pass into your rendering pipeline. In a separate PDF document AMD went into more detail on how to integrate FSR, what inputs are required, and how to present the new rendering options to the end-user.
We took a closer look at the source code AMD is providing, and it's really the full source. There are no external dependencies or DLLs. You are free to modify and adapt as you see fit. This makes FSR an interesting tech for modders, who should be able to more easily integrate the tech into existing games, through hooks. Also there's nothing that would prevent this from running Linux. AMD's sample code includes Windows samples only at this time, but integrating FSR with other operating systems, even cell phones is trivial at this point. AMD has also released a demo for FSR, which lets you dig into all the settings options and compare them in a way that's better suited to investigation, than a hectic game. We've uploaded it to our downloads section.
AMD also announced that even more games will receive FSR support, with announcements lined up for tomorrow. Among these titles are Edge of Eternity, Resident Evil 8: Village, and Hired Gun. The company also announced implementation of FSR with two leading game engines, Unreal Engine 4 and Unity.
AMD is working with game studios with implement FSR with Asterigos, Baldur's Gate 3, Far Cry 6, Farming Simulator 22, Forspoken, Myst, Swordsman Remake, and Vampire the Masquerade: Bloodhunt.
If you haven't yet, check our our in-depth review of AMD's FSR upscaling technology (posted in July).
Sources:
FSR Source Code, AMD FSR Developer Page, FSR 1.0 Docs
AMD broadly detailed how FSR works in its June 2021 announcement of the technology. FSR sits within the render pipeline of a game, where an almost ready lower-resolution frame that's been rendered, tone-mapped, and anti-aliased, is processed by FSR in a two-pass process implemented as a shader, before the high-resolution output is passed on to post-processing effects that introduce noise (such as film-grain). HUD and other in-game text (such as subtitles), are natively rendered at the target (higher) resolution and applied post render. The FSR component makes two passes—upscaling, and sharpening. We learn from the source code that the upscaler is based on the Lanczos algorithm, which was invented in 1979. Media PC enthusiasts will know Lanczos from MadVR, which has offered various movie upscaling algorithms in the past. AMD's implementation of Lanczos-2 is different than the original—it skips the expensive sin(), rcp() and sqrt() instructions and implements them in a faster way. AMD also added additional logic to avoid the ringing effects that are often observed on images processed with Lanczos.With the source code now fully available, nothing stops developers from adding FSR into their games. Unlike NVIDIA's DLSS solution, FSR requires almost no engine tweaks, you just add the shader pass into your rendering pipeline. In a separate PDF document AMD went into more detail on how to integrate FSR, what inputs are required, and how to present the new rendering options to the end-user.
We took a closer look at the source code AMD is providing, and it's really the full source. There are no external dependencies or DLLs. You are free to modify and adapt as you see fit. This makes FSR an interesting tech for modders, who should be able to more easily integrate the tech into existing games, through hooks. Also there's nothing that would prevent this from running Linux. AMD's sample code includes Windows samples only at this time, but integrating FSR with other operating systems, even cell phones is trivial at this point. AMD has also released a demo for FSR, which lets you dig into all the settings options and compare them in a way that's better suited to investigation, than a hectic game. We've uploaded it to our downloads section.
AMD also announced that even more games will receive FSR support, with announcements lined up for tomorrow. Among these titles are Edge of Eternity, Resident Evil 8: Village, and Hired Gun. The company also announced implementation of FSR with two leading game engines, Unreal Engine 4 and Unity.
AMD is working with game studios with implement FSR with Asterigos, Baldur's Gate 3, Far Cry 6, Farming Simulator 22, Forspoken, Myst, Swordsman Remake, and Vampire the Masquerade: Bloodhunt.
If you haven't yet, check our our in-depth review of AMD's FSR upscaling technology (posted in July).
92 Comments on AMD FidelityFX FSR Source Code Released & Updates Posted, Uses Lanczos under the Hood
FSR can really give a boost in fps in that handheld and improve its longevity...
At least FSR looks better than a sharpening filter :D, barely...
PS: since we are discussing sharpening in the case of a ringing filter which is not the industry practice, maybe change tune and advocate the bilateral filter like I do. It is nonringing and is sharpening invariant since it is a a²+b² resolve of the coordinate axis. It is more advanced and what I'm rooting for.
Games by their nature are a motion medium, but I guess if you like standing still and closely analysing still scenes, DLSS is a great product.
CAS destroys color details? I beg to differ...that said I do use a touch of DPX as well. I literally didn't even customize this at all for RiftBreaker I just straight up took my universal CAS/DPX configuration I've been working on with Reshade and copied it over to RiftBreaker. It took me a whole minute to copy and paste it and lighting, shading, reflections, color, texture detail all are improved a bit in a very non obstructive way. It even improves the UI elements they are more crisp and easier to read.
Default
CAS + DPX (to add a touch of luminescence)
FSR is FREE, you don't have to pay AMD to use it.
DLSS is a paid service AFTER you purchased Nvidia RTX series hardware.
One solution requires specialized hardware and the other one isn't.
There is no "For the same money" argument here when you competition demands $0 for implementation.
If you buy a RTX card, you get both.
FSR and DLSS.
Now if you dont want to buy any card at all, obviously FSR is free.
Never claimed it wasnt.
As for ghosting, any thin objects that usually have ghosting with DLSS will just disappear with FSR, so I wouldn't call FSR being any better there LOL, unless you like missing details.
IMO I would not use any mode lower than 4K FSR UQ, as 4K FSR Quality produce noticeable ringing artifacts
imgsli.com/NjE3MjM
You specifically stated one has to buy a RTX card to get DLSS.
You just repeated what I 've said.
What are you arguing?
Well FSR needs TAA desperately so you are gonna have to deal with TAA either way.
FSR + SMAA vs FSR + TAA
You already can mix FSR & TAA in some titles, but this is a shit way forward. IMO, FSR will in stage 2 be doing some form of AI reconstruction ala DLSS and tied into RDNA3 next year, and AMD's patents on it suggest that's exactly what will be occuring.
Kinda hard to imagine doing that would actually compete with an A.I algorithm that systematically improving itself.
Don't overestimate stupid filters when compared to their actual counterparts.
I hate overly blurry and smeary scene's and Nvidia's had entirely too much of that in the last decade. I do like MFAA, but of nearly all Nvidia's AA techniques it's about the least obtrusive on scene blur which also mutes color a bit. Less is more and better job you do with vertex pixel shader post process the better a scene will look as a whole in the end which is where AMD is killing it relative to Nvidia.
In the video of Necromunda GamerGuy posted and Marvel Avengers FSR had better lighting, shadows, reflections, color, and texture detail plus the scene despite slightly lower average FPS had better in motion FPS if you played the video back at x0.25 speed and comapared in the Necromunda video side by side of FSR/DLSS in the scene with the fans spinning it was like night and day DLSS looks terrible by contrast. You get better light shafts and motion of them with FSR. Believe it or not DLSS's temporal TAA kills a lot of scene detail outright with the post process.
I'm not going to defend Nvidia on DLSS for the sake of it when FSR objectively looks superior side by side in damn near everyday from what I can tell. They both are acceptable enough I suppose, but one is easy to implement and free while the other is a ringing example of corporate behavior at it's worst rather than competitive and at it's best. DLSS or similar could've easily been free and AMD is proof of it. You can mix CAS & TAA in reshade just fine, but I stopped using TAA in reshade in favor of DPX alongside CAS because it does a better job at it in practice with lower overhead. When I do need to upscale the render image with a texture filter technique contrast adaptive LUT has become my favorite followed by clarity which I have 3 configurations I made more light weight for soft light, linear light, and hard light that I mix together if using them. I really don't care much for TAA it's got a nauseating smearing to me.
I feel you get way more upside from good tone mapping and controlled selective sharpening. The trick is good layering and blending. Why I like the adaptive LUT is it's designed for color gradient blending in mind and it's lighter weight than TAA or Clarity for that matter as well. For a texture filter technique it's probably the most reasonable and lightweight compromise you'll get for the IQ upside it can provide in certain area's w/o at the same time introducing in motion temporal artifact issues that come from texture filtering effects that don't play nicely with pixel level scene sharpening that all scene have a bit off to offset blend two or more render frames together.
That last part is also why I don't like AF much and keep it either off x2 or x4 and minimize negative LOD bias in relation to it. I've started to lean away from using negative LOD bias at all actually once I learned about how the sharpening from it impacts AF and causes scene artifact superellipse issues. It also adds a minor bit of GPU overhead using negative LOD bias, but more importantly I feel by not utilizing it that it should actually leave more overhead room to better utilize CAS in place of it which does a more controlled and better job at scene sharpening than LOD bias would otherwise do itself. I haven't tried it yet, but I've contemplated trying a exaggerated CAS configuration with a bit of a positive LOD bias and seeing just what happens from a comparison standpoint.
Perhaps I'll investigate a bit with a negative, neutral, and positive LOD bias CAS configuration 3-way comparison and get a idea of what happens play with strength values a bit on the sharpening control aspect of CAS itself. It might have some benefit one way versus the other and I'd like to look into that a bit.
If you wanna talk about "better value"
I bet many of us are willing to share how ridiculous MSRP vs "actual street price" on Nvidia cards are.
I'm getting a AMD GPU next time around. I was impressed with their GPU software for a cheap HP laptop so I know what to expect. It's not perfect, but gives pretty good options. I honestly like Intel's software in some area's better than AMD/Nvidia for that matter their options in their video section of software is solid with some nice CMYK control. The worst is actually Nvidia and what is crazy is you can't even brightness and contrast values by 1% it's either 2% or 3% and just skips between them. I'm guessing most likely even the old archaic, but wonderful in it's day RivaTuner allows better for calibration which is kind of sad and shows how little Nvidia gives a damn about even bog standard basic levels of image quality.
You might not like it, but it's doing its job tremendously well at this point. This is where people will always come unstuck, no matter which, you could always say "well I prefer XYZ to ABC, so to me it's better"
The best argument is that it's free and easy to imp, nobody can deny those, the rest is a personal preference of what you like in an image.