Fix T87464 EEVEE: Crash with deformation Motion Blur
This was caused by the new depsgraph persistence. The GPUbatches we got from the cache being the same for each frame means that we need to be more careful about cleanning the additional VBOs references. Moving the `EEVEE_motion_blur_swap_data` function call at the end of the loop makes sure the references are cleaned.
This commit is contained in:
parent
73913ed845
commit
c4bebc03e0
Notes:
blender-bot
2023-02-14 05:43:04 +01:00
Referenced by issue #87607, Eevee crashes with motion blur and displacement modifier Referenced by issue #87464, EEVEE Animation crashes with Motion Blur and Displacement modifier
|
@ -494,12 +494,7 @@ static void eevee_render_to_image(void *vedata,
|
|||
|
||||
/* Previous motion step. */
|
||||
if (do_motion_blur_fx) {
|
||||
if (i > 0) {
|
||||
/* The previous step of this iteration N is exactly the next step of iteration N - 1.
|
||||
* So we just swap the resources to avoid too much re-evaluation. */
|
||||
EEVEE_motion_blur_swap_data(vedata);
|
||||
}
|
||||
else {
|
||||
if (i == 0) {
|
||||
EEVEE_motion_blur_step_set(ved, MB_PREV);
|
||||
DRW_render_set_time(engine, depsgraph, floorf(time_prev), fractf(time_prev));
|
||||
EEVEE_render_modules_init(vedata, engine, depsgraph);
|
||||
|
@ -570,6 +565,14 @@ static void eevee_render_to_image(void *vedata,
|
|||
DRW_cache_restart();
|
||||
}
|
||||
}
|
||||
|
||||
if (do_motion_blur_fx) {
|
||||
/* The previous step of next iteration N is exactly the next step of this iteration N - 1.
|
||||
* So we just swap the resources to avoid too much re-evaluation.
|
||||
* Note that this also clears the VBO references from the GPUBatches of deformed
|
||||
* geometries. */
|
||||
EEVEE_motion_blur_swap_data(vedata);
|
||||
}
|
||||
}
|
||||
|
||||
EEVEE_volumes_free_smoke_textures();
|
||||
|
|
Loading…
Reference in New Issue