aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorx2048 <codeforsmile@gmail.com>2023-02-10 21:04:37 +0100
committerGitHub <noreply@github.com>2023-02-10 21:04:37 +0100
commit4cd6b773bb5de2594c682ae7e5793c80ad6a22e6 (patch)
treec68fc7cc33e77c5b78daf2e674d020698e0e1c3f
parentd3a6ee00e63cc0a4adcaa7598ad5614f1e419515 (diff)
downloadminetest-4cd6b773bb5de2594c682ae7e5793c80ad6a22e6.tar.xz
Fix no color values on bloom texture (#13197)
Align meaning of 'exposure' variable across different stages Put 'exposure' variable behind ENABLE_AUTO_EXPOSURE
-rw-r--r--client/shaders/extract_bloom/opengl_fragment.glsl11
-rw-r--r--client/shaders/extract_bloom/opengl_vertex.glsl9
-rw-r--r--client/shaders/second_stage/opengl_fragment.glsl9
-rw-r--r--client/shaders/second_stage/opengl_vertex.glsl9
4 files changed, 29 insertions, 9 deletions
diff --git a/client/shaders/extract_bloom/opengl_fragment.glsl b/client/shaders/extract_bloom/opengl_fragment.glsl
index 45f5e9c6f..36671b06c 100644
--- a/client/shaders/extract_bloom/opengl_fragment.glsl
+++ b/client/shaders/extract_bloom/opengl_fragment.glsl
@@ -14,7 +14,9 @@ varying mediump vec2 varTexCoord;
centroid varying vec2 varTexCoord;
#endif
-varying float exposure;
+#ifdef ENABLE_AUTO_EXPOSURE
+varying float exposure; // linear exposure factor, see vertex shader
+#endif
void main(void)
{
@@ -23,6 +25,11 @@ void main(void)
// translate to linear colorspace (approximate)
color = pow(color, vec3(2.2));
- color *= pow(2., exposure) * exposureParams.compensationFactor * bloomStrength;
+ color *= exposureParams.compensationFactor * bloomStrength;
+
+#ifdef ENABLE_AUTO_EXPOSURE
+ color *= exposure;
+#endif
+
gl_FragColor = vec4(color, 1.0); // force full alpha to avoid holes in the image.
}
diff --git a/client/shaders/extract_bloom/opengl_vertex.glsl b/client/shaders/extract_bloom/opengl_vertex.glsl
index 479ae1079..2fee884ba 100644
--- a/client/shaders/extract_bloom/opengl_vertex.glsl
+++ b/client/shaders/extract_bloom/opengl_vertex.glsl
@@ -1,18 +1,25 @@
+#ifdef ENABLE_AUTO_EXPOSURE
#define exposureMap texture1
uniform sampler2D exposureMap;
+varying float exposure;
+#endif
+
#ifdef GL_ES
varying mediump vec2 varTexCoord;
#else
centroid varying vec2 varTexCoord;
#endif
-varying float exposure;
void main(void)
{
+#ifdef ENABLE_AUTO_EXPOSURE
+ // value in the texture is on a logarithtmic scale
exposure = texture2D(exposureMap, vec2(0.5)).r;
+ exposure = pow(2., exposure);
+#endif
varTexCoord.st = inTexCoord0.st;
gl_Position = inVertexPosition;
diff --git a/client/shaders/second_stage/opengl_fragment.glsl b/client/shaders/second_stage/opengl_fragment.glsl
index 2ff58aa42..ac83c34eb 100644
--- a/client/shaders/second_stage/opengl_fragment.glsl
+++ b/client/shaders/second_stage/opengl_fragment.glsl
@@ -18,7 +18,9 @@ varying mediump vec2 varTexCoord;
centroid varying vec2 varTexCoord;
#endif
-varying float exposure;
+#ifdef ENABLE_AUTO_EXPOSURE
+varying float exposure; // linear exposure factor, see vertex shader
+#endif
#ifdef ENABLE_BLOOM
@@ -87,7 +89,10 @@ void main(void)
if (uv.x > 0.5 || uv.y > 0.5)
#endif
{
- color.rgb *= exposure * exposureParams.compensationFactor;
+ color.rgb *= exposureParams.compensationFactor;
+#ifdef ENABLE_AUTO_EXPOSURE
+ color.rgb *= exposure;
+#endif
}
diff --git a/client/shaders/second_stage/opengl_vertex.glsl b/client/shaders/second_stage/opengl_vertex.glsl
index 7c121f6d1..f74960ec2 100644
--- a/client/shaders/second_stage/opengl_vertex.glsl
+++ b/client/shaders/second_stage/opengl_vertex.glsl
@@ -1,22 +1,23 @@
+#ifdef ENABLE_AUTO_EXPOSURE
#define exposureMap texture2
uniform sampler2D exposureMap;
+varying float exposure;
+#endif
+
#ifdef GL_ES
varying mediump vec2 varTexCoord;
#else
centroid varying vec2 varTexCoord;
#endif
-varying float exposure;
-
void main(void)
{
#ifdef ENABLE_AUTO_EXPOSURE
+ // value in the texture is on a logarithtmic scale
exposure = texture2D(exposureMap, vec2(0.5)).r;
exposure = pow(2., exposure);
-#else
- exposure = 1.0;
#endif
varTexCoord.st = inTexCoord0.st;