used ShaderDescriptorManager * instead of ShaderDescriptorManager
This commit is contained in:
parent
f79599b1d4
commit
14e7074b3f
@ -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)
|
||||||
|
@ -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
|
||||||
|
@ -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));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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();
|
||||||
|
|
||||||
|
@ -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();
|
||||||
|
@ -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())
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user