Don't render the world behind the opaque top bars: size the 3D viewport to the visible area #918
Labels
No labels
amd
avatars
bug
builder
cannot-reproduce
crash
epic
feature
from-viewer
gl-removal
known-limitation
monitoring
parity
perf
platform
priority
critical
priority
high
priority
low
priority
medium
provenance
rendering
rt
status
in-progress
status
testing
status
up-next
triage
ui
upstream
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
sky_line/Slipstream#918
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
The menu bar and the navigation/favourites bar at the top of the window are fully opaque. They always cover the same strip of the 3D view, yet the world is rendered and lit underneath them every frame: G-buffer, deferred lighting, RT reflections, AO, TAA/upscaling and post-processing. That work is never seen.
Proposal
Size the world render to the area that is actually visible, and leave out the strip behind the top bar(s).
Expected gain
Work in proportion to the area removed, on the per-pixel passes only. With about 50 px of bars on a 1026 px window, that is roughly 5% of the per-pixel cost: an estimated 0.5–0.7 ms in a heavy scene on an RTX 5090, more on slower GPUs and at higher UI scale. Shadows, culling, RT scene builds and skinning are unaffected.
Out of scope for now
Other opaque UI, such as floaters and the bottom toolbar (whose buttons are transparent over the scene). A per-tile approach (coarsest variable-rate shading plus skipping RT and lighting tiles under opaque UI) can follow later if this pays off.
Verify