diff options
author | Jeroen Bakker <j.bakker@atmind.nl> | 2019-05-24 17:21:21 +0300 |
---|---|---|
committer | Jeroen Bakker <j.bakker@atmind.nl> | 2019-05-24 17:33:59 +0300 |
commit | 5986160dd0f11ce0e5302d7bcf7d386925164de6 (patch) | |
tree | 18b60b48831c179a8e5243ea2ec20eb0402fe43f /source | |
parent | d8f096406b27cb1d24a633546e777de3a35434f5 (diff) |
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
Diffstat (limited to 'source')
-rw-r--r-- | source/blender/draw/engines/eevee/eevee_effects.c | 20 | ||||
-rw-r--r-- | source/blender/draw/engines/eevee/eevee_volumes.c | 2 |
2 files changed, 11 insertions, 11 deletions
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 @@ -175,16 +175,6 @@ void EEVEE_effects_init(EEVEE_ViewLayerData *sldata, } /** - * 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 */ const bool half_res_hiz = true; @@ -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; |