[Bf-blender-cvs] [3341c11bccf] blender2.8: Eevee: Disable motion blur if camera is different from its animated pose.

Clément Foucault noreply at git.blender.org
Thu May 11 16:29:45 CEST 2017


Commit: 3341c11bccf46c82aaf7b45f9249913e91885a52
Author: Clément Foucault
Date:   Thu May 11 15:40:31 2017 +0200
Branches: blender2.8
https://developer.blender.org/rB3341c11bccf46c82aaf7b45f9249913e91885a52

Eevee: Disable motion blur if camera is different from its animated pose.

===================================================================

M	source/blender/draw/engines/eevee/eevee_effects.c

===================================================================

diff --git a/source/blender/draw/engines/eevee/eevee_effects.c b/source/blender/draw/engines/eevee/eevee_effects.c
index 979b47ef4fd..429bb3c790e 100644
--- a/source/blender/draw/engines/eevee/eevee_effects.c
+++ b/source/blender/draw/engines/eevee/eevee_effects.c
@@ -190,23 +190,31 @@ void EEVEE_effects_init(EEVEE_Data *vedata)
 	if (BKE_collection_engine_property_value_get_bool(props, "motion_blur_enable")) {
 		/* Update Motion Blur Matrices */
 		if (rv3d->persp == RV3D_CAMOB && v3d->camera) {
+			float persmat[4][4];
 			float ctime = BKE_scene_frame_get(scene);
 			float delta = BKE_collection_engine_property_value_get_float(props, "motion_blur_shutter");
 
-			/* Past matrix */
-			eevee_motion_blur_camera_get_matrix_at_time(scene, ar, rv3d, v3d, v3d->camera, ctime - delta, effects->past_world_to_ndc);
+			/* Current matrix */
+			eevee_motion_blur_camera_get_matrix_at_time(scene, ar, rv3d, v3d, v3d->camera, ctime, effects->current_ndc_to_world);
+
+			/* Viewport Matrix */
+			DRW_viewport_matrix_get(persmat, DRW_MAT_PERS);
+
+			/* Only continue if camera is not being keyed */
+			if (compare_m4m4(persmat, effects->current_ndc_to_world, 0.0001f)) {
+
+				/* Past matrix */
+				eevee_motion_blur_camera_get_matrix_at_time(scene, ar, rv3d, v3d, v3d->camera, ctime - delta, effects->past_world_to_ndc);
 
 #if 0       /* for future high quality blur */
-			/* Future matrix */
-			eevee_motion_blur_camera_get_matrix_at_time(scene, ar, rv3d, v3d, v3d->camera, ctime + delta, effects->future_world_to_ndc);
+				/* Future matrix */
+				eevee_motion_blur_camera_get_matrix_at_time(scene, ar, rv3d, v3d, v3d->camera, ctime + delta, effects->future_world_to_ndc);
 #endif
+				invert_m4(effects->current_ndc_to_world);
 
-			/* Current matrix */
-			eevee_motion_blur_camera_get_matrix_at_time(scene, ar, rv3d, v3d, v3d->camera, ctime, effects->current_ndc_to_world);
-			invert_m4(effects->current_ndc_to_world);
-
-			effects->motion_blur_samples = BKE_collection_engine_property_value_get_int(props, "motion_blur_samples");
-			effects->enabled_effects |= EFFECT_MOTION_BLUR;
+				effects->motion_blur_samples = BKE_collection_engine_property_value_get_int(props, "motion_blur_samples");
+				effects->enabled_effects |= EFFECT_MOTION_BLUR;
+			}
 		}
 	}
 #endif /* ENABLE_EFFECT_MOTION_BLUR */




More information about the Bf-blender-cvs mailing list