Removed mtl_name from MaterialCreateConfig
This commit is contained in:
parent
5a04295f17
commit
692eeff4a3
@ -42,24 +42,12 @@ private:
|
|||||||
|
|
||||||
bool InitAutoMaterial()
|
bool InitAutoMaterial()
|
||||||
{
|
{
|
||||||
mtl::Material2DCreateConfig cfg("VertexColor2D",PrimitiveType::Triangles);
|
mtl::Material2DCreateConfig cfg(PrimitiveType::Triangles,
|
||||||
|
CoordinateSystem2D::NDC,
|
||||||
|
mtl::WithLocalToWorld::Without);
|
||||||
|
|
||||||
cfg.coordinate_system=CoordinateSystem2D::NDC;
|
|
||||||
cfg.local_to_world=false;
|
|
||||||
|
|
||||||
//AutoDelete<mtl::MaterialCreateInfo> mci=mtl::CreateVertexColor2D(&cfg); //这个是直接创建
|
|
||||||
|
|
||||||
//AutoDelete<mtl::MaterialCreateInfo> mci=mtl::CreateMaterialCreateInfo("VertexColor2D",&cfg); //这个是使用名称创建
|
|
||||||
//这两种方式都可以,上一种方式肯定是会快些,主要用于一些程序中直接写死的地方。
|
|
||||||
//而下面这种方式很明显是为了可以将使用的材质写入配置文件中。
|
|
||||||
|
|
||||||
//material_instance=CreateMaterialInstance(mci);
|
|
||||||
|
|
||||||
//下面这个方式更直接,在WorkObject中封装了CreateMaterialCreateInfo(name,...)这个方法一步到位
|
|
||||||
material_instance=CreateMaterialInstance("VertexColor2D",&cfg); //这个是使用名称创建
|
material_instance=CreateMaterialInstance("VertexColor2D",&cfg); //这个是使用名称创建
|
||||||
|
|
||||||
//再下一步我们会更直接将上面的Material2DCreateConfig写在配置文件中,这样只需要一个配置文件名称就可以完全加载了。
|
|
||||||
|
|
||||||
return material_instance;
|
return material_instance;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -74,18 +74,16 @@ namespace hgl
|
|||||||
return render_pass->CreatePipeline(args...);
|
return render_pass->CreatePipeline(args...);
|
||||||
}
|
}
|
||||||
|
|
||||||
graph::MaterialInstance *CreateMaterialInstance(const graph::mtl::MaterialCreateInfo *mci,const graph::VILConfig *vil_cfg=nullptr)
|
graph::MaterialInstance *CreateMaterialInstance(const AnsiString &mi_name,const graph::mtl::MaterialCreateInfo *mci,const graph::VILConfig *vil_cfg=nullptr)
|
||||||
{
|
{
|
||||||
return db->CreateMaterialInstance(mci,vil_cfg);
|
return db->CreateMaterialInstance(mi_name,mci,vil_cfg);
|
||||||
}
|
}
|
||||||
|
|
||||||
graph::MaterialInstance *CreateMaterialInstance(const AnsiString &mtl_name,graph::mtl::MaterialCreateConfig *mtl_cfg,const graph::VILConfig *vil_cfg=nullptr)
|
graph::MaterialInstance *CreateMaterialInstance(const AnsiString &mtl_name,graph::mtl::MaterialCreateConfig *mtl_cfg,const graph::VILConfig *vil_cfg=nullptr)
|
||||||
{
|
{
|
||||||
AutoDelete<graph::mtl::MaterialCreateInfo> mci=graph::mtl::CreateMaterialCreateInfo(
|
AutoDelete<graph::mtl::MaterialCreateInfo> mci=graph::mtl::CreateMaterialCreateInfo(GetDevAttr(),mtl_name,mtl_cfg);
|
||||||
GetDevAttr(),
|
|
||||||
"VertexColor2D",mtl_cfg); //这个是使用名称创建
|
|
||||||
|
|
||||||
return db->CreateMaterialInstance(mci,vil_cfg);
|
return db->CreateMaterialInstance(mtl_name,mci,vil_cfg);
|
||||||
}
|
}
|
||||||
|
|
||||||
graph::Primitive *CreatePrimitive( const AnsiString &name,
|
graph::Primitive *CreatePrimitive( const AnsiString &name,
|
||||||
|
@ -127,7 +127,7 @@ public: //Material
|
|||||||
|
|
||||||
const ShaderModule *CreateShaderModule(const AnsiString &shader_module_name,const ShaderCreateInfo *);
|
const ShaderModule *CreateShaderModule(const AnsiString &shader_module_name,const ShaderCreateInfo *);
|
||||||
|
|
||||||
Material * CreateMaterial(const mtl::MaterialCreateInfo *);
|
Material * CreateMaterial(const AnsiString &mtl_name,const mtl::MaterialCreateInfo *);
|
||||||
Material * LoadMaterial(const AnsiString &,mtl::Material2DCreateConfig *);
|
Material * LoadMaterial(const AnsiString &,mtl::Material2DCreateConfig *);
|
||||||
Material * LoadMaterial(const AnsiString &,mtl::Material3DCreateConfig *);
|
Material * LoadMaterial(const AnsiString &,mtl::Material3DCreateConfig *);
|
||||||
|
|
||||||
@ -141,7 +141,7 @@ public: //Material
|
|||||||
return CreateMaterialInstance(mtl,vil_cfg,data,sizeof(T));
|
return CreateMaterialInstance(mtl,vil_cfg,data,sizeof(T));
|
||||||
}
|
}
|
||||||
|
|
||||||
MaterialInstance * CreateMaterialInstance(const mtl::MaterialCreateInfo *,const VILConfig *vil_cfg=nullptr);
|
MaterialInstance * CreateMaterialInstance(const AnsiString &mtl_name,const mtl::MaterialCreateInfo *,const VILConfig *vil_cfg=nullptr);
|
||||||
|
|
||||||
Renderable * CreateRenderable(Primitive *r,MaterialInstance *mi,Pipeline *p);
|
Renderable * CreateRenderable(Primitive *r,MaterialInstance *mi,Pipeline *p);
|
||||||
Renderable * CreateRenderable(PrimitiveCreater *pc,MaterialInstance *mi,Pipeline *p);
|
Renderable * CreateRenderable(PrimitiveCreater *pc,MaterialInstance *mi,Pipeline *p);
|
||||||
|
@ -16,14 +16,17 @@ struct Material2DCreateConfig:public MaterialCreateConfig,public Comparator<Mate
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
Material2DCreateConfig(const AnsiString &name,const PrimitiveType &p):MaterialCreateConfig(name,p)
|
Material2DCreateConfig(const PrimitiveType &p,
|
||||||
|
const CoordinateSystem2D &cs=CoordinateSystem2D::NDC,
|
||||||
|
const WithLocalToWorld &l2w=WithLocalToWorld::Without)
|
||||||
|
:MaterialCreateConfig(p)
|
||||||
{
|
{
|
||||||
rt_output.color=1; //输出一个颜色
|
rt_output.color=1; //输出一个颜色
|
||||||
rt_output.depth=false; //不输出深度
|
rt_output.depth=false; //不输出深度
|
||||||
rt_output.stencil=false; //不输出stencil
|
rt_output.stencil=false; //不输出stencil
|
||||||
|
|
||||||
coordinate_system=CoordinateSystem2D::NDC;
|
coordinate_system=cs;
|
||||||
local_to_world=false;
|
local_to_world=(l2w==WithLocalToWorld::With);
|
||||||
|
|
||||||
if(prim==PrimitiveType::SolidRectangles
|
if(prim==PrimitiveType::SolidRectangles
|
||||||
||prim==PrimitiveType::WireRectangles)
|
||prim==PrimitiveType::WireRectangles)
|
||||||
|
@ -19,7 +19,7 @@ struct Material3DCreateConfig:public MaterialCreateConfig,public Comparator<Mate
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
Material3DCreateConfig(const AnsiString &name,const PrimitiveType &p):MaterialCreateConfig(name,p)
|
Material3DCreateConfig(const PrimitiveType &p):MaterialCreateConfig(p)
|
||||||
{
|
{
|
||||||
rt_output.color=1; //输出一个颜色
|
rt_output.color=1; //输出一个颜色
|
||||||
rt_output.depth=true; //不输出深度
|
rt_output.depth=true; //不输出深度
|
||||||
|
@ -14,8 +14,6 @@ class MaterialCreateInfo;
|
|||||||
*/
|
*/
|
||||||
struct MaterialCreateConfig:public Comparator<MaterialCreateConfig>
|
struct MaterialCreateConfig:public Comparator<MaterialCreateConfig>
|
||||||
{
|
{
|
||||||
AnsiString mtl_name; ///<材质名称
|
|
||||||
|
|
||||||
bool material_instance; ///<是否包含材质实例
|
bool material_instance; ///<是否包含材质实例
|
||||||
|
|
||||||
RenderTargetOutputConfig rt_output; ///<渲染目标输出配置
|
RenderTargetOutputConfig rt_output; ///<渲染目标输出配置
|
||||||
@ -26,10 +24,8 @@ struct MaterialCreateConfig:public Comparator<MaterialCreateConfig>
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
MaterialCreateConfig(const AnsiString &name,const PrimitiveType &p)
|
MaterialCreateConfig(const PrimitiveType &p)
|
||||||
{
|
{
|
||||||
mtl_name=name;
|
|
||||||
|
|
||||||
material_instance=false;
|
material_instance=false;
|
||||||
|
|
||||||
hgl_zero(rt_output);
|
hgl_zero(rt_output);
|
||||||
|
@ -23,9 +23,11 @@ namespace hgl::graph
|
|||||||
|
|
||||||
namespace mtl
|
namespace mtl
|
||||||
{
|
{
|
||||||
namespace func
|
enum class WithLocalToWorld:uint8
|
||||||
{
|
{
|
||||||
}//namespace func
|
Without=0,
|
||||||
|
With
|
||||||
|
};
|
||||||
|
|
||||||
class MaterialCreateInfo;
|
class MaterialCreateInfo;
|
||||||
struct MaterialCreateConfig;
|
struct MaterialCreateConfig;
|
||||||
|
@ -45,8 +45,6 @@ namespace hgl::graph
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
const AnsiString &GetName ()const{return config->mtl_name;}
|
|
||||||
|
|
||||||
const uint32 GetShaderStage ()const{return config->shader_stage_flag_bit;}
|
const uint32 GetShaderStage ()const{return config->shader_stage_flag_bit;}
|
||||||
|
|
||||||
bool hasShader (const VkShaderStageFlagBits ss)const{return config->shader_stage_flag_bit&ss;}
|
bool hasShader (const VkShaderStageFlagBits ss)const{return config->shader_stage_flag_bit&ss;}
|
||||||
|
@ -70,9 +70,9 @@ MaterialInstance *RenderResource::CreateMaterialInstance(Material *mtl,const VIL
|
|||||||
return mi;
|
return mi;
|
||||||
}
|
}
|
||||||
|
|
||||||
MaterialInstance *RenderResource::CreateMaterialInstance(const mtl::MaterialCreateInfo *mci,const VILConfig *vil_cfg)
|
MaterialInstance *RenderResource::CreateMaterialInstance(const AnsiString &mtl_name,const mtl::MaterialCreateInfo *mci,const VILConfig *vil_cfg)
|
||||||
{
|
{
|
||||||
Material *mtl=this->CreateMaterial(mci);
|
Material *mtl=this->CreateMaterial(mtl_name,mci);
|
||||||
|
|
||||||
if(!mtl)
|
if(!mtl)
|
||||||
return(nullptr);
|
return(nullptr);
|
||||||
|
@ -74,13 +74,11 @@ const ShaderModule *RenderResource::CreateShaderModule(const AnsiString &sm_name
|
|||||||
return sm;
|
return sm;
|
||||||
}
|
}
|
||||||
|
|
||||||
Material *RenderResource::CreateMaterial(const mtl::MaterialCreateInfo *mci)
|
Material *RenderResource::CreateMaterial(const AnsiString &mtl_name,const mtl::MaterialCreateInfo *mci)
|
||||||
{
|
{
|
||||||
if(!mci)
|
if(!mci)
|
||||||
return(nullptr);
|
return(nullptr);
|
||||||
|
|
||||||
const AnsiString &mtl_name=mci->GetName();
|
|
||||||
|
|
||||||
{
|
{
|
||||||
Material *mtl;
|
Material *mtl;
|
||||||
|
|
||||||
@ -130,7 +128,7 @@ Material *RenderResource::CreateMaterial(const mtl::MaterialCreateInfo *mci)
|
|||||||
const auto &mdi=mci->GetMDI();
|
const auto &mdi=mci->GetMDI();
|
||||||
|
|
||||||
if(mdi.GetCount()>0)
|
if(mdi.GetCount()>0)
|
||||||
mtl->desc_manager=new MaterialDescriptorManager(mci->GetName(),mdi.Get());
|
mtl->desc_manager=new MaterialDescriptorManager(mtl_name,mdi.Get());
|
||||||
}
|
}
|
||||||
|
|
||||||
mtl->pipeline_layout_data=device->CreatePipelineLayoutData(mtl->desc_manager);
|
mtl->pipeline_layout_data=device->CreatePipelineLayoutData(mtl->desc_manager);
|
||||||
@ -191,13 +189,15 @@ Material *RenderResource::LoadMaterial(const AnsiString &mtl_name,mtl::Material2
|
|||||||
{
|
{
|
||||||
AutoDelete<mtl::MaterialCreateInfo> mci=mtl::LoadMaterialFromFile(device->GetDevAttr(),mtl_name,cfg);
|
AutoDelete<mtl::MaterialCreateInfo> mci=mtl::LoadMaterialFromFile(device->GetDevAttr(),mtl_name,cfg);
|
||||||
|
|
||||||
return this->CreateMaterial(mci);
|
//这里直接用这个mtl_name有些不太对,因为同一个材质,也有可能因为不同的cfg会有不同的版本,所以这里不能直接使用mtl_name.目前只是做一个暂时方案
|
||||||
|
return this->CreateMaterial(mtl_name,mci);
|
||||||
}
|
}
|
||||||
|
|
||||||
Material *RenderResource::LoadMaterial(const AnsiString &mtl_name,mtl::Material3DCreateConfig *cfg)
|
Material *RenderResource::LoadMaterial(const AnsiString &mtl_name,mtl::Material3DCreateConfig *cfg)
|
||||||
{
|
{
|
||||||
AutoDelete<mtl::MaterialCreateInfo> mci=mtl::LoadMaterialFromFile(device->GetDevAttr(),mtl_name,cfg);
|
AutoDelete<mtl::MaterialCreateInfo> mci=mtl::LoadMaterialFromFile(device->GetDevAttr(),mtl_name,cfg);
|
||||||
|
|
||||||
return this->CreateMaterial(mci);
|
//这里直接用这个mtl_name有些不太对,因为同一个材质,也有可能因为不同的cfg会有不同的版本,所以这里不能直接使用mtl_name.目前只是做一个暂时方案
|
||||||
|
return this->CreateMaterial(mtl_name,mci);
|
||||||
}
|
}
|
||||||
VK_NAMESPACE_END
|
VK_NAMESPACE_END
|
||||||
|
@ -14,7 +14,8 @@ bool Std2DMaterial::CustomVertexShader(ShaderCreateInfoVertex *vsc)
|
|||||||
|
|
||||||
const bool is_rect=(cfg->prim==PrimitiveType::SolidRectangles||cfg->prim==PrimitiveType::WireRectangles);
|
const bool is_rect=(cfg->prim==PrimitiveType::SolidRectangles||cfg->prim==PrimitiveType::WireRectangles);
|
||||||
|
|
||||||
if(cfg->local_to_world||cfg->material_instance)
|
if(cfg->local_to_world
|
||||||
|
||cfg->material_instance)
|
||||||
{
|
{
|
||||||
mci->AddStruct(SBS_LocalToWorld);
|
mci->AddStruct(SBS_LocalToWorld);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user