Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
bevyengine
GitHub Repository: bevyengine/bevy
Path: blob/main/crates/bevy_solari/src/pathtracer/extract.rs
6596 views
1
use super::{prepare::PathtracerAccumulationTexture, Pathtracer};
2
use bevy_camera::Camera;
3
use bevy_ecs::{
4
change_detection::DetectChanges,
5
system::{Commands, Query},
6
world::Ref,
7
};
8
use bevy_render::{sync_world::RenderEntity, Extract};
9
use bevy_transform::components::GlobalTransform;
10
11
pub fn extract_pathtracer(
12
cameras_3d: Extract<
13
Query<(
14
RenderEntity,
15
&Camera,
16
Ref<GlobalTransform>,
17
Option<&Pathtracer>,
18
)>,
19
>,
20
mut commands: Commands,
21
) {
22
for (entity, camera, global_transform, pathtracer) in &cameras_3d {
23
let mut entity_commands = commands
24
.get_entity(entity)
25
.expect("Camera entity wasn't synced.");
26
if let Some(pathtracer) = pathtracer
27
&& camera.is_active
28
{
29
let mut pathtracer = pathtracer.clone();
30
pathtracer.reset |= global_transform.is_changed();
31
entity_commands.insert(pathtracer);
32
} else {
33
entity_commands.remove::<(Pathtracer, PathtracerAccumulationTexture)>();
34
}
35
}
36
}
37
38