[Released] FSR 3 - Boost your FPS with AMD FidelityFX™ Super Resolution 3.0 (FSR 3) Upscaling


Boost your frames with AMD FidelityFX Super Resolution 2 Upscaling for Unity!
Performance optimalisation starts here!

Assetstore URL: https://assetstore.unity.com/packages/slug/252172

This Unity asset is created to interface with the open-source AMD FidelityFX-FSR3 found here: FidelityFX-SDK/docs/techniques/super-resolution-interpolation.md at fsr3-v3.0.3 · GPUOpen-LibrariesAndSDKs/FidelityFX-SDK · GitHub

AMD FidelityFX-FSR3 is an upscaling technique, creating high quality and resolution frames based on lower resolution input. By using this, projects could have drastically lower GPU requirements than without.

Only if your project is limited by GPU performance, FSR 3 will gain you a higher framerate. If a project is limited by CPU performance, all it will do is make the GPU workload lower. While this may seem like a big limitation, it also means a laptop will use way less battery power when using FSR 3!

Free FSR 3 Update
This asset will soon be updated to FSR 3 upscaling with a free update! Frame Generation will be a later update next year, but will need to be researched first.

Easy to use
Simply drag our FSR 3 component on your camera and you’re all set to go!
Both Built-in and URP are a single drag and drop, only for HDRP we need two small changes to the source files. All described into detail in our documentation!

Platform support
By using a compute shader FSR back-end, we’re able to support almost all platforms, check the Technical details below for which platforms are supported and tested.

Current supported Unity Render Pipelines:
Built-in (BIRP), Universal Render Pipeline (URP) and High-Definition Render Pipeline (HDRP).

Current supported platforms:

  • Windows (DX11, DX12, Vulkan)
  • Linux (Vulkan)
  • MacOS (Metal)
  • iOS (Metal)
  • Android (Vulkan)
  • Playstation 4
  • Playstation 5
  • Xbox One
  • Xbox Series X|S
  • Nintendo Switch

Not tested platforms:

  • VR
  • WebGL
18 Likes

Hi, glad to hear that, but just a little curious!

Is there a way to generate motion vectors for URP (released & current beta ver.)?

As far as I know, there’s no motion vector pass in its Lit shader & most custom shaders.

So a possible option might be using another shader (exists in URP package) to render the motion vectors, which does not support custom vertex positions.

(It can be unwise that Unity does not add motion vector pass to official URP shaders after claiming that URP supports motion vectors on the 2021 roadmap.)

no support for built-in? many of us do not use URP or HDRP

2 Likes

We will definitely have support for the standard renderpipeline! (I added the “built-in” term you used to my post, thanks for that). The first release will include it.

About URP, to be perfectly honest, our current focus has been Built-in and HDRP, URP support is currently half-way complete. So we haven’t yet ran into issues with the motion vectors, but I think it’ll work out. We had a few bumps in the implementation for SRP, but we’re able to fix them all:)

2 Likes

Make sure to add BIRP support, yeah users love the idea of keeping BIRP around for quite longer! :V :smile:

1 Like

Haha, unfortunately Unity never really decided how to call the BIRP:p

Hmmmm… this sentence makes little sense. Do you mean that your focus has been the custom srp’s a tiny number of people have been writing for themselves and HDRP? But not URP, one of the major two supported implementations of SRP?

What do you mean your focus has been SRP and HDRP?

Standard render pipeline (SRP) is what OP calls built in

Oh, understood. Confusing, because the rest of the universe calls scriptable render pipelines SRP (Scriptable Render Pipeline | Learn about Unity SRP) and has since unity started this effort.

Thanks for the clarification; at least I know what he means now.

1 Like

Sorry for the confusion, internally we call it the Standard Render Pipeline(SRP). I have updated my original post.

For clarification: The first release will have support for the built-in, URP and HDRP.

1 Like

No not the rest of the universe. I learned BIRP as SRP too and it was in the docs at one point and even mentioned in some forgotten comments way later. This was discussed in some other thread a couple months ago :smile:

But yeah, better to call it built-in now :slight_smile:

On the topic - a comfortably usable FSR implementation would certainly be great.

1 Like

I cast my vote for 15+ USD even though my local currency is a mess against USD.
This is because I know it’s not an easy job.

DLSS in 2021 LTS is broken. It is broken, as in, custom postprocess and custom volumes are not working correctly. When a custom volume or custom postprocess is enabled with DLSS, Unity only renders a quarter of the screen. They never backported their fix to 2021 LTS. I had to go implement a custom injection point, running DLSS after PostProcess, which decreases PostProcess quality considerably. I’m still maintaining this repo on my GitHub, but it is a pain, and at one point I said screw it, and switched to 2022.1 & HDRP 13, scrapping some of the plugins I’ve been using. Some plugins only support specific Unity versions only when LTS is released, which means 2022.3 release is what I have to be waiting for, but I don’t have time for that.

While doing this, I looked into adding FSR 2.0 support because Unity only implemented FSR 1.0 into HDRP. It was too much work and stepping into uncharted territories for me.

So, I have my questions.
Which Unity & HDRP versions will be supported?
If this is going to be a “drag & drop” solution under camera, how do you plan on supporting HDRP settings dynamic scaling, or is it going to be utilizing custom frame settings?
Is this going to be a per camera component then? Currently, Dynamic Scaling is a per camera setting.

I’m also very interested in the technical side. I’m down with whatever little info you can share.

1 Like

Yeah, quite a bummer FSR 2.0 (and DLSS for that matter), require quite a bit of work. And to further complicate things, thousands of different render pipelines…

Lots of questions, lets see if I can answer a few.

We’re gunning for easy drag & drop 1 component on each camera. I believe for BIRP Dynamic Scaling is project wide, not camera dependent. Also, the way I see it, FSR 2.0 is always ment as a project wide “Quality Setting” by design on AMD’s part. However, if popular request, we could change this in future upgrades.

Unity versions: not 100% sure yet, since the renderpipelines mess things up considerably. But for the built-in, theoretically we can go down to 2017 LTS.

HDRP/URP versions: Can’t say much about this yet, we need it ourselves for an in-house project on HDRP v11 I believe (though not 100% sure, could be 12). But once released we can possibly add support for older versions on request.

For the Built-in we use commandbuffers to blit the required buffers to rendertextures before PostProcess, upscale and blit the result back to the colorbuffer. Currently we’re using the ScalableBufferManager (Dynamic Resolution for BIRP and URP, and the HDRP equivalent), but we’re also looking towards other options, without breaking PostProcessing.

But for HDRP and URP, my personal knowledge is less advanced (but my team has!). Luckily for most of the “behind the scenes” stuff, FSR will be the same for BIRP, URP & HDRP, but when and how to capture the buffers and scale the camera’s will require more work.

2 Likes

I willing to throw some money, when this thing is out for HDRP

1 Like

FSR 2 or DLSS Support for URP sounds great, but for what Unity LTS Version? 2021 LTS possible?

1 Like

I can’t give any promises as of yet, but ideally we’d like to add support for all LTS versions available (2017 and up). However, this might be impossible for the SRP’s.

I’ve been doing some work today, for HDRP we’ll probably use the “Custom Pass Volume” to inject FSR 2, so it should work from HDRP 7.1.8 and up.

For URP, we’ll best use “Render Features”, it seems these are around since URP 10.1.

I “theoretically” made both of the implementations today (HDRP and URP), but I was working on a mac, so I couldn’t check the actual results.

1 Like

Thank you very much for your answers.
I can understand the BiRP part, but HDRP part is a little bit tricky. Custom Volume seems pretty reasonable, however as I said, DLSS only renders quarter (or whatever downscale/upscale ratio) of the screen when enabled. If FSR 2.0 can overcome that, I’ll happily switch back to 2021.3 LTS :slight_smile:

1 Like

Its very weird that DLSS renders only quarter of the screen as you say, my current test of FSR 2.1 for HDRP in 2021.3 LTS has no such issues… (knock on wood)

1 Like

Perfect!

But you can look into this issue to see my problem: https://github.com/alelievr/HDRP-Custom-Passes/issues/32#issuecomment-1190268406