From e03dd4d6955725afa68ff3c1d97b763ee4c76313 Mon Sep 17 00:00:00 2001 From: Edgar Geier Date: Wed, 5 Jul 2023 17:51:19 +0200 Subject: [PATCH] Run `update_previous_view_projections` in `PreUpdate` schedule (#9024) # Objective - Fixes #8630. ## Solution Since a camera's view and projection matrices are modified during `PostUpdate` in `camera_system` and `propagate_transforms`, it is fine to move `update_previous_view_projections` from `Update` to `PreUpdate`. Doing so adds consistence with `update_mesh_previous_global_transforms` and allows systems in `Update` to use `PreviousViewProjection` correctly without explicit ordering. --- crates/bevy_pbr/src/prepass/mod.rs | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/crates/bevy_pbr/src/prepass/mod.rs b/crates/bevy_pbr/src/prepass/mod.rs index b38cf3d539..a0364acd7f 100644 --- a/crates/bevy_pbr/src/prepass/mod.rs +++ b/crates/bevy_pbr/src/prepass/mod.rs @@ -1,4 +1,4 @@ -use bevy_app::{Plugin, PreUpdate, Update}; +use bevy_app::{Plugin, PreUpdate}; use bevy_asset::{load_internal_asset, AssetServer, Handle, HandleUntyped}; use bevy_core_pipeline::{ prelude::Camera3d, @@ -141,9 +141,15 @@ where if no_prepass_plugin_loaded { app.insert_resource(AnyPrepassPluginLoaded) - .add_systems(Update, update_previous_view_projections) // At the start of each frame, last frame's GlobalTransforms become this frame's PreviousGlobalTransforms - .add_systems(PreUpdate, update_mesh_previous_global_transforms); + // and last frame's view projection matrices become this frame's PreviousViewProjections + .add_systems( + PreUpdate, + ( + update_mesh_previous_global_transforms, + update_previous_view_projections, + ), + ); } let Ok(render_app) = app.get_sub_app_mut(RenderApp) else {