Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorClément Foucault <foucault.clem@gmail.com>2017-05-11 16:40:31 +0300
committerClément Foucault <foucault.clem@gmail.com>2017-05-11 17:29:35 +0300
commit3341c11bccf46c82aaf7b45f9249913e91885a52 (patch)
treef4b98d532eea82ea140938bc5d3ab79e155dc44b /source/blender/draw/engines/eevee/eevee_effects.c
parent2e39a27e3b6d72c6697cc2ede56f6566a8e2f221 (diff)
Eevee: Disable motion blur if camera is different from its animated pose.
Diffstat (limited to 'source/blender/draw/engines/eevee/eevee_effects.c')
-rw-r--r--source/blender/draw/engines/eevee/eevee_effects.c28
1 files changed, 18 insertions, 10 deletions
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 */