GhosttyConfig/ghostty-shaders/lightings.glsl
2025-09-29 15:34:29 +02:00

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);
}