Send mouse hover event only on spawn preview to improve framerate #950
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.
Signed-off-by: Ian Chen [email protected]
🦟 Bug fix
Summary
Scene3D appear to be slow when there are high poly count meshes in the scene. This turns out that it's not a rendering issue. The problem is that we are making ray queries every frame through the
ScreenToScene
call in theBroadcastHoverPos
function. I believe this is intended mainly for spawning entities. ThehoverDirty
variable is never set tofalse
even when the mouse is outside the 3D window. It's only set tofalse
in spawn entity mode. So it's incurring unnecessary computation every frame.Note with this change, we will only broadcast the hover event on spawn entity mode. The gain here is a big improvement in frame rate.
To reproduce the issue:
launch ign-gazebo and drag and drop a high polycount model into the scene, e.g. Urban 2 Story model. Try moving the camera and notice that it's laggy.
Before this change, I get ~3-4 FPS, and after this change, I get 40-50 FPS
Checklist
codecheck
passed (See contributing)Note to maintainers: Remember to use Squash-Merge