From 14e7074b3f3baaa65e339b86c0acdc43b82f71ef Mon Sep 17 00:00:00 2001 From: "HuYingzhuo(hugo/hyzboy)" Date: Wed, 15 Mar 2023 11:09:51 +0800 Subject: [PATCH] used ShaderDescriptorManager * instead of ShaderDescriptorManager --- inc/hgl/shadergen/ShaderCreater.h | 21 +++++++++---------- inc/hgl/shadergen/ShaderCreaterVertex.h | 2 +- src/ShaderGen/MaterialCreater.cpp | 9 ++++---- src/ShaderGen/ShaderCreater.cpp | 28 ++++++++++++++++++------- src/ShaderGen/ShaderCreaterFragment.cpp | 7 +++++-- src/ShaderGen/ShaderCreaterVertex.cpp | 11 ++++++++-- 6 files changed, 50 insertions(+), 28 deletions(-) diff --git a/inc/hgl/shadergen/ShaderCreater.h b/inc/hgl/shadergen/ShaderCreater.h index bcbd4675..bb9e9bfd 100644 --- a/inc/hgl/shadergen/ShaderCreater.h +++ b/inc/hgl/shadergen/ShaderCreater.h @@ -1,9 +1,13 @@ #ifndef HGL_SHADER_CREATER_INCLUDE #define HGL_SHADER_CREATER_INCLUDE -#include - +#include +#include SHADERGEN_NAMESPACE_BEGIN + +class MaterialDescriptorManager; +class ShaderDescriptorManager; + class ShaderCreater { protected: @@ -36,21 +40,16 @@ protected: public: - ShaderDescriptorManager sdm; + ShaderDescriptorManager *sdm; VkShaderStageFlagBits GetShaderStage()const{return shader_stage;} public: - ShaderCreater(VkShaderStageFlagBits ss,MaterialDescriptorManager *m):sdm(ss) - { - shader_stage=ss; - mdm=m; - } + ShaderCreater(VkShaderStageFlagBits ss,MaterialDescriptorManager *m); + virtual ~ShaderCreater(); - virtual ~ShaderCreater()=default; - - int AddOutput(const VAT &type,const AnsiString &name); + int AddOutput(const graph::VAT &type,const AnsiString &name); int AddOutput(const AnsiString &type,const AnsiString &name); void SetShaderCodes(const AnsiString &str) diff --git a/inc/hgl/shadergen/ShaderCreaterVertex.h b/inc/hgl/shadergen/ShaderCreaterVertex.h index 7ab39078..27a31827 100644 --- a/inc/hgl/shadergen/ShaderCreaterVertex.h +++ b/inc/hgl/shadergen/ShaderCreaterVertex.h @@ -12,7 +12,7 @@ public: ShaderCreaterVertex(MaterialDescriptorManager *m):ShaderCreater(VK_SHADER_STAGE_VERTEX_BIT,m){} ~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); }; SHADERGEN_NAMESPACE_END diff --git a/src/ShaderGen/MaterialCreater.cpp b/src/ShaderGen/MaterialCreater.cpp index efd28905..390518f1 100644 --- a/src/ShaderGen/MaterialCreater.cpp +++ b/src/ShaderGen/MaterialCreater.cpp @@ -1,4 +1,5 @@ #include +#include using namespace hgl; using namespace hgl::graph; @@ -46,7 +47,7 @@ bool MaterialCreater::AddUBO(const VkShaderStageFlagBits flag_bit,const Descript ubo->stage_flag|=flag_bit; - return sc->sdm.AddUBO(set_type,ubo); + return sc->sdm->AddUBO(set_type,ubo); } else { @@ -55,7 +56,7 @@ bool MaterialCreater::AddUBO(const VkShaderStageFlagBits flag_bit,const Descript ubo->type=type_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; - return sc->sdm.AddSampler(set_type,sampler); + return sc->sdm->AddSampler(set_type,sampler); } else { @@ -91,7 +92,7 @@ bool MaterialCreater::AddSampler(const VkShaderStageFlagBits flag_bit,const Desc sampler->type=st_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)); } } diff --git a/src/ShaderGen/ShaderCreater.cpp b/src/ShaderGen/ShaderCreater.cpp index 8d7e9caf..5a3a2fea 100644 --- a/src/ShaderGen/ShaderCreater.cpp +++ b/src/ShaderGen/ShaderCreater.cpp @@ -1,7 +1,20 @@ #include +#include #include"GLSLCompiler.h" 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) { ShaderStage *ss=new ShaderStage; @@ -11,7 +24,7 @@ int ShaderCreater::AddOutput(const VAT &type,const AnsiString &name) ss->basetype=(uint8) type.basetype; ss->vec_size= type.vec_size; - return sdm.AddOutput(ss); + return sdm->AddOutput(ss); } 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() { - auto sil=sdm.GetSubpassInputList(); + auto sil=sdm->GetSubpassInputList(); if(sil.IsEmpty()) return(true); @@ -53,7 +66,6 @@ bool ShaderCreater::ProcSubpassInput() final_shader+="\n"; return(true); - } bool ShaderCreater::ProcInput(ShaderCreater *last_sc) @@ -77,7 +89,7 @@ bool ShaderCreater::ProcOutput() { output_struct.Clear(); - const ShaderStageList &ssl=sdm.GetShaderStageIO().output; + const ShaderStageList &ssl=sdm->GetShaderStageIO().output; if(ssl.GetCount()<=0)return(true); @@ -104,7 +116,7 @@ bool ShaderCreater::ProcOutput() bool ShaderCreater::ProcStruct() { - const AnsiStringList struct_list=sdm.GetStructList(); + const AnsiStringList struct_list=sdm->GetStructList(); AnsiString codes; @@ -125,7 +137,7 @@ bool ShaderCreater::ProcStruct() bool ShaderCreater::ProcUBO() { - auto ubo_list=sdm.GetUBOList(); + auto ubo_list=sdm->GetUBOList(); const int count=ubo_list.GetCount(); @@ -159,7 +171,7 @@ bool ShaderCreater::ProcSSBO() bool ShaderCreater::ProcConst() { - auto const_list=sdm.GetConstList(); + auto const_list=sdm->GetConstList(); const int count=const_list.GetCount(); @@ -188,7 +200,7 @@ bool ShaderCreater::ProcConst() bool ShaderCreater::ProcSampler() { - auto sampler_list=sdm.GetSamplerList(); + auto sampler_list=sdm->GetSamplerList(); const int count=sampler_list.GetCount(); diff --git a/src/ShaderGen/ShaderCreaterFragment.cpp b/src/ShaderGen/ShaderCreaterFragment.cpp index 01a8d600..a1a2ea82 100644 --- a/src/ShaderGen/ShaderCreaterFragment.cpp +++ b/src/ShaderGen/ShaderCreaterFragment.cpp @@ -1,12 +1,15 @@ #include +#include SHADERGEN_NAMESPACE_BEGIN +using namespace hgl::graph; + void ShaderCreaterFragment::UseDefaultMain() { 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(); ShaderStage **o=output_list.GetData(); @@ -27,7 +30,7 @@ void ShaderCreaterFragment::UseDefaultMain() bool ShaderCreaterFragment::ProcOutput() { - const auto &output_list=sdm.GetShaderStageIO().output; + const auto &output_list=sdm->GetShaderStageIO().output; const uint count=output_list.GetCount(); ShaderStage **o=output_list.GetData(); diff --git a/src/ShaderGen/ShaderCreaterVertex.cpp b/src/ShaderGen/ShaderCreaterVertex.cpp index 9e05ddaf..efb4e2d5 100644 --- a/src/ShaderGen/ShaderCreaterVertex.cpp +++ b/src/ShaderGen/ShaderCreaterVertex.cpp @@ -1,6 +1,13 @@ #include +#include +#include +#include SHADERGEN_NAMESPACE_BEGIN + +using namespace hgl; +using namespace hgl::graph; + int ShaderCreaterVertex::AddInput(const VAT &type,const AnsiString &name) { ShaderStage *ss=new ShaderStage; @@ -10,7 +17,7 @@ int ShaderCreaterVertex::AddInput(const VAT &type,const AnsiString &name) ss->basetype=(uint8) type.basetype; ss->vec_size= type.vec_size; - return sdm.AddInput(ss); + return sdm->AddInput(ss); } 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 *) { - const auto &io=sdm.GetShaderStageIO(); + const auto &io=sdm->GetShaderStageIO(); if(io.input.IsEmpty()) {