// https://www.shadertoy.com/view/lslGzl vec3 uncharted2Tonemap(const vec3 x) { const float A = 0.15; const float B = 0.50; const float C = 0.10; const float D = 0.20; const float E = 0.02; const float F = 0.30; return ((x * (A * x + C * B) + D * E) / (x * (A * x + B) + D * F)) - E / F; } vec3 tonemapUncharted2(const vec3 color) { const float W = 11.2; const float exposureBias = 2.0; vec3 curr = uncharted2Tonemap(exposureBias * color); vec3 whiteScale = 1.0 / uncharted2Tonemap(vec3(W)); return curr * whiteScale; } out vec4 color; void main(void) { vec2 uv = TEXCOORD.st; vec4 src = texture2D(iChannel0, uv); color = vec4( tonemapUncharted2(src.xyz), src.a); }