//////////
// HLSL //
//////////
vertex_program Ogre/IsoSurf/SampleFieldVS_HLSL hlsl
{
	source isosurf.hlsl
	entry_point mainVS
	target vs_4_0

	default_params
	{
		param_named IsoValue float 1.0
		param_named_auto WorldViewProj worldviewproj_matrix
		param_named_auto origWorldViewIT inverse_transpose_worldview_matrix
	}
}

geometry_program Ogre/IsoSurf/TessellateTetrahedraGS_HLSL hlsl
{
	source isosurf.hlsl
	entry_point mainGS
	target gs_4_0
	uses_adjacency_information true
	
	default_params
	{
		param_named IsoValue float 1
	}
}

fragment_program Ogre/IsoSurf/MetaballPS_HLSL hlsl
{
	source isosurf.hlsl
	entry_point mainPS
	target ps_4_0
}

//////////
//  CG  //
//////////
vertex_program Ogre/IsoSurf/SampleFieldVS_CG cg
{
	source isosurf.cg
	entry_point mainVS
	profiles vp40 arbvp1

	default_params
	{
		param_named IsoValue float 1.0
		param_named_auto WorldViewProj worldviewproj_matrix
		param_named_auto origWorldViewIT inverse_transpose_worldview_matrix
	}
}

geometry_program Ogre/IsoSurf/TessellateTetrahedraGS_CG cg
{
	source isosurf.cg
	entry_point mainGS
	profiles gpu_gp gp4_gp
	uses_adjacency_information true
	
	default_params
	{
		param_named IsoValue float 1
	}
}

fragment_program Ogre/IsoSurf/MetaballPS_CG cg
{
	source isosurf.cg
	entry_point mainPS
	profiles fp40 arbfp1
}

//////////
// GLSL //
//////////
vertex_program Ogre/IsoSurf/SampleFieldVS_GLSL glsl
{
	source SampleFieldVS.glsl
	syntax glsl150

	default_params
	{
		param_named IsoValue float 1.0
		param_named_auto WorldViewProj worldviewproj_matrix
		param_named_auto origWorldViewIT inverse_transpose_worldview_matrix
	}
}

geometry_program Ogre/IsoSurf/TessellateTetrahedraGS_GLSL glsl
{
	source TessellateTetrahedraGS.glsl
	syntax glsl150
	uses_adjacency_information true
	
	default_params
	{
		param_named IsoValue float 1
	}
}

fragment_program Ogre/IsoSurf/MetaballPS_GLSL glsl
{
	source MetaballFP.glsl
	syntax glsl150
}

vertex_program Ogre/IsoSurf/SampleFieldVS unified
{
	delegate Ogre/IsoSurf/SampleFieldVS_GLSL
	delegate Ogre/IsoSurf/SampleFieldVS_HLSL
	delegate Ogre/IsoSurf/SampleFieldVS_CG
	default_params
	{

	}
}

geometry_program Ogre/IsoSurf/TessellateTetrahedraGS unified
{
	delegate Ogre/IsoSurf/TessellateTetrahedraGS_GLSL
	delegate Ogre/IsoSurf/TessellateTetrahedraGS_HLSL
	delegate Ogre/IsoSurf/TessellateTetrahedraGS_CG
	default_params
	{

	}
}

fragment_program Ogre/IsoSurf/MetaballPS unified
{
	delegate Ogre/IsoSurf/MetaballPS_GLSL
	delegate Ogre/IsoSurf/MetaballPS_HLSL
	delegate Ogre/IsoSurf/MetaballPS_CG
	default_params
	{

	}
}

material Ogre/IsoSurf/TessellateTetrahedra
{
	technique
	{
		pass
		{
			vertex_program_ref Ogre/IsoSurf/SampleFieldVS
			{
			
			}
			
			geometry_program_ref Ogre/IsoSurf/TessellateTetrahedraGS
			{
			
			}
			
			fragment_program_ref Ogre/IsoSurf/MetaballPS
			{
			
			}
		}
	}
}
