Commit: 6a7af7273de37ce7e3b72dd5cb33b2fabc8ad6e9
Author: Geraldine Chua
Date:   Thu Aug 2 23:27:28 2018 +0800
Branches: soc-2018-cycles-volumes
https://developer.blender.org/rB6a7af7273de37ce7e3b72dd5cb33b2fabc8ad6e9

Remove most VDB grid as texture storage functions.

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

M       intern/cycles/device/CMakeLists.txt
M       intern/cycles/device/device_cpu.cpp
D       intern/cycles/device/device_memory_openvdb.h
M       intern/cycles/kernel/kernels/cpu/kernel_cpu_image.h
M       intern/cycles/render/image.cpp
M       intern/cycles/render/mesh_volume.cpp
M       intern/cycles/render/openvdb.cpp
M       intern/cycles/render/openvdb.h

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

diff --git a/intern/cycles/device/CMakeLists.txt 
b/intern/cycles/device/CMakeLists.txt
index 8e3494a814c..75e78e038ea 100644
--- a/intern/cycles/device/CMakeLists.txt
+++ b/intern/cycles/device/CMakeLists.txt
@@ -60,10 +60,6 @@ set(SRC_HEADERS
        device_task.h
 )
 
-if(WITH_OPENVDB)
-       list(APPEND SRC_HEADERS device_memory_openvdb.h)
-endif()
-
 add_definitions(${GL_DEFINITIONS})
 if(WITH_CYCLES_NETWORK)
        add_definitions(-DWITH_NETWORK)
diff --git a/intern/cycles/device/device_cpu.cpp 
b/intern/cycles/device/device_cpu.cpp
index 0b8e95c03c9..f2c643f5202 100644
--- a/intern/cycles/device/device_cpu.cpp
+++ b/intern/cycles/device/device_cpu.cpp
@@ -423,9 +423,6 @@ public:
                        info.depth = mem.real_depth;
 
                        switch(mem.grid_type) {
-                               case IMAGE_GRID_TYPE_OPENVDB:
-                                       info.util = (uint64_t)mem.grid_info;
-                                       break;
                                case IMAGE_GRID_TYPE_SPARSE:
                                        info.util = 
(uint64_t)sparse_mem->host_pointer;
                                        info.tiled_width = 
get_tile_res(info.width);
@@ -436,6 +433,7 @@ public:
                                        info.last_tile_dim |= ((info.width % 
TILE_SIZE) << LAST_TILE_WIDTH_MASK);
                                        info.last_tile_dim |= ((info.height % 
TILE_SIZE) << LAST_TILE_HEIGHT_MASK);
                                        break;
+                               case IMAGE_GRID_TYPE_OPENVDB:
                                case IMAGE_GRID_TYPE_DEFAULT:
                                default:
                                        info.util = 0;
diff --git a/intern/cycles/device/device_memory_openvdb.h 
b/intern/cycles/device/device_memory_openvdb.h
deleted file mode 100644
index ee655318b61..00000000000
--- a/intern/cycles/device/device_memory_openvdb.h
+++ /dev/null
@@ -1,73 +0,0 @@
-#ifndef __DEVICE_MEMORY_OPENVDB_H__
-#define __DEVICE_MEMORY_OPENVDB_H__
-
-/* OpenVDB Memory
- *
- *
- */
-#include <openvdb/openvdb.h>
-#include "device/device_memory.h"
-
-CCL_NAMESPACE_BEGIN
-
-template<> struct device_type_traits<openvdb::Vec3SGrid> {
-       static const DataType data_type = TYPE_FLOAT;
-       static const int num_elements = 4;
-};
-
-template<> struct device_type_traits<openvdb::FloatGrid> {
-       static const DataType data_type = TYPE_FLOAT;
-       static const int num_elements = 1;
-};
-
-template<typename GridType>
-class device_openvdb : public device_memory
-{
-public:
-       device_openvdb(Device *device,
-                      const char *name,
-                      MemoryType type,
-                      typename GridType::Ptr grid,
-                      typename GridType::ConstAccessor accessor,
-                      int3 resolution)
-       : device_memory(device, name, type),
-         vdb_grid(grid),
-         vdb_acc(accessor)
-       {
-               using namespace openvdb;
-
-               data_type = device_type_traits<GridType>::data_type;
-               data_elements = device_type_traits<GridType>::num_elements;
-
-               assert(data_elements > 0);
-
-               host_pointer = static_cast<void*>(&vdb_grid);
-               grid_info = static_cast<void*>(&vdb_acc);
-
-               data_width = real_width = resolution.x;
-               data_height = real_height = resolution.y;
-               data_depth = real_depth = resolution.z;
-
-               assert((vdb_grid->memUsage() % (data_elements * 
datatype_size(data_type))) == 0);
-
-               data_size = vdb_grid->memUsage() / (data_elements * 
datatype_size(data_type));
-       }
-
-       typename GridType::Ptr vdb_grid;
-       typename GridType::ConstAccessor vdb_acc;
-
-       void copy_to_device()
-       {
-               device_copy_to();
-       }
-
-protected:
-       size_t size(size_t width, size_t height, size_t depth)
-       {
-               return width * ((height == 0)? 1: height) * ((depth == 0)? 1: 
depth);
-       }
-};
-
-CCL_NAMESPACE_END
-
-#endif /* __DEVICE_MEMORY_OPENVDB_H__ */
diff --git a/intern/cycles/kernel/kernels/cpu/kernel_cpu_image.h 
b/intern/cycles/kernel/kernels/cpu/kernel_cpu_image.h
index 0b05dac544b..08f79278cf1 100644
--- a/intern/cycles/kernel/kernels/cpu/kernel_cpu_image.h
+++ b/intern/cycles/kernel/kernels/cpu/kernel_cpu_image.h
@@ -17,13 +17,9 @@
 #ifndef __KERNEL_CPU_IMAGE_H__
 #define __KERNEL_CPU_IMAGE_H__
 
-#ifdef WITH_OPENVDB
-#include <openvdb/openvdb.h>
-#endif
-
 CCL_NAMESPACE_BEGIN
 
-template<typename T, typename UtilType>
+template<typename T>
 struct TextureInterpolator {
 #define SET_CUBIC_SPLINE_WEIGHTS(u, t) \
        { \
@@ -92,7 +88,7 @@ struct TextureInterpolator {
 
        /* Sparse grid voxel access. */
        static ccl_always_inline float4 read_data(const T *data,
-                                                 const int *grid_info,
+                                                 const int *sparse_indexes,
                                                  int x, int y, int z,
                                                  int /*width*/, int /*height*/,
                                                  int tiw, int tih,
@@ -102,7 +98,7 @@ struct TextureInterpolator {
                int tix = x / TILE_SIZE, itix = x % TILE_SIZE,
                    tiy = y / TILE_SIZE, itiy = y % TILE_SIZE,
                    tiz = z / TILE_SIZE, itiz = z % TILE_SIZE;
-               int sparse_index = grid_info[(tix + tiw * (tiy + tiz * tih))];
+               int sparse_index = sparse_indexes[(tix + tiw * (tiy + tiz * 
tih))];
                if(sparse_index < 0) {
                        return make_float4(0.0f);
                }
@@ -112,34 +108,6 @@ struct TextureInterpolator {
                return read(data[sparse_index + in_tile_index]);
        }
 
-#ifdef WITH_OPENVDB
-       /* OpenVDB grid voxel access. */
-       static ccl_always_inline float4 read_data(const T */*data*/,
-                                                 
openvdb::FloatGrid::ConstAccessor *accessor,
-                                                 int x, int y, int z,
-                                                 int /*width*/, int /*height*/,
-                                                 int /*tiw*/, int /*tih*/,
-                                                 int /*evw*/, int /*evh*/,
-                                                 int /*ltw*/, int /*lth*/)
-       {
-               const openvdb::math::Coord xyz(x, y, z);
-               return read(accessor->getValue(xyz));
-       }
-
-       static ccl_always_inline float4 read_data(const T */*data*/,
-                                                 
openvdb::Vec3SGrid::ConstAccessor *accessor,
-                                                 int x, int y, int z,
-                                                 int /*width*/, int /*height*/,
-                                                 int /*tiw*/, int /*tih*/,
-                                                 int /*evw*/, int /*evh*/,
-                                                 int /*ltw*/, int /*lth*/)
-       {
-               const openvdb::math::Coord xyz(x, y, z);
-               openvdb::math::Vec3s r = accessor->getValue(xyz);
-               return make_float4(r.x(), r.y(), r.z(), 1.0f);
-       }
-#endif
-
        static ccl_always_inline int wrap_periodic(int x, int width)
        {
                x %= width;
@@ -347,7 +315,7 @@ struct TextureInterpolator {
                }
 
                const T *data = (const T*)info.data;
-               UtilType *util = (UtilType*)info.util;
+               const int *util = (const int*)info.util;
                int ltw = info.last_tile_dim & LAST_TILE_WIDTH_MASK;
                int lth = info.last_tile_dim & LAST_TILE_HEIGHT_MASK;
 
@@ -402,7 +370,7 @@ struct TextureInterpolator {
 
                float4 r;
                const T *data = (const T*)info.data;
-               UtilType *util = (UtilType*)info.util;
+               const int *util = (const int*)info.util;
                int tiw = info.tiled_width;
                int tih = info.tiled_height;
                int evw = info.even_width;
@@ -558,18 +526,18 @@ ccl_device float4 kernel_tex_image_interp(KernelGlobals 
*kg, int id, float x, fl
 
        switch(kernel_tex_type(id)) {
                case IMAGE_DATA_TYPE_HALF:
-                       return TextureInterpolator<half, void>::interp(info, x, 
y);
+                       return TextureInterpolator<half>::interp(info, x, y);
                case IMAGE_DATA_TYPE_BYTE:
-                       return TextureInterpolator<uchar, void>::interp(info, 
x, y);
+                       return TextureInterpolator<uchar>::interp(info, x, y);
                case IMAGE_DATA_TYPE_FLOAT:
-                       return TextureInterpolator<float, void>::interp(info, 
x, y);
+                       return TextureInterpolator<float>::interp(info, x, y);
                case IMAGE_DATA_TYPE_HALF4:
-                       return TextureInterpolator<half4, void>::interp(info, 
x, y);
+                       return TextureInterpolator<half4>::interp(info, x, y);
                case IMAGE_DATA_TYPE_BYTE4:
-                       return TextureInterpolator<uchar4, void>::interp(info, 
x, y);
+                       return TextureInterpolator<uchar4>::interp(info, x, y);
                case IMAGE_DATA_TYPE_FLOAT4:
                default:
-                       return TextureInterpolator<float4, void>::interp(info, 
x, y);
+                       return TextureInterpolator<float4>::interp(info, x, y);
        }
 }
 
@@ -577,50 +545,19 @@ ccl_device float4 
kernel_tex_image_interp_3d(KernelGlobals *kg, int id, float x,
 {
        const TextureInfo& info = kernel_tex_fetch(__texture_info, id);
 
-       /* UNLIKELY(info.util) is a quicker way to check if grid type is not
-        * default, since only default type will have util == 0. */
-
        switch(kernel_tex_type(id)) {
                case IMAGE_DATA_TYPE_HALF:
-                       if(UNLIKELY(info.util))
-                               return TextureInterpolator<half, 
int>::interp_3d(info, x, y, z, interp);
-                       else
-                               return TextureInterpolator<half, 
void>::interp_3d(info, x, y, z, interp);
+                       return TextureInterpolator<half>::interp_3d(info, x, y, 
z, interp);
                case IMAGE_DATA_TYPE_BYTE:
-                       if(UNLIKELY(info.util))
-                               return TextureInterpolator<uchar, 
int>::interp_3d(info, x, y, z, interp);
-                       else
-                               return TextureInterpolator<uchar, 
void>::interp_3d(info, x, y, z, interp);
+                       return TextureInterpolator<uchar>::interp_3d(info, x, 
y, z, interp);
                case IMAGE_DATA_TYPE_FLOAT:
-                       if(UNLIKELY(info.util))
-#ifdef WITH_OPENVDB
-                               if(info.grid_type == IMAGE_GRID_TYPE_OPENVDB)
-                                   return TextureInterpolator<float, 
openvdb::FloatGrid::ConstAccessor>::interp_3d(info, x, y, z, interp);
-                               else
-#endif
-                                       return TextureInterpolator<float, 
int>::interp_3d(info, x, y, z, interp);
-                       else
-                               return TextureInterpolator<float, 
void>::interp_3d(info, x, y, z, interp);
+                       return TextureInterpolator<float>::interp_3d(info, x, 
y, z, interp);
                case IMAGE_DATA_TYPE_HALF4:
-                       if(UNLIKELY(info.util))
-                               return TextureInterpolator<half4, 
int>::interp_3d(info, x, y, z, interp);
-                       else
-                               return TextureInterpolator<half4, 
void>::interp_3d(info, x, y, z, interp);
+                       return TextureInterpolator<half4>::interp_3d(info, x, 
y, z, interp);
                case IMAGE_DATA_TYPE_BYTE4:
-                       if(UNLIKELY(info.util))
-                               return TextureInterpolator<uchar4, 
int>::interp_3d(info, x, y, z, interp);
-                       else
-                               return TextureInterpolator<half4, 
void>::interp_3d(info, x, y, z, interp);
+                       return TextureInterpolator<uchar4>::interp_3d(info, x, 
y, z, interp);
                case IMAGE_DATA_TYPE_FLOAT4:
-                       if(UNLIKELY(info.util))
-#ifdef WITH_OPENVDB
-                               if(info.grid_type == IMAGE_GRID_TYPE_OPENVDB)
-                                   return TextureInterpolator<float4, openvdb

@@ Diff output truncated at 10240 characters. @@

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to