17 #ifndef __UTIL_MATH_H__
18 #define __UTIL_MATH_H__
25 #ifndef __KERNEL_GPU__
29 #ifndef __KERNEL_OPENCL__
43 # define M_PI_F (3.1415926535897932f)
46 # define M_PI_2_F (1.5707963267948966f)
49 # define M_PI_4_F (0.7853981633974830f)
52 # define M_1_PI_F (0.3183098861837067f)
55 # define M_2_PI_F (0.6366197723675813f)
58 # define M_1_2PI_F (0.1591549430918953f)
61 # define M_SQRT_PI_8_F (0.6266570686577501f)
64 # define M_LN_2PI_F (1.8378770664093454f)
69 # define M_2PI_F (6.2831853071795864f)
72 # define M_4PI_F (12.566370614359172f)
77 # define M_SQRT2_F (1.4142135623730950f)
80 # define M_LN2_F (0.6931471805599453f)
83 # define M_LN10_F (2.3025850929940457f)
89 # ifndef __KERNEL_OPENCL__
92 return (
a > b) ?
a : b;
97 return (
a < b) ?
a : b;
102 #ifndef __KERNEL_GPU__
109 return (
x > 0) ?
x : -
x;
114 return (
a > b) ?
a : b;
119 return (
a < b) ?
a : b;
124 return (
a > b) ?
a : b;
129 return (
a < b) ?
a : b;
134 return (
a > b) ?
a : b;
139 return (
a < b) ?
a : b;
169 #ifndef __KERNEL_OPENCL__
244 # ifdef __KERNEL_SSE__
245 return int4(_mm_castps_si128(f.m128));
254 # ifdef __KERNEL_SSE__
255 return float4(_mm_castsi128_ps(i.m128));
267 return (
x << 1) > 0xff000000u;
274 return (f == f) && (
x == 0 ||
x == (1u << 31) || (f != 2.0f * f)) && !((
x << 1) > 0xff000000u);
282 #ifndef __KERNEL_OPENCL__
295 return a +
t * (b -
a);
306 float t = (
x - edge0) / (edge1 - edge0);
314 #ifndef __KERNEL_CUDA__
317 return clamp(
a, 0.0f, 1.0f);
356 return (range != 0.0f) ? value - (range *
floorf((value -
min) / range)) :
min;
361 return (b != 0.0f) ?
fabsf(
fractf((
a - b) / (b * 2.0f)) * b * 2.0f - b) : 0.0f;
368 return fminf(
a, b) - h * h * h * k * (1.0f / 6.0f);
377 return (f < 0.0f) ? -1.0f : 1.0f;
402 return (3.0f * ff - 2.0f * ff * f);
407 return (
x % m + m) % m;
427 return (
x -
a) / (b -
a);
434 (((d + 3.0f * (b -
c) -
a) *
x + (2.0f *
a - 5.0f * b + 4.0f *
c - d)) *
x +
454 #ifndef __KERNEL_OPENCL__
457 template<
class A,
class B>
A lerp(
const A &
a,
const A &b,
const B &
t)
459 return (
A)(
a * ((
B)1 -
t) + b *
t);
466 #ifndef __KERNEL_OPENCL__
480 if (
fabsf(
N.y) >= 0.999f) {
485 if (
fabsf(
N.z) >= 0.999f) {
492 if (
N.x !=
N.y ||
N.x !=
N.z)
507 x = (
a.x != 0.0f) ? 1.0f /
a.x : 0.0f;
508 y = (
a.y != 0.0f) ? 1.0f /
a.y : 0.0f;
509 z = (
a.z != 0.0f) ? 1.0f /
a.z : 0.0f;
518 x = (b.
x != 0.0f) ?
a.x / b.
x : 0.0f;
519 y = (b.
y != 0.0f) ?
a.y / b.
y : 0.0f;
520 z = (b.
z != 0.0f) ?
a.z / b.
z : 0.0f;
529 x = (b.
x != 0.0f) ?
a.x / b.
x : 0.0f;
530 y = (b.
y != 0.0f) ?
a.y / b.
y : 0.0f;
531 z = (b.
z != 0.0f) ?
a.z / b.
z : 0.0f;
539 else if (b.
z == 0.0f) {
546 else if (b.
y == 0.0f) {
554 else if (b.
z == 0.0f) {
569 r.x = ((costheta + (1 - costheta) * axis.
x * axis.
x) * p.
x) +
570 (((1 - costheta) * axis.
x * axis.
y - axis.
z * sintheta) * p.
y) +
571 (((1 - costheta) * axis.
x * axis.
z + axis.
y * sintheta) * p.
z);
573 r.y = (((1 - costheta) * axis.
x * axis.
y + axis.
z * sintheta) * p.
x) +
574 ((costheta + (1 - costheta) * axis.
y * axis.
y) * p.
y) +
575 (((1 - costheta) * axis.
y * axis.
z - axis.
x * sintheta) * p.
z);
577 r.z = (((1 - costheta) * axis.
x * axis.
z - axis.
y * sintheta) * p.
x) +
578 (((1 - costheta) * axis.
y * axis.
z + axis.
x * sintheta) * p.
y) +
579 ((costheta + (1 - costheta) * axis.
z * axis.
z) * p.
z);
593 return (f > 0.0f) ? 1.0f /
sqrtf(f) : 0.0f;
608 #ifdef __KERNEL_GPU__
614 if (
fmodf(-
y, 2.0f) == 0.0f)
635 return (b != 0.0f) ?
a / b : 0.0f;
648 return (b != 0.0f) ?
fmodf(
a, b) : 0.0f;
668 #ifndef __KERNEL_OPENCL__
669 return expf(lgammaf(
x) + lgammaf(
y) - lgammaf(
x +
y));
671 return expf(lgamma(
x) + lgamma(
y) - lgamma(
x +
y));
682 return bits * (1.0f / (
float)0xFFFFFFFF);
687 #if defined(__KERNEL_CUDA__) || defined(__KERNEL_OPTIX__)
689 #elif defined(__KERNEL_OPENCL__)
694 unsigned long leading_zero = 0;
695 _BitScanReverse(&leading_zero,
x);
696 return (31 - leading_zero);
698 return __builtin_clz(
x);
705 #if defined(__KERNEL_CUDA__) || defined(__KERNEL_OPTIX__)
706 return (__ffs(
x) - 1);
707 #elif defined(__KERNEL_OPENCL__)
712 unsigned long ctz = 0;
713 _BitScanForward(&ctz,
x);
716 return __builtin_ctz(
x);
723 #if defined(__KERNEL_CUDA__) || defined(__KERNEL_OPTIX__)
725 #elif defined(__KERNEL_OPENCL__)
731 return __builtin_ffs(
x);
743 v = (co.
z + 1.0f) * 0.5f;
779 if (
fabsf(
a - b) < abs_diff) {
783 if ((
a < 0.0f) != (b < 0.0f)) {
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 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 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 t
_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 v1
ATTR_WARN_UNUSED_RESULT const BMVert * v2
ATTR_WARN_UNUSED_RESULT const BMLoop * l
ATTR_WARN_UNUSED_RESULT const BMVert * v
SIMD_FORCE_INLINE btScalar angle(const btVector3 &v) const
Return the angle between this and another vector.
#define ccl_device_inline
#define CCL_NAMESPACE_END
#define make_int4(x, y, z, w)
#define make_float2(x, y)
#define make_float4(x, y, z, w)
#define make_float3(x, y, z)
__forceinline avxf cross(const avxf &a, const avxf &b)
ccl_device_inline float __uint_as_float(uint i)
ccl_device float safe_divide(float a, float b)
ccl_device_inline float inverse_lerp(float a, float b, float x)
ccl_device_inline int quick_floor_to_int(float x)
ccl_device_inline uint __float_as_uint(float f)
ccl_device_inline float ensure_finite(float v)
ccl_device_inline int4 __float4_as_int4(float4 f)
ccl_device_inline int abs(int x)
ccl_device_inline float safe_sqrtf(float f)
ccl_device_inline float pow22(float a)
ccl_device_inline float saturate(float a)
ccl_device_inline int __float_as_int(float f)
ccl_device_inline int float_to_int(float f)
ccl_device_inline int ceil_to_int(float f)
ccl_device_inline float mix(float a, float b, float t)
ccl_device_inline float pow20(float a)
ccl_device_inline float compatible_signf(float f)
ccl_device_inline T min4(const T &a, const T &b, const T &c, const T &d)
ccl_device_inline float smoothstep(float edge0, float edge1, float x)
ccl_device_inline void make_orthonormals(const float3 N, float3 *a, float3 *b)
ccl_device_inline uint count_leading_zeros(uint x)
ccl_device_inline float3 safe_divide_even_color(float3 a, float3 b)
CCL_NAMESPACE_END CCL_NAMESPACE_BEGIN A lerp(const A &a, const A &b, const B &t)
ccl_device_inline int mod(int x, int m)
ccl_device float safe_modulo(float a, float b)
ccl_device_inline float triangle_area(const float3 &v1, const float3 &v2, const float3 &v3)
ccl_device_inline float sqr(float a)
ccl_device_inline float pingpongf(float a, float b)
ccl_device_inline uint count_trailing_zeros(uint x)
ccl_device_inline float inversesqrtf(float f)
ccl_device float safe_acosf(float a)
ccl_device float compatible_powf(float x, float y)
ccl_device_inline float3 safe_divide_color(float3 a, float3 b)
ccl_device_inline float smoothminf(float a, float b, float k)
ccl_device_inline float2 map_to_sphere(const float3 co)
ccl_device_inline bool isfinite_safe(float f)
ccl_device_inline float compare_floats(float a, float b, float abs_diff, int ulp_diff)
ccl_device_inline int min(int a, int b)
ccl_device_inline float4 float3_to_float4(const float3 a)
ccl_device_inline float precise_angle(float3 a, float3 b)
ccl_device_inline float2 map_to_tube(const float3 co)
ccl_device_inline T max4(const T &a, const T &b, const T &c, const T &d)
ccl_device_inline uint as_uint(int i)
ccl_device_inline float nonzerof(float f, float eps)
ccl_device float safe_powf(float a, float b)
ccl_device_inline float3 safe_invert_color(float3 a)
ccl_device float safe_logf(float a, float b)
ccl_device_inline float fractf(float x)
ccl_device_inline int floor_to_int(float f)
ccl_device_inline bool isnan_safe(float f)
ccl_device_inline float beta(float x, float y)
ccl_device_inline float3 float2_to_float3(const float2 a)
ccl_device_inline float signf(float f)
ccl_device_inline float xor_signmask(float x, int y)
ccl_device_inline float cubic_interp(float a, float b, float c, float d, float x)
ccl_device_inline uint find_first_set(uint x)
ccl_device_inline float3 float4_to_float3(const float4 a)
ccl_device_inline int as_int(uint i)
ccl_device float bits_to_01(uint bits)
ccl_device_inline int max(int a, int b)
ccl_device_inline float3 rotate_around_axis(float3 p, float3 axis, float angle)
ccl_device_inline float4 __int4_as_float4(int4 i)
ccl_device_inline float wrapf(float value, float max, float min)
ccl_device float safe_asinf(float a)
ccl_device_inline float smoothstepf(float f)
ccl_device_inline float floorfrac(float x, int *i)
ccl_device_inline int clamp(int a, int mn, int mx)
ccl_device_inline float __int_as_float(int i)
ccl_device_inline float2 normalize(const float2 &a)