summaryrefslogtreecommitdiffstats
path: root/res/raw/bg_fs.glsl
diff options
context:
space:
mode:
Diffstat (limited to 'res/raw/bg_fs.glsl')
-rw-r--r--res/raw/bg_fs.glsl27
1 files changed, 25 insertions, 2 deletions
diff --git a/res/raw/bg_fs.glsl b/res/raw/bg_fs.glsl
index d20885d..e063f86 100644
--- a/res/raw/bg_fs.glsl
+++ b/res/raw/bg_fs.glsl
@@ -1,5 +1,28 @@
varying lowp vec4 color;
+varying vec3 adjust;
+
+// inspired by http://www.chilliant.com/rgb2hsv.html
+vec3 hsl2rgb(vec3 hsl)
+{
+ // each line has the form abs(6 * hue - K1) * K2 + C
+ const vec3 K1 = vec3(0.5, 1.0 / 3.0, 2.0 / 3.0);
+ const vec3 K2 = vec3(1.0, -1.0, -1.0);
+ const vec3 C = vec3(-1.0, 2.0, 2.0);
+
+ vec3 rgb = clamp(abs(6.0 * (hsl.xxx - K1.xyz)) * K2 + C, 0.0, 1.0);
+ float chroma = (1.0 - abs(2.0 * hsl.z - 1.0)) * hsl.y;
+ return (rgb - 0.5) * chroma + hsl.z;
+}
void main() {
- gl_FragColor = color;
-} \ No newline at end of file
+ vec3 rgb = color.rgb;
+
+ if (adjust.x >= 0.0) {
+ // rgb is already greyscale in that case, so r = g = b
+ vec3 hsl = adjust * vec3(1.0, 1.0, rgb.r);
+ rgb = hsl2rgb(hsl);
+ }
+
+ // output pixel color
+ gl_FragColor = vec4(rgb, color.a);
+}