6#define PI 3.1415926535897932385f
9float f_abs(
const float value)
11 return value < 0 ? -1 * value : value;
14float3 absolute(
const float3 value)
17 value.x < 0 ? -1 * value.x : value.x,
18 value.y < 0 ? -1 * value.y : value.y,
19 value.z < 0 ? -1 * value.z : value.z
23float magnitude(
const float3 vec)
25 return sqrt(vec.x * vec.x + vec.y * vec.y + vec.z * vec.z);
28float clamp01(
const float a)
30 return a < 0 ? 0 : a > 1 ? 1 : a;
33float3 normalise(
const float3 vec)
35 return vec / sqrt(vec.x * vec.x + vec.y * vec.y + vec.z * vec.z);
38float3 crossProduct(
const float3 a,
const float3 b)
40 return (float3)(a.y * b.z - a.z * b.y, a.z * b.x - a.x * b.z, a.x * b.y - a.y * b.x);
43float dotProduct(
const float3 a,
const float3 b)
45 return a.x * b.x + a.y * b.y + a.z * b.z;
48float3 mod(
const float3 a,
const float3 b)
50 return (float3)(fmod(a.x, b.x), fmod(a.y, b.y), fmod(a.z, b.z));
53float lerp(
const float min,
const float max,
const float f)
55 return min + f * (max - min);