From a6b7f3211205032b0b35bac489127d38ca6f004e Mon Sep 17 00:00:00 2001 From: Jacques Lucke Date: Tue, 23 Nov 2021 16:40:21 +0100 Subject: Fix T93297: incorrect eevee motion blur with geometry instances This disables motion blur for geometry instances in eevee, which did not work correctly anyway. See code comment for more details. Differential Revision: https://developer.blender.org/D13334 --- source/blender/draw/engines/eevee/eevee_motion_blur.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/source/blender/draw/engines/eevee/eevee_motion_blur.c b/source/blender/draw/engines/eevee/eevee_motion_blur.c index 1eff2a3af24..703518a32ec 100644 --- a/source/blender/draw/engines/eevee/eevee_motion_blur.c +++ b/source/blender/draw/engines/eevee/eevee_motion_blur.c @@ -29,6 +29,7 @@ #include "BKE_animsys.h" #include "BKE_camera.h" +#include "BKE_duplilist.h" #include "BKE_object.h" #include "BKE_screen.h" @@ -318,6 +319,14 @@ void EEVEE_motion_blur_cache_populate(EEVEE_ViewLayerData *UNUSED(sldata), return; } + const DupliObject *dup = DRW_object_get_dupli(ob); + if (dup != NULL && dup->ob->data != dup->ob_data) { + /* Geometry instances do not support motion blur correctly yet. The #key used in + * #motion_blur_deform_data_get has to take ids of instances (#DupliObject.persistent_id) into + * account. Otherwise it can't find matching geometry instances at different points in time. */ + return; + } + EEVEE_ObjectMotionData *mb_data = EEVEE_motion_blur_object_data_get( &effects->motion_blur, ob, false); -- cgit v1.2.3