5#ifndef __UTIL_OPENVDB_H__
6#define __UTIL_OPENVDB_H__
9# include <openvdb/openvdb.h>
13using Vec4fTree = tree::Tree4<Vec4f, 5, 4, 3>::Type;
17template<
typename OpType>
18bool grid_type_operation(
const openvdb::GridBase::ConstPtr &grid, OpType &&op)
20 if (grid->isType<openvdb::FloatGrid>()) {
21 return op.template operator()<openvdb::FloatGrid, openvdb::FloatGrid,
float, 1>(grid);
23 else if (grid->isType<openvdb::Vec3fGrid>()) {
24 return op.template operator()<openvdb::Vec3fGrid, openvdb::Vec3fGrid, openvdb::Vec3f, 3>(grid);
26 else if (grid->isType<openvdb::BoolGrid>()) {
27 return op.template operator()<openvdb::BoolGrid, openvdb::FloatGrid,
float, 1>(grid);
29 else if (grid->isType<openvdb::DoubleGrid>()) {
30 return op.template operator()<openvdb::DoubleGrid, openvdb::FloatGrid,
float, 1>(grid);
32 else if (grid->isType<openvdb::Int32Grid>()) {
33 return op.template operator()<openvdb::Int32Grid, openvdb::FloatGrid,
float, 1>(grid);
35 else if (grid->isType<openvdb::Int64Grid>()) {
36 return op.template operator()<openvdb::Int64Grid, openvdb::FloatGrid,
float, 1>(grid);
38 else if (grid->isType<openvdb::Vec3IGrid>()) {
39 return op.template operator()<openvdb::Vec3IGrid, openvdb::Vec3fGrid, openvdb::Vec3f, 3>(grid);
41 else if (grid->isType<openvdb::Vec3dGrid>()) {
42 return op.template operator()<openvdb::Vec3dGrid, openvdb::Vec3fGrid, openvdb::Vec3f, 3>(grid);
44 else if (grid->isType<openvdb::MaskGrid>()) {
45 return op.template operator()<openvdb::MaskGrid, openvdb::FloatGrid,
float, 1>(grid);
draw_view in_light_buf[] float