[Bf-blender-cvs] [ed96c59c20f] master: Fix T80086 EEVEE: Motion Blur: Subframe not taken into account

Clément Foucault noreply at git.blender.org
Tue Oct 13 18:09:15 CEST 2020


Commit: ed96c59c20fb5f69edc9671b4efbcd4bf7f61ffb
Author: Clément Foucault
Date:   Tue Oct 13 16:25:38 2020 +0200
Branches: master
https://developer.blender.org/rBed96c59c20fb5f69edc9671b4efbcd4bf7f61ffb

Fix T80086 EEVEE: Motion Blur: Subframe not taken into account

This is a simple fix that just make it work like cycles. The initial time
was missing the subframe offset.

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

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

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

diff --git a/source/blender/draw/engines/eevee/eevee_engine.c b/source/blender/draw/engines/eevee/eevee_engine.c
index 5d5bd7ea9ba..872cc3247d4 100644
--- a/source/blender/draw/engines/eevee/eevee_engine.c
+++ b/source/blender/draw/engines/eevee/eevee_engine.c
@@ -459,11 +459,13 @@ static void eevee_render_to_image(void *vedata,
   EEVEE_render_modules_init(vedata, engine, depsgraph);
 
   int initial_frame = CFRA;
+  float initial_subframe = SUBFRA;
   int steps = max_ii(1, scene->eevee.motion_blur_steps);
   int time_steps_tot = (do_motion_blur) ? steps : 1;
   g_data->render_tot_samples = divide_ceil_u(scene->eevee.taa_render_samples, time_steps_tot);
   /* Centered on frame for now. */
-  float time = CFRA - scene->eevee.motion_blur_shutter / 2.0f;
+  float time = initial_frame + initial_subframe - scene->eevee.motion_blur_shutter / 2.0f;
+
   float time_step = scene->eevee.motion_blur_shutter / time_steps_tot;
   for (int i = 0; i < time_steps_tot && !RE_engine_test_break(engine); i++) {
     float time_prev = time;
@@ -562,9 +564,9 @@ static void eevee_render_to_image(void *vedata,
   /* Restore original viewport size. */
   DRW_render_viewport_size_set((int[2]){g_data->size_orig[0], g_data->size_orig[1]});
 
-  if (CFRA != initial_frame) {
+  if (CFRA != initial_frame || SUBFRA != initial_subframe) {
     /* Restore original frame number. This is because the render pipeline expects it. */
-    RE_engine_frame_set(engine, initial_frame, 0.0f);
+    RE_engine_frame_set(engine, initial_frame, initial_subframe);
   }
 }



More information about the Bf-blender-cvs mailing list