14#ifndef NANOVDB_PNANOVDB_WRITE_H_HAS_BEEN_INCLUDED
15#define NANOVDB_PNANOVDB_WRITE_H_HAS_BEEN_INCLUDED
17#if defined(PNANOVDB_BUF_C)
18#if defined(PNANOVDB_ADDRESS_32)
19PNANOVDB_BUF_FORCE_INLINE
void pnanovdb_buf_write_uint32(pnanovdb_buf_t buf, uint32_t byte_offset, uint32_t value)
21 uint32_t wordaddress = (byte_offset >> 2u);
22#ifdef PNANOVDB_BUF_BOUNDS_CHECK
23 if (wordaddress < buf.size_in_words)
25 buf.data[wordaddress] = value;
28 buf.data[wordaddress] = value;
31PNANOVDB_BUF_FORCE_INLINE
void pnanovdb_buf_write_uint64(pnanovdb_buf_t buf, uint32_t byte_offset, uint64_t value)
34 uint32_t wordaddress64 = (byte_offset >> 3u);
35#ifdef PNANOVDB_BUF_BOUNDS_CHECK
36 uint64_t size_in_words64 = buf.size_in_words >> 1u;
37 if (wordaddress64 < size_in_words64)
39 data64[wordaddress64] = value;
42 data64[wordaddress64] = value;
45#elif defined(PNANOVDB_ADDRESS_64)
46PNANOVDB_BUF_FORCE_INLINE
void pnanovdb_buf_write_uint32(pnanovdb_buf_t buf, uint64_t byte_offset, uint32_t value)
48 uint64_t wordaddress = (byte_offset >> 2u);
49#ifdef PNANOVDB_BUF_BOUNDS_CHECK
50 if (wordaddress < buf.size_in_words)
52 buf.data[wordaddress] = value;
55 buf.data[wordaddress] = value;
58PNANOVDB_BUF_FORCE_INLINE
void pnanovdb_buf_write_uint64(pnanovdb_buf_t buf, uint64_t byte_offset, uint64_t value)
61 uint64_t wordaddress64 = (byte_offset >> 3u);
62#ifdef PNANOVDB_BUF_BOUNDS_CHECK
63 uint64_t size_in_words64 = buf.size_in_words >> 1u;
64 if (wordaddress64 < size_in_words64)
66 data64[wordaddress64] = value;
69 data64[wordaddress64] = value;
75#if defined(PNANOVDB_C)
76PNANOVDB_FORCE_INLINE pnanovdb_uint32_t pnanovdb_float_as_uint32(
float v) {
return *((pnanovdb_uint32_t*)(&v)); }
77PNANOVDB_FORCE_INLINE pnanovdb_uint64_t pnanovdb_double_as_uint64(
double v) {
return *((pnanovdb_uint64_t*)(&v)); }
78#elif defined(PNANOVDB_HLSL)
79PNANOVDB_FORCE_INLINE pnanovdb_uint32_t pnanovdb_float_as_uint32(
float v) {
return asuint(v); }
80PNANOVDB_FORCE_INLINE pnanovdb_uint64_t pnanovdb_double_as_uint64(
double v) { uint2 ret; asuint(v, ret.x, ret.y);
return ret; }
81#elif defined(PNANOVDB_GLSL)
82PNANOVDB_FORCE_INLINE pnanovdb_uint32_t pnanovdb_float_as_uint32(
float v) {
return floatBitsToUint(v); }
83PNANOVDB_FORCE_INLINE pnanovdb_uint64_t pnanovdb_double_as_uint64(
double v) {
return unpackDouble2x32(v); }
86PNANOVDB_FORCE_INLINE
void pnanovdb_write_uint32(pnanovdb_buf_t buf, pnanovdb_address_t address, pnanovdb_uint32_t value)
88 pnanovdb_buf_write_uint32(buf, address.byte_offset, value);
90PNANOVDB_FORCE_INLINE
void pnanovdb_write_uint64(pnanovdb_buf_t buf, pnanovdb_address_t address, pnanovdb_uint64_t value)
92 pnanovdb_buf_write_uint64(buf, address.byte_offset, value);
94PNANOVDB_FORCE_INLINE
void pnanovdb_write_int32(pnanovdb_buf_t buf, pnanovdb_address_t address, pnanovdb_int32_t value)
96 pnanovdb_write_uint32(buf, address, pnanovdb_int32_as_uint32(value));
98PNANOVDB_FORCE_INLINE
void pnanovdb_write_int64(pnanovdb_buf_t buf, pnanovdb_address_t address, pnanovdb_int64_t value)
100 pnanovdb_buf_write_uint64(buf, address.byte_offset, pnanovdb_int64_as_uint64(value));
102PNANOVDB_FORCE_INLINE
void pnanovdb_write_float(pnanovdb_buf_t buf, pnanovdb_address_t address,
float value)
104 pnanovdb_write_uint32(buf, address, pnanovdb_float_as_uint32(value));
106PNANOVDB_FORCE_INLINE
void pnanovdb_write_double(pnanovdb_buf_t buf, pnanovdb_address_t address,
double value)
108 pnanovdb_write_uint64(buf, address, pnanovdb_double_as_uint64(value));
110PNANOVDB_FORCE_INLINE
void pnanovdb_write_coord(pnanovdb_buf_t buf, pnanovdb_address_t address, PNANOVDB_IN(pnanovdb_coord_t) value)
112 pnanovdb_write_uint32(buf, pnanovdb_address_offset(address, 0u), pnanovdb_int32_as_uint32(PNANOVDB_DEREF(value).x));
113 pnanovdb_write_uint32(buf, pnanovdb_address_offset(address, 4u), pnanovdb_int32_as_uint32(PNANOVDB_DEREF(value).y));
114 pnanovdb_write_uint32(buf, pnanovdb_address_offset(address, 8u), pnanovdb_int32_as_uint32(PNANOVDB_DEREF(value).z));
117PNANOVDB_FORCE_INLINE
void pnanovdb_tree_set_node_offset_leaf(pnanovdb_buf_t buf,
pnanovdb_tree_handle_t p, pnanovdb_uint64_t node_offset_leaf) {
118 pnanovdb_write_uint64(buf, pnanovdb_address_offset(p.address, PNANOVDB_TREE_OFF_NODE_OFFSET_LEAF), node_offset_leaf);
120PNANOVDB_FORCE_INLINE
void pnanovdb_tree_set_node_offset_lower(pnanovdb_buf_t buf,
pnanovdb_tree_handle_t p, pnanovdb_uint64_t node_offset_lower) {
121 pnanovdb_write_uint64(buf, pnanovdb_address_offset(p.address, PNANOVDB_TREE_OFF_NODE_OFFSET_LOWER), node_offset_lower);
123PNANOVDB_FORCE_INLINE
void pnanovdb_tree_set_node_offset_upper(pnanovdb_buf_t buf,
pnanovdb_tree_handle_t p, pnanovdb_uint64_t node_offset_upper) {
124 pnanovdb_write_uint64(buf, pnanovdb_address_offset(p.address, PNANOVDB_TREE_OFF_NODE_OFFSET_UPPER), node_offset_upper);
126PNANOVDB_FORCE_INLINE
void pnanovdb_tree_set_node_offset_root(pnanovdb_buf_t buf,
pnanovdb_tree_handle_t p, pnanovdb_uint64_t node_offset_root) {
127 pnanovdb_write_uint64(buf, pnanovdb_address_offset(p.address, PNANOVDB_TREE_OFF_NODE_OFFSET_ROOT), node_offset_root);
129PNANOVDB_FORCE_INLINE
void pnanovdb_tree_set_node_count_leaf(pnanovdb_buf_t buf,
pnanovdb_tree_handle_t p, pnanovdb_uint32_t node_count_leaf) {
130 pnanovdb_write_uint32(buf, pnanovdb_address_offset(p.address, PNANOVDB_TREE_OFF_NODE_COUNT_LEAF), node_count_leaf);
132PNANOVDB_FORCE_INLINE
void pnanovdb_tree_set_node_count_lower(pnanovdb_buf_t buf,
pnanovdb_tree_handle_t p, pnanovdb_uint32_t node_count_lower) {
133 pnanovdb_write_uint32(buf, pnanovdb_address_offset(p.address, PNANOVDB_TREE_OFF_NODE_COUNT_LOWER), node_count_lower);
135PNANOVDB_FORCE_INLINE
void pnanovdb_tree_set_node_count_upper(pnanovdb_buf_t buf,
pnanovdb_tree_handle_t p, pnanovdb_uint32_t node_count_upper) {
136 pnanovdb_write_uint32(buf, pnanovdb_address_offset(p.address, PNANOVDB_TREE_OFF_NODE_COUNT_UPPER), node_count_upper);
138PNANOVDB_FORCE_INLINE
void pnanovdb_tree_set_tile_count_leaf(pnanovdb_buf_t buf,
pnanovdb_tree_handle_t p, pnanovdb_uint32_t tile_count_leaf) {
139 pnanovdb_write_uint32(buf, pnanovdb_address_offset(p.address, PNANOVDB_TREE_OFF_TILE_COUNT_LEAF), tile_count_leaf);
141PNANOVDB_FORCE_INLINE
void pnanovdb_tree_set_tile_count_lower(pnanovdb_buf_t buf,
pnanovdb_tree_handle_t p, pnanovdb_uint32_t tile_count_lower) {
142 pnanovdb_write_uint32(buf, pnanovdb_address_offset(p.address, PNANOVDB_TREE_OFF_TILE_COUNT_LOWER), tile_count_lower);
144PNANOVDB_FORCE_INLINE
void pnanovdb_tree_set_tile_count_upper(pnanovdb_buf_t buf,
pnanovdb_tree_handle_t p, pnanovdb_uint32_t tile_count_upper) {
145 pnanovdb_write_uint32(buf, pnanovdb_address_offset(p.address, PNANOVDB_TREE_OFF_TILE_COUNT_UPPER), tile_count_upper);
147PNANOVDB_FORCE_INLINE
void pnanovdb_tree_set_voxel_count(pnanovdb_buf_t buf,
pnanovdb_tree_handle_t p, pnanovdb_uint64_t voxel_count) {
148 pnanovdb_write_uint64(buf, pnanovdb_address_offset(p.address, PNANOVDB_TREE_OFF_VOXEL_COUNT), voxel_count);
151PNANOVDB_FORCE_INLINE
void pnanovdb_root_set_bbox_min(pnanovdb_buf_t buf,
pnanovdb_root_handle_t p, PNANOVDB_IN(pnanovdb_coord_t) bbox_min) {
152 pnanovdb_write_coord(buf, pnanovdb_address_offset(p.address, PNANOVDB_ROOT_OFF_BBOX_MIN), bbox_min);
154PNANOVDB_FORCE_INLINE
void pnanovdb_root_set_bbox_max(pnanovdb_buf_t buf,
pnanovdb_root_handle_t p, PNANOVDB_IN(pnanovdb_coord_t) bbox_max) {
155 pnanovdb_write_coord(buf, pnanovdb_address_offset(p.address, PNANOVDB_ROOT_OFF_BBOX_MAX), bbox_max);
157PNANOVDB_FORCE_INLINE
void pnanovdb_root_set_tile_count(pnanovdb_buf_t buf,
pnanovdb_root_handle_t p, pnanovdb_uint32_t tile_count) {
158 pnanovdb_write_uint32(buf, pnanovdb_address_offset(p.address, PNANOVDB_ROOT_OFF_TABLE_SIZE), tile_count);
162 pnanovdb_write_uint64(buf, pnanovdb_address_offset(p.address, PNANOVDB_ROOT_TILE_OFF_KEY), key);
164PNANOVDB_FORCE_INLINE
void pnanovdb_root_tile_set_child(pnanovdb_buf_t buf,
pnanovdb_root_tile_handle_t p, pnanovdb_int64_t child) {
165 pnanovdb_write_int64(buf, pnanovdb_address_offset(p.address, PNANOVDB_ROOT_TILE_OFF_CHILD), child);
167PNANOVDB_FORCE_INLINE
void pnanovdb_root_tile_set_state(pnanovdb_buf_t buf,
pnanovdb_root_tile_handle_t p, pnanovdb_uint32_t state) {
168 pnanovdb_write_uint32(buf, pnanovdb_address_offset(p.address, PNANOVDB_ROOT_TILE_OFF_STATE), state);
171PNANOVDB_FORCE_INLINE
void pnanovdb_upper_set_bbox_min(pnanovdb_buf_t buf,
pnanovdb_upper_handle_t p, PNANOVDB_IN(pnanovdb_coord_t) bbox_min) {
172 pnanovdb_write_coord(buf, pnanovdb_address_offset(p.address, PNANOVDB_UPPER_OFF_BBOX_MIN), bbox_min);
174PNANOVDB_FORCE_INLINE
void pnanovdb_upper_set_bbox_max(pnanovdb_buf_t buf,
pnanovdb_upper_handle_t p, PNANOVDB_IN(pnanovdb_coord_t) bbox_max) {
175 pnanovdb_write_coord(buf, pnanovdb_address_offset(p.address, PNANOVDB_UPPER_OFF_BBOX_MAX), bbox_max);
177PNANOVDB_FORCE_INLINE
void pnanovdb_upper_set_child_mask(pnanovdb_buf_t buf,
pnanovdb_upper_handle_t p, pnanovdb_uint32_t bit_index, pnanovdb_bool_t value) {
178 pnanovdb_address_t addr = pnanovdb_address_offset(p.address, PNANOVDB_UPPER_OFF_CHILD_MASK + 4u * (bit_index >> 5u));
179 pnanovdb_uint32_t valueMask = pnanovdb_read_uint32(buf, addr);
180 if (!value) { valueMask &= ~(1u << (bit_index & 31u)); }
181 if (value) valueMask |= (1u << (bit_index & 31u));
182 pnanovdb_write_uint32(buf, addr, valueMask);
184PNANOVDB_FORCE_INLINE
void pnanovdb_upper_set_table_child(pnanovdb_grid_type_t grid_type, pnanovdb_buf_t buf,
pnanovdb_upper_handle_t node, pnanovdb_uint32_t n, pnanovdb_int64_t child)
186 pnanovdb_address_t bufAddress = pnanovdb_upper_get_table_address(grid_type, buf, node, n);
187 pnanovdb_write_int64(buf, bufAddress, child);
190PNANOVDB_FORCE_INLINE
void pnanovdb_lower_set_bbox_min(pnanovdb_buf_t buf,
pnanovdb_lower_handle_t p, PNANOVDB_IN(pnanovdb_coord_t) bbox_min) {
191 pnanovdb_write_coord(buf, pnanovdb_address_offset(p.address, PNANOVDB_LOWER_OFF_BBOX_MIN), bbox_min);
193PNANOVDB_FORCE_INLINE
void pnanovdb_lower_set_bbox_max(pnanovdb_buf_t buf,
pnanovdb_lower_handle_t p, PNANOVDB_IN(pnanovdb_coord_t) bbox_max) {
194 pnanovdb_write_coord(buf, pnanovdb_address_offset(p.address, PNANOVDB_LOWER_OFF_BBOX_MAX), bbox_max);
196PNANOVDB_FORCE_INLINE
void pnanovdb_lower_set_child_mask(pnanovdb_buf_t buf,
pnanovdb_lower_handle_t p, pnanovdb_uint32_t bit_index, pnanovdb_bool_t value) {
197 pnanovdb_address_t addr = pnanovdb_address_offset(p.address, PNANOVDB_LOWER_OFF_CHILD_MASK + 4u * (bit_index >> 5u));
198 pnanovdb_uint32_t valueMask = pnanovdb_read_uint32(buf, addr);
199 if (!value) { valueMask &= ~(1u << (bit_index & 31u)); }
200 if (value) valueMask |= (1u << (bit_index & 31u));
201 pnanovdb_write_uint32(buf, addr, valueMask);
203PNANOVDB_FORCE_INLINE
void pnanovdb_lower_set_table_child(pnanovdb_grid_type_t grid_type, pnanovdb_buf_t buf,
pnanovdb_lower_handle_t node, pnanovdb_uint32_t n, pnanovdb_int64_t child)
205 pnanovdb_address_t table_address = pnanovdb_lower_get_table_address(grid_type, buf, node, n);
206 pnanovdb_write_int64(buf, table_address, child);
209PNANOVDB_FORCE_INLINE
void pnanovdb_leaf_set_bbox_min(pnanovdb_buf_t buf,
pnanovdb_leaf_handle_t p, PNANOVDB_IN(pnanovdb_coord_t) bbox_min) {
210 pnanovdb_write_coord(buf, pnanovdb_address_offset(p.address, PNANOVDB_LEAF_OFF_BBOX_MIN), bbox_min);
212PNANOVDB_FORCE_INLINE
void pnanovdb_leaf_set_bbox_dif_and_flags(pnanovdb_buf_t buf,
pnanovdb_leaf_handle_t p, pnanovdb_uint32_t bbox_dif_and_flags) {
213 pnanovdb_write_uint32(buf, pnanovdb_address_offset(p.address, PNANOVDB_LEAF_OFF_BBOX_DIF_AND_FLAGS), bbox_dif_and_flags);
216PNANOVDB_FORCE_INLINE
void pnanovdb_map_set_matf(pnanovdb_buf_t buf,
pnanovdb_map_handle_t p, pnanovdb_uint32_t index,
float matf) {
217 pnanovdb_write_float(buf, pnanovdb_address_offset(p.address, PNANOVDB_MAP_OFF_MATF + 4u * index), matf);
219PNANOVDB_FORCE_INLINE
void pnanovdb_map_set_invmatf(pnanovdb_buf_t buf,
pnanovdb_map_handle_t p, pnanovdb_uint32_t index,
float invmatf) {
220 pnanovdb_write_float(buf, pnanovdb_address_offset(p.address, PNANOVDB_MAP_OFF_INVMATF + 4u * index), invmatf);
222PNANOVDB_FORCE_INLINE
void pnanovdb_map_set_vecf(pnanovdb_buf_t buf,
pnanovdb_map_handle_t p, pnanovdb_uint32_t index,
float vecf) {
223 pnanovdb_write_float(buf, pnanovdb_address_offset(p.address, PNANOVDB_MAP_OFF_VECF + 4u * index), vecf);
225PNANOVDB_FORCE_INLINE
void pnanovdb_map_set_taperf(pnanovdb_buf_t buf,
pnanovdb_map_handle_t p, pnanovdb_uint32_t index,
float taperf) {
226 pnanovdb_write_float(buf, pnanovdb_address_offset(p.address, PNANOVDB_MAP_OFF_TAPERF), taperf);
228PNANOVDB_FORCE_INLINE
void pnanovdb_map_set_matd(pnanovdb_buf_t buf,
pnanovdb_map_handle_t p, pnanovdb_uint32_t index,
double matd) {
229 pnanovdb_write_double(buf, pnanovdb_address_offset(p.address, PNANOVDB_MAP_OFF_MATD + 8u * index), matd);
231PNANOVDB_FORCE_INLINE
void pnanovdb_map_set_invmatd(pnanovdb_buf_t buf,
pnanovdb_map_handle_t p, pnanovdb_uint32_t index,
double invmatd) {
232 pnanovdb_write_double(buf, pnanovdb_address_offset(p.address, PNANOVDB_MAP_OFF_INVMATD + 8u * index), invmatd);
234PNANOVDB_FORCE_INLINE
void pnanovdb_map_set_vecd(pnanovdb_buf_t buf,
pnanovdb_map_handle_t p, pnanovdb_uint32_t index,
double vecd) {
235 pnanovdb_write_double(buf, pnanovdb_address_offset(p.address, PNANOVDB_MAP_OFF_VECD + 8u * index), vecd);
237PNANOVDB_FORCE_INLINE
void pnanovdb_map_set_taperd(pnanovdb_buf_t buf,
pnanovdb_map_handle_t p, pnanovdb_uint32_t index,
double taperd) {
238 pnanovdb_write_double(buf, pnanovdb_address_offset(p.address, PNANOVDB_MAP_OFF_TAPERD), taperd);
241PNANOVDB_FORCE_INLINE
void pnanovdb_grid_set_magic(pnanovdb_buf_t buf,
pnanovdb_grid_handle_t p, pnanovdb_uint64_t magic) {
242 pnanovdb_write_uint64(buf, pnanovdb_address_offset(p.address, PNANOVDB_GRID_OFF_MAGIC), magic);
244PNANOVDB_FORCE_INLINE
void pnanovdb_grid_set_checksum(pnanovdb_buf_t buf,
pnanovdb_grid_handle_t p, pnanovdb_uint64_t checksum) {
245 pnanovdb_write_uint64(buf, pnanovdb_address_offset(p.address, PNANOVDB_GRID_OFF_CHECKSUM), checksum);
247PNANOVDB_FORCE_INLINE
void pnanovdb_grid_set_version(pnanovdb_buf_t buf,
pnanovdb_grid_handle_t p, pnanovdb_uint32_t version) {
248 pnanovdb_write_uint32(buf, pnanovdb_address_offset(p.address, PNANOVDB_GRID_OFF_VERSION), version);
250PNANOVDB_FORCE_INLINE
void pnanovdb_grid_set_flags(pnanovdb_buf_t buf,
pnanovdb_grid_handle_t p, pnanovdb_uint32_t flags) {
251 pnanovdb_write_uint32(buf, pnanovdb_address_offset(p.address, PNANOVDB_GRID_OFF_FLAGS), flags);
253PNANOVDB_FORCE_INLINE
void pnanovdb_grid_get_grid_index(pnanovdb_buf_t buf,
pnanovdb_grid_handle_t p, pnanovdb_uint32_t grid_index) {
254 pnanovdb_write_uint32(buf, pnanovdb_address_offset(p.address, PNANOVDB_GRID_OFF_GRID_INDEX), grid_index);
256PNANOVDB_FORCE_INLINE
void pnanovdb_grid_get_grid_count(pnanovdb_buf_t buf,
pnanovdb_grid_handle_t p, pnanovdb_uint32_t grid_count) {
257 pnanovdb_write_uint32(buf, pnanovdb_address_offset(p.address, PNANOVDB_GRID_OFF_GRID_COUNT), grid_count);
259PNANOVDB_FORCE_INLINE
void pnanovdb_grid_set_grid_size(pnanovdb_buf_t buf,
pnanovdb_grid_handle_t p, pnanovdb_uint64_t grid_size) {
260 pnanovdb_write_uint64(buf, pnanovdb_address_offset(p.address, PNANOVDB_GRID_OFF_GRID_SIZE), grid_size);
262PNANOVDB_FORCE_INLINE
void pnanovdb_grid_set_grid_name(pnanovdb_buf_t buf,
pnanovdb_grid_handle_t p, pnanovdb_uint32_t index, pnanovdb_uint32_t grid_name) {
263 pnanovdb_write_uint32(buf, pnanovdb_address_offset(p.address, PNANOVDB_GRID_OFF_GRID_NAME + 4u * index), grid_name);
265PNANOVDB_FORCE_INLINE
void pnanovdb_grid_set_world_bbox(pnanovdb_buf_t buf,
pnanovdb_grid_handle_t p, pnanovdb_uint32_t index,
double world_bbox) {
266 pnanovdb_write_double(buf, pnanovdb_address_offset(p.address, PNANOVDB_GRID_OFF_WORLD_BBOX + 8u * index), world_bbox);
268PNANOVDB_FORCE_INLINE
void pnanovdb_grid_set_voxel_size(pnanovdb_buf_t buf,
pnanovdb_grid_handle_t p, pnanovdb_uint32_t index,
double voxel_size) {
269 pnanovdb_write_double(buf, pnanovdb_address_offset(p.address, PNANOVDB_GRID_OFF_VOXEL_SIZE + 8u * index), voxel_size);
271PNANOVDB_FORCE_INLINE
void pnanovdb_grid_set_grid_class(pnanovdb_buf_t buf,
pnanovdb_grid_handle_t p, pnanovdb_uint32_t grid_class) {
272 pnanovdb_write_uint32(buf, pnanovdb_address_offset(p.address, PNANOVDB_GRID_OFF_GRID_CLASS), grid_class);
274PNANOVDB_FORCE_INLINE
void pnanovdb_grid_set_grid_type(pnanovdb_buf_t buf,
pnanovdb_grid_handle_t p, pnanovdb_uint32_t grid_type) {
275 pnanovdb_write_uint32(buf, pnanovdb_address_offset(p.address, PNANOVDB_GRID_OFF_GRID_TYPE), grid_type);
277PNANOVDB_FORCE_INLINE
void pnanovdb_grid_set_blind_metadata_offset(pnanovdb_buf_t buf,
pnanovdb_grid_handle_t p, pnanovdb_uint64_t blind_metadata_offset) {
278 pnanovdb_write_uint64(buf, pnanovdb_address_offset(p.address, PNANOVDB_GRID_OFF_BLIND_METADATA_OFFSET), blind_metadata_offset);
280PNANOVDB_FORCE_INLINE
void pnanovdb_grid_set_blind_metadata_count(pnanovdb_buf_t buf,
pnanovdb_grid_handle_t p, pnanovdb_uint32_t metadata_count) {
281 pnanovdb_write_uint32(buf, pnanovdb_address_offset(p.address, PNANOVDB_GRID_OFF_BLIND_METADATA_COUNT), metadata_count);
284PNANOVDB_FORCE_INLINE pnanovdb_uint32_t pnanovdb_make_version(pnanovdb_uint32_t major, pnanovdb_uint32_t minor, pnanovdb_uint32_t patch)
286 return (major << 21u) | (minor << 10u) | (patch);
GLM_FUNC_DECL uint floatBitsToUint(float const &v)
Definition func_common.inl:684
GLM_FUNC_QUALIFIER uvec2 unpackDouble2x32(double v)
Definition func_packing.inl:143
uint64 uint64_t
Definition fwd.hpp:145
uint32 uint32_t
Definition fwd.hpp:131
Definition PNanoVDB.h:758
Definition PNanoVDB.h:1099
Definition PNanoVDB.h:1060
Definition PNanoVDB.h:699
Definition PNanoVDB.h:961
Definition PNanoVDB.h:989
Definition PNanoVDB.h:901
Definition PNanoVDB.h:1019