diff --git a/client/src/scenes/background.js b/client/src/scenes/background.js index 1f986493..b60e4b94 100644 --- a/client/src/scenes/background.js +++ b/client/src/scenes/background.js @@ -1,5 +1,62 @@ const Phaser = require('phaser'); +const CHART = ` +#ifdef GL_ES +precision mediump float; +#endif + +#extension GL_OES_standard_derivatives : enable + +uniform float time; +uniform vec2 mouse; +uniform vec2 resolution; + +float rand(float n){return fract(sin(n) * 43758.5453123 * time * 0.00001);} + +float noise(float p){ + float fl = floor(p); + float fc = fract(p); + // return mix(rand(fl), rand(fl + 1.0), p); + return mix(rand(fl), rand(fl + 1.0), p); +} + +float getLine(vec2 p, float y){ + float margin = 0.; + + vec2 pos = p; + float a = time * 100. + y * 31.; + vec2 lineCenter = vec2(0.5, y); + + pos -= lineCenter; + pos *- mat2(cos(a), -sin(a), sin(a), cos(a)); + pos += lineCenter; + + + float marginb = 0.005; + float b = 0.004; + float t = y + (noise((pos.x + y) * 100.) - 0.5) * 0.02; + float f = (smoothstep(t - b, t, pos.y) - smoothstep(t, t + b, pos.y)); + f *= smoothstep(margin - marginb, margin, pos.x) - smoothstep(1. - margin, 1. - margin + marginb, pos.x); + f *= 0.8; + + float light = 0.5 + 0.5 * sin(time * .2); + vec2 point = vec2(margin + light * (1. - margin * 2.), t); + f += .008 / distance(pos, point); + return f; +} + +void main( void ) { + vec2 p = gl_FragCoord.xy / resolution.xy; + float f = 0.; + + for(int i = 0; i < 10; i++){ + f += getLine(p, 0.1 + (0.8) / 10. * float(i)); + } + + vec3 color = vec3(0., .4, .6) * f; + gl_FragColor = vec4(color, 1.); +}`; + const STARS = ` //--- hatsuyuki --- // by Catzpaw 2016 @@ -32,8 +89,8 @@ const PLASMA = ` precision mediump float; uniform sampler2D uMainSampler; -uniform vec2 uResolution; -uniform float uTime; +uniform vec2 resolution; +uniform float time; varying vec2 outTexCoord; varying vec4 outTint; @@ -42,7 +99,7 @@ varying vec4 outTint; void main( void ) { - vec2 v_texCoord = gl_FragCoord.xy / uResolution; + vec2 v_texCoord = gl_FragCoord.xy / resolution; vec2 p = v_texCoord * 8.0 - vec2(20.0); vec2 i = p; @@ -51,7 +108,7 @@ void main( void ) for (int n = 0; n < MAX_ITER; n++) { - float t = uTime * (1.0 - (3.0 / float(n+1))); + float t = time * (1.0 - (3.0 / float(n+1))); i = p + vec2(cos(t - i.x) + sin(t + i.y), sin(t - i.y) + cos(t + i.x));