14#ifndef NANOVDB_PNANOVDB_H_HAS_BEEN_INCLUDED
15#define NANOVDB_PNANOVDB_H_HAS_BEEN_INCLUDED
27#if defined(PNANOVDB_C)
28#ifndef PNANOVDB_ADDRESS_32
29#define PNANOVDB_ADDRESS_64
31#elif defined(PNANOVDB_HLSL)
32#ifndef PNANOVDB_ADDRESS_64
33#define PNANOVDB_ADDRESS_32
35#elif defined(PNANOVDB_GLSL)
36#ifndef PNANOVDB_ADDRESS_64
37#define PNANOVDB_ADDRESS_32
45#if defined(PNANOVDB_C)
52#elif defined(PNANOVDB_HLSL)
54#elif defined(PNANOVDB_GLSL)
66#if defined(PNANOVDB_BUF_CUSTOM)
68#elif defined(PNANOVDB_C)
70#elif defined(PNANOVDB_HLSL)
71#define PNANOVDB_BUF_HLSL
72#elif defined(PNANOVDB_GLSL)
73#define PNANOVDB_BUF_GLSL
76#if defined(PNANOVDB_BUF_C)
80#if defined(__CUDACC__)
81#define PNANOVDB_BUF_FORCE_INLINE static __host__ __device__ __forceinline__
83#define PNANOVDB_BUF_FORCE_INLINE static inline __forceinline
85#define PNANOVDB_BUF_FORCE_INLINE static inline __attribute__((always_inline))
87typedef struct pnanovdb_buf_t
90#ifdef PNANOVDB_BUF_BOUNDS_CHECK
91 uint64_t size_in_words;
94PNANOVDB_BUF_FORCE_INLINE pnanovdb_buf_t pnanovdb_make_buf(uint32_t* data, uint64_t size_in_words)
98#ifdef PNANOVDB_BUF_BOUNDS_CHECK
99 ret.size_in_words = size_in_words;
105#if defined(PNANOVDB_ADDRESS_32)
106PNANOVDB_BUF_FORCE_INLINE uint32_t pnanovdb_buf_read_uint32(pnanovdb_buf_t buf, uint32_t byte_offset)
108 uint32_t wordaddress = (byte_offset >> 2u);
109#ifdef PNANOVDB_BUF_BOUNDS_CHECK
110 return wordaddress < buf.size_in_words ? buf.data[wordaddress] : 0u;
112 return buf.data[wordaddress];
115PNANOVDB_BUF_FORCE_INLINE uint64_t pnanovdb_buf_read_uint64(pnanovdb_buf_t buf, uint32_t byte_offset)
117 uint64_t* data64 = (uint64_t*)buf.data;
118 uint32_t wordaddress64 = (byte_offset >> 3u);
119#ifdef PNANOVDB_BUF_BOUNDS_CHECK
120 uint64_t size_in_words64 = buf.size_in_words >> 1u;
121 return wordaddress64 < size_in_words64 ? data64[wordaddress64] : 0llu;
123 return data64[wordaddress64];
126PNANOVDB_BUF_FORCE_INLINE
void pnanovdb_buf_write_uint32(pnanovdb_buf_t buf, uint32_t byte_offset, uint32_t value)
128 uint32_t wordaddress = (byte_offset >> 2u);
129#ifdef PNANOVDB_BUF_BOUNDS_CHECK
130 if (wordaddress < buf.size_in_words)
132 buf.data[wordaddress] = value;
135 buf.data[wordaddress] = value;
138PNANOVDB_BUF_FORCE_INLINE
void pnanovdb_buf_write_uint64(pnanovdb_buf_t buf, uint32_t byte_offset, uint64_t value)
140 uint64_t* data64 = (uint64_t*)buf.data;
141 uint32_t wordaddress64 = (byte_offset >> 3u);
142#ifdef PNANOVDB_BUF_BOUNDS_CHECK
143 uint64_t size_in_words64 = buf.size_in_words >> 1u;
144 if (wordaddress64 < size_in_words64)
146 data64[wordaddress64] = value;
149 data64[wordaddress64] = value;
152#elif defined(PNANOVDB_ADDRESS_64)
153PNANOVDB_BUF_FORCE_INLINE uint32_t pnanovdb_buf_read_uint32(pnanovdb_buf_t buf, uint64_t byte_offset)
155 uint64_t wordaddress = (byte_offset >> 2u);
156#ifdef PNANOVDB_BUF_BOUNDS_CHECK
157 return wordaddress < buf.size_in_words ? buf.data[wordaddress] : 0u;
159 return buf.data[wordaddress];
162PNANOVDB_BUF_FORCE_INLINE uint64_t pnanovdb_buf_read_uint64(pnanovdb_buf_t buf, uint64_t byte_offset)
164 uint64_t* data64 = (uint64_t*)buf.data;
165 uint64_t wordaddress64 = (byte_offset >> 3u);
166#ifdef PNANOVDB_BUF_BOUNDS_CHECK
167 uint64_t size_in_words64 = buf.size_in_words >> 1u;
168 return wordaddress64 < size_in_words64 ? data64[wordaddress64] : 0llu;
170 return data64[wordaddress64];
173PNANOVDB_BUF_FORCE_INLINE
void pnanovdb_buf_write_uint32(pnanovdb_buf_t buf, uint64_t byte_offset, uint32_t value)
175 uint64_t wordaddress = (byte_offset >> 2u);
176#ifdef PNANOVDB_BUF_BOUNDS_CHECK
177 if (wordaddress < buf.size_in_words)
179 buf.data[wordaddress] = value;
182 buf.data[wordaddress] = value;
185PNANOVDB_BUF_FORCE_INLINE
void pnanovdb_buf_write_uint64(pnanovdb_buf_t buf, uint64_t byte_offset, uint64_t value)
187 uint64_t* data64 = (uint64_t*)buf.data;
188 uint64_t wordaddress64 = (byte_offset >> 3u);
189#ifdef PNANOVDB_BUF_BOUNDS_CHECK
190 uint64_t size_in_words64 = buf.size_in_words >> 1u;
191 if (wordaddress64 < size_in_words64)
193 data64[wordaddress64] = value;
196 data64[wordaddress64] = value;
200typedef uint32_t pnanovdb_grid_type_t;
201#define PNANOVDB_GRID_TYPE_GET(grid_typeIn, nameIn) pnanovdb_grid_type_constants[grid_typeIn].nameIn
202#elif defined(PNANOVDB_BUF_HLSL)
203#if defined(PNANOVDB_BUF_HLSL_RW)
204#if defined(PNANOVDB_BUF_HLSL_64)
205#define pnanovdb_buf_t RWStructuredBuffer<uint2>
207#define pnanovdb_buf_t RWStructuredBuffer<uint>
210#if defined(PNANOVDB_BUF_HLSL_64)
211#define pnanovdb_buf_t StructuredBuffer<uint2>
213#define pnanovdb_buf_t StructuredBuffer<uint>
216#if defined(PNANOVDB_ADDRESS_32)
217uint pnanovdb_buf_read_uint32(pnanovdb_buf_t buf, uint byte_offset)
219#if defined(PNANOVDB_BUF_HLSL_64)
220 uint2 val = buf[(byte_offset >> 3u)];
221 return ((byte_offset & 4u) == 0u) ? val.x : val.y;
223 return buf[(byte_offset >> 2u)];
226uint2 pnanovdb_buf_read_uint64(pnanovdb_buf_t buf, uint byte_offset)
229#if defined(PNANOVDB_BUF_HLSL_64)
230 ret = buf[(byte_offset >> 3u)];
232 ret.x = pnanovdb_buf_read_uint32(buf, byte_offset + 0u);
233 ret.y = pnanovdb_buf_read_uint32(buf, byte_offset + 4u);
237void pnanovdb_buf_write_uint32(pnanovdb_buf_t buf, uint byte_offset, uint value)
240#if defined(PNANOVDB_BUF_HLSL_RW)
241#if defined(PNANOVDB_BUF_HLSL_64)
242 if ((byte_offset & 4u) == 0u) {buf[(byte_offset >> 3u)].x = value;}
243 else {buf[(byte_offset >> 3u)].y = value;}
245 buf[(byte_offset >> 2u)] = value;
249void pnanovdb_buf_write_uint64(pnanovdb_buf_t buf, uint byte_offset, uint2 value)
252#if defined(PNANOVDB_BUF_HLSL_RW)
253#if defined(PNANOVDB_BUF_HLSL_64)
254 buf[(byte_offset >> 3u)] = value;
256 pnanovdb_buf_write_uint32(buf, byte_offset + 0u, value.x);
257 pnanovdb_buf_write_uint32(buf, byte_offset + 4u, value.y);
261#elif defined(PNANOVDB_ADDRESS_64)
262uint pnanovdb_buf_read_uint32(pnanovdb_buf_t buf, uint64_t byte_offset)
264#if defined(PNANOVDB_BUF_HLSL_64)
265 uint2 val = buf[uint(byte_offset >> 3u)];
266 return ((uint(byte_offset) & 4u) == 0u) ? val.x : val.y;
268 return buf[uint(byte_offset >> 2u)];
271uint64_t pnanovdb_buf_read_uint64(pnanovdb_buf_t buf, uint64_t byte_offset)
274#if defined(PNANOVDB_BUF_HLSL_64)
275 uint2 raw = buf[uint(byte_offset >> 3u)];
276 ret = uint64_t(raw.x) | (uint64_t(raw.y) << 32u);
278 ret = pnanovdb_buf_read_uint32(buf, byte_offset + 0u);
279 ret = ret | (uint64_t(pnanovdb_buf_read_uint32(buf, byte_offset + 4u)) << 32u);
283void pnanovdb_buf_write_uint32(pnanovdb_buf_t buf, uint64_t byte_offset, uint value)
286#if defined(PNANOVDB_BUF_HLSL_RW)
287#if defined(PNANOVDB_BUF_HLSL_64)
288 if ((byte_offset & 4u) == 0u) {buf[uint(byte_offset >> 3u)].x = value;}
289 else {buf[uint(byte_offset >> 3u)].y = value;}
291 buf[uint(byte_offset >> 2u)] = value;
295void pnanovdb_buf_write_uint64(pnanovdb_buf_t buf, uint64_t byte_offset, uint64_t value)
298#if defined(PNANOVDB_BUF_HLSL_RW)
299#if defined(PNANOVDB_BUF_HLSL_64)
300 uint2 raw = uint2(uint(value), uint(value >> 32u));
301 buf[uint(byte_offset >> 3u)] = raw;
303 pnanovdb_buf_write_uint32(buf, byte_offset + 0u, uint(value));
304 pnanovdb_buf_write_uint32(buf, byte_offset + 4u, uint(value >> 32u));
309#define pnanovdb_grid_type_t uint
310#define PNANOVDB_GRID_TYPE_GET(grid_typeIn, nameIn) pnanovdb_grid_type_constants[grid_typeIn].nameIn
311#elif defined(PNANOVDB_BUF_GLSL)
316uint pnanovdb_buf_read_uint32(pnanovdb_buf_t buf, uint byte_offset)
318 return pnanovdb_buf_data[(byte_offset >> 2u)];
320uvec2 pnanovdb_buf_read_uint64(pnanovdb_buf_t buf, uint byte_offset)
323 ret.x = pnanovdb_buf_read_uint32(buf, byte_offset + 0u);
324 ret.y = pnanovdb_buf_read_uint32(buf, byte_offset + 4u);
327void pnanovdb_buf_write_uint32(pnanovdb_buf_t buf, uint byte_offset, uint value)
331void pnanovdb_buf_write_uint64(pnanovdb_buf_t buf, uint byte_offset, uvec2 value)
335#define pnanovdb_grid_type_t uint
336#define PNANOVDB_GRID_TYPE_GET(grid_typeIn, nameIn) pnanovdb_grid_type_constants[grid_typeIn].nameIn
342#if defined(PNANOVDB_C)
343#if defined(__CUDACC__)
344#define PNANOVDB_FORCE_INLINE static __host__ __device__ __forceinline__
346#define PNANOVDB_FORCE_INLINE static inline __forceinline
348#define PNANOVDB_FORCE_INLINE static inline __attribute__((always_inline))
350#elif defined(PNANOVDB_HLSL)
351#define PNANOVDB_FORCE_INLINE
352#elif defined(PNANOVDB_GLSL)
353#define PNANOVDB_FORCE_INLINE
357#if defined(PNANOVDB_C)
358#define PNANOVDB_UNUSED(X) (void)(X)
359#elif defined(PNANOVDB_HLSL)
360#define PNANOVDB_UNUSED(X)
361#elif defined(PNANOVDB_GLSL)
362#define PNANOVDB_UNUSED(X)
366#if defined(PNANOVDB_C)
367#define PNANOVDB_STRUCT_TYPEDEF(X) typedef struct X X;
368#if defined(__CUDA_ARCH__)
369#define PNANOVDB_STATIC_CONST constexpr __constant__
371#define PNANOVDB_STATIC_CONST static const
373#define PNANOVDB_INOUT(X) X*
374#define PNANOVDB_IN(X) const X*
375#define PNANOVDB_DEREF(X) (*X)
376#define PNANOVDB_REF(X) &X
377#elif defined(PNANOVDB_HLSL)
378#define PNANOVDB_STRUCT_TYPEDEF(X)
379#define PNANOVDB_STATIC_CONST static const
380#define PNANOVDB_INOUT(X) inout X
381#define PNANOVDB_IN(X) X
382#define PNANOVDB_DEREF(X) X
383#define PNANOVDB_REF(X) X
384#elif defined(PNANOVDB_GLSL)
385#define PNANOVDB_STRUCT_TYPEDEF(X)
386#define PNANOVDB_STATIC_CONST const
387#define PNANOVDB_INOUT(X) inout X
388#define PNANOVDB_IN(X) X
389#define PNANOVDB_DEREF(X) X
390#define PNANOVDB_REF(X) X
394#if defined(PNANOVDB_C)
395#define PNANOVDB_NATIVE_64
396#ifndef __CUDACC_RTC__
399#if !defined(PNANOVDB_MEMCPY_CUSTOM)
400#ifndef __CUDACC_RTC__
403#define pnanovdb_memcpy memcpy
405typedef uint32_t pnanovdb_uint32_t;
406typedef int32_t pnanovdb_int32_t;
407typedef int32_t pnanovdb_bool_t;
408#define PNANOVDB_FALSE 0
409#define PNANOVDB_TRUE 1
410typedef uint64_t pnanovdb_uint64_t;
411typedef int64_t pnanovdb_int64_t;
412typedef struct pnanovdb_coord_t
414 pnanovdb_int32_t x, y, z;
416typedef struct pnanovdb_vec3_t
420typedef struct pnanovdb_uvec4_t
422 pnanovdb_uint32_t x, y, z, w;
424typedef struct pnanovdb_ivec4_t
426 pnanovdb_int32_t x, y, z, w;
428typedef struct pnanovdb_vec4_t
432PNANOVDB_FORCE_INLINE pnanovdb_int32_t pnanovdb_uint32_as_int32(pnanovdb_uint32_t v) {
return (pnanovdb_int32_t)v; }
433PNANOVDB_FORCE_INLINE pnanovdb_int64_t pnanovdb_uint64_as_int64(pnanovdb_uint64_t v) {
return (pnanovdb_int64_t)v; }
434PNANOVDB_FORCE_INLINE pnanovdb_uint64_t pnanovdb_int64_as_uint64(pnanovdb_int64_t v) {
return (pnanovdb_uint64_t)v; }
435PNANOVDB_FORCE_INLINE pnanovdb_uint32_t pnanovdb_int32_as_uint32(pnanovdb_int32_t v) {
return (pnanovdb_uint32_t)v; }
436PNANOVDB_FORCE_INLINE
float pnanovdb_uint32_as_float(pnanovdb_uint32_t v) {
float vf; pnanovdb_memcpy(&vf, &v,
sizeof(vf));
return vf; }
437PNANOVDB_FORCE_INLINE pnanovdb_uint32_t pnanovdb_float_as_uint32(
float v) { pnanovdb_uint32_t vu; pnanovdb_memcpy(&vu, &v,
sizeof(vu));
return vu; }
438PNANOVDB_FORCE_INLINE
double pnanovdb_uint64_as_double(pnanovdb_uint64_t v) {
double vf; pnanovdb_memcpy(&vf, &v,
sizeof(vf));
return vf; }
439PNANOVDB_FORCE_INLINE pnanovdb_uint64_t pnanovdb_double_as_uint64(
double v) { pnanovdb_uint64_t vu; pnanovdb_memcpy(&vu, &v,
sizeof(vu));
return vu; }
440PNANOVDB_FORCE_INLINE pnanovdb_uint32_t pnanovdb_uint64_low(pnanovdb_uint64_t v) {
return (pnanovdb_uint32_t)v; }
441PNANOVDB_FORCE_INLINE pnanovdb_uint32_t pnanovdb_uint64_high(pnanovdb_uint64_t v) {
return (pnanovdb_uint32_t)(v >> 32u); }
442PNANOVDB_FORCE_INLINE pnanovdb_uint64_t pnanovdb_uint32_as_uint64(pnanovdb_uint32_t x, pnanovdb_uint32_t y) {
return ((pnanovdb_uint64_t)x) | (((pnanovdb_uint64_t)y) << 32u); }
443PNANOVDB_FORCE_INLINE pnanovdb_uint64_t pnanovdb_uint32_as_uint64_low(pnanovdb_uint32_t x) {
return ((pnanovdb_uint64_t)x); }
444PNANOVDB_FORCE_INLINE pnanovdb_int32_t pnanovdb_uint64_is_equal(pnanovdb_uint64_t a, pnanovdb_uint64_t b) {
return a == b; }
445PNANOVDB_FORCE_INLINE pnanovdb_int32_t pnanovdb_int64_is_zero(pnanovdb_int64_t a) {
return a == 0; }
447PNANOVDB_FORCE_INLINE
float pnanovdb_floor(
float v) {
return floorf(v); }
449PNANOVDB_FORCE_INLINE pnanovdb_int32_t pnanovdb_float_to_int32(
float v) {
return (pnanovdb_int32_t)v; }
450PNANOVDB_FORCE_INLINE
float pnanovdb_int32_to_float(pnanovdb_int32_t v) {
return (
float)v; }
451PNANOVDB_FORCE_INLINE
float pnanovdb_uint32_to_float(pnanovdb_uint32_t v) {
return (
float)v; }
452PNANOVDB_FORCE_INLINE
float pnanovdb_min(
float a,
float b) {
return a < b ? a : b; }
453PNANOVDB_FORCE_INLINE
float pnanovdb_max(
float a,
float b) {
return a > b ? a : b; }
454#elif defined(PNANOVDB_HLSL)
455typedef uint pnanovdb_uint32_t;
456typedef int pnanovdb_int32_t;
457typedef bool pnanovdb_bool_t;
458#define PNANOVDB_FALSE false
459#define PNANOVDB_TRUE true
460typedef int3 pnanovdb_coord_t;
461typedef float3 pnanovdb_vec3_t;
462typedef uint4 pnanovdb_uvec4_t;
463typedef int4 pnanovdb_ivec4_t;
464typedef float4 pnanovdb_vec4_t;
465pnanovdb_int32_t pnanovdb_uint32_as_int32(pnanovdb_uint32_t v) {
return int(v); }
466pnanovdb_uint32_t pnanovdb_int32_as_uint32(pnanovdb_int32_t v) {
return uint(v); }
467float pnanovdb_uint32_as_float(pnanovdb_uint32_t v) {
return asfloat(v); }
468pnanovdb_uint32_t pnanovdb_float_as_uint32(
float v) {
return asuint(v); }
469float pnanovdb_floor(
float v) {
return floor(v); }
470pnanovdb_int32_t pnanovdb_float_to_int32(
float v) {
return int(v); }
471float pnanovdb_int32_to_float(pnanovdb_int32_t v) {
return float(v); }
472float pnanovdb_uint32_to_float(pnanovdb_uint32_t v) {
return float(v); }
473float pnanovdb_min(
float a,
float b) {
return min(a, b); }
474float pnanovdb_max(
float a,
float b) {
return max(a, b); }
475#if defined(PNANOVDB_ADDRESS_32)
476typedef uint2 pnanovdb_uint64_t;
477typedef int2 pnanovdb_int64_t;
478pnanovdb_int64_t pnanovdb_uint64_as_int64(pnanovdb_uint64_t v) {
return int2(v); }
479pnanovdb_uint64_t pnanovdb_int64_as_uint64(pnanovdb_int64_t v) {
return uint2(v); }
480double pnanovdb_uint64_as_double(pnanovdb_uint64_t v) {
return asdouble(v.x, v.y); }
481pnanovdb_uint64_t pnanovdb_double_as_uint64(
double v) { uint2 ret; asuint(v, ret.x, ret.y);
return ret; }
482pnanovdb_uint32_t pnanovdb_uint64_low(pnanovdb_uint64_t v) {
return v.x; }
483pnanovdb_uint32_t pnanovdb_uint64_high(pnanovdb_uint64_t v) {
return v.y; }
484pnanovdb_uint64_t pnanovdb_uint32_as_uint64(pnanovdb_uint32_t x, pnanovdb_uint32_t y) {
return uint2(x, y); }
485pnanovdb_uint64_t pnanovdb_uint32_as_uint64_low(pnanovdb_uint32_t x) {
return uint2(x, 0); }
486bool pnanovdb_uint64_is_equal(pnanovdb_uint64_t a, pnanovdb_uint64_t b) {
return (a.x == b.x) && (a.y == b.y); }
487bool pnanovdb_int64_is_zero(pnanovdb_int64_t a) {
return a.x == 0 && a.y == 0; }
489typedef uint64_t pnanovdb_uint64_t;
490typedef int64_t pnanovdb_int64_t;
491pnanovdb_int64_t pnanovdb_uint64_as_int64(pnanovdb_uint64_t v) {
return int64_t(v); }
492pnanovdb_uint64_t pnanovdb_int64_as_uint64(pnanovdb_int64_t v) {
return uint64_t(v); }
493double pnanovdb_uint64_as_double(pnanovdb_uint64_t v) {
return asdouble(uint(v), uint(v >> 32u)); }
494pnanovdb_uint64_t pnanovdb_double_as_uint64(
double v) { uint2 ret; asuint(v, ret.x, ret.y);
return uint64_t(ret.x) + (uint64_t(ret.y) << 32u); }
495pnanovdb_uint32_t pnanovdb_uint64_low(pnanovdb_uint64_t v) {
return uint(v); }
496pnanovdb_uint32_t pnanovdb_uint64_high(pnanovdb_uint64_t v) {
return uint(v >> 32u); }
497pnanovdb_uint64_t pnanovdb_uint32_as_uint64(pnanovdb_uint32_t x, pnanovdb_uint32_t y) {
return uint64_t(x) + (uint64_t(y) << 32u); }
498pnanovdb_uint64_t pnanovdb_uint32_as_uint64_low(pnanovdb_uint32_t x) {
return uint64_t(x); }
499bool pnanovdb_uint64_is_equal(pnanovdb_uint64_t a, pnanovdb_uint64_t b) {
return a == b; }
500bool pnanovdb_int64_is_zero(pnanovdb_int64_t a) {
return a == 0; }
502#elif defined(PNANOVDB_GLSL)
503#define pnanovdb_uint32_t uint
504#define pnanovdb_int32_t int
505#define pnanovdb_bool_t bool
506#define PNANOVDB_FALSE false
507#define PNANOVDB_TRUE true
508#define pnanovdb_uint64_t uvec2
509#define pnanovdb_int64_t ivec2
510#define pnanovdb_coord_t ivec3
511#define pnanovdb_vec3_t vec3
512#define pnanovdb_uvec4_t uvec4
513#define pnanovdb_ivec4_t ivec4
514#define pnanovdb_vec4_t vec4
515pnanovdb_int32_t pnanovdb_uint32_as_int32(pnanovdb_uint32_t v) {
return int(v); }
516pnanovdb_int64_t pnanovdb_uint64_as_int64(pnanovdb_uint64_t v) {
return ivec2(v); }
517pnanovdb_uint64_t pnanovdb_int64_as_uint64(pnanovdb_int64_t v) {
return uvec2(v); }
518pnanovdb_uint32_t pnanovdb_int32_as_uint32(pnanovdb_int32_t v) {
return uint(v); }
519float pnanovdb_uint32_as_float(pnanovdb_uint32_t v) {
return uintBitsToFloat(v); }
520pnanovdb_uint32_t pnanovdb_float_as_uint32(
float v) {
return floatBitsToUint(v); }
521double pnanovdb_uint64_as_double(pnanovdb_uint64_t v) {
return packDouble2x32(uvec2(v.x, v.y)); }
522pnanovdb_uint64_t pnanovdb_double_as_uint64(
double v) {
return unpackDouble2x32(v); }
523pnanovdb_uint32_t pnanovdb_uint64_low(pnanovdb_uint64_t v) {
return v.x; }
524pnanovdb_uint32_t pnanovdb_uint64_high(pnanovdb_uint64_t v) {
return v.y; }
525pnanovdb_uint64_t pnanovdb_uint32_as_uint64(pnanovdb_uint32_t x, pnanovdb_uint32_t y) {
return uvec2(x, y); }
526pnanovdb_uint64_t pnanovdb_uint32_as_uint64_low(pnanovdb_uint32_t x) {
return uvec2(x, 0); }
527bool pnanovdb_uint64_is_equal(pnanovdb_uint64_t a, pnanovdb_uint64_t b) {
return (a.x == b.x) && (a.y == b.y); }
528bool pnanovdb_int64_is_zero(pnanovdb_int64_t a) {
return a.x == 0 && a.y == 0; }
529float pnanovdb_floor(
float v) {
return floor(v); }
530pnanovdb_int32_t pnanovdb_float_to_int32(
float v) {
return int(v); }
531float pnanovdb_int32_to_float(pnanovdb_int32_t v) {
return float(v); }
532float pnanovdb_uint32_to_float(pnanovdb_uint32_t v) {
return float(v); }
533float pnanovdb_min(
float a,
float b) {
return min(a, b); }
534float pnanovdb_max(
float a,
float b) {
return max(a, b); }
539#if defined(PNANOVDB_C)
540PNANOVDB_FORCE_INLINE pnanovdb_vec3_t pnanovdb_vec3_uniform(
float a)
548PNANOVDB_FORCE_INLINE pnanovdb_vec3_t pnanovdb_vec3_add(
const pnanovdb_vec3_t a,
const pnanovdb_vec3_t b)
556PNANOVDB_FORCE_INLINE pnanovdb_vec3_t pnanovdb_vec3_sub(
const pnanovdb_vec3_t a,
const pnanovdb_vec3_t b)
564PNANOVDB_FORCE_INLINE pnanovdb_vec3_t pnanovdb_vec3_mul(
const pnanovdb_vec3_t a,
const pnanovdb_vec3_t b)
572PNANOVDB_FORCE_INLINE pnanovdb_vec3_t pnanovdb_vec3_div(
const pnanovdb_vec3_t a,
const pnanovdb_vec3_t b)
580PNANOVDB_FORCE_INLINE pnanovdb_vec3_t pnanovdb_vec3_min(
const pnanovdb_vec3_t a,
const pnanovdb_vec3_t b)
583 v.x = a.x < b.x ? a.x : b.x;
584 v.y = a.y < b.y ? a.y : b.y;
585 v.z = a.z < b.z ? a.z : b.z;
588PNANOVDB_FORCE_INLINE pnanovdb_vec3_t pnanovdb_vec3_max(
const pnanovdb_vec3_t a,
const pnanovdb_vec3_t b)
591 v.x = a.x > b.x ? a.x : b.x;
592 v.y = a.y > b.y ? a.y : b.y;
593 v.z = a.z > b.z ? a.z : b.z;
596PNANOVDB_FORCE_INLINE pnanovdb_vec3_t pnanovdb_coord_to_vec3(
const pnanovdb_coord_t coord)
599 v.x = pnanovdb_int32_to_float(coord.x);
600 v.y = pnanovdb_int32_to_float(coord.y);
601 v.z = pnanovdb_int32_to_float(coord.z);
604PNANOVDB_FORCE_INLINE pnanovdb_coord_t pnanovdb_coord_uniform(
const pnanovdb_int32_t a)
612PNANOVDB_FORCE_INLINE pnanovdb_coord_t pnanovdb_coord_add(pnanovdb_coord_t a, pnanovdb_coord_t b)
620PNANOVDB_FORCE_INLINE pnanovdb_uvec4_t pnanovdb_uvec4_add(pnanovdb_uvec4_t a, pnanovdb_uvec4_t b)
622 pnanovdb_uvec4_t ret;
630PNANOVDB_FORCE_INLINE pnanovdb_uvec4_t pnanovdb_uvec4_sub(pnanovdb_uvec4_t a, pnanovdb_uvec4_t b)
632 pnanovdb_uvec4_t ret;
640PNANOVDB_FORCE_INLINE pnanovdb_vec4_t pnanovdb_vec4_add(pnanovdb_vec4_t a, pnanovdb_vec4_t b)
649#elif defined(PNANOVDB_HLSL)
650pnanovdb_vec3_t pnanovdb_vec3_uniform(
float a) {
return float3(a, a, a); }
651pnanovdb_vec3_t pnanovdb_vec3_add(pnanovdb_vec3_t a, pnanovdb_vec3_t b) {
return a + b; }
652pnanovdb_vec3_t pnanovdb_vec3_sub(pnanovdb_vec3_t a, pnanovdb_vec3_t b) {
return a - b; }
653pnanovdb_vec3_t pnanovdb_vec3_mul(pnanovdb_vec3_t a, pnanovdb_vec3_t b) {
return a * b; }
654pnanovdb_vec3_t pnanovdb_vec3_div(pnanovdb_vec3_t a, pnanovdb_vec3_t b) {
return a / b; }
655pnanovdb_vec3_t pnanovdb_vec3_min(pnanovdb_vec3_t a, pnanovdb_vec3_t b) {
return min(a, b); }
656pnanovdb_vec3_t pnanovdb_vec3_max(pnanovdb_vec3_t a, pnanovdb_vec3_t b) {
return max(a, b); }
657pnanovdb_vec3_t pnanovdb_coord_to_vec3(pnanovdb_coord_t coord) {
return float3(coord); }
658pnanovdb_coord_t pnanovdb_coord_uniform(pnanovdb_int32_t a) {
return int3(a, a, a); }
659pnanovdb_coord_t pnanovdb_coord_add(pnanovdb_coord_t a, pnanovdb_coord_t b) {
return a + b; }
660pnanovdb_uvec4_t pnanovdb_uvec4_add(pnanovdb_uvec4_t a, pnanovdb_uvec4_t b) {
return a + b; }
661pnanovdb_uvec4_t pnanovdb_uvec4_sub(pnanovdb_uvec4_t a, pnanovdb_uvec4_t b) {
return a - b; }
662pnanovdb_vec4_t pnanovdb_vec4_add(pnanovdb_vec4_t a, pnanovdb_vec4_t b) {
return a + b; }
663#elif defined(PNANOVDB_GLSL)
664pnanovdb_vec3_t pnanovdb_vec3_uniform(
float a) {
return vec3(a, a, a); }
665pnanovdb_vec3_t pnanovdb_vec3_add(pnanovdb_vec3_t a, pnanovdb_vec3_t b) {
return a + b; }
666pnanovdb_vec3_t pnanovdb_vec3_sub(pnanovdb_vec3_t a, pnanovdb_vec3_t b) {
return a - b; }
667pnanovdb_vec3_t pnanovdb_vec3_mul(pnanovdb_vec3_t a, pnanovdb_vec3_t b) {
return a * b; }
668pnanovdb_vec3_t pnanovdb_vec3_div(pnanovdb_vec3_t a, pnanovdb_vec3_t b) {
return a / b; }
669pnanovdb_vec3_t pnanovdb_vec3_min(pnanovdb_vec3_t a, pnanovdb_vec3_t b) {
return min(a, b); }
670pnanovdb_vec3_t pnanovdb_vec3_max(pnanovdb_vec3_t a, pnanovdb_vec3_t b) {
return max(a, b); }
671pnanovdb_vec3_t pnanovdb_coord_to_vec3(
const pnanovdb_coord_t coord) {
return vec3(coord); }
672pnanovdb_coord_t pnanovdb_coord_uniform(pnanovdb_int32_t a) {
return ivec3(a, a, a); }
673pnanovdb_coord_t pnanovdb_coord_add(pnanovdb_coord_t a, pnanovdb_coord_t b) {
return a + b; }
674pnanovdb_uvec4_t pnanovdb_uvec4_add(pnanovdb_uvec4_t a, pnanovdb_uvec4_t b) {
return a + b; }
675pnanovdb_uvec4_t pnanovdb_uvec4_sub(pnanovdb_uvec4_t a, pnanovdb_uvec4_t b) {
return a - b; }
676pnanovdb_vec4_t pnanovdb_vec4_add(pnanovdb_vec4_t a, pnanovdb_vec4_t b) {
return a + b; }
683#if defined(PNANOVDB_C)
684#if defined(_MSC_VER) && (_MSC_VER >= 1928) && defined(PNANOVDB_USE_INTRINSICS)
685 return __popcnt(value);
686#elif (defined(__GNUC__) || defined(__clang__)) && defined(PNANOVDB_USE_INTRINSICS)
687 return __builtin_popcount(value);
689 value = value - ((value >> 1) & 0x55555555);
690 value = (value & 0x33333333) + ((value >> 2) & 0x33333333);
691 value = (value + (value >> 4)) & 0x0F0F0F0F;
692 return (value * 0x01010101) >> 24;
694#elif defined(PNANOVDB_HLSL)
695 return countbits(value);
696#elif defined(PNANOVDB_GLSL)
697 return bitCount(value);
706#if defined(PNANOVDB_ADDRESS_32)
709 pnanovdb_uint32_t low = pnanovdb_uint64_low(a);
710 pnanovdb_uint32_t high = pnanovdb_uint64_high(a);
716 return pnanovdb_uint32_as_uint64(low, high);
719PNANOVDB_FORCE_INLINE pnanovdb_int64_t
pnanovdb_uint64_diff(pnanovdb_uint64_t a, pnanovdb_uint64_t b)
721 pnanovdb_uint32_t low = pnanovdb_uint64_low(a);
722 pnanovdb_uint32_t high = pnanovdb_uint64_high(a);
723 low -= pnanovdb_uint64_low(b);
724 if (low > pnanovdb_uint64_low(a))
728 high -= pnanovdb_uint64_high(b);
729 return pnanovdb_uint64_as_int64(pnanovdb_uint32_as_uint64(low, high));
734 pnanovdb_uint32_t low = pnanovdb_uint64_low(a);
735 pnanovdb_uint32_t high = pnanovdb_uint64_high(a);
741 return pnanovdb_uint32_as_uint64(low, high);
746 pnanovdb_uint32_t low = pnanovdb_uint64_low(a);
747 pnanovdb_uint32_t high = pnanovdb_uint64_high(a);
750 ((low >> b) | ((b > 0) ? (high << (32u - b)) : 0u));
755 pnanovdb_uint32_t mask_low = bit_idx < 32u ? 1u << bit_idx : 0u;
756 pnanovdb_uint32_t mask_high = bit_idx >= 32u ? 1u << (bit_idx - 32u) : 0u;
757 return pnanovdb_uint32_as_uint64(mask_low, mask_high);
760PNANOVDB_FORCE_INLINE pnanovdb_uint64_t
pnanovdb_uint64_and(pnanovdb_uint64_t a, pnanovdb_uint64_t b)
762 return pnanovdb_uint32_as_uint64(
763 pnanovdb_uint64_low(a) & pnanovdb_uint64_low(b),
764 pnanovdb_uint64_high(a) & pnanovdb_uint64_high(b)
770 return pnanovdb_uint64_low(a) != 0u || pnanovdb_uint64_high(a) != 0u;
781 return pnanovdb_uint64_as_int64(a - b);
791 return pnanovdb_uint64_low(a >> b);
796 return 1llu << bit_idx;
812#if defined(PNANOVDB_ADDRESS_32)
813struct pnanovdb_address_t
815 pnanovdb_uint32_t byte_offset;
817PNANOVDB_STRUCT_TYPEDEF(pnanovdb_address_t)
819PNANOVDB_FORCE_INLINE pnanovdb_address_t pnanovdb_address_offset(pnanovdb_address_t address, pnanovdb_uint32_t byte_offset)
821 pnanovdb_address_t ret = address;
822 ret.byte_offset += byte_offset;
825PNANOVDB_FORCE_INLINE pnanovdb_address_t pnanovdb_address_offset_neg(pnanovdb_address_t address, pnanovdb_uint32_t byte_offset)
827 pnanovdb_address_t ret = address;
828 ret.byte_offset -= byte_offset;
831PNANOVDB_FORCE_INLINE pnanovdb_address_t pnanovdb_address_offset_product(pnanovdb_address_t address, pnanovdb_uint32_t byte_offset, pnanovdb_uint32_t multiplier)
833 pnanovdb_address_t ret = address;
834 ret.byte_offset += byte_offset * multiplier;
837PNANOVDB_FORCE_INLINE pnanovdb_address_t pnanovdb_address_offset64(pnanovdb_address_t address, pnanovdb_uint64_t byte_offset)
839 pnanovdb_address_t ret = address;
841 ret.byte_offset += pnanovdb_uint64_low(byte_offset);
844PNANOVDB_FORCE_INLINE pnanovdb_address_t pnanovdb_address_offset64_product(pnanovdb_address_t address, pnanovdb_uint64_t byte_offset, pnanovdb_uint32_t multiplier)
846 pnanovdb_address_t ret = address;
847 ret.byte_offset += pnanovdb_uint64_low(byte_offset) * multiplier;
850PNANOVDB_FORCE_INLINE pnanovdb_int64_t pnanovdb_address_diff(pnanovdb_address_t a, pnanovdb_address_t b)
852 return pnanovdb_uint64_diff(pnanovdb_uint32_as_uint64_low(a.byte_offset),pnanovdb_uint32_as_uint64_low(b.byte_offset));
854PNANOVDB_FORCE_INLINE pnanovdb_uint32_t pnanovdb_address_mask(pnanovdb_address_t address, pnanovdb_uint32_t mask)
856 return address.byte_offset & mask;
858PNANOVDB_FORCE_INLINE pnanovdb_address_t pnanovdb_address_mask_inv(pnanovdb_address_t address, pnanovdb_uint32_t mask)
860 pnanovdb_address_t ret = address;
861 ret.byte_offset &= (~mask);
864PNANOVDB_FORCE_INLINE pnanovdb_address_t pnanovdb_address_null()
866 pnanovdb_address_t ret = { 0 };
869PNANOVDB_FORCE_INLINE pnanovdb_bool_t pnanovdb_address_is_null(pnanovdb_address_t address)
871 return address.byte_offset == 0u;
873PNANOVDB_FORCE_INLINE pnanovdb_bool_t pnanovdb_address_in_interval(pnanovdb_address_t address, pnanovdb_address_t min_address, pnanovdb_address_t max_address)
875 return address.byte_offset >= min_address.byte_offset && address.byte_offset < max_address.byte_offset;
877PNANOVDB_FORCE_INLINE pnanovdb_address_t pnanovdb_address_add(pnanovdb_address_t a, pnanovdb_address_t b)
879 pnanovdb_address_t sum = a;
880 sum.byte_offset += b.byte_offset;
883#elif defined(PNANOVDB_ADDRESS_64)
884struct pnanovdb_address_t
886 pnanovdb_uint64_t byte_offset;
888PNANOVDB_STRUCT_TYPEDEF(pnanovdb_address_t)
890PNANOVDB_FORCE_INLINE pnanovdb_address_t pnanovdb_address_offset(pnanovdb_address_t address, pnanovdb_uint32_t byte_offset)
892 pnanovdb_address_t ret = address;
893 ret.byte_offset += byte_offset;
896PNANOVDB_FORCE_INLINE pnanovdb_address_t pnanovdb_address_offset_neg(pnanovdb_address_t address, pnanovdb_uint32_t byte_offset)
898 pnanovdb_address_t ret = address;
899 ret.byte_offset -= byte_offset;
902PNANOVDB_FORCE_INLINE pnanovdb_address_t pnanovdb_address_offset_product(pnanovdb_address_t address, pnanovdb_uint32_t byte_offset, pnanovdb_uint32_t multiplier)
904 pnanovdb_address_t ret = address;
905 ret.byte_offset += pnanovdb_uint32_as_uint64_low(byte_offset) * pnanovdb_uint32_as_uint64_low(multiplier);
908PNANOVDB_FORCE_INLINE pnanovdb_address_t pnanovdb_address_offset64(pnanovdb_address_t address, pnanovdb_uint64_t byte_offset)
910 pnanovdb_address_t ret = address;
911 ret.byte_offset += byte_offset;
914PNANOVDB_FORCE_INLINE pnanovdb_address_t pnanovdb_address_offset64_product(pnanovdb_address_t address, pnanovdb_uint64_t byte_offset, pnanovdb_uint32_t multiplier)
916 pnanovdb_address_t ret = address;
917 ret.byte_offset += byte_offset * pnanovdb_uint32_as_uint64_low(multiplier);
920PNANOVDB_FORCE_INLINE pnanovdb_int64_t pnanovdb_address_diff(pnanovdb_address_t a, pnanovdb_address_t b)
924PNANOVDB_FORCE_INLINE pnanovdb_uint32_t pnanovdb_address_mask(pnanovdb_address_t address, pnanovdb_uint32_t mask)
926 return pnanovdb_uint64_low(address.byte_offset) & mask;
928PNANOVDB_FORCE_INLINE pnanovdb_address_t pnanovdb_address_mask_inv(pnanovdb_address_t address, pnanovdb_uint32_t mask)
930 pnanovdb_address_t ret = address;
931 ret.byte_offset &= (~pnanovdb_uint32_as_uint64_low(mask));
934PNANOVDB_FORCE_INLINE pnanovdb_address_t pnanovdb_address_null()
936 pnanovdb_address_t ret = { 0 };
939PNANOVDB_FORCE_INLINE pnanovdb_bool_t pnanovdb_address_is_null(pnanovdb_address_t address)
941 return address.byte_offset == 0llu;
943PNANOVDB_FORCE_INLINE pnanovdb_bool_t pnanovdb_address_in_interval(pnanovdb_address_t address, pnanovdb_address_t min_address, pnanovdb_address_t max_address)
945 return address.byte_offset >= min_address.byte_offset && address.byte_offset < max_address.byte_offset;
947PNANOVDB_FORCE_INLINE pnanovdb_address_t pnanovdb_address_add(pnanovdb_address_t a, pnanovdb_address_t b)
949 pnanovdb_address_t sum = a;
950 sum.byte_offset += b.byte_offset;
959 return pnanovdb_buf_read_uint32(buf, address.byte_offset);
963 return pnanovdb_buf_read_uint64(buf, address.byte_offset);
983 pnanovdb_coord_t ret;
984 ret.x = pnanovdb_uint32_as_int32(
pnanovdb_read_uint32(buf, pnanovdb_address_offset(address, 0u)));
985 ret.y = pnanovdb_uint32_as_int32(
pnanovdb_read_uint32(buf, pnanovdb_address_offset(address, 4u)));
986 ret.z = pnanovdb_uint32_as_int32(
pnanovdb_read_uint32(buf, pnanovdb_address_offset(address, 8u)));
989PNANOVDB_FORCE_INLINE pnanovdb_vec3_t
pnanovdb_read_vec3(pnanovdb_buf_t buf, pnanovdb_address_t address)
1001 return (raw >> (pnanovdb_address_mask(address, 2) << 3));
1006 return (raw >> (pnanovdb_address_mask(address, 3) << 3)) & 255;
1010 pnanovdb_vec3_t ret;
1011 const float scale = 1.f / 65535.f;
1012 ret.x = scale * pnanovdb_uint32_to_float(
pnanovdb_read_uint16(buf, pnanovdb_address_offset(address, 0u))) - 0.5f;
1013 ret.y = scale * pnanovdb_uint32_to_float(
pnanovdb_read_uint16(buf, pnanovdb_address_offset(address, 2u))) - 0.5f;
1014 ret.z = scale * pnanovdb_uint32_to_float(
pnanovdb_read_uint16(buf, pnanovdb_address_offset(address, 4u))) - 0.5f;
1019 pnanovdb_vec3_t ret;
1020 const float scale = 1.f / 255.f;
1021 ret.x = scale * pnanovdb_uint32_to_float(
pnanovdb_read_uint8(buf, pnanovdb_address_offset(address, 0u))) - 0.5f;
1022 ret.y = scale * pnanovdb_uint32_to_float(
pnanovdb_read_uint8(buf, pnanovdb_address_offset(address, 1u))) - 0.5f;
1023 ret.z = scale * pnanovdb_uint32_to_float(
pnanovdb_read_uint8(buf, pnanovdb_address_offset(address, 2u))) - 0.5f;
1027PNANOVDB_FORCE_INLINE pnanovdb_bool_t
pnanovdb_read_bit(pnanovdb_buf_t buf, pnanovdb_address_t address, pnanovdb_uint32_t bit_offset)
1029 pnanovdb_address_t word_address = pnanovdb_address_mask_inv(address, 3u);
1030 pnanovdb_uint32_t bit_index = (pnanovdb_address_mask(address, 3u) << 3u) + bit_offset;
1031 pnanovdb_uint32_t value_word = pnanovdb_buf_read_uint32(buf, word_address.byte_offset);
1032 return ((value_word >> bit_index) & 1) != 0u;
1035#if defined(PNANOVDB_C)
1036PNANOVDB_FORCE_INLINE
short pnanovdb_read_half(pnanovdb_buf_t buf, pnanovdb_address_t address)
1039 return (
short)(raw >> (pnanovdb_address_mask(address, 2) << 3));
1041#elif defined(PNANOVDB_HLSL)
1042PNANOVDB_FORCE_INLINE
float pnanovdb_read_half(pnanovdb_buf_t buf, pnanovdb_address_t address)
1045 return f16tof32(raw >> (pnanovdb_address_mask(address, 2) << 3));
1047#elif defined(PNANOVDB_GLSL)
1048PNANOVDB_FORCE_INLINE
float pnanovdb_read_half(pnanovdb_buf_t buf, pnanovdb_address_t address)
1051 return unpackHalf2x16(raw >> (pnanovdb_address_mask(address, 2) << 3)).x;
1057PNANOVDB_FORCE_INLINE
void pnanovdb_write_uint32(pnanovdb_buf_t buf, pnanovdb_address_t address, pnanovdb_uint32_t value)
1059 pnanovdb_buf_write_uint32(buf, address.byte_offset, value);
1061PNANOVDB_FORCE_INLINE
void pnanovdb_write_uint64(pnanovdb_buf_t buf, pnanovdb_address_t address, pnanovdb_uint64_t value)
1063 pnanovdb_buf_write_uint64(buf, address.byte_offset, value);
1065PNANOVDB_FORCE_INLINE
void pnanovdb_write_int32(pnanovdb_buf_t buf, pnanovdb_address_t address, pnanovdb_int32_t value)
1069PNANOVDB_FORCE_INLINE
void pnanovdb_write_int64(pnanovdb_buf_t buf, pnanovdb_address_t address, pnanovdb_int64_t value)
1071 pnanovdb_buf_write_uint64(buf, address.byte_offset, pnanovdb_int64_as_uint64(value));
1081PNANOVDB_FORCE_INLINE
void pnanovdb_write_coord(pnanovdb_buf_t buf, pnanovdb_address_t address, PNANOVDB_IN(pnanovdb_coord_t) value)
1083 pnanovdb_write_uint32(buf, pnanovdb_address_offset(address, 0u), pnanovdb_int32_as_uint32(PNANOVDB_DEREF(value).x));
1084 pnanovdb_write_uint32(buf, pnanovdb_address_offset(address, 4u), pnanovdb_int32_as_uint32(PNANOVDB_DEREF(value).y));
1085 pnanovdb_write_uint32(buf, pnanovdb_address_offset(address, 8u), pnanovdb_int32_as_uint32(PNANOVDB_DEREF(value).z));
1087PNANOVDB_FORCE_INLINE
void pnanovdb_write_vec3(pnanovdb_buf_t buf, pnanovdb_address_t address, PNANOVDB_IN(pnanovdb_vec3_t) value)
1096#define PNANOVDB_MAGIC_NUMBER 0x304244566f6e614eUL
1097#define PNANOVDB_MAGIC_GRID 0x314244566f6e614eUL
1098#define PNANOVDB_MAGIC_FILE 0x324244566f6e614eUL
1100#define PNANOVDB_MAJOR_VERSION_NUMBER 32
1101#define PNANOVDB_MINOR_VERSION_NUMBER 11
1102#define PNANOVDB_PATCH_VERSION_NUMBER 0
1104#define PNANOVDB_GRID_TYPE_UNKNOWN 0
1105#define PNANOVDB_GRID_TYPE_FLOAT 1
1106#define PNANOVDB_GRID_TYPE_DOUBLE 2
1107#define PNANOVDB_GRID_TYPE_INT16 3
1108#define PNANOVDB_GRID_TYPE_INT32 4
1109#define PNANOVDB_GRID_TYPE_INT64 5
1110#define PNANOVDB_GRID_TYPE_VEC3F 6
1111#define PNANOVDB_GRID_TYPE_VEC3D 7
1112#define PNANOVDB_GRID_TYPE_MASK 8
1113#define PNANOVDB_GRID_TYPE_HALF 9
1114#define PNANOVDB_GRID_TYPE_UINT32 10
1115#define PNANOVDB_GRID_TYPE_BOOLEAN 11
1116#define PNANOVDB_GRID_TYPE_RGBA8 12
1117#define PNANOVDB_GRID_TYPE_FP4 13
1118#define PNANOVDB_GRID_TYPE_FP8 14
1119#define PNANOVDB_GRID_TYPE_FP16 15
1120#define PNANOVDB_GRID_TYPE_FPN 16
1121#define PNANOVDB_GRID_TYPE_VEC4F 17
1122#define PNANOVDB_GRID_TYPE_VEC4D 18
1123#define PNANOVDB_GRID_TYPE_INDEX 19
1124#define PNANOVDB_GRID_TYPE_ONINDEX 20
1127#define PNANOVDB_GRID_TYPE_POINTINDEX 23
1128#define PNANOVDB_GRID_TYPE_VEC3U8 24
1129#define PNANOVDB_GRID_TYPE_VEC3U16 25
1130#define PNANOVDB_GRID_TYPE_UINT8 26
1131#define PNANOVDB_GRID_TYPE_END 27
1133#define PNANOVDB_GRID_TYPE_CAP 32
1135#define PNANOVDB_GRID_CLASS_UNKNOWN 0
1136#define PNANOVDB_GRID_CLASS_LEVEL_SET 1
1137#define PNANOVDB_GRID_CLASS_FOG_VOLUME 2
1138#define PNANOVDB_GRID_CLASS_STAGGERED 3
1139#define PNANOVDB_GRID_CLASS_POINT_INDEX 4
1140#define PNANOVDB_GRID_CLASS_POINT_DATA 5
1141#define PNANOVDB_GRID_CLASS_TOPOLOGY 6
1142#define PNANOVDB_GRID_CLASS_VOXEL_VOLUME 7
1143#define PNANOVDB_GRID_CLASS_INDEX_GRID 8
1144#define PNANOVDB_GRID_CLASS_TENSOR_GRID 9
1145#define PNANOVDB_GRID_CLASS_VOXEL_BVH 10
1146#define PNANOVDB_GRID_CLASS_END 11
1148#define PNANOVDB_GRID_FLAGS_HAS_LONG_GRID_NAME (1 << 0)
1149#define PNANOVDB_GRID_FLAGS_HAS_BBOX (1 << 1)
1150#define PNANOVDB_GRID_FLAGS_HAS_MIN_MAX (1 << 2)
1151#define PNANOVDB_GRID_FLAGS_HAS_AVERAGE (1 << 3)
1152#define PNANOVDB_GRID_FLAGS_HAS_STD_DEVIATION (1 << 4)
1153#define PNANOVDB_GRID_FLAGS_IS_BREADTH_FIRST (1 << 5)
1154#define PNANOVDB_GRID_FLAGS_END (1 << 6)
1156#define PNANOVDB_LEAF_TYPE_DEFAULT 0
1157#define PNANOVDB_LEAF_TYPE_LITE 1
1158#define PNANOVDB_LEAF_TYPE_FP 2
1159#define PNANOVDB_LEAF_TYPE_INDEX 3
1161#define PNANOVDB_LEAF_TYPE_POINTINDEX 5
1165PNANOVDB_STATIC_CONST pnanovdb_uint32_t
pnanovdb_grid_type_value_strides_bits[
PNANOVDB_GRID_TYPE_CAP] = { 0, 32, 64, 16, 32, 64, 96, 192, 0, 16, 32, 1, 32, 4, 8, 16, 0, 128, 256, 0, 0, 0, 0, 16, 24, 48, 8, 0 };
1167PNANOVDB_STATIC_CONST pnanovdb_uint32_t
pnanovdb_grid_type_table_strides_bits[
PNANOVDB_GRID_TYPE_CAP] = { 64, 64, 64, 64, 64, 64, 128, 192, 64, 64, 64, 64, 64, 64, 64, 64, 64, 128, 256, 64, 64, 64, 64, 64, 64, 64, 64, 64 };
1169PNANOVDB_STATIC_CONST pnanovdb_uint32_t
pnanovdb_grid_type_minmax_strides_bits[
PNANOVDB_GRID_TYPE_CAP] = { 0, 32, 64, 16, 32, 64, 96, 192, 8, 16, 32, 8, 32, 32, 32, 32, 32, 128, 256, 64, 64, 0, 0, 64, 24, 48, 8, 0 };
1171PNANOVDB_STATIC_CONST pnanovdb_uint32_t
pnanovdb_grid_type_minmax_aligns_bits[
PNANOVDB_GRID_TYPE_CAP] = { 0, 32, 64, 16, 32, 64, 32, 64, 8, 16, 32, 8, 32, 32, 32, 32, 32, 32, 64, 64, 64, 0, 0, 64, 8, 16, 8, 0 };
1173PNANOVDB_STATIC_CONST pnanovdb_uint32_t
pnanovdb_grid_type_stat_strides_bits[
PNANOVDB_GRID_TYPE_CAP] = { 0, 32, 64, 32, 32, 64, 32, 64, 8, 32, 32, 8, 32, 32, 32, 32, 32, 32, 64, 64, 64, 0, 0, 64, 32, 32, 32, 0 };
1175PNANOVDB_STATIC_CONST pnanovdb_uint32_t
pnanovdb_grid_type_leaf_type[
PNANOVDB_GRID_TYPE_CAP] = { 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 2, 2, 2, 2, 0, 0, 3, 3, 0, 0, 5, 0, 0, 0, 0 };
1192#define PNANOVDB_MAP_SIZE 264
1194#define PNANOVDB_MAP_OFF_MATF 0
1195#define PNANOVDB_MAP_OFF_INVMATF 36
1196#define PNANOVDB_MAP_OFF_VECF 72
1197#define PNANOVDB_MAP_OFF_TAPERF 84
1198#define PNANOVDB_MAP_OFF_MATD 88
1199#define PNANOVDB_MAP_OFF_INVMATD 160
1200#define PNANOVDB_MAP_OFF_VECD 232
1201#define PNANOVDB_MAP_OFF_TAPERD 256
1213 PNANOVDB_UNUSED(index);
1226 PNANOVDB_UNUSED(index);
1240 PNANOVDB_UNUSED(index);
1253 PNANOVDB_UNUSED(index);
1282#define PNANOVDB_GRID_SIZE 672
1284#define PNANOVDB_GRID_OFF_MAGIC 0
1285#define PNANOVDB_GRID_OFF_CHECKSUM 8
1286#define PNANOVDB_GRID_OFF_VERSION 16
1287#define PNANOVDB_GRID_OFF_FLAGS 20
1288#define PNANOVDB_GRID_OFF_GRID_INDEX 24
1289#define PNANOVDB_GRID_OFF_GRID_COUNT 28
1290#define PNANOVDB_GRID_OFF_GRID_SIZE 32
1291#define PNANOVDB_GRID_OFF_GRID_NAME 40
1292#define PNANOVDB_GRID_OFF_MAP 296
1293#define PNANOVDB_GRID_OFF_WORLD_BBOX 560
1294#define PNANOVDB_GRID_OFF_VOXEL_SIZE 608
1295#define PNANOVDB_GRID_OFF_GRID_CLASS 632
1296#define PNANOVDB_GRID_OFF_GRID_TYPE 636
1297#define PNANOVDB_GRID_OFF_BLIND_METADATA_OFFSET 640
1298#define PNANOVDB_GRID_OFF_BLIND_METADATA_COUNT 648
1299#define PNANOVDB_GRID_OFF_DATA0 652
1300#define PNANOVDB_GRID_OFF_DATA1 656
1301#define PNANOVDB_GRID_OFF_DATA2 664
1328 PNANOVDB_UNUSED(buf);
1413PNANOVDB_FORCE_INLINE pnanovdb_uint32_t
pnanovdb_make_version(pnanovdb_uint32_t major, pnanovdb_uint32_t minor, pnanovdb_uint32_t patch_num)
1415 return (major << 21u) | (minor << 10u) | patch_num;
1420 return (version >> 21u) & ((1u << 11u) - 1u);
1424 return (version >> 10u) & ((1u << 11u) - 1u);
1428 return version & ((1u << 10u) - 1u);
1431#define PNANOVDB_GRIDBLINDMETADATA_CLASS_UNKNOWN 0
1432#define PNANOVDB_GRIDBLINDMETADATA_CLASS_INDEX_ARRAY 1
1433#define PNANOVDB_GRIDBLINDMETADATA_CLASS_ATTRIBUTE_ARRAY 2
1434#define PNANOVDB_GRIDBLINDMETADATA_CLASS_GRID_NAME 3
1435#define PNANOVDB_GRIDBLINDMETADATA_CLASS_CHANNEL_ARRAY 4
1436#define PNANOVDB_GRIDBLINDMETADATA_CLASS_END 5
1438#define PNANOVDB_GRIDBLINDMETADATA_SEMANTIC_UNKNOWN 0
1439#define PNANOVDB_GRIDBLINDMETADATA_SEMANTIC_POINT_POSITION 1
1440#define PNANOVDB_GRIDBLINDMETADATA_SEMANTIC_POINT_COLOR 2
1441#define PNANOVDB_GRIDBLINDMETADATA_SEMANTIC_POINT_NORMAL 3
1442#define PNANOVDB_GRIDBLINDMETADATA_SEMANTIC_POINT_RADIUS 4
1443#define PNANOVDB_GRIDBLINDMETADATA_SEMANTIC_POINT_VELOCITY 5
1444#define PNANOVDB_GRIDBLINDMETADATA_SEMANTIC_POINT_ID 6
1445#define PNANOVDB_GRIDBLINDMETADATA_SEMANTIC_WORLD_COORDS 7
1446#define PNANOVDB_GRIDBLINDMETADATA_SEMANTIC_GRID_COORDS 8
1447#define PNANOVDB_GRIDBLINDMETADATA_SEMANTIC_VOXEL_COORDS 9
1448#define PNANOVDB_GRIDBLINDMETADATA_SEMANTIC_LEVEL_SET 10
1449#define PNANOVDB_GRIDBLINDMETADATA_SEMANTIC_FOG_VOLUME 11
1450#define PNANOVDB_GRIDBLINDMETADATA_SEMANTIC_STAGGERED 12
1451#define PNANOVDB_GRIDBLINDMETADATA_SEMANTIC_POINT_OPACITY 13
1452#define PNANOVDB_GRIDBLINDMETADATA_SEMANTIC_POINT_QUAT 14
1453#define PNANOVDB_GRIDBLINDMETADATA_SEMANTIC_POINT_SCALE 15
1454#define PNANOVDB_GRIDBLINDMETADATA_SEMANTIC_POINT_SH0 16
1455#define PNANOVDB_GRIDBLINDMETADATA_SEMANTIC_POINT_SHN 17
1456#define PNANOVDB_GRIDBLINDMETADATA_SEMANTIC_LINE_ID 18
1457#define PNANOVDB_GRIDBLINDMETADATA_SEMANTIC_TRIANGLE_ID 19
1458#define PNANOVDB_GRIDBLINDMETADATA_SEMANTIC_GAUSSIAN_ID 20
1459#define PNANOVDB_GRIDBLINDMETADATA_SEMANTIC_RANGE 21
1460#define PNANOVDB_GRIDBLINDMETADATA_SEMANTIC_VOXEL_BVH 22
1461#define PNANOVDB_GRIDBLINDMETADATA_SEMANTIC_END 23
1477#define PNANOVDB_GRIDBLINDMETADATA_SIZE 288
1479#define PNANOVDB_GRIDBLINDMETADATA_OFF_DATA_OFFSET 0
1480#define PNANOVDB_GRIDBLINDMETADATA_OFF_VALUE_COUNT 8
1481#define PNANOVDB_GRIDBLINDMETADATA_OFF_VALUE_SIZE 16
1482#define PNANOVDB_GRIDBLINDMETADATA_OFF_SEMANTIC 20
1483#define PNANOVDB_GRIDBLINDMETADATA_OFF_DATA_CLASS 24
1484#define PNANOVDB_GRIDBLINDMETADATA_OFF_DATA_TYPE 28
1485#define PNANOVDB_GRIDBLINDMETADATA_OFF_NAME 32
1549#define PNANOVDB_TREE_SIZE 64
1551#define PNANOVDB_TREE_OFF_NODE_OFFSET_LEAF 0
1552#define PNANOVDB_TREE_OFF_NODE_OFFSET_LOWER 8
1553#define PNANOVDB_TREE_OFF_NODE_OFFSET_UPPER 16
1554#define PNANOVDB_TREE_OFF_NODE_OFFSET_ROOT 24
1555#define PNANOVDB_TREE_OFF_NODE_COUNT_LEAF 32
1556#define PNANOVDB_TREE_OFF_NODE_COUNT_LOWER 36
1557#define PNANOVDB_TREE_OFF_NODE_COUNT_UPPER 40
1558#define PNANOVDB_TREE_OFF_TILE_COUNT_LOWER 44
1559#define PNANOVDB_TREE_OFF_TILE_COUNT_UPPER 48
1560#define PNANOVDB_TREE_OFF_TILE_COUNT_ROOT 52
1561#define PNANOVDB_TREE_OFF_VOXEL_COUNT 56
1643#define PNANOVDB_ROOT_BASE_SIZE 28
1645#define PNANOVDB_ROOT_OFF_BBOX_MIN 0
1646#define PNANOVDB_ROOT_OFF_BBOX_MAX 12
1647#define PNANOVDB_ROOT_OFF_TABLE_SIZE 24
1681#define PNANOVDB_ROOT_TILE_BASE_SIZE 20
1683#define PNANOVDB_ROOT_TILE_OFF_KEY 0
1684#define PNANOVDB_ROOT_TILE_OFF_CHILD 8
1685#define PNANOVDB_ROOT_TILE_OFF_STATE 16
1721#define PNANOVDB_UPPER_TABLE_COUNT 32768
1722#define PNANOVDB_UPPER_BASE_SIZE 8224
1724#define PNANOVDB_UPPER_OFF_BBOX_MIN 0
1725#define PNANOVDB_UPPER_OFF_BBOX_MAX 12
1726#define PNANOVDB_UPPER_OFF_FLAGS 24
1727#define PNANOVDB_UPPER_OFF_VALUE_MASK 32
1728#define PNANOVDB_UPPER_OFF_CHILD_MASK 4128
1741 return ((value >> (bit_index & 31u)) & 1) != 0u;
1745 return ((value >> (bit_index & 31u)) & 1) != 0u;
1757 if (!value) { valueMask &= ~(1u << (bit_index & 31u)); }
1758 if (value) valueMask |= (1u << (bit_index & 31u));
1764 if (!value) { valueMask &= ~(1u << (bit_index & 31u)); }
1765 if (value) valueMask |= (1u << (bit_index & 31u));
1783#define PNANOVDB_LOWER_TABLE_COUNT 4096
1784#define PNANOVDB_LOWER_BASE_SIZE 1056
1786#define PNANOVDB_LOWER_OFF_BBOX_MIN 0
1787#define PNANOVDB_LOWER_OFF_BBOX_MAX 12
1788#define PNANOVDB_LOWER_OFF_FLAGS 24
1789#define PNANOVDB_LOWER_OFF_VALUE_MASK 32
1790#define PNANOVDB_LOWER_OFF_CHILD_MASK 544
1803 return ((value >> (bit_index & 31u)) & 1) != 0u;
1807 return ((value >> (bit_index & 31u)) & 1) != 0u;
1819 if (!value) { valueMask &= ~(1u << (bit_index & 31u)); }
1820 if (value) valueMask |= (1u << (bit_index & 31u));
1826 if (!value) { valueMask &= ~(1u << (bit_index & 31u)); }
1827 if (value) valueMask |= (1u << (bit_index & 31u));
1843#define PNANOVDB_LEAF_TABLE_COUNT 512
1844#define PNANOVDB_LEAF_BASE_SIZE 80
1846#define PNANOVDB_LEAF_OFF_BBOX_MIN 0
1847#define PNANOVDB_LEAF_OFF_BBOX_DIF_AND_FLAGS 12
1848#define PNANOVDB_LEAF_OFF_VALUE_MASK 16
1850#define PNANOVDB_LEAF_TABLE_NEG_OFF_BBOX_DIF_AND_FLAGS 84
1851#define PNANOVDB_LEAF_TABLE_NEG_OFF_MINIMUM 16
1852#define PNANOVDB_LEAF_TABLE_NEG_OFF_QUANTUM 12
1862 return ((value >> (bit_index & 31u)) & 1) != 0u;
1874 if (!value) { valueMask &= ~(1u << (bit_index & 31u)); }
1875 if (value) valueMask |= (1u << (bit_index & 31u));
1915{28, 28, 28, 28, 28, 32, 0, 8, 20, 32, 8224, 8224, 8224, 8224, 8224, 270368, 1056, 1056, 1056, 1056, 1056, 33824, 80, 80, 80, 80, 96, 96},
1916{28, 32, 36, 40, 44, 64, 32, 8, 20, 32, 8224, 8228, 8232, 8236, 8256, 270400, 1056, 1060, 1064, 1068, 1088, 33856, 80, 84, 88, 92, 96, 2144},
1917{32, 40, 48, 56, 64, 96, 64, 8, 24, 32, 8224, 8232, 8240, 8248, 8256, 270400, 1056, 1064, 1072, 1080, 1088, 33856, 80, 88, 96, 104, 128, 4224},
1918{28, 30, 32, 36, 40, 64, 16, 8, 20, 32, 8224, 8226, 8228, 8232, 8256, 270400, 1056, 1058, 1060, 1064, 1088, 33856, 80, 82, 84, 88, 96, 1120},
1919{28, 32, 36, 40, 44, 64, 32, 8, 20, 32, 8224, 8228, 8232, 8236, 8256, 270400, 1056, 1060, 1064, 1068, 1088, 33856, 80, 84, 88, 92, 96, 2144},
1920{32, 40, 48, 56, 64, 96, 64, 8, 24, 32, 8224, 8232, 8240, 8248, 8256, 270400, 1056, 1064, 1072, 1080, 1088, 33856, 80, 88, 96, 104, 128, 4224},
1921{28, 40, 52, 64, 68, 96, 96, 16, 20, 32, 8224, 8236, 8248, 8252, 8256, 532544, 1056, 1068, 1080, 1084, 1088, 66624, 80, 92, 104, 108, 128, 6272},
1922{32, 56, 80, 104, 112, 128, 192, 24, 24, 64, 8224, 8248, 8272, 8280, 8288, 794720, 1056, 1080, 1104, 1112, 1120, 99424, 80, 104, 128, 136, 160, 12448},
1923{28, 29, 30, 31, 32, 64, 0, 8, 20, 32, 8224, 8225, 8226, 8227, 8256, 270400, 1056, 1057, 1058, 1059, 1088, 33856, 80, 80, 80, 80, 96, 96},
1924{28, 30, 32, 36, 40, 64, 16, 8, 20, 32, 8224, 8226, 8228, 8232, 8256, 270400, 1056, 1058, 1060, 1064, 1088, 33856, 80, 82, 84, 88, 96, 1120},
1925{28, 32, 36, 40, 44, 64, 32, 8, 20, 32, 8224, 8228, 8232, 8236, 8256, 270400, 1056, 1060, 1064, 1068, 1088, 33856, 80, 84, 88, 92, 96, 2144},
1926{28, 29, 30, 31, 32, 64, 1, 8, 20, 32, 8224, 8225, 8226, 8227, 8256, 270400, 1056, 1057, 1058, 1059, 1088, 33856, 80, 80, 80, 80, 96, 160},
1927{28, 32, 36, 40, 44, 64, 32, 8, 20, 32, 8224, 8228, 8232, 8236, 8256, 270400, 1056, 1060, 1064, 1068, 1088, 33856, 80, 84, 88, 92, 96, 2144},
1928{28, 32, 36, 40, 44, 64, 0, 8, 20, 32, 8224, 8228, 8232, 8236, 8256, 270400, 1056, 1060, 1064, 1068, 1088, 33856, 88, 90, 92, 94, 96, 352},
1929{28, 32, 36, 40, 44, 64, 0, 8, 20, 32, 8224, 8228, 8232, 8236, 8256, 270400, 1056, 1060, 1064, 1068, 1088, 33856, 88, 90, 92, 94, 96, 608},
1930{28, 32, 36, 40, 44, 64, 0, 8, 20, 32, 8224, 8228, 8232, 8236, 8256, 270400, 1056, 1060, 1064, 1068, 1088, 33856, 88, 90, 92, 94, 96, 1120},
1931{28, 32, 36, 40, 44, 64, 0, 8, 20, 32, 8224, 8228, 8232, 8236, 8256, 270400, 1056, 1060, 1064, 1068, 1088, 33856, 88, 90, 92, 94, 96, 96},
1932{28, 44, 60, 76, 80, 96, 128, 16, 20, 64, 8224, 8240, 8256, 8260, 8288, 532576, 1056, 1072, 1088, 1092, 1120, 66656, 80, 96, 112, 116, 128, 8320},
1933{32, 64, 96, 128, 136, 160, 256, 32, 24, 64, 8224, 8256, 8288, 8296, 8320, 1056896, 1056, 1088, 1120, 1128, 1152, 132224, 80, 112, 144, 152, 160, 16544},
1934{32, 40, 48, 56, 64, 96, 0, 8, 24, 32, 8224, 8232, 8240, 8248, 8256, 270400, 1056, 1064, 1072, 1080, 1088, 33856, 80, 80, 80, 80, 80, 96},
1935{32, 40, 48, 56, 64, 96, 0, 8, 24, 32, 8224, 8232, 8240, 8248, 8256, 270400, 1056, 1064, 1072, 1080, 1088, 33856, 80, 80, 80, 80, 80, 96},
1936{28, 28, 28, 28, 28, 32, 0, 8, 20, 32, 8224, 8224, 8224, 8224, 8224, 270368, 1056, 1056, 1056, 1056, 1056, 33824, 80, 80, 80, 80, 96, 96},
1937{28, 28, 28, 28, 28, 32, 0, 8, 20, 32, 8224, 8224, 8224, 8224, 8224, 270368, 1056, 1056, 1056, 1056, 1056, 33824, 80, 80, 80, 80, 96, 96},
1938{32, 40, 48, 56, 64, 96, 16, 8, 24, 32, 8224, 8232, 8240, 8248, 8256, 270400, 1056, 1064, 1072, 1080, 1088, 33856, 80, 88, 96, 96, 96, 1120},
1939{28, 31, 34, 40, 44, 64, 24, 8, 20, 32, 8224, 8227, 8232, 8236, 8256, 270400, 1056, 1059, 1064, 1068, 1088, 33856, 80, 83, 88, 92, 96, 1632},
1940{28, 34, 40, 48, 52, 64, 48, 8, 20, 32, 8224, 8230, 8236, 8240, 8256, 270400, 1056, 1062, 1068, 1072, 1088, 33856, 80, 86, 92, 96, 128, 3200},
1941{28, 29, 30, 32, 36, 64, 8, 8, 20, 32, 8224, 8225, 8228, 8232, 8256, 270400, 1056, 1057, 1060, 1064, 1088, 33856, 80, 81, 84, 88, 96, 608},
1942{28, 28, 28, 28, 28, 32, 0, 8, 20, 32, 8224, 8224, 8224, 8224, 8224, 270368, 1056, 1056, 1056, 1056, 1056, 33824, 80, 80, 80, 80, 96, 96},
1951 meta.
address = pnanovdb_address_offset64(meta.
address, byte_offset);
1960 pnanovdb_address_t address = pnanovdb_address_offset64(meta.
address, pnanovdb_int64_as_uint64(byte_offset));
1966 PNANOVDB_UNUSED(buf);
1976 root.
address = pnanovdb_address_offset64(root.
address, byte_offset);
1983 tile.
address = pnanovdb_address_offset(tile.
address, PNANOVDB_GRID_TYPE_GET(grid_type, root_size));
1984 tile.
address = pnanovdb_address_offset_product(tile.
address, PNANOVDB_GRID_TYPE_GET(grid_type, root_tile_size), n);
1991 tile.
address = pnanovdb_address_offset(tile.
address, PNANOVDB_GRID_TYPE_GET(grid_type, root_size));
2002 PNANOVDB_UNUSED(grid_type);
2010 PNANOVDB_UNUSED(grid_type);
2016#if defined(PNANOVDB_NATIVE_64)
2017 pnanovdb_uint64_t iu = pnanovdb_int32_as_uint32(PNANOVDB_DEREF(ijk).x) >> 12u;
2018 pnanovdb_uint64_t ju = pnanovdb_int32_as_uint32(PNANOVDB_DEREF(ijk).y) >> 12u;
2019 pnanovdb_uint64_t ku = pnanovdb_int32_as_uint32(PNANOVDB_DEREF(ijk).z) >> 12u;
2020 return (ku) | (ju << 21u) | (iu << 42u);
2022 pnanovdb_uint32_t iu = pnanovdb_int32_as_uint32(PNANOVDB_DEREF(ijk).x) >> 12u;
2023 pnanovdb_uint32_t ju = pnanovdb_int32_as_uint32(PNANOVDB_DEREF(ijk).y) >> 12u;
2024 pnanovdb_uint32_t ku = pnanovdb_int32_as_uint32(PNANOVDB_DEREF(ijk).z) >> 12u;
2025 pnanovdb_uint32_t key_x = ku | (ju << 21);
2026 pnanovdb_uint32_t key_y = (iu << 10) | (ju >> 11);
2027 return pnanovdb_uint32_as_uint64(key_x, key_y);
2036 for (pnanovdb_uint32_t i = 0u; i < tile_count; i++)
2042 tile.
address = pnanovdb_address_offset(tile.
address, PNANOVDB_GRID_TYPE_GET(grid_type, root_tile_size));
2073 return (((PNANOVDB_DEREF(ijk).x & 7) >> 0) << (2 * 3)) +
2074 (((PNANOVDB_DEREF(ijk).y & 7) >> 0) << (3)) +
2075 ((PNANOVDB_DEREF(ijk).z & 7) >> 0);
2080 PNANOVDB_UNUSED(buf);
2081 pnanovdb_uint32_t byte_offset = PNANOVDB_GRID_TYPE_GET(grid_type, leaf_off_min);
2082 return pnanovdb_address_offset(node.
address, byte_offset);
2087 PNANOVDB_UNUSED(buf);
2088 pnanovdb_uint32_t byte_offset = PNANOVDB_GRID_TYPE_GET(grid_type, leaf_off_max);
2089 return pnanovdb_address_offset(node.
address, byte_offset);
2094 PNANOVDB_UNUSED(buf);
2095 pnanovdb_uint32_t byte_offset = PNANOVDB_GRID_TYPE_GET(grid_type, leaf_off_ave);
2096 return pnanovdb_address_offset(node.
address, byte_offset);
2101 PNANOVDB_UNUSED(buf);
2102 pnanovdb_uint32_t byte_offset = PNANOVDB_GRID_TYPE_GET(grid_type, leaf_off_stddev);
2103 return pnanovdb_address_offset(node.
address, byte_offset);
2108 PNANOVDB_UNUSED(buf);
2109 pnanovdb_uint32_t byte_offset = PNANOVDB_GRID_TYPE_GET(grid_type, leaf_off_table) + ((PNANOVDB_GRID_TYPE_GET(grid_type, value_stride_bits) * n) >> 3u);
2110 return pnanovdb_address_offset(node.
address, byte_offset);
2121PNANOVDB_FORCE_INLINE
float pnanovdb_leaf_fp_read_float(pnanovdb_buf_t buf, pnanovdb_address_t address, PNANOVDB_IN(pnanovdb_coord_t) ijk, pnanovdb_uint32_t value_log_bits)
2124 pnanovdb_uint32_t value_bits = 1u << value_log_bits;
2125 pnanovdb_uint32_t value_mask = (1u << value_bits) - 1u;
2126 pnanovdb_uint32_t values_per_word_bits = 5u - value_log_bits;
2127 pnanovdb_uint32_t values_per_word_mask = (1u << values_per_word_bits) - 1u;
2132 pnanovdb_uint32_t raw =
pnanovdb_read_uint32(buf, pnanovdb_address_offset(address, ((n >> values_per_word_bits) << 2u)));
2133 pnanovdb_uint32_t value_compressed = (raw >> ((n & values_per_word_mask) << value_log_bits)) & value_mask;
2134 return pnanovdb_uint32_to_float(value_compressed) * quantum + minimum;
2155 pnanovdb_uint32_t flags = bbox_dif_and_flags >> 24u;
2156 pnanovdb_uint32_t value_log_bits = flags >> 5;
2219 pnanovdb_uint64_t idx = pnanovdb_uint32_as_uint64_low(0u);
2230 pnanovdb_uint64_t idx = pnanovdb_uint32_as_uint64_low(0u);
2241 pnanovdb_uint64_t idx = pnanovdb_uint32_as_uint64_low(0u);
2252 pnanovdb_uint64_t idx = pnanovdb_uint32_as_uint64_low(0u);
2265 pnanovdb_uint32_t word_idx = n >> 6u;
2266 pnanovdb_uint32_t bit_idx = n & 63u;
2269 pnanovdb_uint64_t value_index = pnanovdb_uint32_as_uint64_low(0u);
2272 pnanovdb_uint32_t sum = 0u;
2276 pnanovdb_uint64_t prefix_sum =
pnanovdb_read_uint64(buf, pnanovdb_address_offset(value_address, 8u));
2315 raw32 = (raw32 & 0xFFFF0000) | (value & 0x0000FFFF);
2319 raw32 = (raw32 & 0x0000FFFF) | (value << 16u);
2325 pnanovdb_uint32_t word_idx = i >> 5;
2326 pnanovdb_uint32_t bit_idx = i & 31;
2329 val_mask = val_mask | (1u << bit_idx);
2342 return (((PNANOVDB_DEREF(ijk).x & 127) >> 3) << (2 * 4)) +
2343 (((PNANOVDB_DEREF(ijk).y & 127) >> 3) << (4)) +
2344 ((PNANOVDB_DEREF(ijk).z & 127) >> 3);
2349 PNANOVDB_UNUSED(buf);
2350 pnanovdb_uint32_t byte_offset = PNANOVDB_GRID_TYPE_GET(grid_type, lower_off_min);
2351 return pnanovdb_address_offset(node.
address, byte_offset);
2356 PNANOVDB_UNUSED(buf);
2357 pnanovdb_uint32_t byte_offset = PNANOVDB_GRID_TYPE_GET(grid_type, lower_off_max);
2358 return pnanovdb_address_offset(node.
address, byte_offset);
2363 PNANOVDB_UNUSED(buf);
2364 pnanovdb_uint32_t byte_offset = PNANOVDB_GRID_TYPE_GET(grid_type, lower_off_ave);
2365 return pnanovdb_address_offset(node.
address, byte_offset);
2370 PNANOVDB_UNUSED(buf);
2371 pnanovdb_uint32_t byte_offset = PNANOVDB_GRID_TYPE_GET(grid_type, lower_off_stddev);
2372 return pnanovdb_address_offset(node.
address, byte_offset);
2377 PNANOVDB_UNUSED(buf);
2378 pnanovdb_uint32_t byte_offset = PNANOVDB_GRID_TYPE_GET(grid_type, lower_off_table) + PNANOVDB_GRID_TYPE_GET(grid_type, table_stride) * n;
2379 return pnanovdb_address_offset(node.
address, byte_offset);
2398 pnanovdb_address_t value_address;
2403 PNANOVDB_DEREF(level) = 0u;
2408 PNANOVDB_DEREF(level) = 1u;
2410 return value_address;
2415 pnanovdb_uint32_t level;
2434 return (((PNANOVDB_DEREF(ijk).x & 4095) >> 7) << (2 * 5)) +
2435 (((PNANOVDB_DEREF(ijk).y & 4095) >> 7) << (5)) +
2436 ((PNANOVDB_DEREF(ijk).z & 4095) >> 7);
2441 PNANOVDB_UNUSED(buf);
2442 pnanovdb_uint32_t byte_offset = PNANOVDB_GRID_TYPE_GET(grid_type, upper_off_min);
2443 return pnanovdb_address_offset(node.
address, byte_offset);
2448 PNANOVDB_UNUSED(buf);
2449 pnanovdb_uint32_t byte_offset = PNANOVDB_GRID_TYPE_GET(grid_type, upper_off_max);
2450 return pnanovdb_address_offset(node.
address, byte_offset);
2455 PNANOVDB_UNUSED(buf);
2456 pnanovdb_uint32_t byte_offset = PNANOVDB_GRID_TYPE_GET(grid_type, upper_off_ave);
2457 return pnanovdb_address_offset(node.
address, byte_offset);
2462 PNANOVDB_UNUSED(buf);
2463 pnanovdb_uint32_t byte_offset = PNANOVDB_GRID_TYPE_GET(grid_type, upper_off_stddev);
2464 return pnanovdb_address_offset(node.
address, byte_offset);
2469 PNANOVDB_UNUSED(buf);
2470 pnanovdb_uint32_t byte_offset = PNANOVDB_GRID_TYPE_GET(grid_type, upper_off_table) + PNANOVDB_GRID_TYPE_GET(grid_type, table_stride) * n;
2471 return pnanovdb_address_offset(node.
address, byte_offset);
2490 pnanovdb_address_t value_address;
2499 PNANOVDB_DEREF(level) = 2u;
2501 return value_address;
2506 pnanovdb_uint32_t level;
2525 PNANOVDB_UNUSED(buf);
2526 pnanovdb_uint32_t byte_offset = PNANOVDB_GRID_TYPE_GET(grid_type, root_off_background);
2527 return pnanovdb_address_offset(root.
address, byte_offset);
2532 PNANOVDB_UNUSED(buf);
2533 pnanovdb_uint32_t byte_offset = PNANOVDB_GRID_TYPE_GET(grid_type, root_off_min);
2534 return pnanovdb_address_offset(root.
address, byte_offset);
2539 PNANOVDB_UNUSED(buf);
2540 pnanovdb_uint32_t byte_offset = PNANOVDB_GRID_TYPE_GET(grid_type, root_off_max);
2541 return pnanovdb_address_offset(root.
address, byte_offset);
2546 PNANOVDB_UNUSED(buf);
2547 pnanovdb_uint32_t byte_offset = PNANOVDB_GRID_TYPE_GET(grid_type, root_off_ave);
2548 return pnanovdb_address_offset(root.
address, byte_offset);
2553 PNANOVDB_UNUSED(buf);
2554 pnanovdb_uint32_t byte_offset = PNANOVDB_GRID_TYPE_GET(grid_type, root_off_stddev);
2555 return pnanovdb_address_offset(root.
address, byte_offset);
2560 PNANOVDB_UNUSED(buf);
2561 pnanovdb_uint32_t byte_offset = PNANOVDB_GRID_TYPE_GET(grid_type, root_tile_off_value);
2562 return pnanovdb_address_offset(root_tile.
address, byte_offset);
2568 pnanovdb_address_t ret;
2569 if (pnanovdb_address_is_null(tile.
address))
2571 ret = pnanovdb_address_offset(root.
address, PNANOVDB_GRID_TYPE_GET(grid_type, root_off_background));
2572 PNANOVDB_DEREF(level) = 4u;
2576 ret = pnanovdb_address_offset(tile.
address, PNANOVDB_GRID_TYPE_GET(grid_type, root_tile_off_value));
2577 PNANOVDB_DEREF(level) = 3u;
2589 pnanovdb_uint32_t level;
2595 pnanovdb_uint32_t level;
2597 PNANOVDB_DEREF(bit_index) = level == 0u ? pnanovdb_int32_as_uint32(PNANOVDB_DEREF(ijk).x & 7) : 0u;
2601PNANOVDB_FORCE_INLINE
float pnanovdb_root_fp4_read_float(pnanovdb_buf_t buf, pnanovdb_address_t address, PNANOVDB_IN(pnanovdb_coord_t) ijk, pnanovdb_uint32_t level)
2615PNANOVDB_FORCE_INLINE
float pnanovdb_root_fp8_read_float(pnanovdb_buf_t buf, pnanovdb_address_t address, PNANOVDB_IN(pnanovdb_coord_t) ijk, pnanovdb_uint32_t level)
2629PNANOVDB_FORCE_INLINE
float pnanovdb_root_fp16_read_float(pnanovdb_buf_t buf, pnanovdb_address_t address, PNANOVDB_IN(pnanovdb_coord_t) ijk, pnanovdb_uint32_t level)
2643PNANOVDB_FORCE_INLINE
float pnanovdb_root_fpn_read_float(pnanovdb_buf_t buf, pnanovdb_address_t address, PNANOVDB_IN(pnanovdb_coord_t) ijk, pnanovdb_uint32_t level)
2659 pnanovdb_uint64_t ret;
2673 pnanovdb_uint64_t ret;
2687 pnanovdb_address_t value_address,
2688 PNANOVDB_IN(pnanovdb_coord_t) ijk,
2689 pnanovdb_uint32_t level,
2690 PNANOVDB_INOUT(pnanovdb_uint64_t)range_begin,
2691 PNANOVDB_INOUT(pnanovdb_uint64_t)range_end
2694 pnanovdb_uint32_t local_range_begin = 0u;
2695 pnanovdb_uint32_t local_range_end = 0u;
2696 pnanovdb_uint64_t offset = pnanovdb_uint32_as_uint64_low(0u);
2711 return pnanovdb_uint32_as_uint64_low(local_range_end - local_range_begin);
2716 pnanovdb_grid_type_t value_type,
2717 pnanovdb_address_t value_address,
2718 pnanovdb_address_t blindmetadata_value_address,
2719 PNANOVDB_IN(pnanovdb_coord_t) ijk,
2720 pnanovdb_uint32_t level,
2721 PNANOVDB_INOUT(pnanovdb_address_t)address_begin,
2722 PNANOVDB_INOUT(pnanovdb_address_t)address_end
2725 pnanovdb_uint64_t range_begin;
2726 pnanovdb_uint64_t range_end;
2729 pnanovdb_uint32_t stride = 12u;
2738 PNANOVDB_DEREF(address_begin) = pnanovdb_address_offset64_product(blindmetadata_value_address, range_begin, stride);
2739 PNANOVDB_DEREF(address_end) = pnanovdb_address_offset64_product(blindmetadata_value_address, range_end, stride);
2757 PNANOVDB_DEREF(acc).key.x = 0x7FFFFFFF;
2758 PNANOVDB_DEREF(acc).key.y = 0x7FFFFFFF;
2759 PNANOVDB_DEREF(acc).key.z = 0x7FFFFFFF;
2760 PNANOVDB_DEREF(acc).leaf.address = pnanovdb_address_null();
2761 PNANOVDB_DEREF(acc).lower.address = pnanovdb_address_null();
2762 PNANOVDB_DEREF(acc).upper.address = pnanovdb_address_null();
2763 PNANOVDB_DEREF(acc).root = root;
2768 if (pnanovdb_address_is_null(PNANOVDB_DEREF(acc).leaf.
address)) {
return PNANOVDB_FALSE; }
2769 if ((dirty & ~((1u << 3) - 1u)) != 0)
2771 PNANOVDB_DEREF(acc).leaf.address = pnanovdb_address_null();
2772 return PNANOVDB_FALSE;
2774 return PNANOVDB_TRUE;
2778 if (pnanovdb_address_is_null(PNANOVDB_DEREF(acc).lower.
address)) {
return PNANOVDB_FALSE; }
2779 if ((dirty & ~((1u << 7) - 1u)) != 0)
2781 PNANOVDB_DEREF(acc).lower.address = pnanovdb_address_null();
2782 return PNANOVDB_FALSE;
2784 return PNANOVDB_TRUE;
2788 if (pnanovdb_address_is_null(PNANOVDB_DEREF(acc).upper.
address)) {
return PNANOVDB_FALSE; }
2789 if ((dirty & ~((1u << 12) - 1u)) != 0)
2791 PNANOVDB_DEREF(acc).upper.address = pnanovdb_address_null();
2792 return PNANOVDB_FALSE;
2794 return PNANOVDB_TRUE;
2798 return (PNANOVDB_DEREF(ijk).x ^ PNANOVDB_DEREF(acc).key.x) | (PNANOVDB_DEREF(ijk).y ^ PNANOVDB_DEREF(acc).key.y) | (PNANOVDB_DEREF(ijk).z ^ PNANOVDB_DEREF(acc).key.z);
2803 PNANOVDB_UNUSED(acc);
2811 pnanovdb_address_t value_address;
2815 PNANOVDB_DEREF(acc).leaf = child;
2816 PNANOVDB_DEREF(acc).key = PNANOVDB_DEREF(ijk);
2818 PNANOVDB_DEREF(level) = 0u;
2823 PNANOVDB_DEREF(level) = 1u;
2825 return value_address;
2830 pnanovdb_uint32_t level;
2837 pnanovdb_address_t value_address;
2841 PNANOVDB_DEREF(acc).lower = child;
2842 PNANOVDB_DEREF(acc).key = PNANOVDB_DEREF(ijk);
2848 PNANOVDB_DEREF(level) = 2u;
2850 return value_address;
2855 pnanovdb_uint32_t level;
2862 pnanovdb_address_t ret;
2863 if (pnanovdb_address_is_null(tile.
address))
2865 ret = pnanovdb_address_offset(root.
address, PNANOVDB_GRID_TYPE_GET(grid_type, root_off_background));
2866 PNANOVDB_DEREF(level) = 4u;
2870 ret = pnanovdb_address_offset(tile.
address, PNANOVDB_GRID_TYPE_GET(grid_type, root_tile_off_value));
2871 PNANOVDB_DEREF(level) = 3u;
2876 PNANOVDB_DEREF(acc).upper = child;
2877 PNANOVDB_DEREF(acc).key = PNANOVDB_DEREF(ijk);
2885 pnanovdb_uint32_t level;
2893 pnanovdb_address_t value_address;
2897 PNANOVDB_DEREF(level) = 0u;
2911 return value_address;
2916 pnanovdb_uint32_t level;
2922 pnanovdb_uint32_t level;
2924 PNANOVDB_DEREF(bit_index) = level == 0u ? pnanovdb_int32_as_uint32(PNANOVDB_DEREF(ijk).x & 7) : 0u;
2932 PNANOVDB_UNUSED(grid_type);
2933 PNANOVDB_UNUSED(buf);
2934 PNANOVDB_UNUSED(leaf);
2935 PNANOVDB_UNUSED(ijk);
2936 PNANOVDB_UNUSED(acc);
2943 pnanovdb_uint32_t ret;
2947 PNANOVDB_DEREF(acc).leaf = child;
2948 PNANOVDB_DEREF(acc).key = PNANOVDB_DEREF(ijk);
2961 pnanovdb_uint32_t ret;
2965 PNANOVDB_DEREF(acc).lower = child;
2966 PNANOVDB_DEREF(acc).key = PNANOVDB_DEREF(ijk);
2971 ret = (1u << (4u + 3u));
2979 pnanovdb_uint32_t ret;
2980 if (pnanovdb_address_is_null(tile.
address))
2982 ret = 1u << (5u + 4u + 3u);
2986 ret = 1u << (5u + 4u + 3u);
2991 PNANOVDB_DEREF(acc).upper = child;
2992 PNANOVDB_DEREF(acc).key = PNANOVDB_DEREF(ijk);
3002 pnanovdb_uint32_t dim;
3026 PNANOVDB_UNUSED(grid_type);
3027 PNANOVDB_UNUSED(acc);
3035 pnanovdb_bool_t is_active;
3039 PNANOVDB_DEREF(acc).leaf = child;
3040 PNANOVDB_DEREF(acc).key = PNANOVDB_DEREF(ijk);
3053 pnanovdb_bool_t is_active;
3057 PNANOVDB_DEREF(acc).lower = child;
3058 PNANOVDB_DEREF(acc).key = PNANOVDB_DEREF(ijk);
3071 pnanovdb_bool_t is_active;
3072 if (pnanovdb_address_is_null(tile.
address))
3074 is_active = PNANOVDB_FALSE;
3079 is_active = state != 0u;
3084 PNANOVDB_DEREF(acc).upper = child;
3085 PNANOVDB_DEREF(acc).key = PNANOVDB_DEREF(ijk);
3095 pnanovdb_bool_t is_active;
3119 pnanovdb_vec3_t dst;
3120 float sx = PNANOVDB_DEREF(src).x;
3121 float sy = PNANOVDB_DEREF(src).y;
3122 float sz = PNANOVDB_DEREF(src).z;
3131 pnanovdb_vec3_t dst;
3143 pnanovdb_vec3_t dst;
3144 float sx = PNANOVDB_DEREF(src).x;
3145 float sy = PNANOVDB_DEREF(src).y;
3146 float sz = PNANOVDB_DEREF(src).z;
3155 pnanovdb_vec3_t dst;
3156 float sx = PNANOVDB_DEREF(src).x;
3157 float sy = PNANOVDB_DEREF(src).y;
3158 float sz = PNANOVDB_DEREF(src).z;
3274 0.14425f, 0.643275f, 0.830409f, 0.331384f, 0.105263f, 0.604289f, 0.167641f, 0.666667f,
3275 0.892788f, 0.393762f, 0.0818713f, 0.580897f, 0.853801f, 0.354776f, 0.916179f, 0.417154f,
3276 0.612086f, 0.11306f, 0.79922f, 0.300195f, 0.510721f, 0.0116959f, 0.947368f, 0.448343f,
3277 0.362573f, 0.861598f, 0.0506823f, 0.549708f, 0.261209f, 0.760234f, 0.19883f, 0.697856f,
3278 0.140351f, 0.639376f, 0.576998f, 0.0779727f, 0.522417f, 0.0233918f, 0.460039f, 0.959064f,
3279 0.888889f, 0.389864f, 0.327485f, 0.826511f, 0.272904f, 0.77193f, 0.709552f, 0.210526f,
3280 0.483431f, 0.982456f, 0.296296f, 0.795322f, 0.116959f, 0.615984f, 0.0545809f, 0.553606f,
3281 0.732943f, 0.233918f, 0.545809f, 0.0467836f, 0.865497f, 0.366472f, 0.803119f, 0.304094f,
3282 0.518519f, 0.0194932f, 0.45614f, 0.955166f, 0.729045f, 0.230019f, 0.54191f, 0.042885f,
3283 0.269006f, 0.768031f, 0.705653f, 0.206628f, 0.479532f, 0.978558f, 0.292398f, 0.791423f,
3284 0.237817f, 0.736842f, 0.424951f, 0.923977f, 0.136452f, 0.635478f, 0.323587f, 0.822612f,
3285 0.986355f, 0.487329f, 0.674464f, 0.175439f, 0.88499f, 0.385965f, 0.573099f, 0.0740741f,
3286 0.51462f, 0.0155945f, 0.202729f, 0.701754f, 0.148148f, 0.647174f, 0.834308f, 0.335283f,
3287 0.265107f, 0.764133f, 0.951267f, 0.452242f, 0.896686f, 0.397661f, 0.08577f, 0.584795f,
3288 0.8577f, 0.358674f, 0.920078f, 0.421053f, 0.740741f, 0.241715f, 0.678363f, 0.179337f,
3289 0.109162f, 0.608187f, 0.17154f, 0.670565f, 0.491228f, 0.990253f, 0.42885f, 0.927875f,
3290 0.0662768f, 0.565302f, 0.62768f, 0.128655f, 0.183236f, 0.682261f, 0.744639f, 0.245614f,
3291 0.814815f, 0.315789f, 0.378168f, 0.877193f, 0.931774f, 0.432749f, 0.495127f, 0.994152f,
3292 0.0350877f, 0.534113f, 0.97076f, 0.471735f, 0.214425f, 0.71345f, 0.526316f, 0.0272904f,
3293 0.783626f, 0.2846f, 0.222222f, 0.721248f, 0.962963f, 0.463938f, 0.276803f, 0.775828f,
3294 0.966862f, 0.467836f, 0.405458f, 0.904483f, 0.0701754f, 0.569201f, 0.881092f, 0.382066f,
3295 0.218324f, 0.717349f, 0.654971f, 0.155945f, 0.818713f, 0.319688f, 0.132554f, 0.631579f,
3296 0.0623782f, 0.561404f, 0.748538f, 0.249513f, 0.912281f, 0.413255f, 0.974659f, 0.475634f,
3297 0.810916f, 0.311891f, 0.499025f, 0.998051f, 0.163743f, 0.662768f, 0.226121f, 0.725146f,
3298 0.690058f, 0.191033f, 0.00389864f, 0.502924f, 0.557505f, 0.0584795f, 0.120858f, 0.619883f,
3299 0.440546f, 0.939571f, 0.752437f, 0.253411f, 0.307992f, 0.807018f, 0.869396f, 0.37037f,
3300 0.658869f, 0.159844f, 0.346979f, 0.846004f, 0.588694f, 0.0896686f, 0.152047f, 0.651072f,
3301 0.409357f, 0.908382f, 0.596491f, 0.0974659f, 0.339181f, 0.838207f, 0.900585f, 0.401559f,
3302 0.34308f, 0.842105f, 0.779727f, 0.280702f, 0.693957f, 0.194932f, 0.25731f, 0.756335f,
3303 0.592593f, 0.0935673f, 0.0311891f, 0.530214f, 0.444444f, 0.94347f, 0.506823f, 0.00779727f,
3304 0.68616f, 0.187135f, 0.124756f, 0.623782f, 0.288499f, 0.787524f, 0.350877f, 0.849903f,
3305 0.436647f, 0.935673f, 0.873294f, 0.374269f, 0.538012f, 0.0389864f, 0.60039f, 0.101365f,
3306 0.57115f, 0.0721248f, 0.758285f, 0.259259f, 0.719298f, 0.220273f, 0.532164f, 0.0331384f,
3307 0.321637f, 0.820663f, 0.00974659f, 0.508772f, 0.469786f, 0.968811f, 0.282651f, 0.781676f,
3308 0.539961f, 0.0409357f, 0.727096f, 0.22807f, 0.500975f, 0.00194932f, 0.563353f, 0.0643275f,
3309 0.290448f, 0.789474f, 0.477583f, 0.976608f, 0.251462f, 0.750487f, 0.31384f, 0.812865f,
3310 0.94152f, 0.442495f, 0.879142f, 0.380117f, 0.37232f, 0.871345f, 0.309942f, 0.808967f,
3311 0.192982f, 0.692008f, 0.130604f, 0.62963f, 0.621832f, 0.122807f, 0.559454f, 0.0604289f,
3312 0.660819f, 0.161793f, 0.723197f, 0.224172f, 0.403509f, 0.902534f, 0.840156f, 0.341131f,
3313 0.411306f, 0.910331f, 0.473684f, 0.97271f, 0.653021f, 0.153996f, 0.0916179f, 0.590643f,
3314 0.196881f, 0.695906f, 0.384016f, 0.883041f, 0.0955166f, 0.594542f, 0.157895f, 0.65692f,
3315 0.945419f, 0.446394f, 0.633528f, 0.134503f, 0.844055f, 0.345029f, 0.906433f, 0.407407f,
3316 0.165692f, 0.664717f, 0.103314f, 0.602339f, 0.126706f, 0.625731f, 0.189084f, 0.688109f,
3317 0.91423f, 0.415205f, 0.851852f, 0.352827f, 0.875244f, 0.376218f, 0.937622f, 0.438596f,
3318 0.317739f, 0.816764f, 0.255361f, 0.754386f, 0.996101f, 0.497076f, 0.933723f, 0.434698f,
3319 0.567251f, 0.0682261f, 0.504873f, 0.00584795f, 0.247563f, 0.746589f, 0.185185f, 0.684211f,
3320 0.037037f, 0.536062f, 0.0994152f, 0.598441f, 0.777778f, 0.278752f, 0.465887f, 0.964912f,
3321 0.785575f, 0.28655f, 0.847953f, 0.348928f, 0.0292398f, 0.528265f, 0.7154f, 0.216374f,
3322 0.39961f, 0.898636f, 0.961014f, 0.461988f, 0.0487329f, 0.547758f, 0.111111f, 0.610136f,
3323 0.649123f, 0.150097f, 0.212476f, 0.711501f, 0.797271f, 0.298246f, 0.859649f, 0.360624f,
3324 0.118908f, 0.617934f, 0.0565302f, 0.555556f, 0.329435f, 0.82846f, 0.516569f, 0.0175439f,
3325 0.867446f, 0.368421f, 0.805068f, 0.306043f, 0.578947f, 0.079922f, 0.267057f, 0.766082f,
3326 0.270955f, 0.76998f, 0.707602f, 0.208577f, 0.668616f, 0.169591f, 0.606238f, 0.107212f,
3327 0.520468f, 0.0214425f, 0.45809f, 0.957115f, 0.419103f, 0.918129f, 0.356725f, 0.855751f,
3328 0.988304f, 0.489279f, 0.426901f, 0.925926f, 0.450292f, 0.949318f, 0.512671f, 0.0136452f,
3329 0.239766f, 0.738791f, 0.676413f, 0.177388f, 0.699805f, 0.20078f, 0.263158f, 0.762183f,
3330 0.773879f, 0.274854f, 0.337232f, 0.836257f, 0.672515f, 0.173489f, 0.734893f, 0.235867f,
3331 0.0253411f, 0.524366f, 0.586745f, 0.0877193f, 0.423002f, 0.922027f, 0.48538f, 0.984405f,
3332 0.74269f, 0.243665f, 0.680312f, 0.181287f, 0.953216f, 0.454191f, 0.1423f, 0.641326f,
3333 0.493177f, 0.992203f, 0.430799f, 0.929825f, 0.204678f, 0.703704f, 0.890838f, 0.391813f,
3334 0.894737f, 0.395712f, 0.0838207f, 0.582846f, 0.0448343f, 0.54386f, 0.231969f, 0.730994f,
3335 0.146199f, 0.645224f, 0.832359f, 0.333333f, 0.793372f, 0.294347f, 0.980507f, 0.481481f,
3336 0.364522f, 0.863548f, 0.80117f, 0.302144f, 0.824561f, 0.325536f, 0.138402f, 0.637427f,
3337 0.614035f, 0.11501f, 0.0526316f, 0.551657f, 0.0760234f, 0.575049f, 0.88694f, 0.387914f,
3350#define PNANOVDB_ENFORCE_FORWARD_STEPPING
3352#define PNANOVDB_HDDA_FLOAT_MAX 1e38f
3354struct pnanovdb_hdda_t
3356 pnanovdb_int32_t dim;
3359 pnanovdb_coord_t voxel;
3360 pnanovdb_coord_t step;
3361 pnanovdb_vec3_t delta;
3362 pnanovdb_vec3_t next;
3364PNANOVDB_STRUCT_TYPEDEF(pnanovdb_hdda_t)
3366PNANOVDB_FORCE_INLINE pnanovdb_coord_t pnanovdb_hdda_pos_to_ijk(PNANOVDB_IN(pnanovdb_vec3_t) pos)
3368 pnanovdb_coord_t voxel;
3369 voxel.x = pnanovdb_float_to_int32(pnanovdb_floor(PNANOVDB_DEREF(pos).x));
3370 voxel.y = pnanovdb_float_to_int32(pnanovdb_floor(PNANOVDB_DEREF(pos).y));
3371 voxel.z = pnanovdb_float_to_int32(pnanovdb_floor(PNANOVDB_DEREF(pos).z));
3375PNANOVDB_FORCE_INLINE pnanovdb_coord_t pnanovdb_hdda_pos_to_voxel(PNANOVDB_IN(pnanovdb_vec3_t) pos,
int dim)
3377 pnanovdb_coord_t voxel;
3378 voxel.x = pnanovdb_float_to_int32(pnanovdb_floor(PNANOVDB_DEREF(pos).x)) & (~(dim - 1));
3379 voxel.y = pnanovdb_float_to_int32(pnanovdb_floor(PNANOVDB_DEREF(pos).y)) & (~(dim - 1));
3380 voxel.z = pnanovdb_float_to_int32(pnanovdb_floor(PNANOVDB_DEREF(pos).z)) & (~(dim - 1));
3384PNANOVDB_FORCE_INLINE pnanovdb_vec3_t pnanovdb_hdda_ray_start(PNANOVDB_IN(pnanovdb_vec3_t) origin,
float tmin, PNANOVDB_IN(pnanovdb_vec3_t) direction)
3386 pnanovdb_vec3_t pos = pnanovdb_vec3_add(
3387 pnanovdb_vec3_mul(PNANOVDB_DEREF(direction), pnanovdb_vec3_uniform(tmin)),
3388 PNANOVDB_DEREF(origin)
3393PNANOVDB_FORCE_INLINE
void pnanovdb_hdda_init(PNANOVDB_INOUT(pnanovdb_hdda_t) hdda, PNANOVDB_IN(pnanovdb_vec3_t) origin,
float tmin, PNANOVDB_IN(pnanovdb_vec3_t) direction,
float tmax,
int dim)
3395 PNANOVDB_DEREF(hdda).dim = dim;
3396 PNANOVDB_DEREF(hdda).tmin = tmin;
3397 PNANOVDB_DEREF(hdda).tmax = tmax;
3399 pnanovdb_vec3_t pos = pnanovdb_hdda_ray_start(origin, tmin, direction);
3400 pnanovdb_vec3_t dir_inv = pnanovdb_vec3_div(pnanovdb_vec3_uniform(1.f), PNANOVDB_DEREF(direction));
3402 PNANOVDB_DEREF(hdda).voxel = pnanovdb_hdda_pos_to_voxel(PNANOVDB_REF(pos), dim);
3405 if (PNANOVDB_DEREF(direction).x == 0.f)
3407 PNANOVDB_DEREF(hdda).next.x = PNANOVDB_HDDA_FLOAT_MAX;
3408 PNANOVDB_DEREF(hdda).step.x = 0;
3409 PNANOVDB_DEREF(hdda).delta.x = 0.f;
3411 else if (dir_inv.x > 0.f)
3413 PNANOVDB_DEREF(hdda).step.x = 1;
3414 PNANOVDB_DEREF(hdda).next.x = PNANOVDB_DEREF(hdda).tmin + (PNANOVDB_DEREF(hdda).voxel.x + dim - pos.x) * dir_inv.x;
3415 PNANOVDB_DEREF(hdda).delta.x = dir_inv.x;
3419 PNANOVDB_DEREF(hdda).step.x = -1;
3420 PNANOVDB_DEREF(hdda).next.x = PNANOVDB_DEREF(hdda).tmin + (PNANOVDB_DEREF(hdda).voxel.x - pos.x) * dir_inv.x;
3421 PNANOVDB_DEREF(hdda).delta.x = -dir_inv.x;
3425 if (PNANOVDB_DEREF(direction).y == 0.f)
3427 PNANOVDB_DEREF(hdda).next.y = PNANOVDB_HDDA_FLOAT_MAX;
3428 PNANOVDB_DEREF(hdda).step.y = 0;
3429 PNANOVDB_DEREF(hdda).delta.y = 0.f;
3431 else if (dir_inv.y > 0.f)
3433 PNANOVDB_DEREF(hdda).step.y = 1;
3434 PNANOVDB_DEREF(hdda).next.y = PNANOVDB_DEREF(hdda).tmin + (PNANOVDB_DEREF(hdda).voxel.y + dim - pos.y) * dir_inv.y;
3435 PNANOVDB_DEREF(hdda).delta.y = dir_inv.y;
3439 PNANOVDB_DEREF(hdda).step.y = -1;
3440 PNANOVDB_DEREF(hdda).next.y = PNANOVDB_DEREF(hdda).tmin + (PNANOVDB_DEREF(hdda).voxel.y - pos.y) * dir_inv.y;
3441 PNANOVDB_DEREF(hdda).delta.y = -dir_inv.y;
3445 if (PNANOVDB_DEREF(direction).z == 0.f)
3447 PNANOVDB_DEREF(hdda).next.z = PNANOVDB_HDDA_FLOAT_MAX;
3448 PNANOVDB_DEREF(hdda).step.z = 0;
3449 PNANOVDB_DEREF(hdda).delta.z = 0.f;
3451 else if (dir_inv.z > 0.f)
3453 PNANOVDB_DEREF(hdda).step.z = 1;
3454 PNANOVDB_DEREF(hdda).next.z = PNANOVDB_DEREF(hdda).tmin + (PNANOVDB_DEREF(hdda).voxel.z + dim - pos.z) * dir_inv.z;
3455 PNANOVDB_DEREF(hdda).delta.z = dir_inv.z;
3459 PNANOVDB_DEREF(hdda).step.z = -1;
3460 PNANOVDB_DEREF(hdda).next.z = PNANOVDB_DEREF(hdda).tmin + (PNANOVDB_DEREF(hdda).voxel.z - pos.z) * dir_inv.z;
3461 PNANOVDB_DEREF(hdda).delta.z = -dir_inv.z;
3465PNANOVDB_FORCE_INLINE pnanovdb_bool_t pnanovdb_hdda_update(PNANOVDB_INOUT(pnanovdb_hdda_t) hdda, PNANOVDB_IN(pnanovdb_vec3_t) origin, PNANOVDB_IN(pnanovdb_vec3_t) direction,
int dim)
3467 if (PNANOVDB_DEREF(hdda).dim == dim)
3469 return PNANOVDB_FALSE;
3473 pnanovdb_coord_t voxel_max = {
3474 (PNANOVDB_DEREF(hdda).voxel.x + PNANOVDB_DEREF(hdda).dim - 1) & (~(dim - 1)),
3475 (PNANOVDB_DEREF(hdda).voxel.y + PNANOVDB_DEREF(hdda).dim - 1) & (~(dim - 1)),
3476 (PNANOVDB_DEREF(hdda).voxel.z + PNANOVDB_DEREF(hdda).dim - 1) & (~(dim - 1))
3478 pnanovdb_coord_t voxel_min = {
3479 PNANOVDB_DEREF(hdda).voxel.x & (~(dim - 1)),
3480 PNANOVDB_DEREF(hdda).voxel.y & (~(dim - 1)),
3481 PNANOVDB_DEREF(hdda).voxel.z & (~(dim - 1))
3484 PNANOVDB_DEREF(hdda).dim = dim;
3486 pnanovdb_vec3_t pos = pnanovdb_vec3_add(
3487 pnanovdb_vec3_mul(PNANOVDB_DEREF(direction), pnanovdb_vec3_uniform(PNANOVDB_DEREF(hdda).tmin)),
3488 PNANOVDB_DEREF(origin)
3490 pnanovdb_vec3_t dir_inv = pnanovdb_vec3_div(pnanovdb_vec3_uniform(1.f), PNANOVDB_DEREF(direction));
3492 PNANOVDB_DEREF(hdda).voxel = pnanovdb_hdda_pos_to_voxel(PNANOVDB_REF(pos), dim);
3495 PNANOVDB_DEREF(hdda).voxel.x = PNANOVDB_DEREF(hdda).voxel.x < voxel_max.x ? PNANOVDB_DEREF(hdda).voxel.x : voxel_max.x;
3496 PNANOVDB_DEREF(hdda).voxel.y = PNANOVDB_DEREF(hdda).voxel.y < voxel_max.y ? PNANOVDB_DEREF(hdda).voxel.y : voxel_max.y;
3497 PNANOVDB_DEREF(hdda).voxel.z = PNANOVDB_DEREF(hdda).voxel.z < voxel_max.z ? PNANOVDB_DEREF(hdda).voxel.z : voxel_max.z;
3498 PNANOVDB_DEREF(hdda).voxel.x = PNANOVDB_DEREF(hdda).voxel.x > voxel_min.x ? PNANOVDB_DEREF(hdda).voxel.x : voxel_min.x;
3499 PNANOVDB_DEREF(hdda).voxel.y = PNANOVDB_DEREF(hdda).voxel.y > voxel_min.y ? PNANOVDB_DEREF(hdda).voxel.y : voxel_min.y;
3500 PNANOVDB_DEREF(hdda).voxel.z = PNANOVDB_DEREF(hdda).voxel.z > voxel_min.z ? PNANOVDB_DEREF(hdda).voxel.z : voxel_min.z;
3502 if (PNANOVDB_DEREF(hdda).step.x != 0)
3504 PNANOVDB_DEREF(hdda).next.x = PNANOVDB_DEREF(hdda).tmin + (PNANOVDB_DEREF(hdda).voxel.x - pos.x) * dir_inv.x;
3505 if (PNANOVDB_DEREF(hdda).step.x > 0)
3507 PNANOVDB_DEREF(hdda).next.x += dim * dir_inv.x;
3510 if (PNANOVDB_DEREF(hdda).step.y != 0)
3512 PNANOVDB_DEREF(hdda).next.y = PNANOVDB_DEREF(hdda).tmin + (PNANOVDB_DEREF(hdda).voxel.y - pos.y) * dir_inv.y;
3513 if (PNANOVDB_DEREF(hdda).step.y > 0)
3515 PNANOVDB_DEREF(hdda).next.y += dim * dir_inv.y;
3518 if (PNANOVDB_DEREF(hdda).step.z != 0)
3520 PNANOVDB_DEREF(hdda).next.z = PNANOVDB_DEREF(hdda).tmin + (PNANOVDB_DEREF(hdda).voxel.z - pos.z) * dir_inv.z;
3521 if (PNANOVDB_DEREF(hdda).step.z > 0)
3523 PNANOVDB_DEREF(hdda).next.z += dim * dir_inv.z;
3527 return PNANOVDB_TRUE;
3530PNANOVDB_FORCE_INLINE pnanovdb_bool_t pnanovdb_hdda_step(PNANOVDB_INOUT(pnanovdb_hdda_t) hdda)
3532 pnanovdb_bool_t ret;
3533 if (PNANOVDB_DEREF(hdda).next.x < PNANOVDB_DEREF(hdda).next.y && PNANOVDB_DEREF(hdda).next.x < PNANOVDB_DEREF(hdda).next.z)
3535#ifdef PNANOVDB_ENFORCE_FORWARD_STEPPING
3536 if (PNANOVDB_DEREF(hdda).next.x <= PNANOVDB_DEREF(hdda).tmin)
3538 PNANOVDB_DEREF(hdda).next.x += PNANOVDB_DEREF(hdda).tmin - 0.999999f * PNANOVDB_DEREF(hdda).next.x + 1.0e-6f;
3541 PNANOVDB_DEREF(hdda).tmin = PNANOVDB_DEREF(hdda).next.x;
3542 PNANOVDB_DEREF(hdda).next.x += PNANOVDB_DEREF(hdda).dim * PNANOVDB_DEREF(hdda).delta.x;
3543 PNANOVDB_DEREF(hdda).voxel.x += PNANOVDB_DEREF(hdda).dim * PNANOVDB_DEREF(hdda).step.x;
3544 ret = PNANOVDB_DEREF(hdda).tmin <= PNANOVDB_DEREF(hdda).tmax;
3546 else if (PNANOVDB_DEREF(hdda).next.y < PNANOVDB_DEREF(hdda).next.z)
3548#ifdef PNANOVDB_ENFORCE_FORWARD_STEPPING
3549 if (PNANOVDB_DEREF(hdda).next.y <= PNANOVDB_DEREF(hdda).tmin)
3551 PNANOVDB_DEREF(hdda).next.y += PNANOVDB_DEREF(hdda).tmin - 0.999999f * PNANOVDB_DEREF(hdda).next.y + 1.0e-6f;
3554 PNANOVDB_DEREF(hdda).tmin = PNANOVDB_DEREF(hdda).next.y;
3555 PNANOVDB_DEREF(hdda).next.y += PNANOVDB_DEREF(hdda).dim * PNANOVDB_DEREF(hdda).delta.y;
3556 PNANOVDB_DEREF(hdda).voxel.y += PNANOVDB_DEREF(hdda).dim * PNANOVDB_DEREF(hdda).step.y;
3557 ret = PNANOVDB_DEREF(hdda).tmin <= PNANOVDB_DEREF(hdda).tmax;
3561#ifdef PNANOVDB_ENFORCE_FORWARD_STEPPING
3562 if (PNANOVDB_DEREF(hdda).next.z <= PNANOVDB_DEREF(hdda).tmin)
3564 PNANOVDB_DEREF(hdda).next.z += PNANOVDB_DEREF(hdda).tmin - 0.999999f * PNANOVDB_DEREF(hdda).next.z + 1.0e-6f;
3567 PNANOVDB_DEREF(hdda).tmin = PNANOVDB_DEREF(hdda).next.z;
3568 PNANOVDB_DEREF(hdda).next.z += PNANOVDB_DEREF(hdda).dim * PNANOVDB_DEREF(hdda).delta.z;
3569 PNANOVDB_DEREF(hdda).voxel.z += PNANOVDB_DEREF(hdda).dim * PNANOVDB_DEREF(hdda).step.z;
3570 ret = PNANOVDB_DEREF(hdda).tmin <= PNANOVDB_DEREF(hdda).tmax;
3575PNANOVDB_FORCE_INLINE pnanovdb_bool_t pnanovdb_hdda_ray_clip(
3576 PNANOVDB_IN(pnanovdb_vec3_t) bbox_min,
3577 PNANOVDB_IN(pnanovdb_vec3_t) bbox_max,
3578 PNANOVDB_IN(pnanovdb_vec3_t) origin, PNANOVDB_INOUT(
float) tmin,
3579 PNANOVDB_IN(pnanovdb_vec3_t) direction, PNANOVDB_INOUT(
float) tmax
3582 pnanovdb_vec3_t dir_inv = pnanovdb_vec3_div(pnanovdb_vec3_uniform(1.f), PNANOVDB_DEREF(direction));
3583 pnanovdb_vec3_t t0 = pnanovdb_vec3_mul(pnanovdb_vec3_sub(PNANOVDB_DEREF(bbox_min), PNANOVDB_DEREF(origin)), dir_inv);
3584 pnanovdb_vec3_t t1 = pnanovdb_vec3_mul(pnanovdb_vec3_sub(PNANOVDB_DEREF(bbox_max), PNANOVDB_DEREF(origin)), dir_inv);
3585 pnanovdb_vec3_t tmin3 = pnanovdb_vec3_min(t0, t1);
3586 pnanovdb_vec3_t tmax3 = pnanovdb_vec3_max(t0, t1);
3587 float tnear = pnanovdb_max(tmin3.x, pnanovdb_max(tmin3.y, tmin3.z));
3588 float tfar = pnanovdb_min(tmax3.x, pnanovdb_min(tmax3.y, tmax3.z));
3589 pnanovdb_bool_t hit = tnear <= tfar;
3590 PNANOVDB_DEREF(tmin) = pnanovdb_max(PNANOVDB_DEREF(tmin), tnear);
3591 PNANOVDB_DEREF(tmax) = pnanovdb_min(PNANOVDB_DEREF(tmax), tfar);
3595PNANOVDB_FORCE_INLINE pnanovdb_bool_t pnanovdb_hdda_zero_crossing(
3596 pnanovdb_grid_type_t grid_type,
3599 PNANOVDB_IN(pnanovdb_vec3_t) origin,
float tmin,
3600 PNANOVDB_IN(pnanovdb_vec3_t) direction,
float tmax,
3601 PNANOVDB_INOUT(
float) thit,
3602 PNANOVDB_INOUT(
float) v
3607 pnanovdb_vec3_t bbox_minf = pnanovdb_coord_to_vec3(bbox_min);
3608 pnanovdb_vec3_t bbox_maxf = pnanovdb_coord_to_vec3(pnanovdb_coord_add(bbox_max, pnanovdb_coord_uniform(1)));
3610 pnanovdb_bool_t hit = pnanovdb_hdda_ray_clip(PNANOVDB_REF(bbox_minf), PNANOVDB_REF(bbox_maxf), origin, PNANOVDB_REF(tmin), direction, PNANOVDB_REF(tmax));
3611 if (!hit || tmax > 1.0e20f)
3613 return PNANOVDB_FALSE;
3616 pnanovdb_vec3_t pos = pnanovdb_hdda_ray_start(origin, tmin, direction);
3617 pnanovdb_coord_t ijk = pnanovdb_hdda_pos_to_ijk(PNANOVDB_REF(pos));
3623 pnanovdb_hdda_t hdda;
3624 pnanovdb_hdda_init(PNANOVDB_REF(hdda), origin, tmin, direction, tmax, dim);
3625 while (pnanovdb_hdda_step(PNANOVDB_REF(hdda)))
3627 pnanovdb_vec3_t pos_start = pnanovdb_hdda_ray_start(origin, hdda.tmin + 1.0001f, direction);
3628 ijk = pnanovdb_hdda_pos_to_ijk(PNANOVDB_REF(pos_start));
3630 pnanovdb_hdda_update(PNANOVDB_REF(hdda), origin, direction, dim);
3640 if (PNANOVDB_DEREF(v) * v0 < 0.f)
3642 PNANOVDB_DEREF(thit) = hdda.tmin;
3643 return PNANOVDB_TRUE;
3647 return PNANOVDB_FALSE;
PNANOVDB_FORCE_INLINE pnanovdb_uint32_t pnanovdb_version_get_minor(pnanovdb_uint32_t version)
Definition PNanoVDB.h:1422
PNANOVDB_FORCE_INLINE void pnanovdb_tree_set_tile_count_root(pnanovdb_buf_t buf, pnanovdb_tree_handle_t p, pnanovdb_uint32_t tile_count_root)
Definition PNanoVDB.h:1624
#define PNANOVDB_GRID_OFF_VERSION
Definition PNanoVDB.h:1286
PNANOVDB_FORCE_INLINE pnanovdb_address_t pnanovdb_readaccessor_get_value_address_and_level(pnanovdb_grid_type_t grid_type, pnanovdb_buf_t buf, PNANOVDB_INOUT(pnanovdb_readaccessor_t) acc, PNANOVDB_IN(pnanovdb_coord_t) ijk, PNANOVDB_INOUT(pnanovdb_uint32_t) level)
Definition PNanoVDB.h:2889
PNANOVDB_FORCE_INLINE pnanovdb_uint32_t pnanovdb_gridblindmetadata_get_semantic(pnanovdb_buf_t buf, pnanovdb_gridblindmetadata_handle_t p)
Definition PNanoVDB.h:1496
PNANOVDB_FORCE_INLINE pnanovdb_address_t pnanovdb_root_get_value_address(pnanovdb_grid_type_t grid_type, pnanovdb_buf_t buf, pnanovdb_root_handle_t root, PNANOVDB_IN(pnanovdb_coord_t) ijk)
Definition PNanoVDB.h:2587
PNANOVDB_FORCE_INLINE void pnanovdb_leaf_set_value_mask(pnanovdb_buf_t buf, pnanovdb_leaf_handle_t p, pnanovdb_uint32_t bit_index, pnanovdb_bool_t value)
Definition PNanoVDB.h:1871
#define PNANOVDB_UPPER_OFF_VALUE_MASK
Definition PNanoVDB.h:1727
PNANOVDB_FORCE_INLINE float pnanovdb_map_get_matf(pnanovdb_buf_t buf, pnanovdb_map_handle_t p, pnanovdb_uint32_t index)
Definition PNanoVDB.h:1203
#define PNANOVDB_TREE_OFF_NODE_COUNT_LOWER
Definition PNanoVDB.h:1556
#define PNANOVDB_GRIDBLINDMETADATA_OFF_VALUE_COUNT
Definition PNanoVDB.h:1480
PNANOVDB_FORCE_INLINE pnanovdb_int64_t pnanovdb_gridblindmetadata_get_data_offset(pnanovdb_buf_t buf, pnanovdb_gridblindmetadata_handle_t p)
Definition PNanoVDB.h:1487
PNANOVDB_STATIC_CONST float pnanovdb_dither_lut[512]
Definition PNanoVDB.h:3272
PNANOVDB_FORCE_INLINE pnanovdb_uint32_t pnanovdb_gridblindmetadata_get_value_size(pnanovdb_buf_t buf, pnanovdb_gridblindmetadata_handle_t p)
Definition PNanoVDB.h:1493
PNANOVDB_FORCE_INLINE pnanovdb_uint32_t pnanovdb_root_tile_get_state(pnanovdb_buf_t buf, pnanovdb_root_tile_handle_t p)
Definition PNanoVDB.h:1693
PNANOVDB_FORCE_INLINE pnanovdb_uint32_t pnanovdb_root_get_tile_count(pnanovdb_buf_t buf, pnanovdb_root_handle_t p)
Definition PNanoVDB.h:1655
PNANOVDB_FORCE_INLINE pnanovdb_coord_t pnanovdb_read_coord(pnanovdb_buf_t buf, pnanovdb_address_t address)
Definition PNanoVDB.h:981
PNANOVDB_FORCE_INLINE void pnanovdb_lower_set_value_mask(pnanovdb_buf_t buf, pnanovdb_lower_handle_t p, pnanovdb_uint32_t bit_index, pnanovdb_bool_t value)
Definition PNanoVDB.h:1816
#define PNANOVDB_UPPER_OFF_FLAGS
Definition PNanoVDB.h:1726
#define PNANOVDB_GRID_TYPE_CAP
Definition PNanoVDB.h:1133
#define PNANOVDB_GRID_TYPE_FLOAT
Definition PNanoVDB.h:1105
PNANOVDB_FORCE_INLINE float pnanovdb_map_get_invmatf(pnanovdb_buf_t buf, pnanovdb_map_handle_t p, pnanovdb_uint32_t index)
Definition PNanoVDB.h:1206
PNANOVDB_FORCE_INLINE float pnanovdb_dither_lookup(pnanovdb_bool_t enabled, int offset)
Definition PNanoVDB.h:3340
PNANOVDB_FORCE_INLINE pnanovdb_uint64_t pnanovdb_uint64_dec(pnanovdb_uint64_t a)
Definition PNanoVDB.h:784
PNANOVDB_FORCE_INLINE pnanovdb_uint64_t pnanovdb_leaf_index_get_max_index(pnanovdb_buf_t buf, pnanovdb_address_t max_address)
Definition PNanoVDB.h:2172
PNANOVDB_FORCE_INLINE pnanovdb_uint64_t pnanovdb_root_onindex_get_value_index(pnanovdb_buf_t buf, pnanovdb_address_t address, PNANOVDB_IN(pnanovdb_coord_t) ijk, pnanovdb_uint32_t level)
Definition PNanoVDB.h:2671
PNANOVDB_FORCE_INLINE void pnanovdb_grid_set_blind_metadata_offset(pnanovdb_buf_t buf, pnanovdb_grid_handle_t p, pnanovdb_uint64_t blind_metadata_offset)
Definition PNanoVDB.h:1397
PNANOVDB_FORCE_INLINE pnanovdb_uint32_t pnanovdb_gridblindmetadata_get_data_type(pnanovdb_buf_t buf, pnanovdb_gridblindmetadata_handle_t p)
Definition PNanoVDB.h:1502
PNANOVDB_FORCE_INLINE pnanovdb_address_t pnanovdb_root_get_stddev_address(pnanovdb_grid_type_t grid_type, pnanovdb_buf_t buf, pnanovdb_root_handle_t root)
Definition PNanoVDB.h:2551
PNANOVDB_FORCE_INLINE pnanovdb_bool_t pnanovdb_lower_get_value_mask(pnanovdb_buf_t buf, pnanovdb_lower_handle_t p, pnanovdb_uint32_t bit_index)
Definition PNanoVDB.h:1801
#define PNANOVDB_GRID_OFF_BLIND_METADATA_OFFSET
Definition PNanoVDB.h:1297
#define PNANOVDB_MAP_OFF_MATF
Definition PNanoVDB.h:1194
PNANOVDB_FORCE_INLINE pnanovdb_uint64_t pnanovdb_upper_get_flags(pnanovdb_buf_t buf, pnanovdb_upper_handle_t p)
Definition PNanoVDB.h:1736
PNANOVDB_FORCE_INLINE pnanovdb_uint32_t pnanovdb_leaf_coord_to_offset(PNANOVDB_IN(pnanovdb_coord_t) ijk)
Definition PNanoVDB.h:2071
#define PNANOVDB_ROOT_OFF_BBOX_MIN
Definition PNanoVDB.h:1645
PNANOVDB_FORCE_INLINE pnanovdb_address_t pnanovdb_lower_get_stddev_address(pnanovdb_grid_type_t grid_type, pnanovdb_buf_t buf, pnanovdb_lower_handle_t node)
Definition PNanoVDB.h:2368
PNANOVDB_FORCE_INLINE pnanovdb_address_t pnanovdb_root_tile_get_value_address(pnanovdb_grid_type_t grid_type, pnanovdb_buf_t buf, pnanovdb_root_tile_handle_t root_tile)
Definition PNanoVDB.h:2558
PNANOVDB_FORCE_INLINE void pnanovdb_grid_set_flags(pnanovdb_buf_t buf, pnanovdb_grid_handle_t p, pnanovdb_uint32_t flags)
Definition PNanoVDB.h:1370
PNANOVDB_STATIC_CONST pnanovdb_uint32_t pnanovdb_grid_type_value_strides_bits[32]
Definition PNanoVDB.h:1165
PNANOVDB_FORCE_INLINE pnanovdb_bool_t pnanovdb_upper_is_active_and_cache(pnanovdb_grid_type_t grid_type, pnanovdb_buf_t buf, pnanovdb_upper_handle_t upper, PNANOVDB_IN(pnanovdb_coord_t) ijk, PNANOVDB_INOUT(pnanovdb_readaccessor_t) acc)
Definition PNanoVDB.h:3050
PNANOVDB_FORCE_INLINE pnanovdb_uint64_t pnanovdb_uint64_bit_mask(pnanovdb_uint32_t bit_idx)
Definition PNanoVDB.h:794
PNANOVDB_FORCE_INLINE pnanovdb_uint32_t pnanovdb_gridblindmetadata_get_name(pnanovdb_buf_t buf, pnanovdb_gridblindmetadata_handle_t p, pnanovdb_uint32_t index)
Definition PNanoVDB.h:1505
PNANOVDB_FORCE_INLINE pnanovdb_bool_t pnanovdb_root_is_active_and_cache(pnanovdb_grid_type_t grid_type, pnanovdb_buf_t buf, pnanovdb_root_handle_t root, PNANOVDB_IN(pnanovdb_coord_t) ijk, PNANOVDB_INOUT(pnanovdb_readaccessor_t) acc)
Definition PNanoVDB.h:3068
#define PNANOVDB_ROOT_TILE_OFF_CHILD
Definition PNanoVDB.h:1684
PNANOVDB_FORCE_INLINE void pnanovdb_tree_set_node_count_lower(pnanovdb_buf_t buf, pnanovdb_tree_handle_t p, pnanovdb_uint32_t node_count_lower)
Definition PNanoVDB.h:1612
PNANOVDB_FORCE_INLINE pnanovdb_uint32_t pnanovdb_uint64_to_uint32_lsr(pnanovdb_uint64_t a, pnanovdb_uint32_t b)
Definition PNanoVDB.h:789
PNANOVDB_FORCE_INLINE pnanovdb_address_t pnanovdb_lower_get_value_address_and_level_and_cache(pnanovdb_grid_type_t grid_type, pnanovdb_buf_t buf, pnanovdb_lower_handle_t lower, PNANOVDB_IN(pnanovdb_coord_t) ijk, PNANOVDB_INOUT(pnanovdb_readaccessor_t) acc, PNANOVDB_INOUT(pnanovdb_uint32_t) level)
Definition PNanoVDB.h:2808
PNANOVDB_FORCE_INLINE void pnanovdb_grid_set_grid_size(pnanovdb_buf_t buf, pnanovdb_grid_handle_t p, pnanovdb_uint64_t grid_size)
Definition PNanoVDB.h:1379
#define PNANOVDB_GRID_OFF_GRID_COUNT
Definition PNanoVDB.h:1289
PNANOVDB_FORCE_INLINE pnanovdb_uint32_t pnanovdb_grid_get_grid_class(pnanovdb_buf_t buf, pnanovdb_grid_handle_t p)
Definition PNanoVDB.h:1339
PNANOVDB_FORCE_INLINE pnanovdb_uint64_t pnanovdb_tree_get_node_offset_lower(pnanovdb_buf_t buf, pnanovdb_tree_handle_t p)
Definition PNanoVDB.h:1566
PNANOVDB_FORCE_INLINE void pnanovdb_grid_set_checksum(pnanovdb_buf_t buf, pnanovdb_grid_handle_t p, pnanovdb_uint64_t checksum)
Definition PNanoVDB.h:1364
PNANOVDB_FORCE_INLINE pnanovdb_address_t pnanovdb_lower_get_value_address(pnanovdb_grid_type_t grid_type, pnanovdb_buf_t buf, pnanovdb_lower_handle_t lower, PNANOVDB_IN(pnanovdb_coord_t) ijk)
Definition PNanoVDB.h:2413
PNANOVDB_FORCE_INLINE pnanovdb_bool_t pnanovdb_uint64_any_bit(pnanovdb_uint64_t a)
Definition PNanoVDB.h:804
#define PNANOVDB_LEAF_OFF_VALUE_MASK
Definition PNanoVDB.h:1848
PNANOVDB_STATIC_CONST pnanovdb_uint32_t pnanovdb_grid_type_table_strides_bits[32]
Definition PNanoVDB.h:1167
PNANOVDB_FORCE_INLINE pnanovdb_coord_t pnanovdb_lower_get_bbox_max(pnanovdb_buf_t buf, pnanovdb_lower_handle_t p)
Definition PNanoVDB.h:1795
PNANOVDB_FORCE_INLINE pnanovdb_uint32_t pnanovdb_tree_get_tile_count_lower(pnanovdb_buf_t buf, pnanovdb_tree_handle_t p)
Definition PNanoVDB.h:1584
PNANOVDB_FORCE_INLINE pnanovdb_vec3_t pnanovdb_read_vec3u8(pnanovdb_buf_t buf, pnanovdb_address_t address)
Definition PNanoVDB.h:1017
#define PNANOVDB_GRID_OFF_DATA2
Definition PNanoVDB.h:1301
PNANOVDB_FORCE_INLINE void pnanovdb_tree_set_node_offset_leaf(pnanovdb_buf_t buf, pnanovdb_tree_handle_t p, pnanovdb_uint64_t node_offset_leaf)
Definition PNanoVDB.h:1597
PNANOVDB_FORCE_INLINE void pnanovdb_leaf_set_bbox_min(pnanovdb_buf_t buf, pnanovdb_leaf_handle_t p, PNANOVDB_IN(pnanovdb_coord_t) bbox_min)
Definition PNanoVDB.h:1865
PNANOVDB_FORCE_INLINE void pnanovdb_tree_set_first_root(pnanovdb_buf_t buf, pnanovdb_tree_handle_t p, pnanovdb_root_handle_t root)
Definition PNanoVDB.h:2065
PNANOVDB_FORCE_INLINE pnanovdb_uint64_t pnanovdb_leaf_pointindex_get_point_count(pnanovdb_buf_t buf, pnanovdb_leaf_handle_t leaf)
Definition PNanoVDB.h:2291
PNANOVDB_FORCE_INLINE pnanovdb_address_t pnanovdb_lower_get_value_address_and_cache(pnanovdb_grid_type_t grid_type, pnanovdb_buf_t buf, pnanovdb_lower_handle_t lower, PNANOVDB_IN(pnanovdb_coord_t) ijk, PNANOVDB_INOUT(pnanovdb_readaccessor_t) acc)
Definition PNanoVDB.h:2828
PNANOVDB_FORCE_INLINE pnanovdb_bool_t pnanovdb_read_bit(pnanovdb_buf_t buf, pnanovdb_address_t address, pnanovdb_uint32_t bit_offset)
Definition PNanoVDB.h:1027
PNANOVDB_FORCE_INLINE pnanovdb_coord_t pnanovdb_root_get_bbox_max(pnanovdb_buf_t buf, pnanovdb_root_handle_t p)
Definition PNanoVDB.h:1652
PNANOVDB_FORCE_INLINE pnanovdb_address_t pnanovdb_root_get_value_address_and_level(pnanovdb_grid_type_t grid_type, pnanovdb_buf_t buf, pnanovdb_root_handle_t root, PNANOVDB_IN(pnanovdb_coord_t) ijk, PNANOVDB_INOUT(pnanovdb_uint32_t) level)
Definition PNanoVDB.h:2565
PNANOVDB_FORCE_INLINE void pnanovdb_write_float(pnanovdb_buf_t buf, pnanovdb_address_t address, float value)
Definition PNanoVDB.h:1073
PNANOVDB_FORCE_INLINE void pnanovdb_leaf_pointindex_set_on(pnanovdb_buf_t buf, pnanovdb_leaf_handle_t leaf, pnanovdb_uint32_t i)
Definition PNanoVDB.h:2323
PNANOVDB_FORCE_INLINE void pnanovdb_gridblindmetadata_set_value_size(pnanovdb_buf_t buf, pnanovdb_gridblindmetadata_handle_t p, pnanovdb_uint32_t value_size)
Definition PNanoVDB.h:1515
PNANOVDB_FORCE_INLINE pnanovdb_bool_t pnanovdb_leaf_get_value_mask(pnanovdb_buf_t buf, pnanovdb_leaf_handle_t p, pnanovdb_uint32_t bit_index)
Definition PNanoVDB.h:1860
#define PNANOVDB_GRIDBLINDMETADATA_OFF_VALUE_SIZE
Definition PNanoVDB.h:1481
PNANOVDB_FORCE_INLINE void pnanovdb_grid_set_blind_metadata_count(pnanovdb_buf_t buf, pnanovdb_grid_handle_t p, pnanovdb_uint32_t metadata_count)
Definition PNanoVDB.h:1400
PNANOVDB_FORCE_INLINE void pnanovdb_root_set_tile_count(pnanovdb_buf_t buf, pnanovdb_root_handle_t p, pnanovdb_uint32_t tile_count)
Definition PNanoVDB.h:1665
#define PNANOVDB_MAP_OFF_VECD
Definition PNanoVDB.h:1200
PNANOVDB_FORCE_INLINE pnanovdb_address_t pnanovdb_lower_get_value_address_and_level(pnanovdb_grid_type_t grid_type, pnanovdb_buf_t buf, pnanovdb_lower_handle_t lower, PNANOVDB_IN(pnanovdb_coord_t) ijk, PNANOVDB_INOUT(pnanovdb_uint32_t) level)
Definition PNanoVDB.h:2395
PNANOVDB_FORCE_INLINE void pnanovdb_tree_set_voxel_count(pnanovdb_buf_t buf, pnanovdb_tree_handle_t p, pnanovdb_uint64_t voxel_count)
Definition PNanoVDB.h:1627
#define PNANOVDB_ROOT_OFF_TABLE_SIZE
Definition PNanoVDB.h:1647
PNANOVDB_FORCE_INLINE pnanovdb_coord_t pnanovdb_leaf_get_bbox_min(pnanovdb_buf_t buf, pnanovdb_leaf_handle_t p)
Definition PNanoVDB.h:1854
#define PNANOVDB_LEAF_OFF_BBOX_DIF_AND_FLAGS
Definition PNanoVDB.h:1847
PNANOVDB_FORCE_INLINE void pnanovdb_lower_set_child(pnanovdb_grid_type_t grid_type, pnanovdb_buf_t buf, pnanovdb_lower_handle_t lower, pnanovdb_uint32_t n, pnanovdb_leaf_handle_t leaf)
Definition PNanoVDB.h:2425
PNANOVDB_FORCE_INLINE pnanovdb_uint64_t pnanovdb_uint64_offset(pnanovdb_uint64_t a, pnanovdb_uint32_t b)
Definition PNanoVDB.h:774
PNANOVDB_FORCE_INLINE pnanovdb_uint64_t pnanovdb_gridblindmetadata_get_value_count(pnanovdb_buf_t buf, pnanovdb_gridblindmetadata_handle_t p)
Definition PNanoVDB.h:1490
PNANOVDB_FORCE_INLINE pnanovdb_gridblindmetadata_handle_t pnanovdb_grid_get_gridblindmetadata(pnanovdb_buf_t buf, pnanovdb_grid_handle_t grid, pnanovdb_uint32_t index)
Definition PNanoVDB.h:1947
PNANOVDB_FORCE_INLINE pnanovdb_uint32_t pnanovdb_root_get_dim_and_cache(pnanovdb_grid_type_t grid_type, pnanovdb_buf_t buf, pnanovdb_root_handle_t root, PNANOVDB_IN(pnanovdb_coord_t) ijk, PNANOVDB_INOUT(pnanovdb_readaccessor_t) acc)
Definition PNanoVDB.h:2976
PNANOVDB_FORCE_INLINE pnanovdb_coord_t pnanovdb_upper_get_bbox_max(pnanovdb_buf_t buf, pnanovdb_upper_handle_t p)
Definition PNanoVDB.h:1733
#define PNANOVDB_LOWER_OFF_FLAGS
Definition PNanoVDB.h:1788
PNANOVDB_FORCE_INLINE pnanovdb_uint32_t pnanovdb_grid_get_version(pnanovdb_buf_t buf, pnanovdb_grid_handle_t p)
Definition PNanoVDB.h:1309
PNANOVDB_FORCE_INLINE pnanovdb_address_t pnanovdb_readaccessor_get_value_address_bit(pnanovdb_grid_type_t grid_type, pnanovdb_buf_t buf, PNANOVDB_INOUT(pnanovdb_readaccessor_t) acc, PNANOVDB_IN(pnanovdb_coord_t) ijk, PNANOVDB_INOUT(pnanovdb_uint32_t) bit_index)
Definition PNanoVDB.h:2920
PNANOVDB_FORCE_INLINE float pnanovdb_map_get_taperf(pnanovdb_buf_t buf, pnanovdb_map_handle_t p, pnanovdb_uint32_t index)
Definition PNanoVDB.h:1212
PNANOVDB_FORCE_INLINE pnanovdb_uint32_t pnanovdb_leaf_get_dim_and_cache(pnanovdb_grid_type_t grid_type, pnanovdb_buf_t buf, pnanovdb_leaf_handle_t leaf, PNANOVDB_IN(pnanovdb_coord_t) ijk, PNANOVDB_INOUT(pnanovdb_readaccessor_t) acc)
Definition PNanoVDB.h:2930
PNANOVDB_FORCE_INLINE void pnanovdb_grid_set_version(pnanovdb_buf_t buf, pnanovdb_grid_handle_t p, pnanovdb_uint32_t version)
Definition PNanoVDB.h:1367
PNANOVDB_FORCE_INLINE void pnanovdb_map_set_taperd(pnanovdb_buf_t buf, pnanovdb_map_handle_t p, pnanovdb_uint32_t index, double taperd)
Definition PNanoVDB.h:1252
PNANOVDB_FORCE_INLINE pnanovdb_uint64_t pnanovdb_tree_get_node_offset_root(pnanovdb_buf_t buf, pnanovdb_tree_handle_t p)
Definition PNanoVDB.h:1572
PNANOVDB_FORCE_INLINE pnanovdb_uint64_t pnanovdb_tree_get_node_offset_leaf(pnanovdb_buf_t buf, pnanovdb_tree_handle_t p)
Definition PNanoVDB.h:1563
PNANOVDB_FORCE_INLINE pnanovdb_uint64_t pnanovdb_uint64_and(pnanovdb_uint64_t a, pnanovdb_uint64_t b)
Definition PNanoVDB.h:799
PNANOVDB_FORCE_INLINE pnanovdb_address_t pnanovdb_lower_get_min_address(pnanovdb_grid_type_t grid_type, pnanovdb_buf_t buf, pnanovdb_lower_handle_t node)
Definition PNanoVDB.h:2347
PNANOVDB_FORCE_INLINE void pnanovdb_tree_set_first_lower(pnanovdb_buf_t buf, pnanovdb_tree_handle_t p, pnanovdb_lower_handle_t lower)
Definition PNanoVDB.h:2059
PNANOVDB_FORCE_INLINE pnanovdb_vec3_t pnanovdb_map_apply(pnanovdb_buf_t buf, pnanovdb_map_handle_t map, PNANOVDB_IN(pnanovdb_vec3_t) src)
Definition PNanoVDB.h:3117
PNANOVDB_FORCE_INLINE pnanovdb_uint64_t pnanovdb_leaf_onindex_get_ave_index(pnanovdb_buf_t buf, pnanovdb_address_t ave_address)
Definition PNanoVDB.h:2238
PNANOVDB_STATIC_CONST pnanovdb_uint32_t pnanovdb_grid_type_minmax_strides_bits[32]
Definition PNanoVDB.h:1169
PNANOVDB_FORCE_INLINE pnanovdb_uint64_t pnanovdb_leaf_onindex_get_last_offset(pnanovdb_buf_t buf, pnanovdb_leaf_handle_t leaf)
Definition PNanoVDB.h:2204
PNANOVDB_FORCE_INLINE pnanovdb_address_t pnanovdb_upper_get_stddev_address(pnanovdb_grid_type_t grid_type, pnanovdb_buf_t buf, pnanovdb_upper_handle_t node)
Definition PNanoVDB.h:2460
#define PNANOVDB_GRID_TYPE_ONINDEX
Definition PNanoVDB.h:1124
PNANOVDB_FORCE_INLINE pnanovdb_uint32_t pnanovdb_uint32_countbits(pnanovdb_uint32_t value)
Definition PNanoVDB.h:681
PNANOVDB_FORCE_INLINE pnanovdb_vec3_t pnanovdb_grid_world_to_index_dirf(pnanovdb_buf_t buf, pnanovdb_grid_handle_t grid, PNANOVDB_IN(pnanovdb_vec3_t) src)
Definition PNanoVDB.h:3177
PNANOVDB_FORCE_INLINE pnanovdb_address_t pnanovdb_lower_get_table_address(pnanovdb_grid_type_t grid_type, pnanovdb_buf_t buf, pnanovdb_lower_handle_t node, pnanovdb_uint32_t n)
Definition PNanoVDB.h:2375
PNANOVDB_FORCE_INLINE pnanovdb_uint64_t pnanovdb_leaf_pointindex_get_last(pnanovdb_buf_t buf, pnanovdb_leaf_handle_t leaf, pnanovdb_uint32_t i)
Definition PNanoVDB.h:2300
PNANOVDB_FORCE_INLINE void pnanovdb_write_double(pnanovdb_buf_t buf, pnanovdb_address_t address, double value)
Definition PNanoVDB.h:1077
PNANOVDB_FORCE_INLINE pnanovdb_uint64_t pnanovdb_lower_get_flags(pnanovdb_buf_t buf, pnanovdb_lower_handle_t p)
Definition PNanoVDB.h:1798
PNANOVDB_FORCE_INLINE pnanovdb_vec3_t pnanovdb_grid_index_to_worldf(pnanovdb_buf_t buf, pnanovdb_grid_handle_t grid, PNANOVDB_IN(pnanovdb_vec3_t) src)
Definition PNanoVDB.h:3171
PNANOVDB_STATIC_CONST pnanovdb_uint32_t pnanovdb_grid_type_stat_strides_bits[32]
Definition PNanoVDB.h:1173
PNANOVDB_FORCE_INLINE pnanovdb_bool_t pnanovdb_upper_get_value_mask(pnanovdb_buf_t buf, pnanovdb_upper_handle_t p, pnanovdb_uint32_t bit_index)
Definition PNanoVDB.h:1739
PNANOVDB_FORCE_INLINE void pnanovdb_tree_set_tile_count_lower(pnanovdb_buf_t buf, pnanovdb_tree_handle_t p, pnanovdb_uint32_t tile_count_lower)
Definition PNanoVDB.h:1618
PNANOVDB_FORCE_INLINE void pnanovdb_map_set_invmatd(pnanovdb_buf_t buf, pnanovdb_map_handle_t p, pnanovdb_uint32_t index, double invmatd)
Definition PNanoVDB.h:1246
PNANOVDB_FORCE_INLINE pnanovdb_upper_handle_t pnanovdb_root_get_child(pnanovdb_grid_type_t grid_type, pnanovdb_buf_t buf, pnanovdb_root_handle_t root, pnanovdb_root_tile_handle_t tile)
Definition PNanoVDB.h:2000
PNANOVDB_FORCE_INLINE pnanovdb_uint32_t pnanovdb_uint64_countbits(pnanovdb_uint64_t value)
Definition PNanoVDB.h:701
#define PNANOVDB_GRID_OFF_GRID_INDEX
Definition PNanoVDB.h:1288
PNANOVDB_FORCE_INLINE pnanovdb_uint32_t pnanovdb_grid_get_blind_metadata_count(pnanovdb_buf_t buf, pnanovdb_grid_handle_t p)
Definition PNanoVDB.h:1348
PNANOVDB_FORCE_INLINE pnanovdb_uint32_t pnanovdb_lower_coord_to_offset(PNANOVDB_IN(pnanovdb_coord_t) ijk)
Definition PNanoVDB.h:2340
PNANOVDB_FORCE_INLINE void pnanovdb_leaf_pointindex_set_value(pnanovdb_buf_t buf, pnanovdb_leaf_handle_t leaf, pnanovdb_uint32_t i, pnanovdb_uint32_t value)
Definition PNanoVDB.h:2332
#define PNANOVDB_UPPER_OFF_BBOX_MIN
Definition PNanoVDB.h:1724
PNANOVDB_FORCE_INLINE void pnanovdb_grid_set_data1(pnanovdb_buf_t buf, pnanovdb_grid_handle_t p, pnanovdb_uint64_t data1)
Definition PNanoVDB.h:1406
PNANOVDB_FORCE_INLINE pnanovdb_int64_t pnanovdb_lower_get_table_child(pnanovdb_grid_type_t grid_type, pnanovdb_buf_t buf, pnanovdb_lower_handle_t node, pnanovdb_uint32_t n)
Definition PNanoVDB.h:2382
#define PNANOVDB_GRID_OFF_MAP
Definition PNanoVDB.h:1292
#define PNANOVDB_LOWER_OFF_BBOX_MIN
Definition PNanoVDB.h:1786
PNANOVDB_FORCE_INLINE void pnanovdb_root_tile_set_child(pnanovdb_buf_t buf, pnanovdb_root_tile_handle_t p, pnanovdb_int64_t child)
Definition PNanoVDB.h:1700
PNANOVDB_FORCE_INLINE void pnanovdb_tree_set_node_offset_root(pnanovdb_buf_t buf, pnanovdb_tree_handle_t p, pnanovdb_uint64_t node_offset_root)
Definition PNanoVDB.h:1606
PNANOVDB_FORCE_INLINE float pnanovdb_leaf_fp16_read_float(pnanovdb_buf_t buf, pnanovdb_address_t address, PNANOVDB_IN(pnanovdb_coord_t) ijk)
Definition PNanoVDB.h:2147
PNANOVDB_FORCE_INLINE void pnanovdb_grid_set_grid_type(pnanovdb_buf_t buf, pnanovdb_grid_handle_t p, pnanovdb_uint32_t grid_type)
Definition PNanoVDB.h:1394
PNANOVDB_FORCE_INLINE pnanovdb_bool_t pnanovdb_readaccessor_iscached2(PNANOVDB_INOUT(pnanovdb_readaccessor_t) acc, int dirty)
Definition PNanoVDB.h:2786
#define PNANOVDB_GRIDBLINDMETADATA_OFF_SEMANTIC
Definition PNanoVDB.h:1482
#define PNANOVDB_GRID_OFF_WORLD_BBOX
Definition PNanoVDB.h:1293
#define PNANOVDB_TREE_OFF_NODE_OFFSET_UPPER
Definition PNanoVDB.h:1553
PNANOVDB_FORCE_INLINE void pnanovdb_grid_set_data0(pnanovdb_buf_t buf, pnanovdb_grid_handle_t p, pnanovdb_uint32_t data0)
Definition PNanoVDB.h:1403
PNANOVDB_FORCE_INLINE pnanovdb_uint64_t pnanovdb_tree_get_voxel_count(pnanovdb_buf_t buf, pnanovdb_tree_handle_t p)
Definition PNanoVDB.h:1593
PNANOVDB_FORCE_INLINE pnanovdb_map_handle_t pnanovdb_grid_get_map(pnanovdb_buf_t buf, pnanovdb_grid_handle_t p)
Definition PNanoVDB.h:1327
PNANOVDB_FORCE_INLINE pnanovdb_address_t pnanovdb_leaf_get_value_address_and_cache(pnanovdb_grid_type_t grid_type, pnanovdb_buf_t buf, pnanovdb_leaf_handle_t leaf, PNANOVDB_IN(pnanovdb_coord_t) ijk, PNANOVDB_INOUT(pnanovdb_readaccessor_t) acc)
Definition PNanoVDB.h:2801
#define PNANOVDB_LOWER_OFF_VALUE_MASK
Definition PNanoVDB.h:1789
PNANOVDB_FORCE_INLINE void pnanovdb_tree_set_first_leaf(pnanovdb_buf_t buf, pnanovdb_tree_handle_t p, pnanovdb_leaf_handle_t leaf)
Definition PNanoVDB.h:2056
PNANOVDB_FORCE_INLINE double pnanovdb_map_get_matd(pnanovdb_buf_t buf, pnanovdb_map_handle_t p, pnanovdb_uint32_t index)
Definition PNanoVDB.h:1216
PNANOVDB_FORCE_INLINE pnanovdb_root_tile_handle_t pnanovdb_root_get_tile_zero(pnanovdb_grid_type_t grid_type, pnanovdb_root_handle_t root)
Definition PNanoVDB.h:1988
PNANOVDB_FORCE_INLINE void pnanovdb_write_int32(pnanovdb_buf_t buf, pnanovdb_address_t address, pnanovdb_int32_t value)
Definition PNanoVDB.h:1065
#define PNANOVDB_ROOT_OFF_BBOX_MAX
Definition PNanoVDB.h:1646
PNANOVDB_FORCE_INLINE void pnanovdb_write_uint64(pnanovdb_buf_t buf, pnanovdb_address_t address, pnanovdb_uint64_t value)
Definition PNanoVDB.h:1061
#define PNANOVDB_UPPER_OFF_CHILD_MASK
Definition PNanoVDB.h:1728
PNANOVDB_FORCE_INLINE pnanovdb_uint64_t pnanovdb_leaf_onindex_get_max_index(pnanovdb_buf_t buf, pnanovdb_address_t max_address)
Definition PNanoVDB.h:2227
PNANOVDB_STATIC_CONST pnanovdb_uint32_t pnanovdb_grid_type_minmax_aligns_bits[32]
Definition PNanoVDB.h:1171
PNANOVDB_FORCE_INLINE void pnanovdb_tree_set_tile_count_upper(pnanovdb_buf_t buf, pnanovdb_tree_handle_t p, pnanovdb_uint32_t tile_count_upper)
Definition PNanoVDB.h:1621
PNANOVDB_STATIC_CONST pnanovdb_grid_type_constants_t pnanovdb_grid_type_constants[32]
Definition PNanoVDB.h:1913
PNANOVDB_FORCE_INLINE pnanovdb_uint32_t pnanovdb_tree_get_tile_count_root(pnanovdb_buf_t buf, pnanovdb_tree_handle_t p)
Definition PNanoVDB.h:1590
#define PNANOVDB_MAP_OFF_VECF
Definition PNanoVDB.h:1196
PNANOVDB_FORCE_INLINE void pnanovdb_lower_set_bbox_max(pnanovdb_buf_t buf, pnanovdb_lower_handle_t p, PNANOVDB_IN(pnanovdb_coord_t) bbox_max)
Definition PNanoVDB.h:1813
#define PNANOVDB_GRID_TYPE_VEC3U16
Definition PNanoVDB.h:1129
PNANOVDB_FORCE_INLINE pnanovdb_int64_t pnanovdb_uint64_diff(pnanovdb_uint64_t a, pnanovdb_uint64_t b)
Definition PNanoVDB.h:779
PNANOVDB_FORCE_INLINE void pnanovdb_root_set_bbox_min(pnanovdb_buf_t buf, pnanovdb_root_handle_t p, PNANOVDB_IN(pnanovdb_coord_t) bbox_min)
Definition PNanoVDB.h:1659
PNANOVDB_FORCE_INLINE pnanovdb_uint32_t pnanovdb_make_version(pnanovdb_uint32_t major, pnanovdb_uint32_t minor, pnanovdb_uint32_t patch_num)
Definition PNanoVDB.h:1413
PNANOVDB_FORCE_INLINE pnanovdb_address_t pnanovdb_upper_get_value_address_and_cache(pnanovdb_grid_type_t grid_type, pnanovdb_buf_t buf, pnanovdb_upper_handle_t upper, PNANOVDB_IN(pnanovdb_coord_t) ijk, PNANOVDB_INOUT(pnanovdb_readaccessor_t) acc)
Definition PNanoVDB.h:2853
PNANOVDB_FORCE_INLINE void pnanovdb_grid_set_grid_index(pnanovdb_buf_t buf, pnanovdb_grid_handle_t p, pnanovdb_uint32_t grid_index)
Definition PNanoVDB.h:1373
#define PNANOVDB_TREE_OFF_VOXEL_COUNT
Definition PNanoVDB.h:1561
PNANOVDB_FORCE_INLINE void pnanovdb_write_vec3(pnanovdb_buf_t buf, pnanovdb_address_t address, PNANOVDB_IN(pnanovdb_vec3_t) value)
Definition PNanoVDB.h:1087
PNANOVDB_FORCE_INLINE void pnanovdb_map_set_invmatf(pnanovdb_buf_t buf, pnanovdb_map_handle_t p, pnanovdb_uint32_t index, float invmatf)
Definition PNanoVDB.h:1233
PNANOVDB_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)
Definition PNanoVDB.h:2510
PNANOVDB_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)
Definition PNanoVDB.h:2419
PNANOVDB_FORCE_INLINE void pnanovdb_map_set_vecf(pnanovdb_buf_t buf, pnanovdb_map_handle_t p, pnanovdb_uint32_t index, float vecf)
Definition PNanoVDB.h:1236
PNANOVDB_FORCE_INLINE float pnanovdb_leaf_fp4_read_float(pnanovdb_buf_t buf, pnanovdb_address_t address, PNANOVDB_IN(pnanovdb_coord_t) ijk)
Definition PNanoVDB.h:2137
PNANOVDB_FORCE_INLINE pnanovdb_address_t pnanovdb_root_get_value_address_and_cache(pnanovdb_grid_type_t grid_type, pnanovdb_buf_t buf, pnanovdb_root_handle_t root, PNANOVDB_IN(pnanovdb_coord_t) ijk, PNANOVDB_INOUT(pnanovdb_readaccessor_t) acc)
Definition PNanoVDB.h:2883
PNANOVDB_FORCE_INLINE pnanovdb_address_t pnanovdb_upper_get_value_address_and_level(pnanovdb_grid_type_t grid_type, pnanovdb_buf_t buf, pnanovdb_upper_handle_t upper, PNANOVDB_IN(pnanovdb_coord_t) ijk, PNANOVDB_INOUT(pnanovdb_uint32_t) level)
Definition PNanoVDB.h:2487
PNANOVDB_FORCE_INLINE pnanovdb_uint64_t pnanovdb_leaf_pointindex_get_value(pnanovdb_buf_t buf, pnanovdb_leaf_handle_t leaf, pnanovdb_uint32_t i)
Definition PNanoVDB.h:2305
#define PNANOVDB_GRID_TYPE_POINTINDEX
Definition PNanoVDB.h:1127
PNANOVDB_FORCE_INLINE pnanovdb_uint64_t pnanovdb_grid_get_data2(pnanovdb_buf_t buf, pnanovdb_grid_handle_t p)
Definition PNanoVDB.h:1357
#define PNANOVDB_LEAF_TABLE_NEG_OFF_QUANTUM
Definition PNanoVDB.h:1852
PNANOVDB_FORCE_INLINE pnanovdb_uint32_t pnanovdb_upper_get_dim_and_cache(pnanovdb_grid_type_t grid_type, pnanovdb_buf_t buf, pnanovdb_upper_handle_t upper, PNANOVDB_IN(pnanovdb_coord_t) ijk, PNANOVDB_INOUT(pnanovdb_readaccessor_t) acc)
Definition PNanoVDB.h:2958
PNANOVDB_FORCE_INLINE pnanovdb_bool_t pnanovdb_root_tile_get_child_mask(pnanovdb_buf_t buf, pnanovdb_root_tile_handle_t tile)
Definition PNanoVDB.h:1995
PNANOVDB_FORCE_INLINE pnanovdb_bool_t pnanovdb_readaccessor_iscached1(PNANOVDB_INOUT(pnanovdb_readaccessor_t) acc, int dirty)
Definition PNanoVDB.h:2776
PNANOVDB_FORCE_INLINE pnanovdb_uint32_t pnanovdb_read_uint16(pnanovdb_buf_t buf, pnanovdb_address_t address)
Definition PNanoVDB.h:998
PNANOVDB_FORCE_INLINE pnanovdb_address_t pnanovdb_upper_get_table_address(pnanovdb_grid_type_t grid_type, pnanovdb_buf_t buf, pnanovdb_upper_handle_t node, pnanovdb_uint32_t n)
Definition PNanoVDB.h:2467
#define PNANOVDB_MAP_OFF_TAPERF
Definition PNanoVDB.h:1197
#define PNANOVDB_TREE_OFF_NODE_OFFSET_LEAF
Definition PNanoVDB.h:1551
PNANOVDB_FORCE_INLINE pnanovdb_uint64_t pnanovdb_root_pointindex_get_point_range(pnanovdb_buf_t buf, pnanovdb_address_t value_address, PNANOVDB_IN(pnanovdb_coord_t) ijk, pnanovdb_uint32_t level, PNANOVDB_INOUT(pnanovdb_uint64_t) range_begin, PNANOVDB_INOUT(pnanovdb_uint64_t) range_end)
Definition PNanoVDB.h:2685
PNANOVDB_FORCE_INLINE pnanovdb_uint64_t pnanovdb_grid_get_magic(pnanovdb_buf_t buf, pnanovdb_grid_handle_t p)
Definition PNanoVDB.h:1303
PNANOVDB_FORCE_INLINE float pnanovdb_leaf_fp8_read_float(pnanovdb_buf_t buf, pnanovdb_address_t address, PNANOVDB_IN(pnanovdb_coord_t) ijk)
Definition PNanoVDB.h:2142
PNANOVDB_FORCE_INLINE pnanovdb_int64_t pnanovdb_grid_get_blind_metadata_offset(pnanovdb_buf_t buf, pnanovdb_grid_handle_t p)
Definition PNanoVDB.h:1345
PNANOVDB_FORCE_INLINE pnanovdb_uint32_t pnanovdb_tree_get_node_count_leaf(pnanovdb_buf_t buf, pnanovdb_tree_handle_t p)
Definition PNanoVDB.h:1575
PNANOVDB_FORCE_INLINE pnanovdb_uint64_t pnanovdb_grid_get_checksum(pnanovdb_buf_t buf, pnanovdb_grid_handle_t p)
Definition PNanoVDB.h:1306
PNANOVDB_FORCE_INLINE void pnanovdb_tree_set_node_offset_lower(pnanovdb_buf_t buf, pnanovdb_tree_handle_t p, pnanovdb_uint64_t node_offset_lower)
Definition PNanoVDB.h:1600
PNANOVDB_FORCE_INLINE void pnanovdb_root_tile_set_key(pnanovdb_buf_t buf, pnanovdb_root_tile_handle_t p, pnanovdb_uint64_t key)
Definition PNanoVDB.h:1697
PNANOVDB_FORCE_INLINE pnanovdb_uint32_t pnanovdb_read_uint32(pnanovdb_buf_t buf, pnanovdb_address_t address)
Definition PNanoVDB.h:957
#define PNANOVDB_GRID_OFF_CHECKSUM
Definition PNanoVDB.h:1285
#define PNANOVDB_MAP_OFF_INVMATD
Definition PNanoVDB.h:1199
PNANOVDB_FORCE_INLINE void pnanovdb_grid_set_data2(pnanovdb_buf_t buf, pnanovdb_grid_handle_t p, pnanovdb_uint64_t data2)
Definition PNanoVDB.h:1409
PNANOVDB_FORCE_INLINE void pnanovdb_tree_set_node_count_leaf(pnanovdb_buf_t buf, pnanovdb_tree_handle_t p, pnanovdb_uint32_t node_count_leaf)
Definition PNanoVDB.h:1609
#define PNANOVDB_TREE_OFF_NODE_OFFSET_ROOT
Definition PNanoVDB.h:1554
#define PNANOVDB_GRIDBLINDMETADATA_OFF_DATA_CLASS
Definition PNanoVDB.h:1483
PNANOVDB_FORCE_INLINE pnanovdb_uint32_t pnanovdb_grid_get_grid_index(pnanovdb_buf_t buf, pnanovdb_grid_handle_t p)
Definition PNanoVDB.h:1315
PNANOVDB_FORCE_INLINE pnanovdb_address_t pnanovdb_upper_get_value_address(pnanovdb_grid_type_t grid_type, pnanovdb_buf_t buf, pnanovdb_upper_handle_t upper, PNANOVDB_IN(pnanovdb_coord_t) ijk)
Definition PNanoVDB.h:2504
#define PNANOVDB_LEAF_TABLE_NEG_OFF_MINIMUM
Definition PNanoVDB.h:1851
PNANOVDB_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)
Definition PNanoVDB.h:1823
PNANOVDB_FORCE_INLINE pnanovdb_coord_t pnanovdb_lower_get_bbox_min(pnanovdb_buf_t buf, pnanovdb_lower_handle_t p)
Definition PNanoVDB.h:1792
PNANOVDB_FORCE_INLINE pnanovdb_uint32_t pnanovdb_version_get_major(pnanovdb_uint32_t version)
Definition PNanoVDB.h:1418
#define PNANOVDB_GRID_OFF_DATA1
Definition PNanoVDB.h:1300
PNANOVDB_FORCE_INLINE pnanovdb_address_t pnanovdb_grid_get_gridblindmetadata_value_address(pnanovdb_buf_t buf, pnanovdb_grid_handle_t grid, pnanovdb_uint32_t index)
Definition PNanoVDB.h:1956
PNANOVDB_FORCE_INLINE pnanovdb_uint32_t pnanovdb_grid_get_grid_name(pnanovdb_buf_t buf, pnanovdb_grid_handle_t p, pnanovdb_uint32_t index)
Definition PNanoVDB.h:1324
PNANOVDB_FORCE_INLINE pnanovdb_uint32_t pnanovdb_tree_get_node_count_upper(pnanovdb_buf_t buf, pnanovdb_tree_handle_t p)
Definition PNanoVDB.h:1581
PNANOVDB_FORCE_INLINE pnanovdb_uint64_t pnanovdb_grid_get_data1(pnanovdb_buf_t buf, pnanovdb_grid_handle_t p)
Definition PNanoVDB.h:1354
PNANOVDB_FORCE_INLINE pnanovdb_address_t pnanovdb_lower_get_ave_address(pnanovdb_grid_type_t grid_type, pnanovdb_buf_t buf, pnanovdb_lower_handle_t node)
Definition PNanoVDB.h:2361
#define PNANOVDB_GRID_OFF_GRID_TYPE
Definition PNanoVDB.h:1296
PNANOVDB_FORCE_INLINE pnanovdb_address_t pnanovdb_root_get_min_address(pnanovdb_grid_type_t grid_type, pnanovdb_buf_t buf, pnanovdb_root_handle_t root)
Definition PNanoVDB.h:2530
PNANOVDB_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)
Definition PNanoVDB.h:1761
#define PNANOVDB_MAP_OFF_INVMATF
Definition PNanoVDB.h:1195
PNANOVDB_FORCE_INLINE float pnanovdb_root_fp8_read_float(pnanovdb_buf_t buf, pnanovdb_address_t address, PNANOVDB_IN(pnanovdb_coord_t) ijk, pnanovdb_uint32_t level)
Definition PNanoVDB.h:2615
PNANOVDB_FORCE_INLINE pnanovdb_int32_t pnanovdb_read_int32(pnanovdb_buf_t buf, pnanovdb_address_t address)
Definition PNanoVDB.h:965
#define PNANOVDB_GRID_SIZE
Definition PNanoVDB.h:1282
PNANOVDB_FORCE_INLINE pnanovdb_uint64_t pnanovdb_leaf_onindex_get_min_index(pnanovdb_buf_t buf, pnanovdb_address_t min_address)
Definition PNanoVDB.h:2216
PNANOVDB_FORCE_INLINE void pnanovdb_map_set_taperf(pnanovdb_buf_t buf, pnanovdb_map_handle_t p, pnanovdb_uint32_t index, float taperf)
Definition PNanoVDB.h:1239
#define PNANOVDB_GRIDBLINDMETADATA_OFF_DATA_OFFSET
Definition PNanoVDB.h:1479
#define PNANOVDB_ROOT_TILE_OFF_KEY
Definition PNanoVDB.h:1683
#define PNANOVDB_TREE_OFF_NODE_OFFSET_LOWER
Definition PNanoVDB.h:1552
PNANOVDB_FORCE_INLINE pnanovdb_address_t pnanovdb_upper_get_value_address_and_level_and_cache(pnanovdb_grid_type_t grid_type, pnanovdb_buf_t buf, pnanovdb_upper_handle_t upper, PNANOVDB_IN(pnanovdb_coord_t) ijk, PNANOVDB_INOUT(pnanovdb_readaccessor_t) acc, PNANOVDB_INOUT(pnanovdb_uint32_t) level)
Definition PNanoVDB.h:2834
PNANOVDB_FORCE_INLINE pnanovdb_bool_t pnanovdb_leaf_is_active_and_cache(pnanovdb_grid_type_t grid_type, pnanovdb_buf_t buf, pnanovdb_leaf_handle_t leaf, PNANOVDB_IN(pnanovdb_coord_t) ijk, PNANOVDB_INOUT(pnanovdb_readaccessor_t) acc)
Definition PNanoVDB.h:3024
PNANOVDB_FORCE_INLINE void pnanovdb_lower_set_bbox_min(pnanovdb_buf_t buf, pnanovdb_lower_handle_t p, PNANOVDB_IN(pnanovdb_coord_t) bbox_min)
Definition PNanoVDB.h:1810
PNANOVDB_FORCE_INLINE pnanovdb_uint64_t pnanovdb_tree_get_node_offset_upper(pnanovdb_buf_t buf, pnanovdb_tree_handle_t p)
Definition PNanoVDB.h:1569
PNANOVDB_FORCE_INLINE void pnanovdb_grid_set_magic(pnanovdb_buf_t buf, pnanovdb_grid_handle_t p, pnanovdb_uint64_t magic)
Definition PNanoVDB.h:1361
PNANOVDB_FORCE_INLINE pnanovdb_bool_t pnanovdb_readaccessor_is_active(pnanovdb_grid_type_t grid_type, pnanovdb_buf_t buf, PNANOVDB_INOUT(pnanovdb_readaccessor_t) acc, PNANOVDB_IN(pnanovdb_coord_t) ijk)
Definition PNanoVDB.h:3091
#define PNANOVDB_UPPER_OFF_BBOX_MAX
Definition PNanoVDB.h:1725
PNANOVDB_FORCE_INLINE void pnanovdb_map_set_vecd(pnanovdb_buf_t buf, pnanovdb_map_handle_t p, pnanovdb_uint32_t index, double vecd)
Definition PNanoVDB.h:1249
PNANOVDB_FORCE_INLINE pnanovdb_address_t pnanovdb_lower_get_max_address(pnanovdb_grid_type_t grid_type, pnanovdb_buf_t buf, pnanovdb_lower_handle_t node)
Definition PNanoVDB.h:2354
PNANOVDB_FORCE_INLINE void pnanovdb_map_set_matd(pnanovdb_buf_t buf, pnanovdb_map_handle_t p, pnanovdb_uint32_t index, double matd)
Definition PNanoVDB.h:1243
#define PNANOVDB_MAP_OFF_MATD
Definition PNanoVDB.h:1198
#define PNANOVDB_LOWER_OFF_BBOX_MAX
Definition PNanoVDB.h:1787
PNANOVDB_FORCE_INLINE void pnanovdb_root_set_child(pnanovdb_grid_type_t grid_type, pnanovdb_buf_t buf, pnanovdb_root_handle_t root, pnanovdb_root_tile_handle_t tile, pnanovdb_upper_handle_t upper)
Definition PNanoVDB.h:2008
PNANOVDB_FORCE_INLINE pnanovdb_uint32_t pnanovdb_lower_get_dim_and_cache(pnanovdb_grid_type_t grid_type, pnanovdb_buf_t buf, pnanovdb_lower_handle_t lower, PNANOVDB_IN(pnanovdb_coord_t) ijk, PNANOVDB_INOUT(pnanovdb_readaccessor_t) acc)
Definition PNanoVDB.h:2940
PNANOVDB_FORCE_INLINE void pnanovdb_write_uint32(pnanovdb_buf_t buf, pnanovdb_address_t address, pnanovdb_uint32_t value)
Definition PNanoVDB.h:1057
PNANOVDB_FORCE_INLINE pnanovdb_uint32_t pnanovdb_tree_get_node_count_lower(pnanovdb_buf_t buf, pnanovdb_tree_handle_t p)
Definition PNanoVDB.h:1578
PNANOVDB_FORCE_INLINE pnanovdb_uint32_t pnanovdb_readaccessor_get_dim(pnanovdb_grid_type_t grid_type, pnanovdb_buf_t buf, PNANOVDB_INOUT(pnanovdb_readaccessor_t) acc, PNANOVDB_IN(pnanovdb_coord_t) ijk)
Definition PNanoVDB.h:2998
PNANOVDB_FORCE_INLINE void pnanovdb_upper_set_bbox_max(pnanovdb_buf_t buf, pnanovdb_upper_handle_t p, PNANOVDB_IN(pnanovdb_coord_t) bbox_max)
Definition PNanoVDB.h:1751
PNANOVDB_FORCE_INLINE pnanovdb_vec3_t pnanovdb_map_apply_jacobi(pnanovdb_buf_t buf, pnanovdb_map_handle_t map, PNANOVDB_IN(pnanovdb_vec3_t) src)
Definition PNanoVDB.h:3141
PNANOVDB_FORCE_INLINE pnanovdb_root_handle_t pnanovdb_tree_get_root(pnanovdb_buf_t buf, pnanovdb_tree_handle_t tree)
Definition PNanoVDB.h:1972
PNANOVDB_FORCE_INLINE void pnanovdb_grid_set_grid_class(pnanovdb_buf_t buf, pnanovdb_grid_handle_t p, pnanovdb_uint32_t grid_class)
Definition PNanoVDB.h:1391
#define PNANOVDB_GRID_OFF_GRID_CLASS
Definition PNanoVDB.h:1295
PNANOVDB_FORCE_INLINE double pnanovdb_read_double(pnanovdb_buf_t buf, pnanovdb_address_t address)
Definition PNanoVDB.h:977
PNANOVDB_FORCE_INLINE pnanovdb_uint32_t pnanovdb_grid_get_data0(pnanovdb_buf_t buf, pnanovdb_grid_handle_t p)
Definition PNanoVDB.h:1351
PNANOVDB_FORCE_INLINE pnanovdb_address_t pnanovdb_readaccessor_get_value_address(pnanovdb_grid_type_t grid_type, pnanovdb_buf_t buf, PNANOVDB_INOUT(pnanovdb_readaccessor_t) acc, PNANOVDB_IN(pnanovdb_coord_t) ijk)
Definition PNanoVDB.h:2914
PNANOVDB_FORCE_INLINE pnanovdb_coord_t pnanovdb_root_get_bbox_min(pnanovdb_buf_t buf, pnanovdb_root_handle_t p)
Definition PNanoVDB.h:1649
PNANOVDB_FORCE_INLINE float pnanovdb_root_fp16_read_float(pnanovdb_buf_t buf, pnanovdb_address_t address, PNANOVDB_IN(pnanovdb_coord_t) ijk, pnanovdb_uint32_t level)
Definition PNanoVDB.h:2629
PNANOVDB_FORCE_INLINE pnanovdb_uint32_t pnanovdb_grid_get_grid_count(pnanovdb_buf_t buf, pnanovdb_grid_handle_t p)
Definition PNanoVDB.h:1318
PNANOVDB_FORCE_INLINE pnanovdb_address_t pnanovdb_root_get_background_address(pnanovdb_grid_type_t grid_type, pnanovdb_buf_t buf, pnanovdb_root_handle_t root)
Definition PNanoVDB.h:2523
PNANOVDB_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)
Definition PNanoVDB.h:1382
PNANOVDB_FORCE_INLINE pnanovdb_int64_t pnanovdb_read_int64(pnanovdb_buf_t buf, pnanovdb_address_t address)
Definition PNanoVDB.h:973
PNANOVDB_FORCE_INLINE double pnanovdb_map_get_vecd(pnanovdb_buf_t buf, pnanovdb_map_handle_t p, pnanovdb_uint32_t index)
Definition PNanoVDB.h:1222
PNANOVDB_FORCE_INLINE double pnanovdb_map_get_invmatd(pnanovdb_buf_t buf, pnanovdb_map_handle_t p, pnanovdb_uint32_t index)
Definition PNanoVDB.h:1219
PNANOVDB_FORCE_INLINE pnanovdb_uint64_t pnanovdb_root_tile_get_key(pnanovdb_buf_t buf, pnanovdb_root_tile_handle_t p)
Definition PNanoVDB.h:1687
PNANOVDB_FORCE_INLINE void pnanovdb_upper_set_child(pnanovdb_grid_type_t grid_type, pnanovdb_buf_t buf, pnanovdb_upper_handle_t upper, pnanovdb_uint32_t n, pnanovdb_lower_handle_t lower)
Definition PNanoVDB.h:2516
PNANOVDB_FORCE_INLINE pnanovdb_vec3_t pnanovdb_map_apply_inverse_jacobi(pnanovdb_buf_t buf, pnanovdb_map_handle_t map, PNANOVDB_IN(pnanovdb_vec3_t) src)
Definition PNanoVDB.h:3153
PNANOVDB_FORCE_INLINE float pnanovdb_root_fpn_read_float(pnanovdb_buf_t buf, pnanovdb_address_t address, PNANOVDB_IN(pnanovdb_coord_t) ijk, pnanovdb_uint32_t level)
Definition PNanoVDB.h:2643
PNANOVDB_FORCE_INLINE pnanovdb_vec3_t pnanovdb_read_vec3(pnanovdb_buf_t buf, pnanovdb_address_t address)
Definition PNanoVDB.h:989
PNANOVDB_FORCE_INLINE pnanovdb_uint64_t pnanovdb_leaf_onindex_get_value_index(pnanovdb_buf_t buf, pnanovdb_address_t value_address, PNANOVDB_IN(pnanovdb_coord_t) ijk)
Definition PNanoVDB.h:2260
PNANOVDB_FORCE_INLINE pnanovdb_bool_t pnanovdb_lower_is_active_and_cache(pnanovdb_grid_type_t grid_type, pnanovdb_buf_t buf, pnanovdb_lower_handle_t lower, PNANOVDB_IN(pnanovdb_coord_t) ijk, PNANOVDB_INOUT(pnanovdb_readaccessor_t) acc)
Definition PNanoVDB.h:3032
#define PNANOVDB_GRID_OFF_DATA0
Definition PNanoVDB.h:1299
PNANOVDB_FORCE_INLINE void pnanovdb_grid_set_first_gridblindmetadata(pnanovdb_buf_t buf, pnanovdb_grid_handle_t p, pnanovdb_gridblindmetadata_handle_t gridblindmetadata)
Definition PNanoVDB.h:2050
PNANOVDB_FORCE_INLINE void pnanovdb_leaf_pointindex_set_value_only(pnanovdb_buf_t buf, pnanovdb_leaf_handle_t leaf, pnanovdb_uint32_t i, pnanovdb_uint32_t value)
Definition PNanoVDB.h:2309
PNANOVDB_FORCE_INLINE int pnanovdb_readaccessor_computedirty(PNANOVDB_INOUT(pnanovdb_readaccessor_t) acc, PNANOVDB_IN(pnanovdb_coord_t) ijk)
Definition PNanoVDB.h:2796
#define PNANOVDB_GRIDBLINDMETADATA_OFF_NAME
Definition PNanoVDB.h:1485
PNANOVDB_FORCE_INLINE void pnanovdb_gridblindmetadata_set_semantic(pnanovdb_buf_t buf, pnanovdb_gridblindmetadata_handle_t p, pnanovdb_uint32_t semantic)
Definition PNanoVDB.h:1518
PNANOVDB_FORCE_INLINE void pnanovdb_tree_set_node_count_upper(pnanovdb_buf_t buf, pnanovdb_tree_handle_t p, pnanovdb_uint32_t node_count_upper)
Definition PNanoVDB.h:1615
PNANOVDB_FORCE_INLINE pnanovdb_bool_t pnanovdb_lower_get_child_mask(pnanovdb_buf_t buf, pnanovdb_lower_handle_t p, pnanovdb_uint32_t bit_index)
Definition PNanoVDB.h:1805
PNANOVDB_FORCE_INLINE void pnanovdb_root_set_bbox_max(pnanovdb_buf_t buf, pnanovdb_root_handle_t p, PNANOVDB_IN(pnanovdb_coord_t) bbox_max)
Definition PNanoVDB.h:1662
PNANOVDB_FORCE_INLINE pnanovdb_address_t pnanovdb_leaf_get_value_address(pnanovdb_grid_type_t grid_type, pnanovdb_buf_t buf, pnanovdb_leaf_handle_t leaf, PNANOVDB_IN(pnanovdb_coord_t) ijk)
Definition PNanoVDB.h:2113
#define PNANOVDB_GRID_OFF_GRID_NAME
Definition PNanoVDB.h:1291
PNANOVDB_FORCE_INLINE pnanovdb_uint64_t pnanovdb_leaf_index_get_min_index(pnanovdb_buf_t buf, pnanovdb_address_t min_address)
Definition PNanoVDB.h:2167
#define PNANOVDB_TREE_OFF_NODE_COUNT_LEAF
Definition PNanoVDB.h:1555
PNANOVDB_FORCE_INLINE pnanovdb_lower_handle_t pnanovdb_upper_get_child(pnanovdb_grid_type_t grid_type, pnanovdb_buf_t buf, pnanovdb_upper_handle_t upper, pnanovdb_uint32_t n)
Definition PNanoVDB.h:2480
PNANOVDB_FORCE_INLINE double pnanovdb_map_get_taperd(pnanovdb_buf_t buf, pnanovdb_map_handle_t p, pnanovdb_uint32_t index)
Definition PNanoVDB.h:1225
PNANOVDB_FORCE_INLINE pnanovdb_int64_t pnanovdb_upper_get_table_child(pnanovdb_grid_type_t grid_type, pnanovdb_buf_t buf, pnanovdb_upper_handle_t node, pnanovdb_uint32_t n)
Definition PNanoVDB.h:2474
PNANOVDB_FORCE_INLINE pnanovdb_address_t pnanovdb_leaf_get_max_address(pnanovdb_grid_type_t grid_type, pnanovdb_buf_t buf, pnanovdb_leaf_handle_t node)
Definition PNanoVDB.h:2085
PNANOVDB_FORCE_INLINE pnanovdb_uint64_t pnanovdb_leaf_onindex_get_dev_index(pnanovdb_buf_t buf, pnanovdb_address_t dev_address)
Definition PNanoVDB.h:2249
PNANOVDB_FORCE_INLINE void pnanovdb_upper_set_bbox_min(pnanovdb_buf_t buf, pnanovdb_upper_handle_t p, PNANOVDB_IN(pnanovdb_coord_t) bbox_min)
Definition PNanoVDB.h:1748
#define PNANOVDB_GRID_OFF_VOXEL_SIZE
Definition PNanoVDB.h:1294
PNANOVDB_FORCE_INLINE pnanovdb_vec3_t pnanovdb_grid_world_to_indexf(pnanovdb_buf_t buf, pnanovdb_grid_handle_t grid, PNANOVDB_IN(pnanovdb_vec3_t) src)
Definition PNanoVDB.h:3165
PNANOVDB_FORCE_INLINE void pnanovdb_write_coord(pnanovdb_buf_t buf, pnanovdb_address_t address, PNANOVDB_IN(pnanovdb_coord_t) value)
Definition PNanoVDB.h:1081
PNANOVDB_FORCE_INLINE pnanovdb_uint64_t pnanovdb_read_uint64(pnanovdb_buf_t buf, pnanovdb_address_t address)
Definition PNanoVDB.h:961
PNANOVDB_FORCE_INLINE pnanovdb_uint32_t pnanovdb_gridblindmetadata_get_data_class(pnanovdb_buf_t buf, pnanovdb_gridblindmetadata_handle_t p)
Definition PNanoVDB.h:1499
PNANOVDB_FORCE_INLINE pnanovdb_vec3_t pnanovdb_grid_index_to_world_dirf(pnanovdb_buf_t buf, pnanovdb_grid_handle_t grid, PNANOVDB_IN(pnanovdb_vec3_t) src)
Definition PNanoVDB.h:3183
PNANOVDB_FORCE_INLINE pnanovdb_vec3_t pnanovdb_map_apply_inverse(pnanovdb_buf_t buf, pnanovdb_map_handle_t map, PNANOVDB_IN(pnanovdb_vec3_t) src)
Definition PNanoVDB.h:3129
PNANOVDB_FORCE_INLINE void pnanovdb_gridblindmetadata_set_value_count(pnanovdb_buf_t buf, pnanovdb_gridblindmetadata_handle_t p, pnanovdb_uint64_t value_count)
Definition PNanoVDB.h:1512
PNANOVDB_FORCE_INLINE pnanovdb_uint32_t pnanovdb_tree_get_tile_count_upper(pnanovdb_buf_t buf, pnanovdb_tree_handle_t p)
Definition PNanoVDB.h:1587
PNANOVDB_FORCE_INLINE pnanovdb_bool_t pnanovdb_upper_get_child_mask(pnanovdb_buf_t buf, pnanovdb_upper_handle_t p, pnanovdb_uint32_t bit_index)
Definition PNanoVDB.h:1743
PNANOVDB_FORCE_INLINE pnanovdb_bool_t pnanovdb_leaf_onindex_has_stats(pnanovdb_buf_t buf, pnanovdb_leaf_handle_t leaf)
Definition PNanoVDB.h:2211
PNANOVDB_FORCE_INLINE pnanovdb_address_t pnanovdb_upper_get_ave_address(pnanovdb_grid_type_t grid_type, pnanovdb_buf_t buf, pnanovdb_upper_handle_t node)
Definition PNanoVDB.h:2453
#define PNANOVDB_GRID_OFF_MAGIC
Definition PNanoVDB.h:1284
#define PNANOVDB_GRIDBLINDMETADATA_OFF_DATA_TYPE
Definition PNanoVDB.h:1484
PNANOVDB_FORCE_INLINE pnanovdb_uint64_t pnanovdb_grid_get_grid_size(pnanovdb_buf_t buf, pnanovdb_grid_handle_t p)
Definition PNanoVDB.h:1321
PNANOVDB_FORCE_INLINE pnanovdb_address_t pnanovdb_leaf_get_table_address(pnanovdb_grid_type_t grid_type, pnanovdb_buf_t buf, pnanovdb_leaf_handle_t node, pnanovdb_uint32_t n)
Definition PNanoVDB.h:2106
#define PNANOVDB_LEAF_OFF_BBOX_MIN
Definition PNanoVDB.h:1846
PNANOVDB_FORCE_INLINE void pnanovdb_grid_set_voxel_size(pnanovdb_buf_t buf, pnanovdb_grid_handle_t p, pnanovdb_uint32_t index, double voxel_size)
Definition PNanoVDB.h:1388
PNANOVDB_FORCE_INLINE pnanovdb_address_t pnanovdb_upper_get_min_address(pnanovdb_grid_type_t grid_type, pnanovdb_buf_t buf, pnanovdb_upper_handle_t node)
Definition PNanoVDB.h:2439
PNANOVDB_FORCE_INLINE pnanovdb_address_t pnanovdb_root_get_value_address_bit(pnanovdb_grid_type_t grid_type, pnanovdb_buf_t buf, pnanovdb_root_handle_t root, PNANOVDB_IN(pnanovdb_coord_t) ijk, PNANOVDB_INOUT(pnanovdb_uint32_t) bit_index)
Definition PNanoVDB.h:2593
PNANOVDB_FORCE_INLINE pnanovdb_leaf_handle_t pnanovdb_lower_get_child(pnanovdb_grid_type_t grid_type, pnanovdb_buf_t buf, pnanovdb_lower_handle_t lower, pnanovdb_uint32_t n)
Definition PNanoVDB.h:2388
PNANOVDB_FORCE_INLINE pnanovdb_uint64_t pnanovdb_leaf_pointindex_get_offset(pnanovdb_buf_t buf, pnanovdb_leaf_handle_t leaf)
Definition PNanoVDB.h:2287
PNANOVDB_FORCE_INLINE pnanovdb_uint32_t pnanovdb_read_uint8(pnanovdb_buf_t buf, pnanovdb_address_t address)
Definition PNanoVDB.h:1003
PNANOVDB_FORCE_INLINE pnanovdb_coord_t pnanovdb_upper_get_bbox_min(pnanovdb_buf_t buf, pnanovdb_upper_handle_t p)
Definition PNanoVDB.h:1730
PNANOVDB_FORCE_INLINE void pnanovdb_gridblindmetadata_set_data_type(pnanovdb_buf_t buf, pnanovdb_gridblindmetadata_handle_t p, pnanovdb_uint32_t data_type)
Definition PNanoVDB.h:1524
PNANOVDB_FORCE_INLINE pnanovdb_vec3_t pnanovdb_read_vec3u16(pnanovdb_buf_t buf, pnanovdb_address_t address)
Definition PNanoVDB.h:1008
PNANOVDB_FORCE_INLINE void pnanovdb_upper_set_value_mask(pnanovdb_buf_t buf, pnanovdb_upper_handle_t p, pnanovdb_uint32_t bit_index, pnanovdb_bool_t value)
Definition PNanoVDB.h:1754
PNANOVDB_FORCE_INLINE float pnanovdb_read_float(pnanovdb_buf_t buf, pnanovdb_address_t address)
Definition PNanoVDB.h:969
PNANOVDB_FORCE_INLINE pnanovdb_uint64_t pnanovdb_coord_to_key(PNANOVDB_IN(pnanovdb_coord_t) ijk)
Definition PNanoVDB.h:2014
PNANOVDB_FORCE_INLINE void pnanovdb_tree_set_first_upper(pnanovdb_buf_t buf, pnanovdb_tree_handle_t p, pnanovdb_upper_handle_t upper)
Definition PNanoVDB.h:2062
PNANOVDB_FORCE_INLINE void pnanovdb_map_set_matf(pnanovdb_buf_t buf, pnanovdb_map_handle_t p, pnanovdb_uint32_t index, float matf)
Definition PNanoVDB.h:1230
PNANOVDB_FORCE_INLINE pnanovdb_bool_t pnanovdb_readaccessor_iscached0(PNANOVDB_INOUT(pnanovdb_readaccessor_t) acc, int dirty)
Definition PNanoVDB.h:2766
#define PNANOVDB_GRID_OFF_BLIND_METADATA_COUNT
Definition PNanoVDB.h:1298
#define PNANOVDB_LEAF_TABLE_NEG_OFF_BBOX_DIF_AND_FLAGS
Definition PNanoVDB.h:1850
PNANOVDB_FORCE_INLINE pnanovdb_uint32_t pnanovdb_leaf_get_bbox_dif_and_flags(pnanovdb_buf_t buf, pnanovdb_leaf_handle_t p)
Definition PNanoVDB.h:1857
PNANOVDB_FORCE_INLINE pnanovdb_uint64_t pnanovdb_root_pointindex_get_point_address_range(pnanovdb_buf_t buf, pnanovdb_grid_type_t value_type, pnanovdb_address_t value_address, pnanovdb_address_t blindmetadata_value_address, PNANOVDB_IN(pnanovdb_coord_t) ijk, pnanovdb_uint32_t level, PNANOVDB_INOUT(pnanovdb_address_t) address_begin, PNANOVDB_INOUT(pnanovdb_address_t) address_end)
Definition PNanoVDB.h:2714
#define PNANOVDB_TREE_OFF_TILE_COUNT_UPPER
Definition PNanoVDB.h:1559
PNANOVDB_FORCE_INLINE pnanovdb_address_t pnanovdb_leaf_get_stddev_address(pnanovdb_grid_type_t grid_type, pnanovdb_buf_t buf, pnanovdb_leaf_handle_t node)
Definition PNanoVDB.h:2099
#define PNANOVDB_TREE_OFF_TILE_COUNT_LOWER
Definition PNanoVDB.h:1558
PNANOVDB_FORCE_INLINE pnanovdb_address_t pnanovdb_root_get_max_address(pnanovdb_grid_type_t grid_type, pnanovdb_buf_t buf, pnanovdb_root_handle_t root)
Definition PNanoVDB.h:2537
PNANOVDB_FORCE_INLINE void pnanovdb_grid_set_grid_count(pnanovdb_buf_t buf, pnanovdb_grid_handle_t p, pnanovdb_uint32_t grid_count)
Definition PNanoVDB.h:1376
PNANOVDB_FORCE_INLINE double pnanovdb_grid_get_world_bbox(pnanovdb_buf_t buf, pnanovdb_grid_handle_t p, pnanovdb_uint32_t index)
Definition PNanoVDB.h:1333
PNANOVDB_FORCE_INLINE pnanovdb_int64_t pnanovdb_root_tile_get_child(pnanovdb_buf_t buf, pnanovdb_root_tile_handle_t p)
Definition PNanoVDB.h:1690
PNANOVDB_FORCE_INLINE pnanovdb_uint64_t pnanovdb_leaf_pointindex_get_first(pnanovdb_buf_t buf, pnanovdb_leaf_handle_t leaf, pnanovdb_uint32_t i)
Definition PNanoVDB.h:2295
PNANOVDB_FORCE_INLINE pnanovdb_address_t pnanovdb_leaf_get_min_address(pnanovdb_grid_type_t grid_type, pnanovdb_buf_t buf, pnanovdb_leaf_handle_t node)
Definition PNanoVDB.h:2078
PNANOVDB_FORCE_INLINE pnanovdb_address_t pnanovdb_root_get_ave_address(pnanovdb_grid_type_t grid_type, pnanovdb_buf_t buf, pnanovdb_root_handle_t root)
Definition PNanoVDB.h:2544
PNANOVDB_STATIC_CONST pnanovdb_uint32_t pnanovdb_grid_type_leaf_type[32]
Definition PNanoVDB.h:1175
PNANOVDB_FORCE_INLINE void pnanovdb_write_int64(pnanovdb_buf_t buf, pnanovdb_address_t address, pnanovdb_int64_t value)
Definition PNanoVDB.h:1069
#define PNANOVDB_MAP_OFF_TAPERD
Definition PNanoVDB.h:1201
PNANOVDB_FORCE_INLINE pnanovdb_address_t pnanovdb_upper_get_max_address(pnanovdb_grid_type_t grid_type, pnanovdb_buf_t buf, pnanovdb_upper_handle_t node)
Definition PNanoVDB.h:2446
#define PNANOVDB_GRID_OFF_GRID_SIZE
Definition PNanoVDB.h:1290
PNANOVDB_FORCE_INLINE pnanovdb_uint32_t pnanovdb_grid_get_flags(pnanovdb_buf_t buf, pnanovdb_grid_handle_t p)
Definition PNanoVDB.h:1312
PNANOVDB_FORCE_INLINE pnanovdb_uint64_t pnanovdb_leaf_index_get_value_index(pnanovdb_buf_t buf, pnanovdb_address_t value_address, PNANOVDB_IN(pnanovdb_coord_t) ijk)
Definition PNanoVDB.h:2187
PNANOVDB_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)
Definition PNanoVDB.h:1868
PNANOVDB_FORCE_INLINE pnanovdb_uint64_t pnanovdb_root_index_get_value_index(pnanovdb_buf_t buf, pnanovdb_address_t address, PNANOVDB_IN(pnanovdb_coord_t) ijk, pnanovdb_uint32_t level)
Definition PNanoVDB.h:2657
PNANOVDB_FORCE_INLINE double pnanovdb_grid_get_voxel_size(pnanovdb_buf_t buf, pnanovdb_grid_handle_t p, pnanovdb_uint32_t index)
Definition PNanoVDB.h:1336
PNANOVDB_FORCE_INLINE void pnanovdb_gridblindmetadata_set_data_offset(pnanovdb_buf_t buf, pnanovdb_gridblindmetadata_handle_t p, pnanovdb_int64_t data_offset)
Definition PNanoVDB.h:1509
#define PNANOVDB_TREE_OFF_NODE_COUNT_UPPER
Definition PNanoVDB.h:1557
PNANOVDB_FORCE_INLINE pnanovdb_address_t pnanovdb_root_get_value_address_and_level_and_cache(pnanovdb_grid_type_t grid_type, pnanovdb_buf_t buf, pnanovdb_root_handle_t root, PNANOVDB_IN(pnanovdb_coord_t) ijk, PNANOVDB_INOUT(pnanovdb_readaccessor_t) acc, PNANOVDB_INOUT(pnanovdb_uint32_t) level)
Definition PNanoVDB.h:2859
PNANOVDB_FORCE_INLINE void pnanovdb_gridblindmetadata_set_data_class(pnanovdb_buf_t buf, pnanovdb_gridblindmetadata_handle_t p, pnanovdb_uint32_t data_class)
Definition PNanoVDB.h:1521
#define PNANOVDB_GRID_TYPE_VEC3U8
Definition PNanoVDB.h:1128
PNANOVDB_FORCE_INLINE void pnanovdb_grid_set_world_bbox(pnanovdb_buf_t buf, pnanovdb_grid_handle_t p, pnanovdb_uint32_t index, double world_bbox)
Definition PNanoVDB.h:1385
#define PNANOVDB_TREE_OFF_TILE_COUNT_ROOT
Definition PNanoVDB.h:1560
#define PNANOVDB_ROOT_TILE_OFF_STATE
Definition PNanoVDB.h:1685
PNANOVDB_FORCE_INLINE void pnanovdb_tree_set_node_offset_upper(pnanovdb_buf_t buf, pnanovdb_tree_handle_t p, pnanovdb_uint64_t node_offset_upper)
Definition PNanoVDB.h:1603
PNANOVDB_FORCE_INLINE pnanovdb_uint32_t pnanovdb_leaf_onindex_get_value_count(pnanovdb_buf_t buf, pnanovdb_leaf_handle_t leaf)
Definition PNanoVDB.h:2196
#define PNANOVDB_GRIDBLINDMETADATA_SIZE
Definition PNanoVDB.h:1477
PNANOVDB_FORCE_INLINE pnanovdb_bool_t pnanovdb_leaf_index_has_stats(pnanovdb_buf_t buf, pnanovdb_leaf_handle_t leaf)
Definition PNanoVDB.h:2162
PNANOVDB_FORCE_INLINE pnanovdb_tree_handle_t pnanovdb_grid_get_tree(pnanovdb_buf_t buf, pnanovdb_grid_handle_t grid)
Definition PNanoVDB.h:1964
PNANOVDB_FORCE_INLINE float pnanovdb_map_get_vecf(pnanovdb_buf_t buf, pnanovdb_map_handle_t p, pnanovdb_uint32_t index)
Definition PNanoVDB.h:1209
PNANOVDB_FORCE_INLINE pnanovdb_uint32_t pnanovdb_upper_coord_to_offset(PNANOVDB_IN(pnanovdb_coord_t) ijk)
Definition PNanoVDB.h:2432
PNANOVDB_FORCE_INLINE pnanovdb_root_tile_handle_t pnanovdb_root_get_tile(pnanovdb_grid_type_t grid_type, pnanovdb_root_handle_t root, pnanovdb_uint32_t n)
Definition PNanoVDB.h:1980
PNANOVDB_FORCE_INLINE void pnanovdb_root_tile_set_state(pnanovdb_buf_t buf, pnanovdb_root_tile_handle_t p, pnanovdb_uint32_t state)
Definition PNanoVDB.h:1703
PNANOVDB_FORCE_INLINE pnanovdb_uint64_t pnanovdb_leaf_index_get_ave_index(pnanovdb_buf_t buf, pnanovdb_address_t ave_address)
Definition PNanoVDB.h:2177
PNANOVDB_FORCE_INLINE pnanovdb_uint32_t pnanovdb_grid_get_grid_type(pnanovdb_buf_t buf, pnanovdb_grid_handle_t p)
Definition PNanoVDB.h:1342
PNANOVDB_FORCE_INLINE pnanovdb_uint64_t pnanovdb_leaf_index_get_dev_index(pnanovdb_buf_t buf, pnanovdb_address_t dev_address)
Definition PNanoVDB.h:2182
PNANOVDB_FORCE_INLINE void pnanovdb_readaccessor_init(PNANOVDB_INOUT(pnanovdb_readaccessor_t) acc, pnanovdb_root_handle_t root)
Definition PNanoVDB.h:2755
PNANOVDB_FORCE_INLINE float pnanovdb_leaf_fp_read_float(pnanovdb_buf_t buf, pnanovdb_address_t address, PNANOVDB_IN(pnanovdb_coord_t) ijk, pnanovdb_uint32_t value_log_bits)
Definition PNanoVDB.h:2121
PNANOVDB_FORCE_INLINE void pnanovdb_gridblindmetadata_set_name(pnanovdb_buf_t buf, pnanovdb_gridblindmetadata_handle_t p, pnanovdb_uint32_t index, pnanovdb_uint32_t name)
Definition PNanoVDB.h:1527
PNANOVDB_FORCE_INLINE pnanovdb_address_t pnanovdb_leaf_get_ave_address(pnanovdb_grid_type_t grid_type, pnanovdb_buf_t buf, pnanovdb_leaf_handle_t node)
Definition PNanoVDB.h:2092
PNANOVDB_FORCE_INLINE float pnanovdb_leaf_fpn_read_float(pnanovdb_buf_t buf, pnanovdb_address_t address, PNANOVDB_IN(pnanovdb_coord_t) ijk)
Definition PNanoVDB.h:2152
PNANOVDB_FORCE_INLINE pnanovdb_uint32_t pnanovdb_version_get_patch(pnanovdb_uint32_t version)
Definition PNanoVDB.h:1426
#define PNANOVDB_LOWER_OFF_CHILD_MASK
Definition PNanoVDB.h:1790
#define PNANOVDB_GRID_OFF_FLAGS
Definition PNanoVDB.h:1287
PNANOVDB_FORCE_INLINE pnanovdb_root_tile_handle_t pnanovdb_root_find_tile(pnanovdb_grid_type_t grid_type, pnanovdb_buf_t buf, pnanovdb_root_handle_t root, PNANOVDB_IN(pnanovdb_coord_t) ijk)
Definition PNanoVDB.h:2031
PNANOVDB_FORCE_INLINE float pnanovdb_root_fp4_read_float(pnanovdb_buf_t buf, pnanovdb_address_t address, PNANOVDB_IN(pnanovdb_coord_t) ijk, pnanovdb_uint32_t level)
Definition PNanoVDB.h:2601
Definition PNanoVDB.h:1279
pnanovdb_address_t address
Definition PNanoVDB.h:1279
Definition PNanoVDB.h:1258
pnanovdb_uint64_t magic
Definition PNanoVDB.h:1259
pnanovdb_uint32_t grid_class
Definition PNanoVDB.h:1270
double voxel_size[3]
Definition PNanoVDB.h:1269
pnanovdb_uint32_t grid_index
Definition PNanoVDB.h:1263
pnanovdb_uint64_t grid_size
Definition PNanoVDB.h:1265
pnanovdb_uint32_t grid_type
Definition PNanoVDB.h:1271
pnanovdb_uint32_t version
Definition PNanoVDB.h:1261
pnanovdb_uint32_t data0
Definition PNanoVDB.h:1274
pnanovdb_int64_t blind_metadata_offset
Definition PNanoVDB.h:1272
double world_bbox[6]
Definition PNanoVDB.h:1268
pnanovdb_uint64_t data1
Definition PNanoVDB.h:1275
pnanovdb_uint32_t flags
Definition PNanoVDB.h:1262
pnanovdb_uint64_t data2
Definition PNanoVDB.h:1276
pnanovdb_uint32_t blind_metadata_count
Definition PNanoVDB.h:1273
pnanovdb_uint64_t checksum
Definition PNanoVDB.h:1260
pnanovdb_map_t map
Definition PNanoVDB.h:1267
pnanovdb_uint32_t grid_count
Definition PNanoVDB.h:1264
pnanovdb_uint32_t grid_name[256/4]
Definition PNanoVDB.h:1266
Definition PNanoVDB.h:1880
pnanovdb_uint32_t leaf_off_stddev
Definition PNanoVDB.h:1906
pnanovdb_uint32_t leaf_off_ave
Definition PNanoVDB.h:1905
pnanovdb_uint32_t upper_off_min
Definition PNanoVDB.h:1891
pnanovdb_uint32_t leaf_size
Definition PNanoVDB.h:1908
pnanovdb_uint32_t root_size
Definition PNanoVDB.h:1886
pnanovdb_uint32_t leaf_off_table
Definition PNanoVDB.h:1907
pnanovdb_uint32_t upper_off_max
Definition PNanoVDB.h:1892
pnanovdb_uint32_t upper_off_ave
Definition PNanoVDB.h:1893
pnanovdb_uint32_t table_stride
Definition PNanoVDB.h:1888
pnanovdb_uint32_t upper_off_table
Definition PNanoVDB.h:1895
pnanovdb_uint32_t root_tile_size
Definition PNanoVDB.h:1890
pnanovdb_uint32_t leaf_off_min
Definition PNanoVDB.h:1903
pnanovdb_uint32_t lower_size
Definition PNanoVDB.h:1902
pnanovdb_uint32_t lower_off_min
Definition PNanoVDB.h:1897
pnanovdb_uint32_t upper_size
Definition PNanoVDB.h:1896
pnanovdb_uint32_t value_stride_bits
Definition PNanoVDB.h:1887
pnanovdb_uint32_t root_off_min
Definition PNanoVDB.h:1882
pnanovdb_uint32_t root_tile_off_value
Definition PNanoVDB.h:1889
pnanovdb_uint32_t root_off_ave
Definition PNanoVDB.h:1884
pnanovdb_uint32_t lower_off_stddev
Definition PNanoVDB.h:1900
pnanovdb_uint32_t root_off_stddev
Definition PNanoVDB.h:1885
pnanovdb_uint32_t root_off_background
Definition PNanoVDB.h:1881
pnanovdb_uint32_t root_off_max
Definition PNanoVDB.h:1883
pnanovdb_uint32_t lower_off_table
Definition PNanoVDB.h:1901
pnanovdb_uint32_t lower_off_max
Definition PNanoVDB.h:1898
pnanovdb_uint32_t leaf_off_max
Definition PNanoVDB.h:1904
pnanovdb_uint32_t upper_off_stddev
Definition PNanoVDB.h:1894
pnanovdb_uint32_t lower_off_ave
Definition PNanoVDB.h:1899
Definition PNanoVDB.h:1840
pnanovdb_address_t address
Definition PNanoVDB.h:1840
Definition PNanoVDB.h:1832
pnanovdb_uint32_t value_mask[16]
Definition PNanoVDB.h:1835
pnanovdb_uint32_t bbox_dif_and_flags
Definition PNanoVDB.h:1834
pnanovdb_coord_t bbox_min
Definition PNanoVDB.h:1833
Definition PNanoVDB.h:1780
pnanovdb_address_t address
Definition PNanoVDB.h:1780
Definition PNanoVDB.h:1770
pnanovdb_uint32_t child_mask[128]
Definition PNanoVDB.h:1775
pnanovdb_uint64_t flags
Definition PNanoVDB.h:1773
pnanovdb_uint32_t value_mask[128]
Definition PNanoVDB.h:1774
pnanovdb_coord_t bbox_max
Definition PNanoVDB.h:1772
pnanovdb_coord_t bbox_min
Definition PNanoVDB.h:1771
Definition PNanoVDB.h:1189
pnanovdb_address_t address
Definition PNanoVDB.h:1189
Definition PNanoVDB.h:1178
double matd[9]
Definition PNanoVDB.h:1183
double vecd[3]
Definition PNanoVDB.h:1185
float taperf
Definition PNanoVDB.h:1182
double invmatd[9]
Definition PNanoVDB.h:1184
float matf[9]
Definition PNanoVDB.h:1179
double taperd
Definition PNanoVDB.h:1186
float invmatf[9]
Definition PNanoVDB.h:1180
float vecf[3]
Definition PNanoVDB.h:1181
Definition PNanoVDB.h:2746
pnanovdb_upper_handle_t upper
Definition PNanoVDB.h:2750
pnanovdb_root_handle_t root
Definition PNanoVDB.h:2751
pnanovdb_coord_t key
Definition PNanoVDB.h:2747
pnanovdb_lower_handle_t lower
Definition PNanoVDB.h:2749
pnanovdb_leaf_handle_t leaf
Definition PNanoVDB.h:2748
Definition PNanoVDB.h:1640
pnanovdb_address_t address
Definition PNanoVDB.h:1640
Definition PNanoVDB.h:1632
pnanovdb_uint32_t table_size
Definition PNanoVDB.h:1635
pnanovdb_coord_t bbox_max
Definition PNanoVDB.h:1634
pnanovdb_uint32_t pad1
Definition PNanoVDB.h:1636
pnanovdb_coord_t bbox_min
Definition PNanoVDB.h:1633
Definition PNanoVDB.h:1678
pnanovdb_address_t address
Definition PNanoVDB.h:1678
Definition PNanoVDB.h:1670
pnanovdb_uint64_t key
Definition PNanoVDB.h:1671
pnanovdb_uint32_t state
Definition PNanoVDB.h:1673
pnanovdb_int64_t child
Definition PNanoVDB.h:1672
pnanovdb_uint32_t pad1
Definition PNanoVDB.h:1674
Definition PNanoVDB.h:1546
pnanovdb_address_t address
Definition PNanoVDB.h:1546
Definition PNanoVDB.h:1532
pnanovdb_uint32_t node_count_leaf
Definition PNanoVDB.h:1537
pnanovdb_uint32_t tile_count_lower
Definition PNanoVDB.h:1540
pnanovdb_uint64_t node_offset_upper
Definition PNanoVDB.h:1535
pnanovdb_uint64_t node_offset_root
Definition PNanoVDB.h:1536
pnanovdb_uint64_t node_offset_leaf
Definition PNanoVDB.h:1533
pnanovdb_uint64_t voxel_count
Definition PNanoVDB.h:1543
pnanovdb_uint32_t tile_count_upper
Definition PNanoVDB.h:1541
pnanovdb_uint64_t node_offset_lower
Definition PNanoVDB.h:1534
pnanovdb_uint32_t tile_count_root
Definition PNanoVDB.h:1542
pnanovdb_uint32_t node_count_upper
Definition PNanoVDB.h:1539
pnanovdb_uint32_t node_count_lower
Definition PNanoVDB.h:1538
Definition PNanoVDB.h:1718
pnanovdb_address_t address
Definition PNanoVDB.h:1718
Definition PNanoVDB.h:1708
pnanovdb_uint64_t flags
Definition PNanoVDB.h:1711
pnanovdb_uint32_t value_mask[1024]
Definition PNanoVDB.h:1712
pnanovdb_coord_t bbox_max
Definition PNanoVDB.h:1710
pnanovdb_uint32_t child_mask[1024]
Definition PNanoVDB.h:1713
pnanovdb_coord_t bbox_min
Definition PNanoVDB.h:1709