Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Key render phases off the main world view entity, not the render world view entity. #16942

Open
wants to merge 3 commits into
base: main
Choose a base branch
from

Conversation

pcwalton
Copy link
Contributor

We won't be able to retain render phases from frame to frame if the keys are unstable. It's not as simple as simply keying off the main world entity, however, because some main world entities extract to multiple render world entities. For example, directional lights extract to multiple shadow cascades, and point lights extract to one view per cubemap face. Therefore, we key off a new type, RetainedViewEntity, which contains the main entity plus a subview ID.

This is part of the preparation for retained bins.

view entity.

We won't be able to retain render phases from frame to frame if the keys
are unstable. It's not as simple as simply keying off the main world
entity, however, because some main world entities extract to multiple
render world entities. For example, directional lights extract to
multiple shadow cascades, and point lights extract to one view per
cubemap face. Therefore, we key off a new type, `RetainedViewEntity`,
which contains the main entity plus a *subview ID*.

This is part of the preparation for retained bins.
@pcwalton pcwalton added A-Rendering Drawing game state to the screen S-Needs-Review Needs reviewer attention (from anyone!) to move forward C-Performance A change motivated by improving speed, memory usage or compile times labels Dec 23, 2024
Copy link
Contributor

@ickshonpe ickshonpe left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nothing gets drawn for the UI, but I'm not very familiar with the camera extraction internals and I couldn't quite unravel the problem.

Very loosely, from what I can tell:
extract_default_ui_camera_view spawns a default camera view entity for each camera which has an ExtractedView with subview_index: 1 and then creates a corresponding TransparentUi render phase.

But the extracted uinodes are given the entity id of the non-ui camera ExtractedView entity so that in queue_uinodes the non-ui view with subview_index: 0 is retrieved and then no TransparentUi phases are found because they were all keyed to subview_index: 1.

Setting the subview index to 1 in extract_cameras fixes the UI examples but that breaks everything else of course.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
A-Rendering Drawing game state to the screen C-Performance A change motivated by improving speed, memory usage or compile times S-Needs-Review Needs reviewer attention (from anyone!) to move forward
Projects
Status: No status
Development

Successfully merging this pull request may close these issues.

2 participants