 #endif
 
 uniform sampler2D u_skin;
+#define u_pixelate_half vec2(0.5,0.5) // TODO
 
 varying vec2 v_texCoord;
 
+#if defined(ENABLE_color) || defined(ENABLE_brightness)
 vec3 convertRGB2HSV(vec3 rgb)
 {
 	float maxRGB = max(max(rgb.r, rgb.g), rgb.b);

		}
		#endif // ENABLE_color

		gl_FragColor.rgb = convertHSV2RGB(hsv);
	}
	#endif // defined(ENABLE_color) || defined(ENABLE_brightness)
}


	return rgb;
}
#endif // defined(ENABLE_color) || defined(ENABLE_brightness)

const vec2 kCenter = vec2(0.5, 0.5);

void main()
{
	vec2 texcoord0 = v_texCoord;

	#ifdef ENABLE_mosaic
	texcoord0 = fract(u_mosaic * texcoord0);
	#endif // ENABLE_mosaic

	#ifdef ENABLE_pixelate
	texcoord0 = floor(texcoord0 / u_pixelate) * u_pixelate + u_pixelate_half;
	#endif // ENABLE_pixelate

	#ifdef ENABLE_whirl
	{
		const float kRadius = 0.5;
		vec2 offset = texcoord0 - kCenter;
		float offsetMagnitude = length(offset);
