<?xml version="1.0" encoding="iso-8859-1"?>
<xsi_file type="ShaderCompound" name="OpenGL Mix4colors" category="Realtime" author="Clement Mallard" formatversion="1.1" compoundversion="1.0" color="14654346" editable="1">
	<description><![CDATA[Clement Mallard
clementmallard@gmail.com

*** How to use it :

- Set the viewport to Realtime Shaders/OpenGL.
- Import the shader compound and plug it into the RealTime output of the Rendertree.
- Softimage will warn you that no texture is plugged, this is normal.
- To plug a texture in the shader, plug the texture clip itself not the image node.
	Unlike any other shader, plug the blue link not the red one.
- To view the texture you plugged, choose texture instead of color in the property page.]]></description>
	<definition>
		<nodes>
			<node type="shader" progid="Softimage.OGL13Texture.1.0" index="0">
				<param name="Name" type="31" ><![CDATA[OGL13Texture]]></param>
				<param name="target" type="3" value="0"></param>
				<param name="tspace_id" type="3" value="-1"></param>
				<param name="border.red" type="4" value="0.000000"></param>
				<param name="border.green" type="4" value="0.000000"></param>
				<param name="border.blue" type="4" value="0.000000"></param>
				<param name="border.alpha" type="4" value="1.000000"></param>
				<param name="magfilter" type="3" value="1"></param>
				<param name="minfilter" type="3" value="1"></param>
				<param name="mipmaplodbias" type="4" value="0.000000"></param>
				<param name="anisotropy" type="4" value="1.000000"></param>
				<param name="modulation" type="3" value="0"></param>
				<param name="compression" type="11" value="true"></param>
				<param name="format" type="3" value="0"></param>
				<param name="UniformName" type="8" ><![CDATA[tex0]]></param>
				<datablob category="ui_infos">
					<prop name="posx">-145</prop>
					<prop name="posy">35</prop>
					<prop name="state">ConnectedOnly</prop>
				</datablob>
			</node>
			<node type="shader" progid="Softimage.OGL13Texture.1.0" index="1">
				<param name="Name" type="31" ><![CDATA[OGL13Texture1]]></param>
				<param name="target" type="3" value="1"></param>
				<param name="tspace_id" type="3" value="-1"></param>
				<param name="border.red" type="4" value="0.000000"></param>
				<param name="border.green" type="4" value="0.000000"></param>
				<param name="border.blue" type="4" value="0.000000"></param>
				<param name="border.alpha" type="4" value="1.000000"></param>
				<param name="magfilter" type="3" value="1"></param>
				<param name="minfilter" type="3" value="1"></param>
				<param name="mipmaplodbias" type="4" value="0.000000"></param>
				<param name="anisotropy" type="4" value="1.000000"></param>
				<param name="modulation" type="3" value="0"></param>
				<param name="compression" type="11" value="true"></param>
				<param name="format" type="3" value="0"></param>
				<param name="UniformName" type="8" ><![CDATA[tex1]]></param>
				<datablob category="ui_infos">
					<prop name="posx">-147</prop>
					<prop name="posy">214</prop>
					<prop name="state">ConnectedOnly</prop>
				</datablob>
			</node>
			<node type="shader" progid="Softimage.OGL13Texture.1.0" index="2">
				<param name="Name" type="31" ><![CDATA[OGL13Texture2]]></param>
				<param name="target" type="3" value="2"></param>
				<param name="tspace_id" type="3" value="-1"></param>
				<param name="border.red" type="4" value="0.000000"></param>
				<param name="border.green" type="4" value="0.000000"></param>
				<param name="border.blue" type="4" value="0.000000"></param>
				<param name="border.alpha" type="4" value="1.000000"></param>
				<param name="magfilter" type="3" value="1"></param>
				<param name="minfilter" type="3" value="1"></param>
				<param name="mipmaplodbias" type="4" value="0.000000"></param>
				<param name="anisotropy" type="4" value="1.000000"></param>
				<param name="modulation" type="3" value="0"></param>
				<param name="compression" type="11" value="true"></param>
				<param name="format" type="3" value="0"></param>
				<param name="UniformName" type="8" ><![CDATA[tex2]]></param>
				<datablob category="ui_infos">
					<prop name="posx">-147</prop>
					<prop name="posy">294</prop>
					<prop name="state">ConnectedOnly</prop>
				</datablob>
			</node>
			<node type="shader" progid="Softimage.OGL13Texture.1.0" index="3">
				<param name="Name" type="31" ><![CDATA[OGL13Texture3]]></param>
				<param name="target" type="3" value="3"></param>
				<param name="tspace_id" type="3" value="-1"></param>
				<param name="border.red" type="4" value="0.000000"></param>
				<param name="border.green" type="4" value="0.000000"></param>
				<param name="border.blue" type="4" value="0.000000"></param>
				<param name="border.alpha" type="4" value="1.000000"></param>
				<param name="magfilter" type="3" value="1"></param>
				<param name="minfilter" type="3" value="1"></param>
				<param name="mipmaplodbias" type="4" value="0.000000"></param>
				<param name="anisotropy" type="4" value="1.000000"></param>
				<param name="modulation" type="3" value="0"></param>
				<param name="compression" type="11" value="true"></param>
				<param name="format" type="3" value="0"></param>
				<param name="UniformName" type="8" ><![CDATA[tex3]]></param>
				<datablob category="ui_infos">
					<prop name="posx">-148</prop>
					<prop name="posy">479</prop>
					<prop name="state">ConnectedOnly</prop>
				</datablob>
			</node>
			<node type="shader" progid="Softimage.OGL13Texture.1.0" index="4">
				<param name="Name" type="31" ><![CDATA[OGL13Texture6]]></param>
				<param name="target" type="3" value="6"></param>
				<param name="tspace_id" type="3" value="-1"></param>
				<param name="border.red" type="4" value="0.000000"></param>
				<param name="border.green" type="4" value="0.000000"></param>
				<param name="border.blue" type="4" value="0.000000"></param>
				<param name="border.alpha" type="4" value="1.000000"></param>
				<param name="magfilter" type="3" value="1"></param>
				<param name="minfilter" type="3" value="1"></param>
				<param name="mipmaplodbias" type="4" value="0.000000"></param>
				<param name="anisotropy" type="4" value="1.000000"></param>
				<param name="modulation" type="3" value="0"></param>
				<param name="compression" type="11" value="true"></param>
				<param name="format" type="3" value="0"></param>
				<param name="UniformName" type="8" ><![CDATA[tex6]]></param>
				<datablob category="ui_infos">
					<prop name="posx">-141</prop>
					<prop name="posy">822</prop>
					<prop name="state">ConnectedOnly</prop>
				</datablob>
			</node>
			<node type="shader" progid="Softimage.OGL13Texture.1.0" index="5">
				<param name="Name" type="31" ><![CDATA[OGL13Texture4]]></param>
				<param name="target" type="3" value="4"></param>
				<param name="tspace_id" type="3" value="-1"></param>
				<param name="border.red" type="4" value="0.000000"></param>
				<param name="border.green" type="4" value="0.000000"></param>
				<param name="border.blue" type="4" value="0.000000"></param>
				<param name="border.alpha" type="4" value="1.000000"></param>
				<param name="magfilter" type="3" value="1"></param>
				<param name="minfilter" type="3" value="1"></param>
				<param name="mipmaplodbias" type="4" value="0.000000"></param>
				<param name="anisotropy" type="4" value="1.000000"></param>
				<param name="modulation" type="3" value="0"></param>
				<param name="compression" type="11" value="true"></param>
				<param name="format" type="3" value="0"></param>
				<param name="UniformName" type="8" ><![CDATA[tex4]]></param>
				<datablob category="ui_infos">
					<prop name="posx">-147</prop>
					<prop name="posy">554</prop>
					<prop name="state">ConnectedOnly</prop>
				</datablob>
			</node>
			<node type="shader" progid="Softimage.OGL13Texture.1.0" index="6">
				<param name="Name" type="31" ><![CDATA[OGL13Texture5]]></param>
				<param name="target" type="3" value="5"></param>
				<param name="tspace_id" type="3" value="-1"></param>
				<param name="border.red" type="4" value="0.000000"></param>
				<param name="border.green" type="4" value="0.000000"></param>
				<param name="border.blue" type="4" value="0.000000"></param>
				<param name="border.alpha" type="4" value="1.000000"></param>
				<param name="magfilter" type="3" value="1"></param>
				<param name="minfilter" type="3" value="1"></param>
				<param name="mipmaplodbias" type="4" value="0.000000"></param>
				<param name="anisotropy" type="4" value="1.000000"></param>
				<param name="modulation" type="3" value="0"></param>
				<param name="compression" type="11" value="true"></param>
				<param name="format" type="3" value="0"></param>
				<param name="UniformName" type="8" ><![CDATA[tex5]]></param>
				<datablob category="ui_infos">
					<prop name="posx">-139</prop>
					<prop name="posy">740</prop>
					<prop name="state">ConnectedOnly</prop>
				</datablob>
			</node>
			<node type="shader" progid="Softimage.GLSLProgram.1.0" index="7">
				<param name="Name" type="31" ><![CDATA[GLSLProgram]]></param>
				<param name="Enable_GLSL_Program" type="3" value="2"></param>
				<param name="Debug" type="11" value="false"></param>
				<param name="GLSL_Program" type="8" ><![CDATA[uniform vec4 display;	//1 display mode; 2 specular decay; 3 specular

varying vec2 texcoord0,texcoord1,texcoord2,texcoord3,texcoord4,texcoord5,texcoord6; // texture projections
varying vec4 ambspecular;		// ambient + specular lighting
varying vec4 diffuse;			// diffuse lighting
varying vec4 vertexcolor1,vertexcolor2;	// Vertex colors

void main()
{
	texcoord0 = gl_MultiTexCoord0.st;
	texcoord1 = gl_MultiTexCoord1.st;
	texcoord2 = gl_MultiTexCoord2.st;
	texcoord3 = gl_MultiTexCoord3.st;
	texcoord4 = gl_MultiTexCoord4.st;
	texcoord5 = gl_MultiTexCoord5.st;
	texcoord6 = gl_MultiTexCoord6.st;

	vertexcolor1 = gl_Color;
	vertexcolor2 = gl_SecondaryColor;

	gl_Position = ftransform();

	if ( display[1] == 1.0 )	// is display mode set to textured
	{
		float NdotL,NdotHV,lightlength;
		vec3 vtx_light_direction;
		vec3 vtx_normal = gl_NormalMatrix * gl_Normal;
		vec3 viewVec = gl_ModelViewMatrix * gl_Vertex;

		// Override the material's ambience with 0.3
		ambspecular = gl_LightModel.ambient * 0.3;
		diffuse = vec4(0.0);

		for(int i=0; i < 8; i++)
		{
			if ( gl_LightSource[i].diffuse != vec4 (0.0) )
			{
				// check if it's an infinite light
				lightlength = length(gl_LightSource[i].position);

				if ( lightlength > 0.99 && lightlength < 1.01 )
				{
					vtx_light_direction = vec3(normalize(gl_LightSource[i].position));
					NdotL = max(dot(vtx_normal,vtx_light_direction),0.0);

					if (NdotL > 0.0 && display[3] == 1.0)
					{
						NdotHV = max(dot(vtx_normal, gl_LightSource[i].halfVector.xyz),0.0);
						ambspecular += gl_LightSource[i].specular * pow(NdotHV,display[2]);
					}
				}
				else
				{
					vtx_light_direction = vec3(normalize(gl_LightSource[i].position - viewVec));
					NdotL = max(dot(vtx_normal,vtx_light_direction),0.0);

					if (NdotL > 0.0 && display[3] == 1.0)
					{
						vec3 reflectVec = reflect(normalize(viewVec - gl_LightSource[i].position), vtx_normal);
						vec3 viewVec = normalize(viewVec);
						NdotHV = max(dot(reflectVec,-viewVec), 0.0);
					
						// adjust the shininess to look like the fixed function
						ambspecular += gl_LightSource[i].specular * pow(NdotHV,display[2] * 0.3);
					}
				}

				diffuse += NdotL * gl_LightSource[i].diffuse;
			}
		}
	}
	else	// is display mode set to textured decal or weights
	{
		ambspecular = vec4(0.0);
		diffuse = vec4(1.0);
	}
}]]></param>
				<param name="GLSL_ProgramF" type="8" ><![CDATA[uniform vec4 color0,color1,color2,color3;			// Color pickers
uniform sampler2D tex0,tex1,tex2,tex3,tex4,tex5,tex6;		// Texture inputs

uniform vec4 display;	//1 display mode; 2 specular decay; 3 specular
uniform vec3 base;	// Base layer parameters
uniform mat4 param;	// Layers 1, 2, 3 parameters

// description of param[i][j], parameters for layers 1,2,3 :
// [0][0] unused      [0][1] input1      [0][2] tile1         [0][3] blend1
// [1][0] const1       [1][1] tileblend1 [1][2] input2      [1][3] tile2
// [2][0] blend2       [2][1] const2     [2][2] tileblend2 [2][3] input3
// [2][0] tile3          [2][1] blend3     [2][2] const3      [2][3] tileblend3

varying vec2 texcoord0,texcoord1,texcoord2,texcoord3,texcoord4,texcoord5,texcoord6; // texture projections
varying vec4 ambspecular;		// ambient + specular lighting
varying vec4 diffuse;			// diffuse lighting
varying vec4 vertexcolor1,vertexcolor2;	// Vertex colors

// Function that returns the weight value
float getblend(in float blendmode, in float constvalue,in int layer,in bool isimagerepeat,in bool isblendrepeat,in float usealpha);

void main()
{
	// Calculate weights
	float blend1 = 0.0,blend2 = 0.0,blend3 = 0.0;

	// layer 3 is in use
	if ( param[2][3] != 0.0 )
		blend3 = getblend(param[3][1] , param[3][2] , 3 , bool(param[3][0]) , bool(param[3][3]) , param[2][3]);

	// layer 2 is in use
	if ( param[1][2] != 0.0 )
		blend2 = getblend(param[2][0] , param[2][1] , 2 , bool(param[1][3]) , bool(param[2][2]) , param[1][2]);

	// layer 1 is in use
	if ( param[0][1] != 0.0 )	// don't check if next layers are opaque
		blend1 = getblend(param[0][3] , param[1][0] , 1 , bool(param[0][2]) , bool(param[1][1]) , param[0][1]);
	

	vec4 currentlayer = vec4(0.0);
	if ( display[1] == 0.0 )	// display mode set to weights
	{
		// Weight colors are hard coded at the moment
		// Base Layer : Black
		// Layer 1 : Red
		// Layer 2 : Green
		// Layer 3 : Blue

		currentlayer = mix(vec4(0.0,0.0,0.0,1.0),vec4(1.0,0.0,0.0,1.0),blend1);
		currentlayer = mix(currentlayer,vec4(0.0,1.0,0.0,1.0),blend2);
		currentlayer = mix(currentlayer,vec4(0.0,0.0,1.0,1.0),blend3);

		gl_FragColor = currentlayer;
	}
	else	// display mode set to textured or textured decal
	{
		if ( base[1] == 1.0 )	// base layer color input
			currentlayer = color0;
		else
		{
			if ( base[2] == 1.0 )	// repeatable
			{
				currentlayer = texture2D(tex0,texcoord0);
			}
			else if ( min(texcoord0.s,texcoord0.t) > 0.0 && max(texcoord0.s,texcoord0.t) < 1.0 )
			{
				currentlayer = texture2D(tex0,texcoord0);
			}
		}

		// Always mix layers, it's faster than having conditions
		if ( param[0][1] == 1.0 )	// layer 1 color input
			currentlayer = mix(currentlayer,color1,blend1);
		else if ( param[0][1] >= 2.0 )	// texture or texture with alpha
		{
			if ( param[0][2] == 1.0 )	// repeatable
			{
				currentlayer = mix(currentlayer,texture2D(tex1,texcoord1),blend1);
			}
			else if ( min(texcoord1.s,texcoord1.t) > 0.0 && max(texcoord1.s,texcoord1.t) < 1.0 )
			{
				currentlayer = mix(currentlayer,texture2D(tex1,texcoord1),blend1);
			}
		}

		if ( param[1][2] == 1.0 ) // layer 2 color input
			currentlayer = mix(currentlayer,color2,blend2);
		else if ( param[1][2] >= 2.0 )
		{
			if ( param[1][3] == 1.0 )	// repeatable
			{
				currentlayer = mix(currentlayer,texture2D(tex3,texcoord3),blend2);
			}
			else if ( min(texcoord3.s,texcoord3.t) > 0.0 && max(texcoord3.s,texcoord3.t) < 1.0 )
			{
				currentlayer = mix(currentlayer,texture2D(tex3,texcoord3),blend2);
			}
		}

		if ( param[2][3] == 1.0 ) // layer 3 color input
			currentlayer = mix(currentlayer,color3,blend3);
		else if ( param[2][3] >= 2.0 )
		{
			if ( param[3][0] == 1.0 )	// repeatable
			{
				currentlayer = mix(currentlayer,texture2D(tex5,texcoord5),blend3);
			}
			else if ( min(texcoord5.s,texcoord5.t) > 0.0 && max(texcoord5.s,texcoord5.t) < 1.0 )
			{
				currentlayer = mix(currentlayer,texture2D(tex5,texcoord5),blend3);
			}
		}

		gl_FragColor = currentlayer * diffuse + ambspecular;		// apply lighting
	}
}

float getblend(in float blendmode, in float constvalue,in int layer,in bool isimagerepeat,in bool isblendrepeat,in float usealpha)
{
	float weight = 0.0;

	if (blendmode == 1.0)		// Use constant value
	{
		weight = constvalue;
	}
	else if (blendmode == 2.0)	// Use black and white texture (will use the Red channel)
	{
		if ( layer == 1 )
		{
			if (isblendrepeat == true)
				weight = texture2D(tex2,texcoord2).r;
			else if ( min(texcoord2.s,texcoord2.t) > 0.0 && max(texcoord2.s,texcoord2.t) < 1.0 )
				weight = texture2D(tex2,texcoord2).r;
		}
		else if ( layer == 2 )
		{
			if (isblendrepeat == true)
				weight = texture2D(tex4,texcoord4).r;
			else if ( min(texcoord4.s,texcoord4.t) > 0.0 && max(texcoord4.s,texcoord4.t) < 1.0 )
				weight = texture2D(tex4,texcoord4).r;
		}
		else
		{
			if (isblendrepeat == true)
				weight = texture2D(tex6,texcoord6).r;
			else if ( min(texcoord6.s,texcoord6.t) > 0.0 && max(texcoord6.s,texcoord6.t) < 1.0 )
				weight = texture2D(tex6,texcoord6).r;
		}
	}
	else if (blendmode == 3.0)		// Use 1st vertex color map Red channel
	{
		weight = vertexcolor1.r;
	}
	else if (blendmode == 4.0)		// Use 1st vertex color map Green channel
	{
		weight = vertexcolor1.g;
	}
	else if (blendmode == 5.0)		// Use 1st vertex color map Blue channel
	{
		weight = vertexcolor1.b;
	}
	else if (blendmode == 6.0)		// Use 1st vertex color map Alpha channel
	{
		weight = vertexcolor1.a;
	}
	else if (blendmode == 7.0)		// Use 2nd vertex color map Red channel
	{
		weight = vertexcolor2.r;
	}
	else if (blendmode == 8.0)		// Use 2nd vertex color map Green channel
	{
		weight = vertexcolor2.g;
	}
	else if (blendmode == 9.0)		// Use 2nd vertex color map Blue channel
	{
		weight = vertexcolor2.b;
	}
	else				// Use 2nd vertex color map Alpha channel
	{
		weight = vertexcolor2.a;
	}


	if ( usealpha == 3.0 )		// Use alpha channel
	{
		if ( layer == 1 )
		{
			if (isimagerepeat == true)
				weight *= texture2D(tex1,texcoord1).a;
			else if ( min(texcoord1.s,texcoord1.t) > 0.0 && max(texcoord1.s,texcoord1.t) < 1.0 )
				weight *= texture2D(tex1,texcoord1).a;
			else
				weight = 0.0;
		}
		else if ( layer == 2 )
		{
			if (isimagerepeat == true)
				weight *= texture2D(tex3,texcoord3).a;
			else if ( min(texcoord3.s,texcoord3.t) > 0.0 && max(texcoord3.s,texcoord3.t) < 1.0 )
				weight *= texture2D(tex3,texcoord3).a;
			else
				weight = 0.0;
		}
		else
		{
			if (isimagerepeat == true)
				weight *= texture2D(tex5,texcoord5).a;
			else if ( min(gl_TexCoord[5].s,texcoord5.t) > 0.0 && max(texcoord5.s,texcoord5.t) < 1.0 )
				weight *= texture2D(tex5,texcoord5).a;
			else
				weight = 0.0;
		}
	}

	return(weight);
}]]></param>
				<param name="HWMapping" type="8" ><![CDATA[PointPosition,position.xyz,PointNormal,normal.xyz,Vertex_Color,color0.rgba,Vertex_Color1,color1.rgba,[OGL13Texture.tspace_id],texcoord0.xyz,[OGL13Texture1.tspace_id],texcoord1.xyz,[OGL13Texture2.tspace_id],texcoord2.xyz,[OGL13Texture3.tspace_id],texcoord3.xyz,[OGL13Texture4.tspace_id],texcoord4.xyz,[OGL13Texture5.tspace_id],texcoord5.xyz,[OGL13Texture6.tspace_id],texcoord6.xyz]]></param>
				<param name="PointSprites" type="11" value="false"></param>
				<param name="Blending" type="11" value="false"></param>
				<param name="AlphaTest" type="11" value="false"></param>
				<param name="AlphaRef" type="4" value="0.000000"></param>
				<datablob category="ui_infos">
					<prop name="posx">160</prop>
					<prop name="posy">164</prop>
					<prop name="state">ConnectedOnly</prop>
				</datablob>
				<comment type="node" state="maximized" wordwrap="true" autoresize="true" background="0" background_alpha="0.000000" title="16760576" title_text="0" offsetx="6" offsety="-37" sizex="72" sizey="19"><![CDATA[Shader code]]></comment>
			</node>
			<node type="shader" progid="Softimage.GLSLUniform.1.0" index="8">
				<param name="Name" type="31" ><![CDATA[GLSL_Uniform]]></param>
				<param name="Variable" type="8" ><![CDATA[display]]></param>
				<param name="UniformType" type="3" value="3"></param>
				<param name="element0" type="4" value="0.000000"></param>
				<param name="element1" type="4" value="1.000000"></param>
				<param name="element2" type="4" value="50.000000"></param>
				<param name="element3" type="4" value="1.000000"></param>
				<param name="element4" type="4" value="0.000000"></param>
				<param name="element5" type="4" value="0.000000"></param>
				<param name="element6" type="4" value="0.000000"></param>
				<param name="element7" type="4" value="0.000000"></param>
				<param name="element8" type="4" value="0.000000"></param>
				<param name="element9" type="4" value="0.000000"></param>
				<param name="element10" type="4" value="0.000000"></param>
				<param name="element11" type="4" value="0.000000"></param>
				<param name="element12" type="4" value="0.000000"></param>
				<param name="element13" type="4" value="0.000000"></param>
				<param name="element14" type="4" value="0.000000"></param>
				<param name="element15" type="4" value="0.000000"></param>
				<param name="UniformSource" type="3" value="0"></param>
				<param name="ICEAttribute" type="3" value="-1"></param>
				<datablob category="ui_infos">
					<prop name="posx">-158</prop>
					<prop name="posy">-281</prop>
					<prop name="state">ConnectedOnly</prop>
				</datablob>
				<comment type="node" state="maximized" wordwrap="true" autoresize="true" background="0" background_alpha="0.000000" title="16760576" title_text="0" offsetx="-17" offsety="-37" sizex="104" sizey="19"><![CDATA[Display parameters]]></comment>
			</node>
			<node type="shader" progid="Softimage.GLSLUniform.1.0" index="9">
				<param name="Name" type="31" ><![CDATA[GLSL_Uniform1]]></param>
				<param name="Variable" type="8" ><![CDATA[color0]]></param>
				<param name="UniformType" type="3" value="4"></param>
				<param name="element0" type="4" value="0.500000"></param>
				<param name="element1" type="4" value="0.500000"></param>
				<param name="element2" type="4" value="0.500000"></param>
				<param name="element3" type="4" value="1.000000"></param>
				<param name="element1" type="4" value="0.500000"></param>
				<param name="element2" type="4" value="0.500000"></param>
				<param name="element3" type="4" value="1.000000"></param>
				<param name="element4" type="4" value="0.000000"></param>
				<param name="element5" type="4" value="0.000000"></param>
				<param name="element6" type="4" value="0.000000"></param>
				<param name="element7" type="4" value="0.000000"></param>
				<param name="element8" type="4" value="0.000000"></param>
				<param name="element9" type="4" value="0.000000"></param>
				<param name="element10" type="4" value="0.000000"></param>
				<param name="element11" type="4" value="0.000000"></param>
				<param name="element12" type="4" value="0.000000"></param>
				<param name="element13" type="4" value="0.000000"></param>
				<param name="element14" type="4" value="0.000000"></param>
				<param name="element15" type="4" value="0.000000"></param>
				<param name="UniformSource" type="3" value="0"></param>
				<param name="ICEAttribute" type="3" value="-1"></param>
				<datablob category="ui_infos">
					<prop name="posx">-146</prop>
					<prop name="posy">-30</prop>
					<prop name="state">ConnectedOnly</prop>
				</datablob>
			</node>
			<node type="shader" progid="Softimage.GLSLUniform.1.0" index="10">
				<param name="Name" type="31" ><![CDATA[GLSL_Uniform2]]></param>
				<param name="Variable" type="8" ><![CDATA[color1]]></param>
				<param name="UniformType" type="3" value="4"></param>
				<param name="element0" type="4" value="0.500000"></param>
				<param name="element1" type="4" value="0.500000"></param>
				<param name="element2" type="4" value="0.500000"></param>
				<param name="element3" type="4" value="1.000000"></param>
				<param name="element1" type="4" value="0.500000"></param>
				<param name="element2" type="4" value="0.500000"></param>
				<param name="element3" type="4" value="1.000000"></param>
				<param name="element4" type="4" value="0.000000"></param>
				<param name="element5" type="4" value="0.000000"></param>
				<param name="element6" type="4" value="0.000000"></param>
				<param name="element7" type="4" value="0.000000"></param>
				<param name="element8" type="4" value="0.000000"></param>
				<param name="element9" type="4" value="0.000000"></param>
				<param name="element10" type="4" value="0.000000"></param>
				<param name="element11" type="4" value="0.000000"></param>
				<param name="element12" type="4" value="0.000000"></param>
				<param name="element13" type="4" value="0.000000"></param>
				<param name="element14" type="4" value="0.000000"></param>
				<param name="element15" type="4" value="0.000000"></param>
				<param name="UniformSource" type="3" value="0"></param>
				<param name="ICEAttribute" type="3" value="-1"></param>
				<datablob category="ui_infos">
					<prop name="posx">-147</prop>
					<prop name="posy">149</prop>
					<prop name="state">ConnectedOnly</prop>
				</datablob>
			</node>
			<node type="shader" progid="Softimage.GLSLUniform.1.0" index="11">
				<param name="Name" type="31" ><![CDATA[GLSL_Uniform3]]></param>
				<param name="Variable" type="8" ><![CDATA[color2]]></param>
				<param name="UniformType" type="3" value="4"></param>
				<param name="element0" type="4" value="0.500000"></param>
				<param name="element1" type="4" value="0.500000"></param>
				<param name="element2" type="4" value="0.500000"></param>
				<param name="element3" type="4" value="1.000000"></param>
				<param name="element1" type="4" value="0.500000"></param>
				<param name="element2" type="4" value="0.500000"></param>
				<param name="element3" type="4" value="1.000000"></param>
				<param name="element4" type="4" value="0.000000"></param>
				<param name="element5" type="4" value="0.000000"></param>
				<param name="element6" type="4" value="0.000000"></param>
				<param name="element7" type="4" value="0.000000"></param>
				<param name="element8" type="4" value="0.000000"></param>
				<param name="element9" type="4" value="0.000000"></param>
				<param name="element10" type="4" value="0.000000"></param>
				<param name="element11" type="4" value="0.000000"></param>
				<param name="element12" type="4" value="0.000000"></param>
				<param name="element13" type="4" value="0.000000"></param>
				<param name="element14" type="4" value="0.000000"></param>
				<param name="element15" type="4" value="0.000000"></param>
				<param name="UniformSource" type="3" value="0"></param>
				<param name="ICEAttribute" type="3" value="-1"></param>
				<datablob category="ui_infos">
					<prop name="posx">-145</prop>
					<prop name="posy">411</prop>
					<prop name="state">ConnectedOnly</prop>
				</datablob>
			</node>
			<node type="shader" progid="Softimage.GLSLUniform.1.0" index="12">
				<param name="Name" type="31" ><![CDATA[GLSL_Uniform4]]></param>
				<param name="Variable" type="8" ><![CDATA[color3]]></param>
				<param name="UniformType" type="3" value="4"></param>
				<param name="element0" type="4" value="0.500000"></param>
				<param name="element1" type="4" value="0.500000"></param>
				<param name="element2" type="4" value="0.500000"></param>
				<param name="element3" type="4" value="1.000000"></param>
				<param name="element1" type="4" value="0.500000"></param>
				<param name="element2" type="4" value="0.500000"></param>
				<param name="element3" type="4" value="1.000000"></param>
				<param name="element4" type="4" value="0.000000"></param>
				<param name="element5" type="4" value="0.000000"></param>
				<param name="element6" type="4" value="0.000000"></param>
				<param name="element7" type="4" value="0.000000"></param>
				<param name="element8" type="4" value="0.000000"></param>
				<param name="element9" type="4" value="0.000000"></param>
				<param name="element10" type="4" value="0.000000"></param>
				<param name="element11" type="4" value="0.000000"></param>
				<param name="element12" type="4" value="0.000000"></param>
				<param name="element13" type="4" value="0.000000"></param>
				<param name="element14" type="4" value="0.000000"></param>
				<param name="element15" type="4" value="0.000000"></param>
				<param name="UniformSource" type="3" value="0"></param>
				<param name="ICEAttribute" type="3" value="-1"></param>
				<datablob category="ui_infos">
					<prop name="posx">-140</prop>
					<prop name="posy">673</prop>
					<prop name="state">ConnectedOnly</prop>
				</datablob>
			</node>
			<node type="shader" progid="Softimage.GLSLUniform.1.0" index="13">
				<param name="Name" type="31" ><![CDATA[GLSL_Uniform9]]></param>
				<param name="Variable" type="8" ><![CDATA[base]]></param>
				<param name="UniformType" type="3" value="2"></param>
				<param name="element0" type="4" value="0.000000"></param>
				<param name="element1" type="4" value="1.000000"></param>
				<param name="element2" type="4" value="1.000000"></param>
				<param name="element3" type="4" value="0.000000"></param>
				<param name="element4" type="4" value="0.000000"></param>
				<param name="element5" type="4" value="0.000000"></param>
				<param name="element6" type="4" value="0.000000"></param>
				<param name="element7" type="4" value="0.000000"></param>
				<param name="element8" type="4" value="0.000000"></param>
				<param name="element9" type="4" value="0.000000"></param>
				<param name="element10" type="4" value="0.000000"></param>
				<param name="element11" type="4" value="0.000000"></param>
				<param name="element12" type="4" value="0.000000"></param>
				<param name="element13" type="4" value="0.000000"></param>
				<param name="element14" type="4" value="0.000000"></param>
				<param name="element15" type="4" value="0.000000"></param>
				<param name="UniformSource" type="3" value="0"></param>
				<param name="ICEAttribute" type="3" value="-1"></param>
				<datablob category="ui_infos">
					<prop name="posx">-144</prop>
					<prop name="posy">-94</prop>
					<prop name="state">ConnectedOnly</prop>
				</datablob>
			</node>
			<node type="shader" progid="Softimage.GLSLUniform.1.0" index="14">
				<param name="Name" type="31" ><![CDATA[GLSL_Uniform10]]></param>
				<param name="Variable" type="8" ><![CDATA[param]]></param>
				<param name="UniformType" type="3" value="5"></param>
				<param name="element0" type="4" value="0.000000"></param>
				<param name="element1" type="4" value="0.000000"></param>
				<param name="element2" type="4" value="1.000000"></param>
				<param name="element3" type="4" value="1.000000"></param>
				<param name="element4" type="4" value="0.500000"></param>
				<param name="element5" type="4" value="1.000000"></param>
				<param name="element6" type="4" value="0.000000"></param>
				<param name="element7" type="4" value="1.000000"></param>
				<param name="element8" type="4" value="1.000000"></param>
				<param name="element9" type="4" value="0.500000"></param>
				<param name="element10" type="4" value="1.000000"></param>
				<param name="element11" type="4" value="0.000000"></param>
				<param name="element12" type="4" value="1.000000"></param>
				<param name="element13" type="4" value="1.000000"></param>
				<param name="element14" type="4" value="0.500000"></param>
				<param name="element15" type="4" value="1.000000"></param>
				<param name="UniformSource" type="3" value="0"></param>
				<param name="ICEAttribute" type="3" value="-1"></param>
				<datablob category="ui_infos">
					<prop name="posx">-162</prop>
					<prop name="posy">-185</prop>
					<prop name="state">ConnectedOnly</prop>
				</datablob>
				<comment type="node" state="maximized" wordwrap="true" autoresize="true" background="0" background_alpha="0.000000" title="16760576" title_text="0" offsetx="5" offsety="-23" sizex="102" sizey="19"><![CDATA[Layers parameters]]></comment>
			</node>
			<comment type="group" state="maximized" wordwrap="false" autoresize="false" background="0" background_alpha="0.000000" title="33023" title_text="0" offsetx="-163" offsety="-119" sizex="166" sizey="237"><![CDATA[Base Layer]]></comment>
			<comment type="group" state="maximized" wordwrap="false" autoresize="false" background="0" background_alpha="0.000000" title="33023" title_text="0" offsetx="-167" offsety="124" sizex="174" sizey="247"><![CDATA[Layer 1]]></comment>
			<comment type="group" state="maximized" wordwrap="false" autoresize="false" background="0" background_alpha="0.000000" title="33023" title_text="0" offsetx="-158" offsety="377" sizex="168" sizey="263"><![CDATA[Layer 2]]></comment>
			<comment type="group" state="maximized" wordwrap="false" autoresize="false" background="0" background_alpha="0.000000" title="33023" title_text="0" offsetx="-150" offsety="648" sizex="165" sizey="258"><![CDATA[Layer 3]]></comment>
		</nodes>
		<connections>
			<cnx from_node="0" from_port="out" to_node="7" to_port="previous4"> </cnx>
			<cnx from_node="1" from_port="out" to_node="7" to_port="previous6"> </cnx>
			<cnx from_node="2" from_port="out" to_node="7" to_port="previous7"> </cnx>
			<cnx from_node="3" from_port="out" to_node="7" to_port="previous9"> </cnx>
			<cnx from_node="4" from_port="out" to_node="7" to_port="previous13"> </cnx>
			<cnx from_node="5" from_port="out" to_node="7" to_port="previous10"> </cnx>
			<cnx from_node="6" from_port="out" to_node="7" to_port="previous12"> </cnx>
			<cnx from_node="8" from_port="out" to_node="7" to_port="previous"> </cnx>
			<cnx from_node="9" from_port="out" to_node="7" to_port="previous3"> </cnx>
			<cnx from_node="10" from_port="out" to_node="7" to_port="previous5"> </cnx>
			<cnx from_node="11" from_port="out" to_node="7" to_port="previous8"> </cnx>
			<cnx from_node="12" from_port="out" to_node="7" to_port="previous11"> </cnx>
			<cnx from_node="13" from_port="out" to_node="7" to_port="previous2"> </cnx>
			<cnx from_node="14" from_port="out" to_node="7" to_port="previous1"> </cnx>
		</connections>
		<exposed_ports>
			<port index="8" portname="element1" username="display" displayname="Display Mode"></port>
			<port index="8" portname="element3" username="specular" displayname="Specular"></port>
			<port index="8" portname="element2" username="shininess" displayname="Specular Decay"></port>
			<port index="13" portname="element1" username="input0" displayname="Input"></port>
			<port index="9" portname="element0" username="color0" displayname="Base Color"></port>
			<port index="0" portname="Texture" username="image0" displayname="Base Texture"></port>
			<port index="13" portname="element2" username="tile0" displayname="Tileable"></port>
			<port index="0" portname="tspace_id" username="tspace_id0" displayname="Texture Space"></port>
			<port index="14" portname="element1" username="input1" displayname="Input"></port>
			<port index="10" portname="element0" username="color1" displayname="Color"></port>
			<port index="1" portname="Texture" username="image1" displayname="Image"></port>
			<port index="14" portname="element2" username="tile1" displayname="Tileable"></port>
			<port index="1" portname="tspace_id" username="tspace_id1" displayname="Texture Space"></port>
			<port index="14" portname="element3" username="blend1" displayname="Blend Using"></port>
			<port index="14" portname="element4" username="const1" displayname="Constant"></port>
			<port index="2" portname="Texture" username="blendimage1" displayname="Blend Image"></port>
			<port index="14" portname="element5" username="tileimage1" displayname="Tileable"></port>
			<port index="2" portname="tspace_id" username="blendtspace_id1" displayname="Texture Space"></port>
			<port index="14" portname="element6" username="input2" displayname="Input"></port>
			<port index="11" portname="element0" username="color2" displayname="Color"></port>
			<port index="3" portname="Texture" username="image2" displayname="Image"></port>
			<port index="14" portname="element7" username="tile2" displayname="Tileable"></port>
			<port index="3" portname="tspace_id" username="tspace_id2" displayname="Texture Space"></port>
			<port index="14" portname="element8" username="blend2" displayname="Blend Using"></port>
			<port index="14" portname="element9" username="const2" displayname="Constant"></port>
			<port index="5" portname="Texture" username="blendimage2" displayname="Blend Image"></port>
			<port index="14" portname="element10" username="tileimage2" displayname="Tileable"></port>
			<port index="5" portname="tspace_id" username="blendtspace_id2" displayname="Texture Space"></port>
			<port index="14" portname="element11" username="input3" displayname="Input"></port>
			<port index="12" portname="element0" username="color3" displayname="Color"></port>
			<port index="6" portname="Texture" username="image3" displayname="Image"></port>
			<port index="14" portname="element12" username="tile3" displayname="Tileable"></port>
			<port index="6" portname="tspace_id" username="tspace_id3" displayname="Texture Space"></port>
			<port index="14" portname="element13" username="blend3" displayname="Blend Using"></port>
			<port index="14" portname="element14" username="const3" displayname="Constant"></port>
			<port index="4" portname="Texture" username="blendimage3" displayname="Blend Image"></port>
			<port index="14" portname="element15" username="tileimage3" displayname="Tileable"></port>
			<port index="4" portname="tspace_id" username="blendtspace_id3" displayname="Texture Space"></port>
			<port index="7" portname="out" username="Realtime" displayname="Realtime"></port>
		</exposed_ports>
		<layout>
			<item type="input" name="display" min="-100" max="100" ppgvis="1" ppggroup="Display" portvis="0">
				<enum string="Textured" value="1"> </enum>
				<enum string="Textured Decal" value="2"> </enum>
				<enum string="Weights" value="0"> </enum>
			</item>
			<item type="input" name="specular" min="-100" max="100" ppgvis="1" ppggroup="Display" portvis="0">
				<enum string="Yes" value="1"> </enum>
				<enum string="No" value="0"> </enum>
			</item>
			<item type="input" name="shininess" min="0.001" max="100" ppgvis="1" ppggroup="Display" portvis="0"> </item>
			<item type="input" name="input0" min="-100" max="100" ppgvis="1" ppggroup="Base Layer" portvis="0">
				<enum string="Color" value="1"> </enum>
				<enum string="Texture" value="2"> </enum>
			</item>
			<item type="input" name="color0" ppgvis="1" ppggroup="Base Layer" portvis="0"> </item>
			<item type="input" name="image0" ppgvis="1" ppggroup="Base Layer" portvis="1" portgroup="Base Layer"> </item>
			<item type="input" name="tile0" min="-100" max="100" ppgvis="1" ppggroup="Base Layer" portvis="0">
				<enum string="Yes" value="1"> </enum>
				<enum string="No" value="0"> </enum>
			</item>
			<item type="input" name="tspace_id0" min="-2147483648" max="2147483647" ppgvis="1" ppggroup="Base Layer" portvis="0"> </item>
			<item type="input" name="input1" min="-100" max="100" ppgvis="1" ppggroup="Layer 1" portvis="0">
				<enum string="Not In Use" value="0"> </enum>
				<enum string="Color" value="1"> </enum>
				<enum string="Texture" value="2"> </enum>
				<enum string="Texture With Alpha" value="3"> </enum>
			</item>
			<item type="input" name="color1" ppgvis="1" ppggroup="Layer 1" portvis="0"> </item>
			<item type="input" name="image1" ppgvis="1" ppggroup="Layer 1" portvis="1" portgroup="Layer 1"> </item>
			<item type="input" name="tile1" min="-100" max="100" ppgvis="1" ppggroup="Layer 1" portvis="0">
				<enum string="Yes" value="1"> </enum>
				<enum string="No" value="0"> </enum>
			</item>
			<item type="input" name="tspace_id1" min="-2147483648" max="2147483647" ppgvis="1" ppggroup="Layer 1" portvis="0"> </item>
			<item type="input" name="blend1" min="-100" max="100" ppgvis="1" ppggroup="Layer 1" portvis="0">
				<enum string="Constant Value" value="1"> </enum>
				<enum string="Texture" value="2"> </enum>
				<enum string="Vertex Color Red Channel" value="3"> </enum>
				<enum string="Vertex Color Green Channel" value="4"> </enum>
				<enum string="Vertex Color Blue Channel" value="5"> </enum>
				<enum string="Vertex Color Alpha Channel" value="6"> </enum>
				<enum string="Vertex Color 1 Red Channel" value="7"> </enum>
				<enum string="Vertex Color 1 Green Channel" value="8"> </enum>
				<enum string="Vertex Color 1 Blue Channel" value="9"> </enum>
				<enum string="Vertex Color 1 Alpha Channel" value="10"> </enum>
			</item>
			<item type="input" name="const1" min="0" max="1" ppgvis="1" ppggroup="Layer 1" portvis="0"> </item>
			<item type="input" name="blendimage1" ppgvis="1" ppggroup="Layer 1" portvis="1" portgroup="Layer 1"> </item>
			<item type="input" name="tileimage1" min="-100" max="100" ppgvis="1" ppggroup="Layer 1" portvis="0">
				<enum string="Yes" value="1"> </enum>
				<enum string="No" value="0"> </enum>
			</item>
			<item type="input" name="blendtspace_id1" min="-2147483648" max="2147483647" ppgvis="1" ppggroup="Layer 1" portvis="0" portgroup="Layer 1"> </item>
			<item type="input" name="input2" min="-100" max="100" ppgvis="1" ppggroup="Layer 2" portvis="0">
				<enum string="Not In Use" value="0"> </enum>
				<enum string="Color" value="1"> </enum>
				<enum string="Texture" value="2"> </enum>
				<enum string="Texture With Alpha" value="3"> </enum>
			</item>
			<item type="input" name="color2" ppgvis="1" ppggroup="Layer 2" portvis="0"> </item>
			<item type="input" name="image2" ppgvis="1" ppggroup="Layer 2" portvis="1" portgroup="Layer 2"> </item>
			<item type="input" name="tile2" min="-100" max="100" ppgvis="1" ppggroup="Layer 2" portvis="0">
				<enum string="Yes" value="1"> </enum>
				<enum string="No" value="0"> </enum>
			</item>
			<item type="input" name="tspace_id2" min="-2147483648" max="2147483647" ppgvis="1" ppggroup="Layer 2" portvis="0"> </item>
			<item type="input" name="blend2" min="-100" max="100" ppgvis="1" ppggroup="Layer 2" portvis="0">
				<enum string="Constant Value" value="1"> </enum>
				<enum string="Texture" value="2"> </enum>
				<enum string="Vertex Color Red Channel" value="3"> </enum>
				<enum string="Vertex Color Green Channel" value="4"> </enum>
				<enum string="Vertex Color Blue Channel" value="5"> </enum>
				<enum string="Vertex Color Alpha Channel" value="6"> </enum>
				<enum string="Vertex Color 1 Red Channel" value="7"> </enum>
				<enum string="Vertex Color 1 Green Channel" value="8"> </enum>
				<enum string="Vertex Color 1 Blue Channel" value="9"> </enum>
				<enum string="Vertex Color 1 Alpha Channel" value="10"> </enum>
			</item>
			<item type="input" name="const2" min="0" max="1" ppgvis="1" ppggroup="Layer 2" portvis="0"> </item>
			<item type="input" name="blendimage2" ppgvis="1" ppggroup="Layer 2" portvis="1" portgroup="Layer 2"> </item>
			<item type="input" name="tileimage2" min="-100" max="100" ppgvis="1" ppggroup="Layer 2" portvis="0">
				<enum string="Yes" value="1"> </enum>
				<enum string="No" value="0"> </enum>
			</item>
			<item type="input" name="blendtspace_id2" min="-2147483648" max="2147483647" ppgvis="1" ppggroup="Layer 2" portvis="0"> </item>
			<item type="input" name="input3" min="-100" max="100" ppgvis="1" ppggroup="Layer 3" portvis="0">
				<enum string="Not In Use" value="0"> </enum>
				<enum string="Color" value="1"> </enum>
				<enum string="Texture" value="2"> </enum>
				<enum string="Texture With Alpha" value="3"> </enum>
			</item>
			<item type="input" name="color3" ppgvis="1" ppggroup="Layer 3" portvis="0"> </item>
			<item type="input" name="image3" ppgvis="1" ppggroup="Layer 3" portvis="1" portgroup="Layer 3"> </item>
			<item type="input" name="tile3" min="-100" max="100" ppgvis="1" ppggroup="Layer 3" portvis="0">
				<enum string="Yes" value="1"> </enum>
				<enum string="No" value="0"> </enum>
			</item>
			<item type="input" name="tspace_id3" min="-2147483648" max="2147483647" ppgvis="1" ppggroup="Layer 3" portvis="0"> </item>
			<item type="input" name="blend3" min="-100" max="100" ppgvis="1" ppggroup="Layer 3" portvis="0">
				<enum string="Constant Value" value="1"> </enum>
				<enum string="Texture" value="2"> </enum>
				<enum string="Vertex Color Red Channel" value="3"> </enum>
				<enum string="Vertex Color Green Channel" value="4"> </enum>
				<enum string="Vertex Color Blue Channel" value="5"> </enum>
				<enum string="Vertex Color Alpha Channel" value="6"> </enum>
				<enum string="Vertex Color 1 Red Channel" value="7"> </enum>
				<enum string="Vertex Color 1 Green Channel" value="8"> </enum>
				<enum string="Vertex Color 1 Blue Channel" value="9"> </enum>
				<enum string="Vertex Color 1 Alpha Channel" value="10"> </enum>
			</item>
			<item type="input" name="const3" min="0" max="1" ppgvis="1" ppggroup="Layer 3" portvis="0"> </item>
			<item type="input" name="blendimage3" ppgvis="1" ppggroup="Layer 3" portvis="1" portgroup="Layer 3"> </item>
			<item type="input" name="tileimage3" min="-100" max="100" ppgvis="1" ppggroup="Layer 3" portvis="0">
				<enum string="Yes" value="1"> </enum>
				<enum string="No" value="0"> </enum>
			</item>
			<item type="input" name="blendtspace_id3" min="-2147483648" max="2147483647" ppgvis="1" ppggroup="Layer 3" portvis="0"> </item>
			<item type="output" name="Realtime" ppgvis="1" portvis="1"> </item>
		</layout>
		<ppglogic lang=""><![CDATA[]]></ppglogic>
	</definition>
</xsi_file>
