Back to shaders
Shader test bench
Heart.fs
runnable fragment
Complete GLSL fragment shader. Stronghold runs it directly when the browser can compile it.
Code
uniform float size;
uniform vec4 color;
precision mediump float;
/*{
"CREDIT": "by VIDVOX",
"ISFVSN": "2",
"CATEGORIES": [
"Geometry"
],
"INPUTS": [
{
"NAME": "size",
"LABEL": "Size",
"TYPE": "float",
"MIN": 0.0,
"MAX": 1.0,
"DEFAULT": 0.25
},
{
"NAME": "color",
"LABEL": "Fill Color",
"TYPE": "color",
"DEFAULT": [
1.0,
0.0,
0.0,
1.0
]
}
]
}*/
// Adapted from https://glsl.io/transition/d71472a550601b96d69d
bool inHeart (vec2 p, vec2 center, float size) {
if (size == 0.0) return false;
vec2 o = (p-center)/(1.6*size);
return pow(o.x*o.x+o.y*o.y-0.3, 3.0) < o.x*o.x*pow(o.y, 3.0);
}
void main() {
vec2 p = (gl_FragCoord.xy / u_resolution.xy);
float m = inHeart(p, vec2(0.5, 0.4), size) ? 1.0 : 0.0;
gl_FragColor = mix(vec4(0.0), color, m);
}