#ifdef GL_ES precision mediump float; #endif #extension GL_OES_standard_derivatives : enable #define PI 3.1415926535 uniform float time; uniform vec2 mouse; uniform vec2 resolution; float rand(float a, float b) { return fract(sin(dot(vec2(a, b) ,vec2(12.9898,78.233))) * 43758.5453); } void main( void ) { vec2 pos = ( gl_FragCoord.xy - resolution.xy / 2.) / resolution.y + mouse - 0.5; vec3 color = vec3(0, 0, 0); for(int i = 0; i < 200; i++) { float fi = float(i); float t = pow(fract(time * 2.), 0.5); float t2 = floor(time * 2.); float a = float(i) / PI; float len = 0.3 + (1. - t) * 0.2 * rand(fi, t2); vec2 p = pos + vec2(cos(a), sin(a)) * len; float intencity = pow(0.003 / length(p), 1.5); color += intencity * vec3(rand(fi, 1.), rand(fi, 2.), rand(fi, 3.)); } for(int i = 0; i < 20; i++) { float fi = float(i); float t = pow(fract(time * 2.), 0.1); float t2 = floor(time * 2.); float a = float(i - 10) / PI / 5.; float len = 0.3 + (1. - t) * 0.2 * rand(fi, t2); vec2 p = pos + vec2(sin(a), cos(a)) * len; p += vec2(0, -0.1); float intencity = pow(0.003 / length(p), 1.5); color += intencity * vec3(rand(fi, 1.), rand(fi, 2.), rand(fi, 3.)); } for(int i = 0; i < 20; i++) { float fi = float(i); float t = pow(fract(time * 2.), 0.1); float t2 = floor(time * 2.); float a = float(i - 10) / PI; float len = 0.04 + (1. - t) * 0.2 * rand(fi, t2); vec2 p = pos + vec2(sin(a), cos(a)) * len; p += vec2(-0.13, -0.05); float intencity = pow(0.003 / length(p), 1.5); color += intencity * vec3(rand(fi, 1.), rand(fi, 2.), rand(fi, 3.)); } for(int i = 0; i < 20; i++) { float fi = float(i); float t = pow(fract(time * 2.), 0.1); float t2 = floor(time * 2.); float a = float(i - 10) / PI; float len = 0.04 + (1. - t) * 0.2 * rand(fi, t2); vec2 p = pos + vec2(sin(a), cos(a)) * len; p += vec2(0.13, -0.05); float intencity = pow(0.003 / length(p), 1.5); color += intencity * vec3(rand(fi, 1.), rand(fi, 2.), rand(fi, 3.)); } color += vec3(fract(pos.y * 20. + time) < 0.5) * 0.05; color += vec3(fract(pos.y * 20. - time) < 0.5) * 0.05; gl_FragColor = vec4(color, 1.0); }