94 lines
1.7 KiB
GLSL
94 lines
1.7 KiB
GLSL
// https://www.shadertoy.com/view/MlX3Rs
|
|
|
|
vec4 white = vec4(1.0,1.0,1.0,0.0);
|
|
vec4 black = vec4(0.0,0.0,0.0,1.0);
|
|
|
|
vec4 noise(vec4 c,vec2 px)
|
|
{
|
|
vec2 uv = px / iResolution.xy;
|
|
|
|
vec4 r = texture(iChannel0,uv+vec2(sin(iTime*10.0),sin(iTime*20.0)));
|
|
|
|
c += r * 0.2;
|
|
|
|
return c;
|
|
}
|
|
|
|
vec4 colorFilter(vec4 c)
|
|
{
|
|
float g = (c.x + c.y + c.z) / 3.0;
|
|
c = vec4(g,g,g,1.0);
|
|
|
|
c.x *= 0.3;
|
|
c.y *= 0.5;
|
|
c.z *= 0.7;
|
|
|
|
return c;
|
|
}
|
|
|
|
vec4 frame(vec4 c,vec2 px)
|
|
{
|
|
vec2 uv = px / iResolution.xy;
|
|
|
|
float d = 0.59;
|
|
float e = 3.8;
|
|
|
|
c += 0.4*pow(distance(uv,vec2(0.5,0.5)) / d,e);
|
|
|
|
return c;
|
|
}
|
|
|
|
vec4 scanline(vec4 c, vec2 px)
|
|
{
|
|
vec2 uv = px / iResolution.xy;
|
|
|
|
float y = mod(-iTime / 10.0,1.1);
|
|
|
|
float d = sqrt(abs(uv.y - y));
|
|
|
|
float a = 1.0 - smoothstep(0.001,0.2,d);
|
|
|
|
c = noise(noise(noise(white,px),px),px) * (a*0.5) + (c * (1.0-a));
|
|
|
|
return c;
|
|
|
|
}
|
|
|
|
void mainImage( out vec4 fragColor, in vec2 fragCoord )
|
|
{
|
|
|
|
vec2 uv = fragCoord.xy / iResolution.xy;
|
|
|
|
float aspect = iResolution.x / iResolution.y;
|
|
|
|
float squares = pow((1.0 + float(int(mod(2.0+iTime / 3.5,5.0)))),2.0);
|
|
|
|
vec4 c = black;
|
|
|
|
float sw = sqrt(squares) / aspect;
|
|
float sh = sqrt(squares);
|
|
|
|
|
|
float b = float(int(mod(uv.y*sh,2.0)));
|
|
// a(0 || 1) selects square
|
|
float a = float(int(mod(uv.x*sw * aspect + b,2.0)));
|
|
|
|
// Texture coordinates
|
|
float vx = mod(uv.x * sw * aspect, 1.0);
|
|
float vy = mod(uv.y * sh*-1.0, 1.0);
|
|
|
|
c += texture(iChannel1,vec2(vx,vy)) * (1.0-a);
|
|
c += texture(iChannel2,vec2(vx,vy)) * a;
|
|
|
|
|
|
c = noise(c,fragCoord);
|
|
//c = scanline(c,fragCoord);
|
|
c = colorFilter(c);
|
|
|
|
c = frame(c,fragCoord);
|
|
|
|
c = clamp(black,c,white);
|
|
|
|
fragColor = c;
|
|
}
|