ULRE/inc/hgl/shadergen/ShaderCreater.h

69 lines
1.5 KiB
C
Raw Normal View History

2023-03-06 14:06:20 +08:00
#ifndef HGL_SHADER_CREATER_INCLUDE
#define HGL_SHADER_CREATER_INCLUDE
#include<hgl/shadergen/ShaderGenNamespace.h>
#include<hgl/graph/VertexAttrib.h>
2023-03-06 14:06:20 +08:00
SHADERGEN_NAMESPACE_BEGIN
class MaterialDescriptorManager;
class ShaderDescriptorManager;
2023-03-06 14:06:20 +08:00
class ShaderCreater
{
2023-03-09 23:21:52 +08:00
protected:
2023-03-06 14:06:20 +08:00
VkShaderStageFlagBits shader_stage; ///<着色器阶段
2023-03-09 23:21:52 +08:00
MaterialDescriptorManager *mdm;
2023-03-06 14:06:20 +08:00
protected:
2023-03-13 21:58:27 +08:00
AnsiString main_codes;
2023-03-06 14:06:20 +08:00
2023-03-08 21:41:57 +08:00
AnsiString output_struct;
AnsiString final_shader;
protected:
2023-03-09 23:21:52 +08:00
virtual bool ProcHeader(){return(true);}
virtual bool ProcSubpassInput();
virtual bool ProcInput(ShaderCreater *);
virtual bool ProcOutput();
virtual bool ProcStruct();
virtual bool ProcUBO();
virtual bool ProcSSBO();
virtual bool ProcConst();
virtual bool ProcSampler();
2023-03-08 21:41:57 +08:00
bool CompileToSPV();
2023-03-06 14:06:20 +08:00
public:
ShaderDescriptorManager *sdm;
2023-03-06 14:06:20 +08:00
VkShaderStageFlagBits GetShaderStage()const{return shader_stage;}
public:
ShaderCreater(VkShaderStageFlagBits ss,MaterialDescriptorManager *m);
virtual ~ShaderCreater();
2023-03-06 14:06:20 +08:00
int AddOutput(const graph::VAT &type,const AnsiString &name);
2023-03-06 14:06:20 +08:00
int AddOutput(const AnsiString &type,const AnsiString &name);
2023-03-06 21:30:32 +08:00
void SetShaderCodes(const AnsiString &str)
{
2023-03-13 21:58:27 +08:00
main_codes=str;
2023-03-06 21:30:32 +08:00
}
2023-03-08 21:41:57 +08:00
const AnsiString &GetOutputStruct()const{return output_struct;}
2023-03-14 22:22:35 +08:00
const AnsiString &GetShaderSource()const{return final_shader;}
bool CreateShader(ShaderCreater *);
2023-03-06 14:06:20 +08:00
};//class ShaderCreater
SHADERGEN_NAMESPACE_END
2023-03-06 21:30:32 +08:00
#endif//HGL_SHADER_CREATER_INCLUDE