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

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

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

struct VS_INPUT
{
	float4 pos : POSITION;
	float2 tex : TEXCOORD0;
};

struct VS_OUTPUT
{
    float4 pos  : MSV_POSITION;
    float2 tex0 : TEXCOORD0;
    float2 tex1 : TEXCOORD1;
    float2 tex2 : TEXCOORD2;
    float2 tex3 : TEXCOORD3;
    float2 tex4 : TEXCOORD4;
    float2 tex5 : TEXCOORD5;
    float2 tex6 : TEXCOORD6;
    float2 tex7 : TEXCOORD7;
};

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

#if MIX_SM_HIGH

	cbuffer cbInput : register( b0 )
	{
		float4 g_Offsets[8];
	};

#else //MIX_SM_HIGH

	float4 g_Offsets[8] : register( c0 );

#endif //MIX_SM_HIGH

////////////////////////////////////////////////////////////////////////////////////////////////////
// Main function : X
////////////////////////////////////////////////////////////////////////////////////////////////////

VS_OUTPUT mainX( VS_INPUT input )
{
	VS_OUTPUT output;

	output.pos = input.pos;

	output.tex0 = input.tex + g_Offsets[0].xy;
	output.tex1 = input.tex + g_Offsets[1].xy;
	output.tex2 = input.tex + g_Offsets[2].xy;
	output.tex3 = input.tex + g_Offsets[3].xy;
	output.tex4 = input.tex + g_Offsets[4].xy;
	output.tex5 = input.tex + g_Offsets[5].xy;
	output.tex6 = input.tex + g_Offsets[6].xy;
	output.tex7 = input.tex + g_Offsets[7].xy;

	return output;
}

////////////////////////////////////////////////////////////////////////////////////////////////////
// Main function : Y
////////////////////////////////////////////////////////////////////////////////////////////////////

VS_OUTPUT mainY( VS_INPUT input )
{
	VS_OUTPUT output;

	output.pos = input.pos;

	output.tex0 = input.tex + g_Offsets[0].zw;
	output.tex1 = input.tex + g_Offsets[1].zw;
	output.tex2 = input.tex + g_Offsets[2].zw;
	output.tex3 = input.tex + g_Offsets[3].zw;
	output.tex4 = input.tex + g_Offsets[4].zw;
	output.tex5 = input.tex + g_Offsets[5].zw;
	output.tex6 = input.tex + g_Offsets[6].zw;
	output.tex7 = input.tex + g_Offsets[7].zw;

	return output;
}
