[Bf-blender-cvs] [29ff1539e1a] new-object-types: Fix failure to display volumes with negative start location

Brecht Van Lommel noreply at git.blender.org
Tue Feb 25 14:27:22 CET 2020


Commit: 29ff1539e1af79d0f248c6b3db1ac59eb2605bf1
Author: Brecht Van Lommel
Date:   Tue Feb 25 14:25:29 2020 +0100
Branches: new-object-types
https://developer.blender.org/rB29ff1539e1af79d0f248c6b3db1ac59eb2605bf1

Fix failure to display volumes with negative start location

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

M	intern/cycles/blender/blender_image.cpp
M	intern/cycles/blender/blender_util.h
M	source/blender/blenkernel/BKE_volume_render.h
M	source/blender/blenkernel/intern/volume_render.cc
M	source/blender/draw/intern/draw_cache_impl_volume.c

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

diff --git a/intern/cycles/blender/blender_image.cpp b/intern/cycles/blender/blender_image.cpp
index 87022ea9b57..90da67862b1 100644
--- a/intern/cycles/blender/blender_image.cpp
+++ b/intern/cycles/blender/blender_image.cpp
@@ -88,7 +88,7 @@ void BlenderSession::builtin_image_info(const string &builtin_name,
         metadata.builtin_free_cache = !b_grid.is_loaded();
 
         /* Compute grid dimensions. */
-        size_t min[3], max[3];
+        ssize_t min[3], max[3];
         if (!BKE_volume_grid_dense_bounds(volume, volume_grid, min, max)) {
           return;
         }
@@ -312,7 +312,7 @@ bool BlenderSession::builtin_image_float_pixels(const string &builtin_name,
         VolumeGrid *volume_grid = (VolumeGrid *)b_grid.ptr.data;
 
         /* TODO: don't compute resolution twice */
-        size_t min[3], max[3];
+        ssize_t min[3], max[3];
         if (BKE_volume_grid_dense_bounds(volume, volume_grid, min, max)) {
           BKE_volume_grid_dense_voxels(volume, volume_grid, min, max, pixels);
         }
diff --git a/intern/cycles/blender/blender_util.h b/intern/cycles/blender/blender_util.h
index e6807496e07..68956b2e858 100644
--- a/intern/cycles/blender/blender_util.h
+++ b/intern/cycles/blender/blender_util.h
@@ -40,16 +40,16 @@ float *BKE_image_get_float_pixels_for_frame(void *image, int frame, int tile);
 struct VolumeGrid;
 bool BKE_volume_grid_dense_bounds(const Volume *volume,
                                   VolumeGrid *volume_grid,
-                                  size_t min[3],
-                                  size_t max[3]);
+                                  ssize_t min[3],
+                                  ssize_t max[3]);
 void BKE_volume_grid_dense_transform_matrix(const VolumeGrid *volume_grid,
-                                            const size_t min[3],
-                                            const size_t max[3],
+                                            const ssize_t min[3],
+                                            const ssize_t max[3],
                                             float mat[4][4]);
 void BKE_volume_grid_dense_voxels(const Volume *volume,
                                   VolumeGrid *volume_grid,
-                                  const size_t min[3],
-                                  const size_t max[3],
+                                  const ssize_t min[3],
+                                  const ssize_t max[3],
                                   float *voxels);
 }
 
diff --git a/source/blender/blenkernel/BKE_volume_render.h b/source/blender/blenkernel/BKE_volume_render.h
index acc2236f313..eacc50ac674 100644
--- a/source/blender/blenkernel/BKE_volume_render.h
+++ b/source/blender/blenkernel/BKE_volume_render.h
@@ -38,16 +38,16 @@ struct VolumeGrid;
 
 bool BKE_volume_grid_dense_bounds(const struct Volume *volume,
                                   struct VolumeGrid *volume_grid,
-                                  size_t min[3],
-                                  size_t max[3]);
+                                  ssize_t min[3],
+                                  ssize_t max[3]);
 void BKE_volume_grid_dense_transform_matrix(const struct VolumeGrid *volume_grid,
-                                            const size_t min[3],
-                                            const size_t max[3],
+                                            const ssize_t min[3],
+                                            const ssize_t max[3],
                                             float mat[4][4]);
 void BKE_volume_grid_dense_voxels(const struct Volume *volume,
                                   struct VolumeGrid *volume_grid,
-                                  const size_t min[3],
-                                  const size_t max[3],
+                                  const ssize_t min[3],
+                                  const ssize_t max[3],
                                   float *voxels);
 
 /* Wireframe */
diff --git a/source/blender/blenkernel/intern/volume_render.cc b/source/blender/blenkernel/intern/volume_render.cc
index 8e03895a794..0902777eca6 100644
--- a/source/blender/blenkernel/intern/volume_render.cc
+++ b/source/blender/blenkernel/intern/volume_render.cc
@@ -41,8 +41,8 @@
 
 bool BKE_volume_grid_dense_bounds(const Volume *volume,
                                   VolumeGrid *volume_grid,
-                                  size_t min[3],
-                                  size_t max[3])
+                                  ssize_t min[3],
+                                  ssize_t max[3])
 {
 #ifdef WITH_OPENVDB
   openvdb::GridBase::ConstPtr grid = BKE_volume_grid_openvdb_for_read(volume, volume_grid);
@@ -73,8 +73,8 @@ bool BKE_volume_grid_dense_bounds(const Volume *volume,
 
 /* Transform matrix from unit cube to object space, for 3D texture sampling. */
 void BKE_volume_grid_dense_transform_matrix(const VolumeGrid *volume_grid,
-                                            const size_t min[3],
-                                            const size_t max[3],
+                                            const ssize_t min[3],
+                                            const ssize_t max[3],
                                             float mat[4][4])
 {
 #ifdef WITH_OPENVDB
@@ -96,8 +96,8 @@ void BKE_volume_grid_dense_transform_matrix(const VolumeGrid *volume_grid,
 
 void BKE_volume_grid_dense_voxels(const Volume *volume,
                                   VolumeGrid *volume_grid,
-                                  const size_t min[3],
-                                  const size_t max[3],
+                                  const ssize_t min[3],
+                                  const ssize_t max[3],
                                   float *voxels)
 {
 #ifdef WITH_OPENVDB
diff --git a/source/blender/draw/intern/draw_cache_impl_volume.c b/source/blender/draw/intern/draw_cache_impl_volume.c
index 72dd0331eb0..e32ef8cbc2b 100644
--- a/source/blender/draw/intern/draw_cache_impl_volume.c
+++ b/source/blender/draw/intern/draw_cache_impl_volume.c
@@ -229,7 +229,7 @@ static DRWVolumeGrid *volume_grid_cache_get(Volume *volume,
   BKE_volume_grid_load(volume, grid);
 
   /* Compute dense voxel grid size. */
-  size_t dense_min[3], dense_max[3];
+  ssize_t dense_min[3], dense_max[3];
   if (BKE_volume_grid_dense_bounds(volume, grid, dense_min, dense_max)) {
     cache_grid->resolution[0] = dense_max[0] - dense_min[0];
     cache_grid->resolution[1] = dense_max[1] - dense_min[1];



More information about the Bf-blender-cvs mailing list