a51e52c9671c90a55371bcefd144eb812d326ebf
[demo_prior] / sdr / oldfig.p.glsl
1 uniform sampler2D tex;
2
3 vec3 rgb2hsv(in vec3 rgb);
4 vec3 hsv2rgb(in vec3 hsv);
5
6 void main()
7 {
8         vec3 texel = texture2D(tex, gl_TexCoord[0].st).rgb;
9         vec3 hsv = rgb2hsv(texel);
10         vec3 rgb = hsv2rgb(hsv * vec3(0.97, 0.8, 0.9));
11
12         gl_FragColor = vec4(rgb, 1.0);
13 }
14
15
16 vec3 rgb2hsv(in vec3 rgb)
17 {
18     vec4 k = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0);
19     vec4 p = mix(vec4(rgb.bg, k.wz), vec4(rgb.gb, k.xy), step(rgb.b, rgb.g));
20     vec4 q = mix(vec4(p.xyw, rgb.r), vec4(rgb.r, p.yzx), step(p.x, rgb.r));
21     float d = q.x - min(q.w, q.y);
22     float e = 1.0e-10;
23     return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x);
24 }
25
26 vec3 hsv2rgb(in vec3 hsv)
27 {
28     vec3 rgb = clamp(abs(mod(hsv.x * 6.0 + vec3(0.0, 4.0, 2.0), 6.0) - 3.0) - 1.0, 0.0, 1.0 );
29         return hsv.z * mix(vec3(1.0), rgb, hsv.y);
30 }