#pragma once
#include "render/asset/shader.h"
#include "asset/resource_manager.h"
#include "vulkanapi/vulkan.h"
namespace vulkanapi {
	class vkShaderProgram : public engineapi::ShaderProgram {
	private:
		VkShaderModule mPtr;
	public:
		VkShaderModule Ptr() {
			return mPtr;
		}
		void Load(const std::vector<unsigned int>& spirv);
	};
	class VulkanGlslLoader : public engineapi::IFileLoader
	{
		inline static table<engineapi::Guid, void*> ShaderTable;
	public:
		static void Init();
		static void LoadShaderInfo(const engineapi::Guid& guid, const std::vector<unsigned int>& spirv);
		engineapi::ResourceBundle LoadFile(engineapi::PackagePath handle, const engineapi::MetaBundle& meta) override;
	};
}