drawSDF = {
const { triangle } = mkTriangle(20000);
return regl({
frag: `
#extension GL_OES_standard_derivatives : enable
precision mediump float;
${myRegl}
uniform mat4 projection, view, triangle;
varying vec2 vposition;
void main () {
mat4 a = projection * view * triangle;
float d = 0.0;
d = dist(vposition, vec2(a[0]));
vec4 center = (a[0] + a[1] + a[2]) / 3.0;
float d1 = sdf(vposition-vec2(a[0]), vec2(a[1]-a[0]), vec2(center-a[0]));
float d2 = sdf(vposition-vec2(a[1]), vec2(a[2]-a[1]), vec2(center-a[1]));
float d3 = sdf(vposition-vec2(a[2]), vec2(a[0]-a[2]), vec2(center-a[2]));
d = max(max(d1, d2), d3);
if (d > 0.0) {
if (d > d1 && d1 > 0.0) {d = d1;}
if (d > d2 && d2 > 0.0) {d = d2;}
if (d > d3 && d3 > 0.0) {d = d3;}
}
gl_FragColor = mix(vec4(vec3(d), 1.0), vec4(0.5 + d, 0.5, 0.5, 1.0), wireframe(d, 2.0, 0.1));
}`,
vert: `
precision mediump float;
uniform mat4 projection, view;
attribute vec2 position;
varying vec2 vposition;
void main () {
vposition = position;
gl_Position = vec4(position, 0.0, 1.0);
}`,
attributes: {
position: [
[-4, -1],
[1, -1],
[1, 4]
]
},
uniforms: {
triangle
},
blend: {
enable: true,
func: {
srcRGB: "src alpha",
srcAlpha: 1,
dstRGB: "one minus src alpha",
dstAlpha: 1
},
equation: {
rgb: "add",
alpha: "add"
},
color: [0, 0, 0, 0]
},
count: 3
});
}