| 123456789101112131415161718192021222324252627282930 |
- varying vec2 v_vTexcoord;
- varying vec4 v_vColour;
- uniform float u_fAlphaThreshold;
- uniform float u_fDisable;
- const float twoPi = 2.0*3.14159265;
- const float conversion = twoPi / (257.0 + (1.0 / 63.0));
- void main()
- {
- gl_FragColor = texture2D(gm_BaseTexture, v_vTexcoord);
- if (gl_FragColor.a < u_fAlphaThreshold) discard;
- gl_FragColor.a = 1.0;
-
- gl_FragColor.rgb = 2.0*gl_FragColor.rgb - 1.0;
-
- //Use the least significant bits in the red channel for the
- float xFlip = mod(v_vColour.r*255.0, 2.0);
- float yFlip = mod((v_vColour.r*255.0 - xFlip) / 2.0, 2.0);
-
- //Technically we should remove the least significant bits (the x flip and y flip bits)
- //Ultimately, it doesn't change the outcome much
- float angle = dot(v_vColour.rgb, conversion*vec3(1.0/63.0, 1.0, 256.0));
- float sine = sin(angle);
- float cosine = cos(angle);
- mat2 matrix = mat2(cosine, -sine, sine, cosine)*(mat2(1.0 - 2.0*xFlip, 0.0, 0.0, 1.0 - 2.0*yFlip));
-
- gl_FragColor.rg = 0.5 + 0.5*(matrix*gl_FragColor.rg);
- }
|