mirror of
https://github.com/bevyengine/bevy
synced 2024-11-26 06:30:19 +00:00
36c6f29832
# Objective - After #13894, I noticed the performance of `many_lights `dropped from 120+ to 60+. I reviewed the PR but couldn't identify any mistakes. After profiling, I discovered that `Hashmap::Clone `was very slow when its not empty, causing `extract_light` to increase from 3ms to 8ms. - Lighting only checks visibility for 3D Meshes. We don't need to maintain a TypeIdMap for this, as it not only impacts performance negatively but also reduces ergonomics. ## Solution - use VisibleMeshEntities for lighint visibility checking. ## Performance cargo run --release --example many_lights --features bevy/trace_tracy name="bevy_pbr::light::check_point_light_mesh_visibility"} ![image](https://github.com/bevyengine/bevy/assets/45868716/8bad061a-f936-45a0-9bb9-4fbdaceec08b) system{name="bevy_pbr::render::light::extract_lights"} ![image](https://github.com/bevyengine/bevy/assets/45868716/ca75b46c-b4ad-45d3-8c8d-66442447b753) ## Migration Guide > now `SpotLightBundle` , `CascadesVisibleEntities `and `CubemapVisibleEntities `use VisibleMeshEntities instead of `VisibleEntities` --------- Co-authored-by: Alice Cecile <alice.i.cecile@gmail.com> |
||
---|---|---|
.. | ||
cluster | ||
deferred | ||
light | ||
light_probe | ||
lightmap | ||
meshlet | ||
prepass | ||
render | ||
ssao | ||
ssr | ||
volumetric_fog | ||
bundle.rs | ||
extended_material.rs | ||
fog.rs | ||
lib.rs | ||
material.rs | ||
parallax.rs | ||
pbr_material.rs | ||
wireframe.rs |