diff options
Diffstat (limited to 'advanced_lighting/6.hdr/shaders/hdr.frag')
-rw-r--r-- | advanced_lighting/6.hdr/shaders/hdr.frag | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/advanced_lighting/6.hdr/shaders/hdr.frag b/advanced_lighting/6.hdr/shaders/hdr.frag new file mode 100644 index 0000000..f12c6a8 --- /dev/null +++ b/advanced_lighting/6.hdr/shaders/hdr.frag @@ -0,0 +1,29 @@ +#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); +} |