From 7bf64fc61a6094733f9a9a9401d6f03a8f10edeb Mon Sep 17 00:00:00 2001 From: lhofhansl Date: Fri, 18 Nov 2022 11:49:52 -0800 Subject: Add configurable saturation (#12865) * Add configurable saturation Co-authored-by: Pevernow <3450354617@qq.com> Co-authored-by: x2048 Author: Lars --- client/shaders/second_stage/opengl_fragment.glsl | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'client') diff --git a/client/shaders/second_stage/opengl_fragment.glsl b/client/shaders/second_stage/opengl_fragment.glsl index b7f79084a..09b49ef0e 100644 --- a/client/shaders/second_stage/opengl_fragment.glsl +++ b/client/shaders/second_stage/opengl_fragment.glsl @@ -5,6 +5,7 @@ uniform sampler2D rendered; uniform sampler2D bloom; uniform mediump float exposureFactor; uniform lowp float bloomIntensity; +uniform lowp float saturation; #ifdef GL_ES varying mediump vec2 varTexCoord; @@ -57,6 +58,14 @@ vec4 applyToneMapping(vec4 color) color.rgb *= whiteScale; return color; } + +vec3 applySaturation(vec3 color, float factor) +{ + // Calculate the perceived luminosity from the RGB color. + // See also: https://www.w3.org/WAI/GL/wiki/Relative_luminance + float brightness = dot(color, vec3(0.2125, 0.7154, 0.0721)); + return mix(vec3(brightness), color, factor); +} #endif void main(void) @@ -85,6 +94,7 @@ void main(void) { #if ENABLE_TONE_MAPPING color = applyToneMapping(color); + color.rgb = applySaturation(color.rgb, saturation); #endif } -- cgit v1.2.3