Path: blob/main/crates/bevy_anti_alias/src/dlss/extract.rs
6596 views
use super::{prepare::DlssRenderContext, Dlss, DlssFeature};1use bevy_camera::{Camera, MainPassResolutionOverride, Projection};2use bevy_ecs::{3query::{Has, With},4system::{Commands, Query, ResMut},5};6use bevy_render::{sync_world::RenderEntity, view::Hdr, MainWorld};78pub fn extract_dlss<F: DlssFeature>(9mut commands: Commands,10mut main_world: ResMut<MainWorld>,11cleanup_query: Query<Has<Dlss<F>>>,12) {13let mut cameras_3d = main_world14.query_filtered::<(RenderEntity, &Camera, &Projection, Option<&mut Dlss<F>>), With<Hdr>>();1516for (entity, camera, camera_projection, mut dlss) in cameras_3d.iter_mut(&mut main_world) {17let mut entity_commands = commands18.get_entity(entity)19.expect("Camera entity wasn't synced.");20if dlss.is_some() && camera.is_active && camera_projection.is_perspective() {21entity_commands.insert(dlss.as_deref().unwrap().clone());22dlss.as_mut().unwrap().reset = false;23} else if cleanup_query.get(entity) == Ok(true) {24entity_commands.remove::<(Dlss<F>, DlssRenderContext<F>, MainPassResolutionOverride)>();25}26}27}282930