From 0d7e2444c55eb2067792c6da57dad370e997fa4d Mon Sep 17 00:00:00 2001 From: yum Date: Sun, 2 Nov 2025 18:10:55 -0800 Subject: add hex grid tiling --- math.cginc | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'math.cginc') diff --git a/math.cginc b/math.cginc index 58a9c08..f188a91 100644 --- a/math.cginc +++ b/math.cginc @@ -74,5 +74,20 @@ float2 hex_to_cart(float3 cart) { (cart[1] - cart[2]) * SQRT_3_OVER_2); } + +float3 round_hex(float3 hex_coord) { + float3 rounded = round(hex_coord); + float3 diff = abs(rounded - hex_coord); + float error = rounded.x - rounded.y - rounded.z; + + float3 max_mask = float3( + diff.x > diff.y && diff.x > diff.z, + diff.y > diff.x && diff.y > diff.z, + diff.z > diff.x && diff.z > diff.y); + + rounded += error * float3(-1, 1, 1) * max_mask; + return rounded; +} + #endif // __MATH_INC -- cgit v1.2.3