material Examples/SphereMappedRustySteel
{
	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/BeachStones
{
	technique
	{
		pass
		{
			ambient 0.1 0.1 0.1

			texture_unit
			{
				texture BeachStones.jpg
			}
		}
	}
}

material Examples/TrippySkyBox
{
	technique
	{
		pass
		{
			lighting off
			depth_write off

			texture_unit
			{
				cubic_texture nm.png separateUV
				tex_address_mode clamp
			}
		}
	}
}

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/CloudyNoonSkyBox
{
	technique
	{
		pass
		{
			lighting off
			depth_write off

			texture_unit
			{
				cubic_texture cloudy_noon.jpg separateUV
				tex_address_mode clamp
			}
		}
	}
}

material Examples/StormySkyBox
{
	technique
	{
		pass
		{
			lighting off
			depth_write off

			texture_unit
			{
				cubic_texture stormy.jpg separateUV
				tex_address_mode clamp
			}
		}
	}
}

material Examples/EarlyMorningSkyBox
{
	technique
	{
		pass
		{
			lighting off
			depth_write off

			texture_unit
			{
				cubic_texture early_morning.jpg separateUV
				tex_address_mode clamp
			}
		}
	}
}

fragment_program Examples/MorningSkyBoxHDRfpGLSLES glsles
{
	source hdrFp.glsles
	profiles glsles
}

fragment_program Examples/MorningSkyBoxHDRfpCg cg
{
	source hdr.cg
	entry_point morningskybox_fp
	profiles ps_2_0 arbfp1
}

fragment_program Examples/MorningSkyBoxHDRfp unified
{
	delegate Examples/MorningSkyBoxHDRfpGLSLES
	delegate Examples/MorningSkyBoxHDRfpCg
}

material Examples/MorningSkyBox
{
	technique
	{
		pass
		{
			lighting off
			depth_write off

			texture_unit
			{
				cubic_texture morning.jpg separateUV
				tex_address_mode clamp
			}
		}
	}

	// HDR technique (fake)
	technique
	{
		scheme HDR

		pass
		{
			lighting off
			depth_write off

			vertex_program_ref Ogre/BasicVertexPrograms/AmbientOneTextureUnified
			{
				param_named ambient float4 1 1 1 1
			}
			fragment_program_ref Examples/MorningSkyBoxHDRfp
			{
			}

			texture_unit
			{
				cubic_texture morning.jpg separateUV
				tex_address_mode clamp
			}
		}
	}
}

fragment_program Examples/MorningCubeMapHDRfp cg
{
	source hdr.cg
	entry_point morningcubemap_fp
	profiles ps_2_0 arbfp1

}

material Examples/MorningCubeMap
{
	technique
	{
		pass
		{
			lighting off

			texture_unit
			{
				cubic_texture morning.jpg combinedUVW
				tex_address_mode clamp
				env_map cubic_reflection
			}
		}
	}
	// HDR technique (fake)
	technique
	{
		scheme HDR

		pass
		{
			lighting off

			fragment_program_ref Examples/MorningCubeMapHDRfp
			{
			}
			texture_unit
			{
				cubic_texture morning.jpg combinedUVW
				tex_address_mode clamp
				env_map cubic_reflection
			}
		}
	}
}

material Examples/EveningSkyBox
{
	technique
	{
		pass
		{
			lighting off
			depth_write off

			texture_unit
			{
				cubic_texture evening.jpg separateUV
				tex_address_mode clamp
			}
		}
	}
}

material Examples/DynamicCubeMap
{
	technique
	{
		pass
		{
			texture_unit
			{
				// will be filled in at runtime
				cubic_texture dyncubemap 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

			texture_unit
			{
				texture spacesky.jpg
			}
		}
	}
}

material Examples/OgreDance
{
	technique
	{
		pass
		{
			lighting off
			scene_blend alpha_blend
			cull_hardware none
			cull_software none

			texture_unit
			{
				anim_texture ogredance.png 8 2
				filtering none
			}
		}
	}
}

material Examples/OgreParade : Examples/OgreDance
{
	technique
	{
		pass
		{
			texture_unit
			{
				scroll 0.5 0
				scale 0.5 0.5
				scroll_anim 0 0.5
			}
		}
	}
}

material Examples/OgreSpin : Examples/OgreDance
{
	technique
	{
		pass
		{
			texture_unit
			{
				texture ogredance_1.png
				rotate_anim 0.25
				tex_address_mode clamp
			}
		}
	}
}

material Examples/OgreWobble : Examples/OgreDance
{
	technique
	{
		pass
		{
			texture_unit
			{
				texture ogredance_6.png
				wave_xform scale_x sine 1 1.2 0 0.35
				wave_xform scale_y sine 1 1 0.5 0.25
				tex_address_mode clamp
			}
		}
	}
}

material Examples/BumpyMetal
{
	technique
	{
		pass
		{
			ambient 0.75 0.75 0.75

			texture_unit
			{
				texture BumpyMetal.jpg
			}
		}
	}
}

material Examples/WaterStream
{
	technique
	{
		pass
		{
			ambient 0.1 0.1 0.1
			scene_blend add
			depth_write off
			cull_software none
			cull_hardware none

			texture_unit
			{
				texture Water01.jpg
				scroll_anim 0.125 0
			}

			texture_unit
			{
				texture Water01.jpg
				wave_xform scroll_y sine 0 0.1 0 0.25
			}
		}
	}
}

material Examples/Flare
{
	technique
	{
		pass
		{
			lighting off
			scene_blend add
			depth_write off
			diffuse vertexcolour

			texture_unit
			{
				texture flare.png
			}
		}
	}
}
material Examples/Flare2
{
	technique
	{
		pass
		{
			lighting off
			scene_blend add
			depth_write off
			diffuse vertexcolour

			texture_unit
			{
				texture flaretrail.png
			}
		}
	}
}
material Examples/Flare3
{
	technique
	{
		pass
		{
			lighting off
			scene_blend alpha_blend
			depth_write off
			diffuse vertexcolour

			texture_unit
			{
				texture flare_alpha.dds
			}
		}
	}
}
material Examples/FlarePointSprite
{
	technique
	{
		pass
		{
			lighting off
			scene_blend add
			depth_write off
			diffuse vertexcolour

			point_sprites on
			point_size 2
			point_size_attenuation on

			texture_unit
			{
				texture flare.png
			}
		}
	}
}

material Examples/Droplet
{
	technique
	{
		pass
		{
			emissive 0.3 0.3 0.3
			scene_blend colour_blend
			depth_write off
			diffuse vertexcolour
			lighting 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 "Material #8"
{
	technique
	{
		pass
		{

			texture_unit
			{
				texture BODY.jpg
			}
		}
	}
}
material "Material #3"
{
	technique
	{
		pass
		{

			texture_unit
			{
				texture HEAD4.jpg
			}
		}
	}
}
material "Material #9"
{
	technique
	{
		pass
		{

			texture_unit
			{
				texture LEGS.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 technique
	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/GrassWaverVpCg cg
{
	source Grass.cg
	entry_point grass_vp
	profiles vs_4_0 vs_1_1 arbvp1

    default_params
    {
        param_named_auto worldViewProj worldviewproj_matrix

       // param_named_auto camObjPos camera_position_object_space

        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
    }
}

vertex_program Examples/GrassWaverTexVpCg cg
  {
	source Grass.cg
	entry_point grassTex_vp
	profiles vs_4_0 vs_1_1 arbvp1

    default_params
      {
        param_named_auto worldViewProj worldviewproj_matrix
        param_named_auto offset custom 999
    }
}
vertex_program Examples/GrassWaverAmbientVpCg cg
{
	source Grass.cg
	entry_point grassAmbient_vp
	profiles vs_4_0 vs_1_1 arbvp1

    default_params
  	{
  				param_named_auto worldViewProj worldviewproj_matrix
  				param_named_auto ambient ambient_light_colour
        param_named_auto offset custom 999
    }
}
fragment_program Examples/GrassWaverAmbientFpCg cg
{
	source Grass.cg
	entry_point grassAmbient_fp
	profiles ps_4_0 ps_2_0 arbfp1
    default_params
    {
    }
}
fragment_program Examples/GrassWaverFpCg cg
{
	source Grass.cg
	entry_point grass_fp
	profiles ps_4_0 ps_2_0 arbfp1
    default_params
    {
    }
}

vertex_program Examples/GrassWaverCasterVpCg cg
{
	source Grass.cg
	entry_point grasscaster_vp
	profiles vs_4_0 vs_1_1 arbvp1

    default_params
    {
        param_named_auto worldViewProj worldviewproj_matrix
        param_named_auto offset custom 999
		param_named_auto texelOffsets texel_offsets
    }
}
fragment_program Examples/GrassWaverCasterFpCg cg
{
	source Grass.cg
	entry_point grasscaster_fp
	profiles ps_4_0 ps_2_0 arbfp1
    default_params
    {
    }
}

vertex_program Examples/GrassWaverReceiverVpCg cg
{
	source Grass.cg
	entry_point grassreceiver_vp
	profiles vs_4_0 vs_1_1 arbvp1

    default_params
    {
        param_named_auto world world_matrix
		    param_named_auto worldViewProj worldviewproj_matrix
		    param_named_auto texViewProj texture_viewproj_matrix

        param_named_auto camObjPos camera_position_object_space

  			param_named_auto objSpaceLight light_position_object_space 0
  			param_named_auto lightColour light_diffuse_colour 0

  			param_named_auto offset custom 999
  	}
}


fragment_program Examples/GrassWaverReceiverFpCg cg
{
	source Grass.cg
	entry_point grassreceiver_fp
	profiles ps_4_0 ps_2_0 arbfp1

	default_params
    {
        //param_named inverseShadowmapSize float 0.0009765625
		param_named fixedDepthBias float 0.0005
		param_named gradientClamp float 0.0098
		param_named gradientScaleBias float 0
    }
}

vertex_program Examples/GrassWaverVpGLSLES glsles
{
	source GrassVp.glsles
	profiles glsles

    default_params
    {
        param_named_auto worldViewProj worldviewproj_matrix
        param_named_auto camObjPos camera_position_object_space
        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
    }
  }

vertex_program Examples/GrassWaverTexVpGLSLES glsles
{
	source GrassTexVp.glsles
	profiles glsles

    default_params
      {
        param_named_auto worldViewProj worldviewproj_matrix
        param_named_auto offset custom 999
    }
}
vertex_program Examples/GrassWaverAmbientVpGLSLES glsles
{
    source GrassAmbientVp.glsles
    profiles glsles

    default_params
    {
        param_named_auto worldViewProj worldviewproj_matrix
        param_named_auto ambient ambient_light_colour
        param_named_auto offset custom 999
    }
}
fragment_program Examples/GrassWaverAmbientFpGLSLES glsles
{
	source GrassAmbientFp.glsles
	profiles glsles
    default_params
    {
        param_named diffuseMap int 0
    }
}

vertex_program Examples/GrassWaverCasterVpGLSLES glsles
{
	source GrassCasterVp.glsles
	profiles glsles

    default_params
    {
        param_named_auto worldViewProj worldviewproj_matrix
        param_named_auto offset custom 999
		param_named_auto texelOffsets texel_offsets
    }
}
fragment_program Examples/GrassWaverCasterFpGLSLES glsles
{
	source GrassCasterFp.glsles
	profiles glsles
    default_params
    {
        param_named diffuseMap int 0
    }
}

vertex_program Examples/GrassWaverReceiverVpGLSLES glsles
{
	source GrassReceiverVp.glsles
	profiles glsles

    default_params
    {
        param_named_auto world world_matrix
        param_named_auto worldViewProj worldviewproj_matrix
        param_named_auto texViewProj texture_viewproj_matrix

        param_named_auto camObjPos camera_position_object_space

        param_named_auto objSpaceLight light_position_object_space 0
        param_named_auto lightColour light_diffuse_colour 0

        param_named_auto offset custom 999
	}
}


fragment_program Examples/GrassWaverReceiverFpGLSLES glsles
{
	source GrassReceiverFp.glsles
	profiles glsles

	default_params
    {
        param_named shadowMap int 0
        param_named diffuseMap int 1
        param_named fixedDepthBias float 0.0005
        param_named gradientClamp float 0.0098
        param_named gradientScaleBias float 0
    }
}

fragment_program Examples/GrassWaverFpGLSLES glsles
{
	source GrassFp.glsles
	profiles glsles
    default_params
    {
        param_named diffuseMap int 0
    }
}

vertex_program Examples/GrassWaverVpGLSL glsl
{
	source GrassVp.glsl
	syntax glsl150

    default_params
    {
        param_named_auto worldViewProj worldviewproj_matrix
        param_named_auto camObjPos camera_position_object_space
        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
    }
  }

vertex_program Examples/GrassWaverTexVpGLSL glsl
{
	source GrassTexVp.glsl
	syntax glsl150

    default_params
      {
        param_named_auto worldViewProj worldviewproj_matrix
        param_named_auto offset custom 999
    }
}
vertex_program Examples/GrassWaverAmbientVpGLSL glsl
{
    source GrassAmbientVp.glsl
    syntax glsl150

    default_params
    {
        param_named_auto worldViewProj worldviewproj_matrix
        param_named_auto ambient ambient_light_colour
        param_named_auto offset custom 999
    }
}
fragment_program Examples/GrassWaverAmbientFpGLSL glsl
{
	source GrassAmbientFp.glsl
	syntax glsl150
    default_params
    {
        param_named diffuseMap int 0
    }
}

vertex_program Examples/GrassWaverCasterVpGLSL glsl
{
	source GrassCasterVp.glsl
	syntax glsl150

    default_params
    {
        param_named_auto worldViewProj worldviewproj_matrix
        param_named_auto offset custom 999
		param_named_auto texelOffsets texel_offsets
    }
}
fragment_program Examples/GrassWaverCasterFpGLSL glsl
{
	source GrassCasterFp.glsl
	syntax glsl150
    default_params
    {
        param_named diffuseMap int 0
    }
}

vertex_program Examples/GrassWaverReceiverVpGLSL glsl
{
	source GrassReceiverVp.glsl
	syntax glsl150

    default_params
    {
        param_named_auto world world_matrix
        param_named_auto worldViewProj worldviewproj_matrix
        param_named_auto texViewProj texture_viewproj_matrix

        param_named_auto camObjPos camera_position_object_space

        param_named_auto objSpaceLight light_position_object_space 0
        param_named_auto lightColour light_diffuse_colour 0

        param_named_auto offset custom 999
	}
}


fragment_program Examples/GrassWaverReceiverFpGLSL glsl
{
	source GrassReceiverFp.glsl
	syntax glsl150

	default_params
    {
        param_named shadowMap int 0
        param_named diffuseMap int 1
        param_named fixedDepthBias float 0.0005
        param_named gradientClamp float 0.0098
        param_named gradientScaleBias float 0
    }
}

fragment_program Examples/GrassWaverFpGLSL glsl
{
	source GrassFp.glsl
	syntax glsl150
    default_params
    {
        param_named diffuseMap int 0
    }
}

vertex_program Examples/GrassWaverReceiverVp unified
{
	delegate Examples/GrassWaverReceiverVpGLSL
	delegate Examples/GrassWaverReceiverVpGLSLES
	delegate Examples/GrassWaverReceiverVpCg
}

fragment_program Examples/GrassWaverReceiverFp unified
{
	delegate Examples/GrassWaverReceiverFpGLSL
	delegate Examples/GrassWaverReceiverFpGLSLES
	delegate Examples/GrassWaverReceiverFpCg
}

vertex_program Examples/GrassWaverCasterVp unified
{
	delegate Examples/GrassWaverCasterVpGLSL
	delegate Examples/GrassWaverCasterVpGLSLES
	delegate Examples/GrassWaverCasterVpCg
}

fragment_program Examples/GrassWaverCasterFp unified
{
	delegate Examples/GrassWaverCasterFpGLSL
	delegate Examples/GrassWaverCasterFpGLSLES
	delegate Examples/GrassWaverCasterFpCg
}

vertex_program Examples/GrassWaverAmbientVp unified
{
	delegate Examples/GrassWaverAmbientVpGLSL
	delegate Examples/GrassWaverAmbientVpGLSLES
	delegate Examples/GrassWaverAmbientVpCg
}

fragment_program Examples/GrassWaverAmbientFp unified
{
	delegate Examples/GrassWaverAmbientFpGLSL
	delegate Examples/GrassWaverAmbientFpGLSLES
	delegate Examples/GrassWaverAmbientFpCg
}

vertex_program Examples/GrassWaverTexVp unified
{
	delegate Examples/GrassWaverTexVpGLSL
	delegate Examples/GrassWaverTexVpGLSLES
	delegate Examples/GrassWaverTexVpCg
}

fragment_program Examples/GrassWaverFp unified
{
	delegate Examples/GrassWaverFpGLSL
	delegate Examples/GrassWaverFpGLSLES
	delegate Examples/GrassWaverFpCg
}

vertex_program Examples/GrassWaverVp unified
{
	delegate Examples/GrassWaverVpGLSL
	delegate Examples/GrassWaverVpGLSLES
	delegate Examples/GrassWaverVpCg
}

material Examples/GrassBladesShadowCaster
{
	// Vertex program waving grass
    technique
    {
        pass
        {
			vertex_program_ref Examples/GrassWaverCasterVp
			{
			}
			fragment_program_ref Examples/GrassWaverCasterFp
			{
			}

  			alpha_rejection greater 150

  			scene_blend alpha_blend

  		    cull_hardware none
              cull_software none

              texture_unit
              {
				tex_address_mode clamp
                  texture gras_02.png
              }
          }

      }
}

material Examples/GrassBladesShadowReceiver
{
	// Vertex program waving grass
    technique
    {
        pass
		{
			scene_blend add

			alpha_rejection greater 150

		    cull_hardware none
            cull_software none

			vertex_program_ref Examples/GrassWaverReceiverVp
			{
			}
			fragment_program_ref Examples/GrassWaverReceiverFp
			{
			}

            texture_unit ShadowMap
            {
                 tex_address_mode border
                 tex_border_colour 1.0 1.0 1.0 0.0
                 content_type shadow
                 filtering linear linear none
                 tex_coord_set 0
            }

           texture_unit
           {
				tex_address_mode clamp
                tex_coord_set 1
                texture gras_02.png
           }
        }

    }
}

material Examples/GrassBladesAdditiveFloatTransparentBest
{

    transparency_casts_shadows on
    receive_shadows on

	// This is the preferred technique which uses both vertex and
	// fragment programs, supports coloured lights
    technique
    {
        shadow_caster_material Examples/GrassBladesShadowCaster
        shadow_receiver_material Examples/GrassBladesShadowReceiver

		// Base ambient pass
		pass
		{
			// base colours, not needed for rendering, but as information
			// to lighting pass categorisation routine
			ambient 1 1 1
			diffuse 0 0 0
			specular 0 0 0 0

			alpha_rejection greater 150

			scene_blend alpha_blend

		    cull_hardware none
            cull_software none

			// Really basic vertex program
			vertex_program_ref Examples/GrassWaverAmbientVp
			{
			}

			fragment_program_ref Examples/GrassWaverAmbientFp
			{
			}

            texture_unit
            {
				tex_address_mode clamp
                texture gras_02.png
            }

		}
        pass lighting
		{
			// base colours, not needed for rendering, but as information
			// to lighting pass categorisation routine
			ambient 0 0 0

			// do this for each light
			iteration once_per_light


			scene_blend add


			vertex_program_ref Examples/GrassWaverAmbientVp
			{
			}

			fragment_program_ref Examples/GrassWaverAmbientFp
			{
			}


			alpha_rejection greater 150

		    cull_hardware none
            cull_software none

            texture_unit ShadowMap
            {
                 tex_address_mode border
                 tex_border_colour 1.0 1.0 1.0 0.0
                 content_type shadow
                 filtering linear linear none
                 tex_coord_set 0
            }


            texture_unit
            {
				tex_address_mode clamp
                texture gras_02.png
            }
        }
		// Decal pass
		pass
		{
			// base colours, not needed for rendering, but as information
			// to lighting pass categorisation routine
			lighting off

			alpha_rejection greater 150

			//scene_blend alpha_blend
			scene_blend dest_colour zero

		    cull_hardware none
            cull_software none

            texture_unit
            {
				tex_address_mode clamp
                texture gras_02.png
            }

			vertex_program_ref Examples/GrassWaverVp
			{
			}


        }
    }
}

material Examples/GrassBladesAdditiveFloatTransparent
{

    transparency_casts_shadows on
    receive_shadows on

	// This is the preferred technique which uses both vertex and
	// fragment programs, supports coloured lights
  	technique
      {
        shadow_caster_material Examples/GrassBladesShadowCaster
        shadow_receiver_material Examples/GrassBladesShadowReceiver

		// Base ambient pass
          pass
          {
			// base colours, not needed for rendering, but as information
			// to lighting pass categorisation routine
			ambient 1 1 1
			diffuse 0 0 0
			specular 0 0 0 0

  			alpha_rejection greater 150

  			scene_blend alpha_blend

		    cull_hardware none
            cull_software none

			// Really basic vertex program
			vertex_program_ref Examples/GrassWaverAmbientVp
			{
			}

			fragment_program_ref Examples/GrassWaverAmbientFp
			{
			}

            texture_unit
            {
				tex_address_mode clamp
                texture gras_02.png
            }

		}
        pass lighting
		{
			// base colours, not needed for rendering, but as information
			// to lighting pass categorisation routine
			ambient 0 0 0

			// do this for each light
			iteration once_per_light


			scene_blend add


			vertex_program_ref Examples/GrassWaverAmbientVp
			{
			}

			fragment_program_ref Examples/GrassWaverAmbientFp
			{
			}


			alpha_rejection greater 150

  		    cull_hardware none
              cull_software none

            texture_unit ShadowMap
            {
                 tex_address_mode border
                 tex_border_colour 1.0 1.0 1.0 0.0
                 content_type shadow
                 filtering linear linear none
                 tex_coord_set 0
            }


              texture_unit
              {
				tex_address_mode clamp
                  texture gras_02.png
              }
          }
		// Decal pass
		pass
		{
			// base colours, not needed for rendering, but as information
			// to lighting pass categorisation routine
			lighting off

			alpha_rejection greater 150

			//scene_blend alpha_blend
			scene_blend dest_colour zero

		    cull_hardware none
            cull_software none

            texture_unit
            {
				tex_address_mode clamp
                texture gras_02.png
            }

			vertex_program_ref Examples/GrassWaverTexVp
			{
			}
        }
    }
}

material Examples/GrassBladesAdditiveFloat
{
    transparency_casts_shadows on
    receive_shadows on

	// This is the preferred technique which uses both vertex and
	// fragment programs, supports coloured lights
    technique
    {
        shadow_caster_material Ogre/DepthShadowmap/Caster/Float
        shadow_receiver_material Ogre/DepthShadowmap/Receiver/Float

		// Base ambient pass
		pass
		{
			// base colours, not needed for rendering, but as information
			// to lighting pass categorisation routine
			ambient 1 1 1
			diffuse 0 0 0
			specular 0 0 0 0
			// Really basic vertex program
			vertex_program_ref Ogre/BasicVertexPrograms/AmbientOneTextureUnified
			{
  			}
			fragment_program_ref Ogre/BasicFragmentPrograms/PassthroughFP
			{
			}

		}
        pass lighting
		{
			// base colours, not needed for rendering, but as information
			// to lighting pass categorisation routine
			ambient 0 0 0

			// do this for each light
			iteration once_per_light


			scene_blend add


			vertex_program_ref Examples/GrassWaverAmbientVp
			{
			}

			fragment_program_ref Examples/GrassWaverAmbientFp
			{
			}


			alpha_rejection greater 150
			scene_blend alpha_blend

		    cull_hardware none
            cull_software none

            texture_unit
            {
				tex_address_mode clamp
                texture gras_02.png
            }
        }
		// Decal pass
		pass
		{
			// base colours, not needed for rendering, but as information
			// to lighting pass categorisation routine
			lighting off

			alpha_rejection greater 150
			scene_blend alpha_blend

		    cull_hardware none
            cull_software none

            texture_unit
            {
				tex_address_mode clamp
                texture gras_02.png
            }

			vertex_program_ref Examples/GrassWaverAmbientVp
			{
			}

			fragment_program_ref Examples/GrassWaverAmbientFp
			{
			}

        }
    }

}

material Examples/GrassBladesAdditive
{
    transparency_casts_shadows on
    receive_shadows on
	// Vertex program waving grass
    technique
    {
        pass
        {
			vertex_program_ref Examples/GrassWaverAmbientVp
			{
			}

			alpha_rejection greater 150
			scene_blend alpha_blend

		    cull_hardware none
            cull_software none

            texture_unit
            {
				tex_address_mode clamp
                texture gras_02.png
            }
        }
    }
}

material Examples/GrassBlades
{
    transparency_casts_shadows on
    receive_shadows on
	// Vertex program waving grass
    technique
    {
        pass
        {
			vertex_program_ref Examples/GrassWaverVp
			{
			}
			fragment_program_ref Examples/GrassWaverFp
			{
			}

			alpha_rejection greater 150
			scene_blend alpha_blend

		    cull_hardware none
            cull_software none

            texture_unit
            {
				tex_address_mode clamp
                texture gras_02.png
            }
        }
    }
    // fallback
    technique
    {
        pass
        {
			alpha_rejection greater 150
			scene_blend alpha_blend

		    cull_hardware none
            cull_software none

            texture_unit
            {
				tex_address_mode clamp
                texture gras_02.png
            }
        }
    }
}

material Examples/Rockwall
{
	technique
	{
		pass
		{
			texture_unit
			{
				texture rockwall.tga
			}
		}
	}
}

material Examples/Aureola
{
	technique
	{
		pass
		{
			lighting off
			scene_blend alpha_blend
			depth_write off
			diffuse vertexcolour
			cull_hardware none

			texture_unit
			{
				texture aureola.png PF_BYTE_LA
				tex_address_mode clamp
			}
		}
	}
}

// Test hardware morph animation (no normals)
material Examples/HardwareMorphAnimation
{
	technique
	{
		pass
		{

			vertex_program_ref Ogre/HardwareMorphAnimation
			{
				// all default
			}
			fragment_program_ref Ogre/BasicFragmentPrograms/PassthroughFP
			{
			}

			texture_unit
			{
				colour_op_ex source1 src_current src_current
			}

		}
	}
}

// Test hardware pose animation (no normals)
material Examples/HardwarePoseAnimation
{
	technique
	{
		pass
		{

			vertex_program_ref Ogre/HardwarePoseAnimation
			{
				// all default
			}
			fragment_program_ref Ogre/BasicFragmentPrograms/PassthroughFP
			{
			}
			texture_unit
			{
				tex_coord_set 0
				colour_op_ex source1 src_current src_current
			}

		}
	}
}


// Test hardware morph animation (with normals)
material Examples/HardwareMorphAnimationWithNormals
{
	technique
	{
		pass
		{

			vertex_program_ref Ogre/HardwareMorphAnimationWithNormals
			{
				// all default
			}
			fragment_program_ref Ogre/BasicFragmentPrograms/PassthroughFP
			{
			}

			texture_unit
			{
				colour_op_ex source1 src_current src_current
			}

		}
	}
}

// Test hardware pose animation (no normals)
material Examples/HardwarePoseAnimationWithNormals
{
	technique
	{
		pass
		{

			vertex_program_ref Ogre/HardwarePoseAnimationWithNormals
			{
				// all default
			}
			fragment_program_ref Ogre/BasicFragmentPrograms/PassthroughFP
			{
			}
			texture_unit
			{
				tex_coord_set 0
				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
			diffuse vertexcolour

			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 technique - no fragment program
	technique
	{
		pass
		{
			vertex_program_ref Ogre/HardwareSkinningTwoWeights
			{

			}

			fragment_program_ref Ogre/BasicFragmentPrograms/DiffuseOneTexture
			{

			}

			// 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
			}
		}
	}

}


fragment_program Examples/ShowUV_pCg cg
{
	source Example_Basic.cg
	entry_point showuv_p
	profiles ps_2_0 arbfp1
}

fragment_program Examples/ShowUV_pCg_sm4 cg
{
	source Example_Basic_sm4.cg
	entry_point showuv_p
	profiles ps_4_0
}

fragment_program Examples/ShowUV_pGLSLES glsles
{
	source ShowUV.glsles
	profiles glsles
}

fragment_program Examples/ShowUV_pGLSL glsl
{
	source ShowUV.glsl
	syntax glsl150
}

fragment_program Examples/ShowUV_p unified
{
	delegate Examples/ShowUV_pGLSL
	delegate Examples/ShowUV_pGLSLES
	delegate Examples/ShowUV_pCg
	delegate Examples/ShowUV_pCg_sm4
}

fragment_program Examples/ShowUVdir3D_pCg cg
{
	source Example_Basic.cg
	entry_point showuvdir3d_p
	profiles ps_2_0 arbfp1
}
fragment_program Examples/ShowUVdir3D_pCg_sm4 cg
{
	source Example_Basic_sm4.cg
	entry_point showuvdir3d_p
	profiles ps_4_0
}


fragment_program Examples/ShowUVdir3D_pGLSLES glsles
{
	source ShowUVdir3D.glsles
	profiles glsles
}

fragment_program Examples/ShowUVdir3D_pGLSL glsl
{
	source ShowUVdir3D.glsl
	syntax glsl150
}

fragment_program Examples/ShowUVdir3D_p unified
{
	delegate Examples/ShowUVdir3D_pGLSL
	delegate Examples/ShowUVdir3D_pGLSLES
	delegate Examples/ShowUVdir3D_pCg
	delegate Examples/ShowUVdir3D_pCg_sm4
}

vertex_program Examples/ShowTangents_vCg cg
{
	source Example_Basic.cg
	entry_point basicPassthroughTangent_v
	profiles vs_2_0 arbvp1
	default_params
	{
		param_named_auto worldViewProj worldviewproj_matrix
	}
}

vertex_program Examples/ShowTangents_vCg_sm4 cg
{
	source Example_Basic_sm4.cg
	entry_point basicPassthroughTangent_v
	profiles vs_4_0
	default_params
	{
		param_named_auto worldViewProj worldviewproj_matrix
	}
}

vertex_program Examples/ShowTangents_vGLSLES glsles
{
	source ShowTangents.glsles
	profiles glsles
	default_params
	{
		param_named_auto worldViewProj worldviewproj_matrix
	}
}

vertex_program Examples/ShowTangents_vGLSL glsl
{
	source ShowTangents.glsl
	syntax glsl150
	default_params
	{
		param_named_auto worldViewProj worldviewproj_matrix
	}
}

vertex_program Examples/ShowTangents_v unified
{
	delegate Examples/ShowTangents_vGLSL
	delegate Examples/ShowTangents_vGLSLES
	delegate Examples/ShowTangents_vCg
	delegate Examples/ShowTangents_vCg_sm4
}

vertex_program Examples/ShowNormals_vCg cg
{
	source Example_Basic.cg
	entry_point basicPassthroughNormal_v
	profiles vs_2_0 arbvp1
	default_params
	{
		param_named_auto worldViewProj worldviewproj_matrix
	}
}

vertex_program Examples/ShowNormals_vCg_sm4 cg
{
	source Example_Basic_sm4.cg
	entry_point basicPassthroughNormal_v
	profiles vs_4_0
	default_params
	{
		param_named_auto worldViewProj worldviewproj_matrix
	}
}

vertex_program Examples/ShowNormals_vGLSLES glsles
{
	source ShowNormals.glsles
	profiles glsles
	default_params
	{
		param_named_auto worldViewProj worldviewproj_matrix
	}
}

vertex_program Examples/ShowNormals_vGLSL glsl
{
	source ShowNormals.glsl
	syntax glsl150
	default_params
	{
		param_named_auto worldViewProj worldviewproj_matrix
	}
}

vertex_program Examples/ShowNormals_v unified
{
	delegate Examples/ShowNormals_vGLSL
	delegate Examples/ShowNormals_vGLSLES
	delegate Examples/ShowNormals_vCg
	delegate Examples/ShowNormals_vCg_sm4
}

material Examples/ShowUV
{
	technique
	{
		pass
		{
			vertex_program_ref Ogre/BasicVertexPrograms/AmbientOneTextureWithUV
			{
				param_named_auto worldViewProj worldviewproj_matrix
			}
			fragment_program_ref Examples/ShowUV_p
			{
			}
		}
	}

	technique
	{
		pass
		{
			vertex_program_ref Ogre/BasicVertexPrograms/AmbientOneTextureUnified
			{
			}
			fragment_program_ref Examples/ShowUV_p
			{
			}
		}
	}
}
material Examples/ShowTangents
{
	technique
	{
		pass
		{
			vertex_program_ref Examples/ShowTangents_v
			{
			}
			fragment_program_ref Examples/ShowUVdir3D_p
			{
			}
		}
	}
}
material Examples/ShowNormals
{
	technique
	{
		pass
		{
			vertex_program_ref Examples/ShowNormals_v
			{
			}
			fragment_program_ref Examples/ShowUVdir3D_p
			{
			}
		}
	}
}


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/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/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
			}
		}
	}
}
