Break out Visible component from Draw #1034
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Alternative to #1008
The issue is that we currently incrementally update gpu bind resources when a given type T changes, but we filter the Changed results based on draw.is_visible. If something is initially invisible, it will show up in RenderResourcesNode's
Changed<T>
query then get filterered out because draw.is_visible is false.The fix is to also update bindings when visibility changes. We can't use
Changed<Draw>
, because it changes every frame (when draw commands are queued). Therefore, it makes sense to break out the Visibility fields so we can respond to their changes separately.This also just feels cleaner because draw commands and "visibility state" are tangentially related concepts at best.