precision highp float;
varying vec4 vertexPosition;
void main(void) {
vec2 localPos = vec2(mod(vertexPosition.x , 0.1) - .05, mod(vertexPosition.y, 0.11) - (.11/2.0));
float polarTheta = atan(localPos.y, localPos.x);
float radius = pow(pow(localPos.x, 2.0) + pow(localPos.y, 2.0), 1.0 / 2.0) * 65.0;
float polarFunctionRadius = sin(polarTheta) * (sqrt(abs(cos(polarTheta))) / (sin(polarTheta) + 1.4)) - 2.0 * sin(polarTheta) + 2.0;
vec4 circleColor;
if (radius < polarFunctionRadius) {
circleColor = vec4(1.0, 1.0, 1.0, 1.0);
} else {
circleColor = vec4(0.0, 0.0, 0.0, 1.0);
}
gl_FragColor = vec4((1.0 - vertexPosition.y) * circleColor.r, 0.0, abs(vertexPosition.y) * circleColor.b, 1.0);
}