#version 450 core out vec4 FragColor; in vec3 WorldPos; uniform samplerCube environmentMap; uniform float exposure = 1; vec3 ACESToneMapping(vec3 color) { const float A = 2.51; const float B = 0.03; const float C = 2.43; const float D = 0.59; const float E = 0.14; return (color * (A * color + B)) / (color * (C * color + D) + E); } void main() { vec3 color = texture(environmentMap, WorldPos).rgb; // HDR tonemap //envColor = envColor / (envColor + vec3(1.0)); color *= exposure; color = ACESToneMapping(color); // gamma correct color = pow(color, vec3(1.0/2.2)); FragColor = vec4(color, 1.0); }