[Orxonox-commit 7486] r12092 - in data/branches/Shader_HS18: materials programs programs/Example programs/Example/GLSL programs/Example/GLSL150
wiesep at orxonox.net
wiesep at orxonox.net
Fri Nov 9 13:10:40 CET 2018
Author: wiesep
Date: 2018-11-09 13:10:40 +0100 (Fri, 09 Nov 2018)
New Revision: 12092
Removed:
data/branches/Shader_HS18/programs/Cg/
data/branches/Shader_HS18/programs/Example/Cg/
data/branches/Shader_HS18/programs/Example/GLSL/AmbientOneTexture.glsl
data/branches/Shader_HS18/programs/Example/GLSL/Bloom2_ps20.glsl
data/branches/Shader_HS18/programs/Example/GLSL/Blur0_vs.glsl
data/branches/Shader_HS18/programs/Example/GLSL/Blur1_vs.glsl
data/branches/Shader_HS18/programs/Example/GLSL/BlurH_ps20.glsl
data/branches/Shader_HS18/programs/Example/GLSL/BlurV_ps20.glsl
data/branches/Shader_HS18/programs/Example/GLSL/Blur_ps.glsl
data/branches/Shader_HS18/programs/Example/GLSL/Blur_vs.glsl
data/branches/Shader_HS18/programs/Example/GLSL/BrightBloom2_ps20.glsl
data/branches/Shader_HS18/programs/Example/GLSL/DiffuseOneTexture.glsl
data/branches/Shader_HS18/programs/Example/GLSL/DualQuaternion.glsl
data/branches/Shader_HS18/programs/Example/GLSL/DualQuaternion_Common.glsl
data/branches/Shader_HS18/programs/Example/GLSL/DualQuaternion_ShadowCaster.glsl
data/branches/Shader_HS18/programs/Example/GLSL/DualQuaternion_TwoPhase.glsl
data/branches/Shader_HS18/programs/Example/GLSL/DualQuaternion_TwoPhaseShadowCaster.glsl
data/branches/Shader_HS18/programs/Example/GLSL/Example_TextureArrayPS.glsl
data/branches/Shader_HS18/programs/Example/GLSL/Example_TextureArrayVS.glsl
data/branches/Shader_HS18/programs/Example/GLSL/HWBasicInstancing.vert
data/branches/Shader_HS18/programs/Example/GLSL/HW_VTFInstancing.vert
data/branches/Shader_HS18/programs/Example/GLSL/Instancing.frag
data/branches/Shader_HS18/programs/Example/GLSL/InstancingMisc.vert
data/branches/Shader_HS18/programs/Example/GLSL/Ocean2GLSL.frag
data/branches/Shader_HS18/programs/Example/GLSL/Ocean2GLSL.vert
data/branches/Shader_HS18/programs/Example/GLSL/OffsetMappingFp.glsl
data/branches/Shader_HS18/programs/Example/GLSL/OffsetMappingVp.glsl
data/branches/Shader_HS18/programs/Example/GLSL/PassthroughFP.glsl
data/branches/Shader_HS18/programs/Example/GLSL/PassthroughVP.glsl
data/branches/Shader_HS18/programs/Example/GLSL/ShaderInstancing.vert
data/branches/Shader_HS18/programs/Example/GLSL/VTFInstancing.vert
data/branches/Shader_HS18/programs/Example/GLSL/crowdVp.glsl
data/branches/Shader_HS18/programs/Example/GLSL/hdr_tonemap_util.glsl
data/branches/Shader_HS18/programs/Example/GLSL/oceanGLSL.frag
data/branches/Shader_HS18/programs/Example/GLSL/oceanGLSL.vert
data/branches/Shader_HS18/programs/Example/GLSL/shadows.glsl
data/branches/Shader_HS18/programs/Example/GLSL/skinningTwoWeightsShadowCasterVp.glsl
data/branches/Shader_HS18/programs/Example/GLSL/skinningTwoWeightsVp.glsl
data/branches/Shader_HS18/programs/Example/GLSL150/AmbientOneTexture.glsl
data/branches/Shader_HS18/programs/Example/GLSL150/AmbientOneTextureWithUV.glsl
data/branches/Shader_HS18/programs/Example/GLSL150/Bloom2_ps20.glsl
data/branches/Shader_HS18/programs/Example/GLSL150/BlurH_ps20.glsl
data/branches/Shader_HS18/programs/Example/GLSL150/BlurV_ps20.glsl
data/branches/Shader_HS18/programs/Example/GLSL150/Blur_vs.glsl
data/branches/Shader_HS18/programs/Example/GLSL150/BrightBloom2_ps20.glsl
data/branches/Shader_HS18/programs/Example/GLSL150/BumpMapVPTangentParity.glsl
data/branches/Shader_HS18/programs/Example/GLSL150/DiffuseOneTexture.glsl
data/branches/Shader_HS18/programs/Example/GLSL150/DualQuaternion.glsl
data/branches/Shader_HS18/programs/Example/GLSL150/DualQuaternion_Common.glsl
data/branches/Shader_HS18/programs/Example/GLSL150/DualQuaternion_ShadowCaster.glsl
data/branches/Shader_HS18/programs/Example/GLSL150/DualQuaternion_TwoPhase.glsl
data/branches/Shader_HS18/programs/Example/GLSL150/DualQuaternion_TwoPhaseShadowCaster.glsl
data/branches/Shader_HS18/programs/Example/GLSL150/Dyn-TextFP.glsl
data/branches/Shader_HS18/programs/Example/GLSL150/Dyn-TextVP.glsl
data/branches/Shader_HS18/programs/Example/GLSL150/Example_BumpMappingFp.glsl
data/branches/Shader_HS18/programs/Example/GLSL150/Example_BumpMappingShadowRcvFp.glsl
data/branches/Shader_HS18/programs/Example/GLSL150/Example_BumpMappingShadowRcvVp.glsl
data/branches/Shader_HS18/programs/Example/GLSL150/Example_BumpMappingSpecularFp.glsl
data/branches/Shader_HS18/programs/Example/GLSL150/Example_BumpMappingSpecularVp.glsl
data/branches/Shader_HS18/programs/Example/GLSL150/Example_BumpMappingVp.glsl
data/branches/Shader_HS18/programs/Example/GLSL150/Example_FresnelFp.glsl
data/branches/Shader_HS18/programs/Example/GLSL150/Example_FresnelVp.glsl
data/branches/Shader_HS18/programs/Example/GLSL150/Example_TextureArrayPS.glsl
data/branches/Shader_HS18/programs/Example/GLSL150/Example_TextureArrayVS.glsl
data/branches/Shader_HS18/programs/Example/GLSL150/GlassFP.glsl
data/branches/Shader_HS18/programs/Example/GLSL150/GrayScale.glsl
data/branches/Shader_HS18/programs/Example/GLSL150/HWBasicInstancing.vert
data/branches/Shader_HS18/programs/Example/GLSL150/HW_VTFInstancing.vert
data/branches/Shader_HS18/programs/Example/GLSL150/HeatBlurVp.glsl
data/branches/Shader_HS18/programs/Example/GLSL150/Instancing.frag
data/branches/Shader_HS18/programs/Example/GLSL150/InstancingMisc.vert
data/branches/Shader_HS18/programs/Example/GLSL150/LightToHeatVp.glsl
data/branches/Shader_HS18/programs/Example/GLSL150/MetaballFP.glsl
data/branches/Shader_HS18/programs/Example/GLSL150/Ocean2GLSL.frag
data/branches/Shader_HS18/programs/Example/GLSL150/Ocean2GLSL.vert
data/branches/Shader_HS18/programs/Example/GLSL150/OffsetMappingFp.glsl
data/branches/Shader_HS18/programs/Example/GLSL150/OffsetMappingShadowsFp.glsl
data/branches/Shader_HS18/programs/Example/GLSL150/OffsetMappingShadowsVp.glsl
data/branches/Shader_HS18/programs/Example/GLSL150/OffsetMappingVp.glsl
data/branches/Shader_HS18/programs/Example/GLSL150/OffsetMapping_specular.glsl
data/branches/Shader_HS18/programs/Example/GLSL150/ParticleGS_DisplayPS.glsl
data/branches/Shader_HS18/programs/Example/GLSL150/PassthroughFP.glsl
data/branches/Shader_HS18/programs/Example/GLSL150/PassthroughVP.glsl
data/branches/Shader_HS18/programs/Example/GLSL150/SampleFieldVS.glsl
data/branches/Shader_HS18/programs/Example/GLSL150/ShaderInstancing.vert
data/branches/Shader_HS18/programs/Example/GLSL150/ShowNormals.glsl
data/branches/Shader_HS18/programs/Example/GLSL150/ShowTangents.glsl
data/branches/Shader_HS18/programs/Example/GLSL150/ShowUV.glsl
data/branches/Shader_HS18/programs/Example/GLSL150/ShowUVdir3D.glsl
data/branches/Shader_HS18/programs/Example/GLSL150/StdQuad_Tex2_vp.glsl
data/branches/Shader_HS18/programs/Example/GLSL150/StdQuad_Tex2a_vp.glsl
data/branches/Shader_HS18/programs/Example/GLSL150/StdQuad_Tex3_vp.glsl
data/branches/Shader_HS18/programs/Example/GLSL150/StdQuad_Tex4_vp.glsl
data/branches/Shader_HS18/programs/Example/GLSL150/TessellateTetrahedraGS.glsl
data/branches/Shader_HS18/programs/Example/GLSL150/VTFInstancing.vert
data/branches/Shader_HS18/programs/Example/GLSL150/crowdVp.glsl
data/branches/Shader_HS18/programs/Example/GLSL150/hdr_tonemap_util.glsl
data/branches/Shader_HS18/programs/Example/GLSL150/oceanGLSL.frag
data/branches/Shader_HS18/programs/Example/GLSL150/oceanGLSL.vert
data/branches/Shader_HS18/programs/Example/GLSL150/shadows.glsl
data/branches/Shader_HS18/programs/Example/GLSL150/skinningTwoWeightsShadowCasterVp.glsl
data/branches/Shader_HS18/programs/Example/GLSL150/skinningTwoWeightsVp.glsl
Modified:
data/branches/Shader_HS18/materials/Cube_Lava_Normal.material
Log:
Remove unused files
Modified: data/branches/Shader_HS18/materials/Cube_Lava_Normal.material
===================================================================
--- data/branches/Shader_HS18/materials/Cube_Lava_Normal.material 2018-11-09 12:06:05 UTC (rev 12091)
+++ data/branches/Shader_HS18/materials/Cube_Lava_Normal.material 2018-11-09 12:10:40 UTC (rev 12092)
@@ -63,7 +63,10 @@
// hint to pass categorisation routine, that this is decal only
lighting off
scene_blend dest_colour zero
- ambient 0.5 0.5 0.5 1
+ texture_unit decalmap
+ {
+ texture Cube_Lava_COLOR.jpg
+ }
}
}
}
Deleted: data/branches/Shader_HS18/programs/Example/GLSL/AmbientOneTexture.glsl
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL/AmbientOneTexture.glsl 2018-11-09 12:06:05 UTC (rev 12091)
+++ data/branches/Shader_HS18/programs/Example/GLSL/AmbientOneTexture.glsl 2018-11-09 12:10:40 UTC (rev 12092)
@@ -1,13 +0,0 @@
-uniform vec4 ambient;
-
-/*
- Basic ambient lighting vertex program
-*/
-void main()
-{
- gl_Position = ftransform();
- gl_TexCoord[0] = gl_MultiTexCoord0;
- gl_FrontColor = ambient;
-}
-
-
Deleted: data/branches/Shader_HS18/programs/Example/GLSL/Bloom2_ps20.glsl
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL/Bloom2_ps20.glsl 2018-11-09 12:06:05 UTC (rev 12091)
+++ data/branches/Shader_HS18/programs/Example/GLSL/Bloom2_ps20.glsl 2018-11-09 12:10:40 UTC (rev 12092)
@@ -1,27 +0,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);
-}
Deleted: data/branches/Shader_HS18/programs/Example/GLSL/Blur0_vs.glsl
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL/Blur0_vs.glsl 2018-11-09 12:06:05 UTC (rev 12091)
+++ data/branches/Shader_HS18/programs/Example/GLSL/Blur0_vs.glsl 2018-11-09 12:10:40 UTC (rev 12092)
@@ -1,16 +0,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;
-}
Deleted: data/branches/Shader_HS18/programs/Example/GLSL/Blur1_vs.glsl
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL/Blur1_vs.glsl 2018-11-09 12:06:05 UTC (rev 12091)
+++ data/branches/Shader_HS18/programs/Example/GLSL/Blur1_vs.glsl 2018-11-09 12:10:40 UTC (rev 12092)
@@ -1,16 +0,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;
-}
Deleted: data/branches/Shader_HS18/programs/Example/GLSL/BlurH_ps20.glsl
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL/BlurH_ps20.glsl 2018-11-09 12:06:05 UTC (rev 12091)
+++ data/branches/Shader_HS18/programs/Example/GLSL/BlurH_ps20.glsl 2018-11-09 12:10:40 UTC (rev 12092)
@@ -1,57 +0,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;
-}
Deleted: data/branches/Shader_HS18/programs/Example/GLSL/BlurV_ps20.glsl
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL/BlurV_ps20.glsl 2018-11-09 12:06:05 UTC (rev 12091)
+++ data/branches/Shader_HS18/programs/Example/GLSL/BlurV_ps20.glsl 2018-11-09 12:10:40 UTC (rev 12092)
@@ -1,61 +0,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;
-}
Deleted: data/branches/Shader_HS18/programs/Example/GLSL/Blur_ps.glsl
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL/Blur_ps.glsl 2018-11-09 12:06:05 UTC (rev 12091)
+++ data/branches/Shader_HS18/programs/Example/GLSL/Blur_ps.glsl 2018-11-09 12:10:40 UTC (rev 12092)
@@ -1,14 +0,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;
-}
-
Deleted: data/branches/Shader_HS18/programs/Example/GLSL/Blur_vs.glsl
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL/Blur_vs.glsl 2018-11-09 12:06:05 UTC (rev 12091)
+++ data/branches/Shader_HS18/programs/Example/GLSL/Blur_vs.glsl 2018-11-09 12:10:40 UTC (rev 12092)
@@ -1,15 +0,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);
-}
Deleted: data/branches/Shader_HS18/programs/Example/GLSL/BrightBloom2_ps20.glsl
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL/BrightBloom2_ps20.glsl 2018-11-09 12:06:05 UTC (rev 12091)
+++ data/branches/Shader_HS18/programs/Example/GLSL/BrightBloom2_ps20.glsl 2018-11-09 12:10:40 UTC (rev 12092)
@@ -1,29 +0,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;
-}
Deleted: data/branches/Shader_HS18/programs/Example/GLSL/DiffuseOneTexture.glsl
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL/DiffuseOneTexture.glsl 2018-11-09 12:06:05 UTC (rev 12091)
+++ data/branches/Shader_HS18/programs/Example/GLSL/DiffuseOneTexture.glsl 2018-11-09 12:10:40 UTC (rev 12092)
@@ -1,14 +0,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;
-}
Deleted: data/branches/Shader_HS18/programs/Example/GLSL/DualQuaternion.glsl
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL/DualQuaternion.glsl 2018-11-09 12:06:05 UTC (rev 12091)
+++ data/branches/Shader_HS18/programs/Example/GLSL/DualQuaternion.glsl 2018-11-09 12:10:40 UTC (rev 12092)
@@ -1,42 +0,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]));
-}
-
Deleted: data/branches/Shader_HS18/programs/Example/GLSL/DualQuaternion_Common.glsl
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL/DualQuaternion_Common.glsl 2018-11-09 12:06:05 UTC (rev 12091)
+++ data/branches/Shader_HS18/programs/Example/GLSL/DualQuaternion_Common.glsl 2018-11-09 12:10:40 UTC (rev 12092)
@@ -1,70 +0,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 at 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);
-}
-
-
Deleted: data/branches/Shader_HS18/programs/Example/GLSL/DualQuaternion_ShadowCaster.glsl
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL/DualQuaternion_ShadowCaster.glsl 2018-11-09 12:06:05 UTC (rev 12091)
+++ data/branches/Shader_HS18/programs/Example/GLSL/DualQuaternion_ShadowCaster.glsl 2018-11-09 12:10:40 UTC (rev 12092)
@@ -1,29 +0,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;
-}
-
Deleted: data/branches/Shader_HS18/programs/Example/GLSL/DualQuaternion_TwoPhase.glsl
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL/DualQuaternion_TwoPhase.glsl 2018-11-09 12:06:05 UTC (rev 12091)
+++ data/branches/Shader_HS18/programs/Example/GLSL/DualQuaternion_TwoPhase.glsl 2018-11-09 12:10:40 UTC (rev 12092)
@@ -1,77 +0,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]));
-}
-
Deleted: data/branches/Shader_HS18/programs/Example/GLSL/DualQuaternion_TwoPhaseShadowCaster.glsl
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL/DualQuaternion_TwoPhaseShadowCaster.glsl 2018-11-09 12:06:05 UTC (rev 12091)
+++ data/branches/Shader_HS18/programs/Example/GLSL/DualQuaternion_TwoPhaseShadowCaster.glsl 2018-11-09 12:10:40 UTC (rev 12092)
@@ -1,44 +0,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;
-}
-
Deleted: data/branches/Shader_HS18/programs/Example/GLSL/Example_TextureArrayPS.glsl
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL/Example_TextureArrayPS.glsl 2018-11-09 12:06:05 UTC (rev 12091)
+++ data/branches/Shader_HS18/programs/Example/GLSL/Example_TextureArrayPS.glsl 2018-11-09 12:10:40 UTC (rev 12092)
@@ -1,17 +0,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));
-}
Deleted: data/branches/Shader_HS18/programs/Example/GLSL/Example_TextureArrayVS.glsl
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL/Example_TextureArrayVS.glsl 2018-11-09 12:06:05 UTC (rev 12091)
+++ data/branches/Shader_HS18/programs/Example/GLSL/Example_TextureArrayVS.glsl 2018-11-09 12:10:40 UTC (rev 12092)
@@ -1,11 +0,0 @@
-#version 120
-
-varying vec3 oUv;
-
-uniform mat4 worldViewProj;
-
-void main(void)
-{
- gl_Position = worldViewProj * gl_Vertex;
- oUv = gl_MultiTexCoord0.xyz;
-}
Deleted: data/branches/Shader_HS18/programs/Example/GLSL/HWBasicInstancing.vert
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL/HWBasicInstancing.vert 2018-11-09 12:06:05 UTC (rev 12091)
+++ data/branches/Shader_HS18/programs/Example/GLSL/HWBasicInstancing.vert 2018-11-09 12:10:40 UTC (rev 12092)
@@ -1,69 +0,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
-}
Deleted: data/branches/Shader_HS18/programs/Example/GLSL/HW_VTFInstancing.vert
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL/HW_VTFInstancing.vert 2018-11-09 12:06:05 UTC (rev 12091)
+++ data/branches/Shader_HS18/programs/Example/GLSL/HW_VTFInstancing.vert 2018-11-09 12:10:40 UTC (rev 12092)
@@ -1,131 +0,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
-}
Deleted: data/branches/Shader_HS18/programs/Example/GLSL/Instancing.frag
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL/Instancing.frag 2018-11-09 12:06:05 UTC (rev 12091)
+++ data/branches/Shader_HS18/programs/Example/GLSL/Instancing.frag 2018-11-09 12:10:40 UTC (rev 12092)
@@ -1,66 +0,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;
-}
Deleted: data/branches/Shader_HS18/programs/Example/GLSL/InstancingMisc.vert
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL/InstancingMisc.vert 2018-11-09 12:06:05 UTC (rev 12091)
+++ data/branches/Shader_HS18/programs/Example/GLSL/InstancingMisc.vert 2018-11-09 12:10:40 UTC (rev 12092)
@@ -1,62 +0,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
-}
Deleted: data/branches/Shader_HS18/programs/Example/GLSL/Ocean2GLSL.frag
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL/Ocean2GLSL.frag 2018-11-09 12:06:05 UTC (rev 12091)
+++ data/branches/Shader_HS18/programs/Example/GLSL/Ocean2GLSL.frag 2018-11-09 12:10:40 UTC (rev 12092)
@@ -1,71 +0,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;
-}
Deleted: data/branches/Shader_HS18/programs/Example/GLSL/Ocean2GLSL.vert
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL/Ocean2GLSL.vert 2018-11-09 12:06:05 UTC (rev 12091)
+++ data/branches/Shader_HS18/programs/Example/GLSL/Ocean2GLSL.vert 2018-11-09 12:10:40 UTC (rev 12092)
@@ -1,92 +0,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
-}
Deleted: data/branches/Shader_HS18/programs/Example/GLSL/OffsetMappingFp.glsl
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL/OffsetMappingFp.glsl 2018-11-09 12:06:05 UTC (rev 12091)
+++ data/branches/Shader_HS18/programs/Example/GLSL/OffsetMappingFp.glsl 2018-11-09 12:10:40 UTC (rev 12092)
@@ -1,69 +0,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;
-
-}
Deleted: data/branches/Shader_HS18/programs/Example/GLSL/OffsetMappingVp.glsl
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL/OffsetMappingVp.glsl 2018-11-09 12:06:05 UTC (rev 12091)
+++ data/branches/Shader_HS18/programs/Example/GLSL/OffsetMappingVp.glsl 2018-11-09 12:10:40 UTC (rev 12092)
@@ -1,54 +0,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);
-}
Deleted: data/branches/Shader_HS18/programs/Example/GLSL/PassthroughFP.glsl
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL/PassthroughFP.glsl 2018-11-09 12:06:05 UTC (rev 12091)
+++ data/branches/Shader_HS18/programs/Example/GLSL/PassthroughFP.glsl 2018-11-09 12:10:40 UTC (rev 12092)
@@ -1,9 +0,0 @@
-varying vec4 colour;
-
-/*
- Basic ambient lighting fragment program for GLSL ES
-*/
-void main()
-{
- gl_FragColor = colour;
-}
Deleted: data/branches/Shader_HS18/programs/Example/GLSL/PassthroughVP.glsl
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL/PassthroughVP.glsl 2018-11-09 12:06:05 UTC (rev 12091)
+++ data/branches/Shader_HS18/programs/Example/GLSL/PassthroughVP.glsl 2018-11-09 12:10:40 UTC (rev 12092)
@@ -1,5 +0,0 @@
-void main()
-{
- //Transform the vertex (ModelViewProj matrix)
- gl_Position = ftransform();
-}
Deleted: data/branches/Shader_HS18/programs/Example/GLSL/ShaderInstancing.vert
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL/ShaderInstancing.vert 2018-11-09 12:06:05 UTC (rev 12091)
+++ data/branches/Shader_HS18/programs/Example/GLSL/ShaderInstancing.vert 2018-11-09 12:10:40 UTC (rev 12092)
@@ -1,117 +0,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
-}
Deleted: data/branches/Shader_HS18/programs/Example/GLSL/VTFInstancing.vert
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL/VTFInstancing.vert 2018-11-09 12:06:05 UTC (rev 12091)
+++ data/branches/Shader_HS18/programs/Example/GLSL/VTFInstancing.vert 2018-11-09 12:10:40 UTC (rev 12092)
@@ -1,113 +0,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
-}
Deleted: data/branches/Shader_HS18/programs/Example/GLSL/crowdVp.glsl
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL/crowdVp.glsl 2018-11-09 12:06:05 UTC (rev 12091)
+++ data/branches/Shader_HS18/programs/Example/GLSL/crowdVp.glsl 2018-11-09 12:10:40 UTC (rev 12092)
@@ -1,62 +0,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;
-
-
-}
-
Deleted: data/branches/Shader_HS18/programs/Example/GLSL/hdr_tonemap_util.glsl
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL/hdr_tonemap_util.glsl 2018-11-09 12:06:05 UTC (rev 12091)
+++ data/branches/Shader_HS18/programs/Example/GLSL/hdr_tonemap_util.glsl 2018-11-09 12:10:40 UTC (rev 12092)
@@ -1,29 +0,0 @@
-const float MIDDLE_GREY = 0.72;
-const float FUDGE = 0.001;
-const float L_WHITE = 1.5;
-
-/** Tone mapping function
- at note Only affects rgb, not a
- at param inColour The HDR colour
- at param lum The scene lumninence
- at 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;
-
-}
-
-
Deleted: data/branches/Shader_HS18/programs/Example/GLSL/oceanGLSL.frag
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL/oceanGLSL.frag 2018-11-09 12:06:05 UTC (rev 12091)
+++ data/branches/Shader_HS18/programs/Example/GLSL/oceanGLSL.frag 2018-11-09 12:10:40 UTC (rev 12092)
@@ -1,45 +0,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) );
-}
Deleted: data/branches/Shader_HS18/programs/Example/GLSL/oceanGLSL.vert
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL/oceanGLSL.vert 2018-11-09 12:06:05 UTC (rev 12091)
+++ data/branches/Shader_HS18/programs/Example/GLSL/oceanGLSL.vert 2018-11-09 12:10:40 UTC (rev 12092)
@@ -1,33 +0,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;
-
-}
Deleted: data/branches/Shader_HS18/programs/Example/GLSL/shadows.glsl
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL/shadows.glsl 2018-11-09 12:06:05 UTC (rev 12091)
+++ data/branches/Shader_HS18/programs/Example/GLSL/shadows.glsl 2018-11-09 12:10:40 UTC (rev 12092)
@@ -1,146 +0,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;
-}
Deleted: data/branches/Shader_HS18/programs/Example/GLSL/skinningTwoWeightsShadowCasterVp.glsl
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL/skinningTwoWeightsShadowCasterVp.glsl 2018-11-09 12:06:05 UTC (rev 12091)
+++ data/branches/Shader_HS18/programs/Example/GLSL/skinningTwoWeightsShadowCasterVp.glsl 2018-11-09 12:10:40 UTC (rev 12092)
@@ -1,42 +0,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;
-}
Deleted: data/branches/Shader_HS18/programs/Example/GLSL/skinningTwoWeightsVp.glsl
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL/skinningTwoWeightsVp.glsl 2018-11-09 12:06:05 UTC (rev 12091)
+++ data/branches/Shader_HS18/programs/Example/GLSL/skinningTwoWeightsVp.glsl 2018-11-09 12:10:40 UTC (rev 12092)
@@ -1,63 +0,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;
-}
Deleted: data/branches/Shader_HS18/programs/Example/GLSL150/AmbientOneTexture.glsl
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL150/AmbientOneTexture.glsl 2018-11-09 12:06:05 UTC (rev 12091)
+++ data/branches/Shader_HS18/programs/Example/GLSL150/AmbientOneTexture.glsl 2018-11-09 12:10:40 UTC (rev 12092)
@@ -1,17 +0,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;
-}
Deleted: data/branches/Shader_HS18/programs/Example/GLSL150/AmbientOneTextureWithUV.glsl
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL150/AmbientOneTextureWithUV.glsl 2018-11-09 12:06:05 UTC (rev 12091)
+++ data/branches/Shader_HS18/programs/Example/GLSL150/AmbientOneTextureWithUV.glsl 2018-11-09 12:10:40 UTC (rev 12092)
@@ -1,20 +0,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;
-}
Deleted: data/branches/Shader_HS18/programs/Example/GLSL150/Bloom2_ps20.glsl
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL150/Bloom2_ps20.glsl 2018-11-09 12:06:05 UTC (rev 12091)
+++ data/branches/Shader_HS18/programs/Example/GLSL150/Bloom2_ps20.glsl 2018-11-09 12:10:40 UTC (rev 12092)
@@ -1,31 +0,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);
-}
Deleted: data/branches/Shader_HS18/programs/Example/GLSL150/BlurH_ps20.glsl
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL150/BlurH_ps20.glsl 2018-11-09 12:06:05 UTC (rev 12091)
+++ data/branches/Shader_HS18/programs/Example/GLSL150/BlurH_ps20.glsl 2018-11-09 12:10:40 UTC (rev 12092)
@@ -1,58 +0,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;
-}
Deleted: data/branches/Shader_HS18/programs/Example/GLSL150/BlurV_ps20.glsl
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL150/BlurV_ps20.glsl 2018-11-09 12:06:05 UTC (rev 12091)
+++ data/branches/Shader_HS18/programs/Example/GLSL150/BlurV_ps20.glsl 2018-11-09 12:10:40 UTC (rev 12092)
@@ -1,64 +0,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;
-}
Deleted: data/branches/Shader_HS18/programs/Example/GLSL150/Blur_vs.glsl
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL150/Blur_vs.glsl 2018-11-09 12:06:05 UTC (rev 12091)
+++ data/branches/Shader_HS18/programs/Example/GLSL150/Blur_vs.glsl 2018-11-09 12:10:40 UTC (rev 12092)
@@ -1,20 +0,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;
-}
Deleted: data/branches/Shader_HS18/programs/Example/GLSL150/BrightBloom2_ps20.glsl
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL150/BrightBloom2_ps20.glsl 2018-11-09 12:06:05 UTC (rev 12091)
+++ data/branches/Shader_HS18/programs/Example/GLSL150/BrightBloom2_ps20.glsl 2018-11-09 12:10:40 UTC (rev 12092)
@@ -1,33 +0,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;
-}
Deleted: data/branches/Shader_HS18/programs/Example/GLSL150/BumpMapVPTangentParity.glsl
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL150/BumpMapVPTangentParity.glsl 2018-11-09 12:06:05 UTC (rev 12091)
+++ data/branches/Shader_HS18/programs/Example/GLSL150/BumpMapVPTangentParity.glsl 2018-11-09 12:10:40 UTC (rev 12092)
@@ -1,51 +0,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;
-}
Deleted: data/branches/Shader_HS18/programs/Example/GLSL150/DiffuseOneTexture.glsl
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL150/DiffuseOneTexture.glsl 2018-11-09 12:06:05 UTC (rev 12091)
+++ data/branches/Shader_HS18/programs/Example/GLSL150/DiffuseOneTexture.glsl 2018-11-09 12:10:40 UTC (rev 12092)
@@ -1,16 +0,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;
-}
Deleted: data/branches/Shader_HS18/programs/Example/GLSL150/DualQuaternion.glsl
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL150/DualQuaternion.glsl 2018-11-09 12:06:05 UTC (rev 12091)
+++ data/branches/Shader_HS18/programs/Example/GLSL150/DualQuaternion.glsl 2018-11-09 12:10:40 UTC (rev 12092)
@@ -1,45 +0,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]));
-}
-
Deleted: data/branches/Shader_HS18/programs/Example/GLSL150/DualQuaternion_Common.glsl
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL150/DualQuaternion_Common.glsl 2018-11-09 12:06:05 UTC (rev 12091)
+++ data/branches/Shader_HS18/programs/Example/GLSL150/DualQuaternion_Common.glsl 2018-11-09 12:10:40 UTC (rev 12092)
@@ -1,68 +0,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 at 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);
-}
Deleted: data/branches/Shader_HS18/programs/Example/GLSL150/DualQuaternion_ShadowCaster.glsl
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL150/DualQuaternion_ShadowCaster.glsl 2018-11-09 12:06:05 UTC (rev 12091)
+++ data/branches/Shader_HS18/programs/Example/GLSL150/DualQuaternion_ShadowCaster.glsl 2018-11-09 12:10:40 UTC (rev 12092)
@@ -1,31 +0,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;
-}
-
Deleted: data/branches/Shader_HS18/programs/Example/GLSL150/DualQuaternion_TwoPhase.glsl
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL150/DualQuaternion_TwoPhase.glsl 2018-11-09 12:06:05 UTC (rev 12091)
+++ data/branches/Shader_HS18/programs/Example/GLSL150/DualQuaternion_TwoPhase.glsl 2018-11-09 12:10:40 UTC (rev 12092)
@@ -1,81 +0,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]));
-}
-
Deleted: data/branches/Shader_HS18/programs/Example/GLSL150/DualQuaternion_TwoPhaseShadowCaster.glsl
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL150/DualQuaternion_TwoPhaseShadowCaster.glsl 2018-11-09 12:06:05 UTC (rev 12091)
+++ data/branches/Shader_HS18/programs/Example/GLSL150/DualQuaternion_TwoPhaseShadowCaster.glsl 2018-11-09 12:10:40 UTC (rev 12092)
@@ -1,44 +0,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;
-}
-
Deleted: data/branches/Shader_HS18/programs/Example/GLSL150/Dyn-TextFP.glsl
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL150/Dyn-TextFP.glsl 2018-11-09 12:06:05 UTC (rev 12091)
+++ data/branches/Shader_HS18/programs/Example/GLSL150/Dyn-TextFP.glsl 2018-11-09 12:10:40 UTC (rev 12092)
@@ -1,14 +0,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;
-}
Deleted: data/branches/Shader_HS18/programs/Example/GLSL150/Dyn-TextVP.glsl
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL150/Dyn-TextVP.glsl 2018-11-09 12:06:05 UTC (rev 12091)
+++ data/branches/Shader_HS18/programs/Example/GLSL150/Dyn-TextVP.glsl 2018-11-09 12:10:40 UTC (rev 12092)
@@ -1,13 +0,0 @@
-#version 150
-
-in vec4 uv0;
-in vec4 vertex;
-out vec4 oUv;
-
-uniform mat4 worldViewProj;
-
-void main(void)
-{
- gl_Position = worldViewProj * vertex;
- oUv = uv0;
-}
\ No newline at end of file
Deleted: data/branches/Shader_HS18/programs/Example/GLSL150/Example_BumpMappingFp.glsl
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL150/Example_BumpMappingFp.glsl 2018-11-09 12:06:05 UTC (rev 12091)
+++ data/branches/Shader_HS18/programs/Example/GLSL150/Example_BumpMappingFp.glsl 2018-11-09 12:10:40 UTC (rev 12092)
@@ -1,29 +0,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);
-}
Deleted: data/branches/Shader_HS18/programs/Example/GLSL150/Example_BumpMappingShadowRcvFp.glsl
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL150/Example_BumpMappingShadowRcvFp.glsl 2018-11-09 12:06:05 UTC (rev 12091)
+++ data/branches/Shader_HS18/programs/Example/GLSL150/Example_BumpMappingShadowRcvFp.glsl 2018-11-09 12:10:40 UTC (rev 12092)
@@ -1,34 +0,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);
-}
Deleted: data/branches/Shader_HS18/programs/Example/GLSL150/Example_BumpMappingShadowRcvVp.glsl
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL150/Example_BumpMappingShadowRcvVp.glsl 2018-11-09 12:06:05 UTC (rev 12091)
+++ data/branches/Shader_HS18/programs/Example/GLSL150/Example_BumpMappingShadowRcvVp.glsl 2018-11-09 12:10:40 UTC (rev 12092)
@@ -1,52 +0,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);
-}
Deleted: data/branches/Shader_HS18/programs/Example/GLSL150/Example_BumpMappingSpecularFp.glsl
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL150/Example_BumpMappingSpecularFp.glsl 2018-11-09 12:06:05 UTC (rev 12091)
+++ data/branches/Shader_HS18/programs/Example/GLSL150/Example_BumpMappingSpecularFp.glsl 2018-11-09 12:10:40 UTC (rev 12092)
@@ -1,41 +0,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);
-}
Deleted: data/branches/Shader_HS18/programs/Example/GLSL150/Example_BumpMappingSpecularVp.glsl
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL150/Example_BumpMappingSpecularVp.glsl 2018-11-09 12:06:05 UTC (rev 12091)
+++ data/branches/Shader_HS18/programs/Example/GLSL150/Example_BumpMappingSpecularVp.glsl 2018-11-09 12:10:40 UTC (rev 12092)
@@ -1,47 +0,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;
-}
Deleted: data/branches/Shader_HS18/programs/Example/GLSL150/Example_BumpMappingVp.glsl
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL150/Example_BumpMappingVp.glsl 2018-11-09 12:06:05 UTC (rev 12091)
+++ data/branches/Shader_HS18/programs/Example/GLSL150/Example_BumpMappingVp.glsl 2018-11-09 12:10:40 UTC (rev 12092)
@@ -1,47 +0,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;
-}
Deleted: data/branches/Shader_HS18/programs/Example/GLSL150/Example_FresnelFp.glsl
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL150/Example_FresnelFp.glsl 2018-11-09 12:06:05 UTC (rev 12091)
+++ data/branches/Shader_HS18/programs/Example/GLSL150/Example_FresnelFp.glsl 2018-11-09 12:10:40 UTC (rev 12092)
@@ -1,39 +0,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);
-}
Deleted: data/branches/Shader_HS18/programs/Example/GLSL150/Example_FresnelVp.glsl
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL150/Example_FresnelVp.glsl 2018-11-09 12:06:05 UTC (rev 12091)
+++ data/branches/Shader_HS18/programs/Example/GLSL150/Example_FresnelVp.glsl 2018-11-09 12:10:40 UTC (rev 12092)
@@ -1,36 +0,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;
-}
Deleted: data/branches/Shader_HS18/programs/Example/GLSL150/Example_TextureArrayPS.glsl
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL150/Example_TextureArrayPS.glsl 2018-11-09 12:06:05 UTC (rev 12091)
+++ data/branches/Shader_HS18/programs/Example/GLSL150/Example_TextureArrayPS.glsl 2018-11-09 12:10:40 UTC (rev 12092)
@@ -1,17 +0,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));
-}
Deleted: data/branches/Shader_HS18/programs/Example/GLSL150/Example_TextureArrayVS.glsl
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL150/Example_TextureArrayVS.glsl 2018-11-09 12:06:05 UTC (rev 12091)
+++ data/branches/Shader_HS18/programs/Example/GLSL150/Example_TextureArrayVS.glsl 2018-11-09 12:10:40 UTC (rev 12092)
@@ -1,13 +0,0 @@
-#version 150
-
-in vec4 uv0;
-in vec4 vertex;
-out vec4 oUv;
-
-uniform mat4 worldViewProj;
-
-void main(void)
-{
- gl_Position = worldViewProj * vertex;
- oUv = uv0;
-}
Deleted: data/branches/Shader_HS18/programs/Example/GLSL150/GlassFP.glsl
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL150/GlassFP.glsl 2018-11-09 12:06:05 UTC (rev 12091)
+++ data/branches/Shader_HS18/programs/Example/GLSL150/GlassFP.glsl 2018-11-09 12:10:40 UTC (rev 12092)
@@ -1,14 +0,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);
-}
Deleted: data/branches/Shader_HS18/programs/Example/GLSL150/GrayScale.glsl
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL150/GrayScale.glsl 2018-11-09 12:06:05 UTC (rev 12091)
+++ data/branches/Shader_HS18/programs/Example/GLSL150/GrayScale.glsl 2018-11-09 12:10:40 UTC (rev 12092)
@@ -1,11 +0,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);
-}
Deleted: data/branches/Shader_HS18/programs/Example/GLSL150/HWBasicInstancing.vert
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL150/HWBasicInstancing.vert 2018-11-09 12:06:05 UTC (rev 12091)
+++ data/branches/Shader_HS18/programs/Example/GLSL150/HWBasicInstancing.vert 2018-11-09 12:10:40 UTC (rev 12092)
@@ -1,69 +0,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
-}
Deleted: data/branches/Shader_HS18/programs/Example/GLSL150/HW_VTFInstancing.vert
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL150/HW_VTFInstancing.vert 2018-11-09 12:06:05 UTC (rev 12091)
+++ data/branches/Shader_HS18/programs/Example/GLSL150/HW_VTFInstancing.vert 2018-11-09 12:10:40 UTC (rev 12092)
@@ -1,131 +0,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
-}
Deleted: data/branches/Shader_HS18/programs/Example/GLSL150/HeatBlurVp.glsl
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL150/HeatBlurVp.glsl 2018-11-09 12:06:05 UTC (rev 12091)
+++ data/branches/Shader_HS18/programs/Example/GLSL150/HeatBlurVp.glsl 2018-11-09 12:10:40 UTC (rev 12092)
@@ -1,14 +0,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;
-}
Deleted: data/branches/Shader_HS18/programs/Example/GLSL150/Instancing.frag
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL150/Instancing.frag 2018-11-09 12:06:05 UTC (rev 12091)
+++ data/branches/Shader_HS18/programs/Example/GLSL150/Instancing.frag 2018-11-09 12:10:40 UTC (rev 12092)
@@ -1,69 +0,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;
-}
Deleted: data/branches/Shader_HS18/programs/Example/GLSL150/InstancingMisc.vert
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL150/InstancingMisc.vert 2018-11-09 12:06:05 UTC (rev 12091)
+++ data/branches/Shader_HS18/programs/Example/GLSL150/InstancingMisc.vert 2018-11-09 12:10:40 UTC (rev 12092)
@@ -1,62 +0,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
-}
Deleted: data/branches/Shader_HS18/programs/Example/GLSL150/LightToHeatVp.glsl
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL150/LightToHeatVp.glsl 2018-11-09 12:06:05 UTC (rev 12091)
+++ data/branches/Shader_HS18/programs/Example/GLSL150/LightToHeatVp.glsl 2018-11-09 12:10:40 UTC (rev 12092)
@@ -1,13 +0,0 @@
-#version 150
-
-in vec4 vertex;
-out vec2 uv;
-
-uniform mat4 worldViewProj;
-in vec2 uv0;
-
-void main()
-{
- gl_Position = worldViewProj * vertex;
- uv = uv0;
-}
Deleted: data/branches/Shader_HS18/programs/Example/GLSL150/MetaballFP.glsl
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL150/MetaballFP.glsl 2018-11-09 12:06:05 UTC (rev 12091)
+++ data/branches/Shader_HS18/programs/Example/GLSL150/MetaballFP.glsl 2018-11-09 12:10:40 UTC (rev 12092)
@@ -1,28 +0,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 at 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);
-}
Deleted: data/branches/Shader_HS18/programs/Example/GLSL150/Ocean2GLSL.frag
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL150/Ocean2GLSL.frag 2018-11-09 12:06:05 UTC (rev 12091)
+++ data/branches/Shader_HS18/programs/Example/GLSL150/Ocean2GLSL.frag 2018-11-09 12:10:40 UTC (rev 12092)
@@ -1,73 +0,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;
-}
Deleted: data/branches/Shader_HS18/programs/Example/GLSL150/Ocean2GLSL.vert
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL150/Ocean2GLSL.vert 2018-11-09 12:06:05 UTC (rev 12091)
+++ data/branches/Shader_HS18/programs/Example/GLSL150/Ocean2GLSL.vert 2018-11-09 12:10:40 UTC (rev 12092)
@@ -1,94 +0,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
-}
Deleted: data/branches/Shader_HS18/programs/Example/GLSL150/OffsetMappingFp.glsl
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL150/OffsetMappingFp.glsl 2018-11-09 12:06:05 UTC (rev 12091)
+++ data/branches/Shader_HS18/programs/Example/GLSL150/OffsetMappingFp.glsl 2018-11-09 12:10:40 UTC (rev 12092)
@@ -1,43 +0,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);
-}
Deleted: data/branches/Shader_HS18/programs/Example/GLSL150/OffsetMappingShadowsFp.glsl
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL150/OffsetMappingShadowsFp.glsl 2018-11-09 12:06:05 UTC (rev 12091)
+++ data/branches/Shader_HS18/programs/Example/GLSL150/OffsetMappingShadowsFp.glsl 2018-11-09 12:10:40 UTC (rev 12092)
@@ -1,69 +0,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;
-}
Deleted: data/branches/Shader_HS18/programs/Example/GLSL150/OffsetMappingShadowsVp.glsl
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL150/OffsetMappingShadowsVp.glsl 2018-11-09 12:06:05 UTC (rev 12091)
+++ data/branches/Shader_HS18/programs/Example/GLSL150/OffsetMappingShadowsVp.glsl 2018-11-09 12:10:40 UTC (rev 12092)
@@ -1,58 +0,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);
-}
Deleted: data/branches/Shader_HS18/programs/Example/GLSL150/OffsetMappingVp.glsl
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL150/OffsetMappingVp.glsl 2018-11-09 12:06:05 UTC (rev 12091)
+++ data/branches/Shader_HS18/programs/Example/GLSL150/OffsetMappingVp.glsl 2018-11-09 12:10:40 UTC (rev 12092)
@@ -1,45 +0,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);
-}
-
Deleted: data/branches/Shader_HS18/programs/Example/GLSL150/OffsetMapping_specular.glsl
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL150/OffsetMapping_specular.glsl 2018-11-09 12:06:05 UTC (rev 12091)
+++ data/branches/Shader_HS18/programs/Example/GLSL150/OffsetMapping_specular.glsl 2018-11-09 12:10:40 UTC (rev 12092)
@@ -1,48 +0,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;
-}
Deleted: data/branches/Shader_HS18/programs/Example/GLSL150/ParticleGS_DisplayPS.glsl
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL150/ParticleGS_DisplayPS.glsl 2018-11-09 12:06:05 UTC (rev 12091)
+++ data/branches/Shader_HS18/programs/Example/GLSL150/ParticleGS_DisplayPS.glsl 2018-11-09 12:10:40 UTC (rev 12092)
@@ -1,17 +0,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;
-}
Deleted: data/branches/Shader_HS18/programs/Example/GLSL150/PassthroughFP.glsl
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL150/PassthroughFP.glsl 2018-11-09 12:06:05 UTC (rev 12091)
+++ data/branches/Shader_HS18/programs/Example/GLSL150/PassthroughFP.glsl 2018-11-09 12:10:40 UTC (rev 12092)
@@ -1,12 +0,0 @@
-#version 150
-
-in vec4 colour;
-out vec4 fragColour;
-
-/*
- Basic ambient lighting fragment program for GLSL ES
-*/
-void main()
-{
- fragColour = colour;
-}
Deleted: data/branches/Shader_HS18/programs/Example/GLSL150/PassthroughVP.glsl
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL150/PassthroughVP.glsl 2018-11-09 12:06:05 UTC (rev 12091)
+++ data/branches/Shader_HS18/programs/Example/GLSL150/PassthroughVP.glsl 2018-11-09 12:10:40 UTC (rev 12092)
@@ -1,7 +0,0 @@
-#version 150
-
-void main()
-{
- //Transform the vertex (ModelViewProj matrix)
- gl_Position = ftransform();
-}
Deleted: data/branches/Shader_HS18/programs/Example/GLSL150/SampleFieldVS.glsl
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL150/SampleFieldVS.glsl 2018-11-09 12:06:05 UTC (rev 12091)
+++ data/branches/Shader_HS18/programs/Example/GLSL150/SampleFieldVS.glsl 2018-11-09 12:10:40 UTC (rev 12092)
@@ -1,87 +0,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 at 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);
-}
Deleted: data/branches/Shader_HS18/programs/Example/GLSL150/ShaderInstancing.vert
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL150/ShaderInstancing.vert 2018-11-09 12:06:05 UTC (rev 12091)
+++ data/branches/Shader_HS18/programs/Example/GLSL150/ShaderInstancing.vert 2018-11-09 12:10:40 UTC (rev 12092)
@@ -1,117 +0,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
-}
Deleted: data/branches/Shader_HS18/programs/Example/GLSL150/ShowNormals.glsl
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL150/ShowNormals.glsl 2018-11-09 12:06:05 UTC (rev 12091)
+++ data/branches/Shader_HS18/programs/Example/GLSL150/ShowNormals.glsl 2018-11-09 12:10:40 UTC (rev 12092)
@@ -1,14 +0,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);
-}
Deleted: data/branches/Shader_HS18/programs/Example/GLSL150/ShowTangents.glsl
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL150/ShowTangents.glsl 2018-11-09 12:06:05 UTC (rev 12091)
+++ data/branches/Shader_HS18/programs/Example/GLSL150/ShowTangents.glsl 2018-11-09 12:10:40 UTC (rev 12092)
@@ -1,14 +0,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);
-}
Deleted: data/branches/Shader_HS18/programs/Example/GLSL150/ShowUV.glsl
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL150/ShowUV.glsl 2018-11-09 12:06:05 UTC (rev 12091)
+++ data/branches/Shader_HS18/programs/Example/GLSL150/ShowUV.glsl 2018-11-09 12:10:40 UTC (rev 12092)
@@ -1,13 +0,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);
-}
Deleted: data/branches/Shader_HS18/programs/Example/GLSL150/ShowUVdir3D.glsl
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL150/ShowUVdir3D.glsl 2018-11-09 12:06:05 UTC (rev 12091)
+++ data/branches/Shader_HS18/programs/Example/GLSL150/ShowUVdir3D.glsl 2018-11-09 12:10:40 UTC (rev 12092)
@@ -1,14 +0,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);
-}
-
-
Deleted: data/branches/Shader_HS18/programs/Example/GLSL150/StdQuad_Tex2_vp.glsl
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL150/StdQuad_Tex2_vp.glsl 2018-11-09 12:06:05 UTC (rev 12091)
+++ data/branches/Shader_HS18/programs/Example/GLSL150/StdQuad_Tex2_vp.glsl 2018-11-09 12:10:40 UTC (rev 12092)
@@ -1,17 +0,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;
-}
Deleted: data/branches/Shader_HS18/programs/Example/GLSL150/StdQuad_Tex2a_vp.glsl
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL150/StdQuad_Tex2a_vp.glsl 2018-11-09 12:06:05 UTC (rev 12091)
+++ data/branches/Shader_HS18/programs/Example/GLSL150/StdQuad_Tex2a_vp.glsl 2018-11-09 12:10:40 UTC (rev 12092)
@@ -1,18 +0,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;
-}
Deleted: data/branches/Shader_HS18/programs/Example/GLSL150/StdQuad_Tex3_vp.glsl
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL150/StdQuad_Tex3_vp.glsl 2018-11-09 12:06:05 UTC (rev 12091)
+++ data/branches/Shader_HS18/programs/Example/GLSL150/StdQuad_Tex3_vp.glsl 2018-11-09 12:10:40 UTC (rev 12092)
@@ -1,22 +0,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;
-}
Deleted: data/branches/Shader_HS18/programs/Example/GLSL150/StdQuad_Tex4_vp.glsl
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL150/StdQuad_Tex4_vp.glsl 2018-11-09 12:06:05 UTC (rev 12091)
+++ data/branches/Shader_HS18/programs/Example/GLSL150/StdQuad_Tex4_vp.glsl 2018-11-09 12:10:40 UTC (rev 12092)
@@ -1,22 +0,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;
-}
Deleted: data/branches/Shader_HS18/programs/Example/GLSL150/TessellateTetrahedraGS.glsl
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL150/TessellateTetrahedraGS.glsl 2018-11-09 12:06:05 UTC (rev 12091)
+++ data/branches/Shader_HS18/programs/Example/GLSL150/TessellateTetrahedraGS.glsl 2018-11-09 12:10:40 UTC (rev 12092)
@@ -1,83 +0,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 at 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();
- }
-}
Deleted: data/branches/Shader_HS18/programs/Example/GLSL150/VTFInstancing.vert
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL150/VTFInstancing.vert 2018-11-09 12:06:05 UTC (rev 12091)
+++ data/branches/Shader_HS18/programs/Example/GLSL150/VTFInstancing.vert 2018-11-09 12:10:40 UTC (rev 12092)
@@ -1,113 +0,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
-}
Deleted: data/branches/Shader_HS18/programs/Example/GLSL150/crowdVp.glsl
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL150/crowdVp.glsl 2018-11-09 12:06:05 UTC (rev 12091)
+++ data/branches/Shader_HS18/programs/Example/GLSL150/crowdVp.glsl 2018-11-09 12:10:40 UTC (rev 12092)
@@ -1,64 +0,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;
-}
Deleted: data/branches/Shader_HS18/programs/Example/GLSL150/hdr_tonemap_util.glsl
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL150/hdr_tonemap_util.glsl 2018-11-09 12:06:05 UTC (rev 12091)
+++ data/branches/Shader_HS18/programs/Example/GLSL150/hdr_tonemap_util.glsl 2018-11-09 12:10:40 UTC (rev 12092)
@@ -1,28 +0,0 @@
-#version 150
-
-const float MIDDLE_GREY = 0.72;
-const float FUDGE = 0.001;
-const float L_WHITE = 1.5;
-
-/** Tone mapping function
- at note Only affects rgb, not a
- at param inColour The HDR colour
- at param lum The scene lumninence
- at 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;
-}
Deleted: data/branches/Shader_HS18/programs/Example/GLSL150/oceanGLSL.frag
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL150/oceanGLSL.frag 2018-11-09 12:06:05 UTC (rev 12091)
+++ data/branches/Shader_HS18/programs/Example/GLSL150/oceanGLSL.frag 2018-11-09 12:10:40 UTC (rev 12092)
@@ -1,48 +0,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) );
-}
Deleted: data/branches/Shader_HS18/programs/Example/GLSL150/oceanGLSL.vert
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL150/oceanGLSL.vert 2018-11-09 12:06:05 UTC (rev 12091)
+++ data/branches/Shader_HS18/programs/Example/GLSL150/oceanGLSL.vert 2018-11-09 12:10:40 UTC (rev 12092)
@@ -1,37 +0,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;
-}
Deleted: data/branches/Shader_HS18/programs/Example/GLSL150/shadows.glsl
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL150/shadows.glsl 2018-11-09 12:06:05 UTC (rev 12091)
+++ data/branches/Shader_HS18/programs/Example/GLSL150/shadows.glsl 2018-11-09 12:10:40 UTC (rev 12092)
@@ -1,148 +0,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;
-}
Deleted: data/branches/Shader_HS18/programs/Example/GLSL150/skinningTwoWeightsShadowCasterVp.glsl
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL150/skinningTwoWeightsShadowCasterVp.glsl 2018-11-09 12:06:05 UTC (rev 12091)
+++ data/branches/Shader_HS18/programs/Example/GLSL150/skinningTwoWeightsShadowCasterVp.glsl 2018-11-09 12:10:40 UTC (rev 12092)
@@ -1,44 +0,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;
-}
Deleted: data/branches/Shader_HS18/programs/Example/GLSL150/skinningTwoWeightsVp.glsl
===================================================================
--- data/branches/Shader_HS18/programs/Example/GLSL150/skinningTwoWeightsVp.glsl 2018-11-09 12:06:05 UTC (rev 12091)
+++ data/branches/Shader_HS18/programs/Example/GLSL150/skinningTwoWeightsVp.glsl 2018-11-09 12:10:40 UTC (rev 12092)
@@ -1,65 +0,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;
-}
More information about the Orxonox-commit
mailing list