7 # define NANOVDB_USE_INTRINSICS
8 # include <nanovdb/NanoVDB.h>
9 # include <nanovdb/util/SampleFromVoxels.h>
18 #define SET_CUBIC_SPLINE_WEIGHTS(u, t) \
20 u[0] = (((-1.0f / 6.0f) * t + 0.5f) * t - 0.5f) * t + (1.0f / 6.0f); \
21 u[1] = ((0.5f * t - 1.0f) * t) * t + (2.0f / 3.0f); \
22 u[2] = ((-0.5f * t + 0.5f) * t + 0.5f) * t + (1.0f / 6.0f); \
23 u[3] = (1.0f / 6.0f) * t * t * t; \
38 if constexpr (std::is_same<OutT, float4>::value) {
53 const float f = 1.0f / 255.0f;
59 return r * (1.0f / 255.0f);
79 return r * (1.0f / 65535.0f);
84 const float f = 1.0f / 65535.0f;
118 if (x < 0 || x >=
width || y < 0 || y >=
height || z < 0 || z >= depth) {
139 OutT read(
const TexT *,
int,
int,
int,
int,
int,
int))
141 OutT
r = (1.0f - tz) * (1.0f - ty) * (1.0f - tx) *
143 r += (1.0f - tz) * (1.0f - ty) * tx * read(
data, nix, iy, iz,
width,
height, depth);
144 r += (1.0f - tz) * ty * (1.0f - tx) * read(
data, ix, niy, iz,
width,
height, depth);
145 r += (1.0f - tz) * ty * tx * read(
data, nix, niy, iz,
width,
height, depth);
147 r += tz * (1.0f - ty) * (1.0f - tx) * read(
data, ix, iy, niz,
width,
height, depth);
148 r += tz * (1.0f - ty) * tx * read(
data, nix, iy, niz,
width,
height, depth);
149 r += tz * ty * (1.0f - tx) * read(
data, ix, niy, niz,
width,
height, depth);
166 OutT read(
const TexT *,
int,
int,
int,
int,
int,
int))
168 float u[4],
v[4],
w[4];
173 #define DATA(x, y, z) (read(data, xc[x], yc[y], zc[z], width, height, depth))
174 #define COL_TERM(col, row) \
175 (v[col] * (u[0] * DATA(0, col, row) + u[1] * DATA(1, col, row) + u[2] * DATA(2, col, row) + \
176 u[3] * DATA(3, col, row)))
177 #define ROW_TERM(row) \
178 (w[row] * (COL_TERM(0, row) + COL_TERM(1, row) + COL_TERM(2, row) + COL_TERM(3, row)))
216 ix = wrap_periodic(ix,
width);
217 iy = wrap_periodic(iy,
height);
221 if (ix < 0 || ix >=
width || iy < 0 || iy >=
height) {
226 ix = wrap_clamp(ix,
width);
227 iy = wrap_clamp(iy,
height);
234 const TexT *
data = (
const TexT *)info.
data;
246 const float tx =
frac(
x * (
float)
width - 0.5f, &ix);
247 const float ty =
frac(
y * (
float)
height - 0.5f, &iy);
251 ix = wrap_periodic(ix,
width);
252 nix = wrap_periodic(ix + 1,
width);
254 iy = wrap_periodic(iy,
height);
255 niy = wrap_periodic(iy + 1,
height);
259 if (ix < -1 || ix >=
width || iy < -1 || iy >=
height) {
266 nix = wrap_clamp(ix + 1,
width);
267 ix = wrap_clamp(ix,
width);
268 niy = wrap_clamp(iy + 1,
height);
269 iy = wrap_clamp(iy,
height);
276 const TexT *
data = (
const TexT *)info.
data;
290 const float tx =
frac(
x * (
float)
width - 0.5f, &ix);
291 const float ty =
frac(
y * (
float)
height - 0.5f, &iy);
299 ix = wrap_periodic(ix,
width);
300 pix = wrap_periodic(ix - 1,
width);
301 nix = wrap_periodic(ix + 1,
width);
302 nnix = wrap_periodic(ix + 2,
width);
304 iy = wrap_periodic(iy,
height);
305 piy = wrap_periodic(iy - 1,
height);
306 niy = wrap_periodic(iy + 1,
height);
307 nniy = wrap_periodic(iy + 2,
height);
311 if (ix < -2 || ix >
width || iy < -2 || iy >
height) {
324 pix = wrap_clamp(ix - 1,
width);
325 nix = wrap_clamp(ix + 1,
width);
326 nnix = wrap_clamp(ix + 2,
width);
327 ix = wrap_clamp(ix,
width);
329 piy = wrap_clamp(iy - 1,
height);
330 niy = wrap_clamp(iy + 1,
height);
331 nniy = wrap_clamp(iy + 2,
height);
332 iy = wrap_clamp(iy,
height);
339 const TexT *
data = (
const TexT *)info.
data;
340 const int xc[4] = {pix, ix, nix, nnix};
341 const int yc[4] = {piy, iy, niy, nniy};
347 #define DATA(x, y) (read_clip(data, xc[x], yc[y], width, height))
350 (u[0] * DATA(0, col) + u[1] * DATA(1, col) + u[2] * DATA(2, col) + u[3] * DATA(3, col)))
365 return interp_closest(info,
x,
y);
367 return interp_linear(info,
x,
y);
369 return interp_cubic(info,
x,
y);
382 const int depth = info.
depth;
387 frac(
z * (
float)depth, &iz);
391 ix = wrap_periodic(ix,
width);
392 iy = wrap_periodic(iy,
height);
393 iz = wrap_periodic(iz, depth);
397 if (ix < 0 || ix >=
width || iy < 0 || iy >=
height || iz < 0 || iz >= depth) {
402 ix = wrap_clamp(ix,
width);
403 iy = wrap_clamp(iy,
height);
404 iz = wrap_clamp(iz, depth);
411 const TexT *
data = (
const TexT *)info.
data;
422 const int depth = info.
depth;
427 float tx =
frac(
x * (
float)
width - 0.5f, &ix);
429 float tz =
frac(
z * (
float)depth - 0.5f, &iz);
433 ix = wrap_periodic(ix,
width);
434 nix = wrap_periodic(ix + 1,
width);
436 iy = wrap_periodic(iy,
height);
437 niy = wrap_periodic(iy + 1,
height);
439 iz = wrap_periodic(iz, depth);
440 niz = wrap_periodic(iz + 1, depth);
444 if (ix < -1 || ix >=
width || iy < -1 || iy >=
height || iz < -1 || iz >= depth) {
453 if (ix >= 0 && nix < width && iy >= 0 && niy < height && iz >= 0 && niz < depth) {
459 return trilinear_lookup((
const TexT *)info.
data,
474 nix = wrap_clamp(ix + 1,
width);
475 ix = wrap_clamp(ix,
width);
477 niy = wrap_clamp(iy + 1,
height);
478 iy = wrap_clamp(iy,
height);
480 niz = wrap_clamp(iz + 1, depth);
481 iz = wrap_clamp(iz, depth);
488 return trilinear_lookup((
const TexT *)info.
data,
512 #if defined(__GNUC__) || defined(__clang__)
522 int depth = info.
depth;
526 const float tx =
frac(
x * (
float)
width - 0.5f, &ix);
527 const float ty =
frac(
y * (
float)
height - 0.5f, &iy);
528 const float tz =
frac(
z * (
float)depth - 0.5f, &iz);
532 int nnix, nniy, nniz;
536 ix = wrap_periodic(ix,
width);
537 pix = wrap_periodic(ix - 1,
width);
538 nix = wrap_periodic(ix + 1,
width);
539 nnix = wrap_periodic(ix + 2,
width);
541 iy = wrap_periodic(iy,
height);
542 niy = wrap_periodic(iy + 1,
height);
543 piy = wrap_periodic(iy - 1,
height);
544 nniy = wrap_periodic(iy + 2,
height);
546 iz = wrap_periodic(iz, depth);
547 piz = wrap_periodic(iz - 1, depth);
548 niz = wrap_periodic(iz + 1, depth);
549 nniz = wrap_periodic(iz + 2, depth);
553 if (ix < -2 || ix >
width || iy < -2 || iy >
height || iz < -2 || iz > depth) {
570 if (pix >= 0 && nnix < width && piy >= 0 && nniy < height && piz >= 0 && nniz < depth) {
576 const int xc[4] = {pix, ix, nix, nnix};
577 const int yc[4] = {piy, iy, niy, nniy};
578 const int zc[4] = {piz, iz, niz, nniz};
579 return tricubic_lookup(
580 (
const TexT *)info.
data, tx, ty, tz, xc, yc, zc,
width,
height, depth, read_clip);
583 pix = wrap_clamp(ix - 1,
width);
584 nix = wrap_clamp(ix + 1,
width);
585 nnix = wrap_clamp(ix + 2,
width);
586 ix = wrap_clamp(ix,
width);
588 piy = wrap_clamp(iy - 1,
height);
589 niy = wrap_clamp(iy + 1,
height);
590 nniy = wrap_clamp(iy + 2,
height);
591 iy = wrap_clamp(iy,
height);
593 piz = wrap_clamp(iz - 1, depth);
594 niz = wrap_clamp(iz + 1, depth);
595 nniz = wrap_clamp(iz + 2, depth);
596 iz = wrap_clamp(iz, depth);
602 const int xc[4] = {pix, ix, nix, nnix};
603 const int yc[4] = {piy, iy, niy, nniy};
604 const int zc[4] = {piz, iz, niz, nniz};
605 const TexT *
data = (
const TexT *)info.
data;
606 return tricubic_lookup(
data, tx, ty, tz, xc, yc, zc,
width,
height, depth, read);
614 return interp_3d_closest(info,
x,
y,
z);
616 return interp_3d_linear(info,
x,
y,
z);
618 return interp_3d_cubic(info,
x,
y,
z);
624 template<
typename TexT,
typename OutT =
float4>
struct NanoVDBInterpolator {
626 typedef typename nanovdb::NanoGrid<TexT>::AccessorType AccessorType;
644 return read(nanovdb::SampleFromVoxels<AccessorType, 0, false>(acc)(xyz));
653 return read(nanovdb::SampleFromVoxels<AccessorType, 1, false>(acc)(xyz));
657 # if defined(__GNUC__) || defined(__clang__)
663 interp_3d_cubic(
const AccessorType &acc,
float x,
float y,
float z)
668 int nnix, nniy, nniz;
671 const float tx =
frac(
x - 0.5f, &ix);
672 const float ty =
frac(
y - 0.5f, &iy);
673 const float tz =
frac(
z - 0.5f, &iz);
685 const int xc[4] = {pix, ix, nix, nnix};
686 const int yc[4] = {piy, iy, niy, nniy};
687 const int zc[4] = {piz, iz, niz, nniz};
688 float u[4],
v[4],
w[4];
693 # define DATA(x, y, z) (read(acc.getValue(nanovdb::Coord(xc[x], yc[y], zc[z]))))
694 # define COL_TERM(col, row) \
695 (v[col] * (u[0] * DATA(0, col, row) + u[1] * DATA(1, col, row) + u[2] * DATA(2, col, row) + \
696 u[3] * DATA(3, col, row)))
697 # define ROW_TERM(row) \
698 (w[row] * (COL_TERM(0, row) + COL_TERM(1, row) + COL_TERM(2, row) + COL_TERM(3, row)))
715 using namespace nanovdb;
717 NanoGrid<TexT> *
const grid = (NanoGrid<TexT> *)info.
data;
718 AccessorType acc = grid->getAccessor();
722 return interp_3d_closest(acc,
x,
y,
z);
724 return interp_3d_linear(acc,
x,
y,
z);
726 return interp_3d_cubic(acc,
x,
y,
z);
732 #undef SET_CUBIC_SPLINE_WEIGHTS
815 const float f = NanoVDBInterpolator<float, float>::interp_3d(info,
P.x,
P.y,
P.z,
interp);
819 return NanoVDBInterpolator<nanovdb::Vec3f>::interp_3d(info,
P.x,
P.y,
P.z,
interp);
821 const float f = NanoVDBInterpolator<nanovdb::FpN, float>::interp_3d(
826 const float f = NanoVDBInterpolator<nanovdb::Fp16, float>::interp_3d(
typedef float(TangentPoint)[2]
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum const void *lists _GL_VOID_RET _GL_VOID const GLdouble *equation _GL_VOID_RET _GL_VOID GLdouble GLdouble blue _GL_VOID_RET _GL_VOID GLfloat GLfloat blue _GL_VOID_RET _GL_VOID GLint GLint blue _GL_VOID_RET _GL_VOID GLshort GLshort blue _GL_VOID_RET _GL_VOID GLubyte GLubyte blue _GL_VOID_RET _GL_VOID GLuint GLuint blue _GL_VOID_RET _GL_VOID GLushort GLushort blue _GL_VOID_RET _GL_VOID GLbyte GLbyte GLbyte alpha _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble alpha _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat alpha _GL_VOID_RET _GL_VOID GLint GLint GLint alpha _GL_VOID_RET _GL_VOID GLshort GLshort GLshort alpha _GL_VOID_RET _GL_VOID GLubyte GLubyte GLubyte alpha _GL_VOID_RET _GL_VOID GLuint GLuint GLuint alpha _GL_VOID_RET _GL_VOID GLushort GLushort GLushort alpha _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLint GLsizei GLsizei GLenum type _GL_VOID_RET _GL_VOID GLsizei GLenum GLenum const void *pixels _GL_VOID_RET _GL_VOID const void *pointer _GL_VOID_RET _GL_VOID GLdouble v _GL_VOID_RET _GL_VOID GLfloat v _GL_VOID_RET _GL_VOID GLint GLint i2 _GL_VOID_RET _GL_VOID GLint j _GL_VOID_RET _GL_VOID GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble GLdouble GLdouble zFar _GL_VOID_RET _GL_UINT GLdouble *equation _GL_VOID_RET _GL_VOID GLenum GLint *params _GL_VOID_RET _GL_VOID GLenum GLfloat *v _GL_VOID_RET _GL_VOID GLenum GLfloat *params _GL_VOID_RET _GL_VOID GLfloat *values _GL_VOID_RET _GL_VOID GLushort *values _GL_VOID_RET _GL_VOID GLenum GLfloat *params _GL_VOID_RET _GL_VOID GLenum GLdouble *params _GL_VOID_RET _GL_VOID GLenum GLint *params _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_BOOL GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLenum GLfloat param _GL_VOID_RET _GL_VOID GLenum GLint param _GL_VOID_RET _GL_VOID GLushort pattern _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLint const GLdouble *points _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLint GLdouble GLdouble GLint GLint const GLdouble *points _GL_VOID_RET _GL_VOID GLdouble GLdouble u2 _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLdouble GLdouble v2 _GL_VOID_RET _GL_VOID GLenum GLfloat param _GL_VOID_RET _GL_VOID GLenum GLint param _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLdouble GLdouble nz _GL_VOID_RET _GL_VOID GLfloat GLfloat nz _GL_VOID_RET _GL_VOID GLint GLint nz _GL_VOID_RET _GL_VOID GLshort GLshort nz _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_VOID GLsizei const GLfloat *values _GL_VOID_RET _GL_VOID GLsizei const GLushort *values _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID const GLuint const GLclampf *priorities _GL_VOID_RET _GL_VOID GLdouble y _GL_VOID_RET _GL_VOID GLfloat y _GL_VOID_RET _GL_VOID GLint y _GL_VOID_RET _GL_VOID GLshort y _GL_VOID_RET _GL_VOID GLdouble GLdouble z _GL_VOID_RET _GL_VOID GLfloat GLfloat z _GL_VOID_RET _GL_VOID GLint GLint z _GL_VOID_RET _GL_VOID GLshort GLshort z _GL_VOID_RET _GL_VOID GLdouble GLdouble z
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum const void *lists _GL_VOID_RET _GL_VOID const GLdouble *equation _GL_VOID_RET _GL_VOID GLdouble GLdouble blue _GL_VOID_RET _GL_VOID GLfloat GLfloat blue _GL_VOID_RET _GL_VOID GLint GLint blue _GL_VOID_RET _GL_VOID GLshort GLshort blue _GL_VOID_RET _GL_VOID GLubyte GLubyte blue _GL_VOID_RET _GL_VOID GLuint GLuint blue _GL_VOID_RET _GL_VOID GLushort GLushort blue _GL_VOID_RET _GL_VOID GLbyte GLbyte GLbyte alpha _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble alpha _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat alpha _GL_VOID_RET _GL_VOID GLint GLint GLint alpha _GL_VOID_RET _GL_VOID GLshort GLshort GLshort alpha _GL_VOID_RET _GL_VOID GLubyte GLubyte GLubyte alpha _GL_VOID_RET _GL_VOID GLuint GLuint GLuint alpha _GL_VOID_RET _GL_VOID GLushort GLushort GLushort alpha _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLint GLsizei GLsizei GLenum type _GL_VOID_RET _GL_VOID GLsizei GLenum GLenum const void *pixels _GL_VOID_RET _GL_VOID const void *pointer _GL_VOID_RET _GL_VOID GLdouble v _GL_VOID_RET _GL_VOID GLfloat v _GL_VOID_RET _GL_VOID GLint GLint i2 _GL_VOID_RET _GL_VOID GLint j _GL_VOID_RET _GL_VOID GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble GLdouble GLdouble zFar _GL_VOID_RET _GL_UINT GLdouble *equation _GL_VOID_RET _GL_VOID GLenum GLint *params _GL_VOID_RET _GL_VOID GLenum GLfloat *v _GL_VOID_RET _GL_VOID GLenum GLfloat *params _GL_VOID_RET _GL_VOID GLfloat *values _GL_VOID_RET _GL_VOID GLushort *values _GL_VOID_RET _GL_VOID GLenum GLfloat *params _GL_VOID_RET _GL_VOID GLenum GLdouble *params _GL_VOID_RET _GL_VOID GLenum GLint *params _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_BOOL GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLenum GLfloat param _GL_VOID_RET _GL_VOID GLenum GLint param _GL_VOID_RET _GL_VOID GLushort pattern _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLint const GLdouble *points _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLint GLdouble GLdouble GLint GLint const GLdouble *points _GL_VOID_RET _GL_VOID GLdouble GLdouble u2 _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLdouble GLdouble v2 _GL_VOID_RET _GL_VOID GLenum GLfloat param _GL_VOID_RET _GL_VOID GLenum GLint param _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLdouble GLdouble nz _GL_VOID_RET _GL_VOID GLfloat GLfloat nz _GL_VOID_RET _GL_VOID GLint GLint nz _GL_VOID_RET _GL_VOID GLshort GLshort nz _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_VOID GLsizei const GLfloat *values _GL_VOID_RET _GL_VOID GLsizei const GLushort *values _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID const GLuint const GLclampf *priorities _GL_VOID_RET _GL_VOID GLdouble y _GL_VOID_RET _GL_VOID GLfloat y _GL_VOID_RET _GL_VOID GLint y _GL_VOID_RET _GL_VOID GLshort y _GL_VOID_RET _GL_VOID GLdouble GLdouble z _GL_VOID_RET _GL_VOID GLfloat GLfloat z _GL_VOID_RET _GL_VOID GLint GLint z _GL_VOID_RET _GL_VOID GLshort GLshort z _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble w _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat w _GL_VOID_RET _GL_VOID GLint GLint GLint w _GL_VOID_RET _GL_VOID GLshort GLshort GLshort w _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble y2 _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat y2 _GL_VOID_RET _GL_VOID GLint GLint GLint y2 _GL_VOID_RET _GL_VOID GLshort GLshort GLshort y2 _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble z _GL_VOID_RET _GL_VOID GLdouble GLdouble z _GL_VOID_RET _GL_VOID GLuint *buffer _GL_VOID_RET _GL_VOID GLdouble t _GL_VOID_RET _GL_VOID GLfloat t _GL_VOID_RET _GL_VOID GLint t _GL_VOID_RET _GL_VOID GLshort t _GL_VOID_RET _GL_VOID GLdouble GLdouble r _GL_VOID_RET _GL_VOID GLfloat GLfloat r _GL_VOID_RET _GL_VOID GLint GLint r _GL_VOID_RET _GL_VOID GLshort GLshort r _GL_VOID_RET _GL_VOID GLdouble GLdouble r
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei height
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum const void *lists _GL_VOID_RET _GL_VOID const GLdouble *equation _GL_VOID_RET _GL_VOID GLdouble GLdouble blue _GL_VOID_RET _GL_VOID GLfloat GLfloat blue _GL_VOID_RET _GL_VOID GLint GLint blue _GL_VOID_RET _GL_VOID GLshort GLshort blue _GL_VOID_RET _GL_VOID GLubyte GLubyte blue _GL_VOID_RET _GL_VOID GLuint GLuint blue _GL_VOID_RET _GL_VOID GLushort GLushort blue _GL_VOID_RET _GL_VOID GLbyte GLbyte GLbyte alpha _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble alpha _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat alpha _GL_VOID_RET _GL_VOID GLint GLint GLint alpha _GL_VOID_RET _GL_VOID GLshort GLshort GLshort alpha _GL_VOID_RET _GL_VOID GLubyte GLubyte GLubyte alpha _GL_VOID_RET _GL_VOID GLuint GLuint GLuint alpha _GL_VOID_RET _GL_VOID GLushort GLushort GLushort alpha _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLint y
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum const void *lists _GL_VOID_RET _GL_VOID const GLdouble *equation _GL_VOID_RET _GL_VOID GLdouble GLdouble blue _GL_VOID_RET _GL_VOID GLfloat GLfloat blue _GL_VOID_RET _GL_VOID GLint GLint blue _GL_VOID_RET _GL_VOID GLshort GLshort blue _GL_VOID_RET _GL_VOID GLubyte GLubyte blue _GL_VOID_RET _GL_VOID GLuint GLuint blue _GL_VOID_RET _GL_VOID GLushort GLushort blue _GL_VOID_RET _GL_VOID GLbyte GLbyte GLbyte alpha _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble alpha _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat alpha _GL_VOID_RET _GL_VOID GLint GLint GLint alpha _GL_VOID_RET _GL_VOID GLshort GLshort GLshort alpha _GL_VOID_RET _GL_VOID GLubyte GLubyte GLubyte alpha _GL_VOID_RET _GL_VOID GLuint GLuint GLuint alpha _GL_VOID_RET _GL_VOID GLushort GLushort GLushort alpha _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLint GLsizei width
return(oflags[bm->toolflag_index].f &oflag) !=0
ATTR_WARN_UNUSED_RESULT const BMVert * v
SIMD_FORCE_INLINE const btScalar & w() const
Return the w value.
#define kernel_assert(cond)
#define ccl_device_inline
#define CCL_NAMESPACE_END
#define SET_CUBIC_SPLINE_WEIGHTS(u, t)
const KernelGlobalsCPU *ccl_restrict KernelGlobals
#define kernel_data_fetch(name, index)
ccl_device_inline float4 half4_to_float4_image(const half4 h)
ccl_device_inline float half_to_float_image(half h)
ccl_device_inline float2 interp(const float2 &a, const float2 &b, float t)
ccl_device_inline float4 zero_float4()
ccl_device float4 kernel_tex_image_interp_3d(KernelGlobals kg, int id, float3 P, InterpolationType interp)
ccl_device_inline float frac(float x, int *ix)
ccl_device float4 kernel_tex_image_interp(KernelGlobals kg, int id, float x, float y)
T clamp(const T &a, const T &min, const T &max)
#define ccl_always_inline
static ccl_always_inline OutT interp_closest(const TextureInfo &info, float x, float y)
static ccl_always_inline float read(uchar r)
static ccl_always_inline OutT read(const TexT *data, int x, int y, int width, int height)
static ccl_always_inline OutT read(const TexT *data, int x, int y, int z, int width, int height, int depth)
static ccl_always_inline OutT interp(const TextureInfo &info, float x, float y)
static ccl_never_inline OutT interp_3d_cubic(const TextureInfo &info, float x, float y, float z)
static ccl_always_inline OutT interp_linear(const TextureInfo &info, float x, float y)
static ccl_always_inline float4 read(uchar4 r)
static ccl_always_inline float read(float r)
static ccl_always_inline float4 read(float4 r)
static ccl_always_inline OutT zero()
static ccl_always_inline OutT read_clip(const TexT *data, int x, int y, int z, int width, int height, int depth)
static ccl_always_inline OutT read_clip(const TexT *data, int x, int y, int width, int height)
static ccl_always_inline OutT interp_3d_linear(const TextureInfo &info, float x, float y, float z)
static ccl_always_inline OutT interp_3d(const TextureInfo &info, float x, float y, float z, InterpolationType interp)
static ccl_always_inline OutT interp_3d_closest(const TextureInfo &info, float x, float y, float z)
static ccl_always_inline float4 read(ushort4 r)
static ccl_always_inline int wrap_periodic(int x, int width)
static ccl_always_inline float4 read(half4 r)
static ccl_always_inline OutT trilinear_lookup(const TexT *data, float tx, float ty, float tz, int ix, int iy, int iz, int nix, int niy, int niz, int width, int height, int depth, OutT read(const TexT *, int, int, int, int, int, int))
static ccl_always_inline OutT interp_cubic(const TextureInfo &info, float x, float y)
static ccl_always_inline OutT tricubic_lookup(const TexT *data, float tx, float ty, float tz, const int xc[4], const int yc[4], const int zc[4], int width, int height, int depth, OutT read(const TexT *, int, int, int, int, int, int))
static ccl_always_inline int wrap_clamp(int x, int width)
static ccl_always_inline float read(half r)
static ccl_always_inline float read(uint16_t r)
ccl_device_inline int float_to_int(float f)
@ IMAGE_DATA_TYPE_NANOVDB_FP16
@ IMAGE_DATA_TYPE_USHORT4
@ IMAGE_DATA_TYPE_NANOVDB_FLOAT
@ IMAGE_DATA_TYPE_NANOVDB_FLOAT3
@ IMAGE_DATA_TYPE_NANOVDB_FPN
#define TEX_IMAGE_MISSING_R
#define TEX_IMAGE_MISSING_B
#define TEX_IMAGE_MISSING_A
#define TEX_IMAGE_MISSING_G