// Uncharted 2 tone map // see: http://filmicworlds.com/blog/filmic-tonemapping-operators/ vec3 toneMapUncharted2Impl(vec3 color) { 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 ((color*(A*color+C*B)+D*E)/(color*(A*color+B)+D*F))-E/F; } vec3 ToneMapping(vec3 color) { const float W = 11.2; color = toneMapUncharted2Impl(color * 2.0); vec3 whiteScale = 1.0 / toneMapUncharted2Impl(vec3(W)); return linearTosRGB(color * whiteScale); }