matrix	WorldMatrix			: register(c0);		// c0-c3
matrix	ProjViewMatrix		: register(c4);		// c4-c7

sampler Albedo				: register(s0);

// -------------------------------------------------------------------------
//		Datatypes
// -------------------------------------------------------------------------

struct VS_INPUT
{
	vector Position		: POSITION;
	float3 Normal		: NORMAL0;
	float3 Tangent		: NORMAL1;
	float3 Bitangent	: NORMAL2;
	float2 Texture		: TEXCOORD0;
};

struct PS_INPUT
{
	vector Position		: POSITION;
	float2 TexPosition	: TEXCOORD0;
};

struct PS_OUTPUT
{
	vector Diffuse		: COLOR0;
};

// -------------------------------------------------------------------------
//		Vertexshader
// -------------------------------------------------------------------------

PS_INPUT VertexShader(VS_INPUT input)
{
	PS_INPUT output = (PS_INPUT)0;
	
	output.Position		= mul(WorldMatrix, input.Position);
	output.Position		= mul(ProjViewMatrix, output.Position);
	output.TexPosition	= input.Texture;
	
	return output;
}

// -------------------------------------------------------------------------
//		Pixelshader
// -------------------------------------------------------------------------

PS_OUTPUT PixelShader(PS_INPUT input)
{
	PS_OUTPUT output = (PS_OUTPUT)0;
	
	output.Diffuse		=	tex2D(Albedo, input.TexPosition);
	
	return output;
}