was meant to be something else
Log in to post a comment.
#version 300 es
precision highp float;
uniform float iTime;
uniform vec2 iResolution;
out vec4 fragColor;
vec3 palette(float t) {
t = fract(t);
return 0.5 + 0.5 * cos(6.28318 * (vec3(0.0, 0.33, 0.67) + t));
}
void main() {
vec2 frag = gl_FragCoord.xy;
// ----------------------------------------------------------
// 1. SCREEN-SPACE BARREL / CRT WARP
// ----------------------------------------------------------
vec2 uv = (frag / iResolution) * 2.0 - 1.0;
float r2 = dot(uv, uv);
float barrel = 1.0 + 0.15 * r2;
uv *= barrel;
frag = (uv * 0.5 + 0.5) * iResolution;
frag = clamp(frag, vec2(0.0), iResolution - 1.0);
// ----------------------------------------------------------
// 2. WAVES + COLUMN WOBBLE + SCANLINE SHIMMER
// ----------------------------------------------------------
float waveAmp = 40.0;
float waveFreq = 0.063;
float waveSpd = 3.0;
float w =
sin(frag.y * waveFreq + iTime * waveSpd) +
cos(frag.x * waveFreq * 0.8 + iTime * waveSpd * 1.4);
float colWobble = sin(frag.x * 0.15 + iTime * 5.0) * 5.0;
float scanWave = sin(frag.y * 0.25 + iTime * 6.0) * 4.0;
frag.x += w * waveAmp + colWobble;
frag.y += w * waveAmp * 0.4 + scanWave;
frag = clamp(frag, vec2(0.0), iResolution - 1.0);
// ----------------------------------------------------------
// 3. ROW / COLUMN INDEXING (BUT NO BUILD-UP)
// ----------------------------------------------------------
float columnWidth = 16.0;
float rows = floor(iResolution.y);
float cols = floor(iResolution.x / columnWidth);
float col = clamp(floor(frag.x / columnWidth), 0.0, cols - 1.0);
float row = floor(iResolution.y - frag.y - 1.0);
row = clamp(row, 0.0, rows - 1.0);
// NO MORE SLOW FILL — FULL VISIBILITY
float visible = 1.0;
// ----------------------------------------------------------
// 4. RAINBOW COLOR
// ----------------------------------------------------------
float timeSpeed = 0.1;
float lineSpacing = 1.0 / 64.0;
float basePhase = row * lineSpacing;
float t = basePhase + iTime * timeSpeed + col * 0.02;
fragColor = vec4(palette(t) * visible, 1.0);
}