diff options
author | Jacques Lucke <jacques@blender.org> | 2021-01-08 14:14:12 +0300 |
---|---|---|
committer | Jacques Lucke <jacques@blender.org> | 2021-01-08 14:14:12 +0300 |
commit | e3ae7d1f2f4592a0cc9032e2056b2236a39795f8 (patch) | |
tree | 58c5ddc79bfdc06f0184fd42f40c6ebba7f629cb /source/blender/draw | |
parent | c889ec916cf857b5e38f19e601f3d8d4f0e18a56 (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')
-rw-r--r-- | source/blender/draw/intern/draw_cache_impl_volume.c | 14 |
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. */ |