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:
authorJacques Lucke <jacques@blender.org>2021-01-08 14:14:12 +0300
committerJacques Lucke <jacques@blender.org>2021-01-08 14:14:12 +0300
commite3ae7d1f2f4592a0cc9032e2056b2236a39795f8 (patch)
tree58c5ddc79bfdc06f0184fd42f40c6ebba7f629cb /source/blender/draw/intern/draw_cache_impl_volume.c
parentc889ec916cf857b5e38f19e601f3d8d4f0e18a56 (diff)
Fix T83942: improve error checking when trying to render high resolution volume
Reviewers: fclem Differential Revision: https://developer.blender.org/D10032
Diffstat (limited to 'source/blender/draw/intern/draw_cache_impl_volume.c')
-rw-r--r--source/blender/draw/intern/draw_cache_impl_volume.c14
1 files changed, 11 insertions, 3 deletions
diff --git a/source/blender/draw/intern/draw_cache_impl_volume.c b/source/blender/draw/intern/draw_cache_impl_volume.c
index 1119e0458a5..7244dfd12c3 100644
--- a/source/blender/draw/intern/draw_cache_impl_volume.c
+++ b/source/blender/draw/intern/draw_cache_impl_volume.c
@@ -330,9 +330,17 @@ static DRWVolumeGrid *volume_grid_cache_get(Volume *volume,
format,
GPU_DATA_FLOAT,
dense_grid.voxels);
- GPU_texture_swizzle_set(cache_grid->texture, (channels == 3) ? "rgb1" : "rrr1");
- GPU_texture_wrap_mode(cache_grid->texture, false, false);
- BKE_volume_dense_float_grid_clear(&dense_grid);
+ /* The texture can be null if the resolution along one axis is larger than
+ * GL_MAX_3D_TEXTURE_SIZE. */
+ if (cache_grid->texture != NULL) {
+ GPU_texture_swizzle_set(cache_grid->texture, (channels == 3) ? "rgb1" : "rrr1");
+ GPU_texture_wrap_mode(cache_grid->texture, false, false);
+ BKE_volume_dense_float_grid_clear(&dense_grid);
+ }
+ else {
+ MEM_freeN(dense_grid.voxels);
+ printf("Error: Could not allocate 3D texture for volume.\n");
+ }
}
/* Free grid from memory if it wasn't previously loaded. */