mirror of
https://github.com/boxpositron/absolute-dotfiles.git
synced 2026-02-28 11:40:37 +00:00
fix(colorscheme): update theme name from "catppuccin-mocha" to "Catppuccin Frappe"
feat(shaders): add CRT-styled shader with public domain license and adjustments for Ghostty, including parameter definitions and tonal control functions. refactor(shader): optimize color conversion and output to SRGB for better visual quality feat(shaders): add flicker, glow, and starfield shader effects for terminal ambiance.
This commit is contained in:
42
.config/ghostty/shaders/flicker.glsl
Normal file
42
.config/ghostty/shaders/flicker.glsl
Normal file
@@ -0,0 +1,42 @@
|
||||
// https://github.com/12jihan/ghostty_shaders/blob/main/flicker.glsl
|
||||
|
||||
float rand(vec2 co) {
|
||||
return fract(sin(dot(co.xy ,vec2(12.9898,78.233))) * 43758.5453);
|
||||
}
|
||||
|
||||
void mainImage(out vec4 fragColor, in vec2 fragCoord) {
|
||||
vec2 uv = fragCoord/iResolution.xy;
|
||||
|
||||
// Random timing for glitches
|
||||
float timeScale = floor(iTime * 2.0);
|
||||
float randomTrigger = step(0.52, rand(vec2(timeScale, 0.80)));
|
||||
|
||||
// RGB Split with random intensity
|
||||
float splitStrength = randomTrigger * 0.20 * rand(vec2(timeScale, 2.0));
|
||||
float r = texture(iChannel0, vec2(uv.x + splitStrength, uv.y)).r;
|
||||
float g = texture(iChannel0, uv).g;
|
||||
float b = texture(iChannel0, vec2(uv.x - splitStrength, uv.y)).b;
|
||||
|
||||
// Random vertical glitch blocks
|
||||
float blockNoise = rand(vec2(floor(uv.y * 32.0), timeScale));
|
||||
float blockOffset = (step(0.996, blockNoise) * 2.0 - 1.0) * 0.02;
|
||||
uv.x = uv.x + blockOffset * randomTrigger;
|
||||
|
||||
// CRT scanlines
|
||||
float scanline = sin(uv.y * 1000.0) * 0.04 + 0.96;
|
||||
|
||||
// Vertical sync glitch
|
||||
float vSync = sin(uv.y * 50.0 + iTime * 5.0) * randomTrigger * 0.01;
|
||||
uv.x += vSync;
|
||||
|
||||
vec3 color = vec3(r, g, b);
|
||||
|
||||
// Apply scanlines and noise
|
||||
color *= scanline;
|
||||
color *= (0.95 + rand(uv + timeScale) * 0.05);
|
||||
|
||||
// Random color noise at glitch moments
|
||||
color += randomTrigger * rand(uv + iTime) * 0.01;
|
||||
|
||||
fragColor = vec4(color, 0.95);
|
||||
}
|
||||
Reference in New Issue
Block a user