bevy icon indicating copy to clipboard operation
bevy copied to clipboard

Add `Aabb` calculation for `Sprite`, `TextureAtlasSprite` and `Mesh2d`

Open opstic opened this issue 2 years ago • 0 comments

Objective

  • Add Aabb calculation for Sprite, TextureAtlasSprite and Mesh2d.
  • Enable frustum culling for 2D entities since frustum culling requires a Aabb component in the entity to function.
  • Improve 2D performance massively when there are many sprites out of view. (ex: many_sprites)

Solution

  • Derived from @Weasy666's #3944 pull request, which had no activity since multiple months.
  • Adapted the code to the latest version of Bevy.
  • Added support for sprites with non-center Anchors to avoid culling prematurely when part of the sprite is still in view or not culling when sprite is already out of view.

Note

  • Gives 15.8x performance boosts in some scenarios. (5 fps vs 79 fps with 409600 sprites in many_sprites)

opstic avatar Mar 03 '23 17:03 opstic