/*vertex_program Ogre/FluidSim/VS_GRID hlsl
{
	source HairFluidSim.hlsl
	entry_point VS_GRID
	target vs_4_0

	default_params
	{
		param_named g_textureWidth float 0.0
		param_named g_textureHeight float 0.0
		param_named g_textureDepth float 0.0
	}
}

geometry_program Ogre/FluidSim/GS_ARRAY hlsl
{
	source HairFluidSim.hlsl
	entry_point GS_ARRAY
	target gs_4_0

	default_params
	{

	}
}


fragment_program Ogre/FluidSim/PS_ADVECT_MACCORMACK hlsl
{
	source HairFluidSim.hlsl
	entry_point PS_ADVECT_MACCORMACK
	target ps_4_0
	
	default_params
	{
		param_named g_advectAsTemperature int 0
		param_named g_treatAsLiquidVelocity int 0
		param_named g_textureWidth float 0.0
		param_named g_textureHeight float 0.0
		param_named g_textureDepth float 0.0
		param_named g_timestep float 0.0
		param_named g_decay float 0.0
		param_named g_temperatureLoss float 0.0
	}	
}

fragment_program Ogre/FluidSim/PS_ADVECT hlsl
{
	source HairFluidSim.hlsl
	entry_point PS_ADVECT
	target ps_4_0
	
	default_params
	{
		param_named g_advectAsTemperature int 0
		param_named g_treatAsLiquidVelocity int 0
		param_named g_textureWidth float 0.0
		param_named g_textureHeight float 0.0
		param_named g_textureDepth float 0.0	
		param_named g_timestep float 0.0
		param_named g_decay float 0.0
		param_named g_temperatureLoss float 0.0		
	}	
}

fragment_program Ogre/FluidSim/PS_VORTICITY hlsl
{
	source HairFluidSim.hlsl
	entry_point PS_VORTICITY
	target ps_4_0
	
	default_params
	{

	}	
}

fragment_program Ogre/FluidSim/PS_CONFINEMENT hlsl
{
	source HairFluidSim.hlsl
	entry_point PS_CONFINEMENT
	target ps_4_0
	
	default_params
	{
		param_named g_treatAsLiquidVelocity int 0
		param_named g_timestep float 0.0
		param_named g_vortConfinementScale float 0.0
	}	
}

fragment_program Ogre/FluidSim/PS_DIFFUSE hlsl
{
	source HairFluidSim.hlsl
	entry_point PS_DIFFUSE
	target ps_4_0
	
	default_params
	{
		param_named g_timestep float 0.0
		param_named g_viscosity float 0.0
	}	
}

fragment_program Ogre/FluidSim/PS_DIVERGENCE hlsl
{
	source HairFluidSim.hlsl
	entry_point PS_DIVERGENCE
	target ps_4_0
	
	default_params
	{

	}	
}

fragment_program Ogre/FluidSim/PS_SCALAR_JACOBI hlsl
{
	source HairFluidSim.hlsl
	entry_point PS_SCALAR_JACOBI
	target ps_4_0
	
	default_params
	{

	}	
}

fragment_program Ogre/FluidSim/PS_PROJECT hlsl
{
	source HairFluidSim.hlsl
	entry_point PS_PROJECT
	target ps_4_0
	
	default_params
	{
		param_named g_treatAsLiquidVelocity int 0
	}	
}

fragment_program Ogre/FluidSim/PS_SIGNED_DISTANCE_TO_LIQUIDHEIGHT hlsl
{
	source HairFluidSim.hlsl
	entry_point PS_SIGNED_DISTANCE_TO_LIQUIDHEIGHT
	target ps_4_0
	
	default_params
	{

	}	
}

fragment_program Ogre/FluidSim/PS_INJECT_LIQUID hlsl
{
	source HairFluidSim.hlsl
	entry_point PS_INJECT_LIQUID
	target ps_4_0
	
	default_params
	{

	}	
}

fragment_program Ogre/FluidSim/PS_APPLY_AIR_PRESSURE hlsl
{
	source HairFluidSim.hlsl
	entry_point PS_APPLY_AIR_PRESSURE
	target ps_4_0
	
	default_params
	{
		param_named g_treatAsLiquidVelocity int 0
	}	
}

fragment_program Ogre/FluidSim/PS_REDISTANCING hlsl
{
	source HairFluidSim.hlsl
	entry_point PS_REDISTANCING
	target ps_4_0
	
	default_params
	{
		param_named g_textureWidth float 0.0
		param_named g_textureHeight float 0.0
		param_named g_textureDepth float 0.0
	}	
}

fragment_program Ogre/FluidSim/PS_EXTRAPOLATE_VELOCITY hlsl
{
	source HairFluidSim.hlsl
	entry_point PS_EXTRAPOLATE_VELOCITY
	target ps_4_0
	
	default_params
	{
		param_named g_treatAsLiquidVelocity int 0
		param_named g_textureWidth float 0.0
		param_named g_textureHeight float 0.0
		param_named g_textureDepth float 0.0		
	}	
}

fragment_program Ogre/FluidSim/PS_LIQUID_STREAM hlsl
{
	source HairFluidSim.hlsl
	entry_point PS_LIQUID_STREAM
	target ps_4_0
	
	default_params
	{
		param_named g_radius float 0.0
		param_named g_center float 0.0
		param_named g_color float 0.0
	}	
}

fragment_program Ogre/FluidSim/PS_APPLY_GRAVITY hlsl
{
	source HairFluidSim.hlsl
	entry_point PS_APPLY_GRAVITY
	target ps_4_0
	
	default_params
	{
		param_named g_treatAsLiquidVelocity int 0
		param_named g_gravity float 9.8
	}	
}

fragment_program Ogre/FluidSim/PS_GAUSSIAN hlsl
{
	source HairFluidSim.hlsl
	entry_point PS_GAUSSIAN
	target ps_4_0
	
	default_params
	{
		param_named g_radius float 0.0
		param_named g_center float 0.0
		param_named g_color float 0.0
	}	
}

fragment_program Ogre/FluidSim/PS_COPY_TEXURE hlsl
{
	source HairFluidSim.hlsl
	entry_point PS_COPY_TEXURE
	target ps_4_0
	
	default_params
	{
		param_named g_color float 0.0
	}	
}

fragment_program Ogre/FluidSim/PS_ADD_DERIVATIVE_VEL hlsl
{
	source HairFluidSim.hlsl
	entry_point PS_ADD_DERIVATIVE_VEL
	target ps_4_0
	
	default_params
	{
		param_named g_color float 0.0
	}	
}

fragment_program Ogre/FluidSim/PS_ADD_DERIVATIVE_VEL hlsl
{
	source HairFluidSim.hlsl
	entry_point PS_ADD_DERIVATIVE_VEL
	target ps_4_0
	
	default_params
	{

	}	
}

fragment_program Ogre/FluidSim/PS_ADD_DERIVATIVE_VEL hlsl
{
	source HairFluidSim.hlsl
	entry_point PS_ADD_DERIVATIVE_VEL
	target ps_4_0
	
	default_params
	{

	}	
}

fragment_program Ogre/FluidSim/PS_ADD_DERIVATIVE_VEL hlsl
{
	source HairFluidSim.hlsl
	entry_point PS_ADD_DERIVATIVE_VEL
	target ps_4_0
	
	default_params
	{

	}	
}

fragment_program Ogre/FluidSim/PS_STATIC_OBSTACLE hlsl
{
	source HairFluidSim.hlsl
	entry_point PS_STATIC_OBSTACLE
	target ps_4_0
	
	default_params
	{

	}	
}

fragment_program Ogre/FluidSim/PS_DYNAMIC_OBSTACLE_BOX hlsl
{
	source HairFluidSim.hlsl
	entry_point PS_DYNAMIC_OBSTACLE_BOX
	target ps_4_0
	
	default_params
	{
		param_named g_obstBoxVelocity float4 0.0 0.0 0.0 0.0
		param_named g_obstBoxRTUcorner float4 0.0 0.0 0.0 0.0
		param_named g_obstBoxLBDcorner float4 0.0 0.0 0.0 0.0
	}	
}

fragment_program Ogre/FluidSim/PS_DRAW_TEXTURE hlsl
{
	source HairFluidSim.hlsl
	entry_point PS_DRAW_TEXTURE
	target ps_4_0
	
	default_params
	{
		param_named g_drawTextureNumber int 1
		param_named g_textureDepth float 0.0
		param_named g_color float 0.0		
	}	
}

material Ogre/FluidSim
{
	technique AdvectMACCORMACK
	{
		pass
		{
			vertex_program_ref Ogre/FluidSim/VS_GRID
			{
			
			}
			geometry_program_ref Ogre/FluidSim/GS_ARRAY
			{
			
			}
			fragment_program_ref Ogre/FluidSim/PS_ADVECT_MACCORMACK
			{
			
			}
			
			cull_hardware none
			cull_software none
			depth_check off
			depth_write off
		}
	}
	technique Advect
	{
		pass
		{
			vertex_program_ref Ogre/FluidSim/VS_GRID
			{
			
			}
			geometry_program_ref Ogre/FluidSim/GS_ARRAY
			{
			
			}
			fragment_program_ref Ogre/FluidSim/PS_ADVECT
			{
			
			}
			
			cull_hardware none
			cull_software none
			depth_check off
			depth_write off
		}
	}
	technique Vorticity
	{
		pass
		{
			vertex_program_ref Ogre/FluidSim/VS_GRID
			{
			
			}
			geometry_program_ref Ogre/FluidSim/GS_ARRAY
			{
			
			}
			fragment_program_ref Ogre/FluidSim/PS_VORTICITY
			{
			
			}
			
			cull_hardware none
			cull_software none
			depth_check off
			depth_write off
		}
	}
	technique Confinement
	{
		pass
		{
			vertex_program_ref Ogre/FluidSim/VS_GRID
			{
			
			}
			geometry_program_ref Ogre/FluidSim/GS_ARRAY
			{
			
			}
			fragment_program_ref Ogre/FluidSim/PS_CONFINEMENT
			{
			
			}
			scene_blend add
			cull_hardware none
			cull_software none
			depth_check off
			depth_write off
		}
	}	
	technique Diffuse
	{
		pass
		{
			vertex_program_ref Ogre/FluidSim/VS_GRID
			{
			
			}
			geometry_program_ref Ogre/FluidSim/GS_ARRAY
			{
			
			}
			fragment_program_ref Ogre/FluidSim/PS_DIFFUSE
			{
			
			}
			cull_hardware none
			cull_software none
			depth_check off
			depth_write off
		}
	}
	technique Divergence
	{
		pass
		{
			vertex_program_ref Ogre/FluidSim/VS_GRID
			{
			
			}
			geometry_program_ref Ogre/FluidSim/GS_ARRAY
			{
			
			}
			fragment_program_ref Ogre/FluidSim/PS_DIVERGENCE
			{
			
			}
			cull_hardware none
			cull_software none
			depth_check off
			depth_write off
		}
	}
	technique ScalarJacobi
	{
		pass
		{
			vertex_program_ref Ogre/FluidSim/VS_GRID
			{
			
			}
			geometry_program_ref Ogre/FluidSim/GS_ARRAY
			{
			
			}
			fragment_program_ref Ogre/FluidSim/PS_SCALAR_JACOBI
			{
			
			}
			cull_hardware none
			cull_software none
			depth_check off
			depth_write off
		}
	}	
	technique Project
	{
		pass
		{
			vertex_program_ref Ogre/FluidSim/VS_GRID
			{
			
			}
			geometry_program_ref Ogre/FluidSim/GS_ARRAY
			{
			
			}
			fragment_program_ref Ogre/FluidSim/PS_PROJECT
			{
			
			}
			cull_hardware none
			cull_software none
			depth_check off
			depth_write off
		}
	}	
	technique InitLevelSetToLiquidHeight
	{
		pass
		{
			vertex_program_ref Ogre/FluidSim/VS_GRID
			{
			
			}
			geometry_program_ref Ogre/FluidSim/GS_ARRAY
			{
			
			}
			fragment_program_ref Ogre/FluidSim/PS_SIGNED_DISTANCE_TO_LIQUIDHEIGHT
			{
			
			}
			cull_hardware none
			cull_software none
			depth_check off
			depth_write off
		}
	}
	technique InjectLiquid
	{
		pass
		{
			vertex_program_ref Ogre/FluidSim/VS_GRID
			{
			
			}
			geometry_program_ref Ogre/FluidSim/GS_ARRAY
			{
			
			}
			fragment_program_ref Ogre/FluidSim/PS_INJECT_LIQUID
			{
			
			}
			scene_blend add
			cull_hardware none
			cull_software none
			depth_check off
			depth_write off
		}
	}	
	technique AirPressure
	{
		pass
		{
			vertex_program_ref Ogre/FluidSim/VS_GRID
			{
			
			}
			geometry_program_ref Ogre/FluidSim/GS_ARRAY
			{
			
			}
			fragment_program_ref Ogre/FluidSim/PS_APPLY_AIR_PRESSURE
			{
			
			}
			scene_blend add
			cull_hardware none
			cull_software none
			depth_check off
			depth_write off
		}
	}	
	technique Redistance
	{
		pass
		{
			vertex_program_ref Ogre/FluidSim/VS_GRID
			{
			
			}
			geometry_program_ref Ogre/FluidSim/GS_ARRAY
			{
			
			}
			fragment_program_ref Ogre/FluidSim/PS_REDISTANCING
			{
			
			}
			cull_hardware none
			cull_software none
			depth_check off
			depth_write off
		}
	}
	technique ExtrapolateVelocity
	{
		pass
		{
			vertex_program_ref Ogre/FluidSim/VS_GRID
			{
			
			}
			geometry_program_ref Ogre/FluidSim/GS_ARRAY
			{
			
			}
			fragment_program_ref Ogre/FluidSim/PS_EXTRAPOLATE_VELOCITY
			{
			
			}
			cull_hardware none
			cull_software none
			depth_check off
			depth_write off
		}
	}
	technique LiquidStream_LevelSet
	{
		pass
		{
			vertex_program_ref Ogre/FluidSim/VS_GRID
			{
			
			}
			geometry_program_ref Ogre/FluidSim/GS_ARRAY
			{
			
			}
			fragment_program_ref Ogre/FluidSim/PS_LIQUID_STREAM
			{
			
			}
			cull_hardware none
			cull_software none
			depth_check off
			depth_write off
		}
	}
	technique LiquidStream_Velocity
	{
		pass
		{
			vertex_program_ref Ogre/FluidSim/VS_GRID
			{
			
			}
			geometry_program_ref Ogre/FluidSim/GS_ARRAY
			{
			
			}
			fragment_program_ref Ogre/FluidSim/PS_LIQUID_STREAM
			{
			
			}
			cull_hardware none
			cull_software none
			depth_check off
			depth_write off
		}
	}
	technique Gravity
	{
		pass
		{
			vertex_program_ref Ogre/FluidSim/VS_GRID
			{
			
			}
			geometry_program_ref Ogre/FluidSim/GS_ARRAY
			{
			
			}
			fragment_program_ref Ogre/FluidSim/PS_APPLY_GRAVITY
			{
			
			}
			scene_blend add
			cull_hardware none
			cull_software none
			depth_check off
			depth_write off
		}
	}
	technique Gaussian
	{
		pass
		{
			vertex_program_ref Ogre/FluidSim/VS_GRID
			{
			
			}
			geometry_program_ref Ogre/FluidSim/GS_ARRAY
			{
			
			}
			fragment_program_ref Ogre/FluidSim/PS_GAUSSIAN
			{
			
			}
			scene_blend add
			cull_hardware none
			cull_software none
			depth_check off
			depth_write off
		}
	}
	technique CopyTexture
	{
		pass
		{
			vertex_program_ref Ogre/FluidSim/VS_GRID
			{
			
			}
			geometry_program_ref Ogre/FluidSim/GS_ARRAY
			{
			
			}
			fragment_program_ref Ogre/FluidSim/PS_COPY_TEXURE
			{
			
			}
			cull_hardware none
			cull_software none
			depth_check off
			depth_write off
		}
	}
	technique AddDerivativeVelocity
	{
		pass
		{
			vertex_program_ref Ogre/FluidSim/VS_GRID
			{
			
			}
			geometry_program_ref Ogre/FluidSim/GS_ARRAY
			{
			
			}
			fragment_program_ref Ogre/FluidSim/PS_ADD_DERIVATIVE_VEL
			{
			
			}
			scene_blend add
			cull_hardware none
			cull_software none
			depth_check off
			depth_write off
		}
	}	
	technique StaticObstacleTriangles
	{
		pass
		{
			vertex_program_ref Ogre/FluidSim/VS_GRID
			{
			
			}
			geometry_program_ref Ogre/FluidSim/GS_ARRAY
			{
			
			}
			fragment_program_ref Ogre/FluidSim/PS_STATIC_OBSTACLE
			{
			
			}
			cull_hardware none
			cull_software back
			depth_check off
			depth_write off
		}
	}
	technique StaticObstacleLines
	{
		pass
		{
			vertex_program_ref Ogre/FluidSim/VS_GRID
			{
			
			}
			geometry_program_ref Ogre/FluidSim/GS_ARRAY
			{
			
			}
			fragment_program_ref Ogre/FluidSim/PS_STATIC_OBSTACLE
			{
			
			}
			cull_hardware none
			cull_software back
			depth_check off
			depth_write off
		}
	}	
	technique DynamicObstacleBox
	{
		pass
		{
			vertex_program_ref Ogre/FluidSim/VS_GRID
			{
			
			}
			geometry_program_ref Ogre/FluidSim/GS_ARRAY
			{
			
			}
			fragment_program_ref Ogre/FluidSim/PS_DYNAMIC_OBSTACLE_BOX
			{
			
			}
			cull_hardware none
			cull_software back
			depth_check off
			depth_write off
		}
	}
	technique DrawTexture
	{
		pass
		{
			vertex_program_ref Ogre/FluidSim/VS_GRID
			{
			
			}

			fragment_program_ref Ogre/FluidSim/PS_DRAW_TEXTURE
			{
			
			}
			cull_hardware none
			cull_software none
			depth_check off
			depth_write off
		}
	}	
}*/