Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
bevyengine
GitHub Repository: bevyengine/bevy
Path: blob/main/crates/bevy_anti_alias/src/dlss/extract.rs
6596 views
1
use super::{prepare::DlssRenderContext, Dlss, DlssFeature};
2
use bevy_camera::{Camera, MainPassResolutionOverride, Projection};
3
use bevy_ecs::{
4
query::{Has, With},
5
system::{Commands, Query, ResMut},
6
};
7
use bevy_render::{sync_world::RenderEntity, view::Hdr, MainWorld};
8
9
pub fn extract_dlss<F: DlssFeature>(
10
mut commands: Commands,
11
mut main_world: ResMut<MainWorld>,
12
cleanup_query: Query<Has<Dlss<F>>>,
13
) {
14
let mut cameras_3d = main_world
15
.query_filtered::<(RenderEntity, &Camera, &Projection, Option<&mut Dlss<F>>), With<Hdr>>();
16
17
for (entity, camera, camera_projection, mut dlss) in cameras_3d.iter_mut(&mut main_world) {
18
let mut entity_commands = commands
19
.get_entity(entity)
20
.expect("Camera entity wasn't synced.");
21
if dlss.is_some() && camera.is_active && camera_projection.is_perspective() {
22
entity_commands.insert(dlss.as_deref().unwrap().clone());
23
dlss.as_mut().unwrap().reset = false;
24
} else if cleanup_query.get(entity) == Ok(true) {
25
entity_commands.remove::<(Dlss<F>, DlssRenderContext<F>, MainPassResolutionOverride)>();
26
}
27
}
28
}
29
30