mirror of
https://github.com/bevyengine/bevy
synced 2024-11-29 08:00:20 +00:00
b65ec82d46
This PR adds two systems to the sprite module that culls Sprites and AtlasSprites that are not within the camera's view. This is achieved by removing / adding a new `Viewable` Component dynamically. Some of the render queries now use a `With<Viewable>` filter to only process the sprites that are actually on screen, which improves performance drastically for scene swith a large amount of sprites off-screen. https://streamable.com/vvzh2u This scene shows a map with a 320x320 tiles, with a grid size of 64p. This is exactly 102400 Sprites in the entire scene. Without this PR, this scene runs with 1 to 4 FPS. With this PR.. .. at 720p, there are around 600 visible sprites and runs at ~215 FPS .. at 1440p there are around 2000 visible sprites and runs at ~135 FPS The Systems this PR adds take around 1.2ms (with 100K+ sprites in the scene) Note: This is only implemented for Sprites and AtlasTextureSprites. There is no culling for 3D in this PR. Co-authored-by: Carter Anderson <mcanders1@gmail.com>
33 lines
1.1 KiB
TOML
33 lines
1.1 KiB
TOML
[package]
|
|
name = "bevy_sprite"
|
|
version = "0.4.0"
|
|
edition = "2018"
|
|
authors = [
|
|
"Bevy Contributors <bevyengine@gmail.com>",
|
|
"Carter Anderson <mcanders1@gmail.com>",
|
|
]
|
|
description = "Provides sprite functionality for Bevy Engine"
|
|
homepage = "https://bevyengine.org"
|
|
repository = "https://github.com/bevyengine/bevy"
|
|
license = "MIT"
|
|
keywords = ["bevy"]
|
|
|
|
[dependencies]
|
|
# bevy
|
|
bevy_app = { path = "../bevy_app", version = "0.4.0" }
|
|
bevy_asset = { path = "../bevy_asset", version = "0.4.0" }
|
|
bevy_core = { path = "../bevy_core", version = "0.4.0" }
|
|
bevy_ecs = { path = "../bevy_ecs", version = "0.4.0" }
|
|
bevy_log = { path = "../bevy_log", version = "0.4.0" }
|
|
bevy_math = { path = "../bevy_math", version = "0.4.0" }
|
|
bevy_reflect = { path = "../bevy_reflect", version = "0.4.0", features = ["bevy"] }
|
|
bevy_render = { path = "../bevy_render", version = "0.4.0" }
|
|
bevy_transform = { path = "../bevy_transform", version = "0.4.0" }
|
|
bevy_utils = { path = "../bevy_utils", version = "0.4.0" }
|
|
bevy_window = { path = "../bevy_window", version = "0.4.0" }
|
|
|
|
# other
|
|
rectangle-pack = "0.3"
|
|
thiserror = "1.0"
|
|
guillotiere = "0.6.0"
|
|
serde = { version = "1", features = ["derive"] }
|