uniform float value; uniform float minSat; uniform float maxSat; varying vec2 uv; void main() { float chroma = (1.0 - uv.y) * value * (maxSat - minSat) + minSat; float X = chroma * (1.0 - (abs(mod(uv.x * 6.0, 2.0) - 1.0))); float m = value - chroma; chroma += m; X += m; vec3 rgb = vec3(chroma); vec2 lower = vec2(X, m); float segment = floor(uv.x * 6.0); if(segment == 0.0) rgb.gb = lower; else if(segment == 1.0) rgb.rb = lower; else if(segment == 2.0) rgb.br = lower; else if(segment == 3.0) rgb.gr = lower; else if(segment == 4.0) rgb.rg = lower; else// if(segment == 5.0) rgb.bg = lower; gl_FragColor = vec4(rgb, 1.0); }