CSC8503_Advanced_Game_Technologies / Plugins / VulkanRendering / VulkanShaderBuilder.h
VulkanShaderBuilder.h
Raw
#pragma once
#include "VulkanShader.h"
#include "VulkanRenderer.h"

namespace NCL {
	namespace Rendering {
		class VulkanShaderBuilder {
		public:
			VulkanShaderBuilder()	{};
			~VulkanShaderBuilder()	{};

			VulkanShaderBuilder& WithVertexBinary(const string& name);
			VulkanShaderBuilder& WithFragmentBinary(const string& name);
			VulkanShaderBuilder& WithGeometryBinary(const string& name);
			VulkanShaderBuilder& WithTessControlBinary(const string& name);
			VulkanShaderBuilder& WithTessEvalBinary(const string& name);

			VulkanShaderBuilder& WithDebugName(const string& name);

			VulkanShader*	Build(VulkanRenderer& renderer);

		protected:
			string shaderFiles[(int)ShaderStages::SHADER_MAX];
			string debugName;
		};
	}
}