33#include <cuda_runtime.h>
67 return 1.0f / sqrtf(
x);
1044inline __host__ __device__ float2
fminf(float2
a, float2
b)
1048inline __host__ __device__ float3
fminf(float3
a, float3
b)
1052inline __host__ __device__ float4
fminf(float4
a, float4
b)
1057inline __host__ __device__ int2
min(int2
a, int2
b)
1061inline __host__ __device__ int3
min(int3
a, int3
b)
1065inline __host__ __device__ int4
min(int4
a, int4
b)
1070inline __host__ __device__ uint2
min(uint2
a, uint2
b)
1074inline __host__ __device__ uint3
min(uint3
a, uint3
b)
1078inline __host__ __device__ uint4
min(uint4
a, uint4
b)
1087inline __host__ __device__ float2
fmaxf(float2
a, float2
b)
1091inline __host__ __device__ float3
fmaxf(float3
a, float3
b)
1095inline __host__ __device__ float4
fmaxf(float4
a, float4
b)
1100inline __host__ __device__ int2
max(int2
a, int2
b)
1104inline __host__ __device__ int3
max(int3
a, int3
b)
1108inline __host__ __device__ int4
max(int4
a, int4
b)
1113inline __host__ __device__ uint2
max(uint2
a, uint2
b)
1117inline __host__ __device__ uint3
max(uint3
a, uint3
b)
1121inline __host__ __device__ uint4
max(uint4
a, uint4
b)
1131inline __device__ __host__
float lerp(
float a,
float b,
float t)
1133 return a +
t * (
b -
a);
1135inline __device__ __host__ float2
lerp(float2
a, float2
b,
float t)
1137 return a +
t * (
b -
a);
1139inline __device__ __host__ float3
lerp(float3
a, float3
b,
float t)
1141 return a +
t * (
b -
a);
1143inline __device__ __host__ float4
lerp(float4
a, float4
b,
float t)
1145 return a +
t * (
b -
a);
1153inline __device__ __host__
float clamp(
float f,
float a,
float b)
1157inline __device__ __host__
int clamp(
int f,
int a,
int b)
1166inline __device__ __host__ float2
clamp(float2
v,
float a,
float b)
1170inline __device__ __host__ float2
clamp(float2
v, float2
a, float2
b)
1174inline __device__ __host__ float3
clamp(float3
v,
float a,
float b)
1178inline __device__ __host__ float3
clamp(float3
v, float3
a, float3
b)
1182inline __device__ __host__ float4
clamp(float4
v,
float a,
float b)
1184 return make_float4(
clamp(
v.x,
a,
b),
clamp(
v.y,
a,
b),
clamp(
v.z,
a,
b),
clamp(
v.w,
a,
b));
1186inline __device__ __host__ float4
clamp(float4
v, float4
a, float4
b)
1188 return make_float4(
clamp(
v.x,
a.x,
b.x),
clamp(
v.y,
a.y,
b.y),
clamp(
v.z,
a.z,
b.z),
clamp(
v.w,
a.w,
b.w));
1191inline __device__ __host__ int2
clamp(int2
v,
int a,
int b)
1195inline __device__ __host__ int2
clamp(int2
v, int2
a, int2
b)
1199inline __device__ __host__ int3
clamp(int3
v,
int a,
int b)
1203inline __device__ __host__ int3
clamp(int3
v, int3
a, int3
b)
1207inline __device__ __host__ int4
clamp(int4
v,
int a,
int b)
1209 return make_int4(
clamp(
v.x,
a,
b),
clamp(
v.y,
a,
b),
clamp(
v.z,
a,
b),
clamp(
v.w,
a,
b));
1211inline __device__ __host__ int4
clamp(int4
v, int4
a, int4
b)
1213 return make_int4(
clamp(
v.x,
a.x,
b.x),
clamp(
v.y,
a.y,
b.y),
clamp(
v.z,
a.z,
b.z),
clamp(
v.w,
a.w,
b.w));
1220inline __device__ __host__ uint2
clamp(uint2
v, uint2
a, uint2
b)
1228inline __device__ __host__ uint3
clamp(uint3
v, uint3
a, uint3
b)
1234 return make_uint4(
clamp(
v.x,
a,
b),
clamp(
v.y,
a,
b),
clamp(
v.z,
a,
b),
clamp(
v.w,
a,
b));
1236inline __device__ __host__ uint4
clamp(uint4
v, uint4
a, uint4
b)
1238 return make_uint4(
clamp(
v.x,
a.x,
b.x),
clamp(
v.y,
a.y,
b.y),
clamp(
v.z,
a.z,
b.z),
clamp(
v.w,
a.w,
b.w));
1245inline __host__ __device__
float dot(float2
a, float2
b)
1247 return a.x *
b.x +
a.y *
b.y;
1249inline __host__ __device__
float dot(float3
a, float3
b)
1251 return a.x *
b.x +
a.y *
b.y +
a.z *
b.z;
1253inline __host__ __device__
float dot(float4
a, float4
b)
1255 return a.x *
b.x +
a.y *
b.y +
a.z *
b.z +
a.w *
b.w;
1258inline __host__ __device__
int dot(int2
a, int2
b)
1260 return a.x *
b.x +
a.y *
b.y;
1262inline __host__ __device__
int dot(int3
a, int3
b)
1264 return a.x *
b.x +
a.y *
b.y +
a.z *
b.z;
1266inline __host__ __device__
int dot(int4
a, int4
b)
1268 return a.x *
b.x +
a.y *
b.y +
a.z *
b.z +
a.w *
b.w;
1273 return a.x *
b.x +
a.y *
b.y;
1277 return a.x *
b.x +
a.y *
b.y +
a.z *
b.z;
1281 return a.x *
b.x +
a.y *
b.y +
a.z *
b.z +
a.w *
b.w;
1290 return sqrtf(
dot(
v,
v));
1294 return sqrtf(
dot(
v,
v));
1298 return sqrtf(
dot(
v,
v));
1342inline __host__ __device__
float fracf(
float v)
1346inline __host__ __device__ float2
fracf(float2
v)
1350inline __host__ __device__ float3
fracf(float3
v)
1354inline __host__ __device__ float4
fracf(float4
v)
1363inline __host__ __device__ float2
fmodf(float2
a, float2
b)
1367inline __host__ __device__ float3
fmodf(float3
a, float3
b)
1371inline __host__ __device__ float4
fmodf(float4
a, float4
b)
1380inline __host__ __device__ float2
fabs(float2
v)
1384inline __host__ __device__ float3
fabs(float3
v)
1388inline __host__ __device__ float4
fabs(float4
v)
1393inline __host__ __device__ int2
abs(int2
v)
1397inline __host__ __device__ int3
abs(int3
v)
1401inline __host__ __device__ int4
abs(int4
v)
1412inline __host__ __device__ float3
reflect(float3 i, float3
n)
1414 return i - 2.0f *
n *
dot(
n, i);
1421inline __host__ __device__ float3
cross(float3
a, float3
b)
1435 float y =
clamp((
x -
a) / (
b -
a), 0.0f, 1.0f);
1436 return (
y *
y * (3.0f - (2.0f *
y)));
1440 float2
y =
clamp((
x -
a) / (
b -
a), 0.0f, 1.0f);
1445 float3
y =
clamp((
x -
a) / (
b -
a), 0.0f, 1.0f);
1450 float4
y =
clamp((
x -
a) / (
b -
a), 0.0f, 1.0f);
GLdouble n
Definition: khronos-glext.h:8447
GLenum clamp
Definition: khronos-glext.h:6907
const GLdouble * v
Definition: khronos-glext.h:6442
GLint GLint GLint GLint GLint GLint y
Definition: khronos-glext.h:6346
GLdouble GLdouble t
Definition: khronos-glext.h:6449
GLfloat f
Definition: khronos-glext.h:8258
GLboolean GLboolean GLboolean b
Definition: khronos-glext.h:6895
GLboolean GLboolean GLboolean GLboolean a
Definition: khronos-glext.h:6895
GLdouble s
Definition: khronos-glext.h:6441
GLubyte GLubyte GLubyte GLubyte w
Definition: khronos-glext.h:6793
GLint GLint GLint GLint GLint x
Definition: khronos-glext.h:6346
__host__ __device__ float2 normalize(float2 v)
Definition: cutil_math.h:1305
float rsqrtf(float x)
Definition: cutil_math.h:65
__host__ __device__ int4 make_int4(int s)
Definition: cutil_math.h:210
__device__ __host__ float lerp(float a, float b, float t)
Definition: cutil_math.h:1131
__host__ __device__ uint2 make_uint2(uint s)
Definition: cutil_math.h:109
__host__ __device__ float2 operator/(float2 a, float2 b)
Definition: cutil_math.h:965
float fmaxf(float a, float b)
Definition: cutil_math.h:50
__host__ __device__ float3 cross(float3 a, float3 b)
Definition: cutil_math.h:1421
__host__ __device__ float length(float2 v)
Definition: cutil_math.h:1288
__host__ __device__ void operator-=(float2 &a, float2 b)
Definition: cutil_math.h:515
__host__ __device__ int2 make_int2(int s)
Definition: cutil_math.h:92
__device__ __host__ float smoothstep(float a, float b, float x)
Definition: cutil_math.h:1433
__host__ __device__ float2 fmodf(float2 a, float2 b)
Definition: cutil_math.h:1363
__device__ __host__ float clamp(float f, float a, float b)
Definition: cutil_math.h:1153
float fminf(float a, float b)
Definition: cutil_math.h:45
__host__ __device__ float2 operator*(float2 a, float2 b)
Definition: cutil_math.h:736
__host__ __device__ float4 make_float4(float s)
Definition: cutil_math.h:189
__host__ __device__ void operator/=(float2 &a, float2 b)
Definition: cutil_math.h:969
__host__ __device__ uint4 make_uint4(uint s)
Definition: cutil_math.h:231
__host__ __device__ float2 operator-(float2 &a)
Definition: cutil_math.h:252
unsigned int uint
Definition: cutil_math.h:35
__host__ __device__ int3 make_int3(int s)
Definition: cutil_math.h:147
__host__ __device__ float dot(float2 a, float2 b)
Definition: cutil_math.h:1245
__host__ __device__ float fracf(float v)
Definition: cutil_math.h:1342
__host__ __device__ float2 operator+(float2 a, float2 b)
Definition: cutil_math.h:281
__host__ __device__ float2 fabs(float2 v)
Definition: cutil_math.h:1380
unsigned short ushort
Definition: cutil_math.h:36
int min(int a, int b)
Definition: cutil_math.h:60
__host__ __device__ void operator*=(float2 &a, float2 b)
Definition: cutil_math.h:740
__host__ __device__ uint3 make_uint3(uint s)
Definition: cutil_math.h:168
__host__ __device__ float2 floorf(float2 v)
Definition: cutil_math.h:1325
__host__ __device__ float2 make_float2(float s)
Definition: cutil_math.h:75
__host__ __device__ int2 abs(int2 v)
Definition: cutil_math.h:1393
int max(int a, int b)
Definition: cutil_math.h:55
__host__ __device__ void operator+=(float2 &a, float2 b)
Definition: cutil_math.h:285
__host__ __device__ float3 reflect(float3 i, float3 n)
Definition: cutil_math.h:1412
__host__ __device__ float3 make_float3(float s)
Definition: cutil_math.h:122