 
 
 // Luminosity Blend mode creates the result color by combining the hue and saturation of the base color with the luminance of the blend color.
-float BlendLuminosity1(float base, float blend)
+float BlendLuminosity1(in float base, in float blend)
 {
 	return base;
 }
-vec3 BlendLuminosity3(vec3 base, vec3 blend)
+
+vec3 BlendLuminosity3(in vec3 base, in vec3 blend)
 {
 	vec3 baseHSL = RGBToHSL(base);
 	return HSLToRGB(vec3(baseHSL.r, baseHSL.g, RGBToHSL(blend).b));
 }
-vec4 BlendLuminosity4(vec4 base, vec4 blend)
+
+vec4 BlendLuminosity4(in vec4 base, in vec4 blend)
 {
 	vec3 hue = BlendLuminosity3(base.xyz, blend.xyz);
 	return vec4(hue.x, hue.y, hue.z, BlendLuminosity1(base.w, blend.w));
 }
 
-float BlendLinearLightf(float s1, float s2)
+float BlendLinearLightf(in float s1, in float s2)
 {
 	float oColor;
 	

#define BlendOpacity(base, blend, F, O) 	(F(base, blend) * O + blend * (1.0 - O))

// Hue Blend mode creates the result color by combining the luminance and saturation of the base color with the hue of the blend color.
float BlendHue1(float base, float blend)
{
	return base;
}
vec3 BlendHue3(vec3 base, vec3 blend)
{
	vec3 baseHSL = RGBToHSL(base);
	return HSLToRGB(vec3(RGBToHSL(blend).r, baseHSL.g, baseHSL.b));
}
vec4 BlendHue4(vec4 base, vec4 blend)
{
	vec3 hue = BlendHue3(base.xyz, blend.xyz);
	return vec4(hue.x, hue.y, hue.z, BlendHue1(base.w, blend.w));
}

// Saturation Blend mode creates the result color by combining the luminance and hue of the base color with the saturation of the blend color.
float BlendSaturation1(float base, float blend)
{
	return base;
}
vec3 BlendSaturation3(vec3 base, vec3 blend)
{
	vec3 baseHSL = RGBToHSL(base);
	return HSLToRGB(vec3(baseHSL.r, RGBToHSL(blend).g, baseHSL.b));
}
vec4 BlendSaturation4(vec4 base, vec4 blend)
{
	vec3 hue = BlendSaturation3(base.xyz, blend.xyz);
	return vec4(hue.x, hue.y, hue.z, BlendSaturation1(base.w, blend.w));
}

// Color Mode keeps the brightness of the base color and applies both the hue and saturation of the blend color.
float BlendColor1(float base, float blend)
{
	return base;
}
vec3 BlendColor3(vec3 base, vec3 blend)
{
	vec3 blendHSL = RGBToHSL(blend);
	return HSLToRGB(vec3(blendHSL.r, blendHSL.g, RGBToHSL(base).b));
}

vec4 BlendColor4(vec4 base, vec4 blend)
{
	vec3 hue = BlendColor3(base.xyz, blend.xyz);
	return vec4(hue.x, hue.y, hue.z, BlendColor1(base.w, blend.w));

	return hsl;
}

float HueToRGB(in float f1, in float f2, in float hue)
{
	if (hue < 0.0)
		hue += 1.0;
