#version 330 core out vec3 fragColor; in vec2 texCoord; uniform sampler2D hdr_tex; uniform sampler2D lum_tex; void main() { vec3 hdrColor = texture(hdr_tex, texCoord).rgb; float avgLuminance = texture(lum_tex, texCoord).r; // XXX: Maybe we should actually control the EV compensation value itself // instead of hardcoding a factor? float exposure = 1.0 / (200.0 * avgLuminance); hdrColor *= exposure; if (dot(hdrColor, vec3(0.333)) <= 0.001) fragColor = vec3(0.0); else fragColor = hdrColor; }