diff options
| author | x2048 <codeforsmile@gmail.com> | 2022-11-02 09:09:48 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-11-02 09:09:48 +0100 |
| commit | 9b24041394ecf8210514845372d965f8d65302c9 (patch) | |
| tree | bdd8f6beea3ae775e3d2dbafa452257bd8f01ff9 /client/shaders/extract_bloom | |
| parent | fb3085a2c593e0671e3322fe0e7d0914a052acef (diff) | |
| download | minetest-9b24041394ecf8210514845372d965f8d65302c9.tar.xz | |
Improve bloom effect (#12916)
* Remove the built-in exposure factor of 2.5
* Add physics-based bloom (https://learnopengl.com/Guest-Articles/2022/Phys.-Based-Bloom)
* Add luminance scaling for bloom layer to simulate HDR
* Add setting to control bloom strength
Diffstat (limited to 'client/shaders/extract_bloom')
| -rw-r--r-- | client/shaders/extract_bloom/opengl_fragment.glsl | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/client/shaders/extract_bloom/opengl_fragment.glsl b/client/shaders/extract_bloom/opengl_fragment.glsl index 7d18ec26f..af320f9ab 100644 --- a/client/shaders/extract_bloom/opengl_fragment.glsl +++ b/client/shaders/extract_bloom/opengl_fragment.glsl @@ -2,7 +2,7 @@ uniform sampler2D rendered; uniform mediump float exposureFactor; -uniform float bloomLuminanceThreshold; +uniform mediump float bloomStrength; #ifdef GL_ES varying mediump vec2 varTexCoord; @@ -14,8 +14,14 @@ centroid varying vec2 varTexCoord; void main(void) { vec2 uv = varTexCoord.st; - vec4 color = texture2D(rendered, uv).rgba; + vec3 color = texture2D(rendered, uv).rgb; // translate to linear colorspace (approximate) - color.rgb = pow(color.rgb, vec3(2.2)) * exposureFactor; - gl_FragColor = vec4(color.rgb, 1.0); // force full alpha to avoid holes in the image. + color = pow(color, vec3(2.2)); + + // Scale colors by luminance to amplify bright colors + // in SDR textures. + float luminance = dot(color, vec3(0.213, 0.515, 0.072)); + luminance *= luminance; + color *= luminance * exposureFactor * bloomStrength; + gl_FragColor = vec4(color, 1.0); // force full alpha to avoid holes in the image. } |
