Index: data/data_extern/materials/BumpMapping/BasicPrograms.program
===================================================================
--- data/data_extern/materials/BumpMapping/BasicPrograms.program	(revision 12181)
+++ data/data_extern/materials/BumpMapping/BasicPrograms.program	(revision 12181)
@@ -0,0 +1,632 @@
+/---------------------------------------------------
+// This file includes a number of basic GPU programs
+// for use in many materials.
+//---------------------------------------------------
+
+
+// A really basic ambient pass program, support for one texture coordinate set
+vertex_program Ogre/BasicVertexPrograms/AmbientOneTextureCg cg
+{
+    source Example_Basic.cg
+    entry_point ambientOneTexture_vp
+    profiles vs_1_1 arbvp1
+
+    default_params
+    {
+        param_named_auto worldViewProj worldviewproj_matrix
+        param_named_auto ambient ambient_light_colour
+    }
+
+}
+
+vertex_program Ogre/BasicVertexPrograms/AmbientOneTextureCgSm4 cg
+{
+    source Example_Basic_sm4.cg
+    entry_point ambientOneTexture_vp
+    profiles vs_4_0 vs_4_0_level_9_1 vs_4_0_level_9_3
+
+    default_params
+    {
+        param_named_auto worldViewProj worldviewproj_matrix
+        param_named_auto ambient ambient_light_colour
+    }
+
+}
+
+// A really basic ambient pass program, support for one texture coordinate set
+vertex_program Ogre/BasicVertexPrograms/AmbientOneTextureHLSL hlsl
+{
+    source Example_Basic4.hlsl
+    entry_point ambientOneTexture_vp
+    target vs_4_0 vs_4_0_level_9_1 vs_4_0_level_9_3
+
+    default_params
+    {
+        param_named_auto worldViewProj worldviewproj_matrix
+        param_named_auto ambient ambient_light_colour
+    }
+}
+
+// A really basic ambient pass program, support for one texture coordinate set
+vertex_program Ogre/BasicVertexPrograms/AmbientOneTextureGLSL glsl
+{
+    source AmbientOneTexture.glsl
+
+    default_params
+    {
+        param_named_auto ambient ambient_light_colour
+        param_named_auto worldViewProj worldviewproj_matrix
+    }
+}
+
+// A really basic ambient pass program, support for one texture coordinate set
+vertex_program Ogre/BasicVertexPrograms/AmbientOneTextureGLSLES glsles
+{
+    source AmbientOneTexture.glsles
+
+    default_params
+    {
+        param_named_auto worldViewProj worldviewproj_matrix
+        param_named_auto ambient ambient_light_colour
+    }
+}
+
+vertex_program Ogre/BasicVertexPrograms/AmbientOneTextureWithUVGLSLES glsles
+{
+    source AmbientOneTextureWithUV.glsles
+
+    default_params
+    {
+        param_named_auto worldViewProj worldviewproj_matrix
+        param_named_auto ambient ambient_light_colour
+    }
+}
+
+vertex_program Ogre/BasicVertexPrograms/AmbientOneTextureWithUVGLSL glsl
+{
+    source AmbientOneTextureWithUV.glsl
+
+    default_params
+    {
+        param_named_auto worldViewProj worldviewproj_matrix
+        param_named_auto ambient ambient_light_colour
+    }
+}
+
+vertex_program Ogre/BasicVertexPrograms/AmbientOneTextureWithUV unified
+{
+    delegate Ogre/BasicVertexPrograms/AmbientOneTextureWithUVGLSL
+    delegate Ogre/BasicVertexPrograms/AmbientOneTextureWithUVGLSLES
+    delegate Ogre/BasicVertexPrograms/AmbientOneTextureHLSL
+    delegate Ogre/BasicVertexPrograms/AmbientOneTextureCg
+    delegate Ogre/BasicVertexPrograms/AmbientOneTextureCgSm4
+}
+
+vertex_program Ogre/BasicVertexPrograms/AmbientOneTextureUnified unified
+{
+    delegate Ogre/BasicVertexPrograms/AmbientOneTextureGLSL
+    delegate Ogre/BasicVertexPrograms/AmbientOneTextureGLSLES
+    delegate Ogre/BasicVertexPrograms/AmbientOneTextureHLSL
+    delegate Ogre/BasicVertexPrograms/AmbientOneTextureCg
+    delegate Ogre/BasicVertexPrograms/AmbientOneTextureCgSm4
+}
+
+fragment_program Ogre/BasicFragmentPrograms/DiffuseOneTextureCg cg
+{
+    source Example_Basic.cg
+    entry_point diffuseOneTexture_fp
+    profiles ps_2_0 arbfp1
+}
+
+fragment_program Ogre/BasicFragmentPrograms/DiffuseOneTextureHLSL hlsl
+{
+    source Example_Basic4.hlsl
+    entry_point diffuseOneTexture_fp
+    target ps_4_0 ps_4_0_level_9_1 ps_4_0_level_9_3
+}
+
+fragment_program Ogre/BasicFragmentPrograms/DiffuseOneTextureGLSLES glsles
+{
+    source DiffuseOneTexture.glsles
+    default_params
+    {
+        param_named texMap int 0
+    }
+}
+
+fragment_program Ogre/BasicFragmentPrograms/DiffuseOneTextureGLSL glsl
+{
+    source DiffuseOneTexture.glsl
+    default_params
+    {
+        param_named texMap int 0
+    }
+}
+
+fragment_program Ogre/BasicFragmentPrograms/DiffuseOneTexture unified
+{
+    delegate Ogre/BasicFragmentPrograms/DiffuseOneTextureGLSL
+    delegate Ogre/BasicFragmentPrograms/DiffuseOneTextureGLSLES
+	delegate Ogre/BasicFragmentPrograms/DiffuseOneTextureHLSL
+    delegate Ogre/BasicFragmentPrograms/DiffuseOneTextureCg
+}
+
+// A really basic ambient pass program, support for one texture coordinate set
+fragment_program Ogre/BasicFragmentPrograms/PassthroughFP unified
+{
+    delegate Ogre/BasicFragmentPrograms/PassthroughFpGLSL
+    delegate Ogre/BasicFragmentPrograms/PassthroughFpGLSLES
+	delegate Ogre/BasicFragmentPrograms/PassthroughFpHLSL
+    delegate Ogre/BasicFragmentPrograms/PassthroughFpCgSm4
+    delegate Ogre/BasicFragmentPrograms/PassthroughFpCg
+}
+
+// A really basic ambient pass program, support for one texture coordinate set
+fragment_program Ogre/BasicFragmentPrograms/PassthroughFpCgSm4 cg
+{
+    entry_point main
+    source PassthroughFP_sm4.cg
+    profiles ps_4_0 ps_4_0_level_9_1 ps_4_0_level_9_3
+}
+
+// A really basic ambient pass program, support for one texture coordinate set
+fragment_program Ogre/BasicFragmentPrograms/PassthroughFpHLSL hlsl
+{
+    entry_point main
+    source PassthroughFP_sm4.hlsl
+    target ps_4_0 ps_4_0_level_9_1 ps_4_0_level_9_3
+}
+
+
+fragment_program Ogre/BasicFragmentPrograms/PassthroughFpCg cg
+{
+    entry_point mainCg
+    source PassthroughFP.cg
+    profiles ps_2_0 arbfp1
+}
+
+// A really basic ambient pass program, support for one texture coordinate set
+fragment_program Ogre/BasicFragmentPrograms/PassthroughFpCgSm4ForAmbientOneTexture cg
+{
+    entry_point mainForAmbientOneTexture
+    source PassthroughFP_sm4.cg
+    profiles ps_4_0 ps_4_0_level_9_1 ps_4_0_level_9_3
+}
+
+
+// A really basic ambient pass program, support for one texture coordinate set
+fragment_program Ogre/BasicFragmentPrograms/PassthroughFpGLSLES glsles
+{
+    source PassthroughFP.glsles
+}
+
+fragment_program Ogre/BasicFragmentPrograms/PassthroughFpGLSL glsl
+{
+    source PassthroughFP.glsl
+}
+
+// Same as below, but for use when rendering texture shadows
+vertex_program Ogre/HardwareSkinningOneWeightShadowCaster cg
+{
+    source Example_Basic.cg
+    entry_point hardwareSkinningOneWeightCaster_vp
+    profiles vs_4_0 vs_4_0_level_9_1 vs_4_0_level_9_3 vs_1_1 arbvp1
+    includes_skeletal_animation true
+}
+// Basic hardware skinning using one indexed weight per vertex
+vertex_program Ogre/HardwareSkinningOneWeight cg
+{
+   source Example_Basic.cg
+   entry_point hardwareSkinningOneWeight_vp
+   profiles vs_4_0 vs_4_0_level_9_1 vs_4_0_level_9_3 vs_1_1 arbvp1
+   includes_skeletal_animation true
+}
+// Same as below, but for use when rendering texture shadows
+vertex_program Ogre/HardwareSkinningTwoWeightsShadowCasterCg cg
+{
+    source Example_Basic.cg
+    entry_point hardwareSkinningTwoWeightsCaster_vp
+    profiles vs_4_0 vs_4_0_level_9_1 vs_4_0_level_9_3 vs_1_1 arbvp1
+    includes_skeletal_animation true
+}
+
+// Same as below, but for use when rendering texture shadows
+vertex_program Ogre/HardwareSkinningTwoWeightsShadowCasterHLSL hlsl
+{
+    source Example_Basic4.hlsl
+    entry_point hardwareSkinningTwoWeightsCaster_vp
+    target vs_4_0 vs_4_0_level_9_1 vs_4_0_level_9_3
+    includes_skeletal_animation true
+    column_major_matrices false
+}
+
+vertex_program Ogre/HardwareSkinningTwoWeightsShadowCasterGLSL glsl
+{
+    source skinningTwoWeightsShadowCasterVp.glsl
+    includes_skeletal_animation true
+}
+
+vertex_program Ogre/HardwareSkinningTwoWeightsShadowCasterGLSLES glsles
+{
+    source skinningTwoWeightsShadowCasterVp.glsles
+    includes_skeletal_animation true
+    use_optimiser false
+}
+
+vertex_program Ogre/HardwareSkinningTwoWeightsShadowCaster unified
+{
+    delegate Ogre/HardwareSkinningTwoWeightsShadowCasterGLSLES
+    delegate Ogre/HardwareSkinningTwoWeightsShadowCasterHLSL
+    delegate Ogre/HardwareSkinningTwoWeightsShadowCasterGLSL
+    delegate Ogre/HardwareSkinningTwoWeightsShadowCasterCg
+}
+
+// Basic hardware skinning using two indexed weights per vertex
+vertex_program Ogre/HardwareSkinningTwoWeightsHLSL hlsl
+{
+    source Example_Basic4.hlsl
+    entry_point hardwareSkinningTwoWeights_vp
+    target vs_4_0 vs_4_0_level_9_1 vs_4_0_level_9_3
+    includes_skeletal_animation true
+    column_major_matrices false
+}
+
+vertex_program Ogre/HardwareSkinningTwoWeightsGLSL glsl
+{
+    source skinningTwoWeightsVp.glsl
+    includes_skeletal_animation true
+}
+
+vertex_program Ogre/HardwareSkinningTwoWeightsGLSLES glsles
+{
+    source skinningTwoWeightsVp.glsles
+    includes_skeletal_animation true
+    use_optimiser false
+}
+
+vertex_program Ogre/HardwareSkinningTwoWeightsCg cg
+{
+   source Example_Basic.cg
+   entry_point hardwareSkinningTwoWeights_vp
+   profiles vs_4_0 vs_4_0_level_9_1 vs_4_0_level_9_3 vs_1_1 arbvp1
+   includes_skeletal_animation true
+}
+
+vertex_program Ogre/HardwareSkinningTwoWeights unified
+{
+    delegate Ogre/HardwareSkinningTwoWeightsGLSL
+    delegate Ogre/HardwareSkinningTwoWeightsGLSLES
+    delegate Ogre/HardwareSkinningTwoWeightsHLSL
+    delegate Ogre/HardwareSkinningTwoWeightsCg
+
+    default_params
+    {
+        param_named_auto worldMatrix3x4Array world_matrix_array_3x4
+        param_named_auto viewProjectionMatrix viewproj_matrix
+        param_named_auto lightPos[0] light_position 0
+        param_named_auto lightPos[1] light_position 1
+        param_named_auto lightDiffuseColour[0] light_diffuse_colour 0
+        param_named_auto lightDiffuseColour[1] light_diffuse_colour 1
+        param_named_auto ambient ambient_light_colour
+        param_named_auto diffuse surface_diffuse_colour
+    }
+}
+
+// Basic hardware skinning using four indexed weights per vertex
+vertex_program Ogre/HardwareSkinningFourWeightsCg cg
+{
+   source Example_Basic.cg
+   entry_point hardwareSkinningFourWeights_vp
+   profiles vs_4_0 vs_4_0_level_9_1 vs_4_0_level_9_3 vs_1_1 arbvp1
+   includes_skeletal_animation true
+
+   default_params
+   {
+        param_named_auto worldMatrix3x4Array world_matrix_array_3x4
+        param_named_auto viewProjectionMatrix viewproj_matrix
+        param_named_auto lightPos[0] light_position 0
+        param_named_auto lightPos[1] light_position 1
+        param_named_auto lightDiffuseColour[0] light_diffuse_colour 0
+        param_named_auto lightDiffuseColour[1] light_diffuse_colour 1
+        param_named_auto ambient ambient_light_colour
+   }
+}
+
+// Basic hardware morph animation (no normals)
+vertex_program Ogre/HardwareMorphAnimationCg cg
+{
+    source Example_Basic.cg
+    entry_point hardwareMorphAnimation
+    profiles vs_4_0 vs_4_0_level_9_1 vs_4_0_level_9_3 vs_1_1 arbvp1
+
+    includes_morph_animation true
+    default_params
+    {
+        param_named_auto worldViewProj worldviewproj_matrix
+        param_named_auto anim_t animation_parametric
+    }
+}
+
+vertex_program Ogre/HardwareSkinningFourWeightsHLSL hlsl
+{
+   source Example_Basic4.hlsl
+   entry_point hardwareSkinningFourWeights_vp
+   target vs_4_0 vs_4_0_level_9_1 vs_4_0_level_9_3
+   includes_skeletal_animation true
+
+   default_params
+   {
+        param_named_auto worldMatrix3x4Array world_matrix_array_3x4
+        param_named_auto viewProjectionMatrix viewproj_matrix
+        param_named_auto lightPos[0] light_position 0
+        param_named_auto lightPos[1] light_position 1
+        param_named_auto lightDiffuseColour[0] light_diffuse_colour 0
+        param_named_auto lightDiffuseColour[1] light_diffuse_colour 1
+        param_named_auto ambient ambient_light_colour
+   }
+}
+
+// Basic hardware morph animation (no normals)
+vertex_program Ogre/HardwareMorphAnimationHLSL hlsl
+{
+    source Example_Basic4.hlsl
+    entry_point hardwareMorphAnimation
+    target vs_4_0 vs_4_0_level_9_1 vs_4_0_level_9_3
+
+    includes_morph_animation true
+    default_params
+    {
+        param_named_auto worldViewProj worldviewproj_matrix
+        param_named_auto anim_t animation_parametric
+    }
+}
+
+// Basic hardware morph animation (no normals)
+vertex_program Ogre/HardwareMorphAnimationGLSLES glsles
+{
+    source HardwareMorphAnimationVp.glsles
+
+    includes_morph_animation true
+    default_params
+    {
+        param_named_auto worldViewProj worldviewproj_matrix
+        param_named_auto anim_t animation_parametric
+    }
+}
+
+// Basic hardware morph animation (no normals)
+vertex_program Ogre/HardwareMorphAnimationGLSL glsl
+{
+    source HardwareMorphAnimationVp.glsl
+    syntax glsl150
+
+    includes_morph_animation true
+    default_params
+    {
+        param_named_auto worldViewProj worldviewproj_matrix
+        param_named_auto anim_t animation_parametric
+    }
+}
+
+vertex_program Ogre/HardwareSkinningFourWeights unified
+{
+	delegate Ogre/HardwareSkinningFourWeightsHLSL
+	delegate Ogre/HardwareSkinningFourWeightsCg
+}
+
+vertex_program Ogre/HardwareMorphAnimation unified
+{
+	 delegate Ogre/HardwareMorphAnimationHLSL
+    delegate Ogre/HardwareMorphAnimationCg
+    delegate Ogre/HardwareMorphAnimationGLSL
+    delegate Ogre/HardwareMorphAnimationGLSLES
+}
+
+// Basic hardware pose animation supporting 2 active poses (no normals)
+vertex_program Ogre/HardwarePoseAnimationCg cg
+{
+    source Example_Basic.cg
+    entry_point hardwarePoseAnimation
+    profiles vs_4_0 vs_4_0_level_9_1 vs_4_0_level_9_3 vs_1_1 arbvp1
+
+    includes_pose_animation 2
+    default_params
+    {
+        param_named_auto worldViewProj worldviewproj_matrix
+        param_named_auto anim_t animation_parametric
+    }
+}
+
+// Basic hardware pose animation supporting 2 active poses (no normals)
+vertex_program Ogre/HardwarePoseAnimationHLSL hlsl
+{
+    source Example_Basic4.hlsl
+    entry_point hardwarePoseAnimation
+    target vs_4_0 vs_4_0_level_9_1 vs_4_0_level_9_3
+
+    includes_pose_animation 2
+    default_params
+    {
+        param_named_auto worldViewProj worldviewproj_matrix
+        param_named_auto anim_t animation_parametric
+    }
+}
+
+// Basic hardware pose animation supporting 2 active poses (no normals)
+vertex_program Ogre/HardwarePoseAnimationGLSLES glsles
+{
+    source HardwarePoseAnimationVp.glsles
+
+    includes_pose_animation 2
+    default_params
+    {
+        param_named_auto worldViewProj worldviewproj_matrix
+        param_named_auto anim_t animation_parametric
+    }
+}
+
+// Basic hardware pose animation supporting 2 active poses (no normals)
+vertex_program Ogre/HardwarePoseAnimationGLSL glsl
+{
+    source HardwarePoseAnimationVp.glsl
+    syntax glsl150
+
+    includes_pose_animation 2
+    default_params
+    {
+        param_named_auto worldViewProj worldviewproj_matrix
+        param_named_auto anim_t animation_parametric
+    }
+}
+vertex_program Ogre/HardwarePoseAnimation unified
+{
+	delegate Ogre/HardwarePoseAnimationHLSL
+    delegate Ogre/HardwarePoseAnimationCg
+    delegate Ogre/HardwarePoseAnimationGLSL
+    delegate Ogre/HardwarePoseAnimationGLSLES
+}
+
+// Basic hardware morph animation (with normals)
+vertex_program Ogre/HardwareMorphAnimationWithNormalsCg cg
+{
+    source Example_Basic.cg
+    entry_point hardwareMorphAnimationWithNormals
+    profiles vs_4_0 vs_4_0_level_9_1 vs_4_0_level_9_3 vs_1_1 arbvp1
+
+    includes_morph_animation true
+    default_params
+    {
+        param_named_auto worldViewProj worldviewproj_matrix
+        param_named_auto anim_t animation_parametric
+        param_named_auto objSpaceLightPos light_position_object_space 0
+        param_named_auto ambient ambient_light_colour
+    }
+}
+
+// Basic hardware morph animation (with normals)
+vertex_program Ogre/HardwareMorphAnimationWithNormalsHLSL hlsl
+{
+    source Example_Basic4.hlsl
+    entry_point hardwareMorphAnimationWithNormals
+    target vs_4_0 vs_4_0_level_9_1 vs_4_0_level_9_3
+
+    includes_morph_animation true
+    default_params
+    {
+        param_named_auto worldViewProj worldviewproj_matrix
+        param_named_auto anim_t animation_parametric
+        param_named_auto objSpaceLightPos light_position_object_space 0
+        param_named_auto ambient ambient_light_colour
+    }
+}
+
+// Basic hardware morph animation (with normals)
+vertex_program Ogre/HardwareMorphAnimationWithNormalsGLSLES glsles
+{
+    source HardwareMorphAnimationWithNormalsVp.glsles
+
+    includes_morph_animation true
+    default_params
+    {
+        param_named_auto worldViewProj worldviewproj_matrix
+        param_named_auto anim_t animation_parametric
+        param_named_auto objSpaceLightPos light_position_object_space 0
+        param_named_auto ambient ambient_light_colour
+    }
+}
+// Basic hardware morph animation (with normals)
+vertex_program Ogre/HardwareMorphAnimationWithNormalsGLSL glsl
+{
+    source HardwareMorphAnimationWithNormalsVp.glsl
+    syntax glsl150
+
+    includes_morph_animation true
+    default_params
+    {
+        param_named_auto worldViewProj worldviewproj_matrix
+        param_named_auto anim_t animation_parametric
+        param_named_auto objSpaceLightPos light_position_object_space 0
+        param_named_auto ambient ambient_light_colour
+    }
+}
+
+vertex_program Ogre/HardwareMorphAnimationWithNormals unified
+{
+	delegate Ogre/HardwareMorphAnimationWithNormalsHLSL
+    delegate Ogre/HardwareMorphAnimationWithNormalsCg
+    delegate Ogre/HardwareMorphAnimationWithNormalsGLSL
+    delegate Ogre/HardwareMorphAnimationWithNormalsGLSLES
+}
+
+// Basic hardware pose animation supporting 2 active poses (with normals)
+vertex_program Ogre/HardwarePoseAnimationWithNormalsHLSL hlsl
+{
+    source Example_Basic4.hlsl
+    entry_point hardwarePoseAnimationWithNormals
+    target vs_4_0 vs_4_0_level_9_1 vs_4_0_level_9_3
+
+    includes_pose_animation 2
+    default_params
+    {
+        param_named_auto worldViewProj worldviewproj_matrix
+        param_named_auto anim_t animation_parametric
+        param_named_auto objSpaceLightPos light_position_object_space 0
+        param_named_auto ambient ambient_light_colour
+    }
+}
+
+// Basic hardware pose animation supporting 2 active poses (with normals)
+vertex_program Ogre/HardwarePoseAnimationWithNormalsCg cg
+{
+    source Example_Basic.cg
+    entry_point hardwarePoseAnimationWithNormals
+    profiles vs_4_0 vs_4_0_level_9_1 vs_4_0_level_9_3 vs_1_1 arbvp1
+
+    includes_pose_animation 2
+    default_params
+    {
+        param_named_auto worldViewProj worldviewproj_matrix
+        param_named_auto anim_t animation_parametric
+        param_named_auto objSpaceLightPos light_position_object_space 0
+        param_named_auto ambient ambient_light_colour
+    }
+}
+
+// Basic hardware pose animation supporting 2 active poses (with normals)
+vertex_program Ogre/HardwarePoseAnimationWithNormalsGLSLES glsles
+{
+    source HardwarePoseAnimationWithNormalsVp.glsles
+
+    includes_pose_animation 2
+    default_params
+    {
+        param_named_auto worldViewProj worldviewproj_matrix
+        param_named_auto anim_t animation_parametric
+        param_named_auto objSpaceLightPos light_position_object_space 0
+        param_named_auto ambient ambient_light_colour
+    }
+}
+
+// Basic hardware pose animation supporting 2 active poses (with normals)
+vertex_program Ogre/HardwarePoseAnimationWithNormalsGLSL glsl
+{
+    source HardwarePoseAnimationWithNormalsVp.glsl
+    syntax glsl150
+
+    includes_pose_animation 2
+    default_params
+    {
+        param_named_auto worldViewProj worldviewproj_matrix
+        param_named_auto anim_t animation_parametric
+        param_named_auto objSpaceLightPos light_position_object_space 0
+        param_named_auto ambient ambient_light_colour
+    }
+}
+
+vertex_program Ogre/HardwarePoseAnimationWithNormals unified
+{
+	delegate Ogre/HardwarePoseAnimationWithNormalsHLSL
+    delegate Ogre/HardwarePoseAnimationWithNormalsCg
+    delegate Ogre/HardwarePoseAnimationWithNormalsGLSL
+    delegate Ogre/HardwarePoseAnimationWithNormalsGLSLES
+}
Index: data/data_extern/materials/BumpMapping/BumpMap.material
===================================================================
--- data/data_extern/materials/BumpMapping/BumpMap.material	(revision 12181)
+++ data/data_extern/materials/BumpMapping/BumpMap.material	(revision 12181)
@@ -0,0 +1,135 @@
+// Any number of lights, diffuse
+material BumpMap_Base
+{
+    technique
+    {
+        // Base ambient pass
+        pass ambient
+        {
+          // base colours, not needed for rendering, but as information
+          // to lighting pass categorisation routine
+          diffuse 0 0 0
+          // need to prevent flickering
+          depth_write on
+          depth_bias 0
+
+        }
+        // Now do the lighting pass
+        // NB we don't do decal texture here because this is repeated per light
+        pass perlight
+        {
+
+            // do this for each light
+            iteration once_per_light
+            scene_blend add
+
+            // need to prevent flickering
+            depth_write on
+            depth_bias 1
+
+            // base colours, not needed for rendering, but as information
+            // to lighting pass categorisation routine
+            ambient 0 0 0
+
+            // Vertex program reference
+            vertex_program_ref BumpMapping/BumpMapVP
+            {
+                param_named_auto lightPosition light_position_object_space 0
+                param_named_auto worldViewProj worldviewproj_matrix
+            }
+
+            // Fragment program
+            fragment_program_ref BumpMapping/BumpMapFP
+            {
+                param_named_auto lightDiffuse light_diffuse_colour 0
+            }
+
+            // texture shadow receiver program
+            shadow_receiver_vertex_program_ref BumpMapping/BumpMapVPShadowRcv
+            {
+                param_named_auto lightPosition light_position_object_space 0
+                param_named_auto worldViewProj worldviewproj_matrix
+                param_named_auto worldMatrix world_matrix
+                param_named_auto texViewProj texture_viewproj_matrix
+            }
+            // Additive texture shadow receiver program
+            shadow_receiver_fragment_program_ref BumpMapping/BumpMapFPShadowRcv
+            {
+                param_named_auto lightDiffuse light_diffuse_colour 0
+            }
+
+            // Vertex program reference
+            vertex_program_ref BumpMapping/BumpMapVPSpecular
+            {
+                param_named_auto lightPosition light_position_object_space 0
+                param_named_auto eyePosition camera_position_object_space
+                param_named_auto worldViewProj worldviewproj_matrix
+            }
+
+            // Fragment program
+            fragment_program_ref BumpMapping/BumpMapFPSpecular
+            {
+                param_named_auto lightDiffuse light_diffuse_colour 0
+                param_named_auto lightSpecular light_specular_colour 0
+            }
+
+
+            // Base bump map
+            texture_unit normalmap
+            {
+                texture Cube_Lava_NORM.jpg
+                colour_op replace
+            }
+        }
+
+        // Decal pass
+        pass decal
+        {
+            // base colours, not needed for rendering, but as information
+            // to lighting pass categorisation routine
+            lighting off
+            // need to prevent flickering
+            depth_write on
+            depth_bias 2
+
+            scene_blend dest_colour zero
+            texture_unit decalmap
+            {
+                texture Cube_Lava_COLOR.jpg
+            }
+        }
+    }
+}
+
+// Example for Material using this template //
+// import * from "BumpMap.material"
+// // Any number of lights, diffuse
+// material Cube_Lava_Normal : BumpMap_Base
+// {
+//     technique
+//     {
+//         pass ambient
+//         {
+//         }
+//         // Now do the lighting pass
+//         // NB we don't do decal texture here because this is repeated per light
+//         pass perlight
+//         {
+//             // Base bump map
+//             texture_unit normalmap
+//             {
+//                 texture Cube_Lava_NORM.jpg
+//                 colour_op replace
+//             }
+//         }
+
+//         // Decal pass
+//         pass decal
+//         {
+//             texture_unit decalmap
+//             {
+//                 texture Cube_Lava_COLOR.jpg
+//             }
+//         }
+//     }
+// }
Index: data/data_extern/materials/BumpMapping/BumpMapping.program
===================================================================
--- data/data_extern/materials/BumpMapping/BumpMapping.program	(revision 12181)
+++ data/data_extern/materials/BumpMapping/BumpMapping.program	(revision 12181)
@@ -0,0 +1,229 @@
+//------------------------
+// Bump mapping section
+//------------------------
+
+// Bump map vertex program, support for this is required
+vertex_program BumpMapping/BumpMapVPCg cg
+{
+	source Example_BumpMapping.cg
+	entry_point main_vp
+	profiles vs_4_0 vs_4_0_level_9_1 vs_4_0_level_9_3 vs_1_1 arbvp1
+}
+
+vertex_program BumpMapping/BumpMapVPGLSLES glsles
+{
+	source Example_BumpMappingVp.glsles
+	profiles glsles
+}
+
+vertex_program BumpMapping/BumpMapVPGLSL glsl
+{
+	source Example_BumpMappingVp.glsl
+	syntax glsl
+}
+
+vertex_program BumpMapping/BumpMapVP unified
+{
+	delegate BumpMapping/BumpMapVPGLSL
+	delegate BumpMapping/BumpMapVPGLSLES
+	delegate BumpMapping/BumpMapVPCg
+}
+
+// Bump map vertex program, with tangent parity support for this is required
+vertex_program BumpMapping/BumpMapVPTangentParityCg cg
+{
+	source Example_BumpMapping.cg
+	entry_point main_vp
+	profiles vs_1_1 arbvp1
+	compile_arguments -DTANGENTS_HAVE_PARITY=1
+}
+
+// Bump map vertex program, with tangent parity support for this is required
+vertex_program BumpMapping/BumpMapVPTangentParityGLSLES glsles
+{
+	source BumpMapVPTangentParity.glsles
+}
+
+vertex_program BumpMapping/BumpMapVPTangentParityGLSL glsl
+{
+	source BumpMapVPTangentParity.glsl
+	syntax glsl
+}
+
+vertex_program BumpMapping/BumpMapVPTangentParity unified
+{
+	delegate BumpMapping/BumpMapVPTangentParityGLSL
+	delegate BumpMapping/BumpMapVPTangentParityGLSLES
+	delegate BumpMapping/BumpMapVPTangentParityCg
+}
+
+// Bump map fragment program, support for this is optional
+fragment_program BumpMapping/BumpMapFPCg cg
+{
+	source Example_BumpMapping.cg
+	entry_point main_fp
+	profiles ps_4_0 ps_4_0_level_9_1 ps_4_0_level_9_3 ps_2_0 arbfp1 fp20
+}
+
+fragment_program BumpMapping/BumpMapFPGLSLES glsles
+{
+	source Example_BumpMappingFp.glsles
+	profiles glsles
+	default_params
+	{
+		// assign samplers as required by GLSL
+		param_named normalMap int 0
+	}
+}
+
+fragment_program BumpMapping/BumpMapFPGLSL glsl
+{
+	source Example_BumpMappingFp.glsl
+	syntax glsl
+	default_params
+	{
+		// assign samplers as required by GLSL
+		param_named normalMap int 0
+	}
+}
+
+fragment_program BumpMapping/BumpMapFP unified
+{
+	delegate BumpMapping/BumpMapFPGLSL
+	delegate BumpMapping/BumpMapFPGLSLES
+	delegate BumpMapping/BumpMapFPCg
+}
+
+// Bump map vertex program shadow receiver
+vertex_program BumpMapping/BumpMapVPShadowRcvCg cg
+{
+	source Example_BumpMapping.cg
+	entry_point main_shadowreceiver_vp
+	profiles vs_1_1 arbvp1
+}
+
+// Bump map vertex program shadow receiver
+vertex_program BumpMapping/BumpMapVPShadowRcvGLSLES glsles
+{
+	source Example_BumpMappingShadowRcvVp.glsles
+	profiles glsles
+}
+
+vertex_program BumpMapping/BumpMapVPShadowRcvGLSL glsl
+{
+	source Example_BumpMappingShadowRcvVp.glsl
+	syntax glsl
+}
+
+vertex_program BumpMapping/BumpMapVPShadowRcv unified
+{
+	delegate BumpMapping/BumpMapVPShadowRcvGLSL
+	delegate BumpMapping/BumpMapVPShadowRcvGLSLES
+	delegate BumpMapping/BumpMapVPShadowRcvCg
+}
+
+// Bump map fragment program shadow receiver, support for this is optional
+fragment_program BumpMapping/BumpMapFPShadowRcvCg cg
+{
+	source Example_BumpMapping.cg
+	entry_point main_shadowreceiver_fp
+	profiles ps_2_0 arbfp1 fp20
+}
+
+// Bump map fragment program shadow receiver, support for this is optional
+fragment_program BumpMapping/BumpMapFPShadowRcvGLSLES glsles
+{
+	source Example_BumpMappingShadowRcvFp.glsles
+	profiles glsles
+	default_params
+	{
+		// assign samplers as required by GLSL
+		param_named shadowMap int 0
+		param_named normalMap int 1
+	}
+}
+
+fragment_program BumpMapping/BumpMapFPShadowRcvGLSL glsl
+{
+	source Example_BumpMappingShadowRcvFp.glsl
+	syntax glsl
+	default_params
+	{
+		// assign samplers as required by GLSL
+		param_named shadowMap int 0
+		param_named normalMap int 1
+	}
+}
+
+fragment_program BumpMapping/BumpMapFPShadowRcv unified
+{
+	delegate BumpMapping/BumpMapFPShadowRcvGLSL
+	delegate BumpMapping/BumpMapFPShadowRcvGLSLES
+	delegate BumpMapping/BumpMapFPShadowRcvCg
+}
+
+// Bump map with specular vertex program, support for this is required
+vertex_program BumpMapping/BumpMapVPSpecularCg cg
+{
+	source Example_BumpMapping.cg
+	entry_point specular_vp
+	profiles vs_4_0 vs_4_0_level_9_1 vs_4_0_level_9_3 vs_1_1 arbvp1
+}
+
+// Bump map with specular vertex program, support for this is required
+vertex_program BumpMapping/BumpMapVPSpecularGLSLES glsles
+{
+	source Example_BumpMappingSpecularVp.glsles
+	profiles glsles
+}
+
+vertex_program BumpMapping/BumpMapVPSpecularGLSL glsl
+{
+	source Example_BumpMappingSpecularVp.glsl
+	syntax glsl
+}
+
+vertex_program BumpMapping/BumpMapVPSpecular unified
+{
+	delegate BumpMapping/BumpMapVPSpecularGLSL
+	delegate BumpMapping/BumpMapVPSpecularGLSLES
+	delegate BumpMapping/BumpMapVPSpecularCg
+}
+
+// Bump map fragment program, support for this is optional
+fragment_program BumpMapping/BumpMapFPSpecularCg cg
+{
+	source Example_BumpMapping.cg
+	entry_point specular_fp
+	profiles ps_4_0 ps_4_0_level_9_1 ps_4_0_level_9_3 ps_2_0 arbfp1 fp20
+}
+
+// Bump map fragment program, support for this is optional
+fragment_program BumpMapping/BumpMapFPSpecularGLSLES glsles
+{
+	source Example_BumpMappingSpecularFp.glsles
+	profiles glsles
+	default_params
+	{
+		// assign samplers as required by GLSL
+		param_named normalMap int 0
+	}
+}
+
+fragment_program BumpMapping/BumpMapFPSpecularGLSL glsl
+{
+	source Example_BumpMappingSpecularFp.glsl
+	syntax glsl
+	default_params
+	{
+		// assign samplers as required by GLSL
+		param_named normalMap int 0
+	}
+}
+
+fragment_program BumpMapping/BumpMapFPSpecular unified
+{
+	delegate BumpMapping/BumpMapFPSpecularGLSL
+	delegate BumpMapping/BumpMapFPSpecularGLSLES
+	delegate BumpMapping/BumpMapFPSpecularCg
+}
Index: data/data_extern/materials/Cube_Lava.material
===================================================================
--- data/data_extern/materials/Cube_Lava.material	(revision 12181)
+++ data/data_extern/materials/Cube_Lava.material	(revision 12181)
@@ -0,0 +1,42 @@
+// Cube_Lava genrated by blender2ogre 0.6.0
+
+material Cube_Lava 
+{
+    receive_shadows on 
+
+    technique
+    {
+        pass Cube_Lava
+        {
+            ambient 0.800000011920929 0.800000011920929 0.800000011920929 1.0
+            diffuse 0.6400000190734865 0.6400000190734865 0.6400000190734865 1.0
+            specular 0.5 0.5 0.5 1.0 12.5
+            emissive 0.0 0.0 0.0 1.0
+
+            alpha_to_coverage off
+            colour_write on
+            cull_hardware clockwise
+            depth_check on
+            depth_func less_equal
+            depth_write on
+            illumination_stage 
+            light_clip_planes off
+            light_scissor off
+            lighting on
+            normalise_normals off
+            polygon_mode solid
+            scene_blend one zero
+            scene_blend_op add
+            shading gouraud
+            transparent_sorting on
+
+            texture_unit 
+            {
+                texture Cube_Lava_COLOR.jpg
+                tex_address_mode wrap
+                scale 1.0 1.0
+                colour_op modulate
+            }
+        }
+    }
+}
Index: data/data_extern/materials/Cube_Lava_Normal.material
===================================================================
--- data/data_extern/materials/Cube_Lava_Normal.material	(revision 12181)
+++ data/data_extern/materials/Cube_Lava_Normal.material	(revision 12181)
@@ -0,0 +1,31 @@
+import * from "BumpMap.material"
+// Any number of lights, diffuse
+material Cube_Lava_Normal : BumpMap_Base
+{
+    technique
+    {
+        pass ambient
+        {
+        }
+        // Now do the lighting pass
+        // NB we don't do decal texture here because this is repeated per light
+        pass perlight
+        {
+            // Base bump map
+            texture_unit normalmap
+            {
+                texture Cube_Lava_NORM.jpg
+                colour_op replace
+            }
+        }
+
+        // Decal pass
+        pass decal
+        {
+            texture_unit decalmap
+            {
+                texture Cube_Lava_COLOR.jpg
+            }
+        }
+    }
+}
Index: data/data_extern/materials/Cube_Lava_Normal_Blank.material
===================================================================
--- data/data_extern/materials/Cube_Lava_Normal_Blank.material	(revision 12181)
+++ data/data_extern/materials/Cube_Lava_Normal_Blank.material	(revision 12181)
@@ -0,0 +1,31 @@
+import * from "BumpMap.material"
+// Any number of lights, diffuse
+material Cube_Lava_Normal_Blank : BumpMap_Base
+{
+    technique
+    {
+        pass ambient
+        {
+        }
+        // Now do the lighting pass
+        // NB we don't do decal texture here because this is repeated per light
+        pass perlight
+        {
+            // Base bump map
+            texture_unit normalmap
+            {
+                texture Cube_Lava_NORM.jpg
+                colour_op replace
+            }
+        }
+
+        // Decal pass
+        pass decal
+        {
+            texture_unit decalmap
+            {
+                colour_op_ex source1 src_manual src_current 0.8 0.8 0.8
+            }
+        }
+    }
+}
Index: data/data_extern/materials/Example.material
===================================================================
--- data/data_extern/materials/Example.material	(revision 12061)
+++ 	(revision )
@@ -1,934 +1,0 @@
-
-material Examples/EnvMappedRustySteel
-{
-	technique
-	{
-		pass
-		{
-
-			texture_unit
-			{
-				texture RustySteel.jpg
-			}
-
-			texture_unit
-			{
-				texture spheremap.png
-				colour_op_ex add src_texture src_current
-				colour_op_multipass_fallback one one
-				env_map spherical
-			}
-		}
-	}
-}
-material Examples/OgreLogo
-{
-	technique
-	{
-		pass
-		{
-			ambient 0.8 0.8 0.8
-
-			texture_unit
-			{
-				texture ogrelogo.png
-			}
-		}
-	}
-}
-material Examples/DarkMaterial
-{
-	technique
-	{
-		pass
-		{
-			ambient 0.1 0.1 0.1
-
-			texture_unit
-			{
-				texture BeachStones.jpg
-			}
-		}
-	}
-}
-material Examples/SpaceSkyBox
-{
-	technique
-	{
-		pass
-		{
-			lighting off
-			depth_write off
-
-			texture_unit
-			{
-				cubic_texture stevecube.jpg separateUV
-				tex_address_mode clamp
-			}
-		}
-	}
-}
-material Examples/SceneSkyBox1
-{
-	technique
-	{
-		pass
-		{
-			lighting off
-			depth_write off
-
-			texture_unit
-			{
-				cubic_texture cubemap_fr.jpg cubemap_bk.jpg cubemap_lf.jpg cubemap_rt.jpg cubemap_up.jpg cubemap_dn.jpg separateUV
-				tex_address_mode clamp
-			}
-		}
-	}
-}
-material Examples/SceneCubeMap1
-{
-	technique
-	{
-		pass
-		{
-			lighting off
-
-			texture_unit
-			{
-				cubic_texture cubemap.jpg combinedUVW
-				tex_address_mode clamp
-				env_map cubic_reflection
-			}
-		}
-	}
-}
-material Examples/SceneSkyBox2
-{
-	technique
-	{
-		pass
-		{
-			lighting off
-			depth_write off
-
-			texture_unit
-			{
-				cubic_texture cubescene_fr.jpg cubescene_bk.jpg cubescene_lf.jpg cubescene_rt.jpg cubescene_up.jpg cubescene_dn.jpg separateUV
-				tex_address_mode clamp
-			}
-		}
-	}
-}
-material Examples/SceneCubeMap2
-{
-	technique
-	{
-		pass
-		{
-			lighting off
-
-			texture_unit
-			{
-				cubic_texture cubescene.jpg combinedUVW
-				tex_address_mode clamp
-				env_map cubic_reflection
-			}
-		}
-	}
-}
-
-
-
-material Examples/CloudySky
-{
-	technique
-	{
-		pass
-		{
-			lighting off
-			depth_write off
-
-			texture_unit
-			{
-				texture clouds.jpg
-				scroll_anim 0.15 0
-			}
-		}
-	}
-}
-material Examples/RustySteel
-{
-	technique
-	{
-		pass
-		{
-
-			texture_unit
-			{
-				texture RustySteel.jpg
-			}
-		}
-	}
-}
-material Examples/Chrome
-{
-	technique
-	{
-		pass
-		{
-
-			texture_unit
-			{
-				texture Chrome.jpg
-				env_map spherical
-			}
-		}
-	}
-}
-material Examples/SpaceSkyPlane
-{
-	technique
-	{
-		pass
-		{
-			lighting off
-			depth_write off
-			fog_override true none
-
-			texture_unit
-			{
-				texture spacesky.jpg
-			}
-		}
-	}
-}
-material Examples/TextureEffect1
-{
-	technique
-	{
-		pass
-		{
-			ambient 0.75 0.75 0.75
-			cull_hardware none
-			cull_software none
-
-			texture_unit
-			{
-				texture BumpyMetal.jpg
-				rotate_anim 0.2
-				wave_xform scale_x sine 1 0.1 0 5
-				wave_xform scale_y sine 0.5 0.2 0.5 3
-			}
-		}
-	}
-}
-material Examples/TextureEffect2
-{
-	technique
-	{
-		pass
-		{
-
-			texture_unit
-			{
-				texture Water02.jpg
-				scroll_anim 0.5 0
-			}
-		}
-	}
-}
-material Examples/TextureEffect3
-{
-	technique
-	{
-		pass
-		{
-			ambient 0.7 0.7 0.7
-			cull_hardware none
-			cull_software none
-
-			texture_unit
-			{
-				texture Water01.jpg
-				scroll_anim -0.25 0.1
-			}
-
-			texture_unit
-			{
-				texture Water01.jpg
-				colour_op_ex add src_texture src_current
-				colour_op_multipass_fallback one one
-				scroll_anim -0.1 0.25
-			}
-		}
-	}
-}
-material Examples/TextureEffect4
-{
-	technique
-	{
-		pass
-		{
-			ambient 0.3 0.3 0.3
-			scene_blend colour_blend
-			cull_hardware none
-			cull_software none
-
-			texture_unit
-			{
-				texture Water02.jpg
-				scroll_anim 0.01 0.01
-			}
-		}
-	}
-}
-material Examples/BumpyMetal
-{
-	technique
-	{
-		pass
-		{
-			ambient 0.75 0.75 0.75
-			cull_hardware none
-			cull_software none
-
-			texture_unit
-			{
-				texture BumpyMetal.jpg
-			}
-		}
-	}
-}
-material Examples/TransparentTest
-{
-	technique
-	{
-		pass
-		{
-			ambient 0.2 0.2 0.2
-			scene_blend add
-			depth_write off
-
-			texture_unit
-			{
-				texture Water01.jpg
-				scroll_anim 0.25 0
-			}
-
-			texture_unit
-			{
-				texture Water01.jpg
-				wave_xform scroll_y sine 0 0.1 0 0.5
-			}
-		}
-	}
-}
-material Examples/Flare
-{
-	technique
-	{
-		pass
-		{
-			lighting off
-			scene_blend add
-			depth_write off
-
-			texture_unit
-			{
-				texture flare.png
-			}
-		}
-	}
-
-	technique
-	{
-		scheme glow
-		pass
-		{
-			lighting off
-			scene_blend add
-			depth_write off
-
-			texture_unit
-			{
-				texture flare.png
-			}
-		}
-	}
-}
-material Examples/FlareZwei
-{
-	technique
-	{
-		pass
-		{
-			lighting off
-			scene_blend add
-			depth_write off
-
-			texture_unit
-			{
-				texture flare2.png
-			}
-		}
-	}
-}
-material Examples/Flaredrei
-{
-	technique
-	{
-		pass
-		{
-			lighting off
-			scene_blend add
-			depth_write off
-
-			texture_unit
-			{
-				texture flare3.png
-			}
-		}
-	}
-}
-material Examples/FlareZwei_1
-{
-	technique
-	{
-		pass
-		{
-			lighting off
-			scene_blend add
-			depth_write off
-
-			texture_unit
-			{
-				texture flare2_1.png
-			}
-		}
-	}
-}
-material Examples/Flare2
-{
-	technique
-	{
-		pass
-		{
-			lighting off
-			scene_blend add
-			depth_write off
-
-			texture_unit
-			{
-				texture flaretrail.png
-			}
-		}
-	}
-}
-material Examples/FlarePointSprite
-{
-	technique
-	{
-		pass
-		{
-			lighting off
-			scene_blend add
-			depth_write off
-
-			point_sprites on
-			point_size 2
-			point_size_attenuation on
-
-			texture_unit
-			{
-				texture flare.png
-			}
-		}
-	}
-}
-
-material Examples/Droplet
-{
-	technique
-	{
-		pass
-		{
-			scene_blend colour_blend
-			depth_write off
-
-			texture_unit
-			{
-				texture basic_droplet.png
-			}
-		}
-	}
-}
-material Examples/Hilite/Yellow
-{
-	technique
-	{
-		pass
-		{
-
-			texture_unit
-			{
-				texture dkyellow.png
-			}
-		}
-	}
-}
-material Examples/Rocky
-{
-	technique
-	{
-		pass
-		{
-			ambient 0.2 0.2 0.2
-
-			texture_unit
-			{
-				texture egyptrockyfull.jpg
-			}
-		}
-	}
-}
-material Examples/10PointBlock
-{
-	technique
-	{
-		pass
-		{
-
-			texture_unit
-			{
-				texture 10points.png
-			}
-		}
-	}
-}
-material Material__25
-{
-	technique
-	{
-		pass
-		{
-
-			texture_unit
-			{
-				texture texmap2.jpg
-			}
-		}
-	}
-}
-material 2 - Default
-{
-	technique
-	{
-		pass
-		{
-
-			texture_unit
-			{
-				texture MtlPlat2.jpg
-			}
-		}
-	}
-}
-
-material Examples/Fish
-{
-	technique
-	{
-		pass
-		{
-			texture_unit
-			{
-				texture steelhead.png
-			}
-		}
-	}
-}
-material Examples/Ninja
-{
-	technique
-	{
-		pass
-		{
-		
-			texture_unit
-			{
-				texture nskingr.jpg
-			}
-		}
-	}
-}
-
-material Examples/Robot
-{
-	// Hardware skinning techniique
-	technique
-	{
-		pass
-		{
-			vertex_program_ref Ogre/HardwareSkinningOneWeight
-			{
-				param_named_auto worldMatrix3x4Array world_matrix_array_3x4
-				param_named_auto viewProjectionMatrix viewproj_matrix
-				param_named_auto lightPos[0] light_position 0
-				param_named_auto lightPos[1] light_position 1
-				param_named_auto lightDiffuseColour[0] light_diffuse_colour 0
-				param_named_auto lightDiffuseColour[1] light_diffuse_colour 1
-				param_named_auto ambient ambient_light_colour
-			
-			}
-			// alternate shadow caster program
-			shadow_caster_vertex_program_ref Ogre/HardwareSkinningOneWeightShadowCaster
-			{
-				param_named_auto worldMatrix3x4Array world_matrix_array_3x4
-				param_named_auto viewProjectionMatrix viewproj_matrix
-				param_named_auto ambient ambient_light_colour
-			
-			}
-
-			texture_unit
-			{
-				texture r2skin.jpg
-			}
-		}
-	}
-
-	// Software blending technique
-	technique
-	{
-		pass
-		{
-
-			texture_unit
-			{
-				texture r2skin.jpg
-			}
-		}
-	}
-}
-
-material Examples/GrassFloor
-{
-	technique
-	{
-		pass
-		{
-			texture_unit
-			{
-				texture grass_1024.jpg
-			}
-		}
-	}
-}
-
-vertex_program Examples/GrassWaverVp cg
-{
-	source Grass.cg
-	entry_point grass_vp
-	profiles vs_1_1 arbvp1
-}
-
-material Examples/GrassBlades
-{
-	// Vertex program waving grass
-    technique
-    {
-        pass
-        {
-			vertex_program_ref Examples/GrassWaverVp
-			{
-				param_named_auto worldViewProj worldviewproj_matrix
-				param_named_auto ambient ambient_light_colour
-				param_named_auto objSpaceLight light_position_object_space 0
-				param_named_auto lightColour light_diffuse_colour 0
-				param_named_auto offset custom 999
-			}
-			alpha_rejection greater 150 
-			scene_blend alpha_blend
-		    cull_hardware none
-            cull_software none
-            texture_unit
-            {
-                texture gras_02.png 
-            }
-        }
-    }
-
-	// Non-vertex program technique (no waving)
-	technique
-    {
-        pass
-        {
-			alpha_rejection greater 150 
-			scene_blend alpha_blend
-		    cull_hardware none
-            cull_software none
-            texture_unit
-            {
-                texture gras_02.png 
-            }
-        }
-    }
-}
-
-material Examples/Rockwall
-{
-	technique
-	{
-		pass
-		{
-			texture_unit
-			{
-				texture rockwall.png
-			}
-		}
-	}
-}
-
-material Examples/Aureola
-{
-	technique
-	{
-		pass
-		{
-			lighting off
-			scene_blend alpha_blend
-			depth_write off
-			cull_hardware none
-
-			texture_unit
-			{
-				texture aureola.png PF_BYTE_LA
-				tex_address_mode clamp
-			}
-		}
-	}
-}
-
-// Test hardware morph animation
-material Examples/HardwareMorphAnimation
-{
-	technique
-	{
-		pass
-		{
-			
-			vertex_program_ref Ogre/HardwareMorphAnimation
-			{
-				// all default
-			}
-
-			texture_unit
-			{
-				tex_coord_set 0
-				colour_op_ex source1 src_current src_current
-			}
-			// need to define these texture units otherwise GL won't use the uv sets			
-			texture_unit
-			{
-				tex_coord_set 1
-				// also need to set blending to ignore texture which is GL warning texture
-				colour_op_ex source1 src_current src_current
-			}
-			texture_unit
-			{
-				tex_coord_set 2
-				colour_op_ex source1 src_current src_current
-			}
-		
-		}
-	}
-}
-
-// Test hardware pose animation
-material Examples/HardwarePoseAnimation
-{
-	technique
-	{
-		pass
-		{
-			
-			vertex_program_ref Ogre/HardwarePoseAnimation
-			{
-				// all default
-			}
-			texture_unit
-			{
-				tex_coord_set 0
-				colour_op_ex source1 src_current src_current
-			}
-			// need to define these texture units otherwise GL won't use the uv sets			
-			texture_unit
-			{
-				tex_coord_set 1
-				// also need to set blending to ignore texture which is GL warning texture
-				colour_op_ex source1 src_current src_current
-			}
-			texture_unit
-			{
-				tex_coord_set 2
-				colour_op_ex source1 src_current src_current
-			}
-
-		
-		}
-	}
-}
-
-material RustyBarrel
-{
-	technique
-	{
-		pass
-		{
-			ambient 0.5 0.5 0.5 1.0
-			diffuse 1.0 1.0 1.0 1.0
-			specular 0.0 0.0 0.0 1.0 12.5
-			emissive 0.0 0.0 0.0 1.0
-			texture_unit
-			{
-				texture RustyBarrel.png
-				filtering trilinear
-			}
-		}
-	}
-}
-
-material WoodPallet
-{
-	receive_shadows on
-	technique
-	{
-		pass
-		{
-			ambient 0.5 0.5 0.5 1.0
-			diffuse 1.0 1.0 1.0 1.0
-			specular 0.0 0.0 0.0 1.0 12.5
-
-			texture_unit
-			{
-				texture WoodPallet.png
-				filtering trilinear
-			}
-		}
-	}
-}
-
-material Examples/LightRibbonTrail
-{
-	technique
-	{
-		pass
-		{
-			lighting off
-			scene_blend add
-			depth_write off
-
-			texture_unit
-			{
-				texture ribbonband.png 1d
-				tex_address_mode clamp
-				filtering none
-			}
-		}
-	}
-}
-
-material Examples/TudorHouse
-{
-	technique
-	{
-		pass
-		{
-			texture_unit
-			{
-				texture fw12b.jpg
-				tex_address_mode clamp
-			}
-		}
-	}
-}
-
-material jaiqua
-{
-	// Hardware skinning techniique
-	technique
-	{
-		pass
-		{
-			vertex_program_ref Ogre/HardwareSkinningTwoWeights
-			{
-			
-			}
-			// alternate shadow caster program
-			shadow_caster_vertex_program_ref Ogre/HardwareSkinningTwoWeightsShadowCaster
-			{
-				param_named_auto worldMatrix3x4Array world_matrix_array_3x4
-				param_named_auto viewProjectionMatrix viewproj_matrix
-				param_named_auto ambient ambient_light_colour
-			
-			}
-
-			texture_unit
-			{
-				texture blue_jaiqua.jpg
-				tex_address_mode clamp
-			}
-		}
-	}
-
-	// Software blending technique
-	technique
-	{
-		pass
-		{
-			texture_unit
-			{
-				texture blue_jaiqua.jpg
-				tex_address_mode clamp
-			}
-		}
-	}
-	
-}
-
-
-material Examples/Plane/IntegratedShadows
-{
-	technique
-	{
-		pass
-		{
-			// Single-pass shadowing
-			texture_unit
-			{
-				texture MtlPlat2.jpg
-			}
-			texture_unit
-			{
-				// standard modulation blend
-				content_type shadow
-				tex_address_mode clamp
-			}
-		}
-	}
-	
-}
-
-material Examples/Black
-{
-	technique
-	{
-		pass
-		{
-
-			texture_unit
-			{
-				texture OrxonoxBlack.png
-			}
-		}
-	}
-}
Index: data/data_extern/materials/Examples.compositor
===================================================================
--- data/data_extern/materials/Examples.compositor	(revision 12061)
+++ 	(revision )
@@ -1,207 +1,0 @@
-//compositor DOF // based on Blur but final pass does depth of field
-//{
-//    technique
-//    {
-//        // Temporary textures
-//        texture rt0 target_width target_height PF_A8R8G8B8
-//        texture rt1 target_width target_height PF_A8R8G8B8
-//
-//        target rt1
-//        {
-//            // Render output from previous compositor (or original scene)
-//            input previous
-//        }
-//
-//        target rt0
-//        {
-//            // Start with clear texture
-//            input none
-//            // Vertical blur pass
-//            pass render_quad
-//            {
-//                // Renders a fullscreen quad with a material
-//                material Ogre/Compositor/DOF_Blur0
-//                input 0 rt1
-//            }
-//        }
-//
-//        target rt1
-//        {
-//            // Start with clear texture
-//            input none
-//            // Horizontal blur pass
-//            pass render_quad
-//            {
-//                // Renders a fullscreen quad with a material
-//                material Ogre/Compositor/DOF_Blur1
-//                input 0 rt0
-//            }
-//        }
-//
-//        target_output
-//        {
-//            // Start with clear output
-//            input none
-//            // Draw a fullscreen quad
-//            pass render_quad
-//            {
-//                // Renders a fullscreen quad with a material
-//                material Ogre/Compositor/DOF_Blend
-//                input 0 rt0
-//                input 1 rt1
-//            }
-//        }
-//    }
-//}
-
-// HDR
-compositor HDR
-{
-	// floating point only for now
-	technique
-	{
-        // Temporary textures
-		// Fullsize HDR render target, used as tone mapping source
-		texture rt_full target_width target_height PF_FLOAT16_RGB
-		// Targets used for luminance evaluation (3x3 downsample, point filtering)
-		texture rt_lum0 1 1 PF_FLOAT16_RGB
-		texture rt_lum1 4 4 PF_FLOAT16_RGB
-		texture rt_lum2 16 16 PF_FLOAT16_RGB
-		texture rt_lum3 64 64 PF_FLOAT16_RGB
-		texture rt_lum4 128 128 PF_FLOAT16_RGB
-		// Bright-pass filtered target (tone mapped)
-		texture rt_brightpass 128 128 PF_R8G8B8
-		// Bloom filter targets
-		texture rt_bloom0 128 128 PF_R8G8B8
-		texture rt_bloom1 128 128 PF_R8G8B8
-
-
-		target rt_full
-		{
-			// No input, render differently
-			input none
-
-			// Use float target HDR material scheme (unclamped shaders)
-			material_scheme HDR
-
-			pass clear
-			{
-			}
-
-			pass render_scene
-			{
-			}
-
-		}
-
-		// Downsample the original HDR scene to extract luminence value
-		target rt_lum4
-		{
-            input none
-            pass render_quad
-            {
-                // Downsample using a 2x2 filter and convert to greyscale
-                material Ogre/Compositor/HDR/Downsample2x2Luminence
-                input 0 rt_full
-                identifier 994
-            }
-		}
-		target rt_lum3
-		{
-            input none
-            pass render_quad
-            {
-                // Downsample using a 3x3 filter
-                material Ogre/Compositor/HDR/Downsample3x3
-                input 0 rt_lum4
-                identifier 993
-            }
-		}
-		target rt_lum2
-		{
-            input none
-            pass render_quad
-            {
-                // Downsample using a 3x3 filter
-                material Ogre/Compositor/HDR/Downsample3x3
-                input 0 rt_lum3
-                identifier 992
-            }
-		}
-		target rt_lum1
-		{
-            input none
-            pass render_quad
-            {
-                // Downsample using a 3x3 filter
-                material Ogre/Compositor/HDR/Downsample3x3
-                input 0 rt_lum2
-                identifier 991
-            }
-		}
-		target rt_lum0
-		{
-            input none
-            pass render_quad
-            {
-                // Downsample using a 3x3 filter
-                material Ogre/Compositor/HDR/Downsample3x3
-                input 0 rt_lum1
-                identifier 990
-            }
-		}
-
-
-		target rt_brightpass
-		{
-			input none
-			pass render_quad
-			{
-				// Downsample using a 3x3 filter, hi-pass and tone map
-				material Ogre/Compositor/HDR/Downsample3x3Brightpass
-				input 0 rt_full
-				input 1 rt_lum0
-				identifier 800
-			}
-		}
-
-		target rt_bloom1
-		{
-			input none
-			pass render_quad
-			{
-				// Blur horizontally
-				material Ogre/Compositor/HDR/GaussianBloom
-				input 0 rt_brightpass
-				identifier 701
-			}
-		}
-		target rt_bloom0
-		{
-			input none
-			pass render_quad
-			{
-				// Blur horizontally
-				material Ogre/Compositor/HDR/GaussianBloom
-				input 0 rt_bloom1
-				identifier 700
-			}
-		}
-
-
-		// Final output combines tone mapping of the original scene, with an
-		// exposure setting passed in as a GPU parameter, and an additive bloom
-		// effect
-		target_output
-		{
-			input none
-			pass render_quad
-			{
-				material Ogre/Compositor/HDR/ToneMapping
-				input 0 rt_full
-				input 1 rt_bloom0
-				input 2 rt_lum0
-			}
-		}
-	}
-}
Index: data/data_extern/materials/Examples.program
===================================================================
--- data/data_extern/materials/Examples.program	(revision 12061)
+++ 	(revision )
@@ -1,146 +1,0 @@
-//---------------------------------------------------
-// This file includes a number of basic GPU programs
-// for use in many materials. 
-//---------------------------------------------------
-
-
-
-
-// A really basic ambient pass program, support for one texture coodinate set
-vertex_program Ogre/BasicVertexPrograms/AmbientOneTextureHLSL hlsl
-{
-	source Example_Basic.hlsl
-	entry_point ambientOneTexture_vp
-	target vs_1_1
-
-	default_params
-	{
-		param_named_auto worldViewProj worldviewproj_matrix
-		param_named_auto ambient ambient_light_colour
-	}
-}
-// A really basic ambient pass program, support for one texture coodinate set
-vertex_program Ogre/BasicVertexPrograms/AmbientOneTextureGLSL glsl
-{
-	source AmbientOneTexture.glsl
-
-	default_params
-	{
-		param_named_auto ambient ambient_light_colour
-	}
-}
-
-
-vertex_program Ogre/BasicVertexPrograms/AmbientOneTextureUnified unified
-{
-	delegate Ogre/BasicVertexPrograms/AmbientOneTextureGLSL
-	delegate Ogre/BasicVertexPrograms/AmbientOneTextureHLSL
-}
-
-// Same as below, but for use when rendering texture shadows
-vertex_program Ogre/HardwareSkinningOneWeightShadowCaster cg
-{
-	source Example_Basic.cg
-	entry_point hardwareSkinningOneWeightCaster_vp
-	profiles vs_1_1 arbvp1
-	includes_skeletal_animation true
-}
-// Basic hardware skinning using one indexed weight per vertex
-vertex_program Ogre/HardwareSkinningOneWeight cg
-{
-   source Example_Basic.cg
-   entry_point hardwareSkinningOneWeight_vp
-   profiles vs_1_1 arbvp1
-   includes_skeletal_animation true   
-}
-// Same as below, but for use when rendering texture shadows
-vertex_program Ogre/HardwareSkinningTwoWeightsShadowCasterCg cg
-{
-	source Example_Basic.cg
-	entry_point hardwareSkinningTwoWeightsCaster_vp
-	profiles vs_1_1 arbvp1
-	includes_skeletal_animation true
-}
-
-vertex_program Ogre/HardwareSkinningTwoWeightsShadowCasterGLSL glsl
-{
-	source skinningTwoWeightsShadowCasterVp.glsl
-	includes_skeletal_animation true
-}
-
-vertex_program Ogre/HardwareSkinningTwoWeightsShadowCaster unified
-{
-	delegate Ogre/HardwareSkinningTwoWeightsShadowCasterGLSL
-	delegate Ogre/HardwareSkinningTwoWeightsShadowCasterCg
-}
-
-// Basic hardware skinning using two indexed weights per vertex
-vertex_program Ogre/HardwareSkinningTwoWeightsCg cg
-{
-   source Example_Basic.cg
-   entry_point hardwareSkinningTwoWeights_vp
-   profiles vs_1_1 arbvp1
-   includes_skeletal_animation true
-}
-
-vertex_program Ogre/HardwareSkinningTwoWeightsGLSL glsl
-{
-   source skinningTwoWeightsVp.glsl
-   includes_skeletal_animation true
-}
-
-vertex_program Ogre/HardwareSkinningTwoWeights unified
-{
-	delegate Ogre/HardwareSkinningTwoWeightsGLSL
-	delegate Ogre/HardwareSkinningTwoWeightsCg
-	
-   default_params
-   {
-   		param_named_auto worldMatrix3x4Array world_matrix_array_3x4
-		param_named_auto viewProjectionMatrix viewproj_matrix
-		param_named_auto lightPos[0] light_position 0
-		param_named_auto lightPos[1] light_position 1
-		param_named_auto lightDiffuseColour[0] light_diffuse_colour 0
-		param_named_auto lightDiffuseColour[1] light_diffuse_colour 1
-   }
-}
-
-// Basic hardware skinning using four indexed weights per vertex
-vertex_program Ogre/HardwareSkinningFourWeights cg
-{
-   source Example_Basic.cg
-   entry_point hardwareSkinningFourWeights_vp
-   profiles vs_1_1 arbvp1
-   includes_skeletal_animation true
-
-}
-// Basic hardware morph animation 
-vertex_program Ogre/HardwareMorphAnimation cg
-{
-	source Example_Basic.cg
-	entry_point hardwareMorphAnimation
-	profiles vs_1_1 arbvp1
-
-	includes_morph_animation true
-	default_params
-	{
-		param_named_auto worldViewProj worldviewproj_matrix
-		param_named_auto anim_t animation_parametric
-	}
-}
-// Basic hardware pose animation supporting 2 active poses
-vertex_program Ogre/HardwarePoseAnimation cg
-{
-	source Example_Basic.cg
-	entry_point hardwarePoseAnimation
-	profiles vs_1_1 arbvp1
-
-	includes_pose_animation 2
-	default_params
-	{
-		param_named_auto worldViewProj worldviewproj_matrix
-		param_named_auto anim_t animation_parametric
-	}
-}
-
-
Index: data/data_extern/materials/Flares.material
===================================================================
--- data/data_extern/materials/Flares.material	(revision 12061)
+++ data/data_extern/materials/Flares.material	(revision 12181)
@@ -1,2 +1,35 @@
+material Examples/Flare
+{
+        technique
+        {
+                pass
+                {
+                        lighting off
+                        scene_blend add
+                        depth_write off
+
+                        texture_unit
+                        {
+                                texture flare.png
+                        }
+                }
+        }
+
+        technique
+        {
+                scheme glow
+                pass
+                {
+                        lighting off
+                        scene_blend add
+                        depth_write off
+
+                        texture_unit
+                        {
+                                texture flare.png
+                        }
+                }
+        }
+}
 material Flares/point_lensflare
 {
Index: data/data_extern/materials/ToonShader.material
===================================================================
--- data/data_extern/materials/ToonShader.material	(revision 12061)
+++ 	(revision )
@@ -1,31 +1,0 @@
-vertex_program toonvs glsl
-{
-	source ToonShader_vs.vert
-}
-
-fragment_program Toonps glsl
-{
-	source ToonShader_ps.frag
-}
-
-
-material ToonShader
-{
-	technique asdftec
-	{
-		pass asdfpass
-		{
-			//vertex_program_ref toon_vs
-			//{
-			//}
-			texture_unit
-			{
-				texture thrust.jpg
-			}
-			fragment_program_ref Toonps
-			{
-			}
-		}
-	}
-}
-
