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/MorningSkyBoxHDRfp cg
{
	source hdr.cg
	entry_point morningskybox_fp
	profiles ps_2_0 arbfp1

}

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/AmbientOneTexture
			{
				param_named_auto worldViewProj worldviewproj_matrix
				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

			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 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
    
    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/GrassWaverTexVp cg
  {
	source Grass.cg
	entry_point grassTex_vp
	profiles vs_1_1 arbvp1
    
    default_params
      {
        param_named_auto worldViewProj worldviewproj_matrix        
        param_named_auto offset custom 999
    }
}
vertex_program Examples/GrassWaverAmbientVp cg
          {
	source Grass.cg
	entry_point grassAmbient_vp
	profiles 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/GrassWaverAmbientFp cg
{
	source Grass.cg
	entry_point grassAmbient_fp
	profiles ps_2_0 arbfp1
    default_params
    {
    }
}
fragment_program Examples/GrassWaverFp cg
{
	source Grass.cg
	entry_point grass_fp
	profiles ps_2_0 arbfp1
    default_params
    {
    }
}

vertex_program Examples/GrassWaverCasterVp cg
{
	source Grass.cg
	entry_point grasscaster_vp
	profiles 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/GrassWaverCasterFp cg
{
	source Grass.cg
	entry_point grasscaster_fp
	profiles ps_2_0 arbfp1
    default_params
    {
    }
}

vertex_program Examples/GrassWaverReceiverVp cg
{
	source Grass.cg
	entry_point grassreceiver_vp
	profiles 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/GrassWaverReceiverFp cg
{
	source Grass.cg
	entry_point grassreceiver_fp
	profiles 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
    }
}


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


fragment_program Examples/ShowUV_p cg
{
	source Example_Basic.cg
	entry_point showuv_p
	profiles ps_2_0 arbfp1
}
fragment_program Examples/ShowUVdir3D cg
{
	source Example_Basic.cg
	entry_point showuvdir3d_p
	profiles ps_2_0 arbfp1
}
vertex_program Examples/ShowTangents_v 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/ShowNormals_v cg
{
	source Example_Basic.cg
	entry_point basicPassthroughNormal_v
	profiles vs_2_0 arbvp1
	default_params
	{
		param_named_auto worldViewProj worldviewproj_matrix
	}
}

material Examples/ShowUV
{
	technique
	{
		pass
		{
			vertex_program_ref Ogre/BasicVertexPrograms/AmbientOneTexture
			{
			}
			fragment_program_ref Examples/ShowUV_p
			{
			}

			
		}
	}
}
material Examples/ShowTangents
{
	technique
	{
		pass
		{
			vertex_program_ref Examples/ShowTangents_v
			{
			}
			fragment_program_ref Examples/ShowUVdir3D
			{
			}

			
		}
	}
}
material Examples/ShowNormals
{
	technique
	{
		pass
		{
			vertex_program_ref Examples/ShowNormals_v
			{
			}
			fragment_program_ref Examples/ShowUVdir3D
			{
			}

			
		}
	}
}


