fix hex SDF: correct IQ constants, swap coords for flat-top

This commit is contained in:
Damocles 2026-04-13 10:47:07 +02:00
parent 42f861676e
commit 207e61ca52

View file

@ -14,10 +14,10 @@ layout(std140, binding = 0) uniform buf {
vec4 uC2;
};
float sdHexFlat(vec2 p, float r) {
const vec3 k = vec3(0.5, 0.8660254, 0.5773503);
float sdHexagon(vec2 p, float r) {
const vec3 k = vec3(-0.866025404, 0.5, 0.577350269);
p = abs(p);
p -= 2.0 * min(dot(k.yx, p), 0.0) * k.yx;
p -= 2.0 * min(dot(k.xy, p), 0.0) * k.xy;
p -= vec2(clamp(p.x, -k.z * r, k.z * r), r);
return length(p) * sign(p.y);
}
@ -42,7 +42,7 @@ void main() {
float inradius = baseR * (1.0 + 0.35 * wf);
vec2 p = frag - center;
float d = sdHexFlat(p, inradius);
float d = sdHexagon(p.yx, inradius); // swap for flat-top
if (d > 0.0) {
fragColor = vec4(0.0);
return;