aboutsummaryrefslogtreecommitdiffstatsci
path: root/shaders/skybox.frag
diff options
context:
space:
mode:
Diffstat (limited to 'shaders/skybox.frag')
-rw-r--r--shaders/skybox.frag39
1 files changed, 39 insertions, 0 deletions
diff --git a/shaders/skybox.frag b/shaders/skybox.frag
new file mode 100644
index 0000000..336e7e5
--- /dev/null
+++ b/shaders/skybox.frag
@@ -0,0 +1,39 @@
+#version 450
+
+layout (binding = 3) uniform samplerCube samplerEnv;
+
+layout (set = 0, location = 0) in vec3 inUVW;
+
+layout (set = 0, location = 0) out vec4 outColor;
+
+layout (set = 0, binding = 1) uniform UBOParams {
+ vec4 _pad0;
+ float exposure;
+ float gamma;
+} uboParams;
+
+// From http://filmicworlds.com/blog/filmic-tonemapping-operators/
+vec3 Uncharted2Tonemap(vec3 color)
+{
+ float A = 0.15;
+ float B = 0.50;
+ float C = 0.10;
+ float D = 0.20;
+ float E = 0.02;
+ float F = 0.30;
+ float W = 11.2;
+ return ((color*(A*color+C*B)+D*E)/(color*(A*color+B)+D*F))-E/F;
+}
+
+void main()
+{
+ vec3 color = textureLod(samplerEnv, inUVW, 0.5).rgb;
+
+ // Tone mapping
+ color = Uncharted2Tonemap(color * uboParams.exposure);
+ color = color * (1.0f / Uncharted2Tonemap(vec3(11.2f)));
+ // Gamma correction
+ color = pow(color, vec3(1.0f / uboParams.gamma));
+
+ outColor = vec4(color, 1.0);
+}