From af3954fe902c9efdc916fcd7dfaa07918d6cdd9d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Foucault?= Date: Wed, 17 May 2017 17:41:50 +0200 Subject: [PATCH] Eevee: fix bug with postprocess buffer sharing. --- .../blender/draw/engines/eevee/eevee_effects.c | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/source/blender/draw/engines/eevee/eevee_effects.c b/source/blender/draw/engines/eevee/eevee_effects.c index b19bbce801c..205e1588b43 100644 --- a/source/blender/draw/engines/eevee/eevee_effects.c +++ b/source/blender/draw/engines/eevee/eevee_effects.c @@ -299,18 +299,24 @@ void EEVEE_effects_init(EEVEE_Data *vedata) int buffer_size[2] = {(int)viewport_size[0] / 2, (int)viewport_size[1] / 2}; struct GPUTexture **dof_down_near = &txl->dof_down_near; + bool fb_reset = false; /* Reuse buffer from Bloom if available */ /* WATCH IT : must have the same size */ if ((enabled_effects & EFFECT_BLOOM) != 0) { dof_down_near = &txl->bloom_downsample[0]; /* should always exists */ + if ((effects->enabled_effects & EFFECT_BLOOM) == 0) { + fb_reset = true; + } } else if ((effects->enabled_effects & EFFECT_BLOOM) != 0) { - /* if framebuffer was configured to share buffer with bloom last frame */ - if (fbl->dof_down_fb != NULL) { - DRW_framebuffer_free(fbl->dof_down_fb); - fbl->dof_down_fb = NULL; - } + fb_reset = true; + } + + /* if framebuffer config must be changed */ + if (fb_reset && (fbl->dof_down_fb != NULL)) { + DRW_framebuffer_free(fbl->dof_down_fb); + fbl->dof_down_fb = NULL; } /* Setup buffers */