[Bf-blender-cvs] [879ed5a165a] blender-v2.90-release: EEVEE: Motion Blur: Fix issue with batch overflowing with VBOs

Clément Foucault noreply at git.blender.org
Wed Aug 12 18:07:02 CEST 2020


Commit: 879ed5a165ae870c7a8967fdd0f084ea7b16ca13
Author: Clément Foucault
Date:   Wed Aug 12 17:44:47 2020 +0200
Branches: blender-v2.90-release
https://developer.blender.org/rB879ed5a165ae870c7a8967fdd0f084ea7b16ca13

EEVEE: Motion Blur: Fix issue with batch overflowing with VBOs

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

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

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

diff --git a/source/blender/draw/engines/eevee/eevee_motion_blur.c b/source/blender/draw/engines/eevee/eevee_motion_blur.c
index a02007fede9..91a9939cd1f 100644
--- a/source/blender/draw/engines/eevee/eevee_motion_blur.c
+++ b/source/blender/draw/engines/eevee/eevee_motion_blur.c
@@ -492,14 +492,7 @@ void EEVEE_motion_blur_cache_finish(EEVEE_Data *vedata)
               }
               else {
                 /* Modify the batch to include the previous & next position. */
-                if (i == MB_PREV) {
-                  GPU_batch_vertbuf_add_ex(batch, vbo, true);
-                  mb_geom->vbo[i] = NULL;
-                }
-                else {
-                  /* This VBO can be reuse by next time step. Don't pass ownership. */
-                  GPU_batch_vertbuf_add_ex(batch, vbo, false);
-                }
+                GPU_batch_vertbuf_add_ex(batch, vbo, false);
               }
             }
           }
@@ -568,6 +561,15 @@ void EEVEE_motion_blur_swap_data(EEVEE_Data *vedata)
         break;
 
       case EEVEE_MOTION_DATA_MESH:
+        if (mb_geom->batch != NULL) {
+          for (int i = 0; i < GPU_BATCH_VBO_MAX_LEN; i++) {
+            if (mb_geom->batch->verts[i] == mb_geom->vbo[MB_PREV] ||
+                mb_geom->batch->verts[i] == mb_geom->vbo[MB_NEXT]) {
+              /* Avoid double reference of the VBOs. */
+              mb_geom->batch->verts[i] = NULL;
+            }
+          }
+        }
         GPU_VERTBUF_DISCARD_SAFE(mb_geom->vbo[MB_PREV]);
         mb_geom->vbo[MB_PREV] = mb_geom->vbo[MB_NEXT];



More information about the Bf-blender-cvs mailing list