moved Create to StdMaterial from Std2DMaterial and Std3DMaterial
This commit is contained in:
parent
695f1a22a8
commit
9a5cead33e
@ -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
|
||||
|
||||
|
||||
|
@ -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
|
||||
|
@ -1,29 +1,24 @@
|
||||
#pragma once
|
||||
|
||||
#include<hgl/graph/mtl/StdMaterial.h>
|
||||
#include<hgl/graph/mtl/Material2DCreateConfig.h>
|
||||
|
||||
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
|
||||
|
@ -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
|
||||
|
@ -1,29 +1,24 @@
|
||||
#pragma once
|
||||
|
||||
#include<hgl/graph/mtl/StdMaterial.h>
|
||||
#include<hgl/graph/mtl/Material3DCreateConfig.h>
|
||||
|
||||
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
|
@ -1,9 +1,37 @@
|
||||
#include<hgl/graph/mtl/StdMaterial.h>
|
||||
#include<hgl/shadergen/MaterialCreateInfo.h>
|
||||
|
||||
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
|
||||
|
Loading…
x
Reference in New Issue
Block a user