Blender V4.5
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
23
25 public:
26#ifdef WITH_OPENVDB
27 VDBImageLoader(openvdb::GridBase::ConstPtr grid_, const string &grid_name);
28#endif
29 VDBImageLoader(const string &grid_name);
30 ~VDBImageLoader() override;
31
32 bool load_metadata(const ImageDeviceFeatures &features, ImageMetaData &metadata) override;
33
34 bool load_pixels(const ImageMetaData &metadata,
35 void *pixels,
36 const size_t pixels_size,
37 const bool associate_alpha) override;
38
39 string name() const override;
40
41 bool equals(const ImageLoader &other) const override;
42
43 void cleanup() override;
44
45 bool is_vdb_loader() const override;
46
47#ifdef WITH_OPENVDB
48 openvdb::GridBase::ConstPtr get_grid();
49#endif
50
51 protected:
52 string grid_name;
53#ifdef WITH_OPENVDB
54 openvdb::GridBase::ConstPtr grid;
55 openvdb::CoordBBox bbox;
56#endif
57#ifdef WITH_NANOVDB
58 nanovdb::GridHandle<> nanogrid;
59 int precision = 0;
60#endif
61};
62
VDBImageLoader(const string &grid_name)
bool equals(const ImageLoader &other) const override
string grid_name
Definition image_vdb.h:52
~VDBImageLoader() override
bool load_metadata(const ImageDeviceFeatures &features, ImageMetaData &metadata) override
void cleanup() override
bool is_vdb_loader() const override
string name() const override
bool load_pixels(const ImageMetaData &metadata, void *pixels, const size_t pixels_size, const bool associate_alpha) override
#define CCL_NAMESPACE_END