updated ShaderGen->ShaderCreater.
This commit is contained in:
@@ -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);
|
||||
|
@@ -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);
|
||||
|
@@ -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;
|
||||
|
@@ -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();
|
||||
|
@@ -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
|
@@ -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);
|
||||
|
@@ -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;}
|
||||
|
||||
|
Reference in New Issue
Block a user