// Fragment ( Saturation ) #define vec1 float const vec3 L = vec3( 0.2125, 0.7154, 0.0721 ); // Luminance uniform sampler2D S; uniform vec1 U; // Saturation varying vec2 T; void main( void ) { vec3 C = vec3( texture2D( S, T ).rgb ); gl_FragColor = vec4( mix( vec3( dot( C, L ) ), C, U ), 1.0 ); } // Fragment ( Luminance ) #define vec1 float const vec3 L = vec3( 0.2125, 0.7154, 0.0721 ); // Luminance uniform sampler2D S; varying vec2 T; void main( void ) { vec1 C = vec1( dot( texture2D( S, T ).rgb, L ) ); gl_FragColor = vec4( C, C, C, 1.0 ); } // Fragment ( Inversion ) uniform sampler2D S; varying vec2 T; void main( void ) { gl_FragColor = vec4( ( 1.0 - texture2D( S, T ).rgb ), 1.0 ); } // Fragment ( Default ) uniform sampler2D S; varying vec2 T; void main( void ) { gl_FragColor = vec4( texture2D( S, T ).rgb, 1.0 ); } // Fragment ( Palette ) uniform sampler2D I; // Index ( i.e. RED = R, 0, 0, 1 ) uniform sampler1D P; // Palette ( i.e. RGBA = R, G, B, A ) varying vec2 T; void main( void ) { gl_FragColor = vec4( texture1D( P, texture2D( I, T ).r ) ); }