From 35ef42d967c7c127dea8bcd6b8173e722f3a853c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Foucault?= Date: Mon, 24 Aug 2020 11:24:33 +0200 Subject: [PATCH] Fix T79970 EEVEE: Camera Animation Breaks Motion Blur (Two Steps or More) This was caused by motion blur camera movement tagging the view as invalid and thus resetting the temporal sampling. Critical fix for 2.90. Need second look, but quite confident. This function is only called once when Motion blur is off. Reviewed by: jbakker Differential Revision: https://developer.blender.org/D8676 --- .../blender/draw/engines/eevee/eevee_temporal_sampling.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/source/blender/draw/engines/eevee/eevee_temporal_sampling.c b/source/blender/draw/engines/eevee/eevee_temporal_sampling.c index 01db16b1289..918e13ec729 100644 --- a/source/blender/draw/engines/eevee/eevee_temporal_sampling.c +++ b/source/blender/draw/engines/eevee/eevee_temporal_sampling.c @@ -247,8 +247,11 @@ int EEVEE_temporal_sampling_init(EEVEE_ViewLayerData *UNUSED(sldata), EEVEE_Data effects->taa_total_sample = first_sample_only ? 1 : scene_eval->eevee.taa_samples; MAX2(effects->taa_total_sample, 0); - DRW_view_persmat_get(NULL, persmat, false); - view_is_valid = view_is_valid && compare_m4m4(persmat, effects->prev_drw_persmat, FLT_MIN); + /* Motion blur steps could reset the sampling when camera is animated (see T79970). */ + if (!DRW_state_is_scene_render()) { + DRW_view_persmat_get(NULL, persmat, false); + view_is_valid = view_is_valid && compare_m4m4(persmat, effects->prev_drw_persmat, FLT_MIN); + } /* Prevent ghosting from probe data. */ view_is_valid = view_is_valid && (effects->prev_drw_support == DRW_state_draw_support()) &&