|
@@ -0,0 +1,39 @@
|
|
|
|
+#version 100
|
|
|
|
+
|
|
|
|
+precision mediump float;
|
|
|
|
+
|
|
|
|
+// Input vertex attributes (from vertex shader)
|
|
|
|
+varying vec2 fragTexCoord; // Texture coordinates (sampler2D)
|
|
|
|
+varying vec4 fragColor; // Tint color
|
|
|
|
+
|
|
|
|
+// Uniform inputs
|
|
|
|
+uniform vec2 resolution; // Viewport resolution (in pixels)
|
|
|
|
+uniform vec2 mouse; // Mouse pixel xy coordinates
|
|
|
|
+uniform float time; // Total run time (in secods)
|
|
|
|
+
|
|
|
|
+// Draw circle
|
|
|
|
+vec4 DrawCircle(vec2 fragCoord, vec2 position, float radius, vec3 color)
|
|
|
|
+{
|
|
|
|
+ float d = length(position - fragCoord) - radius;
|
|
|
|
+ float t = clamp(d, 0.0, 1.0);
|
|
|
|
+ return vec4(color, 1.0 - t);
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+void main()
|
|
|
|
+{
|
|
|
|
+ vec2 fragCoord = gl_FragCoord.xy;
|
|
|
|
+ vec2 position = vec2(mouse.x, resolution.y - mouse.y);
|
|
|
|
+ float radius = 40.0;
|
|
|
|
+
|
|
|
|
+ // Draw background layer
|
|
|
|
+ vec4 colorA = vec4(0.2,0.2,0.8, 1.0);
|
|
|
|
+ vec4 colorB = vec4(1.0,0.7,0.2, 1.0);
|
|
|
|
+ vec4 layer1 = mix(colorA, colorB, abs(sin(time*0.1)));
|
|
|
|
+
|
|
|
|
+ // Draw circle layer
|
|
|
|
+ vec3 color = vec3(0.9, 0.16, 0.21);
|
|
|
|
+ vec4 layer2 = DrawCircle(fragCoord, position, radius, color);
|
|
|
|
+
|
|
|
|
+ // Blend the two layers
|
|
|
|
+ gl_FragColor = mix(layer1, layer2, layer2.a);
|
|
|
|
+}
|