-
Notifications
You must be signed in to change notification settings - Fork 359
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
Separation & improved book-keeping of entity -> visualizer assignment #4612
Merged
Wumpf
merged 20 commits into
main
from
andreas/separate-stages-of-entity-visualizer-mappings
Dec 22, 2023
Merged
Separation & improved book-keeping of entity -> visualizer assignment #4612
Wumpf
merged 20 commits into
main
from
andreas/separate-stages-of-entity-visualizer-mappings
Dec 22, 2023
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
…tic_entities_per_visualizer
…euristic filter where it should be, inside of the query!
Wumpf
added
📺 re_viewer
affects re_viewer itself
🟦 blueprint
The data that defines our UI
exclude from changelog
PRs with this won't show up in CHANGELOG.md
labels
Dec 22, 2023
Co-authored-by: Jeremy Leibs <[email protected]>
Co-authored-by: Jeremy Leibs <[email protected]>
jleibs
approved these changes
Dec 22, 2023
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Really happy with how this all turned out. So much cleaner. Thanks for the thorough walkthrough.
Wumpf
deleted the
andreas/separate-stages-of-entity-visualizer-mappings
branch
December 22, 2023 19:02
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Labels
🟦 blueprint
The data that defines our UI
exclude from changelog
PRs with this won't show up in CHANGELOG.md
📺 re_viewer
affects re_viewer itself
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.
What
Previously, we assumed that the
heuristic_filter
on applicable entities (== entities that fullfill all required components and some additional global properties as determined by store subscriber) applies on a per space view class basis.However, this is not entirely accurate and misses that "visualizability" is determined on a per-space-view-instance basis: The most prominent example of this is that a 2D primitive may or may not be visualizable in a 3D view depending on where the 3D origin is.
Another, more forward looking problem was had in this area is that
heuristic_filter
of visualizers should be applied as part of the query since a query determines whether visualizers are picked automaticall/all/single.This PR separates all these concerns more clearly and introduces types wrapping lists of entities to make it harder to confuse which set represents what:
ApplicableEntities
VisualizableEntities
HeuristicContext
!) to guide their systems. This is anAny
which allows visualizer systems to react to different "parent" space views!IndicatorMatchingEntities
IndicatorMatchingEntities
and passed inVisualizableEntities
on the fly to determine this final set. In the future it:Great care was taken to not regress performance of the (still per frame applied) heuristics. However, since we're doing a lot more work now there's still a bit of a performance hit:
Before:
After:
I decided that any further improvements in this area should be done in the context of not recomputing heuristics every frame and instead react to relevant changes. (#4388)
Checklist
main
build: app.rerun.ionightly
build: app.rerun.io