fix hex SDF: correct IQ constants, swap coords for flat-top
This commit is contained in:
parent
42f861676e
commit
207e61ca52
1 changed files with 4 additions and 4 deletions
|
|
@ -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;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue