/*!	
	@file
	@brief	ピクセルシェーダーコンパイルクラス
*/

#ifndef CPixelShaderCompiler_h
#define CPixelShaderCompiler_h

#include"../../../../../Setup/CompileMode.h"
#include"../../../../../template/com_ptr.h"
#include"../../CPixelShaderBuffer.h"
#include"../../CVideoCardDriver.h"

#include"D3D9Include.h"
#include<boost/smart_ptr.hpp>

namespace Maid
{
	class IPixelShaderCompiler
	{
	public:
		virtual ~IPixelShaderCompiler(){};


		/*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
		//! ドライバ側で用意されているピクセルシェーダーの作成
		/*!
			@param	Name	[i ]	デフォルト名

			@return	作成されたピクセルシェーダー
		 */
		virtual SPPIXELSHADERBUFFER Compile( const mstring& Name )=0;

		/*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
		//! ゲーム側独自のピクセルシェーダーの作成
		/*!
			@param	Code	[i ]	コード
			@param	type	[i ]	コンパイル

			@return	作成されたピクセルシェーダー
		 */
		virtual SPPIXELSHADERBUFFER Compile( const MySTL::vector<unt08>& Code, IVideoCardDriver::SHADERCOMPILE type )=0;

	};

	typedef	boost::shared_ptr<IPixelShaderCompiler>	SPPIXELSHAERCOMPILER;

}

#endif


