From 5986160dd0f11ce0e5302d7bcf7d386925164de6 Mon Sep 17 00:00:00 2001 From: Jeroen Bakker Date: Fri, 24 May 2019 16:21:21 +0200 Subject: EEVEE: Volumetrics When viewport samples are set to 1 simple scenes with volumetrics crash. EEVEE volumetrics needs to init the post processing buffers. With recent changes the need for post processing buffers are known after the cache init. But they are constructed before the cache init. This lead to null pointers. Reviewed By: fclem Maniphest Tasks: T64922 Differential Revision: https://developer.blender.org/D4942 --- source/blender/draw/engines/eevee/eevee_effects.c | 20 ++++++++++---------- source/blender/draw/engines/eevee/eevee_volumes.c | 2 +- 2 files changed, 11 insertions(+), 11 deletions(-) (limited to 'source/blender/draw') diff --git a/source/blender/draw/engines/eevee/eevee_effects.c b/source/blender/draw/engines/eevee/eevee_effects.c index 3562afc9134..8b176f8e5b2 100644 --- a/source/blender/draw/engines/eevee/eevee_effects.c +++ b/source/blender/draw/engines/eevee/eevee_effects.c @@ -174,16 +174,6 @@ void EEVEE_effects_init(EEVEE_ViewLayerData *sldata, effects->enabled_effects |= EFFECT_ALPHA_CHECKER; } - /** - * Ping Pong buffer - */ - if ((effects->enabled_effects & EFFECT_POST_BUFFER) != 0) { - SETUP_BUFFER(txl->color_post, fbl->effect_fb, fbl->effect_color_fb); - } - else { - CLEANUP_BUFFER(txl->color_post, fbl->effect_fb, fbl->effect_color_fb); - } - /** * MinMax Pyramid */ @@ -385,6 +375,16 @@ void EEVEE_effects_draw_init(EEVEE_ViewLayerData *UNUSED(sldata), EEVEE_Data *ve else { CLEANUP_BUFFER(txl->color_double_buffer, fbl->double_buffer_fb, fbl->double_buffer_color_fb); } + + /** + * Ping Pong buffer + */ + if ((effects->enabled_effects & EFFECT_POST_BUFFER) != 0) { + SETUP_BUFFER(txl->color_post, fbl->effect_fb, fbl->effect_color_fb); + } + else { + CLEANUP_BUFFER(txl->color_post, fbl->effect_fb, fbl->effect_color_fb); + } } #if 0 /* Not required for now */ diff --git a/source/blender/draw/engines/eevee/eevee_volumes.c b/source/blender/draw/engines/eevee/eevee_volumes.c index 59f144b1faf..61277628859 100644 --- a/source/blender/draw/engines/eevee/eevee_volumes.c +++ b/source/blender/draw/engines/eevee/eevee_volumes.c @@ -221,7 +221,7 @@ void EEVEE_volumes_init(EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata) current_sample = effects->taa_current_sample - 1; effects->volume_current_sample = -1; } - else { + else if (DRW_state_is_image_render()) { const uint max_sample = (ht_primes[0] * ht_primes[1] * ht_primes[2]); current_sample = effects->volume_current_sample = (effects->volume_current_sample + 1) % max_sample; -- cgit v1.2.3