void mainImage(out vec4 fragColor, in vec2 fragCoord)
{
    // Normalized coordinates
    vec2 uv = fragCoord / iResolution.xy;

    // Time variable
    float time = iTime;

    // Center position
    vec2 center = vec2(0.5);

    // Calculate distance from center
    float distance = length(uv - center);

    // Scale and rotate UV coordinates based on distance and time
    vec2 distortedUV = uv + 0.3 * cos(time + distance * 30.0) * vec2(sin(time), cos(time));

    // Color calculation based on distorted UV coordinates
    vec3 color = vec3(
        0.5 + 0.5 * sin(distortedUV.x * 10.0),
        0.5 + 0.5 * cos(distortedUV.y * 10.0),
        0.5 + 0.5 * sin(distortedUV.x * distortedUV.y * 20.0)
    );

    // Output the final color
    fragColor = vec4(color, 1.0);
}

