//	Darkstar Engine  (c) UnderWorld Interactive Studio (all coding by Svarog    2007)
//
//      Данный файл является частью Darkstar Engine. Любое использование кода файла
//      без согласия компании, является нарушением закона об авторском праве (в слу-
//      чае если не оговорено обратное).
//
//      Имя файла: shader_compiler.hpp
//      Краткое описание: shader compiler
//

#ifndef DSE_GS_EFFECT_SHADER_COMPILER_HPP
#define DSE_GS_EFFECT_SHADER_COMPILER_HPP

#include <Darkstar/common.hpp>
#include <Darkstar/Graphic System/Effect/effect.hpp>
#include <Darkstar/Graphic System/Effect/constant_table.hpp>
#include <Darkstar/Graphic System/Effect/shader_include.hpp>

namespace gs
{
	class ShaderCompiler
	{
	private:
		char* error_data;
		unsigned int error_data_size;
		void* shader_code;
		unsigned int shader_code_size;
	public:
		ShaderCompiler();
		~ShaderCompiler();

		bool compileShader(const shared_array<char>& code, const unsigned int size,
			const shared_array<ShaderMacro>& macro, const std::string& entry_point, 
			const std::string& target);

		char* getErrors() const;
		void* getCompiledCode() const;
		unsigned int getCodeSize() const;
	};
};

#endif 