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

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

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

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

struct VS_OUTPUT
{
	float4 pos      : MSV_POSITION;
	float2 tex      : TEXCOORD0;
#if ( ENABLE_FOG && ENABLE_ATMOSPHERE )
	float3 worldPos : TEXCOORD1;
#endif //( ENABLE_FOG && ENABLE_ATMOSPHERE )
};

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

#if MIX_SM_HIGH

	cbuffer cbInput : register( b0 )
	{
		float4x4 g_WVPMat;
		float4x4 g_WMat;
	};
	
#else //MIX_SM_HIGH

	float4x4 g_WVPMat : register( c0 );
	float4x4 g_WMat   : register( c4 );

#endif //MIX_SM_HIGH

////////////////////////////////////////////////////////////////////////////////////////////////////
// C֐
////////////////////////////////////////////////////////////////////////////////////////////////////

VS_OUTPUT main( VS_INPUT input )
{
	VS_OUTPUT output;

	output.pos = mul( input.pos, g_WVPMat );
	output.tex = input.tex;
#if ( ENABLE_FOG && ENABLE_ATMOSPHERE )
	output.worldPos = mul( input.pos, g_WMat ).xyz;
#endif //( ENABLE_FOG && ENABLE_ATMOSPHERE )

	return output;
}
