Render a glsl shader for a box shape on the canvas
by HDL52
HTML
<script src="https://unpkg.com/kokomi.js/build/kokomi.umd.js"></script>
<shader-toy>
<script type="frag"></script>
</shader-toy>
CSS
body {
margin: 0;
background: black;
}
JavaScript
document.querySelector('[type=frag]').textContent = /* glsl */ `
float sdEquilateralTriangle(in vec2 p,in float r)
{
const float k=sqrt(3.);
p.x=abs(p.x)-r;
p.y=p.y+r/k;
if(p.x+k*p.y>0.)p=vec2(p.x-k*p.y,-k*p.x-p.y)/2.;
p.x-=clamp(p.x,-2.*r,0.);
return-length(p)*sign(p.y);
}
void mainImage(out vec4 fragColor, in vec2 fragCoord)
{
vec2 uv = fragCoord / iResolution.xy;
uv = (uv - vec2(0.5)) * 2.0;
uv.x *= iResolution.x / iResolution.y;
float d=sdEquilateralTriangle(uv,.5);
float c = smoothstep(0.0, 0.02, d);
fragColor = vec4(vec3(c), 1.0);
}
`;
kokomi.ShaderToyElement.register();