#version 330 core in VSOUT { vec2 texc; } vsout; out vec4 fcolor; uniform sampler2D hdrbuf; uniform float exposure; void main(void) { const float gamma = 2.2; vec3 hdrcolor, mapped; hdrcolor = vec3(texture(hdrbuf, vsout.texc)); /* NOTE(pryazha): Reinhard tone mapping */ /* mapped = hdrcolor/(hdrcolor+vec3(1.0)); */ /* NOTE(pryazha): Tone mapping with exposure (i guess) */ mapped = vec3(1.0)-exp(-hdrcolor*exposure); mapped = pow(mapped, vec3(1.0/gamma)); fcolor = vec4(mapped, 1.0); }