summaryrefslogtreecommitdiffstats
path: root/math.cginc
diff options
context:
space:
mode:
authoryum <yum.food.vr@gmail.com>2025-10-28 21:33:40 -0700
committeryum <yum.food.vr@gmail.com>2025-10-28 21:33:40 -0700
commit15f9778a65a0f163627bd229b8f212cc5c7c0c22 (patch)
treeb4b6c90defa76b9086b3b1f02bcd2a6401e019e7 /math.cginc
parent6c93421c1a10caf9e4f6996e1109379a504c19a7 (diff)
some ray marching
Diffstat (limited to 'math.cginc')
-rw-r--r--math.cginc43
1 files changed, 39 insertions, 4 deletions
diff --git a/math.cginc b/math.cginc
index 4cfed67..58a9c08 100644
--- a/math.cginc
+++ b/math.cginc
@@ -1,10 +1,21 @@
#ifndef __MATH_INC
#define __MATH_INC
-#define PI 3.14159265358979f
-#define RCP_PI (1.0f / PI)
-#define TAU (2.0f * PI)
-#define SQRT_3 1.73205081f
+#define PI 3.14159265358979323846264f
+#define TAU (2.0f * PI)
+#define HALF_PI (PI * 0.5f)
+#define RCP_PI (1.0f / PI)
+#define RCP_TAU (1.0f / TAU)
+#define PHI 1.618033989f
+#define RCP_PHI 0.618033989f
+#define SQRT_2 1.414213562f
+#define SQRT_2_RCP 0.707106781f
+#define RCP_SQRT_2 0.707106781f
+#define RCP_SQRT_3 0.577350269f
+#define TWO_OVER_THREE 0.6666666666666666f
+#define SQRT_3 1.73205081f
+#define SQRT_3_OVER_2 0.8660254037844386f
+#define EULERS_CONSTANT 2.718281828f
float sin_noise_3d(float3 uvw) {
return sin(uvw[0]) * sin(uvw[1]) * sin(uvw[2]);
@@ -39,5 +50,29 @@ float wrapDotProduct(float XoY, float k) {
}
}
+// Vector rotation with a quaternion
+// https://blog.molecular-matters.com/2013/05/24/a-faster-quaternion-vector-multiplication/
+float3 rotate_vector(float3 v, float4 q)
+{
+ float3 t = 2.0 * cross(q.xyz, v);
+ return v + q.w * t + cross(q.xyz, t);
+}
+
+// Cartesian to cube hexagonal coordinates.
+// Based on this: https://backdrifting.net/post/064_hex_grids
+float3 cart_to_hex(float2 cart) {
+ float p = cart.x;
+ float q = dot(cart, float2(0.5f, SQRT_3_OVER_2));
+ float r = dot(cart, float2(0.5f, -SQRT_3_OVER_2));
+
+ return float3(p, q, r) * TWO_OVER_THREE;
+}
+
+float2 hex_to_cart(float3 cart) {
+ return float2(
+ cart[0] + (cart[1] + cart[2]) * 0.5f,
+ (cart[1] - cart[2]) * SQRT_3_OVER_2);
+}
+
#endif // __MATH_INC