-
-
Notifications
You must be signed in to change notification settings - Fork 3.7k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Fix sprite performance regression since retained render world (#17078)
# Objective - Fix sprite rendering performance regression since retained render world changes - The retained render world changes moved `ExtractedSprites` from using the highly-optimised `EntityHasher` with an `Entity` to using `FixedHasher` with `(Entity, MainEntity)`. This was enough to regress framerate in bevymark by 25%. ## Solution - Move the render world entity into a member of `ExtractedSprite` and change `ExtractedSprites` to use `MainEntityHashMap` for its storage - Disable sprite picking in bevymark ## Testing M4 Max. `bevymark --waves 100 --per-wave 1000 --benchmark`. main in yellow vs PR in red: <img width="590" alt="Screenshot 2025-01-01 at 16 36 22" src="https://github.com/user-attachments/assets/1e4ed6ec-3811-4abf-8b30-336153737f89" /> 20.2% median frame time reduction. <img width="594" alt="Screenshot 2025-01-01 at 16 38 37" src="https://github.com/user-attachments/assets/157c2022-cda6-4cf2-bc63-d0bc40528cf0" /> 49.7% median extract_sprites execution time reduction. Comparing 0.14.2 yellow vs PR red: <img width="593" alt="Screenshot 2025-01-01 at 16 40 06" src="https://github.com/user-attachments/assets/abd59b6f-290a-4eb6-8835-ed110af995f3" /> ~6.1% median frame time reduction. --- ## Migration Guide - `ExtractedSprites` is now using `MainEntityHashMap` for storage, which is keyed on `MainEntity`. - The render world entity corresponding to an `ExtractedSprite` is now stored in the `render_entity` member of it.
- Loading branch information
Showing
4 changed files
with
37 additions
and
31 deletions.
There are no files selected for viewing
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
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
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
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