CanvasGroup makes its content low quality at certain sizes and graphics level 3 or below

Excact reasons and behaviour is still unknown for me so I cannot provide much information but it needs to be adressed nonetheless as it’s quite annoying and makes games’ UI look ugly

The issue
My main menu (and other “openable” UI frames) is basically a canvas group to make it possible to animate it. Whenever I set graphics level to 3 or below, everything in canvas group becomes low quality. When set to 4+ it looks normal. Happens both in studio and live servers. Encountered this issue on PC (Windows 11) and on tablet (Xiaomi Pad 6 / Android 14). No need to restart the game - the issue will appear/disappear ~1 second later after adjusting graphics level


Main menu with graphics level set to 4


Main menu with graphics level set to 3. Take a not that Waiting for players text label located at the top is still high quality as it’s technically not part of the main menu canvas group


Video showcase of this issue in my game


Transforming this excact main menu from a canvas group to a normal frame looks normal regardless of graphics level (had to be tested on a different place since this UI is hardcoded / hard to make it to work)

Reproduction steps
It’s almost? guaranteed to happen. Make a canvas group, add some elements to it (for example text labels), set graphics level to 3 or lower, set the size of a canvas group big enough and you get the low quality UI inside of it


Place file:
repro.rbxl (57.1 KB)

Expected behavior

Regardless of UI type, its size, location and graphics level, canvas group content should remain high quiality

9 Likes

I do think it’s the intended behaviour, when putting your graphics down it tries to use less memory and a good way to do that is to reduce the quality of canvas groups since they are being rendered differently.

What will happen with different graphics settings or the device is out of memory? CanvasGroup items will be subjected to down-res fallbacks when the system is high on texture memory pressure, which means there could be appearance (resolution) differences depending on system memory conditions.

2 Likes

I thought about that, but then again it doesn’t decrease a quality for smaller canvas groups, and I doubt UI is taking that much memory. If that’s the case then… I might as well just don’t do anything with that and keep it as it is since I like it

1 Like

-- CanvasGroups render their contents to a texture. Smaller CanvasGroup = smaller texture, so they are less likely to be affected by lower graphics settings. Why are you using a CanvasGroup for these menus in the first place? They should be used fairly sparingly due to their behavior.

1 Like

CanvasGroup has a GroupTransparency property, which is handy for making opening/closing animations

-- Yes but it inherently makes the performance, and visual quality, of your game worse for very little tradeoff. Especially since your menus aren’t overlapping so you aren’t really even getting any benefit from using CanvasGroup. Just tag all of the UI elements and manually set their transparency, this isn’t a good use of CanvasGroups.

We’ve filed a ticket into our internal database for this issue, and we will update you when we have further information!

Thanks for the report!

This is just an acknowledgment announcement!

4 Likes


This is not a graphics level issue, but on all graphic levels. This is the only reason I avoid CanvasGroup’s.

3 Likes

Any update on this issue?

I was planning on using CanvasGroups to support some animation behaviors but now I’m uncertain.

Thanks.

1 Like

Set the size to [1, 0, 1, 0] but switch SizeConstraint to XX or YY for that extra crisp render mode!

1 Like

Setting the ScreenGui’s ZIndexBehavior to Global fixes this temporarily.

EDIT: Its very buggy?

Anything new on this? It Has been almost 2 years.

1 Like

It sounds similar to CanvasGroup + Images + "Fast Flag UITexture Use Dynamic Render Settings" = More CanvasGroup blurriness on everything instead of just images

but :person_shrugging:

I think The Block uses CanvasGroup and everything is blurry

People still reply to this? Wow. If someone still wants a solution or a workaround…

I haven’t used Studio since then, but the solution for my problem was to just transform Frame to CanvasGroup during animations, and when it ends transform it back. Simple as, yet this behavior is dumb af

1 Like

Its actually “theoretically” not a bug, Roblox independently re-renders what ever is inside, thats why “ClipDescendants” cannot be turned off.

Lowering the graphics quality, through if im not wrong Shift/Ctrl + F10, litterally does what it says.

Sure, it might be an intended behaviour. But even then how can you make user interface lag the game? Cities skylines 1 developers somehow did it, but no one else physically can’t.