moved Create to StdMaterial from Std2DMaterial and Std3DMaterial

This commit is contained in:
HuYingzhuo(hugo/hyzboy) 2023-10-09 20:56:25 +08:00
parent 695f1a22a8
commit 9a5cead33e
6 changed files with 41 additions and 85 deletions

View File

@ -27,9 +27,14 @@ namespace hgl
}//namespace func }//namespace func
class MaterialCreateInfo; class MaterialCreateInfo;
struct MaterialCreateConfig;
class StdMaterial class StdMaterial
{ {
protected:
MaterialCreateInfo *mci;
protected: protected:
virtual bool BeginCustomShader(){return true;/*some work before creating shader*/}; virtual bool BeginCustomShader(){return true;/*some work before creating shader*/};
@ -42,10 +47,10 @@ namespace hgl
public: public:
StdMaterial()=default; StdMaterial(const MaterialCreateConfig *);
virtual ~StdMaterial()=default; virtual ~StdMaterial()=default;
virtual MaterialCreateInfo *Create()=0; virtual MaterialCreateInfo *Create();
};//class StdMaterial };//class StdMaterial

View File

@ -6,14 +6,6 @@
#include"common/MFRectPrimitive.h" #include"common/MFRectPrimitive.h"
STD_MTL_NAMESPACE_BEGIN STD_MTL_NAMESPACE_BEGIN
Std2DMaterial::Std2DMaterial(const Material2DCreateConfig *c)
{
mci=new MaterialCreateInfo(c);
cfg=c;
}
bool Std2DMaterial::CustomVertexShader(ShaderCreateInfoVertex *vsc) bool Std2DMaterial::CustomVertexShader(ShaderCreateInfoVertex *vsc)
{ {
RANGE_CHECK_RETURN_FALSE(cfg->coordinate_system) RANGE_CHECK_RETURN_FALSE(cfg->coordinate_system)
@ -50,30 +42,4 @@ bool Std2DMaterial::CustomVertexShader(ShaderCreateInfoVertex *vsc)
return(true); return(true);
} }
MaterialCreateInfo *Std2DMaterial::Create()
{
if(!BeginCustomShader())
return(nullptr);
if(mci->hasVertex())
if(!CustomVertexShader(mci->GetVS()))
return(nullptr);
if(mci->hasGeometry())
if(!CustomGeometryShader(mci->GetGS()))
return(nullptr);
if(mci->hasFragment())
if(!CustomFragmentShader(mci->GetFS()))
return(nullptr);
if(!EndCustomShader())
return(false);
if(!mci->CreateShader())
return(nullptr);
return(mci);
}
STD_MTL_NAMESPACE_END STD_MTL_NAMESPACE_END

View File

@ -1,29 +1,24 @@
#pragma once #pragma once
#include<hgl/graph/mtl/StdMaterial.h> #include<hgl/graph/mtl/StdMaterial.h>
#include<hgl/graph/mtl/Material2DCreateConfig.h>
STD_MTL_NAMESPACE_BEGIN STD_MTL_NAMESPACE_BEGIN
struct Material2DCreateConfig;
class Std2DMaterial:public StdMaterial class Std2DMaterial:public StdMaterial
{ {
protected: protected:
const Material2DCreateConfig *cfg; const Material2DCreateConfig *cfg;
MaterialCreateInfo *mci;
protected: protected:
virtual bool CustomVertexShader(ShaderCreateInfoVertex *) override; virtual bool CustomVertexShader(ShaderCreateInfoVertex *) override;
public: public:
Std2DMaterial(const Material2DCreateConfig *); Std2DMaterial(const Material2DCreateConfig *c):StdMaterial(c){cfg=c;}
virtual ~Std2DMaterial()=default; virtual ~Std2DMaterial()=default;
virtual MaterialCreateInfo *Create() override;
};//class Std2DMaterial };//class Std2DMaterial
STD_MTL_NAMESPACE_END STD_MTL_NAMESPACE_END

View File

@ -7,13 +7,6 @@
#include"common/MFRectPrimitive.h" #include"common/MFRectPrimitive.h"
STD_MTL_NAMESPACE_BEGIN STD_MTL_NAMESPACE_BEGIN
Std3DMaterial::Std3DMaterial(const Material3DCreateConfig *c)
{
mci=new MaterialCreateInfo(c);
cfg=c;
}
bool Std3DMaterial::CustomVertexShader(ShaderCreateInfoVertex *vsc) bool Std3DMaterial::CustomVertexShader(ShaderCreateInfoVertex *vsc)
{ {
vsc->AddInput(cfg->position_format,VAN::Position); vsc->AddInput(cfg->position_format,VAN::Position);
@ -50,30 +43,4 @@ bool Std3DMaterial::CustomVertexShader(ShaderCreateInfoVertex *vsc)
return(true); return(true);
} }
MaterialCreateInfo *Std3DMaterial::Create()
{
if(!BeginCustomShader())
return(nullptr);
if(mci->hasVertex())
if(!CustomVertexShader(mci->GetVS()))
return(nullptr);
if(mci->hasGeometry())
if(!CustomGeometryShader(mci->GetGS()))
return(nullptr);
if(mci->hasFragment())
if(!CustomFragmentShader(mci->GetFS()))
return(nullptr);
if(!EndCustomShader())
return(false);
if(!mci->CreateShader())
return(nullptr);
return(mci);
}
STD_MTL_NAMESPACE_END STD_MTL_NAMESPACE_END

View File

@ -1,29 +1,24 @@
#pragma once #pragma once
#include<hgl/graph/mtl/StdMaterial.h> #include<hgl/graph/mtl/StdMaterial.h>
#include<hgl/graph/mtl/Material3DCreateConfig.h>
STD_MTL_NAMESPACE_BEGIN STD_MTL_NAMESPACE_BEGIN
struct Material3DCreateConfig;
class Std3DMaterial:public StdMaterial class Std3DMaterial:public StdMaterial
{ {
protected: protected:
const Material3DCreateConfig *cfg; const Material3DCreateConfig *cfg;
MaterialCreateInfo *mci;
protected: protected:
virtual bool CustomVertexShader(ShaderCreateInfoVertex *) override; virtual bool CustomVertexShader(ShaderCreateInfoVertex *) override;
public: public:
Std3DMaterial(const Material3DCreateConfig *); Std3DMaterial(const Material3DCreateConfig *c):StdMaterial(c){cfg=c;}
virtual ~Std3DMaterial()=default; virtual ~Std3DMaterial()=default;
virtual MaterialCreateInfo *Create() override;
};//class Std3DMaterial };//class Std3DMaterial
STD_MTL_NAMESPACE_END STD_MTL_NAMESPACE_END

View File

@ -1,9 +1,37 @@
#include<hgl/graph/mtl/StdMaterial.h> #include<hgl/graph/mtl/StdMaterial.h>
#include<hgl/shadergen/MaterialCreateInfo.h>
STD_MTL_NAMESPACE_BEGIN STD_MTL_NAMESPACE_BEGIN
namespace StdMaterial::StdMaterial(const MaterialCreateConfig *mcc)
{ {
}//namespace mci=new MaterialCreateInfo(mcc);
}
MaterialCreateInfo *StdMaterial::Create()
{
if(!BeginCustomShader())
return(nullptr);
if(mci->hasVertex())
if(!CustomVertexShader(mci->GetVS()))
return(nullptr);
if(mci->hasGeometry())
if(!CustomGeometryShader(mci->GetGS()))
return(nullptr);
if(mci->hasFragment())
if(!CustomFragmentShader(mci->GetFS()))
return(nullptr);
if(!EndCustomShader())
return(nullptr);
if(!mci->CreateShader())
return(nullptr);
return(mci);
}
STD_MTL_NAMESPACE_END STD_MTL_NAMESPACE_END