Target DPI vs Render Scale vs Resolution Scaling Fixed DPI Factor vs SetResolution

Ok, so I’m trying to boost performance and battery life of my mobile game.

But from my research I see that there are four different ‘knobs’ that improve performance and battery life.

The ‘knobs’ are the following:

  1. The SetResolution method
  2. Target DPI (Project Settings → Player → [Choose Android Platform] → Resolution Scaling Mode → Fixed DPI)
  3. Render Scale (Project Settings → Graphics → [the asset you inserted in Scriptable Render Pipeline Settings]
  4. Resolution Scaling Fixed DPI Factor (Project Settings → Quality → Rendering section)

I’m not sure whats the best approach to this. There’s so many ‘Knobs’ that I dont know which should I be using to make a “battery life saver mode” in my game that the user may choose to set.

Any advices?

Thanks in advance.

5 Likes

I’m curious about this too. Anyone has experience to share?

1 Like

I also want to throw my hat in the ring to get some info on this.

From what I understand the Render Scale for Scriptable Render Pipeline Settings will only affect your cameras, meaning your UI will stay crisp.

Target DPI / Resolution Scaling Fixed DPI Factor seem to affect the entire final image however I can’t work out the difference between these two. According to the documentation, the maths here is…

min(Target DPI * Factor / Screen DPI, 1)

…so not sure why you would choose to lower one over the other.

Currently, I’m finding on my android device (Samsung S20, native 2322 x 1080, 120hz, 480dpi) the best option for pure performance is Target DPI / Resolution Scaling Fixed DPI Factor (I dropped my dpi to 240, it was ‘acceptable’ but you lose UI quality, looks a bit muddy). Render Scale gave me some frames back but not as much, however, the UI remained crisp.

This makes sense since using the DPI settings is probably asking less to be rendered by the device. Render Scale is rendering the camera image at a lower resolution but ultimately the game is probably still asking the device to render the final image at the native resolution.

Hopefully someone can give a clearer breakdown, this is just me having a play around for a few hours so don’t take it as gospel. Hopefully I’m not spreading miss information!

Would also recommend Graphy on the asset store for monitoring framerate on device, it also gives you device information and the resolution being rendered out.

9 Likes

Resolution Scaling Fixed DPI Factor is a percentage of the Target DPI value.

For example, i have my Target DPI set to 400 and allow my players to use the full 400 or lower by setting the Resolution Scaling Fixed DPI Factor to lower than 1.

1 = 400
0.5 = 200
etc

1 Like

@derkoi sorry to bother, would you set it in the first scene or set it in every scene on Awake?

Edit:
It seems that it is enough from setting it on the first menu scene

Also this post is a good read about DPI’s

Hi, Can someone give their thoughts of using the setting of Fixed DPI approach vs changing screen resolution.

Both kind of achieve the same result, but is there any gain from one over the other ?

Screen resolution:

public int x, y;
public Camera camera;

private void Start()
{
     Screen.SetResolution (x,y,true);
     camera.aspect = 16f / 9f;
}

I’m looking for the same answer, is there any difference between changing the dpi and the screen resolution?

Fixed dpi worked for me

Resolution Scaling Fixed DPI Factor does not seem to have any effect on a build for Quest 2.

I am having the same issue. Did you find a solution?