bevy_sprite_instancing
A plugin for Bevy to render lots of instanced sprites in a single draw call.
How does the plugin work?
Instead of going through all similar entity sprites one-by-one,
the plugin provides SpriteInstancingGroups which can contain
Entity ID's of these sprites. The plugin then collect all these sprites'
transforms and submits them to the GPU as one large buffer, which is then
used to draw all of them at once.

Features
- Animated tiles
- Nice FPS when drawing lots of sprites (up to 1 million)
How do I use this?
For a quick example, see this example.
Here's a simple example of how to draw lots of sprites:
pub const ENTITY_COUNT: usize = 100000;
What I didn't yet implement
There're some high-level features I haven't yet implemented:
- View region culling: no need to submit transforms of sprites which aren't present on screen
- GPU animations: instead of submitting a
texture_indexfor each sprite, maybe it would be a nice idea to submitanim_start_indexandanim_lenthrough a separate instancing buffer
... and some low-level ones:
- Ability to mark a
SpriteInstancingGroupas static (i.e. entities do not move) to avoid re-submitting its instancing data each frame