AMD releases FSR 3 source code for DirectX 12 and Unreal Engine 5 game developers, aiming to increase interest and adoption

AMD FSR 3
(Image credit: AMD)

AMD and GPU Open released the FidelityFX Super Resolution 3 (FSR 3) source code today. AMD promised to make the FSR 3 source code available when the first games featuring the latest version of its super resolution technology were released in September. However, we’ve known about the main feature of FSR 3, its AFMF frame generation technology since November 2022.

If you are a developer, tinkerer, or just curious, the new code can be found on the FSR 3 branch of the FidelityFX-SDK on GitHub. The AMD FSR 3 integration guide PDF published by GPU Open might also be useful. The full source code for integrating FSR 3 features into DirectX 12 and Unreal Engine 5 apps, two of the most popular modern PC gaming APIs, is provided in the download. The diagram below clearly and concisely illustrates how FSR 3 interfaces with a game engine.

(Image credit: AMD)

Of course, FSR 3 isn’t just about frame generation; it brings forth all the FSR 2 temporal upscaling technology and more. A bullet point list of the key features of FSR 3 is provided below:

  • Frame generation, with interpolated frames for smoother motion
  • Resolution upscaling, claimed to be near-native quality in scaling factors from 1x to 9x
  • Latency reduction, delivering reduced latency with improved frame pacing
  • Anti-aliasing, providing high quality AA, with FSR 3 capacle of replacing TAA in any game frame and offering a new ‘Native AA’ mode
  • Optimized, for good performance on mid-to high-end GPUs and either GPU or CPU limited situations
  • Cross platform, working on GPUs across brands, and multiple platforms (e.g. PC, Xbox).

Moreover, AMD and GPU Open assert that FSR 3 is easy and intuitive to integrate into a game or app, especially one that previously used FSR 2. The open source (MIT License) also facilitates easy development, with the provided DX12 and UE5 code samples.

GPU Open also highlights some important things to consider when using FSR 3, and this information is helpful to gamers so they can understand how / when to use FSR 3.

Firstly, for gamers who want to use FSR 3 for upscaling without any frame generation tech – this is OK, and it can function just like FSR 2. Secondly, it is advised to use FSR 3 technology only when it can achieve 60 fps+. As a guide, GPU Open says that if your PC can’t hit 30 fps native at the selected resolution, you should avoid using FSR 3 upscale. Lastly, gamers should use an in-game frame limiter if one is available and/or use V-Sync On.

(Image credit: AMD)

AMD’s FSR 3 launched with just two supported games, Forspoken and Immortals of Aveum, but a newly updated list has been provided alongside this source code release (see above). Hopefully, this open-source release will also build momentum with FSR 3 adoption.

TOPICS
Mark Tyson
News Editor

Mark Tyson is a news editor at Tom's Hardware. He enjoys covering the full breadth of PC tech; from business and semiconductor design to products approaching the edge of reason.

  • M0rtis
    Smart move. Now the community can do the work to make it bettter
    Reply
  • atomicWAR
    This has a lot of potential. We might well see some more mods where you enable both AMD and Nvidia's frame gen tech at the same time (like we have already seen). At the very least maybe we can see modders/other corps lower the latency on AMDs solution or further it at least as I heard they made great strides with the new Avatar game. I have it and while I haven't used FSR3 with frame gen, honestly with a 4090 @4K it frequently sits at the 96-128FPS range. I only got it last night to play with the wife and haven't tested it thoroughly yet...she is gone for the weekend so I might well tear into some benchies.
    Reply
  • atomicWAR
    M0rtis said:
    Smart move. Now the community can do the work to make it bettter
    100%. Just look at what modders have already done (ie jerry-rigged it so both frame gens techs to work together). Peeps on 160+hz might finally use all those frames lol. But the real crown would be to lower the latency AMDs fluid motion frames gives you. Do that and it might 'effectively' kill off Nvidia's proprietary solution.
    Reply
  • ivan_vy
    M0rtis said:
    Smart move. Now the community can do the work to make it bettter
    upscaling and frame generation will do wonders for PS3 emulation.
    Reply
  • The Historical Fidelity
    This all well and good, but I’m still waiting on AMD to finally allow a 4x super resolution setting so I can play older games at 4x super sample. This has been the only thing I miss since switching from nvidia to AMD…being able to super sample from 3440x1440 to 6880x2880. Right now AMD limits me to 5120x2160 for some arbitrary reason
    Reply
  • cryoburner
    ivan_vy said:
    upscaling and frame generation will do wonders for PS3 emulation.
    It seems unlikely that it would help much. From what I understand, PS3 emulation is CPU-limited more than anything. It shouldn't take all that much graphics hardware to render 10+ year old games that were originally designed to run on a graphics chip mostly equivalent to a (circa 2005) Nvidia 7800 GTX, even at much higher render resolutions. The real performance limitations come from trying to emulate the PS3's 8-core IBM Cell processor on other CPUs, and upscaling isn't going to help with that.

    And FSR upscaling was already added to the leading open-source PS3 emulator well over 2 years ago. At the time, the developers stated that they would not be supporting DLSS, because it required access to motion vectors, something their emulator (and perhaps PS3 games in general) didn't use. The main advantage of FSR2+ is that it is also able to utilize motion vectors for better results, but much like DLSS, if the emulator doesn't have access to that, it likely won't be implemented. FSR3 Frame Generation also utilizes motion vectors. It's technically possible to implement frame generation without access to that, but the results likely won't be particularly good.

    Even if it were possible to implement frame generation in a PS3 emulator, that feature is usually best reserved for games that already run well, to make them look a bit smoother on high refresh (120+ Hz) displays, rather than something to fix performance issues with games running at low framerates. Since the games are still effectively running at or below their frame rate with the feature disabled, but then have to wait until a subsequent frame is rendered before generating an interim one between the two, it effectively increases input latency rather than reducing it. So while a game's motion might look smoother to an observer, it won't really feel smoother while gaming, in terms of responsiveness. The generated frames also tend to look notably worse then the rendered ones, and while that might not affect visual quality so much at high frame rates, at low frame rates the artifacts can become more noticeable. So if an emulated game has unplayable performance now, frame generation isn't likely to help with that.
    Reply
  • thestryker
    If we're going to keep getting higher and higher refresh rate displays this type of technology is going to be a must. I'd really like to see some successful hardware agnostic approaches, but I can't help but look at FSR/DLSS/XeSS. DLSS and XeSS (on Arc) look better than FSR in most circumstances below 4k resolution. I can't help but wonder if frame generation is going to be similar in that it works best on a dedicated codepath that can leverage proprietary hardware.

    edit: speaking of Intel and frame generation I just saw this https://asia.siggraph.org/2023/presentation/?id=papers_744&sess=sess155
    Reply
  • dimar
    I'd like to see this tech working on DOSBox-X
    Reply
  • ivan_vy
    cryoburner said:
    It seems unlikely that it would help much. From what I understand, PS3 emulation is CPU-limited more than anything. It shouldn't take all that much graphics hardware to render 10+ year old games that were originally designed to run on a graphics chip mostly equivalent to a (circa 2005) Nvidia 7800 GTX, even at much higher render resolutions. The real performance limitations come from trying to emulate the PS3's 8-core IBM Cell processor on other CPUs, and upscaling isn't going to help with that.

    And FSR upscaling was already added to the leading open-source PS3 emulator well over 2 years ago. At the time, the developers stated that they would not be supporting DLSS, because it required access to motion vectors, something their emulator (and perhaps PS3 games in general) didn't use. The main advantage of FSR2+ is that it is also able to utilize motion vectors for better results, but much like DLSS, if the emulator doesn't have access to that, it likely won't be implemented. FSR3 Frame Generation also utilizes motion vectors. It's technically possible to implement frame generation without access to that, but the results likely won't be particularly good.

    Even if it were possible to implement frame generation in a PS3 emulator, that feature is usually best reserved for games that already run well, to make them look a bit smoother on high refresh (120+ Hz) displays, rather than something to fix performance issues with games running at low framerates. Since the games are still effectively running at or below their frame rate with the feature disabled, but then have to wait until a subsequent frame is rendered before generating an interim one between the two, it effectively increases input latency rather than reducing it. So while a game's motion might look smoother to an observer, it won't really feel smoother while gaming, in terms of responsiveness. The generated frames also tend to look notably worse then the rendered ones, and while that might not affect visual quality so much at high frame rates, at low frame rates the artifacts can become more noticeable. So if an emulated game has unplayable performance now, frame generation isn't likely to help with that.
    'fake frames' (done with no motion vectors required) would help in RPGs games (latency is not so important here). 20-30 fps are just abysmal to play with.
    Reply