Blender  V3.3
openvdb.h
Go to the documentation of this file.
1 /* SPDX-License-Identifier: Apache-2.0
2  * Copyright 2011-2022 Blender Foundation */
3 
4 #ifndef __UTIL_OPENVDB_H__
5 #define __UTIL_OPENVDB_H__
6 
7 #ifdef WITH_OPENVDB
8 # include <openvdb/openvdb.h>
9 
10 namespace openvdb {
11 
12 using Vec4fTree = tree::Tree4<Vec4f, 5, 4, 3>::Type;
13 using Vec4fGrid = Grid<Vec4fTree>;
14 
15 /* Apply operation to known grid types. */
16 template<typename OpType>
17 bool grid_type_operation(const openvdb::GridBase::ConstPtr &grid, OpType &&op)
18 {
19  if (grid->isType<openvdb::FloatGrid>()) {
20  return op.template operator()<openvdb::FloatGrid, openvdb::FloatGrid, float, 1>(grid);
21  }
22  else if (grid->isType<openvdb::Vec3fGrid>()) {
23  return op.template operator()<openvdb::Vec3fGrid, openvdb::Vec3fGrid, openvdb::Vec3f, 3>(grid);
24  }
25  else if (grid->isType<openvdb::BoolGrid>()) {
26  return op.template operator()<openvdb::BoolGrid, openvdb::FloatGrid, float, 1>(grid);
27  }
28  else if (grid->isType<openvdb::DoubleGrid>()) {
29  return op.template operator()<openvdb::DoubleGrid, openvdb::FloatGrid, float, 1>(grid);
30  }
31  else if (grid->isType<openvdb::Int32Grid>()) {
32  return op.template operator()<openvdb::Int32Grid, openvdb::FloatGrid, float, 1>(grid);
33  }
34  else if (grid->isType<openvdb::Int64Grid>()) {
35  return op.template operator()<openvdb::Int64Grid, openvdb::FloatGrid, float, 1>(grid);
36  }
37  else if (grid->isType<openvdb::Vec3IGrid>()) {
38  return op.template operator()<openvdb::Vec3IGrid, openvdb::Vec3fGrid, openvdb::Vec3f, 3>(grid);
39  }
40  else if (grid->isType<openvdb::Vec3dGrid>()) {
41  return op.template operator()<openvdb::Vec3dGrid, openvdb::Vec3fGrid, openvdb::Vec3f, 3>(grid);
42  }
43  else if (grid->isType<openvdb::MaskGrid>()) {
44  return op.template operator()<openvdb::MaskGrid, openvdb::FloatGrid, float, 1>(grid);
45  }
46  else {
47  return false;
48  }
49 }
50 
51 }; // namespace openvdb
52 
53 #endif
54 
55 #endif /* __UTIL_OPENVDB_H__ */
typedef float(TangentPoint)[2]
struct Vec3f Vec3f