Realtime Fractal Renderer Documentation
utils.cl
Go to the documentation of this file.
1#ifndef UTILS_CL
3#define UTILS_CL
4
5#ifndef PI
6#define PI 3.1415926535897932385f
7#endif
8
9float f_abs(const float value)
10{
11 return value < 0 ? -1 * value : value;
12}
13
14float3 absolute(const float3 value)
15{
16 return (float3)(
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
20 );
21}
22
23float magnitude(const float3 vec)
24{
25 return sqrt(vec.x * vec.x + vec.y * vec.y + vec.z * vec.z);
26}
27
28float clamp01(const float a)
29{
30 return a < 0 ? 0 : a > 1 ? 1 : a;
31}
32
33float3 normalise(const float3 vec)
34{
35 return vec / sqrt(vec.x * vec.x + vec.y * vec.y + vec.z * vec.z);
36}
37
38float3 crossProduct(const float3 a, const float3 b)
39{
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);
41}
42
43float dotProduct(const float3 a, const float3 b)
44{
45 return a.x * b.x + a.y * b.y + a.z * b.z;
46}
47
48float3 mod(const float3 a, const float3 b)
49{
50 return (float3)(fmod(a.x, b.x), fmod(a.y, b.y), fmod(a.z, b.z));
51}
52
53float lerp(const float min, const float max, const float f)
54{
55 return min + f * (max - min);
56}
57
58#endif