updated ShaderGen->ShaderCreater.

This commit is contained in:
2023-03-09 23:21:52 +08:00
parent 26f7c915c8
commit 6ee832c39f
11 changed files with 98 additions and 31 deletions

View File

@@ -42,7 +42,7 @@ public:
MaterialCreater(const uint rc,const uint32 ss=VK_SHADER_STAGE_VERTEX_BIT|VK_SHADER_STAGE_FRAGMENT_BIT);
~MaterialCreater()=default;
bool AddUBOStruct(const AnsiString &ubo_typename,const AnsiString &codes);
bool AddStruct(const AnsiString &ubo_typename,const AnsiString &codes);
bool AddUBO(const VkShaderStageFlagBits flag_bits,const DescriptorSetType set_type,const AnsiString &type_name,const AnsiString &name);
bool AddSampler(const VkShaderStageFlagBits flag_bits,const DescriptorSetType set_type,const SamplerType &st,const AnsiString &name);

View File

@@ -33,7 +33,7 @@ class MaterialDescriptorManager
ShaderDescriptorSetArray desc_set_array;
Map<AnsiString,AnsiString> ubo_struct_map;
Map<AnsiString,AnsiString> struct_map;
Map<AnsiString,UBODescriptor *> ubo_map;
Map<AnsiString,SamplerDescriptor *> sampler_map;
@@ -42,23 +42,23 @@ public:
MaterialDescriptorManager();
~MaterialDescriptorManager()=default;
bool AddUBOStruct(const AnsiString &name,const AnsiString &code)
bool AddStruct(const AnsiString &name,const AnsiString &code)
{
if(ubo_struct_map.KeyExist(name))
if(struct_map.KeyExist(name))
return(false);
ubo_struct_map.Add(name,code);
struct_map.Add(name,code);
return(true);
}
bool GetUBOStruct(const AnsiString &name,AnsiString &code) const
bool GetStruct(const AnsiString &name,AnsiString &code) const
{
return(ubo_struct_map.Get(name,code));
return(struct_map.Get(name,code));
}
bool hasUBOStruct(const AnsiString &name) const
bool hasStruct(const AnsiString &name) const
{
return(ubo_struct_map.KeyExist(name));
return(struct_map.KeyExist(name));
}
const UBODescriptor *AddUBO(VkShaderStageFlagBits ssb,DescriptorSetType set_type,UBODescriptor *sd);

View File

@@ -6,8 +6,12 @@
SHADERGEN_NAMESPACE_BEGIN
class ShaderCreater
{
protected:
VkShaderStageFlagBits shader_stage; ///<着色器阶段
MaterialDescriptorManager *mdm;
protected:
AnsiString shader_codes;
@@ -18,9 +22,16 @@ protected:
protected:
virtual void ProcHeader(){}
virtual void ProcInput();
virtual void ProcOutput();
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();
public:
@@ -30,9 +41,10 @@ public:
public:
ShaderCreater(VkShaderStageFlagBits ss):sdm(ss)
ShaderCreater(VkShaderStageFlagBits ss,MaterialDescriptorManager *m):sdm(ss)
{
shader_stage=ss;
mdm=m;
}
virtual ~ShaderCreater()=default;

View File

@@ -12,7 +12,7 @@ class ShaderCreaterFragment:public ShaderCreater
{
public:
ShaderCreaterFragment():ShaderCreater(VK_SHADER_STAGE_FRAGMENT_BIT){}
ShaderCreaterFragment(MaterialDescriptorManager *m):ShaderCreater(VK_SHADER_STAGE_FRAGMENT_BIT,m){}
~ShaderCreaterFragment()=default;
void UseDefaultMain();

View File

@@ -7,7 +7,7 @@ class ShaderCreaterGeometry:public ShaderCreater
{
public:
ShaderCreaterGeometry():ShaderCreater(VK_SHADER_STAGE_GEOMETRY_BIT){}
ShaderCreaterGeometry(MaterialDescriptorManager *m):ShaderCreater(VK_SHADER_STAGE_GEOMETRY_BIT,m){}
~ShaderCreaterGeometry()=default;
};
SHADERGEN_NAMESPACE_END

View File

@@ -9,7 +9,7 @@ class ShaderCreaterVertex:public ShaderCreater
public:
ShaderCreaterVertex():ShaderCreater(VK_SHADER_STAGE_VERTEX_BIT){}
ShaderCreaterVertex(MaterialDescriptorManager *m):ShaderCreater(VK_SHADER_STAGE_VERTEX_BIT,m){}
~ShaderCreaterVertex()=default;
int AddInput(const VAT &type,const AnsiString &name);

View File

@@ -2,6 +2,7 @@
#include<hgl/shadergen/ShaderGenNamespace.h>
#include<hgl/type/Map.h>
#include<hgl/type/StringList.h>
#include<hgl/graph/VKShaderStage.h>
#include<hgl/graph/VKDescriptorSetType.h>
#include<hgl/shadergen/MaterialDescriptorManager.h>
@@ -20,6 +21,8 @@ class ShaderDescriptorManager
ShaderStageIO stage_io;
AnsiStringList struct_list; //用到的结构列表
//ubo/object在这里以及MaterialDescriptorManager中均有一份mdm中的用于产生set/binding号这里的用于产生shader
ConstUBODescriptorList ubo_list;
ConstSamplerDescriptorList sampler_list;
@@ -41,6 +44,8 @@ public:
const ShaderStageIO & GetShaderStageIO()const{return stage_io;}
const AnsiStringList & GetStructList()const{return struct_list;}
const ConstUBODescriptorList & GetUBOList()const{return ubo_list;}
const ConstSamplerDescriptorList & GetSamplerList()const{return sampler_list;}