////////////////////////////////////////////////////////////////////////////////////////////////////
// Includes
////////////////////////////////////////////////////////////////////////////////////////////////////

#include "../../types.txt"

////////////////////////////////////////////////////////////////////////////////////////////////////
// Structures
////////////////////////////////////////////////////////////////////////////////////////////////////

struct PS_INPUT
{
#if MIX_SM_HIGH
	float4 pos     : SV_POSITION;
#endif //MIX_SM_HIGH
	float4 diffuse : COLOR0;
	float2 tex     : TEXCOORD0;
};

////////////////////////////////////////////////////////////////////////////////////////////////////
// Grobal values
////////////////////////////////////////////////////////////////////////////////////////////////////

#if MIX_SM_HIGH

	Texture2D g_Texture : register( t0 );
	SamplerState g_Sampler : register( s0 );

#else //MIX_SM_HIGH

	sampler g_Sampler : register( s0 );

#endif //MIX_SM_HIGH

////////////////////////////////////////////////////////////////////////////////////////////////////
// Macros
////////////////////////////////////////////////////////////////////////////////////////////////////

#if MIX_SM_HIGH

	#define TEX_COLOR( uv ) g_Texture.Sample( g_Sampler, uv )

#else //MIX_SM_HIGH

	#define TEX_COLOR( uv ) tex2D( g_Sampler, uv )

#endif //MIX_SM_HIGH

////////////////////////////////////////////////////////////////////////////////////////////////////
// Main function
////////////////////////////////////////////////////////////////////////////////////////////////////

float4 mainColor( PS_INPUT input ) : MSV_TARGET0
{
	return input.diffuse;
}

float4 mainColorAndTexture( PS_INPUT input ) : MSV_TARGET0
{
	return saturate( input.diffuse * TEX_COLOR( input.tex ) );
}
