bevy/crates
Robert Swain 2c0ff950d1 Fix performance regression with shadow mapping (#7914)
# Objective

- @mockersf identified a performance regression of about 25% longer frame times introduced by #7784 in a complex scene with the Amazon Lumberyard bistro scene with both exterior and interior variants and a number of point lights with shadow mapping enabled
  - The additional time seemed to be spent in the `ShadowPassNode`
  - `ShadowPassNode` encodes the draw commands for the shadow phase. Roughly the same numbers of entities were having draw commands encoded, so something about the way they were being encoded had changed.
  - One thing that definitely changed was that the pipeline used will be different depending on the alpha mode, and the scene has lots entities with opaque and blend materials. This suggested that maybe the pipeline was changing a lot so I tried a quick hack to see if it was the problem.

## Solution

- Sort the shadow phase items by their pipeline id
  - This groups phase items by their pipeline id, which significantly reduces pipeline rebinding required to the point that the performance regression was gone.
2023-03-06 00:00:40 +00:00
..
bevy_a11y Integrate AccessKit (#6874) 2023-03-01 22:45:04 +00:00
bevy_animation Base Sets (#7466) 2023-02-06 03:10:08 +00:00
bevy_app Add marker traits to distinguish base sets from regular system sets (#7863) 2023-03-02 13:22:58 +00:00
bevy_asset Fix hot reloading for read_asset_bytes (#6797) 2023-03-02 02:51:06 +00:00
bevy_audio Remove redundant symphonia-mp3 feature (#7852) 2023-03-01 03:22:46 +00:00
bevy_core Fix some typos (#7763) 2023-02-20 22:56:57 +00:00
bevy_core_pipeline Tweak bloom docs (#7907) 2023-03-05 18:09:47 +00:00
bevy_derive update winit to 0.28 (#7480) 2023-02-03 16:41:39 +00:00
bevy_diagnostic Update sysinfo and improve its use a bit (#7826) 2023-02-27 01:05:58 +00:00
bevy_dylib Rename dynamic feature (#7340) 2023-01-23 14:28:00 +00:00
bevy_dynamic_plugin Adapt path type of dynamically_load_plugin (#6734) 2022-12-05 23:39:43 +00:00
bevy_ecs make Query::par_iter accept &self (#7912) 2023-03-06 00:00:38 +00:00
bevy_ecs_compile_fail_tests EntityMut: rename remove_intersection to remove and remove to take (#7810) 2023-02-26 00:09:19 +00:00
bevy_encase_derive Update glam to 0.23 (#7883) 2023-03-04 11:42:27 +00:00
bevy_gilrs Make StartupSet a base set (#7574) 2023-02-19 03:10:06 +00:00
bevy_gltf Change the glTF loader to use Camera3dBundle (#7890) 2023-03-04 12:05:27 +00:00
bevy_hierarchy EntityMut: rename remove_intersection to remove and remove to take (#7810) 2023-02-26 00:09:19 +00:00
bevy_input add common run conditions to bevy_input (#7806) 2023-02-25 22:08:13 +00:00
bevy_internal Integrate AccessKit (#6874) 2023-03-01 22:45:04 +00:00
bevy_log Fix suppression of all console logs when trace_tracy is enabled (#6955) 2022-12-20 23:45:43 +00:00
bevy_macro_utils Update toml_edit to 0.19 (#7834) 2023-02-27 23:59:06 +00:00
bevy_math Update glam to 0.23 (#7883) 2023-03-04 11:42:27 +00:00
bevy_mikktspace Update glam to 0.23 (#7883) 2023-03-04 11:42:27 +00:00
bevy_pbr Fix performance regression with shadow mapping (#7914) 2023-03-06 00:00:40 +00:00
bevy_ptr Fix minor typos in code and docs (#7378) 2023-01-27 12:12:53 +00:00
bevy_reflect Update glam to 0.23 (#7883) 2023-03-04 11:42:27 +00:00
bevy_reflect_compile_fail_tests Enable deriving Reflect on structs with generic types (#7364) 2023-01-28 00:12:06 +00:00
bevy_render Fix performance regression with shadow mapping (#7914) 2023-03-06 00:00:40 +00:00
bevy_scene Base Sets (#7466) 2023-02-06 03:10:08 +00:00
bevy_sprite Use Image::default for 1 pixel white texture directly (#7884) 2023-03-04 12:29:10 +00:00
bevy_tasks Fix asset_debug_server hang. There should be at most one ThreadExecut… (#7825) 2023-03-02 08:40:25 +00:00
bevy_text fix whitespaces in comment (#7853) 2023-03-01 10:20:56 +00:00
bevy_time Add timer-based common run conditions (on_timer and on_fixed_timer) (#7866) 2023-03-02 12:53:54 +00:00
bevy_transform Fix dev dependency version (#7915) 2023-03-05 23:35:08 +00:00
bevy_ui Change the Node doc comments to state that it stores the size in logical pixels (#7896) 2023-03-04 19:24:56 +00:00
bevy_utils Fix some typos (#7763) 2023-02-20 22:56:57 +00:00
bevy_window Transparent window on macos (#7617) 2023-03-04 14:51:23 +00:00
bevy_winit Integrate AccessKit (#6874) 2023-03-01 22:45:04 +00:00