
uniform vec3 color0;
uniform vec3 color1;
uniform vec3 color2;
uniform vec3 colorActiveMask;
uniform vec3 backgrColor;

vec3 applyColorMode(vec3 color)
{
	vec3 intens = color;
	intens = smoothstep(0.0, 1.0, intens);
	color = vec3(0.0);
	
	color += color0 * intens.r * colorActiveMask.r;
	color += color1 * intens.g * colorActiveMask.g;
	color += color2 * intens.b * colorActiveMask.b;
	
	float paintAmount = dot(intens, colorActiveMask);
	color /= max(paintAmount, 1.0);
	
	return color + (1.0 - min(paintAmount, 1.0)) * backgrColor;
}
