Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrecht Van Lommel <brecht@blender.org>2020-09-03 17:08:27 +0300
committerJeroen Bakker <jeroen@blender.org>2020-09-21 09:49:25 +0300
commitea2d025a98481e372412940f49a489fa015e1851 (patch)
treee03935cf923421f48341ac65164a3763394aca59
parent90312da85ae64f86742c3c041428d6536b7202b9 (diff)
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.
-rw-r--r--source/blender/draw/engines/eevee/eevee_volumes.c16
1 files changed, 12 insertions, 4 deletions
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