[Bf-blender-cvs] [5986160dd0f] master: EEVEE: Volumetrics
Jeroen Bakker
noreply at git.blender.org
Fri May 24 16:34:32 CEST 2019
Commit: 5986160dd0f11ce0e5302d7bcf7d386925164de6
Author: Jeroen Bakker
Date: Fri May 24 16:21:21 2019 +0200
Branches: master
https://developer.blender.org/rB5986160dd0f11ce0e5302d7bcf7d386925164de6
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
===================================================================
M source/blender/draw/engines/eevee/eevee_effects.c
M source/blender/draw/engines/eevee/eevee_volumes.c
===================================================================
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;
More information about the Bf-blender-cvs
mailing list