vertex_program InstancingCg cg
{
	source instancing.cg
	profiles vs_4_0 vs_2_0
	entry_point instancing_vp

	default_params
	{
		param_named_auto ambient ambient_light_colour
		param_named_auto lightDiffuseColour derived_light_diffuse_colour 0
		param_named_auto lightPos light_position 0
		param_named_auto viewProjectionMatrix viewproj_matrix
		param_named_auto worldMatrix3x4Array world_matrix_array_3x4
	}
}
vertex_program InstancingShadowCasterCg cg
{
   	source instancing.cg
	profiles vs_4_0 vs_2_0
	entry_point instancingCaster_vp
	default_params
	{
		param_named_auto ambient ambient_light_colour
		param_named_auto viewProjectionMatrix viewproj_matrix
		param_named_auto worldMatrix3x4Array world_matrix_array_3x4
	}
}

vertex_program Instancinghlsl hlsl
{
	source Instancing.hlsl
	target vs_4_0
	entry_point instancing_vp
	preprocessor_defines SHADOW_CASTER=0
	default_params
	{
		param_named_auto ambient ambient_light_colour
		param_named_auto lightDiffuseColour derived_light_diffuse_colour 0
		param_named_auto lightPos light_position 0
		param_named_auto viewProjectionMatrix viewproj_matrix
		param_named_auto worldMatrix3x4Array world_matrix_array_3x4
	}
}
vertex_program InstancingShadowCasterhlsl hlsl
{
   	source Instancing.hlsl
	target vs_4_0
	entry_point instancingCaster_vp
	preprocessor_defines SHADOW_CASTER=1
	default_params
	{
		param_named_auto ambient ambient_light_colour
		param_named_auto viewProjectionMatrix viewproj_matrix
		param_named_auto worldMatrix3x4Array world_matrix_array_3x4
	}
}

vertex_program InstancingGLSL glsl
{
	source instancingVp.glsl
	preprocessor_defines SHADOW_CASTER=0
	default_params
	{
		param_named_auto ambient ambient_light_colour
		param_named_auto lightDiffuseColour derived_light_diffuse_colour 0
		param_named_auto lightPos light_position 0
		param_named_auto viewProjectionMatrix viewproj_matrix
		param_named_auto worldMatrix3x4Array world_matrix_array_3x4
	}
}
vertex_program InstancingShadowCasterGLSL glsl
{
   	source instancingVp.glsl
	preprocessor_defines SHADOW_CASTER=1
	default_params
	{
		param_named_auto ambient ambient_light_colour
		param_named_auto viewProjectionMatrix viewproj_matrix
		param_named_auto worldMatrix3x4Array world_matrix_array_3x4
	}
}

// GLSL 150 shaders
vertex_program InstancingGLSL150 glsl
{
	source instancingVp.glsl
	syntax glsl150
	preprocessor_defines SHADOW_CASTER=0
	default_params
	{
		param_named_auto ambient ambient_light_colour
		param_named_auto lightDiffuseColour derived_light_diffuse_colour 0
		param_named_auto lightPos light_position 0
		param_named_auto viewProjectionMatrix viewproj_matrix
		param_named_auto worldMatrix3x4Array world_matrix_array_3x4
	}
}
vertex_program InstancingShadowCasterGLSL150 glsl
{
   	source instancingVp.glsl
	syntax glsl150
	preprocessor_defines SHADOW_CASTER=1
	default_params
	{
		param_named_auto ambient ambient_light_colour
		param_named_auto viewProjectionMatrix viewproj_matrix
		param_named_auto worldMatrix3x4Array world_matrix_array_3x4
	}
}

vertex_program InstancingGLSLES glsles
{
	source instancingVp.glsles
	preprocessor_defines SHADOW_CASTER=0
	default_params
	{
		param_named_auto ambient ambient_light_colour
		param_named_auto lightDiffuseColour light_diffuse_colour 0
		param_named_auto lightPos light_position 0
		param_named_auto viewProjectionMatrix viewproj_matrix
		param_named_auto worldMatrixArray world_matrix_array
	}
}
vertex_program InstancingShadowCasterGLSLES glsles
{
   	source instancingVp.glsles
	preprocessor_defines SHADOW_CASTER=1
	default_params
	{
		param_named_auto ambient ambient_light_colour
		param_named_auto viewProjectionMatrix viewproj_matrix
		param_named_auto worldMatrixArray world_matrix_array
	}
}

vertex_program Instancing unified
{
	delegate InstancingGLSL150
	delegate InstancingGLSL
	delegate InstancingGLSLES
	//delegate Instancinghlsl
	delegate InstancingCg
}
vertex_program InstancingShadowCaster unified
{
	delegate InstancingShadowCasterGLSL150
	delegate InstancingShadowCasterGLSL
	delegate InstancingShadowCasterGLSLES
	//delegate InstancingShadowCasterhlsl
	delegate InstancingShadowCasterCg
}
