-
-
Notifications
You must be signed in to change notification settings - Fork 4.8k
Local UI stacks #25152
Copy link
Copy link
Open
Labels
A-RenderingDrawing game state to the screenDrawing game state to the screenA-UIGraphical user interfaces, styles, layouts, and widgetsGraphical user interfaces, styles, layouts, and widgetsC-PerformanceA change motivated by improving speed, memory usage or compile timesA change motivated by improving speed, memory usage or compile timesS-Ready-For-ImplementationThis issue is ready for an implementation PR. Go for it!This issue is ready for an implementation PR. Go for it!
Description
Activity
Metadata
Metadata
Assignees
Labels
A-RenderingDrawing game state to the screenDrawing game state to the screenA-UIGraphical user interfaces, styles, layouts, and widgetsGraphical user interfaces, styles, layouts, and widgetsC-PerformanceA change motivated by improving speed, memory usage or compile timesA change motivated by improving speed, memory usage or compile timesS-Ready-For-ImplementationThis issue is ready for an implementation PR. Go for it!This issue is ready for an implementation PR. Go for it!
What problem does this solve or what need does it fill?
The UI stacking order is stored in the
UiStackresource in a single ordered list of entities which makes its difficult to track local changes.For example, if you add a new node to the center of the list, every node after it gets a new stack index. Even if the nodes aren't ordered against each other, for instance because they are rendered to different cameras.
What solution would you like?
To enable coarser change tracking, split up UI stack into local lists stored on each root node
What alternative(s) have you considered?
Some sort of tree of spans with dirty flags, maybe. Rebuilding each flat list isn't that expensive though, it may not be worth it.