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