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