Unity-Technologies / DynamicResolutionSample

A drop-in dynamic resolution script
Other
137 stars 21 forks source link

What upscale filter is this using in URP, and how to change it? #4

Open jollypunch opened 1 year ago

jollypunch commented 1 year ago

I'm on URP 2021.3.11. In HDRP you can change filtering in the editor, and in URP you can change it for renderscale. How can I choose e.g. FSR for dynamic resolution upscaling?

MattSutherlin commented 1 year ago

Good question, and I'll have to look into it and get back to you. When I originally wrote the script only HDRP exposed a filter option and it was done in a way that the script didn't have to know anything about it. It's possible that setting the filter for renderscale will also affect dynres in URP but I don't know for sure.

Torgo13 commented 1 year ago

This can be used to change the upscaling method in URP in Unity 2021.3 and 2022.3. It can be set to Auto, Point, Linear or FSR. Only FSR 1.0 is provided by default. Setting the sharpness is optional, and is overridden by the TAA sharpness if you have that enabled. ((UniversalRenderPipelineAsset)QualitySettings.renderPipeline).upscalingFilter = UpscalingFilterSelection.FSR; ((UniversalRenderPipelineAsset)QualitySettings.renderPipeline).fsrSharpness = 0.92f;

TAA isn't provided in Unity 2021.3, but there are unofficial implementations for it. In 2022.3 you're now able to change which AA method is used with scripting. The quality setting only applies to SMAA, the TAA quality can only be set in the editor. Camera.main.GetUniversalAdditionalCameraData().antialiasing = AntialiasingMode.TemporalAntiAliasing; Camera.main.GetUniversalAdditionalCameraData().antialiasingQuality = AntialiasingQuality.High;

Check this repository https://github.com/GPUOpen-Effects/FidelityFX-FSR2-Unity-URP for a free and open FSR 2 implementation (DirectX 11 only) or the asset store for one with more supported platforms. Combining TAA with FSR 1.0 should be fairly close to what FSR 2 gives you though.