diff options
| author | yum <yum.food.vr@gmail.com> | 2025-11-02 18:10:55 -0800 |
|---|---|---|
| committer | yum <yum.food.vr@gmail.com> | 2025-11-02 18:10:55 -0800 |
| commit | 0d7e2444c55eb2067792c6da57dad370e997fa4d (patch) | |
| tree | 65b54f861119866a1c5e9675c2defe2698c3ca47 /math.cginc | |
| parent | 4d3648b160efbd59bd270b4e4813501c8453c44a (diff) | |
add hex grid tiling
Diffstat (limited to 'math.cginc')
| -rw-r--r-- | math.cginc | 15 |
1 files changed, 15 insertions, 0 deletions
@@ -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 |
