Index: data/branches/Shader_HS18/programs/Example/GLSL/AmbientOneTexture.glsl
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL/AmbientOneTexture.glsl	(revision 12091)
+++ 	(revision )
@@ -1,13 +1,0 @@
-uniform vec4 ambient;
-
-/*
-  Basic ambient lighting vertex program
-*/
-void main()
-{
-	gl_Position = ftransform();
-	gl_TexCoord[0] = gl_MultiTexCoord0;
-	gl_FrontColor = ambient;
-}
-
-
Index: data/branches/Shader_HS18/programs/Example/GLSL/Bloom2_ps20.glsl
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL/Bloom2_ps20.glsl	(revision 12091)
+++ 	(revision )
@@ -1,27 +1,0 @@
-//-------------------------------
-//Bloom_ps20.glsl
-// Blends using weights the blurred image with the sharp one
-// Params:
-//   OriginalImageWeight
-//   BlurWeight
-//-------------------------------
-
-uniform sampler2D RT;
-uniform sampler2D Blur1;
-
-uniform float OriginalImageWeight;
-uniform float BlurWeight;
-
-void main()
-{
-    vec4 sharp;
-    vec4 blur;
-    
-    vec2 texCoord = vec2( gl_TexCoord[0] );
-
-    sharp = texture2D( RT, texCoord);
-    blur = texture2D( Blur1, texCoord);
-    
-    gl_FragColor = ( (blur * BlurWeight) + (sharp * OriginalImageWeight) );
-    //gl_FragColor = vec4(0);
-}
Index: data/branches/Shader_HS18/programs/Example/GLSL/Blur0_vs.glsl
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL/Blur0_vs.glsl	(revision 12091)
+++ 	(revision )
@@ -1,16 +1,0 @@
-varying vec2 texCoord[5];
-uniform mat4 worldViewProj;
-attribute vec2 uv0;
-
-void main()                    
-{
-	gl_Position = worlViewProj * gl_Vertex;
-	
-	texCoord[0]  = uv0;
-	
-	const float size = 0.01;
-	texCoord[1] = texCoord[0] + vec2(1.0, 0.0)*size;
-	texCoord[2] = texCoord[0] + vec2(2.0, 0.0)*size;
-	texCoord[3] = texCoord[0] + vec2(-1.0, 0.0)*size;
-	texCoord[4] = texCoord[0] + vec2(-2.0, 0.0)*size;
-}
Index: data/branches/Shader_HS18/programs/Example/GLSL/Blur1_vs.glsl
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL/Blur1_vs.glsl	(revision 12091)
+++ 	(revision )
@@ -1,16 +1,0 @@
-varying vec2 texCoord[5];
-attribute vec2 uv0;
-uniform mat4 worldViewProj;
-
-void main()                    
-{
-	gl_Position = worldViewProj * gl_Vertex;
-	
-	texCoord[0]  = uv0;
-	
-	const float size = 0.01;
-	texCoord[1] = texCoord[0] + vec2(0.0, 1.0)*size;
-	texCoord[2] = texCoord[0] + vec2(0.0, 2.0)*size;
-	texCoord[3] = texCoord[0] + vec2(0.0, -1.0)*size;
-	texCoord[4] = texCoord[0] + vec2(0.0, -2.0)*size;
-}
Index: data/branches/Shader_HS18/programs/Example/GLSL/BlurH_ps20.glsl
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL/BlurH_ps20.glsl	(revision 12091)
+++ 	(revision )
@@ -1,57 +1,0 @@
-//-------------------------------
-//BlurH_ps20.glsl
-// Horizontal Gaussian-Blur pass
-//-------------------------------
-#version 120
-
-uniform sampler2D Blur0;
-vec2 pos[11] = vec2[11]
-(
-	vec2( -5, 0),
-	vec2( -4, 0),
-	vec2( -3, 0),
-	vec2( -2, 0),
-	vec2( -1, 0),
-	vec2( 0, 0),
-	vec2( 1, 0),
-	vec2( 2, 0),
-	vec2( 3, 0),
-	vec2( 4, 0),
-	vec2( 5, 0)
-);
-
-//We use the Normal-gauss distribution formula
-//f(x) being the formula, we used f(0.5)-f(-0.5); f(1.5)-f(0.5)...
-float samples[11] = float[11]
-(//stddev=2.0
-0.01222447,
-0.02783468,
-0.06559061,
-0.12097757,
-0.17466632,
-
-0.19741265,
-
-0.17466632,
-0.12097757,
-0.06559061,
-0.02783468,
-0.01222447
-);
-
-void main()
-{
-    vec4 retVal;
-    
-    vec4 sum;
-    vec2 texcoord = vec2( gl_TexCoord[0] );
-    int i = 0;
-
-    sum = vec4( 0 );
-    for( i=0;i < 11; i++ )
-    {
-        sum += texture2D( Blur0, texcoord + (pos[i] * 0.0100000) ) * samples[i];
-    }
-
-    gl_FragColor = sum;
-}
Index: data/branches/Shader_HS18/programs/Example/GLSL/BlurV_ps20.glsl
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL/BlurV_ps20.glsl	(revision 12091)
+++ 	(revision )
@@ -1,61 +1,0 @@
-// Note, this won't work on ATI which is why it's not used
-// the issue is with the array initializers
-// no card supports GL_3DL_array_objects but it does work on nvidia, not on ATI
-//#extension GL_3DL_array_objects : enable
-#version 120
-
-//-------------------------------
-//BlurV_ps20.glsl
-// Vertical Gaussian-Blur pass
-//-------------------------------
-
-uniform sampler2D Blur0;
-vec2 pos[11]  = vec2[11](
-	vec2(0.0, -5.0),
-	vec2(0.0, -4.0),
-	vec2(0.0, -3.0),
-	vec2(0.0, -2.0),
-	vec2(0.0, -1.0),
-	vec2(0.0, 0.0),
-	vec2(0.0, 1.0),
-	vec2(0.0, 2.0),
-	vec2(0.0, 3.0),
-	vec2(0.0, 4.0),
-	vec2(0.0, 5.0)
-);
-
-//We use the Normal-gauss distribution formula
-//f(x) being the formula, we used f(0.5)-f(-0.5); f(1.5)-f(0.5)...
-float samples[11] = float[11] 
-(//stddev=2.0
-0.01222447,
-0.02783468,
-0.06559061,
-0.12097757,
-0.17466632,
-
-0.19741265,
-
-0.17466632,
-0.12097757,
-0.06559061,
-0.02783468,
-0.01222447
-);
-
-void main()
-{
-    vec4 retVal;
-    
-    vec4 sum;
-    vec2 texcoord = vec2(gl_TexCoord[0]);
-    int i = 0;
-
-    sum = vec4( 0 );
-    for( ;i < 11; i++ )
-    {
-        sum += texture2D( Blur0, texcoord + (pos[i] * 0.0100000) ) * samples[i];
-    }
-
-    gl_FragColor = sum;
-}
Index: data/branches/Shader_HS18/programs/Example/GLSL/Blur_ps.glsl
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL/Blur_ps.glsl	(revision 12091)
+++ 	(revision )
@@ -1,14 +1,0 @@
-uniform sampler2D tex0;
-
-varying vec2 texCoord[5];
-
-void main()
-{
-	vec4 sum = texture2D(tex0, texCoord[0]) + 
-			   texture2D(tex0, texCoord[1]) +
-			   texture2D(tex0, texCoord[2]) + 
-			   texture2D(tex0, texCoord[3]) +
-			   texture2D(tex0, texCoord[4]);
-	gl_FragColor = sum / 5.0;
-}
-
Index: data/branches/Shader_HS18/programs/Example/GLSL/Blur_vs.glsl
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL/Blur_vs.glsl	(revision 12091)
+++ 	(revision )
@@ -1,15 +1,0 @@
-uniform mat4 worldViewProj;
-attribute vec2 uv0;
-
-void main()                    
-{
-	gl_Position = worldViewProj * gl_Vertex;
-
-	gl_TexCoord[0]  = vec4( uv0, 0, 0 );
-	
-	const float size = 0.01;
-	gl_TexCoord[1] = vec4( uv0 + vec2(0.0, 1.0)*size, 0, 0);
-	gl_TexCoord[2] = vec4( uv0  + vec2(0.0, 2.0)*size, 0, 0);
-	gl_TexCoord[3] = vec4( uv0  + vec2(0.0, -1.0)*size, 0, 0);
-	gl_TexCoord[4] = vec4( uv0  + vec2(0.0, -2.0)*size, 0, 0);
-}
Index: data/branches/Shader_HS18/programs/Example/GLSL/BrightBloom2_ps20.glsl
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL/BrightBloom2_ps20.glsl	(revision 12091)
+++ 	(revision )
@@ -1,29 +1,0 @@
-//-------------------------------
-//BrightBloom_ps20.glsl
-// High-pass filter for obtaining lumminance
-// We use an aproximation formula that is pretty fast:
-//   f(x) = ( -3 * ( x - 1 )^2 + 1 ) * 2
-//   Color += Grayscale( f(Color) ) + 0.6
-//
-// Special thanks to ATI for their great HLSL2GLSL utility
-//     http://sourceforge.net/projects/hlsl2glsl
-//-------------------------------
-
-uniform sampler2D RT;
-
-void main()
-{
-    vec4 tex;
-    vec4 bright4;
-    float bright;
-    
-    vec2 texCoord = vec2( gl_TexCoord[0] );
-
-    tex = texture2D( RT, texCoord);
-    tex -= 1.00000;
-    bright4 = -6.00000 * tex * tex + 2.00000;
-    bright = dot( bright4, vec4( 0.333333, 0.333333, 0.333333, 0.000000) );
-    tex += (bright + 0.600000);
-
-    gl_FragColor = tex;
-}
Index: data/branches/Shader_HS18/programs/Example/GLSL/DiffuseOneTexture.glsl
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL/DiffuseOneTexture.glsl	(revision 12091)
+++ 	(revision )
@@ -1,14 +1,0 @@
-#version 120
-
-uniform sampler2D texMap;
-
-varying vec4 colour;
-varying vec4 uv;
-
-/*
-  Basic fragment program using texture and diffuse colour.
-*/
-void main()
-{
-	gl_FragColor = texture2D(texMap, uv.xy) * colour;
-}
Index: data/branches/Shader_HS18/programs/Example/GLSL/DualQuaternion.glsl
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL/DualQuaternion.glsl	(revision 12091)
+++ 	(revision )
@@ -1,42 +1,0 @@
-#version 120
-
-mat2x4 blendTwoWeightsAntipod(vec4 blendWgt, vec4 blendIdx, vec4 dualQuaternions[24]);
-vec3 calculateBlendPosition(vec3 position, mat2x4 blendDQ);
-vec3 calculateBlendNormal(vec3 normal, mat2x4 blendDQ);
-
-uniform vec4 worldDualQuaternion2x4Array[24];
-uniform mat4 viewProjectionMatrix;
-uniform vec4   lightPos[2];
-uniform vec4   lightDiffuseColour[2];
-uniform vec4   ambient;
-
-attribute vec4 vertex;
-attribute vec3 normal;
-attribute vec4 blendIndices;
-attribute vec4 blendWeights;
-attribute vec4 uv0;
-
-void main()
-{	
-	mat2x4 blendDQ = blendTwoWeightsAntipod(blendWeights, blendIndices, worldDualQuaternion2x4Array);
-
-	float len = length(blendDQ[0]);
-	blendDQ /= len;
-
-	vec3 blendPosition = calculateBlendPosition(vertex.xyz, blendDQ);
-		
-	//No need to normalize, the magnitude of the normal is preserved because only rotation is performed
-	vec3 blendNormal = calculateBlendNormal(normal, blendDQ);
-	
-	gl_Position =  viewProjectionMatrix * vec4(blendPosition, 1.0);
-	
-	// Lighting - support point and directional
-	vec3 lightDir0 = normalize(lightPos[0].xyz - (blendPosition * lightPos[0].w));
-	vec3 lightDir1 = normalize(lightPos[1].xyz - (blendPosition * lightPos[1].w));
-
-	gl_TexCoord[0] = uv0;
-
-	gl_FrontColor = gl_FrontMaterial.diffuse * (ambient + (clamp(dot(lightDir0, blendNormal), 0.0, 1.0) * lightDiffuseColour[0]) + 
-		(clamp(dot(lightDir1, blendNormal), 0.0, 1.0) * lightDiffuseColour[1]));			
-}
-
Index: data/branches/Shader_HS18/programs/Example/GLSL/DualQuaternion_Common.glsl
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL/DualQuaternion_Common.glsl	(revision 12091)
+++ 	(revision )
@@ -1,70 +1,0 @@
-#version 120
-
-//All of these functions are based on dqs.cg from http://isg.cs.tcd.ie/kavanl/dq/
-/* dqs.cg
-
-  Dual quaternion skinning vertex shaders (no shading computations)
-
-  Version 1.0.3, November 1st, 2007
-
-  Copyright (C) 2006-2007 University of Dublin, Trinity College, All Rights 
-  Reserved
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the author(s) be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-
-  Author: Ladislav Kavan, kavanl@cs.tcd.ie
-
-*/
-
-mat2x4 blendTwoWeights(vec4 blendWgt, vec4 blendIdx, vec4 dualQuaternions[24])
-{
-	mat2x4 blendDQ = blendWgt.x*mat2x4(dualQuaternions[int(blendIdx.x) * 2], dualQuaternions[int(blendIdx.x) * 2 + 1]);
-	blendDQ += blendWgt.y*mat2x4(dualQuaternions[int(blendIdx.y) * 2], dualQuaternions[int(blendIdx.y) * 2 + 1]);
-
-	return blendDQ;
-}
-
-mat2x4 blendTwoWeightsAntipod(vec4 blendWgt, vec4 blendIdx, vec4 dualQuaternions[24])
-{
-	mat2x4 dq0 = mat2x4(dualQuaternions[int(blendIdx.x) * 2], dualQuaternions[int(blendIdx.x) * 2 + 1]);
-	mat2x4 dq1 = mat2x4(dualQuaternions[int(blendIdx.y) * 2], dualQuaternions[int(blendIdx.y) * 2 + 1]);
-
-	//Accurate antipodality handling. For speed increase, remove the following line, 
-	//though, the results will only be valid for rotations less than 180 degrees.
-	if (dot(dq0[0], dq1[0]) < 0.0) dq1 *= -1.0;
-	
-	mat2x4 blendDQ = blendWgt.x*dq0;
-	blendDQ += blendWgt.y*dq1;
-
-	return blendDQ;
-}
-
-vec3 calculateBlendPosition(vec3 position, mat2x4 blendDQ)
-{
-	vec3 blendPosition = position + 2.0*cross(blendDQ[0].yzw, cross(blendDQ[0].yzw, position) + blendDQ[0].x*position);
-	vec3 trans = 2.0*(blendDQ[0].x*blendDQ[1].yzw - blendDQ[1].x*blendDQ[0].yzw + cross(blendDQ[0].yzw, blendDQ[1].yzw));
-	blendPosition += trans;
-
-	return blendPosition;
-}
-
-vec3 calculateBlendNormal(vec3 normal, mat2x4 blendDQ)
-{
-	return normal + 2.0*cross(blendDQ[0].yzw, cross(blendDQ[0].yzw, normal) + blendDQ[0].x*normal);
-}
-
-
Index: data/branches/Shader_HS18/programs/Example/GLSL/DualQuaternion_ShadowCaster.glsl
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL/DualQuaternion_ShadowCaster.glsl	(revision 12091)
+++ 	(revision )
@@ -1,29 +1,0 @@
-#version 120
-
-mat2x4 blendTwoWeightsAntipod(vec4 blendWgt, vec4 blendIdx, vec4 dualQuaternions[24]);
-vec3 calculateBlendPosition(vec3 position, mat2x4 blendDQ);
-
-uniform vec4 worldDualQuaternion2x4Array[24];
-uniform mat4 viewProjectionMatrix;
-uniform vec4   ambient;
-
-attribute vec4 vertex;
-attribute vec4 blendIndices;
-attribute vec4 blendWeights;
-
-//Shadow caster pass
-void main()
-{
-	mat2x4 blendDQ = blendTwoWeightsAntipod(blendWeights, blendIndices, worldDualQuaternion2x4Array);
-
-	float len = length(blendDQ[0]);
-	blendDQ /= len;
-
-	vec3 blendPosition = calculateBlendPosition(vertex.xyz, blendDQ);
-
-	// view / projection
-	gl_Position = viewProjectionMatrix * vec4(blendPosition, 1.0);
-	
-	gl_FrontColor = ambient;
-}
-
Index: data/branches/Shader_HS18/programs/Example/GLSL/DualQuaternion_TwoPhase.glsl
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL/DualQuaternion_TwoPhase.glsl	(revision 12091)
+++ 	(revision )
@@ -1,77 +1,0 @@
-#version 120
-
-mat2x4 blendTwoWeightsAntipod(vec4 blendWgt, vec4 blendIdx, vec4 dualQuaternions[24]);
-vec3 calculateBlendPosition(vec3 position, mat2x4 blendDQ);
-vec3 calculateBlendNormal(vec3 normal, mat2x4 blendDQ);
-
-mat3 adjointTransposeMatrix(mat3 M)
-{
-	mat3 atM;
-	atM[0][0] = M[2][2] * M[1][1] - M[2][1] * M[1][2];
-	atM[1][0] = M[2][1] * M[0][2] - M[0][1] * M[2][2];
-	atM[2][0] = M[0][1] * M[1][2] - M[0][2] * M[1][1];
-
-	atM[0][1] = M[2][0] * M[1][2] - M[2][2] * M[1][0];
-	atM[1][1] = M[2][2] * M[0][0] - M[2][0] * M[0][2];
-	atM[2][1] = M[0][2] * M[1][0] - M[0][0] * M[1][2];
-
-	atM[0][2] = M[2][1] * M[1][0] - M[2][0] * M[1][1];
-	atM[1][2] = M[0][1] * M[2][0] - M[2][1] * M[0][0];
-	atM[2][2] = M[0][0] * M[1][1] - M[0][1] * M[1][0];
-
-	return atM;
-}
-
-uniform vec4 worldDualQuaternion2x4Array[24];
-uniform vec4 scaleM[72];
-uniform mat4 viewProjectionMatrix;
-uniform vec4   lightPos[2];
-uniform vec4   lightDiffuseColour[2];
-uniform vec4   ambient;
-
-attribute vec4 vertex;
-attribute vec3 normal;
-attribute vec4 blendIndices;
-attribute vec4 blendWeights;
-attribute vec4 uv0;
-
-void main()
-{	
-	//First phase - applies scaling and shearing:
-	int blendIndicesX = int(blendIndices.x) * 3;
-	int blendIndicesY = int(blendIndices.y) * 3;
-	
-	mat3x4 blendS = blendWeights.x*mat3x4(scaleM[blendIndicesX], 
-		scaleM[blendIndicesX + 1], scaleM[blendIndicesX + 2]);
-	
-	blendS += blendWeights.y*mat3x4(scaleM[blendIndicesY], 						scaleM[blendIndicesY + 1], scaleM[blendIndicesY + 2]);
-
-	mat4x3 blendF = transpose(blendS);
-
-	vec3 pass1_position = blendF * vertex;
-
-	mat3x3 blendSrotAT = adjointTransposeMatrix(mat3x3(blendF));
-	vec3 pass1_normal = normalize(blendSrotAT * normal);
-
-	//Second phase
-	mat2x4 blendDQ = blendTwoWeightsAntipod(blendWeights, blendIndices, worldDualQuaternion2x4Array);
-
-	blendDQ /= length(blendDQ[0]);
-
-	vec3 blendPosition = calculateBlendPosition(pass1_position, blendDQ);
-
-	//No need to normalize, the magnitude of the normal is preserved because only rotation is performed
-	vec3 blendNormal = calculateBlendNormal(pass1_normal, blendDQ);
-	
-	gl_Position =  viewProjectionMatrix * vec4(blendPosition, 1.0);
-
-	// Lighting - support point and directional
-	vec3 lightDir0 = normalize(lightPos[0].xyz - (blendPosition * lightPos[0].w));
-	vec3 lightDir1 = normalize(lightPos[1].xyz - (blendPosition * lightPos[1].w));
-
-	gl_TexCoord[0] = uv0;
-
-	gl_FrontColor = gl_FrontMaterial.diffuse * (ambient + (clamp(dot(lightDir0, blendNormal), 0.0, 1.0) * lightDiffuseColour[0]) + 
-		(clamp(dot(lightDir1, blendNormal), 0.0, 1.0) * lightDiffuseColour[1]));			
-}
-
Index: data/branches/Shader_HS18/programs/Example/GLSL/DualQuaternion_TwoPhaseShadowCaster.glsl
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL/DualQuaternion_TwoPhaseShadowCaster.glsl	(revision 12091)
+++ 	(revision )
@@ -1,44 +1,0 @@
-#version 120
-
-mat2x4 blendTwoWeightsAntipod(vec4 blendWgt, vec4 blendIdx, vec4 dualQuaternions[24]);
-vec3 calculateBlendPosition(vec3 position, mat2x4 blendDQ);
-
-uniform vec4 worldDualQuaternion2x4Array[24];
-uniform vec4 scaleM[72];
-uniform mat4 viewProjectionMatrix;
-uniform vec4   ambient;
-
-attribute vec4 vertex;
-attribute vec4 blendIndices;
-attribute vec4 blendWeights;
-
-varying vec4 colour;
-
-//Shadow caster pass
-void main()
-{	
-	//First phase - applies scaling and shearing:
-	int blendIndicesX = int(blendIndices.x) * 3;
-	int blendIndicesY = int(blendIndices.y) * 3;
-	
-	mat3x4 blendS = blendWeights.x*mat3x4(scaleM[blendIndicesX], 
-		scaleM[blendIndicesX + 1], scaleM[blendIndicesX + 2]);
-	
-	blendS += blendWeights.y*mat3x4(scaleM[blendIndicesY], 						scaleM[blendIndicesY + 1], scaleM[blendIndicesY + 2]);
-
-	mat4x3 blendF = transpose(blendS);
-
-	vec3 pass1_position = blendF * vertex;
-
-	//Second phase
-	mat2x4 blendDQ = blendTwoWeightsAntipod(blendWeights, blendIndices, worldDualQuaternion2x4Array);
-
-	blendDQ /= length(blendDQ[0]);
-
-	vec3 blendPosition = calculateBlendPosition(pass1_position, blendDQ);
-	
-	gl_Position =  viewProjectionMatrix * vec4(blendPosition, 1.0);
-
-	colour = ambient;
-}
-
Index: data/branches/Shader_HS18/programs/Example/GLSL/Example_TextureArrayPS.glsl
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL/Example_TextureArrayPS.glsl	(revision 12091)
+++ 	(revision )
@@ -1,17 +1,0 @@
-#version 120
-#extension GL_EXT_texture_array : enable
-
-uniform sampler2DArray TextureArrayTex;
-varying vec3 oUv;
-
-void main(void)
-{
-	vec3 texcoord;
-	texcoord = oUv;
-	texcoord.z = floor(texcoord.z);
-    vec4 c0 = texture2DArray(TextureArrayTex, texcoord);
-	texcoord.z += 1.0;
-    vec4 c1 = texture2DArray(TextureArrayTex, texcoord);
-
-	gl_FragColor = mix(c0, c1, fract(oUv.z));
-}
Index: data/branches/Shader_HS18/programs/Example/GLSL/Example_TextureArrayVS.glsl
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL/Example_TextureArrayVS.glsl	(revision 12091)
+++ 	(revision )
@@ -1,11 +1,0 @@
-#version 120
-
-varying vec3 oUv;
-
-uniform mat4 worldViewProj;
-
-void main(void)
-{
-	gl_Position = worldViewProj * gl_Vertex;
-	oUv = gl_MultiTexCoord0.xyz;
-}
Index: data/branches/Shader_HS18/programs/Example/GLSL/HWBasicInstancing.vert
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL/HWBasicInstancing.vert	(revision 12091)
+++ 	(revision )
@@ -1,69 +1,0 @@
-//---------------------------------------------------------------------------
-//These materials/shaders are part of the NEW InstanceManager implementation
-//Written by Matias N. Goldberg ("dark_sylinc")
-//---------------------------------------------------------------------------
-#version 120
-
-//Vertex input
-attribute vec4 vertex;
-attribute vec3 normal;
-attribute vec4 uv0;
-attribute vec4 uv1;
-attribute vec4 uv2;
-attribute vec4 uv3;
-attribute vec3 tangent;
-
-//Parameters
-uniform mat4 viewProjMatrix;
-
-#if (DEPTH_SHADOWCASTER || DEPTH_SHADOWRECEIVER)
-uniform vec4 depthRange;
-#endif
-
-#if DEPTH_SHADOWRECEIVER
-uniform mat4 texViewProjMatrix;
-#endif
-
-//Output
-#if DEPTH_SHADOWCASTER
-	varying vec2 depth;
-#else
-	varying vec2 _uv0;
-	varying vec3 oNormal;
-	varying vec3 oVPos;
-	#if DEPTH_SHADOWRECEIVER
-		varying vec4 oLightSpacePos;
-	#endif
-#endif
-
-//---------------------------------------------
-//Main Vertex Shader
-//---------------------------------------------
-void main(void)
-{
-	mat4 worldMatrix;
-	worldMatrix[0] = uv1;
-	worldMatrix[1] = uv2;
-	worldMatrix[2] = uv3;
-	worldMatrix[3] = vec4( 0, 0, 0, 1 );
-
-	vec4 worldPos		= vertex * worldMatrix;
-	vec3 worldNorm		= normal * mat3(worldMatrix);
-
-	//Transform the position
-	gl_Position			= viewProjMatrix * worldPos;
-	
-#if DEPTH_SHADOWCASTER
-	depth.x				= (gl_Position.z - depthRange.x) * depthRange.w;
-	depth.y				= depthRange.w;
-#else
-	_uv0		= uv0.xy;
-	oNormal		= worldNorm;
-	oVPos		= worldPos.xyz;
-
-	#if DEPTH_SHADOWRECEIVER
-		oLightSpacePos		= texViewProjMatrix * worldPos;
-		oLightSpacePos.z	= (oLightSpacePos.z - depthRange.x) * depthRange.w;
-	#endif
-#endif
-}
Index: data/branches/Shader_HS18/programs/Example/GLSL/HW_VTFInstancing.vert
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL/HW_VTFInstancing.vert	(revision 12091)
+++ 	(revision )
@@ -1,131 +1,0 @@
-//---------------------------------------------------------------------------
-//These materials/shaders are part of the NEW InstanceManager implementation
-//Written by Matias N. Goldberg ("dark_sylinc")
-//---------------------------------------------------------------------------
-#version 120
-
-//Vertex input
-attribute vec4 vertex;
-attribute vec3 normal;
-
-#ifdef BONE_TWO_WEIGHTS
-	attribute vec4 blendWeights;
-#endif
-
-attribute vec4 uv0;
-attribute vec4 uv1;
-attribute vec4 uv2;
-	
-#if BONE_MATRIX_LUT
-	attribute vec4 uv3;
-	attribute vec4 uv4;
-	attribute vec4 uv5;
-#endif
-
-attribute vec3 tangent;
-
-//Parameters
-uniform mat4 viewProjMatrix;
-uniform sampler2D matrixTexture;
-
-#if (DEPTH_SHADOWCASTER || DEPTH_SHADOWRECEIVER)
-uniform vec4 depthRange;
-#endif
-
-#if DEPTH_SHADOWRECEIVER
-uniform mat4 texViewProjMatrix;
-#endif
-
-//Output
-#if DEPTH_SHADOWCASTER
-	varying vec2 depth;
-#else
-	varying vec2 _uv0;
-	varying vec3 oNormal;
-	varying vec3 oVPos;
-	#if DEPTH_SHADOWRECEIVER
-		varying vec4 oLightSpacePos;
-	#endif
-#endif
-
-vec3 calculateBlendPosition(vec3 position, mat2x4 blendDQ)
-{
-	vec3 blendPosition = position + 2.0*cross(blendDQ[0].yzw, cross(blendDQ[0].yzw, position) + blendDQ[0].x*position);
-	vec3 trans = 2.0*(blendDQ[0].x*blendDQ[1].yzw - blendDQ[1].x*blendDQ[0].yzw + cross(blendDQ[0].yzw, blendDQ[1].yzw));
-	blendPosition += trans;
-
-	return blendPosition;
-}
-
-vec3 calculateBlendNormal(vec3 normal, mat2x4 blendDQ)
-{
-	return normal + 2.0*cross(blendDQ[0].yzw, cross(blendDQ[0].yzw, normal) + blendDQ[0].x*normal);
-}
-
-//---------------------------------------------
-//Main Vertex Shader
-//---------------------------------------------
-void main(void)
-{
-	vec4 worldPos;
-	vec3 worldNorm;
-
-#ifdef ST_DUAL_QUATERNION
-	mat2x4 blendDQ;	
-	blendDQ[0] = texture2D( matrixTexture, vec2(uv1.x, 0.0) + uv2.xy );
-	blendDQ[1] = texture2D( matrixTexture, vec2(uv1.y, 0.0) + uv2.xy );
-#ifdef BONE_TWO_WEIGHTS
-	mat2x4 blendDQ2;
-	blendDQ2[0] = texture2D( matrixTexture, vec2(uv1.z, 0.0) + uv2.xy );
-	blendDQ2[1] = texture2D( matrixTexture, vec2(uv1.w, 0.0) + uv2.xy );
-
-	//Accurate antipodality handling. For speed increase, remove the following line
-	if (dot(blendDQ[0], blendDQ2[0]) < 0.0) blendDQ2 *= -1.0;
-	
-	//Blend the dual quaternions based on the weights
-	blendDQ *= blendWeights.x;
-	blendDQ += blendWeights.y*blendDQ2;
-	//Normalize the resultant dual quaternion
-	blendDQ /= length(blendDQ[0]);
-#endif
-	worldPos = vec4(calculateBlendPosition(vertex.xyz, blendDQ), 1.0);
-	worldNorm = calculateBlendNormal(normal, blendDQ);
-#else
-	mat4 worldMatrix;
-	worldMatrix[0] = texture2D( matrixTexture, uv1.xw + uv2.xy );
-	worldMatrix[1] = texture2D( matrixTexture, uv1.yw + uv2.xy );
-	worldMatrix[2] = texture2D( matrixTexture, uv1.zw + uv2.xy );
-	worldMatrix[3] = vec4( 0, 0, 0, 1 );
-
-	worldPos		= vertex * worldMatrix;
-	worldNorm		= normal * mat3(worldMatrix);
-#endif
-
-#if BONE_MATRIX_LUT
-	mat4 worldCompMatrix;
-	worldCompMatrix[0] = uv3;
-	worldCompMatrix[1] = uv4;
-	worldCompMatrix[2] = uv5;
-	worldCompMatrix[3] = vec4( 0, 0, 0, 1 );
-	
-	worldPos =  worldPos * worldCompMatrix;
-	worldNorm = worldNorm * mat3(worldCompMatrix);
-#endif
-
-	//Transform the position
-	gl_Position			= viewProjMatrix * worldPos;
-	
-#if DEPTH_SHADOWCASTER
-	depth.x				= (gl_Position.z - depthRange.x) * depthRange.w;
-	depth.y				= depthRange.w;
-#else
-	_uv0		= uv0.xy;
-	oNormal		= worldNorm;
-	oVPos		= worldPos.xyz;
-
-	#if DEPTH_SHADOWRECEIVER
-		oLightSpacePos		= texViewProjMatrix * worldPos;
-		oLightSpacePos.z	= (oLightSpacePos.z - depthRange.x) * depthRange.w;
-	#endif
-#endif
-}
Index: data/branches/Shader_HS18/programs/Example/GLSL/Instancing.frag
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL/Instancing.frag	(revision 12091)
+++ 	(revision )
@@ -1,66 +1,0 @@
-//---------------------------------------------------------------------------
-//These materials/shaders are part of the NEW InstanceManager implementation
-//Written by Matias N. Goldberg ("dark_sylinc")
-//---------------------------------------------------------------------------
-
-uniform sampler2D diffuseMap;
-
-uniform vec4	lightPosition;
-uniform vec3	cameraPosition;
-uniform vec3 	lightAmbient;
-uniform vec3	lightDiffuse;
-uniform vec3	lightSpecular;
-uniform vec4	lightAttenuation;
-uniform float	lightGloss;
-
-#if DEPTH_SHADOWRECEIVER
-uniform float invShadowMapSize;
-uniform sampler2DShadow shadowMap;
-
-//declare external function
-//vec4 calcDepthShadow(in vec4 inColour, in float lum);
-float calcDepthShadow(sampler2DShadow shadowMap, vec4 uv, float invShadowMapSize);
-#endif
-
-varying vec2 _uv0;
-varying vec3 oNormal;
-varying vec3 oVPos;
-#if DEPTH_SHADOWRECEIVER
-	varying vec4 oLightSpacePos;
-#endif
-
-//---------------------------------------------
-//Main Pixel Shader
-//---------------------------------------------
-void main(void)
-{
-	vec4 color = texture2D( diffuseMap, _uv0 );
-
-	float fShadow = 1.0;
-#if DEPTH_SHADOWRECEIVER
-	fShadow = calcDepthShadow( shadowMap, oLightSpacePos, invShadowMapSize );
-#endif
-
-	vec4 baseColour = texture2D( diffuseMap, _uv0 );
-
-	//Blinn-Phong lighting
-	vec3 normal	= normalize( oNormal );
-	vec3 lightDir		= lightPosition.xyz - oVPos * lightPosition.w;
-	vec3 eyeDir			= normalize( cameraPosition - oVPos );
-
-	float fLength	= length( lightDir );
-	lightDir			= normalize( lightDir );
-
-	float NdotL	= max( 0.0, dot( normal, lightDir ) );
-	vec3 halfVector		= normalize(lightDir + eyeDir);
-	float HdotN	= max( 0.0, dot( halfVector, normal ) );
-	
-	vec3 ambient  = lightAmbient * baseColour.xyz;
-	vec3 diffuse  = lightDiffuse * NdotL * baseColour.xyz;
-	vec3 specular = lightSpecular * pow( HdotN, lightGloss );
-	
-	vec3 directLighting = (diffuse + specular) * fShadow;
-	
-	gl_FragColor = vec4( directLighting + ambient, baseColour.a );
-	//gl_FragColor = baseColour;
-}
Index: data/branches/Shader_HS18/programs/Example/GLSL/InstancingMisc.vert
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL/InstancingMisc.vert	(revision 12091)
+++ 	(revision )
@@ -1,62 +1,0 @@
-//---------------------------------------------------------------------------
-//These materials/shaders are part of the NEW InstanceManager implementation
-//Written by Matias N. Goldberg ("dark_sylinc")
-//---------------------------------------------------------------------------
-#version 120
-
-//Vertex input
-attribute vec4 vertex;
-attribute vec3 normal;
-attribute vec3 tangent;
-attribute vec4 uv0;
-attribute vec4 blendIndices;
-attribute vec4 blendWeights;
-
-//Parameters
-uniform mat4 viewProjMatrix;
-uniform mat4 worldMatrix;
-
-#if (DEPTH_SHADOWCASTER || DEPTH_SHADOWRECEIVER)
-uniform vec4 depthRange;
-#endif
-
-#if DEPTH_SHADOWRECEIVER
-uniform mat4 texViewProjMatrix;
-#endif
-
-//Output
-#if DEPTH_SHADOWCASTER
-	varying vec2 depth;
-#else
-	varying vec2 _uv0;
-	varying vec3 oNormal;
-	varying vec3 oVPos;
-	#if DEPTH_SHADOWRECEIVER
-		varying vec4 oLightSpacePos;
-	#endif
-#endif
-//---------------------------------------------
-//Main Vertex Shader
-//---------------------------------------------
-void main(void)
-{
-	vec4 worldPos		= vertex * worldMatrix;
-	vec3 worldNorm		= normal * mat3(worldMatrix);
-
-	//Transform the position
-	gl_Position			= viewProjMatrix * worldPos;
-	
-#if DEPTH_SHADOWCASTER
-	depth.x				= (gl_Position.z - depthRange.x) * depthRange.w;
-	depth.y				= depthRange.w;
-#else
-	_uv0		= uv0.xy;
-	oNormal		= worldNorm;
-	oVPos		= worldPos.xyz;
-
-	#if DEPTH_SHADOWRECEIVER
-		oLightSpacePos		= texViewProjMatrix * worldPos;
-		oLightSpacePos.z	= (oLightSpacePos.z - depthRange.x) * depthRange.w;
-	#endif
-#endif
-}
Index: data/branches/Shader_HS18/programs/Example/GLSL/Ocean2GLSL.frag
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL/Ocean2GLSL.frag	(revision 12091)
+++ 	(revision )
@@ -1,71 +1,0 @@
-/*********************************************************************NVMH3****
-Copyright NVIDIA Corporation 2003
-TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, THIS SOFTWARE IS PROVIDED
-*AS IS* AND NVIDIA AND ITS SUPPLIERS DISCLAIM ALL WARRANTIES, EITHER EXPRESS
-OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF MERCHANTABILITY
-AND FITNESS FOR A PARTICULAR PURPOSE.  IN NO EVENT SHALL NVIDIA OR ITS SUPPLIERS
-BE LIABLE FOR ANY SPECIAL, INCIDENTAL, INDIRECT, OR CONSEQUENTIAL DAMAGES
-WHATSOEVER (INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF BUSINESS PROFITS,
-BUSINESS INTERRUPTION, LOSS OF BUSINESS INFORMATION, OR ANY OTHER PECUNIARY LOSS)
-ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF NVIDIA HAS
-BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
-
-
-Comments:
-	Simple ocean shader with animated bump map and geometric waves
-	Based partly on "Effective Water Simulation From Physical Models", GPU Gems
-
-11 Aug 05: converted from HLSL to GLSL by Jeff Doyle (nfz) to work in Ogre
-
-******************************************************************************/
-
-
-uniform sampler2D NormalMap;
-uniform samplerCube EnvironmentMap;
-uniform vec4 deepColor;
-uniform vec4 shallowColor;
-uniform vec4 reflectionColor;
-uniform float reflectionAmount;
-uniform float reflectionBlur;
-uniform float waterAmount;
-uniform float fresnelPower;
-uniform float fresnelBias;
-uniform float hdrMultiplier;
-
-varying mat3 rotMatrix; // first row of the 3x3 transform from tangent to cube space
-varying vec2 bumpCoord0;
-varying vec2 bumpCoord1;
-varying vec2 bumpCoord2;
-varying vec3 eyeVector;
-
-
-void main(void)
-{
-	// sum normal maps
-	// sample from 3 different points so no texture repetition is noticeable
-    vec4 t0 = texture2D(NormalMap, bumpCoord0) * 2.0 - 1.0;
-    vec4 t1 = texture2D(NormalMap, bumpCoord1) * 2.0 - 1.0;
-    vec4 t2 = texture2D(NormalMap, bumpCoord2) * 2.0 - 1.0;
-    vec3 N = t0.xyz + t1.xyz + t2.xyz;
-
-    N = normalize(rotMatrix * N);
-
-	// reflection
-    vec3 E = normalize(eyeVector);
-    vec3 R = reflect(E, N);
-    // Ogre conversion for cube map lookup
-    R.z = -R.z;
-
-    vec4 reflection = textureCube(EnvironmentMap, R, reflectionBlur);
-    // cheap hdr effect
-    reflection.rgb *= (reflection.r + reflection.g + reflection.b) * hdrMultiplier;
-
-	// fresnel
-    float facing = 1.0 - dot(-E, N);
-    float fresnel = clamp(fresnelBias + pow(facing, fresnelPower), 0.0, 1.0);
-
-    vec4 waterColor = mix(shallowColor, deepColor, facing) * waterAmount;
-
-    reflection = mix(waterColor,  reflection * reflectionColor, fresnel) * reflectionAmount;
-    gl_FragColor = waterColor + reflection;
-}
Index: data/branches/Shader_HS18/programs/Example/GLSL/Ocean2GLSL.vert
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL/Ocean2GLSL.vert	(revision 12091)
+++ 	(revision )
@@ -1,92 +1,0 @@
-/*********************************************************************NVMH3****
-Copyright NVIDIA Corporation 2003
-TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, THIS SOFTWARE IS PROVIDED
-*AS IS* AND NVIDIA AND ITS SUPPLIERS DISCLAIM ALL WARRANTIES, EITHER EXPRESS
-OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF MERCHANTABILITY
-AND FITNESS FOR A PARTICULAR PURPOSE.  IN NO EVENT SHALL NVIDIA OR ITS SUPPLIERS
-BE LIABLE FOR ANY SPECIAL, INCIDENTAL, INDIRECT, OR CONSEQUENTIAL DAMAGES
-WHATSOEVER (INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF BUSINESS PROFITS,
-BUSINESS INTERRUPTION, LOSS OF BUSINESS INFORMATION, OR ANY OTHER PECUNIARY LOSS)
-ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF NVIDIA HAS
-BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
-
-
-Comments:
-	Simple ocean shader with animated bump map and geometric waves
-	Based partly on "Effective Water Simulation From Physical Models", GPU Gems
-
-11 Aug 05: converted from HLSL to GLSL by Jeff Doyle (nfz) to work in Ogre
-
-******************************************************************************/
-
-uniform vec3 eyePosition;
-uniform float BumpScale;
-uniform vec2 textureScale;
-uniform vec2 bumpSpeed;
-uniform float time;
-uniform float waveFreq;
-uniform float waveAmp;
-uniform mat4 worldViewProj;
-
-varying mat3 rotMatrix; //  transform from tangent to obj space
-varying vec2 bumpCoord0;
-varying vec2 bumpCoord1;
-varying vec2 bumpCoord2;
-varying vec3 eyeVector;
-
-// wave functions
-struct Wave {
-  float freq;  // 2*PI / wavelength
-  float amp;   // amplitude
-  float phase; // speed * 2*PI / wavelength
-  vec2 dir;
-};
-
-
-void main(void)
-{
-
-	#define NWAVES 2
-
-	Wave wave[NWAVES];
-
-	wave[0] = Wave( waveFreq, waveAmp, 0.5, vec2(-1, 0) );
-	wave[1] = Wave( 3.0 * waveFreq, 0.33 * waveAmp, 1.7, vec2(-0.7, 0.7) );
-
-
-    vec4 P = gl_Vertex;
-
-	// sum waves
-	float ddx = 0.0, ddy = 0.0;
-	float deriv;
-	float angle;
-
-	// wave synthesis using two sine waves at different frequencies and phase shift
-	for(int i = 0; i<NWAVES; ++i)
-	{
-		angle = dot(wave[i].dir, P.xz) * wave[i].freq + time * wave[i].phase;
-		P.y += wave[i].amp * sin( angle );
-		// calculate derivate of wave function
-		deriv = wave[i].freq * wave[i].amp * cos(angle);
-		ddx -= deriv * wave[i].dir.x;
-		ddy -= deriv * wave[i].dir.y;
-	}
-
-	// compute the 3x3 transform from tangent space to object space
-	// compute tangent basis
-    vec3 T = normalize(vec3(1.0, ddy, 0.0)) * BumpScale;
-    vec3 B = normalize(vec3(0.0, ddx, 1.0)) * BumpScale;
-    vec3 N = normalize(vec3(ddx, 1.0, ddy));
-
-	rotMatrix = mat3(T, B, N);
-
-	gl_Position = gl_ModelViewProjectionMatrix * P;
-
-	// calculate texture coordinates for normal map lookup
-	bumpCoord0.xy = gl_MultiTexCoord0.xy * textureScale + time * bumpSpeed;
-	bumpCoord1.xy = gl_MultiTexCoord0.xy * textureScale * 2.0 + time * bumpSpeed * 4.0;
-	bumpCoord2.xy = gl_MultiTexCoord0.xy * textureScale * 4.0 + time * bumpSpeed * 8.0;
-
-
-	eyeVector = P.xyz - eyePosition; // eye position in vertex space
-}
Index: data/branches/Shader_HS18/programs/Example/GLSL/OffsetMappingFp.glsl
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL/OffsetMappingFp.glsl	(revision 12091)
+++ 	(revision )
@@ -1,69 +1,0 @@
-uniform vec4 lightDiffuse;
-uniform vec4 scaleBias;
-uniform vec4 spotParams;
-uniform vec4 lightDiffuse1;
-uniform vec4 spotParams1;
-
-uniform sampler2D normalHeightMap;
-uniform sampler2D diffuseMap;
-uniform sampler2D shadowMap1;
-uniform sampler2D shadowMap2;
-
-
-
-varying vec3 tangentEyeDir;
-varying vec3 tangentLightDir[2];
-varying vec3 tangentSpotDir[2];
-varying vec4 shadowUV[2];
-
-
-// Expand a range-compressed vector
-vec3 expand(vec3 v)
-{
-	return (v - 0.5) * 2.0;
-}
-
-
-void main()
-{
-	// get the height using the tex coords
-	float height = texture2D(normalHeightMap, gl_TexCoord[0].xy).a;
-	// scale and bias factors	
-	float scale = scaleBias.x;
-	float bias = scaleBias.y;
-
-	// calculate displacement	
-	float displacement = (height * scale) + bias;
-	//float displacement = (height * 0.04) - 0.02;
-	
-	vec3 scaledEyeDir = tangentEyeDir * displacement;
-	
-	// calculate the new tex coord to use for normal and diffuse
-	vec2 newTexCoord = (scaledEyeDir + gl_TexCoord[0].xyz).xy;
-	
-	// get the new normal and diffuse values
-	vec3 normal = expand(texture2D(normalHeightMap, newTexCoord).xyz);
-	vec4 diffuse = texture2D(diffuseMap, newTexCoord);
-	
-	vec4 col1 = diffuse * clamp(dot(normal, tangentLightDir[0]),0.0,1.0) * lightDiffuse;
-	// factor in spotlight angle
-	float rho = clamp(dot(tangentSpotDir[0], tangentLightDir[0]),0.0,1.0);
-	// factor = (rho - cos(outer/2) / cos(inner/2) - cos(outer/2)) ^ falloff
-	float spotFactor = pow(
-		clamp(rho - spotParams.y,0.0,1.0) / (spotParams.x - spotParams.y), spotParams.z);
-	col1 = col1 * spotFactor;
-	vec4 col2 = diffuse * clamp(dot(normal, tangentLightDir[1]),0.0,1.0) * lightDiffuse1;
-	// factor in spotlight angle
-	rho = clamp(dot(tangentSpotDir[1], tangentLightDir[1]),0.0,1.0);
-	// factor = (rho - cos(outer/2) / cos(inner/2) - cos(outer/2)) ^ falloff
-	spotFactor = pow(
-		clamp(rho - spotParams1.y,0.0,1.0) / (spotParams1.x - spotParams1.y), spotParams1.z);
-	col2 = col2 * spotFactor;
-
-	// shadow textures
-	col1 = col1 * texture2DProj(shadowMap1, shadowUV[0]);
-	col2 = col2 * texture2DProj(shadowMap2, shadowUV[1]);
-
-	gl_FragColor = col1 + col2;
-
-}
Index: data/branches/Shader_HS18/programs/Example/GLSL/OffsetMappingVp.glsl
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL/OffsetMappingVp.glsl	(revision 12091)
+++ 	(revision )
@@ -1,54 +1,0 @@
-attribute vec3 tangent;
-
-uniform vec4 lightPosition; // object space 
-uniform vec4 lightPosition1; // object space 
-uniform vec4 eyePosition;   // object space 
-uniform vec4 spotDirection; // object space
-uniform vec4 spotDirection1; // object space
-uniform mat4 worldViewProj; // not actually used but here for compat with HLSL
-uniform mat4 worldMatrix;
-uniform mat4 texViewProj1;
-uniform mat4 texViewProj2;
-
-
-varying vec3 tangentEyeDir;
-varying vec3 tangentLightDir[2];
-varying vec3 tangentSpotDir[2];
-varying vec4 shadowUV[2];
-
-void main()
-{
-	gl_Position = ftransform();
-
-	vec4 worldPos = worldMatrix * gl_Vertex;
-
-	shadowUV[0] = texViewProj1 * worldPos;
-	shadowUV[1] = texViewProj2 * worldPos;
-
-	// pass the main uvs straight through unchanged 
-	gl_TexCoord[0] = gl_MultiTexCoord0;
-
-	// calculate tangent space light vector 
-	// Get object space light direction 
-    vec3 lightDir = normalize(lightPosition.xyz -  (gl_Vertex.xyz * lightPosition.w));
-	vec3 lightDir1 = normalize(lightPosition1.xyz -  (gl_Vertex.xyz * lightPosition1.w));
-	
-	vec3 eyeDir = (eyePosition - gl_Vertex).xyz; 
-
-	// Calculate the binormal (NB we assume both normal and tangent are 
-	// already normalised) 
-	vec3 binormal = cross(gl_Normal, tangent); 
-
-	// Form a rotation matrix out of the vectors 
-	mat3 rotation = mat3(tangent, binormal, gl_Normal); 
-    
-	// Transform the light vector according to this matrix 
-	tangentLightDir[0] = normalize(rotation * lightDir); 
-	tangentLightDir[1] = normalize(rotation * lightDir1); 
-	// Invert the Y on the eye dir since we'll be using this to alter UVs and
-	// GL has Y inverted
-	tangentEyeDir = normalize(rotation * eyeDir) * vec3(1, -1, 1); 
-
-	tangentSpotDir[0] = normalize(rotation * -spotDirection.xyz);
-	tangentSpotDir[1] = normalize(rotation * -spotDirection1.xyz);	
-}
Index: data/branches/Shader_HS18/programs/Example/GLSL/PassthroughFP.glsl
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL/PassthroughFP.glsl	(revision 12091)
+++ 	(revision )
@@ -1,9 +1,0 @@
-varying vec4 colour;
-
-/*
-  Basic ambient lighting fragment program for GLSL ES
-*/
-void main()
-{
-	gl_FragColor = colour;
-}
Index: data/branches/Shader_HS18/programs/Example/GLSL/PassthroughVP.glsl
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL/PassthroughVP.glsl	(revision 12091)
+++ 	(revision )
@@ -1,5 +1,0 @@
-void main()																					
-{																							
-	//Transform the vertex (ModelViewProj matrix)											
-	gl_Position = ftransform();																
-}
Index: data/branches/Shader_HS18/programs/Example/GLSL/ShaderInstancing.vert
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL/ShaderInstancing.vert	(revision 12091)
+++ 	(revision )
@@ -1,117 +1,0 @@
-//---------------------------------------------------------------------------
-//These materials/shaders are part of the NEW InstanceManager implementation
-//Written by Matias N. Goldberg ("dark_sylinc")
-//---------------------------------------------------------------------------
-#version 120
-
-//Vertex input
-attribute vec4 vertex;
-attribute vec3 normal;
-attribute vec3 tangent;
-attribute vec4 uv0;
-attribute vec4 blendIndices;
-attribute vec4 blendWeights;
-
-//Parameters
-uniform mat4 viewProjMatrix;
-//uniform mat4x3 worldMatrix3x4Array[80];
-#ifdef ST_DUAL_QUATERNION
-uniform vec4 worldDualQuaternion2x4Array[240];
-#else
-uniform vec4 worldMatrix3x4Array[240]; //240 = 80*3
-#endif
-
-
-#if (DEPTH_SHADOWCASTER || DEPTH_SHADOWRECEIVER)
-uniform vec4 depthRange;
-#endif
-
-#if DEPTH_SHADOWRECEIVER
-uniform mat4 texViewProjMatrix;
-#endif
-
-//Output
-#if DEPTH_SHADOWCASTER
-	varying vec2 depth;
-#else
-	varying vec2 _uv0;
-	varying vec3 oNormal;
-	varying vec3 oVPos;
-	#if DEPTH_SHADOWRECEIVER
-		varying vec4 oLightSpacePos;
-	#endif
-#endif
-
-vec3 calculateBlendPosition(vec3 position, mat2x4 blendDQ)
-{
-	vec3 blendPosition = position + 2.0*cross(blendDQ[0].yzw, cross(blendDQ[0].yzw, position) + blendDQ[0].x*position);
-	vec3 trans = 2.0*(blendDQ[0].x*blendDQ[1].yzw - blendDQ[1].x*blendDQ[0].yzw + cross(blendDQ[0].yzw, blendDQ[1].yzw));
-	blendPosition += trans;
-
-	return blendPosition;
-}
-
-vec3 calculateBlendNormal(vec3 normal, mat2x4 blendDQ)
-{
-	return normal + 2.0*cross(blendDQ[0].yzw, cross(blendDQ[0].yzw, normal) + blendDQ[0].x*normal);
-}
-
-//---------------------------------------------
-//Main Vertex Shader
-//---------------------------------------------
-void main(void)
-{
-vec4 worldPos;
-vec3 worldNorm;
-
-#ifdef ST_DUAL_QUATERNION
-	int idx = int(blendIndices[0]) * 2;
-	mat2x4 blendDQ;
-	blendDQ[0] = worldDualQuaternion2x4Array[idx];
-	blendDQ[1] = worldDualQuaternion2x4Array[idx + 1];
-#ifdef BONE_TWO_WEIGHTS
-	int idx2 = int(blendIndices[1]) * 2;
-	mat2x4 blendDQ2;
- 	blendDQ2[0] = worldDualQuaternion2x4Array[idx2];
-	blendDQ2[1] = worldDualQuaternion2x4Array[idx2 + 1];
-
-	//Accurate antipodality handling. For speed increase, remove the following line
-	if (dot(blendDQ[0], blendDQ2[0]) < 0.0) blendDQ2 *= -1.0;
-	
-	//Blend the dual quaternions based on the weights
-	blendDQ *= blendWeights.x;
-	blendDQ += blendWeights.y*blendDQ2;
-	//Normalize the resultant dual quaternion
-	blendDQ /= length(blendDQ[0]);
-#endif
-	worldPos = vec4(calculateBlendPosition(vertex.xyz, blendDQ), 1.0);
-	worldNorm = calculateBlendNormal(normal, blendDQ);
-#else
-	mat4 worldMatrix;
-	int idx = int(blendIndices[0]) * 3;
-	worldMatrix[0] = worldMatrix3x4Array[idx];
-	worldMatrix[1] = worldMatrix3x4Array[idx + 1];
-	worldMatrix[2] = worldMatrix3x4Array[idx + 2];
-	worldMatrix[3] = vec4( 0, 0, 0, 1 );
-
-	worldPos		= vertex * worldMatrix;
-	worldNorm		= normal * mat3(worldMatrix);
-#endif
-
-	//Transform the position
-	gl_Position			= viewProjMatrix * worldPos;
-
-#if DEPTH_SHADOWCASTER
-	depth.x				= (gl_Position.z - depthRange.x) * depthRange.w;
-	depth.y				= depthRange.w;
-#else
-	_uv0		= uv0.xy;
-	oNormal		= worldNorm;
-	oVPos		= worldPos.xyz;
-
-	#if DEPTH_SHADOWRECEIVER
-		oLightSpacePos		= texViewProjMatrix * worldPos;
-		oLightSpacePos.z	= (oLightSpacePos.z - depthRange.x) * depthRange.w;
-	#endif
-#endif
-}
Index: data/branches/Shader_HS18/programs/Example/GLSL/VTFInstancing.vert
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL/VTFInstancing.vert	(revision 12091)
+++ 	(revision )
@@ -1,113 +1,0 @@
-//---------------------------------------------------------------------------
-//These materials/shaders are part of the NEW InstanceManager implementation
-//Written by Matias N. Goldberg ("dark_sylinc")
-//---------------------------------------------------------------------------
-#version 120
-
-//Vertex input
-attribute vec4 vertex;
-attribute vec3 normal;
-
-#ifdef BONE_TWO_WEIGHTS
-	attribute vec4 blendWeights;
-#endif
-
-attribute vec4 uv0;
-attribute vec4 uv1;
-attribute vec4 uv2;
-attribute vec3 tangent;
-
-//Parameters
-uniform mat4 viewProjMatrix;
-uniform sampler2D matrixTexture;
-
-#if (DEPTH_SHADOWCASTER || DEPTH_SHADOWRECEIVER)
-uniform vec4 depthRange;
-#endif
-
-#if DEPTH_SHADOWRECEIVER
-uniform mat4 texViewProjMatrix;
-#endif
-
-//Output
-#if DEPTH_SHADOWCASTER
-	varying vec2 depth;
-#else
-	varying vec2 _uv0;
-	varying vec3 oNormal;
-	varying vec3 oVPos;
-	#if DEPTH_SHADOWRECEIVER
-		varying vec4 oLightSpacePos;
-	#endif
-#endif
-
-vec3 calculateBlendPosition(vec3 position, mat2x4 blendDQ)
-{
-	vec3 blendPosition = position + 2.0*cross(blendDQ[0].yzw, cross(blendDQ[0].yzw, position) + blendDQ[0].x*position);
-	vec3 trans = 2.0*(blendDQ[0].x*blendDQ[1].yzw - blendDQ[1].x*blendDQ[0].yzw + cross(blendDQ[0].yzw, blendDQ[1].yzw));
-	blendPosition += trans;
-
-	return blendPosition;
-}
-
-vec3 calculateBlendNormal(vec3 normal, mat2x4 blendDQ)
-{
-	return normal + 2.0*cross(blendDQ[0].yzw, cross(blendDQ[0].yzw, normal) + blendDQ[0].x*normal);
-}
-
-//---------------------------------------------
-//Main Vertex Shader
-//---------------------------------------------
-void main(void)
-{
-	vec4 worldPos;
-	vec3 worldNorm;
-
-#ifdef ST_DUAL_QUATERNION
-	mat2x4 blendDQ;	
-	blendDQ[0] = texture2D( matrixTexture, uv1.xy );
-	blendDQ[1] = texture2D( matrixTexture, uv1.zy );
-#ifdef BONE_TWO_WEIGHTS
-	mat2x4 blendDQ2;
-	blendDQ2[0] = texture2D( matrixTexture, uv2.xy );
-	blendDQ2[1] = texture2D( matrixTexture, uv2.zw );
-
-	//Accurate antipodality handling. For speed increase, remove the following line
-	if (dot(blendDQ[0], blendDQ2[0]) < 0.0) blendDQ2 *= -1.0;
-	
-	//Blend the dual quaternions based on the weights
-	blendDQ *= blendWeights.x;
-	blendDQ += blendWeights.y*blendDQ2;
-	//Normalize the resultant dual quaternion
-	blendDQ /= length(blendDQ[0]);
-#endif
-	worldPos = vec4(calculateBlendPosition(vertex.xyz, blendDQ), 1.0);
-	worldNorm = calculateBlendNormal(normal, blendDQ);
-#else
-	mat4 worldMatrix;
-	worldMatrix[0] = texture2D( matrixTexture, uv1.xy );
-	worldMatrix[1] = texture2D( matrixTexture, uv1.zw );
-	worldMatrix[2] = texture2D( matrixTexture, uv2.xy );
-	worldMatrix[3] = vec4( 0, 0, 0, 1 );
-
-	worldPos		= vertex * worldMatrix;
-	worldNorm		= normal * mat3(worldMatrix);
-#endif
-
-	//Transform the position
-	gl_Position			= viewProjMatrix * worldPos;
-	
-#if DEPTH_SHADOWCASTER
-	depth.x				= (gl_Position.z - depthRange.x) * depthRange.w;
-	depth.y				= depthRange.w;
-#else
-	_uv0		= uv0.xy;
-	oNormal		= worldNorm;
-	oVPos		= worldPos.xyz;
-
-	#if DEPTH_SHADOWRECEIVER
-		oLightSpacePos		= texViewProjMatrix * worldPos;
-		oLightSpacePos.z	= (oLightSpacePos.z - depthRange.x) * depthRange.w;
-	#endif
-#endif
-}
Index: data/branches/Shader_HS18/programs/Example/GLSL/crowdVp.glsl
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL/crowdVp.glsl	(revision 12091)
+++ 	(revision )
@@ -1,62 +1,0 @@
-uniform mat4 viewProjectionMatrix;
-uniform float numBones;
-uniform vec4 worldMatrix3x4Array[240];
-uniform vec4 lightDiffuseColour;
-uniform vec4 ambient;
-uniform vec4 lightPos;
-
-attribute vec4 blendIndices;
-attribute vec4 blendWeights;
-
-
-void main()
-{
-	vec3 blendPos = vec3(0,0,0);
-	vec3 blendNorm = vec3(0,0,0);
-	
-	vec3 tmpPos = vec3(0,0,0);
-	vec3 tmpNorm = vec3(0,0,0);
-
-
-	int instanceOffset = int(gl_MultiTexCoord1.x) * 3 * int(numBones);
-	for (int bone = 0; bone < 2; ++bone)
-	{
-		// perform matrix multiplication manually since no 3x4 matrices
-		for (int row = 0; row < 3; ++row)
-		{
-		    int idx = instanceOffset + int(blendIndices[bone]) * 3 + row;
-			vec4 blendMatrixRow = worldMatrix3x4Array[idx];
-			tmpPos[row] = dot(blendMatrixRow, gl_Vertex);
-#if SHADOW_CASTER
-#else
-			tmpNorm[row] = dot(blendMatrixRow.xyz, gl_Normal);
-#endif
-			
-		}
-		// now weight this into final 
-		blendPos += tmpPos * blendWeights[bone];
-#if SHADOW_CASTER
-#else
-		blendNorm += tmpNorm * blendWeights[bone];
-#endif
-	}
-
-	// apply view / projection to position
-	gl_Position = viewProjectionMatrix * vec4(blendPos, 1);
-
-	
-#if SHADOW_CASTER
-	gl_FrontColor = ambient;
-#else
-	// simple lighting model
-	vec3 lightDir = normalize(
-		lightPos.xyz -  (blendPos.xyz * lightPos.w));
-	gl_FrontColor = ambient 
-		+ clamp(dot(lightDir, blendNorm), 0.0, 1.0) * lightDiffuseColour;
-#endif
-    gl_FrontSecondaryColor = vec4(0);
-	gl_TexCoord[0] = gl_MultiTexCoord0;
-
-	
-}
-
Index: data/branches/Shader_HS18/programs/Example/GLSL/hdr_tonemap_util.glsl
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL/hdr_tonemap_util.glsl	(revision 12091)
+++ 	(revision )
@@ -1,29 +1,0 @@
-const float MIDDLE_GREY = 0.72;
-const float FUDGE = 0.001;
-const float L_WHITE = 1.5;
-
-/** Tone mapping function 
-@note Only affects rgb, not a
-@param inColour The HDR colour
-@param lum The scene lumninence 
-@returns Tone mapped colour
-*/
-vec4 toneMap(in vec4 inColour, in float lum)
-{
-	// From Reinhard et al
-	// "Photographic Tone Reproduction for Digital Images"
-	
-	// Initial luminence scaling (equation 2)
-    inColour.rgb *= MIDDLE_GREY / (FUDGE + lum);
-
-	// Control white out (equation 4 nom)
-    inColour.rgb *= (1.0 + inColour.rgb / L_WHITE);
-
-	// Final mapping (equation 4 denom)
-	inColour.rgb /= (1.0 + inColour.rgb);
-	
-	return inColour;
-
-}
-
-
Index: data/branches/Shader_HS18/programs/Example/GLSL/oceanGLSL.frag
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL/oceanGLSL.frag	(revision 12091)
+++ 	(revision )
@@ -1,45 +1,0 @@
-// oceanGLSL.frag
-// fragment program for Ocean water simulation
-// 05 Aug 2005
-// adapted for Ogre by nfz
-// converted from HLSL to GLSL
-// original shader source from Render Monkey 1.6 Reflections Refractions.rfx
-
-// 06 Aug 2005: moved uvw calculation from fragment program into vertex program 
-
-uniform float fadeBias;
-uniform float fadeExp;
-uniform vec4 waterColor;
-uniform sampler3D Noise;
-uniform samplerCube skyBox;
-
-varying vec3 uvw;
-varying vec3 normal;
-varying vec3 vVec;
-
-void main(void)
-{
-   vec3 noisy = texture3D(Noise, uvw).xyz;
-   
-   // convert to signed noise
-   vec3 bump = 2.0 * noisy - 1.0;
-   bump.xz *= 0.15;
-   // Make sure the normal always points upwards
-   // note that Ogres y axis is vertical (RM Z axis is vertical)
-   bump.y = 0.8 * abs(bump.y) + 0.2;
-   // Offset the surface normal with the bump
-   bump = normalize(normal + bump);
-
-   // Find the reflection vector
-   vec3 normView = normalize(vVec);
-   vec3 reflVec = reflect(normView, bump);
-   // Ogre has z flipped for cubemaps
-   reflVec.z = -reflVec.z;
-   vec4 refl = textureCube(skyBox, reflVec);
-
-   // set up for fresnel calc
-   float lrp = 1.0 - dot(-normView, bump);
-   
-   // Interpolate between the water color and reflection for fresnel effect
-   gl_FragColor = mix(waterColor, refl, clamp(fadeBias + pow(lrp, fadeExp), 0.0, 1.0) );
-}
Index: data/branches/Shader_HS18/programs/Example/GLSL/oceanGLSL.vert
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL/oceanGLSL.vert	(revision 12091)
+++ 	(revision )
@@ -1,33 +1,0 @@
-// oceanGLSL.vert
-// vertex program for Ocean water simulation
-// 05 Aug 2005
-// adapted for Ogre by nfz
-// converted from HLSL to GLSL
-// original shader source from Render Monkey 1.6 Reflections Refractions.rfx
-
-// 06 Aug 2005: moved uvw calculation from fragment program into vertex program 
-
-uniform vec3 scale;
-uniform vec3 eyePosition;
-uniform vec2 waveSpeed;
-uniform float noiseSpeed;
-uniform float time_0_X;
-uniform mat4 worldViewProj;
-
-varying vec3 uvw;
-varying vec3 normal;
-varying vec3 vVec;
-
-void main(void)
-{
-   gl_Position = worldViewProj * gl_Vertex;
-   
-   //  the view vector needs to be in vertex space
-   vVec = gl_Vertex.xyz - eyePosition;
-   normal = gl_Normal;
-   // uvw is the calculated uvw coordinates based on vertex position
-   uvw = gl_Vertex.xyz * scale.xyz;
-   uvw.xz += waveSpeed * time_0_X;
-   uvw.y += uvw.z + noiseSpeed * time_0_X;
-   
-}
Index: data/branches/Shader_HS18/programs/Example/GLSL/shadows.glsl
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL/shadows.glsl	(revision 12091)
+++ 	(revision )
@@ -1,146 +1,0 @@
-/* Copyright Torus Knot Software Ltd 2012-2013
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-
-Adapted by Matias N. Goldberg (Dark Sylinc) to GLSL based on the Cg file shadows.cg
-*/
-
-// Simple PCF 
-// Number of samples in one dimension (square for total samples)
-#define NUM_SHADOW_SAMPLES_1D 2.0
-#define SHADOW_FILTER_SCALE 1.0
-
-#define SHADOW_SAMPLES NUM_SHADOW_SAMPLES_1D*NUM_SHADOW_SAMPLES_1D
-
-vec4 offsetSample(vec4 uv, vec2 offset, float invMapSize)
-{
-	return vec4(uv.xy + offset * invMapSize * uv.w, uv.z, uv.w);
-}
-
-float calcDepthShadow(sampler2DShadow shadowMap, vec4 uv, float invShadowMapSize)
-{
-	// 4-sample PCF
-	
-	float shadow = 0.0;
-	float offset = (NUM_SHADOW_SAMPLES_1D/2.0 - 0.5) * SHADOW_FILTER_SCALE;
-	for (float y = -offset; y <= offset; y += SHADOW_FILTER_SCALE)
-		for (float x = -offset; x <= offset; x += SHADOW_FILTER_SCALE)
-		{
-			float depth = shadow2DProj(shadowMap, offsetSample(uv, vec2(x, y), invShadowMapSize)).x;
-			if (depth >= 1.0 || depth >= uv.z)
-				shadow += 1.0;
-		}
-
-	shadow /= SHADOW_SAMPLES;
-
-	return shadow;
-}
-
-
-float calcSimpleShadow(sampler2DShadow shadowMap, vec4 shadowMapPos)
-{
-	return shadow2DProj(shadowMap, shadowMapPos).x;
-}
-
-float calcPSSMDepthShadow(sampler2DShadow shadowMap0, sampler2DShadow shadowMap1, sampler2DShadow shadowMap2, 
-						   vec4 lsPos0, vec4 lsPos1, vec4 lsPos2,
-						   float invShadowmapSize0, float invShadowmapSize1, float invShadowmapSize2,
-						   vec4 pssmSplitPoints, float camDepth)
-{
-
-	float shadow;
-	vec4 splitColour;
-	// calculate shadow
-	if (camDepth <= pssmSplitPoints.y)
-	{
-		splitColour = vec4(0.3, 0.0, 0, 0);
-		shadow = calcDepthShadow(shadowMap0, lsPos0, invShadowmapSize0);
-	}
-	else if (camDepth <= pssmSplitPoints.z)
-	{
-		splitColour = vec4(0, 0.3, 0, 0);
-		shadow = calcDepthShadow(shadowMap1, lsPos1, invShadowmapSize1);
-	}
-	else
-	{
-		splitColour = vec4(0.0, 0.0, 0.3, 0);
-		shadow = calcDepthShadow(shadowMap2, lsPos2, invShadowmapSize2);
-	}
-
-	return shadow;
-}
-
-float calcPSSMSimpleShadow(sampler2DShadow shadowMap0, sampler2DShadow shadowMap1, sampler2DShadow shadowMap2, 
-						   vec4 lsPos0, vec4 lsPos1, vec4 lsPos2,
-						   vec4 pssmSplitPoints, float camDepth)
-{
-
-	float shadow;
-	vec4 splitColour;
-	// calculate shadow
-	if (camDepth <= pssmSplitPoints.y)
-	{
-		splitColour = vec4(0.3, 0.0, 0, 0);
-		shadow = calcSimpleShadow(shadowMap0, lsPos0);
-	}
-	else if (camDepth <= pssmSplitPoints.z)
-	{
-		splitColour = vec4(0, 0.3, 0, 0);
-		shadow = calcSimpleShadow(shadowMap1, lsPos1);
-	}
-	else
-	{
-		splitColour = vec4(0.0, 0.0, 0.3, 0);
-		shadow = calcSimpleShadow(shadowMap2, lsPos2);
-	}
-
-	return shadow;
-}
-
-
-
-vec3 calcPSSMDebugShadow(sampler2DShadow shadowMap0, sampler2DShadow shadowMap1, sampler2DShadow shadowMap2, 
-						   vec4 lsPos0, vec4 lsPos1, vec4 lsPos2,
-						   float invShadowmapSize0, float invShadowmapSize1, float invShadowmapSize2,
-						   vec4 pssmSplitPoints, float camDepth)
-{
-
-	vec4 splitColour;
-	// calculate shadow
-	if (camDepth <= pssmSplitPoints.y)
-	{
-		//splitColour = vec4(0.3, 0.0, 0, 0);
-		//splitColour = lsPos0 / lsPos0.w;
-		splitColour.rgb = shadow2DProj(shadowMap0, lsPos0).xxx;
-	}
-	else if (camDepth <= pssmSplitPoints.z)
-	{
-		//splitColour = vec4(0, 0.3, 0, 0);
-		//splitColour = lsPos1 / lsPos1.w;
-		splitColour.rgb = shadow2DProj(shadowMap1, lsPos1).xxx;
-	}
-	else
-	{
-		//splitColour = vec4(0.0, 0.0, 0.3, 0);
-		//splitColour = lsPos2 / lsPos2.w;
-		splitColour.rgb = shadow2DProj(shadowMap2, lsPos2).xxx;
-	}
-
-	return splitColour.rgb;
-}
Index: data/branches/Shader_HS18/programs/Example/GLSL/skinningTwoWeightsShadowCasterVp.glsl
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL/skinningTwoWeightsShadowCasterVp.glsl	(revision 12091)
+++ 	(revision )
@@ -1,42 +1,0 @@
-// Example GLSL program for skinning with two bone weights per vertex
-
-attribute vec4 vertex;
-attribute vec4 uv0;
-attribute vec4 blendIndices;
-attribute vec4 blendWeights;
-
-// 3x4 matrix, passed as vec4's for compatibility with GL 2.0
-// GL 2.0 supports 3x4 matrices
-// Support 24 bones ie 24*3, but use 72 since our parser can pick that out for sizing
-uniform vec4 worldMatrix3x4Array[72];
-uniform mat4 viewProjectionMatrix;
-uniform vec4 ambient;
-
-void main()
-{
-	vec3 blendPos = vec3(0,0,0);
-
-	for (int bone = 0; bone < 2; ++bone)
-	{
-		// perform matrix multiplication manually since no 3x4 matrices
-        // ATI GLSL compiler can't handle indexing an array within an array so calculate the inner index first
-	    int idx = int(blendIndices[bone]) * 3;
-        // ATI GLSL compiler can't handle unrolling the loop so do it manually
-        // ATI GLSL has better performance when mat4 is used rather than using individual dot product
-        // There is a bug in ATI mat4 constructor (Cat 7.2) when indexed uniform array elements are used as vec4 parameter so manually assign
-		mat4 worldMatrix;
-		worldMatrix[0] = worldMatrix3x4Array[idx];
-		worldMatrix[1] = worldMatrix3x4Array[idx + 1];
-		worldMatrix[2] = worldMatrix3x4Array[idx + 2];
-		worldMatrix[3] = vec4(0);
-		// now weight this into final 
-		blendPos += (vertex * worldMatrix).xyz * blendWeights[bone];
-	}
-
-	// apply view / projection to position
-	gl_Position = viewProjectionMatrix * vec4(blendPos, 1);
-	
-	gl_FrontSecondaryColor = vec4(0,0,0,0);
-	gl_FrontColor = ambient;
-	gl_TexCoord[0] = uv0;
-}
Index: data/branches/Shader_HS18/programs/Example/GLSL/skinningTwoWeightsVp.glsl
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL/skinningTwoWeightsVp.glsl	(revision 12091)
+++ 	(revision )
@@ -1,63 +1,0 @@
-// Example GLSL program for skinning with two bone weights per vertex
-
-attribute vec4 vertex;
-attribute vec3 normal;
-attribute vec4 uv0;
-attribute vec4 blendIndices;
-attribute vec4 blendWeights;
-
-// 3x4 matrix, passed as vec4's for compatibility with GL 2.0
-// GL 2.0 supports 3x4 matrices
-// Support 24 bones ie 24*3, but use 72 since our parser can pick that out for sizing
-uniform vec4 worldMatrix3x4Array[72];
-uniform mat4 viewProjectionMatrix;
-uniform vec4 lightPos[2];
-uniform vec4 lightDiffuseColour[2];
-uniform vec4 ambient;
-uniform vec4 diffuse;
-
-varying vec4 colour;
-varying vec4 uv;
-
-void main()
-{
-	vec3 blendPos = vec3(0.0, 0.0, 0.0);
-	vec3 blendNorm = vec3(0.0, 0.0, 0.0);
-
-	for (int bone = 0; bone < 2; ++bone)
-	{
-		// perform matrix multiplication manually since no 3x4 matrices
-        // ATI GLSL compiler can't handle indexing an array within an array so calculate the inner index first
-		int idx = int(blendIndices[bone]) * 3;
-        // ATI GLSL compiler can't handle unrolling the loop so do it manually
-        // ATI GLSL has better performance when mat4 is used rather than using individual dot product
-        // There is a bug in ATI mat4 constructor (Cat 7.2) when indexed uniform array elements are used as vec4 parameter so manually assign
-		mat4 worldMatrix;
-		worldMatrix[0] = worldMatrix3x4Array[idx];
-		worldMatrix[1] = worldMatrix3x4Array[idx + 1];
-		worldMatrix[2] = worldMatrix3x4Array[idx + 2];
-		worldMatrix[3] = vec4(0);
-		// now weight this into final
-		float weight = blendWeights[bone];
-		blendPos += (vertex * worldMatrix).xyz * weight;
-
-		mat3 worldRotMatrix = mat3(worldMatrix[0].xyz, worldMatrix[1].xyz, worldMatrix[2].xyz);
-		blendNorm += (normal * worldRotMatrix) * weight;
-	}
-
-	blendNorm = normalize(blendNorm);
-
-	// apply view / projection to position
-	gl_Position = viewProjectionMatrix * vec4(blendPos, 1.0);
-
-	// simple vertex lighting model
-	vec3 lightDir0 = normalize(
-		lightPos[0].xyz -  (blendPos * lightPos[0].w));
-	vec3 lightDir1 = normalize(
-		lightPos[1].xyz -  (blendPos * lightPos[1].w));
-
-	colour = diffuse * (ambient + (clamp(dot(lightDir0, blendNorm), 0.0, 1.0) * lightDiffuseColour[0]) +
-		(clamp(dot(lightDir1, blendNorm), 0.0, 1.0) * lightDiffuseColour[1]));
-
-	uv = uv0;
-}
Index: data/branches/Shader_HS18/programs/Example/GLSL150/AmbientOneTexture.glsl
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL150/AmbientOneTexture.glsl	(revision 12091)
+++ 	(revision )
@@ -1,17 +1,0 @@
-#version 150
-
-uniform vec4 ambient;
-uniform mat4 worldViewProj;
-
-in vec4 position;
-
-out vec4 colour;
-
-/*
-  Basic ambient lighting vertex program for GLSL
-*/
-void main()
-{
-	gl_Position = worldViewProj * position;
-	colour = ambient;
-}
Index: data/branches/Shader_HS18/programs/Example/GLSL150/AmbientOneTextureWithUV.glsl
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL150/AmbientOneTextureWithUV.glsl	(revision 12091)
+++ 	(revision )
@@ -1,20 +1,0 @@
-#version 150
-
-uniform vec4 ambient;
-uniform mat4 worldViewProj;
-
-in vec4 position;
-in vec4 uv0;
-
-out vec4 ambColour;
-out vec4 ambientUV;
-
-/*
-  Basic ambient lighting vertex program for GLSL
-*/
-void main()
-{
-	gl_Position = worldViewProj * position;
-	ambColour = ambient;
-	ambientUV = uv0;
-}
Index: data/branches/Shader_HS18/programs/Example/GLSL150/Bloom2_ps20.glsl
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL150/Bloom2_ps20.glsl	(revision 12091)
+++ 	(revision )
@@ -1,31 +1,0 @@
-#version 150
-
-//-------------------------------
-//Bloom_ps20.glsl
-// Blends using weights the blurred image with the sharp one
-// Params:
-//   OriginalImageWeight
-//   BlurWeight
-//-------------------------------
-
-uniform sampler2D RT;
-uniform sampler2D Blur1;
-
-uniform float OriginalImageWeight;
-uniform float BlurWeight;
-
-out vec4 fragColour;
-in vec2 texCoord[5];
-
-void main()
-{
-    vec4 sharp;
-    vec4 blur;
-    
-
-    sharp = texture(RT, texCoord[0]);
-    blur = texture(Blur1, texCoord[0]);
-    
-    fragColour = ( (blur * BlurWeight) + (sharp * OriginalImageWeight) );
-    //fragColour = vec4(0);
-}
Index: data/branches/Shader_HS18/programs/Example/GLSL150/BlurH_ps20.glsl
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL150/BlurH_ps20.glsl	(revision 12091)
+++ 	(revision )
@@ -1,58 +1,0 @@
-#version 150
-
-//-------------------------------
-//BlurH_ps20.glsl
-// Horizontal Gaussian-Blur pass
-//-------------------------------
-
-uniform sampler2D Blur0;
-out vec4 fragColour;
-in vec2 texCoord[5];
-
-vec2 pos[11] = vec2[11]
-(
-	vec2( -5, 0),
-	vec2( -4, 0),
-	vec2( -3, 0),
-	vec2( -2, 0),
-	vec2( -1, 0),
-	vec2( 0, 0),
-	vec2( 1, 0),
-	vec2( 2, 0),
-	vec2( 3, 0),
-	vec2( 4, 0),
-	vec2( 5, 0)
-);
-
-//We use the Normal-gauss distribution formula
-//f(x) being the formula, we used f(0.5)-f(-0.5); f(1.5)-f(0.5)...
-float samples[11] = float[11]
-(//stddev=2.0
-0.01222447,
-0.02783468,
-0.06559061,
-0.12097757,
-0.17466632,
-
-0.19741265,
-
-0.17466632,
-0.12097757,
-0.06559061,
-0.02783468,
-0.01222447
-);
-
-void main()
-{
-    vec4 retVal;
-    
-    vec4 sum = vec4( 0 );
-
-    for( int i=0;i < 11; i++ )
-    {
-        sum += texture( Blur0, texCoord[0] + (pos[i] * 0.0100000) ) * samples[i];
-    }
-
-    fragColour = sum;
-}
Index: data/branches/Shader_HS18/programs/Example/GLSL150/BlurV_ps20.glsl
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL150/BlurV_ps20.glsl	(revision 12091)
+++ 	(revision )
@@ -1,64 +1,0 @@
-#version 150
-
-// Note, this won't work on ATI which is why it's not used
-// the issue is with the array initializers
-// no card supports GL_3DL_array_objects but it does work on nvidia, not on ATI
-//#extension GL_3DL_array_objects : enable
-
-//-------------------------------
-//BlurV_ps20.glsl
-// Vertical Gaussian-Blur pass
-//-------------------------------
-
-uniform sampler2D Blur0;
-out vec4 fragColour;
-in vec2 texCoord[5];
-
-vec2 pos[11]  = vec2[11](
-	vec2(0.0, -5.0),
-	vec2(0.0, -4.0),
-	vec2(0.0, -3.0),
-	vec2(0.0, -2.0),
-	vec2(0.0, -1.0),
-	vec2(0.0, 0.0),
-	vec2(0.0, 1.0),
-	vec2(0.0, 2.0),
-	vec2(0.0, 3.0),
-	vec2(0.0, 4.0),
-	vec2(0.0, 5.0)
-);
-
-//We use the Normal-gauss distribution formula
-//f(x) being the formula, we used f(0.5)-f(-0.5); f(1.5)-f(0.5)...
-float samples[11] = float[11] 
-(//stddev=2.0
-0.01222447,
-0.02783468,
-0.06559061,
-0.12097757,
-0.17466632,
-
-0.19741265,
-
-0.17466632,
-0.12097757,
-0.06559061,
-0.02783468,
-0.01222447
-);
-
-void main()
-{
-    vec4 retVal;
-    
-    vec4 sum;
-    int i = 0;
-
-    sum = vec4( 0 );
-    for( ;i < 11; i++ )
-    {
-        sum += texture( Blur0, texCoord[0] + (pos[i] * 0.0100000) ) * samples[i];
-    }
-
-    fragColour = sum;
-}
Index: data/branches/Shader_HS18/programs/Example/GLSL150/Blur_vs.glsl
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL150/Blur_vs.glsl	(revision 12091)
+++ 	(revision )
@@ -1,20 +1,0 @@
-#version 150
-
-in vec4 vertex;
-out vec2 texCoord[5];
-
-uniform mat4 worldViewProj;
-in vec2 uv0;
-
-void main()
-{
-	gl_Position = worldViewProj * vertex;
-
-	texCoord[0] = uv0;
-	
-	const float size = 0.01;
-	texCoord[1] = uv0 + vec2(0.0, 1.0)*size;
-	texCoord[2] = uv0 + vec2(0.0, 2.0)*size;
-	texCoord[3] = uv0 + vec2(0.0, -1.0)*size;
-	texCoord[4] = uv0 + vec2(0.0, -2.0)*size;
-}
Index: data/branches/Shader_HS18/programs/Example/GLSL150/BrightBloom2_ps20.glsl
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL150/BrightBloom2_ps20.glsl	(revision 12091)
+++ 	(revision )
@@ -1,33 +1,0 @@
-#version 150
-
-//-------------------------------
-//BrightBloom_ps20.glsl
-// High-pass filter for obtaining lumminance
-// We use an aproximation formula that is pretty fast:
-//   f(x) = ( -3 * ( x - 1 )^2 + 1 ) * 2
-//   Color += Grayscale( f(Color) ) + 0.6
-//
-// Special thanks to ATI for their great HLSL2GLSL utility
-//     http://sourceforge.net/projects/hlsl2glsl
-//-------------------------------
-
-uniform sampler2D RT;
-out vec4 fragColour;
-in vec2 oUv0;
-
-void main()
-{
-    vec4 tex;
-    vec4 bright4;
-    float bright;
-    
-    vec2 texCoord = oUv0.xy;
-
-    tex = texture( RT, texCoord);
-    tex -= 1.00000;
-    bright4 = -6.00000 * tex * tex + 2.00000;
-    bright = dot( bright4, vec4( 0.333333, 0.333333, 0.333333, 0.000000) );
-    tex += (bright + 0.600000);
-
-    fragColour = tex;
-}
Index: data/branches/Shader_HS18/programs/Example/GLSL150/BumpMapVPTangentParity.glsl
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL150/BumpMapVPTangentParity.glsl	(revision 12091)
+++ 	(revision )
@@ -1,51 +1,0 @@
-#version 150
-
-/* Bump mapping vertex program
-   In this program, we want to calculate the tangent space light vector
-   on a per-vertex level which will get passed to the fragment program,
-   or to the fixed function dot3 operation, to produce the per-pixel
-   lighting effect. 
-*/
-// parameters
-uniform vec4 lightPosition; // object space
-uniform mat4 worldViewProj;
-uniform vec4 lightDiffuse;
-
-in vec4 vertex;
-in vec3 normal;
-in vec4 tangent;
-in vec2 uv0;
-
-out vec2 oUv0;
-out vec3 oTSLightDir;
-out vec4 colour;
-
-void main()
-{
-	// Calculate output position
-	gl_Position = worldViewProj * vertex;
-
-	// Pass the main uvs straight through unchanged
-	oUv0 = uv0;
-
-	// Calculate tangent space light vector
-	// Get object space light direction
-	// Non-normalised since we'll do that in the fragment program anyway
-	vec3 lightDir = lightPosition.xyz - (vertex * lightPosition.w).xyz;
-
-	// Calculate the binormal (NB we assume both normal and tangent are
-	// already normalised)
-
-	// Fixed handedness
-	vec3 binormal = cross(normal, tangent.xyz) * tangent.www;
-
-	// Form a rotation matrix out of the vectors, column major for glsl es 
-	mat3 rotation = mat3(tangent.xyz,binormal,normal);
-//	mat3 rotation = mat3(vec3(tangent[0], binormal[0], normal[0]),
-//						vec3(tangent[1], binormal[1], normal[1]),
-//						vec3(tangent[2], binormal[2], normal[2]));
-	
-	// Transform the light vector according to this matrix
-	oTSLightDir = rotation * lightDir;
-	colour = lightDiffuse;
-}
Index: data/branches/Shader_HS18/programs/Example/GLSL150/DiffuseOneTexture.glsl
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL150/DiffuseOneTexture.glsl	(revision 12091)
+++ 	(revision )
@@ -1,16 +1,0 @@
-#version 150
-
-uniform sampler2D texMap;
-
-in vec4 colour;
-in vec4 uv;
-
-out vec4 fragColour;
-
-/*
-  Basic fragment program using texture and diffuse colour.
-*/
-void main()
-{
-	fragColour = texture(texMap, uv.xy) * colour;
-}
Index: data/branches/Shader_HS18/programs/Example/GLSL150/DualQuaternion.glsl
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL150/DualQuaternion.glsl	(revision 12091)
+++ 	(revision )
@@ -1,45 +1,0 @@
-#version 150
-
-mat2x4 blendTwoWeightsAntipod(vec4 blendWgt, vec4 blendIdx, vec4 dualQuaternions[24]);
-vec3 calculateBlendPosition(vec3 position, mat2x4 blendDQ);
-vec3 calculateBlendNormal(vec3 normal, mat2x4 blendDQ);
-
-uniform vec4 worldDualQuaternion2x4Array[24];
-uniform mat4 viewProjectionMatrix;
-uniform vec4   lightPos[2];
-uniform vec4   lightDiffuseColour[2];
-uniform vec4   ambient;
-
-in vec4 vertex;
-in vec3 normal;
-in vec4 blendIndices;
-in vec4 blendWeights;
-in vec4 uv0;
-
-out vec4 oUv0;
-out vec4 ambientColour;
-
-void main()
-{	
-	mat2x4 blendDQ = blendTwoWeightsAntipod(blendWeights, blendIndices, worldDualQuaternion2x4Array);
-
-	float len = length(blendDQ[0]);
-	blendDQ /= len;
-
-	vec3 blendPosition = calculateBlendPosition(vertex.xyz, blendDQ);
-		
-	//No need to normalize, the magnitude of the normal is preserved because only rotation is performed
-	vec3 blendNormal = calculateBlendNormal(normal, blendDQ);
-	
-	gl_Position =  viewProjectionMatrix * vec4(blendPosition, 1.0);
-	
-	// Lighting - support point and directional
-	vec3 lightDir0 = normalize(lightPos[0].xyz - (blendPosition * lightPos[0].w));
-	vec3 lightDir1 = normalize(lightPos[1].xyz - (blendPosition * lightPos[1].w));
-
-	oUv0 = uv0;
-
-	ambientColour = /*gl_FrontMaterial.diffuse **/ (ambient + (clamp(dot(lightDir0, blendNormal), 0.0, 1.0) * lightDiffuseColour[0]) + 
-		(clamp(dot(lightDir1, blendNormal), 0.0, 1.0) * lightDiffuseColour[1]));			
-}
-
Index: data/branches/Shader_HS18/programs/Example/GLSL150/DualQuaternion_Common.glsl
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL150/DualQuaternion_Common.glsl	(revision 12091)
+++ 	(revision )
@@ -1,68 +1,0 @@
-//All of these functions are based on dqs.cg from http://isg.cs.tcd.ie/kavanl/dq/
-/* dqs.cg
-
-  Dual quaternion skinning vertex shaders (no shading computations)
-
-  Version 1.0.3, November 1st, 2007
-
-  Copyright (C) 2006-2007 University of Dublin, Trinity College, All Rights 
-  Reserved
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the author(s) be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-
-  Author: Ladislav Kavan, kavanl@cs.tcd.ie
-
-*/
-
-#version 150
-
-mat2x4 blendTwoWeights(vec4 blendWgt, vec4 blendIdx, vec4 dualQuaternions[24])
-{
-	mat2x4 blendDQ = blendWgt.x*mat2x4(dualQuaternions[int(blendIdx.x) * 2], dualQuaternions[int(blendIdx.x) * 2 + 1]);
-	blendDQ += blendWgt.y*mat2x4(dualQuaternions[int(blendIdx.y) * 2], dualQuaternions[int(blendIdx.y) * 2 + 1]);
-
-	return blendDQ;
-}
-
-mat2x4 blendTwoWeightsAntipod(vec4 blendWgt, vec4 blendIdx, mat2x4 dualQuaternions[24])
-{
-	mat2x4 dq0 = dualQuaternions[int(blendIdx.x)];
-	mat2x4 dq1 = dualQuaternions[int(blendIdx.y)];
-
-	//Accurate antipodality handling. For speed increase, remove the following line, 
-	//though, the results will only be valid for rotations less than 180 degrees.
-	if (dot(dq0[0], dq1[0]) < 0.0) dq1 *= -1.0;
-	
-	mat2x4 blendDQ = blendWgt.x*dq0;
-	blendDQ += blendWgt.y*dq1;
-
-	return blendDQ;
-}
-
-vec3 calculateBlendPosition(vec3 position, mat2x4 blendDQ)
-{
-	vec3 blendPosition = position + 2.0*cross(blendDQ[0].yzw, cross(blendDQ[0].yzw, position) + blendDQ[0].x*position);
-	vec3 trans = 2.0*(blendDQ[0].x*blendDQ[1].yzw - blendDQ[1].x*blendDQ[0].yzw + cross(blendDQ[0].yzw, blendDQ[1].yzw));
-	blendPosition += trans;
-
-	return blendPosition;
-}
-
-vec3 calculateBlendNormal(vec3 normal, mat2x4 blendDQ)
-{
-	return normal + 2.0*cross(blendDQ[0].yzw, cross(blendDQ[0].yzw, normal) + blendDQ[0].x*normal);
-}
Index: data/branches/Shader_HS18/programs/Example/GLSL150/DualQuaternion_ShadowCaster.glsl
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL150/DualQuaternion_ShadowCaster.glsl	(revision 12091)
+++ 	(revision )
@@ -1,31 +1,0 @@
-#version 150
-
-mat2x4 blendTwoWeightsAntipod(vec4 blendWgt, vec4 blendIdx, vec4 dualQuaternions[24]);
-vec3 calculateBlendPosition(vec3 position, mat2x4 blendDQ);
-
-uniform vec4 worldDualQuaternion2x4Array[24];
-uniform mat4x4 viewProjectionMatrix;
-uniform vec4 ambient;
-
-in vec4 vertex;
-in vec4 blendIndices;
-in vec4 blendWeights;
-
-out vec4 ambientColour;
-
-//Shadow caster pass
-void main()
-{
-	mat2x4 blendDQ = blendTwoWeightsAntipod(blendWeights, blendIndices, worldDualQuaternion2x4Array);
-
-	float len = length(blendDQ[0]);
-	blendDQ /= len;
-
-	vec3 blendPosition = calculateBlendPosition(vertex.xyz, blendDQ);
-
-	// view / projection
-	gl_Position = viewProjectionMatrix * vec4(blendPosition, 1.0);
-	
-	ambientColour = ambient;
-}
-
Index: data/branches/Shader_HS18/programs/Example/GLSL150/DualQuaternion_TwoPhase.glsl
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL150/DualQuaternion_TwoPhase.glsl	(revision 12091)
+++ 	(revision )
@@ -1,81 +1,0 @@
-#version 150
-
-mat2x4 blendTwoWeightsAntipod(vec4 blendWgt, vec4 blendIdx, mat2x4 dualQuaternions[24]);
-vec3 calculateBlendPosition(vec3 position, mat2x4 blendDQ);
-vec3 calculateBlendNormal(vec3 normal, mat2x4 blendDQ);
-
-mat3 adjointTransposeMatrix(mat3 M)
-{
-	mat3 atM;
-	atM[0][0] = M[2][2] * M[1][1] - M[2][1] * M[1][2];
-	atM[1][0] = M[2][1] * M[0][2] - M[0][1] * M[2][2];
-	atM[2][0] = M[0][1] * M[1][2] - M[0][2] * M[1][1];
-
-	atM[0][1] = M[2][0] * M[1][2] - M[2][2] * M[1][0];
-	atM[1][1] = M[2][2] * M[0][0] - M[2][0] * M[0][2];
-	atM[2][1] = M[0][2] * M[1][0] - M[0][0] * M[1][2];
-
-	atM[0][2] = M[2][1] * M[1][0] - M[2][0] * M[1][1];
-	atM[1][2] = M[0][1] * M[2][0] - M[2][1] * M[0][0];
-	atM[2][2] = M[0][0] * M[1][1] - M[0][1] * M[1][0];
-
-	return atM;
-}
-
-uniform vec4 worldDualQuaternion2x4Array[24];
-uniform vec4 scaleM[72];
-uniform mat4 viewProjectionMatrix;
-uniform vec4 lightPos[2];
-uniform vec4 lightDiffuseColour[2];
-uniform vec4 ambient;
-
-in vec4 vertex;
-in vec3 normal;
-in vec4 blendIndices;
-in vec4 blendWeights;
-in vec4 uv0;
-
-out vec4 oUv0;
-out vec4 ambientColour;
-
-void main()
-{	
-	//First phase - applies scaling and shearing:
-	int blendIndicesX = int(blendIndices.x) * 3;
-	int blendIndicesY = int(blendIndices.y) * 3;
-	
-	mat3x4 blendS = blendWeights.x*mat3x4(scaleM[blendIndicesX], 
-		scaleM[blendIndicesX + 1], scaleM[blendIndicesX + 2]);
-	
-	blendS += blendWeights.y*mat3x4(scaleM[blendIndicesY],
-	            scaleM[blendIndicesY + 1], scaleM[blendIndicesY + 2]);
-
-	mat4x3 blendF = transpose(blendS);
-
-	vec3 pass1_position = blendF * vertex;
-
-	mat3x3 blendSrotAT = adjointTransposeMatrix(mat3x3(blendF));
-	vec3 pass1_normal = normalize(blendSrotAT * normal);
-
-	//Second phase
-	mat2x4 blendDQ = blendTwoWeightsAntipod(blendWeights, blendIndices, worldDualQuaternion2x4Array);
-
-	blendDQ /= length(blendDQ[0]);
-
-	vec3 blendPosition = calculateBlendPosition(pass1_position, blendDQ);
-
-	//No need to normalize, the magnitude of the normal is preserved because only rotation is performed
-	vec3 blendNormal = calculateBlendNormal(pass1_normal, blendDQ);
-	
-	gl_Position =  viewProjectionMatrix * vec4(blendPosition, 1.0);
-
-	// Lighting - support point and directional
-	vec3 lightDir0 = normalize(lightPos[0].xyz - (blendPosition * lightPos[0].w));
-	vec3 lightDir1 = normalize(lightPos[1].xyz - (blendPosition * lightPos[1].w));
-
-	oUv0 = uv0;
-
-	ambientColour = /*gl_FrontMaterial.diffuse **/ (ambient + (clamp(dot(lightDir0, blendNormal), 0.0, 1.0) * lightDiffuseColour[0]) + 
-		(clamp(dot(lightDir1, blendNormal), 0.0, 1.0) * lightDiffuseColour[1]));			
-}
-
Index: data/branches/Shader_HS18/programs/Example/GLSL150/DualQuaternion_TwoPhaseShadowCaster.glsl
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL150/DualQuaternion_TwoPhaseShadowCaster.glsl	(revision 12091)
+++ 	(revision )
@@ -1,44 +1,0 @@
-#version 150
-
-mat2x4 blendTwoWeightsAntipod(vec4 blendWgt, vec4 blendIdx, vec4 dualQuaternions[24]);
-vec3 calculateBlendPosition(vec3 position, mat2x4 blendDQ);
-
-uniform vec4 worldDualQuaternion2x4Array[24];
-uniform vec4 scaleM[72];
-uniform mat4 viewProjectionMatrix;
-uniform vec4   ambient;
-
-in vec4 vertex;
-in vec4 blendIndices;
-in vec4 blendWeights;
-
-out vec4 ambientColour;
-
-void main()
-{	
-	//First phase - applies scaling and shearing:
-	int blendIndicesX = int(blendIndices.x) * 3;
-	int blendIndicesY = int(blendIndices.y) * 3;
-	
-	mat3x4 blendS = blendWeights.x*mat3x4(scaleM[blendIndicesX], 
-		scaleM[blendIndicesX + 1], scaleM[blendIndicesX + 2]);
-	
-	blendS += blendWeights.y*mat3x4(scaleM[blendIndicesY],
-	    scaleM[blendIndicesY + 1], scaleM[blendIndicesY + 2]);
-
-	mat4x3 blendF = transpose(blendS);
-
-	vec3 pass1_position = blendF * vertex;
-
-	//Second phase
-	mat2x4 blendDQ = blendTwoWeightsAntipod(blendWeights, blendIndices, worldDualQuaternion2x4Array);
-
-	blendDQ /= length(blendDQ[0]);
-
-	vec3 blendPosition = calculateBlendPosition(pass1_position, blendDQ);
-	
-	gl_Position =  viewProjectionMatrix * vec4(blendPosition, 1.0);
-
-	ambientColour = ambient;			
-}
-
Index: data/branches/Shader_HS18/programs/Example/GLSL150/Dyn-TextFP.glsl
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL150/Dyn-TextFP.glsl	(revision 12091)
+++ 	(revision )
@@ -1,14 +1,0 @@
-#version 150
-
-uniform sampler2D Image;
-uniform sampler2D Thaw;
-in vec4 oUv;
-out vec4 fragColour;
-
-void main(void)
-{
-    vec4 c0 = texture(Image, oUv.xy);
-    vec4 c1 = texture(Thaw, oUv.xy);
-
-	fragColour = c0 * c1;
-}
Index: data/branches/Shader_HS18/programs/Example/GLSL150/Dyn-TextVP.glsl
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL150/Dyn-TextVP.glsl	(revision 12091)
+++ 	(revision )
@@ -1,13 +1,0 @@
-#version 150
-
-in vec4 uv0;
-in vec4 vertex;
-out vec4 oUv;
-
-uniform mat4 worldViewProj;
-
-void main(void)
-{
-	gl_Position = worldViewProj * vertex;
-	oUv = uv0;
-}
Index: data/branches/Shader_HS18/programs/Example/GLSL150/Example_BumpMappingFp.glsl
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL150/Example_BumpMappingFp.glsl	(revision 12091)
+++ 	(revision )
@@ -1,29 +1,0 @@
-#version 150
-
-uniform vec4 lightDiffuse;
-uniform sampler2D normalMap;
-
-in vec4 oUv0;
-in vec3 oTSLightDir;
-
-out vec4 fragColour;
-
-// General functions
-
-// Expand a range-compressed vector
-vec3 expand(vec3 v)
-{
-	return (v - 0.5) * 2.0;
-}
-
-void main()
-{
-	// Retrieve normalised light vector, expand from range-compressed
-	vec3 lightVec = normalize(oTSLightDir).xyz;
-
-	// Get bump map vector, again expand from range-compressed
-	vec3 bumpVec = expand(texture(normalMap, oUv0.xy).xyz);
-
-	// Calculate dot product
-	fragColour = lightDiffuse * dot(bumpVec, lightVec);
-}
Index: data/branches/Shader_HS18/programs/Example/GLSL150/Example_BumpMappingShadowRcvFp.glsl
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL150/Example_BumpMappingShadowRcvFp.glsl	(revision 12091)
+++ 	(revision )
@@ -1,34 +1,0 @@
-#version 150
-
-// General functions
-
-// Expand a range-compressed vector
-vec3 expand(vec3 v)
-{
-	return (v - 0.5) * 2.0;
-}
-
-uniform sampler2D shadowMap;
-uniform sampler2D normalMap;
-uniform vec4 lightDiffuse;
-
-in vec4 uvproj;
-in vec4 oUv0;
-in vec3 oTSLightDir;
-
-out vec4 fragColour;
-
-void main()
-{
-	// retrieve normalised light vector, expand from range-compressed
-	vec3 lightVec = expand(normalize(oTSLightDir).xyz);
-
-	// get bump map vector, again expand from range-compressed
-	vec3 bumpVec = expand(texture(normalMap, oUv0.xy).xyz);
-
-	// get shadow value
-	vec3 shadow = textureProj(shadowMap, uvproj).xyz;
-
-	// Calculate dot product
-	fragColour = vec4(shadow * lightDiffuse.xyz * dot(bumpVec, lightVec), 1.0);
-}
Index: data/branches/Shader_HS18/programs/Example/GLSL150/Example_BumpMappingShadowRcvVp.glsl
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL150/Example_BumpMappingShadowRcvVp.glsl	(revision 12091)
+++ 	(revision )
@@ -1,52 +1,0 @@
-#version 150
-
-/* Bump mapping vertex program for shadow receiving
-   In this program, we want to calculate the tangent space light vector
-   on a per-vertex level which will get passed to the fragment program,
-   or to the fixed function dot3 operation, to produce the per-pixel
-   lighting effect. 
-*/
-
-// parameters
-uniform vec4 lightPosition; // object space
-uniform mat4 worldViewProj;
-uniform mat4 worldMatrix;
-uniform mat4 texViewProj;
-
-in vec4 vertex;
-in vec3 normal;
-in vec3 tangent;
-in vec4 uv0;
-
-out vec4 uvproj;
-out vec4 oUv0;
-out vec3 oTSLightDir;
-
-void main()
-{
-	// Calculate output position
-	gl_Position = worldViewProj * vertex;
-
-	// Pass the main uvs straight through unchanged
-	oUv0 = uv0;
-
-	// Calculate tangent space light vector
-	// Get object space light direction
-	// Non-normalised since we'll do that in the fragment program anyway
-	vec3 lightDir = lightPosition.xyz - (vertex * lightPosition.w).xyz;
-
-	// Calculate the binormal (NB we assume both normal and tangent are
-	// already normalised)
-	vec3 binormal = cross(normal, tangent);
-	
-	// Form a rotation matrix out of the vectors, column major for glsl es 
-	mat3 rotation = mat3(vec3(tangent[0], binormal[0], normal[0]),
-						vec3(tangent[1], binormal[1], normal[1]),
-						vec3(tangent[2], binormal[2], normal[2]));
-	
-	// Transform the light vector according to this matrix
-	oTSLightDir = rotation * lightDir;
-
-	// Projection
-	uvproj = texViewProj * (worldMatrix * vertex);
-}
Index: data/branches/Shader_HS18/programs/Example/GLSL150/Example_BumpMappingSpecularFp.glsl
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL150/Example_BumpMappingSpecularFp.glsl	(revision 12091)
+++ 	(revision )
@@ -1,41 +1,0 @@
-#version 150
-
-// General functions
-
-// Expand a range-compressed vector
-vec3 expand(vec3 v)
-{
-	return (v - 0.5) * 2.0;
-}
-
-uniform vec4 lightDiffuse;
-uniform vec4 lightSpecular;
-uniform sampler2D normalMap;
-
-in vec4 oUv0;
-in vec3 oTSLightDir;
-in vec3 oTSHalfAngle;
-
-out vec4 fragColour;
-
-// NOTE: GLSL does not have the saturate function.  But it is equivalent to clamp(val, 0.0, 1.0)
-
-/* Fragment program which supports specular component */
-void main()
-{
-	// retrieve normalised light vector
-	vec3 lightVec = normalize(oTSLightDir);
-
-	// retrieve half angle and normalise
-	vec3 halfAngle = normalize(oTSHalfAngle);
-
-	// get bump map vector, again expand from range-compressed
-	vec3 bumpVec = expand(texture(normalMap, oUv0.xy).xyz);
-
-	// Pre-raise the specular exponent to the eight power
-	float specFactor = pow(clamp(dot(bumpVec, halfAngle), 0.0, 1.0), 4.0);
-
-	// Calculate dot product for diffuse
-	fragColour = (lightDiffuse * clamp(dot(bumpVec, lightVec), 0.0, 1.0)) + 
-			(lightSpecular * specFactor);
-}
Index: data/branches/Shader_HS18/programs/Example/GLSL150/Example_BumpMappingSpecularVp.glsl
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL150/Example_BumpMappingSpecularVp.glsl	(revision 12091)
+++ 	(revision )
@@ -1,47 +1,0 @@
-#version 150
-
-// General functions
-// parameters
-uniform vec4 lightPosition; // object space
-uniform vec3 eyePosition;   // object space
-uniform mat4 worldViewProj;
-
-in vec4 vertex;
-in vec3 normal;
-in vec3 tangent;
-in vec4 uv0;
-
-out vec4 oUv0;
-out vec3 oTSLightDir;
-out vec3 oTSHalfAngle;
-
-/* Vertex program which includes specular component */
-void main()
-{
-	// calculate output position
-	gl_Position = worldViewProj * vertex;
-
-	// pass the main uvs straight through unchanged
-	oUv0 = uv0;
-
-	// calculate tangent space light vector
-	// Get object space light direction
-	vec3 lightDir = normalize(lightPosition.xyz - (vertex * lightPosition.w).xyz);
-
-	// Calculate the binormal (NB we assume both normal and tangent are
-	// already normalised)
-	vec3 binormal = cross(normal, tangent);
-	
-	// Form a rotation matrix out of the vectors
-	mat3 rotation = mat3(vec3(tangent[0], binormal[0], normal[0]),
-						vec3(tangent[1], binormal[1], normal[1]),
-						vec3(tangent[2], binormal[2], normal[2]));
-	
-	// Transform the light vector according to this matrix
-	oTSLightDir = rotation * lightDir;
-
-	// Calculate half-angle in tangent space
-	vec3 eyeDir = normalize(eyePosition - vertex.xyz);
-	vec3 halfAngle = normalize(eyeDir + lightDir);
-	oTSHalfAngle = rotation * halfAngle;
-}
Index: data/branches/Shader_HS18/programs/Example/GLSL150/Example_BumpMappingVp.glsl
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL150/Example_BumpMappingVp.glsl	(revision 12091)
+++ 	(revision )
@@ -1,47 +1,0 @@
-#version 150
-
-/* Bump mapping vertex program
-   In this program, we want to calculate the tangent space light vector
-   on a per-vertex level which will get passed to the fragment program,
-   or to the fixed function dot3 operation, to produce the per-pixel
-   lighting effect. 
-*/
-// parameters
-uniform vec4 lightPosition; // object space
-uniform mat4 worldViewProj;
-
-in vec4 vertex;
-in vec3 normal;
-in vec3 tangent;
-in vec4 uv0;
-
-out vec4 oUv0;
-out vec3 oTSLightDir;
-
-void main()
-{
-	// Calculate output position
-	gl_Position = worldViewProj * vertex;
-
-	// Pass the main uvs straight through unchanged
-	oUv0 = uv0;
-
-	// Calculate tangent space light vector
-	// Get object space light direction
-	// Non-normalised since we'll do that in the fragment program anyway
-	vec3 lightDir = lightPosition.xyz - (vertex * lightPosition.w).xyz;
-
-	// Calculate the binormal (NB we assume both normal and tangent are
-	// already normalised)
-
-	// Fixed handedness
-	vec3 binormal = cross(normal, tangent);
-
-	// Form a rotation matrix out of the vectors, column major for glsl es 
-	mat3 rotation = mat3(vec3(tangent[0], binormal[0], normal[0]),
-						vec3(tangent[1], binormal[1], normal[1]),
-						vec3(tangent[2], binormal[2], normal[2]));
-	
-	// Transform the light vector according to this matrix
-	oTSLightDir = rotation * lightDir;
-}
Index: data/branches/Shader_HS18/programs/Example/GLSL150/Example_FresnelFp.glsl
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL150/Example_FresnelFp.glsl	(revision 12091)
+++ 	(revision )
@@ -1,39 +1,0 @@
-#version 150
-
-uniform vec4 tintColour;
-uniform float noiseScale;
-uniform float fresnelBias;
-uniform float fresnelScale;
-uniform float fresnelPower;
-uniform sampler2D noiseMap;
-uniform sampler2D reflectMap;
-uniform sampler2D refractMap;
-
-in vec3 noiseCoord;
-in vec4 projectionCoord;
-in vec3 eyeDir;
-in vec3 oNormal;
-
-out vec4 fragColour;
-
-// Fragment program for distorting a texture using a 3D noise texture
-void main()
-{
-	// Do the tex projection manually so we can distort _after_
-	vec2 final = projectionCoord.xy / projectionCoord.w;
-
-	// Noise
-	vec3 noiseNormal = (texture(noiseMap, (noiseCoord.xy / 5.0)).rgb - 0.5).rbg * noiseScale;
-	final += noiseNormal.xz;
-
-	// Fresnel
-	//normal = normalize(normal + noiseNormal.xz);
-	float fresnel = fresnelBias + fresnelScale * pow(1.0 + dot(eyeDir, oNormal), fresnelPower);
-
-	// Reflection / refraction
-	vec4 reflectionColour = texture(reflectMap, final);
-	vec4 refractionColour = texture(refractMap, final) + tintColour;
-
-	// Final colour
-	fragColour = mix(refractionColour, reflectionColour, fresnel);
-}
Index: data/branches/Shader_HS18/programs/Example/GLSL150/Example_FresnelVp.glsl
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL150/Example_FresnelVp.glsl	(revision 12091)
+++ 	(revision )
@@ -1,36 +1,0 @@
-#version 150
-
-in vec4 uv0;
-in vec4 position;
-in vec3 normal;
-
-uniform mat4 worldViewProjMatrix;
-uniform vec3 eyePosition; // object space
-uniform float timeVal;
-uniform float scale;  // the amount to scale the noise texture by
-uniform float scroll; // the amount by which to scroll the noise
-uniform float noise;  // the noise perturb as a factor of the time
-
-out vec3 noiseCoord;
-out vec4 projectionCoord;
-out vec3 eyeDir;
-out vec3 oNormal;
-
-// Vertex program for fresnel reflections / refractions
-void main()
-{
-	gl_Position = worldViewProjMatrix * position;
-	// Projective texture coordinates, adjust for mapping
-	mat4 scalemat = mat4(0.5, 0.0, 0.0, 0.0, 
-                         0.0, -0.5, 0.0, 0.0,
-                         0.0, 0.0, 0.5, 0.0,
-                         0.5, 0.5, 0.5, 1.0);
-	projectionCoord = scalemat * gl_Position;
-
-	// Noise map coords
-	noiseCoord.xy = (uv0.xy + (timeVal * scroll)) * scale;
-	noiseCoord.z = noise * timeVal;
-
-	eyeDir = normalize(position.xyz - eyePosition); 
-	oNormal = normal.rgb;
-}
Index: data/branches/Shader_HS18/programs/Example/GLSL150/Example_TextureArrayPS.glsl
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL150/Example_TextureArrayPS.glsl	(revision 12091)
+++ 	(revision )
@@ -1,17 +1,0 @@
-#version 150
-
-uniform sampler2DArray TextureArrayTex;
-in vec4 oUv;
-out vec4 fragColour;
-
-void main(void)
-{
-	vec4 texcoord;
-	texcoord = oUv;
-	texcoord.z = floor(texcoord.z);
-    vec4 c0 = texture(TextureArrayTex, texcoord.xyz);
-	texcoord.z += 1.0;
-    vec4 c1 = texture(TextureArrayTex, texcoord.xyz);
-
-	fragColour = mix(c0, c1, fract(oUv.z));
-}
Index: data/branches/Shader_HS18/programs/Example/GLSL150/Example_TextureArrayVS.glsl
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL150/Example_TextureArrayVS.glsl	(revision 12091)
+++ 	(revision )
@@ -1,13 +1,0 @@
-#version 150
-
-in vec4 uv0;
-in vec4 vertex;
-out vec4 oUv;
-
-uniform mat4 worldViewProj;
-
-void main(void)
-{
-	gl_Position = worldViewProj * vertex;
-	oUv = uv0;
-}
Index: data/branches/Shader_HS18/programs/Example/GLSL150/GlassFP.glsl
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL150/GlassFP.glsl	(revision 12091)
+++ 	(revision )
@@ -1,14 +1,0 @@
-#version 150
-
-uniform sampler2D RT;
-uniform sampler2D NormalMap;
-
-in vec2 oUv0;
-out vec4 fragColour;
-
-void main()
-{
-	vec4 normal = 2.0 * (texture(NormalMap, oUv0 * 2.5) - 0.5);
-
-	fragColour = texture(RT, oUv0 + normal.xy * 0.05);
-}
Index: data/branches/Shader_HS18/programs/Example/GLSL150/GrayScale.glsl
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL150/GrayScale.glsl	(revision 12091)
+++ 	(revision )
@@ -1,11 +1,0 @@
-#version 150
-
-uniform sampler2D RT;
-in vec2 oUv0;
-out vec4 fragColour;
-
-void main()
-{
-    vec3 greyscale = vec3(dot(texture(RT, oUv0).rgb, vec3(0.3, 0.59, 0.11)));
-	fragColour = vec4(greyscale, 1.0);
-}
Index: data/branches/Shader_HS18/programs/Example/GLSL150/HWBasicInstancing.vert
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL150/HWBasicInstancing.vert	(revision 12091)
+++ 	(revision )
@@ -1,69 +1,0 @@
-//---------------------------------------------------------------------------
-//These materials/shaders are part of the NEW InstanceManager implementation
-//Written by Matias N. Goldberg ("dark_sylinc")
-//---------------------------------------------------------------------------
-#version 150
-
-//Vertex input
-in vec4 vertex;
-in vec3 normal;
-in vec4 uv0;
-in vec4 uv1;
-in vec4 uv2;
-in vec4 uv3;
-in vec3 tangent;
-
-//Parameters
-uniform mat4 viewProjMatrix;
-
-#if (DEPTH_SHADOWCASTER || DEPTH_SHADOWRECEIVER)
-uniform vec4 depthRange;
-#endif
-
-#if DEPTH_SHADOWRECEIVER
-uniform mat4 texViewProjMatrix;
-#endif
-
-//Output
-#if DEPTH_SHADOWCASTER
-	out vec2 depth;
-#else
-	out vec2 _uv0;
-	out vec3 oNormal;
-	out vec3 oVPos;
-	#if DEPTH_SHADOWRECEIVER
-		out vec4 oLightSpacePos;
-	#endif
-#endif
-
-//---------------------------------------------
-//Main Vertex Shader
-//---------------------------------------------
-void main(void)
-{
-	mat4 worldMatrix;
-	worldMatrix[0] = uv1;
-	worldMatrix[1] = uv2;
-	worldMatrix[2] = uv3;
-	worldMatrix[3] = vec4( 0, 0, 0, 1 );
-
-	vec4 worldPos		= vertex * worldMatrix;
-	vec3 worldNorm		= normal * mat3(worldMatrix);
-
-	//Transform the position
-	gl_Position			= viewProjMatrix * worldPos;
-	
-#if DEPTH_SHADOWCASTER
-	depth.x				= (gl_Position.z - depthRange.x) * depthRange.w;
-	depth.y				= depthRange.w;
-#else
-	_uv0		= uv0.xy;
-	oNormal		= worldNorm;
-	oVPos		= worldPos.xyz;
-
-	#if DEPTH_SHADOWRECEIVER
-		oLightSpacePos		= texViewProjMatrix * worldPos;
-		oLightSpacePos.z	= (oLightSpacePos.z - depthRange.x) * depthRange.w;
-	#endif
-#endif
-}
Index: data/branches/Shader_HS18/programs/Example/GLSL150/HW_VTFInstancing.vert
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL150/HW_VTFInstancing.vert	(revision 12091)
+++ 	(revision )
@@ -1,131 +1,0 @@
-//---------------------------------------------------------------------------
-//These materials/shaders are part of the NEW InstanceManager implementation
-//Written by Matias N. Goldberg ("dark_sylinc")
-//---------------------------------------------------------------------------
-#version 150
-
-//Vertex input
-in vec4 vertex;
-in vec3 normal;
-
-#ifdef BONE_TWO_WEIGHTS
-	in vec4 blendWeights;
-#endif
-
-in vec4 uv0;
-in vec4 uv1;
-in vec4 uv2;
-	
-#if BONE_MATRIX_LUT
-	in vec4 uv3;
-	in vec4 uv4;
-	in vec4 uv5;
-#endif
-
-in vec3 tangent;
-
-//Parameters
-uniform mat4 viewProjMatrix;
-uniform sampler2D matrixTexture;
-
-#if (DEPTH_SHADOWCASTER || DEPTH_SHADOWRECEIVER)
-uniform vec4 depthRange;
-#endif
-
-#if DEPTH_SHADOWRECEIVER
-uniform mat4 texViewProjMatrix;
-#endif
-
-//Output
-#if DEPTH_SHADOWCASTER
-	out vec2 depth;
-#else
-	out vec2 _uv0;
-	out vec3 oNormal;
-	out vec3 oVPos;
-	#if DEPTH_SHADOWRECEIVER
-		out vec4 oLightSpacePos;
-	#endif
-#endif
-
-vec3 calculateBlendPosition(vec3 position, mat2x4 blendDQ)
-{
-	vec3 blendPosition = position + 2.0*cross(blendDQ[0].yzw, cross(blendDQ[0].yzw, position) + blendDQ[0].x*position);
-	vec3 trans = 2.0*(blendDQ[0].x*blendDQ[1].yzw - blendDQ[1].x*blendDQ[0].yzw + cross(blendDQ[0].yzw, blendDQ[1].yzw));
-	blendPosition += trans;
-
-	return blendPosition;
-}
-
-vec3 calculateBlendNormal(vec3 normal, mat2x4 blendDQ)
-{
-	return normal + 2.0*cross(blendDQ[0].yzw, cross(blendDQ[0].yzw, normal) + blendDQ[0].x*normal);
-}
-
-//---------------------------------------------
-//Main Vertex Shader
-//---------------------------------------------
-void main(void)
-{
-	vec4 worldPos;
-	vec3 worldNorm;
-
-#ifdef ST_DUAL_QUATERNION
-	mat2x4 blendDQ;	
-	blendDQ[0] = texture( matrixTexture, vec2(uv1.x, 0.0) + uv2.xy );
-	blendDQ[1] = texture( matrixTexture, vec2(uv1.y, 0.0) + uv2.xy );
-#ifdef BONE_TWO_WEIGHTS
-	mat2x4 blendDQ2;
-	blendDQ2[0] = texture( matrixTexture, vec2(uv1.z, 0.0) + uv2.xy );
-	blendDQ2[1] = texture( matrixTexture, vec2(uv1.w, 0.0) + uv2.xy );
-
-	//Accurate antipodality handling. For speed increase, remove the following line
-	if (dot(blendDQ[0], blendDQ2[0]) < 0.0) blendDQ2 *= -1.0;
-	
-	//Blend the dual quaternions based on the weights
-	blendDQ *= blendWeights.x;
-	blendDQ += blendWeights.y*blendDQ2;
-	//Normalize the resultant dual quaternion
-	blendDQ /= length(blendDQ[0]);
-#endif
-	worldPos = vec4(calculateBlendPosition(vertex.xyz, blendDQ), 1.0);
-	worldNorm = calculateBlendNormal(normal, blendDQ);
-#else
-	mat4 worldMatrix;
-	worldMatrix[0] = texture( matrixTexture, uv1.xw + uv2.xy );
-	worldMatrix[1] = texture( matrixTexture, uv1.yw + uv2.xy );
-	worldMatrix[2] = texture( matrixTexture, uv1.zw + uv2.xy );
-	worldMatrix[3] = vec4( 0, 0, 0, 1 );
-
-	worldPos		= vertex * worldMatrix;
-	worldNorm		= normal * mat3(worldMatrix);
-#endif
-
-#if BONE_MATRIX_LUT
-	mat4 worldCompMatrix;
-	worldCompMatrix[0] = uv3;
-	worldCompMatrix[1] = uv4;
-	worldCompMatrix[2] = uv5;
-	worldCompMatrix[3] = vec4( 0, 0, 0, 1 );
-	
-	worldPos =  worldPos * worldCompMatrix;
-	worldNorm = worldNorm * mat3(worldCompMatrix);
-#endif
-
-	//Transform the position
-	gl_Position			= viewProjMatrix * worldPos;
-	
-#if DEPTH_SHADOWCASTER
-	depth.x				= (gl_Position.z - depthRange.x) * depthRange.w;
-	depth.y				= depthRange.w;
-#else
-	_uv0		= uv0.xy;
-	oNormal		= worldNorm;
-	oVPos		= worldPos.xyz;
-
-	#if DEPTH_SHADOWRECEIVER
-		oLightSpacePos		= texViewProjMatrix * worldPos;
-		oLightSpacePos.z	= (oLightSpacePos.z - depthRange.x) * depthRange.w;
-	#endif
-#endif
-}
Index: data/branches/Shader_HS18/programs/Example/GLSL150/HeatBlurVp.glsl
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL150/HeatBlurVp.glsl	(revision 12091)
+++ 	(revision )
@@ -1,14 +1,0 @@
-#version 150
-
-uniform vec4 position;
-out vec2 uv;
-
-uniform mat4 worldViewProj;
-in vec4 vertex;
-in vec2 uv0;
-
-void main()
-{
-    gl_Position = worldViewProj * vertex;
-    uv  = uv0;
-}
Index: data/branches/Shader_HS18/programs/Example/GLSL150/Instancing.frag
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL150/Instancing.frag	(revision 12091)
+++ 	(revision )
@@ -1,69 +1,0 @@
-//---------------------------------------------------------------------------
-//These materials/shaders are part of the NEW InstanceManager implementation
-//Written by Matias N. Goldberg ("dark_sylinc")
-//---------------------------------------------------------------------------
-
-#version 150
-
-uniform sampler2D diffuseMap;
-
-uniform vec4	lightPosition;
-uniform vec3	cameraPosition;
-uniform vec3 	lightAmbient;
-uniform vec3	lightDiffuse;
-uniform vec3	lightSpecular;
-uniform vec4	lightAttenuation;
-uniform float	lightGloss;
-
-#if DEPTH_SHADOWRECEIVER
-uniform float invShadowMapSize;
-uniform sampler2DShadow shadowMap;
-
-//declare external function
-//vec4 calcDepthShadow(in vec4 inColour, in float lum);
-float calcDepthShadow(sampler2DShadow shadowMap, vec4 uv, float invShadowMapSize);
-#endif
-
-in vec2 _uv0;
-in vec3 oNormal;
-in vec3 oVPos;
-#if DEPTH_SHADOWRECEIVER
-	in vec4 oLightSpacePos;
-#endif
-out vec4 fragColour;
-
-//---------------------------------------------
-//Main Pixel Shader
-//---------------------------------------------
-void main(void)
-{
-	vec4 color = texture( diffuseMap, _uv0 );
-
-	float fShadow = 1.0;
-#if DEPTH_SHADOWRECEIVER
-	fShadow = calcDepthShadow( shadowMap, oLightSpacePos, invShadowMapSize );
-#endif
-
-	vec4 baseColour = texture( diffuseMap, _uv0 );
-
-	//Blinn-Phong lighting
-	vec3 normal	= normalize( oNormal );
-	vec3 lightDir		= lightPosition.xyz - oVPos * lightPosition.w;
-	vec3 eyeDir			= normalize( cameraPosition - oVPos );
-
-	float fLength	= length( lightDir );
-	lightDir			= normalize( lightDir );
-
-	float NdotL	= max( 0.0, dot( normal, lightDir ) );
-	vec3 halfVector		= normalize(lightDir + eyeDir);
-	float HdotN	= max( 0.0, dot( halfVector, normal ) );
-	
-	vec3 ambient  = lightAmbient * baseColour.xyz;
-	vec3 diffuse  = lightDiffuse * NdotL * baseColour.xyz;
-	vec3 specular = lightSpecular * pow( HdotN, lightGloss );
-	
-	vec3 directLighting = (diffuse + specular) * fShadow;
-	
-	fragColour = vec4( directLighting + ambient, baseColour.a );
-	//fragColour = baseColour;
-}
Index: data/branches/Shader_HS18/programs/Example/GLSL150/InstancingMisc.vert
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL150/InstancingMisc.vert	(revision 12091)
+++ 	(revision )
@@ -1,62 +1,0 @@
-//---------------------------------------------------------------------------
-//These materials/shaders are part of the NEW InstanceManager implementation
-//Written by Matias N. Goldberg ("dark_sylinc")
-//---------------------------------------------------------------------------
-#version 150
-
-//Vertex input
-in vec4 vertex;
-in vec3 normal;
-in vec3 tangent;
-in vec4 uv0;
-in vec4 blendIndices;
-in vec4 blendWeights;
-
-//Parameters
-uniform mat4 viewProjMatrix;
-uniform mat4 worldMatrix;
-
-#if (DEPTH_SHADOWCASTER || DEPTH_SHADOWRECEIVER)
-uniform vec4 depthRange;
-#endif
-
-#if DEPTH_SHADOWRECEIVER
-uniform mat4 texViewProjMatrix;
-#endif
-
-//Output
-#if DEPTH_SHADOWCASTER
-	out vec2 depth;
-#else
-	out vec2 _uv0;
-	out vec3 oNormal;
-	out vec3 oVPos;
-	#if DEPTH_SHADOWRECEIVER
-		out vec4 oLightSpacePos;
-	#endif
-#endif
-//---------------------------------------------
-//Main Vertex Shader
-//---------------------------------------------
-void main(void)
-{
-	vec4 worldPos		= vertex * worldMatrix;
-	vec3 worldNorm		= normal * mat3(worldMatrix);
-
-	//Transform the position
-	gl_Position			= viewProjMatrix * worldPos;
-	
-#if DEPTH_SHADOWCASTER
-	depth.x				= (gl_Position.z - depthRange.x) * depthRange.w;
-	depth.y				= depthRange.w;
-#else
-	_uv0		= uv0.xy;
-	oNormal		= worldNorm;
-	oVPos		= worldPos.xyz;
-
-	#if DEPTH_SHADOWRECEIVER
-		oLightSpacePos		= texViewProjMatrix * worldPos;
-		oLightSpacePos.z	= (oLightSpacePos.z - depthRange.x) * depthRange.w;
-	#endif
-#endif
-}
Index: data/branches/Shader_HS18/programs/Example/GLSL150/LightToHeatVp.glsl
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL150/LightToHeatVp.glsl	(revision 12091)
+++ 	(revision )
@@ -1,13 +1,0 @@
-#version 150
-
-in vec4 vertex;
-out vec2 uv;
-
-uniform mat4 worldViewProj;
-in vec2 uv0;
-
-void main()
-{
-    gl_Position = worldViewProj * vertex;
-    uv = uv0;
-}
Index: data/branches/Shader_HS18/programs/Example/GLSL150/MetaballFP.glsl
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL150/MetaballFP.glsl	(revision 12091)
+++ 	(revision )
@@ -1,28 +1,0 @@
-#version 150
-
-// Ogre port of Nvidia's IsoSurf.cg file
-// Modified code follows. See http://developer.download.nvidia.com/SDK/10/opengl/samples.html for original
-//
-// Cg port of Yury Uralsky's metaball FX shader
-//
-// Authors: Simon Green and Yury Urlasky
-// Email: sdkfeedback@nvidia.com
-//
-// Copyright (c) NVIDIA Corporation. All rights reserved.
-////////////////////////////////////////////////////////////////////////////////////////////////////
-
-out vec4 fragColour;
-in vec3 oNormal;
-
-// Pixel shader
-void main()
-{
-	// Sanitize input
-	vec3 N = normalize(oNormal);
-	vec3 L = vec3(0, 0, 1);
-    float nDotL = dot(N, L);
-
-    vec3 materials[2] = vec3[](vec3(1, 1, 1), vec3(0, 0, 0.5));
-
-	fragColour = vec4(abs(nDotL) * materials[int(nDotL < 0.0)], 0.1);
-}
Index: data/branches/Shader_HS18/programs/Example/GLSL150/Ocean2GLSL.frag
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL150/Ocean2GLSL.frag	(revision 12091)
+++ 	(revision )
@@ -1,73 +1,0 @@
-/*********************************************************************NVMH3****
-Copyright NVIDIA Corporation 2003
-TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, THIS SOFTWARE IS PROVIDED
-*AS IS* AND NVIDIA AND ITS SUPPLIERS DISCLAIM ALL WARRANTIES, EITHER EXPRESS
-OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF MERCHANTABILITY
-AND FITNESS FOR A PARTICULAR PURPOSE.  IN NO EVENT SHALL NVIDIA OR ITS SUPPLIERS
-BE LIABLE FOR ANY SPECIAL, INCIDENTAL, INDIRECT, OR CONSEQUENTIAL DAMAGES
-WHATSOEVER (INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF BUSINESS PROFITS,
-BUSINESS INTERRUPTION, LOSS OF BUSINESS INFORMATION, OR ANY OTHER PECUNIARY LOSS)
-ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF NVIDIA HAS
-BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
-
-
-Comments:
-	Simple ocean shader with animated bump map and geometric waves
-	Based partly on "Effective Water Simulation From Physical Models", GPU Gems
-
-11 Aug 05: converted from HLSL to GLSL by Jeff Doyle (nfz) to work in Ogre
-
-******************************************************************************/
-
-#version 150
-
-uniform sampler2D NormalMap;
-uniform samplerCube EnvironmentMap;
-uniform vec4 deepColor;
-uniform vec4 shallowColor;
-uniform vec4 reflectionColor;
-uniform float reflectionAmount;
-uniform float reflectionBlur;
-uniform float waterAmount;
-uniform float fresnelPower;
-uniform float fresnelBias;
-uniform float hdrMultiplier;
-
-in mat3 rotMatrix; // first row of the 3x3 transform from tangent to cube space
-in vec2 bumpCoord0;
-in vec2 bumpCoord1;
-in vec2 bumpCoord2;
-in vec3 eyeVector;
-
-out vec4 fragColour;
-
-void main(void)
-{
-	// sum normal maps
-	// sample from 3 different points so no texture repetition is noticeable
-    vec4 t0 = texture(NormalMap, bumpCoord0) * 2.0 - 1.0;
-    vec4 t1 = texture(NormalMap, bumpCoord1) * 2.0 - 1.0;
-    vec4 t2 = texture(NormalMap, bumpCoord2) * 2.0 - 1.0;
-    vec3 N = t0.xyz + t1.xyz + t2.xyz;
-
-    N = normalize(rotMatrix * N);
-
-	// reflection
-    vec3 E = normalize(eyeVector);
-    vec3 R = reflect(E, N);
-    // Ogre conversion for cube map lookup
-    R.z = -R.z;
-
-    vec4 reflection = texture(EnvironmentMap, R, reflectionBlur);
-    // cheap hdr effect
-    reflection.rgb *= (reflection.r + reflection.g + reflection.b) * hdrMultiplier;
-
-	// fresnel
-    float facing = 1.0 - dot(-E, N);
-    float fresnel = clamp(fresnelBias + pow(facing, fresnelPower), 0.0, 1.0);
-
-    vec4 waterColor = mix(shallowColor, deepColor, facing) * waterAmount;
-
-    reflection = mix(waterColor,  reflection * reflectionColor, fresnel) * reflectionAmount;
-    fragColour = waterColor + reflection;
-}
Index: data/branches/Shader_HS18/programs/Example/GLSL150/Ocean2GLSL.vert
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL150/Ocean2GLSL.vert	(revision 12091)
+++ 	(revision )
@@ -1,94 +1,0 @@
-/*********************************************************************NVMH3****
-Copyright NVIDIA Corporation 2003
-TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, THIS SOFTWARE IS PROVIDED
-*AS IS* AND NVIDIA AND ITS SUPPLIERS DISCLAIM ALL WARRANTIES, EITHER EXPRESS
-OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF MERCHANTABILITY
-AND FITNESS FOR A PARTICULAR PURPOSE.  IN NO EVENT SHALL NVIDIA OR ITS SUPPLIERS
-BE LIABLE FOR ANY SPECIAL, INCIDENTAL, INDIRECT, OR CONSEQUENTIAL DAMAGES
-WHATSOEVER (INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF BUSINESS PROFITS,
-BUSINESS INTERRUPTION, LOSS OF BUSINESS INFORMATION, OR ANY OTHER PECUNIARY LOSS)
-ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF NVIDIA HAS
-BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
-
-
-Comments:
-	Simple ocean shader with animated bump map and geometric waves
-	Based partly on "Effective Water Simulation From Physical Models", GPU Gems
-
-11 Aug 05: converted from HLSL to GLSL by Jeff Doyle (nfz) to work in Ogre
-
-******************************************************************************/
-
-#version 150
-
-uniform vec3 eyePosition;
-uniform float BumpScale;
-uniform vec2 textureScale;
-uniform vec2 bumpSpeed;
-uniform float time;
-uniform float waveFreq;
-uniform float waveAmp;
-uniform mat4 worldViewProj;
-
-in vec4 vertex;
-in vec4 uv0;
-
-out mat3 rotMatrix; //  transform from tangent to obj space
-out vec2 bumpCoord0;
-out vec2 bumpCoord1;
-out vec2 bumpCoord2;
-out vec3 eyeVector;
-
-// wave functions
-struct Wave {
-  float freq;  // 2*PI / wavelength
-  float amp;   // amplitude
-  float phase; // speed * 2*PI / wavelength
-  vec2 dir;
-};
-
-
-void main(void)
-{
-	#define NWAVES 2
-
-	Wave wave[NWAVES];
-
-	wave[0] = Wave( waveFreq, waveAmp, 0.5, vec2(-1, 0) );
-	wave[1] = Wave( 3.0 * waveFreq, 0.33 * waveAmp, 1.7, vec2(-0.7, 0.7) );
-
-    vec4 P = vertex;
-
-	// sum waves
-	float ddx = 0.0, ddy = 0.0;
-	float deriv;
-	float angle;
-
-	// wave synthesis using two sine waves at different frequencies and phase shift
-	for(int i = 0; i<NWAVES; ++i)
-	{
-		angle = dot(wave[i].dir, P.xz) * wave[i].freq + time * wave[i].phase;
-		P.y += wave[i].amp * sin( angle );
-		// calculate derivate of wave function
-		deriv = wave[i].freq * wave[i].amp * cos(angle);
-		ddx -= deriv * wave[i].dir.x;
-		ddy -= deriv * wave[i].dir.y;
-	}
-
-	// compute the 3x3 transform from tangent space to object space
-	// compute tangent basis
-    vec3 T = normalize(vec3(1.0, ddy, 0.0)) * BumpScale;
-    vec3 B = normalize(vec3(0.0, ddx, 1.0)) * BumpScale;
-    vec3 N = normalize(vec3(ddx, 1.0, ddy));
-
-	rotMatrix = mat3(T, B, N);
-
-	gl_Position = worldViewProj * P;
-
-	// calculate texture coordinates for normal map lookup
-	bumpCoord0.xy = uv0.xy * textureScale + time * bumpSpeed;
-	bumpCoord1.xy = uv0.xy * textureScale * 2.0 + time * bumpSpeed * 4.0;
-	bumpCoord2.xy = uv0.xy * textureScale * 4.0 + time * bumpSpeed * 8.0;
-
-	eyeVector = P.xyz - eyePosition; // eye position in vertex space
-}
Index: data/branches/Shader_HS18/programs/Example/GLSL150/OffsetMappingFp.glsl
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL150/OffsetMappingFp.glsl	(revision 12091)
+++ 	(revision )
@@ -1,43 +1,0 @@
-#version 150
-
-uniform vec3 lightDiffuse;
-uniform vec3 lightSpecular;
-uniform vec4 scaleBias;
-
-uniform sampler2D normalHeightMap;
-uniform sampler2D diffuseMap;
-
-in vec3 oEyeDir;
-in vec3 oLightDir;
-in vec3 oHalfAngle;
-in vec4 oUv0;
-
-out vec4 fragColour;
-
-// Expand a range-compressed vector
-vec3 expand(vec3 v)
-{
-	return (v - 0.5) * 2.0;
-}
-
-void main()
-{
-    // Get the height using the tex coords
-    float height = texture(normalHeightMap, oUv0.xy).a;
-
-    // Calculate displacement
-    float displacement = (height * scaleBias.x) + scaleBias.y;
-	
-    vec3 uv2 = vec3(oUv0.xy, 1.0);
-	
-    // calculate the new tex coord to use for normal and diffuse
-    vec2 newTexCoord = ((oEyeDir * displacement) + uv2).xy;
-	
-    // get the new normal and diffuse values
-    vec3 normal = expand(texture(normalHeightMap, newTexCoord).xyz);
-    vec3 diffuse = texture(diffuseMap, newTexCoord).xyz;
-    vec3 specular = pow(clamp(dot(normal, oHalfAngle), 0.0, 1.0), 32.0) * lightSpecular;
-
-    vec3 col = diffuse * (clamp(dot(normal, oLightDir), 0.0, 1.0) * lightDiffuse) + specular;
-    fragColour = vec4(col, 1.0);
-}
Index: data/branches/Shader_HS18/programs/Example/GLSL150/OffsetMappingShadowsFp.glsl
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL150/OffsetMappingShadowsFp.glsl	(revision 12091)
+++ 	(revision )
@@ -1,69 +1,0 @@
-#version 150
-
-uniform vec4 lightDiffuse;
-uniform vec4 scaleBias;
-uniform vec4 spotParams;
-uniform vec4 lightDiffuse1;
-uniform vec4 spotParams1;
-
-uniform sampler2D normalHeightMap;
-uniform sampler2D diffuseMap;
-uniform sampler2D shadowMap1;
-uniform sampler2D shadowMap2;
-
-in vec3 tangentEyeDir;
-in vec3 tangentLightDir[2];
-in vec3 tangentSpotDir[2];
-in vec4 shadowUV[2];
-in vec4 oUv0;
-
-out vec4 fragColour;
-
-// Expand a range-compressed vector
-vec3 expand(vec3 v)
-{
-	return (v - 0.5) * 2.0;
-}
-
-void main()
-{
-	// get the height using the tex coords
-	float height = texture(normalHeightMap, oUv0.xy).a;
-	// scale and bias factors	
-	float scale = scaleBias.x;
-	float bias = scaleBias.y;
-
-	// calculate displacement	
-	float displacement = (height * scale) + bias;
-	//float displacement = (height * 0.04) - 0.02;
-	
-	vec3 scaledEyeDir = tangentEyeDir * displacement;
-	
-	// calculate the new tex coord to use for normal and diffuse
-	vec2 newTexCoord = (scaledEyeDir + oUv0.xyz).xy;
-	
-	// get the new normal and diffuse values
-	vec3 normal = expand(texture(normalHeightMap, newTexCoord).xyz);
-	vec4 diffuse = texture(diffuseMap, newTexCoord);
-	
-	vec4 col1 = diffuse * clamp(dot(normal, tangentLightDir[0]),0.0,1.0) * lightDiffuse;
-	// factor in spotlight angle
-	float rho = clamp(dot(tangentSpotDir[0], tangentLightDir[0]),0.0,1.0);
-	// factor = (rho - cos(outer/2) / cos(inner/2) - cos(outer/2)) ^ falloff
-	float spotFactor = pow(
-		clamp(rho - spotParams.y,0.0,1.0) / (spotParams.x - spotParams.y), spotParams.z);
-	col1 = col1 * spotFactor;
-	vec4 col2 = diffuse * clamp(dot(normal, tangentLightDir[1]),0.0,1.0) * lightDiffuse1;
-	// factor in spotlight angle
-	rho = clamp(dot(tangentSpotDir[1], tangentLightDir[1]),0.0,1.0);
-	// factor = (rho - cos(outer/2) / cos(inner/2) - cos(outer/2)) ^ falloff
-	spotFactor = pow(
-		clamp(rho - spotParams1.y,0.0,1.0) / (spotParams1.x - spotParams1.y), spotParams1.z);
-	col2 = col2 * spotFactor;
-
-	// shadow textures
-	col1 = col1 * textureProj(shadowMap1, shadowUV[0]);
-	col2 = col2 * textureProj(shadowMap2, shadowUV[1]);
-
-	fragColour = col1 + col2;
-}
Index: data/branches/Shader_HS18/programs/Example/GLSL150/OffsetMappingShadowsVp.glsl
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL150/OffsetMappingShadowsVp.glsl	(revision 12091)
+++ 	(revision )
@@ -1,58 +1,0 @@
-#version 150
-
-uniform vec4 lightPosition; // object space 
-uniform vec4 lightPosition1; // object space 
-uniform vec4 eyePosition;   // object space 
-uniform vec4 spotDirection; // object space
-uniform vec4 spotDirection1; // object space
-uniform mat4 worldViewProj; // not actually used but here for compat with HLSL
-uniform mat4 worldMatrix;
-uniform mat4 texViewProj1;
-uniform mat4 texViewProj2;
-
-out vec3 tangentEyeDir;
-out vec3 tangentLightDir[2];
-out vec3 tangentSpotDir[2];
-out vec4 shadowUV[2];
-out vec4 oUv0;
-
-in vec3 tangent;
-in vec4 position;
-in vec3 normal;
-in vec4 uv0;
-
-void main()
-{
-	gl_Position = worldViewProj * position;
-
-	vec4 worldPos = worldMatrix * position;
-
-    oUv0 = uv0;
-
-	shadowUV[0] = texViewProj1 * worldPos;
-	shadowUV[1] = texViewProj2 * worldPos;
-
-	// calculate tangent space light vector 
-	// Get object space light direction 
-    vec3 lightDir = normalize(lightPosition.xyz -  (position.xyz * lightPosition.w));
-	vec3 lightDir1 = normalize(lightPosition1.xyz -  (position.xyz * lightPosition1.w));
-	
-	vec3 eyeDir = (eyePosition - position).xyz; 
-
-	// Calculate the binormal (NB we assume both normal and tangent are 
-	// already normalised) 
-	vec3 binormal = cross(normal, tangent); 
-
-	// Form a rotation matrix out of the vectors, column major for glsl es 
-	mat3 rotation = mat3(tangent, binormal, normal);
-    
-	// Transform the light vector according to this matrix 
-	tangentLightDir[0] = normalize(rotation * lightDir); 
-	tangentLightDir[1] = normalize(rotation * lightDir1); 
-	// Invert the Y on the eye dir since we'll be using this to alter UVs and
-	// GL has Y inverted
-	tangentEyeDir = normalize(rotation * eyeDir) * vec3(1.0, -1.0, 1.0); 
-
-	tangentSpotDir[0] = normalize(rotation * -spotDirection.xyz);
-	tangentSpotDir[1] = normalize(rotation * -spotDirection1.xyz);	
-}
Index: data/branches/Shader_HS18/programs/Example/GLSL150/OffsetMappingVp.glsl
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL150/OffsetMappingVp.glsl	(revision 12091)
+++ 	(revision )
@@ -1,45 +1,0 @@
-#version 150
-
-uniform vec4 lightPosition; // object space 
-uniform vec3 eyePosition;   // object space 
-uniform mat4 worldViewProj; // not actually used but here for compat with HLSL
-
-out vec3 oEyeDir;
-out vec3 oLightDir;
-out vec3 oHalfAngle;
-out vec4 oUv0;
-
-in vec3 normal;
-in vec3 tangent;
-in vec4 uv0;
-in vec4 position;
-
-/* Vertex program that moves light and eye vectors into texture tangent space at vertex */ 
-
-void main()
-{
-    // Calculate output position 
-	gl_Position = worldViewProj * position;
-
-    // Pass the main uvs straight through unchanged 
-    oUv0 = uv0;
-
-    vec3 lightDir = lightPosition.xyz - (position.xyz * lightPosition.w);
-
-	vec3 eyeDir = eyePosition - position.xyz; 
-    
-	// Calculate the binormal (NB we assume both normal and tangent are
-	// already normalised)
-	// NB looks like nvidia cross params are BACKWARDS to what you'd expect
-	// this equates to NxT, not TxN
-	vec3 localbinormal = cross(tangent, normal);
-
-	// Form a rotation matrix out of the vectors, column major for glsl es 
-	mat3 TBN = mat3(tangent, localbinormal, normal);
-    
-    // Transform the light vector according to this matrix 
-	oLightDir = normalize(TBN * lightDir); 
-	oEyeDir = normalize(TBN * eyeDir); 
-    oHalfAngle = normalize(oEyeDir + oLightDir);
-}
-
Index: data/branches/Shader_HS18/programs/Example/GLSL150/OffsetMapping_specular.glsl
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL150/OffsetMapping_specular.glsl	(revision 12091)
+++ 	(revision )
@@ -1,48 +1,0 @@
-#version 150
-
-uniform vec4 lightDiffuse;
-uniform vec4 lightSpecular;
-uniform vec4 scaleBias;
-uniform float exponent;
-uniform sampler2D normalHeightMap;
-
-in vec3 tangentEyeDir;
-in vec3 tangentLightDir[2];
-in vec4 shadowUV[2];
-in vec4 oUv0;
-
-out vec4 fragColour;
-
-vec4 lit(float NdotL, float NdotH, float m) {
-
-  float ambient = 1.0;
-  float diffuse = max(NdotL, 0.0);
-  float specular = step(0.0, NdotL) * max(NdotH * m, 0.0);
-
-  return vec4(ambient, diffuse, specular, 1.0);
-}
-
-vec3 expand(vec3 v)
-{
-	return (v - 0.5) * 2.0;
-}
-
-/*
-  Pixel Shader for doing bump mapping with parallax plus diffuse and specular lighting by masterfalcon
-*/
-void main()
-{
-	float height = texture(normalHeightMap, oUv0.xy).a;
-	float displacement = (height * scaleBias.x) + scaleBias.y;
-	vec2 newTexCoord = ((tangentEyeDir * displacement) + oUv0.xyz).xy;
-	vec3 bumpVec = expand(texture(normalHeightMap, newTexCoord).xyz);
-	vec3 N = normalize(bumpVec);
-
-	vec3 halfAngle = normalize(tangentEyeDir + tangentLightDir[0]); 
-	float NdotL = dot(normalize(tangentLightDir[0]), N);
-	float NdotH = dot(normalize(halfAngle), N); 
-
-	vec4 Lit = lit(NdotL, NdotH, exponent);
-	
-	fragColour = lightDiffuse * Lit.y + lightSpecular * Lit.z;
-}
Index: data/branches/Shader_HS18/programs/Example/GLSL150/ParticleGS_DisplayPS.glsl
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL150/ParticleGS_DisplayPS.glsl	(revision 12091)
+++ 	(revision )
@@ -1,17 +1,0 @@
-#version 150
-
-in block {
-	vec4 	pos;
-    vec4 	color;
-	vec2	texcoord;
-} Firework;
-
-out vec4 fragColour;
-
-uniform sampler2D diffuseTex;
-
-//The pixels shaders that colors the fireworks
-void main()
-{
-	fragColour = texture(diffuseTex, Firework.texcoord) * Firework.color;
-}
Index: data/branches/Shader_HS18/programs/Example/GLSL150/PassthroughFP.glsl
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL150/PassthroughFP.glsl	(revision 12091)
+++ 	(revision )
@@ -1,12 +1,0 @@
-#version 150
-
-in vec4 colour;
-out vec4 fragColour;
-
-/*
-  Basic ambient lighting fragment program for GLSL ES
-*/
-void main()
-{
-	fragColour = colour;
-}
Index: data/branches/Shader_HS18/programs/Example/GLSL150/PassthroughVP.glsl
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL150/PassthroughVP.glsl	(revision 12091)
+++ 	(revision )
@@ -1,7 +1,0 @@
-#version 150
-
-void main()																					
-{																							
-	//Transform the vertex (ModelViewProj matrix)											
-	gl_Position = ftransform();																
-}
Index: data/branches/Shader_HS18/programs/Example/GLSL150/SampleFieldVS.glsl
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL150/SampleFieldVS.glsl	(revision 12091)
+++ 	(revision )
@@ -1,87 +1,0 @@
-#version 150
-
-// Ogre port of Nvidia's IsoSurf.cg file
-// Modified code follows. See http://developer.download.nvidia.com/SDK/10/opengl/samples.html for original
-//
-// Cg port of Yury Uralsky's metaball FX shader
-//
-// Authors: Simon Green and Yury Urlasky
-// Email: sdkfeedback@nvidia.com
-//
-// Copyright (c) NVIDIA Corporation. All rights reserved.
-////////////////////////////////////////////////////////////////////////////////////////////////////
-
-uniform float IsoValue = 1.0;
-uniform mat4 WorldViewProj;
-uniform mat4 origWorldViewIT;
-
-// Size of the sampling grid
-const ivec3 SizeMask = ivec3( 63, 63, 63 );
-const ivec3 SizeShift = ivec3( 0, 6, 12 );
-uniform vec4 Metaballs[2] = vec4[](vec4( -0.5, 0, 0, 0.2 ), vec4( 0.6, 0, 0, 0.1 ));
-
-in vec4 vertex;
-
-out VertexData {
-    vec3 N;
-    vec2 Field;
-} VertexOut;
-
-// Metaball function
-// Returns metaball function value in .w and its gradient in .xyz
-
-vec4 Metaball(vec3 Pos, vec3 Center, float RadiusSq)
-{
-	const float epsilon = 0.001;
-
-	vec3 Dist = Pos - Center;
-	float InvDistSq = 1 / (dot(Dist, Dist) + epsilon);
-
-	vec4 o;
-	o.xyz = -2 * RadiusSq * InvDistSq * InvDistSq * Dist;
-	o.w = RadiusSq * InvDistSq;
-	return o;
-}
-
-void main()
-{
-	// Sum up contributions from all metaballs
-/*	vec4 Field;
-	for (int i = 0; i<2; i++) 
-	{
-		Field += Metaball(vertex.xyz, Metaballs[i].xyz, Metaballs[i].w);
-	}
-	
-	mat3 WorldViewIT = mat3(origWorldViewIT[0].xyz, origWorldViewIT[1].xyz, origWorldViewIT[2].xyz);
-	
-	// Transform position and normals
-	gl_Position = WorldViewProj * vertex;
-	VertexOut.N = WorldViewIT * Field.xyz;	// we want normals in world space
-	VertexOut.Field.x = Field.w;
-	
-	// Generate in-out flags
-	VertexOut.Field.y = (Field.w < 1.0) ? 1 : 0;
-*/
-	vec3 Pos;
-
-	// Generate sampling point position based on its index
-	Pos.x = float((gl_VertexID >> SizeShift.x) & SizeMask.x) / (SizeMask.x + 1);
-	Pos.y = float((gl_VertexID >> SizeShift.y) & SizeMask.y) / (SizeMask.y + 1);
-	Pos.z = float((gl_VertexID >> SizeShift.z) & SizeMask.z) / (SizeMask.z + 1);
-	Pos = Pos*2 - 1;
-
-	// Sum up contributions from all metaballs
-	vec4 Field;
-	for (int i = 0; i<2; i++)
-		Field += Metaball(Pos, Metaballs[i].xyz, Metaballs[i].w);
-
-	// Transform position and normals
-	gl_Position = WorldViewProj * vec4(Pos, 1);
-	VertexOut.N = mat3(origWorldViewIT) * Field.xyz;	// we want normals in world space
-	VertexOut.Field.x = Field.w;
-
-	// Generate in-out flags
-	VertexOut.Field.y = (Field.w < IsoValue) ? 1 : 0;
-
-//	o.Color = (Field*0.5+0.5) * (Field.w / 10.0);
-}
Index: data/branches/Shader_HS18/programs/Example/GLSL150/ShaderInstancing.vert
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL150/ShaderInstancing.vert	(revision 12091)
+++ 	(revision )
@@ -1,117 +1,0 @@
-//---------------------------------------------------------------------------
-//These materials/shaders are part of the NEW InstanceManager implementation
-//Written by Matias N. Goldberg ("dark_sylinc")
-//---------------------------------------------------------------------------
-#version 150
-
-//Vertex input
-in vec4 vertex;
-in vec3 normal;
-in vec3 tangent;
-in vec4 uv0;
-in vec4 blendIndices;
-in vec4 blendWeights;
-
-//Parameters
-uniform mat4 viewProjMatrix;
-//uniform mat4x3 worldMatrix3x4Array[80];
-#ifdef ST_DUAL_QUATERNION
-uniform vec4 worldDualQuaternion2x4Array[240];
-#else
-uniform vec4 worldMatrix3x4Array[240]; //240 = 80*3
-#endif
-
-
-#if (DEPTH_SHADOWCASTER || DEPTH_SHADOWRECEIVER)
-uniform vec4 depthRange;
-#endif
-
-#if DEPTH_SHADOWRECEIVER
-uniform mat4 texViewProjMatrix;
-#endif
-
-//Output
-#if DEPTH_SHADOWCASTER
-	out vec2 depth;
-#else
-	out vec2 _uv0;
-	out vec3 oNormal;
-	out vec3 oVPos;
-	#if DEPTH_SHADOWRECEIVER
-		out vec4 oLightSpacePos;
-	#endif
-#endif
-
-vec3 calculateBlendPosition(vec3 position, mat2x4 blendDQ)
-{
-	vec3 blendPosition = position + 2.0*cross(blendDQ[0].yzw, cross(blendDQ[0].yzw, position) + blendDQ[0].x*position);
-	vec3 trans = 2.0*(blendDQ[0].x*blendDQ[1].yzw - blendDQ[1].x*blendDQ[0].yzw + cross(blendDQ[0].yzw, blendDQ[1].yzw));
-	blendPosition += trans;
-
-	return blendPosition;
-}
-
-vec3 calculateBlendNormal(vec3 normal, mat2x4 blendDQ)
-{
-	return normal + 2.0*cross(blendDQ[0].yzw, cross(blendDQ[0].yzw, normal) + blendDQ[0].x*normal);
-}
-
-//---------------------------------------------
-//Main Vertex Shader
-//---------------------------------------------
-void main(void)
-{
-vec4 worldPos;
-vec3 worldNorm;
-
-#ifdef ST_DUAL_QUATERNION
-	int idx = int(blendIndices[0]) * 2;
-	mat2x4 blendDQ;
-	blendDQ[0] = worldDualQuaternion2x4Array[idx];
-	blendDQ[1] = worldDualQuaternion2x4Array[idx + 1];
-#ifdef BONE_TWO_WEIGHTS
-	int idx2 = int(blendIndices[1]) * 2;
-	mat2x4 blendDQ2;
- 	blendDQ2[0] = worldDualQuaternion2x4Array[idx2];
-	blendDQ2[1] = worldDualQuaternion2x4Array[idx2 + 1];
-
-	//Accurate antipodality handling. For speed increase, remove the following line
-	if (dot(blendDQ[0], blendDQ2[0]) < 0.0) blendDQ2 *= -1.0;
-	
-	//Blend the dual quaternions based on the weights
-	blendDQ *= blendWeights.x;
-	blendDQ += blendWeights.y*blendDQ2;
-	//Normalize the resultant dual quaternion
-	blendDQ /= length(blendDQ[0]);
-#endif
-	worldPos = vec4(calculateBlendPosition(vertex.xyz, blendDQ), 1.0);
-	worldNorm = calculateBlendNormal(normal, blendDQ);
-#else
-	mat4 worldMatrix;
-	int idx = int(blendIndices[0]) * 3;
-	worldMatrix[0] = worldMatrix3x4Array[idx];
-	worldMatrix[1] = worldMatrix3x4Array[idx + 1];
-	worldMatrix[2] = worldMatrix3x4Array[idx + 2];
-	worldMatrix[3] = vec4( 0, 0, 0, 1 );
-
-	worldPos		= vertex * worldMatrix;
-	worldNorm		= normal * mat3(worldMatrix);
-#endif
-
-	//Transform the position
-	gl_Position			= viewProjMatrix * worldPos;
-
-#if DEPTH_SHADOWCASTER
-	depth.x				= (gl_Position.z - depthRange.x) * depthRange.w;
-	depth.y				= depthRange.w;
-#else
-	_uv0		= uv0.xy;
-	oNormal		= worldNorm;
-	oVPos		= worldPos.xyz;
-
-	#if DEPTH_SHADOWRECEIVER
-		oLightSpacePos		= texViewProjMatrix * worldPos;
-		oLightSpacePos.z	= (oLightSpacePos.z - depthRange.x) * depthRange.w;
-	#endif
-#endif
-}
Index: data/branches/Shader_HS18/programs/Example/GLSL150/ShowNormals.glsl
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL150/ShowNormals.glsl	(revision 12091)
+++ 	(revision )
@@ -1,14 +1,0 @@
-#version 150
-
-in vec4 position;
-in vec3 normal;
-
-out vec4 oUv0;
-
-uniform mat4 worldViewProj;
-
-void main()
-{
-	gl_Position = worldViewProj * position;
-	oUv0 = vec4(normal, 1.0);
-}
Index: data/branches/Shader_HS18/programs/Example/GLSL150/ShowTangents.glsl
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL150/ShowTangents.glsl	(revision 12091)
+++ 	(revision )
@@ -1,14 +1,0 @@
-#version 150
-
-in vec4 position;
-in vec3 tangent;
-
-out vec4 oUv0;
-
-uniform mat4 worldViewProj;
-
-void main()
-{
-	gl_Position = worldViewProj * position;
-	oUv0 = vec4(tangent, 1.0);
-}
Index: data/branches/Shader_HS18/programs/Example/GLSL150/ShowUV.glsl
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL150/ShowUV.glsl	(revision 12091)
+++ 	(revision )
@@ -1,13 +1,0 @@
-#version 150
-
-in vec4 ambientUV;
-in vec4 ambColour;
-
-out vec4 fragColour;
-
-// Basic fragment program to display UV
-void main()
-{
-	// wrap values using fract
-	fragColour = vec4(fract(ambientUV.x), fract(ambientUV.y), 0.0, 1.0);
-}
Index: data/branches/Shader_HS18/programs/Example/GLSL150/ShowUVdir3D.glsl
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL150/ShowUVdir3D.glsl	(revision 12091)
+++ 	(revision )
@@ -1,14 +1,0 @@
-#version 150
-
-in vec4 oUv0;
-
-out vec4 fragColour;
-
-// Basic fragment program to display 3d uv
-void main()
-{
-	vec3 n = normalize(oUv0.xyz);
-	fragColour = vec4(n.x, n.y, n.z, 1.0);
-}
-
-
Index: data/branches/Shader_HS18/programs/Example/GLSL150/StdQuad_Tex2_vp.glsl
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL150/StdQuad_Tex2_vp.glsl	(revision 12091)
+++ 	(revision )
@@ -1,17 +1,0 @@
-#version 150
-
-uniform mat4 worldViewProj;
-in vec4 vertex;
-in vec2 uv0;
-out vec2 oUv0;
-out vec2 oUv1;
-
-void main()
-{
-	// Use standardise transform, so work accord with render system specific (RS depth, requires texture flipping, etc)
-    gl_Position = worldViewProj * vertex;
-
-    // Convert to image-space
-    oUv0 = uv0;
-    oUv1 = oUv0;
-}
Index: data/branches/Shader_HS18/programs/Example/GLSL150/StdQuad_Tex2a_vp.glsl
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL150/StdQuad_Tex2a_vp.glsl	(revision 12091)
+++ 	(revision )
@@ -1,18 +1,0 @@
-#version 150
-
-uniform mat4 worldViewProj;
-in vec4 vertex;
-in vec2 uv0;
-out vec2 oUv0;
-out vec2 oUv1;
-out vec4 pos;
-
-void main()
-{
-	// Use standardise transform, so work accord with render system specific (RS depth, requires texture flipping, etc)
-    gl_Position = worldViewProj * vertex;
-
-    oUv0 = uv0;
-    oUv1 = -vertex.xy;
-    pos = gl_Position;
-}
Index: data/branches/Shader_HS18/programs/Example/GLSL150/StdQuad_Tex3_vp.glsl
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL150/StdQuad_Tex3_vp.glsl	(revision 12091)
+++ 	(revision )
@@ -1,22 +1,0 @@
-#version 150
-
-uniform mat4 worldViewProj;
-in vec4 vertex;
-in vec2 uv0;
-out vec2 oUv0;
-out vec2 oUv1;
-out vec2 oUv2;
-out vec4 pos;
-
-void main()
-{
-	// Use standardise transform, so work accord with render system specific (RS depth, requires texture flipping, etc)
-    gl_Position = worldViewProj * vertex;
-
-
-    // Convert to image-space
-    oUv0 = uv0;
-    oUv1 = oUv0;
-    oUv2 = oUv0;
-    pos = gl_Position;
-}
Index: data/branches/Shader_HS18/programs/Example/GLSL150/StdQuad_Tex4_vp.glsl
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL150/StdQuad_Tex4_vp.glsl	(revision 12091)
+++ 	(revision )
@@ -1,22 +1,0 @@
-#version 150
-
-uniform mat4 worldViewProj;
-in vec4 vertex;
-in vec2 uv0;
-out vec2 oUv0;
-out vec2 oUv1;
-out vec2 oUv2;
-out vec2 oUv3;
-out vec4 pos;
-
-void main()
-{
-	// Use standardise transform, so work accord with render system specific (RS depth, requires texture flipping, etc)
-    gl_Position = worldViewProj * vertex;
-
-    oUv0 = uv0;
-    oUv1 = oUv0;
-    oUv2 = oUv0;
-    oUv3 = oUv0;
-    pos = gl_Position;
-}
Index: data/branches/Shader_HS18/programs/Example/GLSL150/TessellateTetrahedraGS.glsl
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL150/TessellateTetrahedraGS.glsl	(revision 12091)
+++ 	(revision )
@@ -1,83 +1,0 @@
-#version 150
-
-// Ogre port of Nvidia's IsoSurf.cg file
-// Modified code follows. See http://developer.download.nvidia.com/SDK/10/opengl/samples.html for original
-//
-// Cg port of Yury Uralsky's metaball FX shader
-//
-// Authors: Simon Green and Yury Urlasky
-// Email: sdkfeedback@nvidia.com
-//
-// Copyright (c) NVIDIA Corporation. All rights reserved.
-////////////////////////////////////////////////////////////////////////////////////////////////////
-
-// Size of the sampling grid
-in VertexData {
-    vec3 N;
-    vec2 Field;
-} VertexIn[];
-
-out vec3 oNormal;
-
-uniform float IsoValue;
-
-layout(lines_adjacency) in;
-layout(triangle_strip, max_vertices = 4) out;
-
-// TODO: Change this from outputting triangles to a triangle strip
-
-
-// Estimate where isosurface intersects grid edge with endpoints v0, v1
-void CalcIntersection(vec4 Pos0,
-					  vec3 N0,
-					  vec2 Field0,
-					  vec4 Pos1,
-					  vec3 N1,
-					  vec2 Field1)
-{
-	float t = (IsoValue - Field0.x) / (Field1.x - Field0.x);
-	gl_Position = mix(Pos0, Pos1, t);
-	oNormal = mix(N0, N1, t);
-    EmitVertex();
-}
-
-// Geometry shader
-// input: line with adjacency (tetrahedron)
-// outputs: zero, one or two triangles depending if isosurface intersects tetrahedron
-void main()
-{
-	// construct index for this tetrahedron
-	uint index = uint((int(VertexIn[0].Field.y) << 3) |
-                      (int(VertexIn[1].Field.y) << 2) |
-                      (int(VertexIn[2].Field.y) << 1) |
-                       int(VertexIn[3].Field.y));
-	
-	// don't bother if all vertices out or all vertices inside isosurface
-	if (index > uint(0) && index < uint(15))
-	{
-		// Uber-compressed version of the edge table.
-		uint edgeListHex[8] = 
-			uint[8](uint(0x0001cde0), uint(0x98b08c9d), uint(0x674046ce), uint(0x487bc480), 
-                    uint(0x21301d2e), uint(0x139bd910), uint(0x26376e20), uint(0x3b700000));
-
-		uint edgeValFull = edgeListHex[index/uint(2)];
-		uint three = uint(0x3);
-		uint edgeVal = (index % uint(2) == uint(1)) ? (edgeValFull & uint(0xFFFF)) : ((edgeValFull >> 16) & uint(0xFFFF));
-		ivec4 e0 = ivec4((edgeVal >> 14) & three, (edgeVal >> 12) & three, (edgeVal >> 10) & three, (edgeVal >> 8) & three);
-		ivec4 e1 = ivec4((edgeVal >> 6) & three, (edgeVal >> 4) & three, (edgeVal >> 2) & three, (edgeVal >> 0) & three);
-
-		CalcIntersection(gl_in[e0.x].gl_Position, VertexIn[e0.x].N, VertexIn[e0.x].Field,
-		                 gl_in[e0.y].gl_Position, VertexIn[e0.y].N, VertexIn[e0.y].Field);
-		CalcIntersection(gl_in[e0.z].gl_Position, VertexIn[e0.z].N, VertexIn[e0.z].Field,
-		                 gl_in[e0.w].gl_Position, VertexIn[e0.w].N, VertexIn[e0.w].Field);
-		CalcIntersection(gl_in[e1.x].gl_Position, VertexIn[e1.x].N, VertexIn[e1.x].Field,
-		                 gl_in[e1.y].gl_Position, VertexIn[e1.y].N, VertexIn[e1.y].Field);
-
-		// Emit additional triangle, if necessary
-		if (e1.z != -1) {
-			CalcIntersection(gl_in[e1.z].gl_Position, VertexIn[e1.z].N, VertexIn[e1.z].Field,
-			                 gl_in[e1.w].gl_Position, VertexIn[e1.w].N, VertexIn[e1.w].Field);
-		}
-        EndPrimitive();
-	}
-}
Index: data/branches/Shader_HS18/programs/Example/GLSL150/VTFInstancing.vert
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL150/VTFInstancing.vert	(revision 12091)
+++ 	(revision )
@@ -1,113 +1,0 @@
-//---------------------------------------------------------------------------
-//These materials/shaders are part of the NEW InstanceManager implementation
-//Written by Matias N. Goldberg ("dark_sylinc")
-//---------------------------------------------------------------------------
-#version 150
-
-//Vertex input
-in vec4 vertex;
-in vec3 normal;
-
-#ifdef BONE_TWO_WEIGHTS
-	in vec4 blendWeights;
-#endif
-
-in vec4 uv0;
-in vec4 uv1;
-in vec4 uv2;
-in vec3 tangent;
-
-//Parameters
-uniform mat4 viewProjMatrix;
-uniform sampler2D matrixTexture;
-
-#if (DEPTH_SHADOWCASTER || DEPTH_SHADOWRECEIVER)
-uniform vec4 depthRange;
-#endif
-
-#if DEPTH_SHADOWRECEIVER
-uniform mat4 texViewProjMatrix;
-#endif
-
-//Output
-#if DEPTH_SHADOWCASTER
-	out vec2 depth;
-#else
-	out vec2 _uv0;
-	out vec3 oNormal;
-	out vec3 oVPos;
-	#if DEPTH_SHADOWRECEIVER
-		out vec4 oLightSpacePos;
-	#endif
-#endif
-
-vec3 calculateBlendPosition(vec3 position, mat2x4 blendDQ)
-{
-	vec3 blendPosition = position + 2.0*cross(blendDQ[0].yzw, cross(blendDQ[0].yzw, position) + blendDQ[0].x*position);
-	vec3 trans = 2.0*(blendDQ[0].x*blendDQ[1].yzw - blendDQ[1].x*blendDQ[0].yzw + cross(blendDQ[0].yzw, blendDQ[1].yzw));
-	blendPosition += trans;
-
-	return blendPosition;
-}
-
-vec3 calculateBlendNormal(vec3 normal, mat2x4 blendDQ)
-{
-	return normal + 2.0*cross(blendDQ[0].yzw, cross(blendDQ[0].yzw, normal) + blendDQ[0].x*normal);
-}
-
-//---------------------------------------------
-//Main Vertex Shader
-//---------------------------------------------
-void main(void)
-{
-	vec4 worldPos;
-	vec3 worldNorm;
-
-#ifdef ST_DUAL_QUATERNION
-	mat2x4 blendDQ;	
-	blendDQ[0] = texture( matrixTexture, uv1.xy );
-	blendDQ[1] = texture( matrixTexture, uv1.zy );
-#ifdef BONE_TWO_WEIGHTS
-	mat2x4 blendDQ2;
-	blendDQ2[0] = texture( matrixTexture, uv2.xy );
-	blendDQ2[1] = texture( matrixTexture, uv2.zw );
-
-	//Accurate antipodality handling. For speed increase, remove the following line
-	if (dot(blendDQ[0], blendDQ2[0]) < 0.0) blendDQ2 *= -1.0;
-	
-	//Blend the dual quaternions based on the weights
-	blendDQ *= blendWeights.x;
-	blendDQ += blendWeights.y*blendDQ2;
-	//Normalize the resultant dual quaternion
-	blendDQ /= length(blendDQ[0]);
-#endif
-	worldPos = vec4(calculateBlendPosition(vertex.xyz, blendDQ), 1.0);
-	worldNorm = calculateBlendNormal(normal, blendDQ);
-#else
-	mat4 worldMatrix;
-	worldMatrix[0] = texture( matrixTexture, uv1.xy );
-	worldMatrix[1] = texture( matrixTexture, uv1.zw );
-	worldMatrix[2] = texture( matrixTexture, uv2.xy );
-	worldMatrix[3] = vec4( 0, 0, 0, 1 );
-
-	worldPos		= vertex * worldMatrix;
-	worldNorm		= normal * mat3(worldMatrix);
-#endif
-
-	//Transform the position
-	gl_Position			= viewProjMatrix * worldPos;
-	
-#if DEPTH_SHADOWCASTER
-	depth.x				= (gl_Position.z - depthRange.x) * depthRange.w;
-	depth.y				= depthRange.w;
-#else
-	_uv0		= uv0.xy;
-	oNormal		= worldNorm;
-	oVPos		= worldPos.xyz;
-
-	#if DEPTH_SHADOWRECEIVER
-		oLightSpacePos		= texViewProjMatrix * worldPos;
-		oLightSpacePos.z	= (oLightSpacePos.z - depthRange.x) * depthRange.w;
-	#endif
-#endif
-}
Index: data/branches/Shader_HS18/programs/Example/GLSL150/crowdVp.glsl
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL150/crowdVp.glsl	(revision 12091)
+++ 	(revision )
@@ -1,64 +1,0 @@
-#version 150
-
-uniform mat4 viewProjectionMatrix;
-uniform float numBones;
-uniform vec4 worldMatrix3x4Array[240];
-uniform vec4 lightDiffuseColour;
-uniform vec4 ambient;
-uniform vec4 lightPos;
-
-in vec4 blendIndices;
-in vec4 blendWeights;
-
-in vec4 vertex;
-in vec3 normal;
-in vec4 uv0;
-in vec4 uv1;
-out vec4 colour;
-out vec4 oUv0;
-out vec4 oUv1;
-
-void main()
-{
-	vec3 blendPos = vec3(0);
-	vec3 blendNorm = vec3(0);
-	vec3 tmpPos = vec3(0);
-	vec3 tmpNorm = vec3(0);
-
-	int instanceOffset = int(uv1.x) * 3 * int(numBones);
-	for (int bone = 0; bone < 2; ++bone)
-	{
-		// perform matrix multiplication manually since no 3x4 matrices
-		for (int row = 0; row < 3; ++row)
-		{
-		    int idx = instanceOffset + int(blendIndices[bone]) * 3 + row;
-			vec4 blendMatrixRow = worldMatrix3x4Array[idx];
-			tmpPos[row] = dot(blendMatrixRow, gl_Vertex);
-#if SHADOW_CASTER
-#else
-			tmpNorm[row] = dot(blendMatrixRow.xyz, gl_Normal);
-#endif	
-		}
-		// now weight this into final 
-		blendPos += tmpPos * blendWeights[bone];
-#if SHADOW_CASTER
-#else
-		blendNorm += tmpNorm * blendWeights[bone];
-#endif
-	}
-
-	// apply view / projection to position
-	gl_Position = viewProjectionMatrix * vec4(blendPos, 1);
-
-#if SHADOW_CASTER
-	colour = ambient;
-#else
-	// simple lighting model
-	vec3 lightDir = normalize(
-		lightPos.xyz - (blendPos.xyz * lightPos.w));
-	colour = ambient 
-		+ clamp(dot(lightDir, blendNorm), 0.0, 1.0) * lightDiffuseColour;
-#endif
-    colour = vec4(0);
-	oUv0 = uv0;	
-}
Index: data/branches/Shader_HS18/programs/Example/GLSL150/hdr_tonemap_util.glsl
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL150/hdr_tonemap_util.glsl	(revision 12091)
+++ 	(revision )
@@ -1,28 +1,0 @@
-#version 150
-
-const float MIDDLE_GREY = 0.72;
-const float FUDGE = 0.001;
-const float L_WHITE = 1.5;
-
-/** Tone mapping function 
-@note Only affects rgb, not a
-@param inColour The HDR colour
-@param lum The scene lumninence 
-@returns Tone mapped colour
-*/
-vec4 toneMap(in vec4 inColour, in float lum)
-{
-	// From Reinhard et al
-	// "Photographic Tone Reproduction for Digital Images"
-	
-	// Initial luminence scaling (equation 2)
-    inColour.rgb *= MIDDLE_GREY / (FUDGE + lum);
-
-	// Control white out (equation 4 nom)
-    inColour.rgb *= (1.0 + inColour.rgb / L_WHITE);
-
-	// Final mapping (equation 4 denom)
-	inColour.rgb /= (1.0 + inColour.rgb);
-	
-	return inColour;
-}
Index: data/branches/Shader_HS18/programs/Example/GLSL150/oceanGLSL.frag
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL150/oceanGLSL.frag	(revision 12091)
+++ 	(revision )
@@ -1,48 +1,0 @@
-// oceanGLSL.frag
-// fragment program for Ocean water simulation
-// 05 Aug 2005
-// adapted for Ogre by nfz
-// converted from HLSL to GLSL
-// original shader source from Render Monkey 1.6 Reflections Refractions.rfx
-
-// 06 Aug 2005: moved uvw calculation from fragment program into vertex program 
-
-#version 150
-
-uniform float fadeBias;
-uniform float fadeExp;
-uniform vec4 waterColor;
-uniform sampler3D Noise;
-uniform samplerCube skyBox;
-
-in vec3 uvw;
-in vec4 oNormal;
-in vec3 vVec;
-out vec4 fragColour;
-
-void main(void)
-{
-   vec3 noisy = texture(Noise, uvw).xyz;
-   
-   // convert to signed noise
-   vec3 bump = 2.0 * noisy - 1.0;
-   bump.xz *= 0.15;
-   // Make sure the normal always points upwards
-   // note that Ogres y axis is vertical (RM Z axis is vertical)
-   bump.y = 0.8 * abs(bump.y) + 0.2;
-   // Offset the surface normal with the bump
-   bump = normalize(oNormal.xyz + bump);
-
-   // Find the reflection vector
-   vec3 normView = normalize(vVec);
-   vec3 reflVec = reflect(normView, bump);
-   // Ogre has z flipped for cubemaps
-   reflVec.z = -reflVec.z;
-   vec4 refl = texture(skyBox, reflVec);
-
-   // set up for fresnel calc
-   float lrp = 1.0 - dot(-normView, bump);
-   
-   // Interpolate between the water color and reflection for fresnel effect
-   fragColour = mix(waterColor, refl, clamp(fadeBias + pow(lrp, fadeExp), 0.0, 1.0) );
-}
Index: data/branches/Shader_HS18/programs/Example/GLSL150/oceanGLSL.vert
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL150/oceanGLSL.vert	(revision 12091)
+++ 	(revision )
@@ -1,37 +1,0 @@
-// oceanGLSL.vert
-// vertex program for Ocean water simulation
-// 05 Aug 2005
-// adapted for Ogre by nfz
-// converted from HLSL to GLSL
-// original shader source from Render Monkey 1.6 Reflections Refractions.rfx
-
-// 06 Aug 2005: moved uvw calculation from fragment program into vertex program 
-
-#version 150
-
-uniform vec3 scale;
-uniform vec3 eyePosition;
-uniform vec2 waveSpeed;
-uniform float noiseSpeed;
-uniform float time_0_X;
-uniform mat4 worldViewProj;
-
-in vec4 vertex;
-in vec4 normal;
-
-out vec3 uvw;
-out vec4 oNormal;
-out vec3 vVec;
-
-void main(void)
-{
-   gl_Position = worldViewProj * vertex;
-   
-   //  the view vector needs to be in vertex space
-   vVec = vertex.xyz - eyePosition;
-   oNormal = normal;
-   // uvw is the calculated uvw coordinates based on vertex position
-   uvw = vertex.xyz * scale.xyz;
-   uvw.xz += waveSpeed * time_0_X;
-   uvw.y += uvw.z + noiseSpeed * time_0_X;
-}
Index: data/branches/Shader_HS18/programs/Example/GLSL150/shadows.glsl
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL150/shadows.glsl	(revision 12091)
+++ 	(revision )
@@ -1,148 +1,0 @@
-/* Copyright Torus Knot Software Ltd 2012-2013
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-
-Adapted by Matias N. Goldberg (Dark Sylinc) to GLSL based on the Cg file shadows.cg
-*/
-
-#version 150
-
-// Simple PCF 
-// Number of samples in one dimension (square for total samples)
-#define NUM_SHADOW_SAMPLES_1D 2.0
-#define SHADOW_FILTER_SCALE 1.0
-
-#define SHADOW_SAMPLES NUM_SHADOW_SAMPLES_1D*NUM_SHADOW_SAMPLES_1D
-
-vec4 offsetSample(vec4 uv, vec2 offset, float invMapSize)
-{
-	return vec4(uv.xy + offset * invMapSize * uv.w, uv.z, uv.w);
-}
-
-float calcDepthShadow(sampler2DShadow shadowMap, vec4 uv, float invShadowMapSize)
-{
-	// 4-sample PCF
-	
-	float shadow = 0.0;
-	float offset = (NUM_SHADOW_SAMPLES_1D/2.0 - 0.5) * SHADOW_FILTER_SCALE;
-	for (float y = -offset; y <= offset; y += SHADOW_FILTER_SCALE)
-		for (float x = -offset; x <= offset; x += SHADOW_FILTER_SCALE)
-		{
-			float depth = textureProj(shadowMap, offsetSample(uv, vec2(x, y), invShadowMapSize));
-			if (depth >= 1.0 || depth >= uv.z)
-				shadow += 1.0;
-		}
-
-	shadow /= SHADOW_SAMPLES;
-
-	return shadow;
-}
-
-
-float calcSimpleShadow(sampler2DShadow shadowMap, vec4 shadowMapPos)
-{
-	return textureProj(shadowMap, shadowMapPos);
-}
-
-float calcPSSMDepthShadow(sampler2DShadow shadowMap0, sampler2DShadow shadowMap1, sampler2DShadow shadowMap2, 
-						   vec4 lsPos0, vec4 lsPos1, vec4 lsPos2,
-						   float invShadowmapSize0, float invShadowmapSize1, float invShadowmapSize2,
-						   vec4 pssmSplitPoints, float camDepth)
-{
-
-	float shadow;
-	vec4 splitColour;
-	// calculate shadow
-	if (camDepth <= pssmSplitPoints.y)
-	{
-		splitColour = vec4(0.3, 0.0, 0, 0);
-		shadow = calcDepthShadow(shadowMap0, lsPos0, invShadowmapSize0);
-	}
-	else if (camDepth <= pssmSplitPoints.z)
-	{
-		splitColour = vec4(0, 0.3, 0, 0);
-		shadow = calcDepthShadow(shadowMap1, lsPos1, invShadowmapSize1);
-	}
-	else
-	{
-		splitColour = vec4(0.0, 0.0, 0.3, 0);
-		shadow = calcDepthShadow(shadowMap2, lsPos2, invShadowmapSize2);
-	}
-
-	return shadow;
-}
-
-float calcPSSMSimpleShadow(sampler2DShadow shadowMap0, sampler2DShadow shadowMap1, sampler2DShadow shadowMap2, 
-						   vec4 lsPos0, vec4 lsPos1, vec4 lsPos2,
-						   vec4 pssmSplitPoints, float camDepth)
-{
-
-	float shadow;
-	vec4 splitColour;
-	// calculate shadow
-	if (camDepth <= pssmSplitPoints.y)
-	{
-		splitColour = vec4(0.3, 0.0, 0, 0);
-		shadow = calcSimpleShadow(shadowMap0, lsPos0);
-	}
-	else if (camDepth <= pssmSplitPoints.z)
-	{
-		splitColour = vec4(0, 0.3, 0, 0);
-		shadow = calcSimpleShadow(shadowMap1, lsPos1);
-	}
-	else
-	{
-		splitColour = vec4(0.0, 0.0, 0.3, 0);
-		shadow = calcSimpleShadow(shadowMap2, lsPos2);
-	}
-
-	return shadow;
-}
-
-
-
-vec3 calcPSSMDebugShadow(sampler2DShadow shadowMap0, sampler2DShadow shadowMap1, sampler2DShadow shadowMap2, 
-						   vec4 lsPos0, vec4 lsPos1, vec4 lsPos2,
-						   float invShadowmapSize0, float invShadowmapSize1, float invShadowmapSize2,
-						   vec4 pssmSplitPoints, float camDepth)
-{
-
-	vec4 splitColour;
-	// calculate shadow
-	if (camDepth <= pssmSplitPoints.y)
-	{
-		//splitColour = vec4(0.3, 0.0, 0, 0);
-		//splitColour = lsPos0 / lsPos0.w;
-		splitColour.rgb = vec3(textureProj(shadowMap0, lsPos0));
-	}
-	else if (camDepth <= pssmSplitPoints.z)
-	{
-		//splitColour = vec4(0, 0.3, 0, 0);
-		//splitColour = lsPos1 / lsPos1.w;
-		splitColour.rgb = vec3(textureProj(shadowMap1, lsPos1));
-	}
-	else
-	{
-		//splitColour = vec4(0.0, 0.0, 0.3, 0);
-		//splitColour = lsPos2 / lsPos2.w;
-		splitColour.rgb = vec3(textureProj(shadowMap2, lsPos2));
-	}
-
-	return splitColour.rgb;
-}
Index: data/branches/Shader_HS18/programs/Example/GLSL150/skinningTwoWeightsShadowCasterVp.glsl
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL150/skinningTwoWeightsShadowCasterVp.glsl	(revision 12091)
+++ 	(revision )
@@ -1,44 +1,0 @@
-#version 150
-
-// Example GLSL program for skinning with two bone weights per vertex
-
-in vec4 vertex;
-in vec4 uv0;
-in vec4 blendIndices;
-in vec4 blendWeights;
-
-// 3x4 matrix, passed as vec4's for compatibility with GL 2.0
-// GL 2.0 supports 3x4 matrices
-// Support 24 bones ie 24*3, but use 72 since our parser can pick that out for sizing
-uniform vec4 worldMatrix3x4Array[72];
-uniform mat4 viewProjectionMatrix;
-uniform vec4 ambient;
-
-void main()
-{
-	vec3 blendPos = vec3(0,0,0);
-
-	for (int bone = 0; bone < 2; ++bone)
-	{
-		// perform matrix multiplication manually since no 3x4 matrices
-        // ATI GLSL compiler can't handle indexing an array within an array so calculate the inner index first
-	    int idx = int(blendIndices[bone]) * 3;
-        // ATI GLSL compiler can't handle unrolling the loop so do it manually
-        // ATI GLSL has better performance when mat4 is used rather than using individual dot product
-        // There is a bug in ATI mat4 constructor (Cat 7.2) when indexed uniform array elements are used as vec4 parameter so manually assign
-		mat4 worldMatrix;
-		worldMatrix[0] = worldMatrix3x4Array[idx];
-		worldMatrix[1] = worldMatrix3x4Array[idx + 1];
-		worldMatrix[2] = worldMatrix3x4Array[idx + 2];
-		worldMatrix[3] = vec4(0);
-		// now weight this into final 
-		blendPos += (vertex * worldMatrix).xyz * blendWeights[bone];
-	}
-
-	// apply view / projection to position
-	gl_Position = viewProjectionMatrix * vec4(blendPos, 1);
-	
-	gl_FrontSecondaryColor = vec4(0,0,0,0);
-	gl_FrontColor = ambient;
-	gl_TexCoord[0] = uv0;
-}
Index: data/branches/Shader_HS18/programs/Example/GLSL150/skinningTwoWeightsVp.glsl
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL150/skinningTwoWeightsVp.glsl	(revision 12091)
+++ 	(revision )
@@ -1,65 +1,0 @@
-#version 150
-
-// Example GLSL program for skinning with two bone weights per vertex
-
-in vec4 vertex;
-in vec3 normal;
-in vec4 uv0;
-in vec4 blendIndices;
-in vec4 blendWeights;
-
-// 3x4 matrix, passed as vec4's for compatibility with GL 2.0
-// GL 2.0 supports 3x4 matrices
-// Support 24 bones ie 24*3, but use 72 since our parser can pick that out for sizing
-uniform vec4 worldMatrix3x4Array[72];
-uniform mat4 viewProjectionMatrix;
-uniform vec4 lightPos[2];
-uniform vec4 lightDiffuseColour[2];
-uniform vec4 ambient;
-uniform vec4 diffuse;
-
-out vec4 colour;
-out vec4 uv;
-
-void main()
-{
-	vec3 blendPos = vec3(0.0, 0.0, 0.0);
-	vec3 blendNorm = vec3(0.0, 0.0, 0.0);
-	
-	for (int bone = 0; bone < 2; ++bone)
-	{
-		// perform matrix multiplication manually since no 3x4 matrices
-        // ATI GLSL compiler can't handle indexing an array within an array so calculate the inner index first
-		int idx = int(blendIndices[bone]) * 3;
-        // ATI GLSL compiler can't handle unrolling the loop so do it manually
-        // ATI GLSL has better performance when mat4 is used rather than using individual dot product
-        // There is a bug in ATI mat4 constructor (Cat 7.2) when indexed uniform array elements are used as vec4 parameter so manually assign
-		mat4 worldMatrix;
-		worldMatrix[0] = worldMatrix3x4Array[idx];
-		worldMatrix[1] = worldMatrix3x4Array[idx + 1];
-		worldMatrix[2] = worldMatrix3x4Array[idx + 2];
-		worldMatrix[3] = vec4(0);
-		// now weight this into final 
-		float weight = blendWeights[bone];
-		blendPos += (vertex * worldMatrix).xyz * weight;
-		
-		mat3 worldRotMatrix = mat3(worldMatrix[0].xyz, worldMatrix[1].xyz, worldMatrix[2].xyz);
-		blendNorm += (normal * worldRotMatrix) * weight;
-	}
-
-	blendNorm = normalize(blendNorm);
-
-	// apply view / projection to position
-	gl_Position = viewProjectionMatrix * vec4(blendPos, 1.0);
-
-	// simple vertex lighting model
-	vec3 lightDir0 = normalize(
-		lightPos[0].xyz -  (blendPos * lightPos[0].w));
-	vec3 lightDir1 = normalize(
-		lightPos[1].xyz -  (blendPos * lightPos[1].w));
-		
-	colour = diffuse * (ambient + (clamp(dot(lightDir0, blendNorm), 0.0, 1.0) * lightDiffuseColour[0]) + 
-		(clamp(dot(lightDir1, blendNorm), 0.0, 1.0) * lightDiffuseColour[1]));	
-
-	uv = uv0;
-}
