used ShaderDescriptorManager * instead of ShaderDescriptorManager

This commit is contained in:
HuYingzhuo(hugo/hyzboy) 2023-03-15 11:09:51 +08:00
parent f79599b1d4
commit 14e7074b3f
6 changed files with 50 additions and 28 deletions

View File

@ -1,9 +1,13 @@
#ifndef HGL_SHADER_CREATER_INCLUDE #ifndef HGL_SHADER_CREATER_INCLUDE
#define HGL_SHADER_CREATER_INCLUDE #define HGL_SHADER_CREATER_INCLUDE
#include<hgl/shadergen/ShaderDescriptorManager.h> #include<hgl/shadergen/ShaderGenNamespace.h>
#include<hgl/graph/VertexAttrib.h>
SHADERGEN_NAMESPACE_BEGIN SHADERGEN_NAMESPACE_BEGIN
class MaterialDescriptorManager;
class ShaderDescriptorManager;
class ShaderCreater class ShaderCreater
{ {
protected: protected:
@ -36,21 +40,16 @@ protected:
public: public:
ShaderDescriptorManager sdm; ShaderDescriptorManager *sdm;
VkShaderStageFlagBits GetShaderStage()const{return shader_stage;} VkShaderStageFlagBits GetShaderStage()const{return shader_stage;}
public: public:
ShaderCreater(VkShaderStageFlagBits ss,MaterialDescriptorManager *m):sdm(ss) ShaderCreater(VkShaderStageFlagBits ss,MaterialDescriptorManager *m);
{ virtual ~ShaderCreater();
shader_stage=ss;
mdm=m;
}
virtual ~ShaderCreater()=default; int AddOutput(const graph::VAT &type,const AnsiString &name);
int AddOutput(const VAT &type,const AnsiString &name);
int AddOutput(const AnsiString &type,const AnsiString &name); int AddOutput(const AnsiString &type,const AnsiString &name);
void SetShaderCodes(const AnsiString &str) void SetShaderCodes(const AnsiString &str)

View File

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

View File

@ -1,4 +1,5 @@
#include<hgl/shadergen/MaterialCreater.h> #include<hgl/shadergen/MaterialCreater.h>
#include<hgl/shadergen/ShaderDescriptorManager.h>
using namespace hgl; using namespace hgl;
using namespace hgl::graph; using namespace hgl::graph;
@ -46,7 +47,7 @@ bool MaterialCreater::AddUBO(const VkShaderStageFlagBits flag_bit,const Descript
ubo->stage_flag|=flag_bit; ubo->stage_flag|=flag_bit;
return sc->sdm.AddUBO(set_type,ubo); return sc->sdm->AddUBO(set_type,ubo);
} }
else else
{ {
@ -55,7 +56,7 @@ bool MaterialCreater::AddUBO(const VkShaderStageFlagBits flag_bit,const Descript
ubo->type=type_name; ubo->type=type_name;
ubo->name=name; ubo->name=name;
return sc->sdm.AddUBO(set_type,mdm.AddUBO(flag_bit,set_type,ubo)); return sc->sdm->AddUBO(set_type,mdm.AddUBO(flag_bit,set_type,ubo));
} }
} }
@ -82,7 +83,7 @@ bool MaterialCreater::AddSampler(const VkShaderStageFlagBits flag_bit,const Desc
sampler->stage_flag|=flag_bit; sampler->stage_flag|=flag_bit;
return sc->sdm.AddSampler(set_type,sampler); return sc->sdm->AddSampler(set_type,sampler);
} }
else else
{ {
@ -91,7 +92,7 @@ bool MaterialCreater::AddSampler(const VkShaderStageFlagBits flag_bit,const Desc
sampler->type=st_name; sampler->type=st_name;
sampler->name=name; sampler->name=name;
return sc->sdm.AddSampler(set_type,mdm.AddSampler(flag_bit,set_type,sampler)); return sc->sdm->AddSampler(set_type,mdm.AddSampler(flag_bit,set_type,sampler));
} }
} }

View File

@ -1,7 +1,20 @@
#include<hgl/shadergen/ShaderCreater.h> #include<hgl/shadergen/ShaderCreater.h>
#include<hgl/shadergen/ShaderDescriptorManager.h>
#include"GLSLCompiler.h" #include"GLSLCompiler.h"
SHADERGEN_NAMESPACE_BEGIN SHADERGEN_NAMESPACE_BEGIN
ShaderCreater::ShaderCreater(VkShaderStageFlagBits ss,MaterialDescriptorManager *m)
{
shader_stage=ss;
mdm=m;
sdm=new ShaderDescriptorManager(ss);
}
ShaderCreater::~ShaderCreater()
{
delete sdm;
}
int ShaderCreater::AddOutput(const VAT &type,const AnsiString &name) int ShaderCreater::AddOutput(const VAT &type,const AnsiString &name)
{ {
ShaderStage *ss=new ShaderStage; ShaderStage *ss=new ShaderStage;
@ -11,7 +24,7 @@ int ShaderCreater::AddOutput(const VAT &type,const AnsiString &name)
ss->basetype=(uint8) type.basetype; ss->basetype=(uint8) type.basetype;
ss->vec_size= type.vec_size; ss->vec_size= type.vec_size;
return sdm.AddOutput(ss); return sdm->AddOutput(ss);
} }
int ShaderCreater::AddOutput(const AnsiString &type,const AnsiString &name) int ShaderCreater::AddOutput(const AnsiString &type,const AnsiString &name)
@ -29,7 +42,7 @@ int ShaderCreater::AddOutput(const AnsiString &type,const AnsiString &name)
bool ShaderCreater::ProcSubpassInput() bool ShaderCreater::ProcSubpassInput()
{ {
auto sil=sdm.GetSubpassInputList(); auto sil=sdm->GetSubpassInputList();
if(sil.IsEmpty()) if(sil.IsEmpty())
return(true); return(true);
@ -53,7 +66,6 @@ bool ShaderCreater::ProcSubpassInput()
final_shader+="\n"; final_shader+="\n";
return(true); return(true);
} }
bool ShaderCreater::ProcInput(ShaderCreater *last_sc) bool ShaderCreater::ProcInput(ShaderCreater *last_sc)
@ -77,7 +89,7 @@ bool ShaderCreater::ProcOutput()
{ {
output_struct.Clear(); output_struct.Clear();
const ShaderStageList &ssl=sdm.GetShaderStageIO().output; const ShaderStageList &ssl=sdm->GetShaderStageIO().output;
if(ssl.GetCount()<=0)return(true); if(ssl.GetCount()<=0)return(true);
@ -104,7 +116,7 @@ bool ShaderCreater::ProcOutput()
bool ShaderCreater::ProcStruct() bool ShaderCreater::ProcStruct()
{ {
const AnsiStringList struct_list=sdm.GetStructList(); const AnsiStringList struct_list=sdm->GetStructList();
AnsiString codes; AnsiString codes;
@ -125,7 +137,7 @@ bool ShaderCreater::ProcStruct()
bool ShaderCreater::ProcUBO() bool ShaderCreater::ProcUBO()
{ {
auto ubo_list=sdm.GetUBOList(); auto ubo_list=sdm->GetUBOList();
const int count=ubo_list.GetCount(); const int count=ubo_list.GetCount();
@ -159,7 +171,7 @@ bool ShaderCreater::ProcSSBO()
bool ShaderCreater::ProcConst() bool ShaderCreater::ProcConst()
{ {
auto const_list=sdm.GetConstList(); auto const_list=sdm->GetConstList();
const int count=const_list.GetCount(); const int count=const_list.GetCount();
@ -188,7 +200,7 @@ bool ShaderCreater::ProcConst()
bool ShaderCreater::ProcSampler() bool ShaderCreater::ProcSampler()
{ {
auto sampler_list=sdm.GetSamplerList(); auto sampler_list=sdm->GetSamplerList();
const int count=sampler_list.GetCount(); const int count=sampler_list.GetCount();

View File

@ -1,12 +1,15 @@
#include<hgl/shadergen/ShaderCreaterFragment.h> #include<hgl/shadergen/ShaderCreaterFragment.h>
#include<hgl/shadergen/ShaderDescriptorManager.h>
SHADERGEN_NAMESPACE_BEGIN SHADERGEN_NAMESPACE_BEGIN
using namespace hgl::graph;
void ShaderCreaterFragment::UseDefaultMain() void ShaderCreaterFragment::UseDefaultMain()
{ {
main_codes="void main()\n{\n"; main_codes="void main()\n{\n";
const auto &output_list=sdm.GetShaderStageIO().output; const auto &output_list=sdm->GetShaderStageIO().output;
const uint count=output_list.GetCount(); const uint count=output_list.GetCount();
ShaderStage **o=output_list.GetData(); ShaderStage **o=output_list.GetData();
@ -27,7 +30,7 @@ void ShaderCreaterFragment::UseDefaultMain()
bool ShaderCreaterFragment::ProcOutput() bool ShaderCreaterFragment::ProcOutput()
{ {
const auto &output_list=sdm.GetShaderStageIO().output; const auto &output_list=sdm->GetShaderStageIO().output;
const uint count=output_list.GetCount(); const uint count=output_list.GetCount();
ShaderStage **o=output_list.GetData(); ShaderStage **o=output_list.GetData();

View File

@ -1,6 +1,13 @@
#include<hgl/shadergen/ShaderCreaterVertex.h> #include<hgl/shadergen/ShaderCreaterVertex.h>
#include<hgl/shadergen/ShaderDescriptorManager.h>
#include<hgl/graph/VertexAttrib.h>
#include<hgl/graph/VKShaderStage.h>
SHADERGEN_NAMESPACE_BEGIN SHADERGEN_NAMESPACE_BEGIN
using namespace hgl;
using namespace hgl::graph;
int ShaderCreaterVertex::AddInput(const VAT &type,const AnsiString &name) int ShaderCreaterVertex::AddInput(const VAT &type,const AnsiString &name)
{ {
ShaderStage *ss=new ShaderStage; ShaderStage *ss=new ShaderStage;
@ -10,7 +17,7 @@ int ShaderCreaterVertex::AddInput(const VAT &type,const AnsiString &name)
ss->basetype=(uint8) type.basetype; ss->basetype=(uint8) type.basetype;
ss->vec_size= type.vec_size; ss->vec_size= type.vec_size;
return sdm.AddInput(ss); return sdm->AddInput(ss);
} }
int ShaderCreaterVertex::AddInput(const AnsiString &type,const AnsiString &name) int ShaderCreaterVertex::AddInput(const AnsiString &type,const AnsiString &name)
@ -25,7 +32,7 @@ int ShaderCreaterVertex::AddInput(const AnsiString &type,const AnsiString &name)
bool ShaderCreaterVertex::ProcInput(ShaderCreater *) bool ShaderCreaterVertex::ProcInput(ShaderCreater *)
{ {
const auto &io=sdm.GetShaderStageIO(); const auto &io=sdm->GetShaderStageIO();
if(io.input.IsEmpty()) if(io.input.IsEmpty())
{ {