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
#define HGL_SHADER_CREATER_INCLUDE
#include<hgl/shadergen/ShaderDescriptorManager.h>
#include<hgl/shadergen/ShaderGenNamespace.h>
#include<hgl/graph/VertexAttrib.h>
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)

View File

@ -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

View File

@ -1,4 +1,5 @@
#include<hgl/shadergen/MaterialCreater.h>
#include<hgl/shadergen/ShaderDescriptorManager.h>
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));
}
}

View File

@ -1,7 +1,20 @@
#include<hgl/shadergen/ShaderCreater.h>
#include<hgl/shadergen/ShaderDescriptorManager.h>
#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();

View File

@ -1,12 +1,15 @@
#include<hgl/shadergen/ShaderCreaterFragment.h>
#include<hgl/shadergen/ShaderDescriptorManager.h>
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();

View File

@ -1,6 +1,13 @@
#include<hgl/shadergen/ShaderCreaterVertex.h>
#include<hgl/shadergen/ShaderDescriptorManager.h>
#include<hgl/graph/VertexAttrib.h>
#include<hgl/graph/VKShaderStage.h>
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())
{