Path: blob/main/crates/bevy_solari/src/pathtracer/extract.rs
6596 views
use super::{prepare::PathtracerAccumulationTexture, Pathtracer};1use bevy_camera::Camera;2use bevy_ecs::{3change_detection::DetectChanges,4system::{Commands, Query},5world::Ref,6};7use bevy_render::{sync_world::RenderEntity, Extract};8use bevy_transform::components::GlobalTransform;910pub fn extract_pathtracer(11cameras_3d: Extract<12Query<(13RenderEntity,14&Camera,15Ref<GlobalTransform>,16Option<&Pathtracer>,17)>,18>,19mut commands: Commands,20) {21for (entity, camera, global_transform, pathtracer) in &cameras_3d {22let mut entity_commands = commands23.get_entity(entity)24.expect("Camera entity wasn't synced.");25if let Some(pathtracer) = pathtracer26&& camera.is_active27{28let mut pathtracer = pathtracer.clone();29pathtracer.reset |= global_transform.is_changed();30entity_commands.insert(pathtracer);31} else {32entity_commands.remove::<(Pathtracer, PathtracerAccumulationTexture)>();33}34}35}363738