Exclude UI from Render Scale Changes (Screen Space - Camera Canvas)

Hi everyone,

I’m working on a graphics quality setting in my game that allows players to adjust the render quality by modifying the Render Scale in the Universal Render Pipeline Asset (URP) settings. Here’s how I have it set up:

  • High: Render Scale = 1
  • Medium: Render Scale = 0.7
  • Low: Render Scale = 0.5

The issue I’m running into is that when I lower the Render Scale below 1, the quality of my UI also degrades (it becomes blurry and noisy). According to the Unity documentation, UI rendering should remain at native resolution regardless of the Render Scale setting (look here)

After hours of investigation, I found that when I set my Canvas Renderer to Screen Space - Overlay, the UI remains unaffected by the Render Scale adjustments. However, my game design requires the Canvas to be set to Screen Space - Camera because I have a 3D character positioned in front of the UI. In this mode, the UI quality suffers when the Render Scale is reduced.

Is there a way to exclude my UI canvas from being affected by the Render Scale when using Screen Space - Camera? Alternatively, is there another approach I could take to preserve UI quality in this setup while maintaining the 3D elements in front of the UI?

Any help or suggestions would be greatly appreciated!

I’ll look into this.

1 Like

What version of Unity are you using?

I did a quick test with the latest Unity 6, changed the render scale to 0.25, added a UI button, changed it to Screen Space - Camera, and added a sphere. The sphere was clearly rendered at a low resolution, and the UI button remained the same at all render scales.

Perhaps something isn’t working as expected in the Unity version you’re using?

1 Like

@brendanduncan_u3d
Hey Brendan, thanks for looking into this!

I’m using Unity 2022.3.46f1 LTS (the latest LTS version from Unity Hub).

I did a similar test in an empty project with a simple 2D sprite image in a Canvas and a cube. The Canvas is set to Screen Space - Camera, and I’ve assigned the Main Camera to the Event Camera in the Canvas settings. Here’s what I found:

Render scale at 1. Everything, including the sprite and the cube, looks crisp:

Render scale set to 0.1. Both the cube and the 2D sprite are rendered in low quality:

Switched the Canvas to Screen Space - Overlay (of course I had to move the image to avoid covering the cube). In this case, the cube is low resolution, but the sprite remains sharp:

I can upload this sample project for further investigation if you need.
Thanks again. Let me know if you have any suggestions for this.

If you can send me your project with any needed instructions, that would be very helpful. It’ll be a week or more before I can take a look at it, I’ll be at Unite next week.

1 Like

Here’s a sample project. Please make sure to install the URP and TextMesh Pro from the Package Manager:
CanvasTest.unitypackage (923.7 KB)

Whenever you have a chance to take a look, it would be much appreciated.

1 Like

Hey @brendanduncan_u3d ,
Any chance you got to take a look at this issue?

Sorry, I haven’t forgotten, I’ve just been catching up on things after Unite. I’ll get to it soon.

1 Like

I tested your package and can clearly repo the issue.

What’s different than the test I did? I have no idea. I asked the URP team.

1 Like