47 lines
No EOL
1.5 KiB
GLSL
47 lines
No EOL
1.5 KiB
GLSL
uniform vec2 resolution;
|
|
uniform float time;
|
|
uniform float night;
|
|
|
|
float rand(vec2 n) {
|
|
return fract(sin(dot(n, vec2(12.9898, 4.1414))) * 43758.5453);
|
|
}
|
|
|
|
float line(float p, float x, float glow, float thick) {
|
|
if (abs(p - x) < thick) return 1.;
|
|
return 1. - pow(abs(p - x), glow);
|
|
}
|
|
|
|
float line2(float p, float x, float glow) {
|
|
return 1. - pow(abs(p - x), glow);
|
|
}
|
|
|
|
float grid(vec2 uv) {
|
|
float glow = 0.05;
|
|
float c = line(uv.x, 0.25, glow, 0.025) + line(uv.x, 0.75, glow, 0.025)
|
|
+ line(uv.x, 0.5, glow, 0.025)
|
|
+ line(uv.x, 0.0, glow, 0.025) + line(uv.x, 1.0, glow, 0.025)
|
|
+ line(uv.y, 0.25, glow, 0.025) + line(uv.y, 0.75, glow, 0.025)
|
|
+ line(uv.y, 0.5, glow, 0.025)
|
|
+ line(uv.y, 0.0, glow, 0.025) + line(uv.y, 1.0, glow, 0.025);
|
|
|
|
return c;
|
|
}
|
|
|
|
void main(void) {
|
|
vec2 umuv = (gl_FragCoord.xy / resolution.xy - .5) * 2.;
|
|
vec2 uv = umuv;
|
|
float z = (abs(uv.y ) * .8 + .2);
|
|
|
|
uv.y *= 3.;
|
|
uv /= z;
|
|
|
|
if (uv.y < umuv.y) uv.y += abs(time * 0.1);
|
|
else uv.y -= abs(time * 0.1);
|
|
vec3 colorPink = vec3(255.,0.,255.);
|
|
vec3 colorBlue = vec3(0.,255.,255.);
|
|
vec4 color = vec4(((colorPink.x*night) + (colorBlue.x*(1.-night)))/2.,
|
|
((colorPink.y*night) + (colorBlue.y*(1.-night)))/2.,
|
|
((colorPink.z*night) + (colorBlue.z*(1.-night)))/2., 255) / 255.;
|
|
// color = vec4(122.,202.,255.,255.)/ 255.;
|
|
gl_FragColor = (grid(fract(uv))) * color - line(umuv.y, 0., 0.175, 0.025) * color * 2.;
|
|
} |