diff --git a/inc/hgl/graph/mtl/StdMaterial.h b/inc/hgl/graph/mtl/StdMaterial.h index f447ebe3..0f7e0e8b 100644 --- a/inc/hgl/graph/mtl/StdMaterial.h +++ b/inc/hgl/graph/mtl/StdMaterial.h @@ -27,9 +27,14 @@ namespace hgl }//namespace func class MaterialCreateInfo; + struct MaterialCreateConfig; class StdMaterial { + protected: + + MaterialCreateInfo *mci; + protected: virtual bool BeginCustomShader(){return true;/*some work before creating shader*/}; @@ -42,10 +47,10 @@ namespace hgl public: - StdMaterial()=default; + StdMaterial(const MaterialCreateConfig *); virtual ~StdMaterial()=default; - virtual MaterialCreateInfo *Create()=0; + virtual MaterialCreateInfo *Create(); };//class StdMaterial diff --git a/src/ShaderGen/2d/Std2DMaterial.cpp b/src/ShaderGen/2d/Std2DMaterial.cpp index f54b9cdb..64d93ece 100644 --- a/src/ShaderGen/2d/Std2DMaterial.cpp +++ b/src/ShaderGen/2d/Std2DMaterial.cpp @@ -6,14 +6,6 @@ #include"common/MFRectPrimitive.h" STD_MTL_NAMESPACE_BEGIN - -Std2DMaterial::Std2DMaterial(const Material2DCreateConfig *c) -{ - mci=new MaterialCreateInfo(c); - - cfg=c; -} - bool Std2DMaterial::CustomVertexShader(ShaderCreateInfoVertex *vsc) { RANGE_CHECK_RETURN_FALSE(cfg->coordinate_system) @@ -50,30 +42,4 @@ bool Std2DMaterial::CustomVertexShader(ShaderCreateInfoVertex *vsc) 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 diff --git a/src/ShaderGen/2d/Std2DMaterial.h b/src/ShaderGen/2d/Std2DMaterial.h index 7062aaeb..9141608c 100644 --- a/src/ShaderGen/2d/Std2DMaterial.h +++ b/src/ShaderGen/2d/Std2DMaterial.h @@ -1,29 +1,24 @@ #pragma once #include +#include STD_MTL_NAMESPACE_BEGIN -struct Material2DCreateConfig; - class Std2DMaterial:public StdMaterial { protected: const Material2DCreateConfig *cfg; - MaterialCreateInfo *mci; - protected: virtual bool CustomVertexShader(ShaderCreateInfoVertex *) override; public: - Std2DMaterial(const Material2DCreateConfig *); + Std2DMaterial(const Material2DCreateConfig *c):StdMaterial(c){cfg=c;} virtual ~Std2DMaterial()=default; - - virtual MaterialCreateInfo *Create() override; };//class Std2DMaterial STD_MTL_NAMESPACE_END diff --git a/src/ShaderGen/3d/Std3DMaterial.cpp b/src/ShaderGen/3d/Std3DMaterial.cpp index cc9a821c..6a0542b8 100644 --- a/src/ShaderGen/3d/Std3DMaterial.cpp +++ b/src/ShaderGen/3d/Std3DMaterial.cpp @@ -7,13 +7,6 @@ #include"common/MFRectPrimitive.h" STD_MTL_NAMESPACE_BEGIN -Std3DMaterial::Std3DMaterial(const Material3DCreateConfig *c) -{ - mci=new MaterialCreateInfo(c); - - cfg=c; -} - bool Std3DMaterial::CustomVertexShader(ShaderCreateInfoVertex *vsc) { vsc->AddInput(cfg->position_format,VAN::Position); @@ -50,30 +43,4 @@ bool Std3DMaterial::CustomVertexShader(ShaderCreateInfoVertex *vsc) 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 diff --git a/src/ShaderGen/3d/Std3DMaterial.h b/src/ShaderGen/3d/Std3DMaterial.h index 491a353c..cb6b85ce 100644 --- a/src/ShaderGen/3d/Std3DMaterial.h +++ b/src/ShaderGen/3d/Std3DMaterial.h @@ -1,29 +1,24 @@ #pragma once #include +#include STD_MTL_NAMESPACE_BEGIN -struct Material3DCreateConfig; - class Std3DMaterial:public StdMaterial { protected: const Material3DCreateConfig *cfg; - MaterialCreateInfo *mci; - protected: virtual bool CustomVertexShader(ShaderCreateInfoVertex *) override; public: - Std3DMaterial(const Material3DCreateConfig *); + Std3DMaterial(const Material3DCreateConfig *c):StdMaterial(c){cfg=c;} virtual ~Std3DMaterial()=default; - - virtual MaterialCreateInfo *Create() override; };//class Std3DMaterial STD_MTL_NAMESPACE_END \ No newline at end of file diff --git a/src/ShaderGen/StandardMaterial.cpp b/src/ShaderGen/StandardMaterial.cpp index 15b7c175..ba240528 100644 --- a/src/ShaderGen/StandardMaterial.cpp +++ b/src/ShaderGen/StandardMaterial.cpp @@ -1,9 +1,37 @@ #include +#include 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