
void aces_approx(inout vec3 col)
{
    col *= 0.4f;
    float a = 2.51f;
    float b = 0.03f;
    float c = 2.43f;
    float d = 0.59f;
    float e = 0.14f;
    col = clamp((col * (a * col + b)) / (col * (c * col + d) + e), 0.0, 1.0);
}

void mainImage( out vec4 fragColor, in vec2 fragCoord )
{
    init_random_state(fragCoord.xy, iTime);

    vec2 uv = fragCoord/iResolution.xy;
    vec3 col = texture(iChannel0, uv).rgb;

    aces_approx(col);

    fragColor = vec4(col, 1);
}
