35 lines
1.2 KiB
GLSL
35 lines
1.2 KiB
GLSL
#define BLACK_BLEND_THRESHOLD .4 // This is controls the dim of the screen
|
|
const float timeMultiplier = 0.1f;
|
|
|
|
void mainImage(out vec4 o, vec2 u)
|
|
{
|
|
vec2 termUV = u.xy / iResolution.xy;
|
|
vec2 v = iResolution.xy;
|
|
u = .2 * (u + u - v) / v.y;
|
|
|
|
vec4 z = o = vec4(1, 2, 3, 0);
|
|
|
|
for (float a = .5, t = iTime * timeMultiplier, i;
|
|
++i < 19.;
|
|
o += (1. + cos(z + t))
|
|
/ length((1. + i * dot(v, v))
|
|
* sin(1.5 * u / (.5 - dot(u, u)) - 9. * u.yx + t))
|
|
)
|
|
v = cos(++t - 7. * u * pow(a += .03, i)) - 5. * u,
|
|
// use stanh here if shader has black artifacts
|
|
// vvvv
|
|
u += tanh(40. * dot(u *= mat2(cos(i + .02 * t - vec4(0, 11, 33, 0))), u)
|
|
* cos(1e2 * u.yx + t)) / 2e2
|
|
+ .2 * a * u
|
|
+ cos(4. / exp(dot(o, o) / 1e2) + t) / 3e2;
|
|
|
|
o = 25.6 / (min(o, 13.) + 164. / o)
|
|
- dot(u, u) / 250.;
|
|
|
|
vec4 terminalColor = texture(iChannel0, termUV);
|
|
|
|
float alpha = step(length(terminalColor.rgb), BLACK_BLEND_THRESHOLD);
|
|
vec3 blendedColor = mix(terminalColor.rgb, o.rgb * 0.2, alpha);
|
|
|
|
o = vec4(blendedColor, terminalColor.a);
|
|
}
|