diff --git a/crates/bevy_core_pipeline/src/core_3d/mod.rs b/crates/bevy_core_pipeline/src/core_3d/mod.rs index e29dcdb52d..25c5bd99c6 100644 --- a/crates/bevy_core_pipeline/src/core_3d/mod.rs +++ b/crates/bevy_core_pipeline/src/core_3d/mod.rs @@ -531,17 +531,22 @@ pub fn prepare_core_3d_transmission_textures( mut texture_cache: ResMut, render_device: Res, views_3d: Query< - (Entity, &ExtractedCamera, &Camera3d, &ExtractedView), + ( + Entity, + &ExtractedCamera, + &Camera3d, + &ExtractedView, + &RenderPhase, + ), ( With>, With>, - With>, With>, ), >, ) { let mut textures = HashMap::default(); - for (entity, camera, camera_3d, view) in &views_3d { + for (entity, camera, camera_3d, view, transmissive_3d_phase) in &views_3d { let Some(physical_target_size) = camera.physical_target_size else { continue; }; @@ -551,6 +556,11 @@ pub fn prepare_core_3d_transmission_textures( continue; } + // Don't prepare a transmission texture if there are no transmissive items to render + if transmissive_3d_phase.items.is_empty() { + continue; + } + let cached_texture = textures .entry(camera.target.clone()) .or_insert_with(|| {