NOTE: This page is not fully optimized for the mobile viewing experience
precision highp float;
uniform vec2 u_resolution;
uniform float u_time;
float rand(vec2 co) {
return fract(sin(dot(co, vec2(12.9898, 78.233))) * 43758.5453);
}
void main() {
vec2 uv = gl_FragCoord.xy / u_resolution.xy;
float waveCenter = 0.3
+ 0.05 * sin(u_time/2. + uv.x * 4.0)
+ 0.03 * sin(u_time/2. * 1.7 + uv.x * 7.0);
float wC = 0.3 + 0.05 * sin(u_time + uv.x * 8.0) + 0.03 * sin(u_time * 0.7 + uv.x * 4.0);
float bandStart = waveCenter - 0.025; // Lower boundary for the gradient
float bandEnd = waveCenter + 0.025; // Upper boundary for the gradient
float bS = wC - 0.2;
float bE = wC + 0.2;
float t = smoothstep(bandStart , bandEnd, uv.y);
float s = smoothstep(bS, bE, uv.y);
t = t * s;
vec3 orange = vec3(1.0, 0.3, 0.0);
vec3 black = vec3(0.0);
vec3 lightOrange = vec3(1.0, 0.6, 0.); // Lighter orange
vec3 redderOrange = vec3(1.0, 0.1, 0.0); // Redder orange
float mixFactor = 0.8 + 0.2 * sin(u_time + uv.x * 5.0);
vec3 dO = mix(lightOrange, redderOrange, mixFactor);
vec3 color = mix(dO, black, t);
float noise = (rand(gl_FragCoord.xy) - 0.5) * 0.05; // adjust 0.1 to change intensity
color += noise;
gl_FragColor = vec4(color, 1.0);
}