Amiga Like effect
Log in to post a comment.
#version 300 es precision highp float; uniform float iTime; uniform vec2 iResolution; out vec4 fragColor; // 2D pseudo‐noise function float noise(vec2 p) { return fract(sin(dot(p, vec2(127.1, 311.7))) * 43758.5453123); } // Smooth interpolation float smoothNoise(vec2 p) { vec2 i = floor(p); vec2 f = fract(p); // Corners float a = noise(i + vec2(0.0,0.0)); float b = noise(i + vec2(1.0,0.0)); float c = noise(i + vec2(0.0,1.0)); float d = noise(i + vec2(1.0,1.0)); // Smoothstep vec2 u = f*f*(3.0-2.0*f); return mix(a, b, u.x) + (c - a)* u.y * (1.0 - u.x) + (d - b)* u.x * u.y; } void main(){ // Normalize coordinates from -1 to +1 vec2 uv = (gl_FragCoord.xy / iResolution.xy)*2.0 - 1.0; uv.x *= iResolution.x / iResolution.y; // Tweak these for different looks float speed1 = 0.8; float speed2 = 1.3; float scale1 = 3.0; float scale2 = 4.5; // Two layers of moving noise/plasma float v1 = sin(dot(uv * scale1, vec2(1.0)) + iTime * speed1); float v2 = cos(length(uv * scale2) - iTime * speed2); // Combine and normalize float v = (v1 + v2) * 0.5; // Colour palette—classic “rainbow” vec3 colour = vec3( 0.5 + 0.5 * sin(3.0 + 3.0*v + iTime*0.6), 0.5 + 0.5 * sin(1.0 + 3.0*v + iTime*0.8), 0.5 + 0.5 * sin(5.0 + 3.0*v + iTime*0.4) ); fragColor = vec4(colour, 1.0); }