summaryrefslogtreecommitdiff
path: root/advanced_lighting/6.hdr/shaders/hdr.frag
diff options
context:
space:
mode:
authorpryazha <pryadeiniv@mail.ru>2025-03-18 11:31:31 +0500
committerpryazha <pryadeiniv@mail.ru>2025-03-18 11:31:31 +0500
commitd65ddd07a43d5ffdcf2ddf90d6f86626cf9b92d8 (patch)
tree672efce6089ec9c1103be0c1b70a28ec415eeeab /advanced_lighting/6.hdr/shaders/hdr.frag
parentd64a159d05a45e75870f61c37f0defa94f03793e (diff)
Diffstat (limited to 'advanced_lighting/6.hdr/shaders/hdr.frag')
-rw-r--r--advanced_lighting/6.hdr/shaders/hdr.frag29
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);
+}