[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