Problem with chaning reslution not giving quility or increasing proformacne

Godot Version

4.3

Question

I am making a cross platform (android and windows) 3d game … because it is on PC I have set the viewport resolution in the project settings to 1920x1080 … this cased the android performance to drop from 80 Fps (using the default settings) to 30 which is not ok but expected.

the problems started when I tried t reduce the resolution to gain back that performance in android … first of all once I have set up the viewport resolution in the project settings I can’t change it because the UI depends on it …

knowing that it should be a guide (as the docs explain) not the final resolution for the project, the problems started when the project uses that resolution for ever other viewport scale or screen resolution setting no matter what

in other words … if you set it up to 1920x1080 and run the game on 8k screen … you will not be getting the 8k graphics … you will get an upscale of 1920x1080… which looks very bad (test it with 800x600 on 1080p screen to see)… on the other hand if you do set it up to lets say 4K and you run it at 1920x1080 to gain back some performance … you get non. the image looks worst (expected and fine) but with out the benefit.

as you can tell this has nothing to do with android as I found these problem on windows, which where the same on android (and i guess it is a Godot thing in general)

the suggested way to deal with lowering restitution is to scale every thing down or down sample it … both of which do not give you the performance back … and for increasing the resolution … it is simply not talked about (don’t look to hard approach) …

i have tested everything but ignoring the UI … and changing the viewprot scale from the project settings anyway … which gave me the real quality and performance in both increased and lowered resolution … here are some of the function that I have tested and did not give the expected result

get_window().set_size(Vector2i(960,540))
get_viewport().set_scaling_3d_scale(0.2)
DisplayServer.window_set_size(Vector2i(960,540))

var viewport: Window = get_tree().root
viewport.size = (Vector2(960,540))

i really hope there is a good solution for this problem that I am missing out on … because at the moment my project is halted because of it.

Thank for the backup