//
// WATER_VP.h
//
// Created by Catalin Arsenescu - 26 August 2007
//
// Copyright (C) 2006 Rebellion, All Rights Reserved.
//

#ifdef ASURA_USE_PRAGMA_ONCE
#pragma once
#endif

#ifndef __ASURA_PS3_WATER_VP_H__
#define __ASURA_PS3_WATER_VP_H__

extern u_int _binary_PS3_Water_VP_bin_start;
extern u_int _binary_PS3_Water_VP_bin_end;

static Asura_PS3_GCM_VertexShaderUniformParameter g_axVertexShaderUniformWater[] =
{
	//m_szName, m_usArraySize, m_sizeInFloat4ForOneElement, m_usRegister
	{ "g_xViewProjectionMatrix",	1, 4, NULL },
	{ "g_xCameraPosition",			1, 1, NULL },
	{ "g_xWavesX",					1, 1, NULL },
	{ "g_xWavesZ",					1, 1, NULL },
	{ "g_xUV_Offsets",				1, 1, NULL },
};

enum VERTEX_SHADER_UNIFORM_WATER
{
	VPW_ViewProjectionMatrix,
	VPW_CameraPosition,
	VPW_WavesX,
	VPW_WavesZ,
	VPW_UV_Offsets,
};

class Asura_PS3_VP_Water : public Asura_PS3_GCM_VertexShader
{
public:
	Asura_PS3_VP_Water() : Asura_PS3_GCM_VertexShader( (unsigned char *)&_binary_PS3_Water_VP_bin_start, (unsigned char *)&_binary_PS3_Water_VP_bin_end, g_axVertexShaderUniformWater, sizeof ( g_axVertexShaderUniformWater ) / sizeof ( Asura_PS3_GCM_VertexShaderUniformParameter ) )
	{
	}

	~Asura_PS3_VP_Water()
	{
		u_int i;
		for( i = 0; i < sizeof( g_axVertexShaderUniformWater ) / sizeof( Asura_PS3_GCM_VertexShaderUniformParameter ); ++i )
		{
			g_axVertexShaderUniformWater[ i ].CleanUp();
		}
	}
};

#endif //#ifndef __ASURA_PS3_WATER_VP_H__
