[Bf-blender-cvs] [ea2d025a984] blender-v2.90-release: Fix T79718: Eevee OpenVDB render error when frames miss part of the grids

Brecht Van Lommel noreply at git.blender.org
Mon Sep 21 09:50:32 CEST 2020


Commit: ea2d025a98481e372412940f49a489fa015e1851
Author: Brecht Van Lommel
Date:   Thu Sep 3 16:08:27 2020 +0200
Branches: blender-v2.90-release
https://developer.blender.org/rBea2d025a98481e372412940f49a489fa015e1851

Fix T79718: Eevee OpenVDB render error when frames miss part of the grids

Improved fix that handles the distinct cases of missing grids and zero
size grids.

===================================================================

M	source/blender/draw/engines/eevee/eevee_volumes.c

===================================================================

diff --git a/source/blender/draw/engines/eevee/eevee_volumes.c b/source/blender/draw/engines/eevee/eevee_volumes.c
index 9fe83a341c5..03dc36b2058 100644
--- a/source/blender/draw/engines/eevee/eevee_volumes.c
+++ b/source/blender/draw/engines/eevee/eevee_volumes.c
@@ -167,6 +167,8 @@ static GPUTexture *eevee_volume_default_texture(eGPUVolumeDefaultValue default_v
     case GPU_VOLUME_DEFAULT_1:
       return e_data.dummy_one;
   }
+
+  return e_data.dummy_zero;
 }
 
 void EEVEE_volumes_set_jitter(EEVEE_ViewLayerData *sldata, uint current_sample)
@@ -475,10 +477,16 @@ static bool eevee_volume_object_grids_init(Object *ob, ListBase *gpu_grids, DRWS
                                   DRW_volume_batch_cache_get_grid(volume, volume_grid) :
                                   NULL;
 
-    DRW_shgroup_uniform_texture(
-        grp,
-        gpu_grid->sampler_name,
-        (drw_grid) ? drw_grid->texture : eevee_volume_default_texture(gpu_grid->default_value));
+    /* Handle 3 cases here:
+     * - Grid exists and texture was loaded -> use texture.
+     * - Grid exists but has zero size or failed to load -> use zero.
+     * - Grid does not exist -> use default value. */
+    GPUTexture *grid_tex = (drw_grid) ? drw_grid->texture :
+                                        (volume_grid) ?
+                                        e_data.dummy_zero :
+                                        eevee_volume_default_texture(gpu_grid->default_value);
+
+    DRW_shgroup_uniform_texture(grp, gpu_grid->sampler_name, grid_tex);
 
     if (drw_grid && multiple_transforms) {
       /* Specify per-volume transform matrix that is applied after the



More information about the Bf-blender-cvs mailing list