diff options
author | pryazha <pryadeiniv@mail.ru> | 2025-03-18 11:31:31 +0500 |
---|---|---|
committer | pryazha <pryadeiniv@mail.ru> | 2025-03-18 11:31:31 +0500 |
commit | d65ddd07a43d5ffdcf2ddf90d6f86626cf9b92d8 (patch) | |
tree | 672efce6089ec9c1103be0c1b70a28ec415eeeab /advanced_lighting/6.hdr/shaders/hdr.frag | |
parent | d64a159d05a45e75870f61c37f0defa94f03793e (diff) |
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); +} |