Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- varying vec2 v_vTexcoord;
- varying vec4 v_vColour;
- uniform float xhueval;
- uniform float xsatval;
- void main()
- {
- vec2 tmp_coord = v_vTexcoord;
- vec4 tmp_col = texture2D( gm_BaseTexture, tmp_coord );
- //rgb to hsl
- float colr = tmp_col.r;
- float colg = tmp_col.g;
- float colb = tmp_col.b;
- float xmin = min(min(colr, colg), colb);
- float xmax = max(max(colr, colg), colb);
- float hslh;
- float hsls;
- float hsll = (xmin+xmax)/2.;
- if (xmin == xmax) {
- hsls = 0.;
- hslh = 0.;
- }
- else {
- if (hsll < 0.5) hsls = (xmax-xmin)/(xmax+xmin);
- else hsls = (xmax-xmin)/(2.-xmax-xmin);
- if (colr == xmax) hslh = (colg-colb)/(xmax-xmin);
- if (colg == xmax) hslh = 2.+(colb-colr)/(xmax-xmin);
- if (colb == xmax) hslh = 4.+(colr-colg)/(xmax-xmin);
- hslh = hslh*60.;
- if (hslh < 0.) hslh += 360.;
- }
- //change hsl values
- hslh += xhueval;
- if (hslh >= 360.) hslh -= 360.;
- if (hslh < 0.) hslh += 360.;
- hsls = xsatval*hsls;
- //hsl to rgb
- if (hsls == 0.) {
- colr = hsll;
- colg = colr;
- colb = colr;
- }
- else {
- float varc = (1.-abs(2.*hsll-1.))*hsls;
- float varx = varc*(1.-abs(mod(hslh/60., 2.) - 1.));
- float varm = hsll - varc/2.;
- if ((hslh >= 0.) && (hslh < 60.)) {
- colr = varc + varm;
- colg = varx + varm;
- colb = varm;
- }
- if ((hslh >= 60.) && (hslh < 120.)) {
- colr = varx + varm;
- colg = varc + varm;
- colb = varm;
- }
- if ((hslh >= 120.) && (hslh < 180.)) {
- colr = varm;
- colg = varc + varm;
- colb = varx + varm;
- }
- if ((hslh >= 180.) && (hslh < 240.)) {
- colr = varm;
- colg = varx + varm;
- colb = varc + varm;
- }
- if ((hslh >= 240.) && (hslh < 300.)) {
- colr = varx + varm;
- colg = varm;
- colb = varc + varm;
- }
- if ((hslh >= 300.) && (hslh < 360.)) {
- colr = varc + varm;
- colg = varm;
- colb = varx + varm;
- }
- }
- //change rgb values
- tmp_col.r = colr;
- tmp_col.g = colg;
- tmp_col.b = colb;
- gl_FragColor = tmp_col * v_vColour;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement