summaryrefslogtreecommitdiffstats
path: root/math.cginc
diff options
context:
space:
mode:
authoryum <yum.food.vr@gmail.com>2025-06-04 13:26:27 -0700
committeryum <yum.food.vr@gmail.com>2025-06-04 13:35:28 -0700
commita13a00f2a28a2ea024dcc93eadd87ecf707f3ab4 (patch)
tree4a997310fbf07d54ceeb900beba97445d9648cd5 /math.cginc
parentb76cd52014e7f5a1b6c19a8be66d39cd28199bdc (diff)
fix ssao
Diffstat (limited to 'math.cginc')
-rw-r--r--math.cginc19
1 files changed, 19 insertions, 0 deletions
diff --git a/math.cginc b/math.cginc
index 8ada893..bb01823 100644
--- a/math.cginc
+++ b/math.cginc
@@ -283,4 +283,23 @@ float3 cmykToRgb(float4 cmyk) {
(1 - cmyk[2]) * (1 - cmyk[3]));
}
+// Cartesian to cube hexagonal coordinates.
+// Based on this: https://backdrifting.net/post/064_hex_grids
+#define TWO_OVER_THREE 0.6666666666666666f
+#define SQRT_3_OVER_2 0.8660254037844386f
+
+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