Static UI Performance Improvements

Definitely a breakdown! I hope it helps overall performance.

Nice! Great feature.

So basically when this new feature is live; when a GuiObject changes like a Text Box it will only render that change instead of rerendering all of the GuiObject inside the same LayerCollector ?

Does this improvement also act as a solution to another issue wherein the Gui section of memory would constantly move at a rate of change upward, or is this only related to performance for rendering Guis?

1 Like

Will help plenty of lower-end devices with some games that lag a little. Keep the updates rolling in! :wink:

1 Like

This is enabled everywhere right now.

Not quite. Changing any GuiObject causes the entire LayerCollector’s appearance to need recomputing.

Basically, we were previously iterating through all GuiObject Instances and generating their rendering geometry every frame. Now, we iterate through all GuiObject Instances and generate a compact representation that has all of the information we need to create the Gui’s rendering geometry. This is an array of all the rectangles that appear on the screen and their colors, textures, etc. If a Gui hasn’t changed since the previous frame, we just draw the rectangles in the array instead of visiting every GuiObject descendant and regenerating its rectangles. The new method is more cache coherent and avoids doing redundant work to figure out what a GuiObject should look like based on what kind of GuiObject it is and what its property values are.

This is just a performance improvement. Is there a bug report thread for what you’ve described?

5 Likes

This is the most recent case I’ve known of a Gui memory leak (not in Platform Feedback):

2 Likes

Love the new improvements, especially towards the mobile platform! Keep it coming Roblox! :wink:

1 Like

This is awesome.

EDIT: Does this mean that an overall “transparency modifier” (like this suggestion) is possible now?

EDIT#2: Ah, upon reading this explanation it doesn’t seem like it is :frowning:

Neat! Will the optimizations that the chat window in the mobile app uses that were mentioned at RDC be added? Like the 1fps optimization?

Awesome improvements! :+1:

This will make a significant performance boost in my games! Great work team! :+1:

another great update, thanks roblox!

1 Like

This will indeed be very useful for my game, thank you!

Will static semi-transparent GUIs continue to update every frame?

Epic!

Wouldn’t it be better to completely ignore non-visual descendants of Guis?

4 Likes

No, transparency does not affect caching.

Yes. That is one improvement we may make in the future. We avoided this in V1 to save some development time and try to avoid a bug situation where we have to disable this feature because we forgot to mark a property or class as visual.

6 Likes

@Homeomorph I think this has started to cause issues with my plugin. It seems like it’s not getting redrawn properly, which is causing the the UI to appear really messed up:

I can confirm that it is simply not updating visually. Nor is it working properly with the animations. When I click on the little chevron things, they’re supposed to animate & rotate 90 degrees. However, it either doesn’t work or has really low FPS.

Edit: Is there anything I can do to force a redraw for the time being?

Edit 2: If it’s helpful to have a copy of this plugin, it’s available here.

3 Likes

Did this start happening today, or has it been around for longer?

I first noticed it today, but haven’t used Studio for like a week. Another user reported this to me and a third user mentioned experiencing this issue a few days ago.

1 Like