godotengine / godot-proposals

Godot Improvement Proposals (GIPs)
MIT License
1.12k stars 69 forks source link

Implement Arm Accuracy Super Resolution (Mobile Friendly FSR) #10411

Open Bimbam360 opened 1 month ago

Bimbam360 commented 1 month ago

Describe the project you are working on

An Android 3D mobile game

Describe the problem or limitation you are having in your project

Performance/Quality trade offs are always an issue on mobile, especially relating to 3D. It is even recommended by the Godot docs to use lower than screen resolutions to offset this.

FSR should be beneficial, however implementations for mobile are non-existent and the proposed method directly competes/exceedes FSR in benchmarks for mobile.

Describe the feature / enhancement and how it helps to overcome the problem or limitation

Arm Accuracy Super Resolution is a newly announced MIT upscaling tech specifically targetting mobile devices.

Full article can be found here with comparisons to FSR: https://community.arm.com/arm-community-blogs/b/graphics-gaming-and-vr-blog/posts/introducing-arm-accuracy-super-resolution

Describe how your proposal will work, with code, pseudo-code, mock-ups, and/or diagrams

Someone smarter than me would need to implement, but firstly just getting the ball rolling as I could not find any raised tickets on the topic.

If this enhancement will not be used often, can it be worked around with a few lines of script?

No, not that I know of.

Is there a reason why this should be core and not an add-on in the asset library?

This would likely be used by literally everyone making a 3D mobile game, and potentially desktop too depeneding on performance benchmarks once deployed, and MIT licensing removes any licensing issues.

Calinou commented 1 month ago

Note that ARM Accuracy Super Resolution is not open source yet (see the bottom of the article you linked). That said, once it's released, I expect it'll be a better choice than adopting FSR 1.0 Lite for mobile.

One challenge however is that I doubt ARM will develop an OpenGL-compatible version, preferring to target Vulkan instead. If this is the case, it'll be up to the community to port it to OpenGL ES 3.0 so that it can work with the Compatibility rendering method.