From 6742c5dc66c2c2fd23b4dfd09bc3e397b9729510 Mon Sep 17 00:00:00 2001 From: Marco Buono Date: Sun, 8 Oct 2023 20:42:10 -0300 Subject: [PATCH] Do not prepare transmission texture if there are not transmissive items to render --- crates/bevy_core_pipeline/src/core_3d/mod.rs | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) 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(|| {