| @ -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); | |||||
| } | |||||