Blender V5.0
image_vdb.h
Go to the documentation of this file.
1/* SPDX-FileCopyrightText: 2011-2022 Blender Foundation
2 *
3 * SPDX-License-Identifier: Apache-2.0 */
4
5#pragma once
6
7#ifdef WITH_OPENVDB
8# include <openvdb/openvdb.h>
9#endif
10#ifdef WITH_NANOVDB
11# include <nanovdb/NanoVDB.h>
12# if NANOVDB_MAJOR_VERSION_NUMBER > 32 || \
13 (NANOVDB_MAJOR_VERSION_NUMBER == 32 && NANOVDB_MINOR_VERSION_NUMBER >= 7)
14# include <nanovdb/GridHandle.h>
15# else
16# include <nanovdb/util/GridHandle.h>
17# endif
18#endif
19
20#include "scene/image.h"
21
22#include "util/transform.h"
23
25
27 public:
28#ifdef WITH_OPENVDB
29 VDBImageLoader(openvdb::GridBase::ConstPtr grid_,
30 const string &grid_name,
31 const float clipping = 0.001f);
32#endif
33 VDBImageLoader(const string &grid_name, const float clipping = 0.001f);
34 ~VDBImageLoader() override;
35
36 bool load_metadata(const ImageDeviceFeatures &features, ImageMetaData &metadata) final;
37
38 bool load_pixels(const ImageMetaData &metadata,
39 void *pixels,
40 const size_t pixels_size,
41 const bool associate_alpha) final;
42
43 string name() const override;
44
45 bool equals(const ImageLoader &other) const override;
46
47 void cleanup() override;
48
49 bool is_vdb_loader() const override;
50
51#ifdef WITH_OPENVDB
52 openvdb::GridBase::ConstPtr get_grid();
53#endif
54
55 protected:
56 virtual void load_grid() {}
57
58 void grid_from_dense_voxels(const size_t width,
59 const size_t height,
60 const size_t depth,
61 const int channels,
62 const float *voxels,
63 Transform transform_3d);
64
65 string grid_name;
66 float clipping = 0.001f;
67#ifdef WITH_OPENVDB
68 openvdb::GridBase::ConstPtr grid;
69 openvdb::CoordBBox bbox;
70#endif
71#ifdef WITH_NANOVDB
72 nanovdb::GridHandle<> nanogrid;
73 int precision = 16;
74#endif
75};
76
bool load_pixels(const ImageMetaData &metadata, void *pixels, const size_t pixels_size, const bool associate_alpha) final
bool equals(const ImageLoader &other) const override
string grid_name
Definition image_vdb.h:65
bool load_metadata(const ImageDeviceFeatures &features, ImageMetaData &metadata) final
Definition image_vdb.cpp:34
~VDBImageLoader() override
void cleanup() override
void grid_from_dense_voxels(const size_t width, const size_t height, const size_t depth, const int channels, const float *voxels, Transform transform_3d)
bool is_vdb_loader() const override
VDBImageLoader(const string &grid_name, const float clipping=0.001f)
Definition image_vdb.cpp:27
virtual void load_grid()
Definition image_vdb.h:56
string name() const override
#define CCL_NAMESPACE_END