// Template materials for integrated depth shadows


material SO3/PSSM/NULL
{
	technique
	{
		pass
		{
		  lighting off
		  depth_check off
		  depth_write off
		  colour_write off
      
      vertex_program_ref SO3/PSSM/ShadowCasterVP
			{
			}
			fragment_program_ref SO3/PSSM/ShadowCasterFP
			{
			}
		}
  }
}

material SO3/PSSM/ShadowCaster
{
	technique
	{
		pass
		{
			vertex_program_ref SO3/PSSM/ShadowCasterVP
			{
			}
			fragment_program_ref SO3/PSSM/ShadowCasterFP
			{
			}
		}
	}
}

material SO3/PSSM/ShadowCaster/Alpha
{
	technique
	{
		pass
		{
			vertex_program_ref SO3/PSSM/ShadowCasterVP
			{
			}
			fragment_program_ref SO3/PSSM/ShadowCasterFP/Alpha
			{
			}
		}
	}
}

material SO3/PSSM/ShadowReceiver
{
  technique
	{
		pass
		{
			separate_scene_blend modulate add
			vertex_program_ref SO3/PSSM/ShadowReceiverVP
			{
			}
			fragment_program_ref SO3/PSSM/ShadowReceiverFP
			{
				// you must specify pssmSplitPoints when you instantiate!
			}
      
			texture_unit SO3/shadows/PSSM/0
			{
				content_type shadow
        tex_address_mode border
		    tex_border_colour 0.0 0.0 0.0 0.0
        filtering none
			}
			texture_unit SO3/shadows/PSSM/1
			{
				content_type shadow
        tex_address_mode border
		    tex_border_colour 0.0 0.0 0.0 0.0
        filtering none
			}
			texture_unit SO3/shadows/PSSM/2
			{
				content_type shadow
        tex_address_mode border
		    tex_border_colour 0.0 0.0 0.0 0.0
        filtering none
			}
			
			texture_unit diffuse
			{
				// nothing specified for now, derivers can override
			}
		}
	}
}


material SO3/PSSM/ShadowReceiver/basic
{
  technique
	{
		pass
		{
			separate_scene_blend modulate add
			vertex_program_ref SO3/PSSM/ShadowReceiverVP
			{
			}
			fragment_program_ref SO3/PSSM/ShadowReceiverFP/basic
			{
				// you must specify pssmSplitPoints when you instantiate!
			}
			
			texture_unit SO3/shadows/PSSM/0
			{
				content_type shadow
        tex_address_mode border
		    tex_border_colour 0.0 0.0 0.0 0.0
        filtering none
			}
			texture_unit SO3/shadows/PSSM/1
			{
				content_type shadow
        tex_address_mode border
		    tex_border_colour 0.0 0.0 0.0 0.0
        filtering none
			}
			texture_unit SO3/shadows/PSSM/2
			{
				content_type shadow
        tex_address_mode border
		    tex_border_colour 0.0 0.0 0.0 0.0
        filtering none
			}
		}
	}
}

material SO3/PSSM/ShadowReceiver2
{
  technique
	{
		pass
		{
			separate_scene_blend modulate add
			vertex_program_ref SO3/PSSM/ShadowReceiver2VP
			{
			}
			fragment_program_ref SO3/PSSM/ShadowReceiver2FP
			{
				// you must specify pssmSplitPoints when you instantiate!
			}
					
			texture_unit SO3/shadows/PSSM/0
			{
				content_type shadow
        tex_address_mode border
		    tex_border_colour 0.0 0.0 0.0 0.0
        filtering none
			}
			texture_unit SO3/shadows/PSSM/1
			{
				content_type shadow
        tex_address_mode border
		    tex_border_colour 0.0 0.0 0.0 0.0
        filtering none
			}
			
			texture_unit diffuse
			{
				// nothing specified for now, derivers can override
			}
		}
	}
}


material SO3/PSSM/ShadowReceiver2/basic
{
  technique
	{
		pass
		{
			separate_scene_blend modulate add
			vertex_program_ref SO3/PSSM/ShadowReceiver2VP
			{
			}
			fragment_program_ref SO3/PSSM/ShadowReceiver2FP/basic
			{
				// you must specify pssmSplitPoints when you instantiate!
			}
			
			texture_unit SO3/shadows/PSSM/0
			{
				content_type shadow
        tex_address_mode border
		    tex_border_colour 0.0 0.0 0.0 0.0
        filtering none
			}
			texture_unit SO3/shadows/PSSM/1
			{
				content_type shadow
        tex_address_mode border
		    tex_border_colour 0.0 0.0 0.0 0.0
        filtering none
			}
		}
	}
}