bevy/crates
robtfm 73bf730da9
fix shadow batching (#11645)
# Objective

`RenderMeshInstance::material_bind_group_id` is only set from
`queue_material_meshes::<M>`. this field is used (only) for determining
batch groups, so some items may be batched incorrectly if they have
never been in the camera's view or if they don't use the Material
abstraction.

in particular, shadow views render more meshes than the main camera, and
currently batch some meshes where the object has never entered the
camera view together. this is quite hard to trigger, but should occur in
a scene with out-of-view alpha-mask materials (so that the material
instance actually affects the shadow) in the path of a light.

this is also a footgun for custom pipelines: failing to set the
material_bind_group_id will result in all meshes being batched together
and all using the closest/furthest material to the camera (depending on
sort order).

## Solution

- queue_shadows now sets the material_bind_group_id correctly
- `MeshPipeline` doesn't attempt to batch meshes if the
material_bind_group_id has not been set. custom pipelines still need to
set this field to take advantage of batching, but will at least render
correctly if it is not set
2024-02-14 00:31:45 +00:00
..
bevy_a11y Inverse missing_docs logic (#11676) 2024-02-03 21:40:55 +00:00
bevy_animation Inverse missing_docs logic (#11676) 2024-02-03 21:40:55 +00:00
bevy_app Use TypeIdMap whenever possible (#11684) 2024-02-03 23:47:04 +00:00
bevy_asset Use Asset Path Extension for AssetLoader Disambiguation (#11644) 2024-02-12 15:44:55 +00:00
bevy_audio Inverse missing_docs logic (#11676) 2024-02-03 21:40:55 +00:00
bevy_core Missing registrations (#11736) 2024-02-06 16:33:17 +00:00
bevy_core_pipeline mipmap levels can be 0 and they should be interpreted as 1 (#11767) 2024-02-11 22:00:07 +00:00
bevy_derive Inverse missing_docs logic (#11676) 2024-02-03 21:40:55 +00:00
bevy_diagnostic Fix sysinfo CPU brand output (#11850) 2024-02-13 19:26:20 +00:00
bevy_dylib Inverse missing_docs logic (#11676) 2024-02-03 21:40:55 +00:00
bevy_dynamic_plugin bevy_dynamic_plugin: fix unsafe_op_in_unsafe_fn lint (#11622) 2024-02-12 15:06:00 +00:00
bevy_ecs Fix small docs misformat in BundleInfo::new (#11855) 2024-02-13 22:14:05 +00:00
bevy_ecs_compile_fail_tests Deprecated Various Component Methods from Query and QueryState (#9920) 2024-02-04 01:01:59 +00:00
bevy_encase_derive Inverse missing_docs logic (#11676) 2024-02-03 21:40:55 +00:00
bevy_gilrs Inverse missing_docs logic (#11676) 2024-02-03 21:40:55 +00:00
bevy_gizmos Stop extracting mesh entities to the render world. (#11803) 2024-02-10 10:46:10 +00:00
bevy_gltf Move EntityHash related types into bevy_ecs (#11498) 2024-02-12 15:02:24 +00:00
bevy_hierarchy Inverse missing_docs logic (#11676) 2024-02-03 21:40:55 +00:00
bevy_input Derive Ord for GamepadButtonType. (#11791) 2024-02-11 09:03:06 +00:00
bevy_internal mipmap levels can be 0 and they should be interpreted as 1 (#11767) 2024-02-11 22:00:07 +00:00
bevy_log Update tracing-tracy requirement from 0.10.4 to 0.11.0 and tracy-client requirement from 0.16.4 to 0.17.0 (#11678) 2024-02-03 21:44:38 +00:00
bevy_macro_utils Inverse missing_docs logic (#11676) 2024-02-03 21:40:55 +00:00
bevy_macros_compile_fail_tests
bevy_math Implement Meshable for some 3D primitives (#11688) 2024-02-06 21:44:13 +00:00
bevy_mikktspace Replace pointer castings (as) by their API equivalent (#11818) 2024-02-11 23:19:36 +00:00
bevy_pbr fix shadow batching (#11645) 2024-02-14 00:31:45 +00:00
bevy_ptr Replace pointer castings (as) by their API equivalent (#11818) 2024-02-11 23:19:36 +00:00
bevy_reflect bevy_reflect_derive: Clean up attribute logic (#11777) 2024-02-12 15:16:27 +00:00
bevy_reflect_compile_fail_tests bevy_reflect_derive: Clean up attribute logic (#11777) 2024-02-12 15:16:27 +00:00
bevy_render Add Mesh::merge (#11456) 2024-02-12 22:04:33 +00:00
bevy_scene Move EntityHash related types into bevy_ecs (#11498) 2024-02-12 15:02:24 +00:00
bevy_sprite Call a TextureAtlasLayout a layout and not an atlas (#11783) 2024-02-13 16:08:03 +00:00
bevy_tasks Replace crossbeam::scope reference with thread::scope in docs (#11832) 2024-02-12 19:29:29 +00:00
bevy_text Use warn_once where relevant instead of manually implementing a single warn check (#11693) 2024-02-05 21:05:43 +00:00
bevy_time Inverse missing_docs logic (#11676) 2024-02-03 21:40:55 +00:00
bevy_transform Inverse missing_docs logic (#11676) 2024-02-03 21:40:55 +00:00
bevy_ui Move EntityHash related types into bevy_ecs (#11498) 2024-02-12 15:02:24 +00:00
bevy_utils Move EntityHash related types into bevy_ecs (#11498) 2024-02-12 15:02:24 +00:00
bevy_window Add delta to CursorMoved event (#11710) 2024-02-12 18:14:22 +00:00
bevy_winit Add delta to CursorMoved event (#11710) 2024-02-12 18:14:22 +00:00