1 vec4 RGBtoHSV(in vec4 o) {
\r
2 float MAX = max(max(o.r, o.g), o.b);
\r
3 float MIN = min(min(o.r, o.g), o.b);
\r
5 if(MAX==MIN) { h=0.0; }
\r
6 else if(o.r>o.g && o.r>o.b) { h=60.0*(o.g-o.b)/(MAX-MIN)+360.0; }
\r
7 else if(o.g>o.b) { h=60.0*(o.b-o.r)/(MAX-MIN)+120.0; }
\r
8 else { h=60.0*(o.r-o.g)/(MAX-MIN)+240.0; }
\r
11 if(MAX==MIN) { s=0.0; } else { s=(MAX-MIN)/MAX; }
\r
12 return vec4(h, s, v, o.a);
\r
15 vec4 HSVtoRGB(in vec4 o) {
\r
16 int hi = int(floor(o[0]/60.0));
\r
17 float f = (o[0]/60.0)-float(hi), p = o[2]*(1.0-o[1]), q = o[2]*(1.0-f*o[1]), t = o[2]*(1.0-(1.0-f)*o[1]);
\r
18 if(hi==0){ return vec4(o[2],t,p,o[3]); }
\r
19 else if(hi==1){ return vec4(q,o[2],p,o[3]); }
\r
20 else if(hi==2){ return vec4(p,o[2],t,o[3]); }
\r
21 else if(hi==3){ return vec4(p,q,o[2],o[3]); }
\r
22 else if(hi==4){ return vec4(t,p,o[2],o[3]); }
\r
23 else if(hi==5){ return vec4(o[2],p,q,o[3]); }
\r
26 in float dh, ds, dv;
\r
28 vec4 hsv = RGBtoHSV(getPix());
\r
29 hsv[0] = mod(hsv[0]+dh/2.0/PI*360.0, 360.0);
\r