将dev_attr从MaterialCreateConfig中移除改到最终的Create函数中。代码能编过,但是static自动注册失效了,待查。
This commit is contained in:
parent
4a4326826e
commit
fd1a629941
@ -1,34 +1,6 @@
|
|||||||
#include<hgl/graph/mtl/MaterialLibrary.h>
|
#include<hgl/graph/mtl/MaterialLibrary.h>
|
||||||
#include<hgl/util/JsonTool.h>
|
|
||||||
|
|
||||||
/*
|
|
||||||
|
|
||||||
material json example:
|
|
||||||
|
|
||||||
{
|
|
||||||
"name":"material_name",
|
|
||||||
"type":"2d",
|
|
||||||
"parent":"parent_material_name",
|
|
||||||
|
|
||||||
"std2d":
|
|
||||||
{
|
|
||||||
"coordinate_system":"NDC",
|
|
||||||
"local_to_world:"false",
|
|
||||||
"position_format":"vec2"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
|
|
||||||
STD_MTL_NAMESPACE_BEGIN
|
STD_MTL_NAMESPACE_BEGIN
|
||||||
|
|
||||||
MaterialCreateInfo *Load2DMaterialFromJson(const Json::Value& json_root)
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
MaterialCreateInfo *LoadMaterialFromJson(const Json::Value &json_root)
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
STD_MTL_NAMESPACE_END
|
STD_MTL_NAMESPACE_END
|
||||||
|
@ -42,7 +42,7 @@ private:
|
|||||||
|
|
||||||
bool InitAutoMaterial()
|
bool InitAutoMaterial()
|
||||||
{
|
{
|
||||||
mtl::Material2DCreateConfig cfg(GetDeviceAttribute(),"VertexColor2D",PrimitiveType::Triangles);
|
mtl::Material2DCreateConfig cfg("VertexColor2D",PrimitiveType::Triangles);
|
||||||
|
|
||||||
cfg.coordinate_system=CoordinateSystem2D::NDC;
|
cfg.coordinate_system=CoordinateSystem2D::NDC;
|
||||||
cfg.local_to_world=false;
|
cfg.local_to_world=false;
|
||||||
|
@ -81,7 +81,9 @@ namespace hgl
|
|||||||
|
|
||||||
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("VertexColor2D",mtl_cfg); //这个是使用名称创建
|
AutoDelete<graph::mtl::MaterialCreateInfo> mci=graph::mtl::CreateMaterialCreateInfo(
|
||||||
|
GetDeviceAttribute(),
|
||||||
|
"VertexColor2D",mtl_cfg); //这个是使用名称创建
|
||||||
|
|
||||||
return db->CreateMaterialInstance(mci,vil_cfg);
|
return db->CreateMaterialInstance(mci,vil_cfg);
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
#ifndef HGL_GRAPH_MTL_2D_CREATE_CONFIG_INCLUDE
|
#pragma once
|
||||||
#define HGL_GRAPH_MTL_2D_CREATE_CONFIG_INCLUDE
|
|
||||||
|
|
||||||
#include<hgl/graph/mtl/MaterialConfig.h>
|
#include<hgl/graph/mtl/MaterialConfig.h>
|
||||||
#include<hgl/graph/CoordinateSystem.h>
|
#include<hgl/graph/CoordinateSystem.h>
|
||||||
@ -16,7 +15,7 @@ struct Material2DCreateConfig:public MaterialCreateConfig,public Comparator<Mate
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
Material2DCreateConfig(const GPUDeviceAttribute *da,const AnsiString &name,const PrimitiveType &p):MaterialCreateConfig(da,name,p)
|
Material2DCreateConfig(const AnsiString &name,const PrimitiveType &p):MaterialCreateConfig(name,p)
|
||||||
{
|
{
|
||||||
rt_output.color=1; //输出一个颜色
|
rt_output.color=1; //输出一个颜色
|
||||||
rt_output.depth=false; //不输出深度
|
rt_output.depth=false; //不输出深度
|
||||||
@ -50,19 +49,14 @@ public:
|
|||||||
}
|
}
|
||||||
};//struct Material2DCreateConfig:public MaterialCreateConfig
|
};//struct Material2DCreateConfig:public MaterialCreateConfig
|
||||||
|
|
||||||
MaterialCreateInfo *CreateVertexColor2D(const Material2DCreateConfig *);
|
MaterialCreateInfo *CreateVertexColor2D(const GPUDeviceAttribute *dev_attr,const Material2DCreateConfig *);
|
||||||
MaterialCreateInfo *CreatePureColor2D(const Material2DCreateConfig *);
|
MaterialCreateInfo *CreatePureColor2D(const GPUDeviceAttribute *dev_attr,const Material2DCreateConfig *);
|
||||||
|
|
||||||
struct MaterialLerpLineConfig
|
MaterialCreateInfo *CreateLerpLine2D(const GPUDeviceAttribute *dev_attr,const Material2DCreateConfig *);
|
||||||
{
|
|
||||||
|
|
||||||
};
|
MaterialCreateInfo *CreatePureTexture2D(const GPUDeviceAttribute *dev_attr,const Material2DCreateConfig *);
|
||||||
|
MaterialCreateInfo *CreateRectTexture2D(const GPUDeviceAttribute *dev_attr,Material2DCreateConfig *);
|
||||||
MaterialCreateInfo *CreateLerpLine2D(const Material2DCreateConfig *);
|
MaterialCreateInfo *CreateRectTexture2DArray(const GPUDeviceAttribute *dev_attr,Material2DCreateConfig *);
|
||||||
|
|
||||||
MaterialCreateInfo *CreatePureTexture2D(const Material2DCreateConfig *);
|
|
||||||
MaterialCreateInfo *CreateRectTexture2D(Material2DCreateConfig *);
|
|
||||||
MaterialCreateInfo *CreateRectTexture2DArray(Material2DCreateConfig *);
|
|
||||||
|
|
||||||
// 为什么有了LoadMaterialFromFile,还需要保留以上Create系列函数?
|
// 为什么有了LoadMaterialFromFile,还需要保留以上Create系列函数?
|
||||||
|
|
||||||
@ -71,10 +65,11 @@ MaterialCreateInfo *CreateRectTexture2DArray(Material2DCreateConfig *);
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 从文件加载材质
|
* 从文件加载材质
|
||||||
|
* @param dev_attr 设备属性
|
||||||
* @param mtl_name 材质名称
|
* @param mtl_name 材质名称
|
||||||
* @param cfg 材质创建参数
|
* @param cfg 材质创建参数
|
||||||
* @return 材质创建信息
|
* @return 材质创建信息
|
||||||
*/
|
*/
|
||||||
MaterialCreateInfo *LoadMaterialFromFile(const AnsiString &mtl_name,Material2DCreateConfig *cfg); ///<从文件加载材质
|
MaterialCreateInfo *LoadMaterialFromFile(const GPUDeviceAttribute *dev_attr,const AnsiString &mtl_name,Material2DCreateConfig *cfg); ///<从文件加载材质
|
||||||
|
|
||||||
STD_MTL_NAMESPACE_END
|
STD_MTL_NAMESPACE_END
|
||||||
#endif//HGL_GRAPH_MTL_2D_CREATE_CONFIG_INCLUDE
|
|
||||||
|
@ -18,7 +18,7 @@ struct Material3DCreateConfig:public MaterialCreateConfig,public Comparator<Mate
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
Material3DCreateConfig(const GPUDeviceAttribute *da,const AnsiString &name,const PrimitiveType &p):MaterialCreateConfig(da,name,p)
|
Material3DCreateConfig(const AnsiString &name,const PrimitiveType &p):MaterialCreateConfig(name,p)
|
||||||
{
|
{
|
||||||
rt_output.color=1; //输出一个颜色
|
rt_output.color=1; //输出一个颜色
|
||||||
rt_output.depth=true; //不输出深度
|
rt_output.depth=true; //不输出深度
|
||||||
@ -50,10 +50,10 @@ public:
|
|||||||
}
|
}
|
||||||
};//struct Material3DCreateConfig:public MaterialCreateConfig
|
};//struct Material3DCreateConfig:public MaterialCreateConfig
|
||||||
|
|
||||||
MaterialCreateInfo *CreateVertexColor3D(const Material3DCreateConfig *);
|
MaterialCreateInfo *CreateVertexColor3D(const GPUDeviceAttribute *dev_attr,const Material3DCreateConfig *);
|
||||||
MaterialCreateInfo *CreateVertexLuminance3D(const Material3DCreateConfig *);
|
MaterialCreateInfo *CreateVertexLuminance3D(const GPUDeviceAttribute *dev_attr,const Material3DCreateConfig *);
|
||||||
|
|
||||||
MaterialCreateInfo *CreateMaterialGizmo3D(const Material3DCreateConfig *cfg);
|
MaterialCreateInfo *CreateMaterialGizmo3D(const GPUDeviceAttribute *dev_attr,const Material3DCreateConfig *cfg);
|
||||||
|
|
||||||
struct BillboardMaterialCreateConfig:public Material3DCreateConfig
|
struct BillboardMaterialCreateConfig:public Material3DCreateConfig
|
||||||
{
|
{
|
||||||
@ -66,7 +66,7 @@ public:
|
|||||||
using Material3DCreateConfig::Material3DCreateConfig;
|
using Material3DCreateConfig::Material3DCreateConfig;
|
||||||
};
|
};
|
||||||
|
|
||||||
MaterialCreateInfo *CreateBillboard2D(mtl::BillboardMaterialCreateConfig *);
|
MaterialCreateInfo *CreateBillboard2D(const GPUDeviceAttribute *dev_attr,mtl::BillboardMaterialCreateConfig *);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 从文件加载材质
|
* 从文件加载材质
|
||||||
@ -74,5 +74,5 @@ MaterialCreateInfo *CreateBillboard2D(mtl::BillboardMaterialCreateConfig *);
|
|||||||
* @param cfg 材质创建参数
|
* @param cfg 材质创建参数
|
||||||
* @return 材质创建信息
|
* @return 材质创建信息
|
||||||
*/
|
*/
|
||||||
MaterialCreateInfo *LoadMaterialFromFile(const AnsiString &name,Material3DCreateConfig *cfg);
|
MaterialCreateInfo *LoadMaterialFromFile(const GPUDeviceAttribute *dev_attr,const AnsiString &name,Material3DCreateConfig *cfg);
|
||||||
STD_MTL_NAMESPACE_END
|
STD_MTL_NAMESPACE_END
|
||||||
|
@ -14,8 +14,6 @@ class MaterialCreateInfo;
|
|||||||
*/
|
*/
|
||||||
struct MaterialCreateConfig:public Comparator<MaterialCreateConfig>
|
struct MaterialCreateConfig:public Comparator<MaterialCreateConfig>
|
||||||
{
|
{
|
||||||
const GPUDeviceAttribute * dev_attr; ///<GPU设备属性(目前仅用于获取UBO/SSBO数值,未来可以考虑干掉)
|
|
||||||
|
|
||||||
AnsiString mtl_name; ///<材质名称
|
AnsiString mtl_name; ///<材质名称
|
||||||
|
|
||||||
bool material_instance; ///<是否包含材质实例
|
bool material_instance; ///<是否包含材质实例
|
||||||
@ -28,10 +26,8 @@ struct MaterialCreateConfig:public Comparator<MaterialCreateConfig>
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
MaterialCreateConfig(const GPUDeviceAttribute *da,const AnsiString &name,const PrimitiveType &p)
|
MaterialCreateConfig(const AnsiString &name,const PrimitiveType &p)
|
||||||
{
|
{
|
||||||
dev_attr=da;
|
|
||||||
|
|
||||||
mtl_name=name;
|
mtl_name=name;
|
||||||
|
|
||||||
material_instance=false;
|
material_instance=false;
|
||||||
|
@ -27,7 +27,7 @@ public:
|
|||||||
|
|
||||||
//virtual const CoordinateSystem2D get2DCoordinateSystem()const=0;
|
//virtual const CoordinateSystem2D get2DCoordinateSystem()const=0;
|
||||||
|
|
||||||
virtual MaterialCreateInfo *Create(MaterialCreateConfig *)=0;
|
virtual MaterialCreateInfo *Create(const GPUDeviceAttribute *dev_attr,MaterialCreateConfig *)=0;
|
||||||
|
|
||||||
};//class MaterialFactory
|
};//class MaterialFactory
|
||||||
|
|
||||||
@ -57,28 +57,28 @@ public:
|
|||||||
return mtl_name; \
|
return mtl_name; \
|
||||||
} \
|
} \
|
||||||
\
|
\
|
||||||
MaterialCreateInfo *Create(MaterialCreateConfig *cfg) override \
|
MaterialCreateInfo *Create(const GPUDeviceAttribute *dev_attr,MaterialCreateConfig *cfg) override \
|
||||||
{ \
|
{ \
|
||||||
return create_func((cfg_type *)cfg); \
|
return create_func(dev_attr,(cfg_type *)cfg); \
|
||||||
} \
|
} \
|
||||||
}; \
|
}; \
|
||||||
\
|
\
|
||||||
DEFINE_MATERIAL_FACTORY(name)
|
DEFINE_MATERIAL_FACTORY(name)
|
||||||
|
|
||||||
MaterialCreateInfo *CreateMaterialCreateInfo(const MaterialName &,MaterialCreateConfig *cfg);
|
MaterialCreateInfo *CreateMaterialCreateInfo(const GPUDeviceAttribute *dev_attr,const MaterialName &,MaterialCreateConfig *cfg);
|
||||||
|
|
||||||
inline MaterialCreateInfo *CreateMaterialCreateInfo(const char *mtl_name,MaterialCreateConfig *cfg)
|
inline MaterialCreateInfo *CreateMaterialCreateInfo(const GPUDeviceAttribute *dev_attr,const char *mtl_name,MaterialCreateConfig *cfg)
|
||||||
{
|
{
|
||||||
MaterialName mtl_id_name(mtl_name);
|
MaterialName mtl_id_name(mtl_name);
|
||||||
|
|
||||||
return CreateMaterialCreateInfo(mtl_id_name,cfg);
|
return CreateMaterialCreateInfo(dev_attr,mtl_id_name,cfg);
|
||||||
}
|
}
|
||||||
|
|
||||||
inline MaterialCreateInfo *CreateMaterialCreateInfo(const AnsiString &mtl_name,MaterialCreateConfig *cfg)
|
inline MaterialCreateInfo *CreateMaterialCreateInfo(const GPUDeviceAttribute *dev_attr,const AnsiString &mtl_name,MaterialCreateConfig *cfg)
|
||||||
{
|
{
|
||||||
MaterialName mtl_id_name(mtl_name);
|
MaterialName mtl_id_name(mtl_name);
|
||||||
|
|
||||||
return CreateMaterialCreateInfo(mtl_id_name,cfg);
|
return CreateMaterialCreateInfo(dev_attr,mtl_id_name,cfg);
|
||||||
}
|
}
|
||||||
|
|
||||||
STD_MTL_NAMESPACE_END
|
STD_MTL_NAMESPACE_END
|
||||||
|
@ -19,6 +19,7 @@ namespace hgl::graph
|
|||||||
class ShaderCreateInfoVertex;
|
class ShaderCreateInfoVertex;
|
||||||
class ShaderCreateInfoGeometry;
|
class ShaderCreateInfoGeometry;
|
||||||
class ShaderCreateInfoFragment;
|
class ShaderCreateInfoFragment;
|
||||||
|
struct GPUDeviceAttribute;
|
||||||
|
|
||||||
namespace mtl
|
namespace mtl
|
||||||
{
|
{
|
||||||
@ -50,7 +51,7 @@ namespace hgl::graph
|
|||||||
StdMaterial(const MaterialCreateConfig *);
|
StdMaterial(const MaterialCreateConfig *);
|
||||||
virtual ~StdMaterial()=default;
|
virtual ~StdMaterial()=default;
|
||||||
|
|
||||||
virtual MaterialCreateInfo *Create();
|
virtual MaterialCreateInfo *Create(const GPUDeviceAttribute *dev_attr);
|
||||||
};//class StdMaterial
|
};//class StdMaterial
|
||||||
}//namespace mtl
|
}//namespace mtl
|
||||||
}//namespace hgl::graph
|
}//namespace hgl::graph
|
||||||
|
@ -89,7 +89,7 @@ namespace hgl::graph
|
|||||||
|
|
||||||
bool AddSampler(const VkShaderStageFlagBits flag_bits,const DescriptorSetType set_type,const SamplerType &st,const AnsiString &name);
|
bool AddSampler(const VkShaderStageFlagBits flag_bits,const DescriptorSetType set_type,const SamplerType &st,const AnsiString &name);
|
||||||
|
|
||||||
bool CreateShader();
|
bool CreateShader(const GPUDeviceAttribute *dev_attr);
|
||||||
};//class MaterialCreateInfo
|
};//class MaterialCreateInfo
|
||||||
}//namespace mtl
|
}//namespace mtl
|
||||||
}//namespace hgl::graph
|
}//namespace hgl::graph
|
||||||
|
@ -183,20 +183,20 @@ Material *RenderResource::CreateMaterial(const mtl::MaterialCreateInfo *mci)
|
|||||||
|
|
||||||
namespace mtl
|
namespace mtl
|
||||||
{
|
{
|
||||||
MaterialCreateInfo *LoadMaterialFromFile(const AnsiString &, Material2DCreateConfig *);
|
MaterialCreateInfo *LoadMaterialFromFile(const GPUDeviceAttribute *dev_attr,const AnsiString &, Material2DCreateConfig *);
|
||||||
MaterialCreateInfo *LoadMaterialFromFile(const AnsiString &, Material3DCreateConfig *);
|
MaterialCreateInfo *LoadMaterialFromFile(const GPUDeviceAttribute *dev_attr,const AnsiString &, Material3DCreateConfig *);
|
||||||
}
|
}
|
||||||
|
|
||||||
Material *RenderResource::LoadMaterial(const AnsiString &mtl_name,mtl::Material2DCreateConfig *cfg)
|
Material *RenderResource::LoadMaterial(const AnsiString &mtl_name,mtl::Material2DCreateConfig *cfg)
|
||||||
{
|
{
|
||||||
AutoDelete<mtl::MaterialCreateInfo> mci=mtl::LoadMaterialFromFile(mtl_name,cfg);
|
AutoDelete<mtl::MaterialCreateInfo> mci=mtl::LoadMaterialFromFile(device->GetDeviceAttribute(),mtl_name,cfg);
|
||||||
|
|
||||||
return this->CreateMaterial(mci);
|
return this->CreateMaterial(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(mtl_name,cfg);
|
AutoDelete<mtl::MaterialCreateInfo> mci=mtl::LoadMaterialFromFile(device->GetDeviceAttribute(),mtl_name,cfg);
|
||||||
|
|
||||||
return this->CreateMaterial(mci);
|
return this->CreateMaterial(mci);
|
||||||
}
|
}
|
||||||
|
@ -63,10 +63,10 @@ void main()
|
|||||||
};//class MaterialPureColor2D:public Std2DMaterial
|
};//class MaterialPureColor2D:public Std2DMaterial
|
||||||
}//namespace
|
}//namespace
|
||||||
|
|
||||||
MaterialCreateInfo *CreatePureColor2D(const Material2DCreateConfig *cfg)
|
MaterialCreateInfo *CreatePureColor2D(const GPUDeviceAttribute *dev_attr,const Material2DCreateConfig *cfg)
|
||||||
{
|
{
|
||||||
MaterialPureColor2D mpc2d(cfg);
|
MaterialPureColor2D mpc2d(cfg);
|
||||||
|
|
||||||
return mpc2d.Create();
|
return mpc2d.Create(dev_attr);
|
||||||
}
|
}
|
||||||
STD_MTL_NAMESPACE_END
|
STD_MTL_NAMESPACE_END
|
||||||
|
@ -55,10 +55,10 @@ void main()
|
|||||||
};//class MaterialPureTexture2D:public Std2DMaterial
|
};//class MaterialPureTexture2D:public Std2DMaterial
|
||||||
}//namespace
|
}//namespace
|
||||||
|
|
||||||
MaterialCreateInfo *CreatePureTexture2D(const mtl::Material2DCreateConfig *cfg)
|
MaterialCreateInfo *CreatePureTexture2D(const GPUDeviceAttribute *dev_attr,const mtl::Material2DCreateConfig *cfg)
|
||||||
{
|
{
|
||||||
MaterialPureTexture2D mvc2d(cfg);
|
MaterialPureTexture2D mvc2d(cfg);
|
||||||
|
|
||||||
return mvc2d.Create();
|
return mvc2d.Create(dev_attr);
|
||||||
}
|
}
|
||||||
STD_MTL_NAMESPACE_END
|
STD_MTL_NAMESPACE_END
|
||||||
|
@ -82,7 +82,7 @@ void main()
|
|||||||
};//class MaterialRectTexture2D:public Std2DMaterial
|
};//class MaterialRectTexture2D:public Std2DMaterial
|
||||||
}//namespace
|
}//namespace
|
||||||
|
|
||||||
MaterialCreateInfo *CreateRectTexture2D(mtl::Material2DCreateConfig *cfg)
|
MaterialCreateInfo *CreateRectTexture2D(const GPUDeviceAttribute *dev_attr,mtl::Material2DCreateConfig *cfg)
|
||||||
{
|
{
|
||||||
if(!cfg)
|
if(!cfg)
|
||||||
return(nullptr);
|
return(nullptr);
|
||||||
@ -91,6 +91,6 @@ MaterialCreateInfo *CreateRectTexture2D(mtl::Material2DCreateConfig *cfg)
|
|||||||
|
|
||||||
MaterialRectTexture2D mvc2d(cfg);
|
MaterialRectTexture2D mvc2d(cfg);
|
||||||
|
|
||||||
return mvc2d.Create();
|
return mvc2d.Create(dev_attr);
|
||||||
}
|
}
|
||||||
STD_MTL_NAMESPACE_END
|
STD_MTL_NAMESPACE_END
|
||||||
|
@ -98,7 +98,7 @@ void main()
|
|||||||
};//class MaterialRectTexture2D:public Std2DMaterial
|
};//class MaterialRectTexture2D:public Std2DMaterial
|
||||||
}//namespace
|
}//namespace
|
||||||
|
|
||||||
MaterialCreateInfo *CreateRectTexture2DArray(mtl::Material2DCreateConfig *cfg)
|
MaterialCreateInfo *CreateRectTexture2DArray(const GPUDeviceAttribute *dev_attr,mtl::Material2DCreateConfig *cfg)
|
||||||
{
|
{
|
||||||
if(!cfg)
|
if(!cfg)
|
||||||
return(nullptr);
|
return(nullptr);
|
||||||
@ -107,6 +107,6 @@ MaterialCreateInfo *CreateRectTexture2DArray(mtl::Material2DCreateConfig *cfg)
|
|||||||
|
|
||||||
MaterialRectTexture2D mvc2d(cfg);
|
MaterialRectTexture2D mvc2d(cfg);
|
||||||
|
|
||||||
return mvc2d.Create();
|
return mvc2d.Create(dev_attr);
|
||||||
}
|
}
|
||||||
STD_MTL_NAMESPACE_END
|
STD_MTL_NAMESPACE_END
|
||||||
|
@ -55,32 +55,33 @@ void main()
|
|||||||
};//class MaterialVertexColor2D:public Std2DMaterial
|
};//class MaterialVertexColor2D:public Std2DMaterial
|
||||||
}//namespace
|
}//namespace
|
||||||
|
|
||||||
MaterialCreateInfo *CreateVertexColor2D(const Material2DCreateConfig *cfg)
|
MaterialCreateInfo *CreateVertexColor2D(const GPUDeviceAttribute *dev_attr,const Material2DCreateConfig *cfg)
|
||||||
{
|
{
|
||||||
MaterialVertexColor2D mvc2d(cfg);
|
MaterialVertexColor2D mvc2d(cfg);
|
||||||
|
|
||||||
return mvc2d.Create();
|
return mvc2d.Create(dev_attr);
|
||||||
}
|
}
|
||||||
|
|
||||||
//class MaterialFactoryVertexColor2D:public MaterialFactory
|
class MaterialFactoryVertexColor2D:public MaterialFactory
|
||||||
//{
|
{
|
||||||
//public:
|
public:
|
||||||
//
|
|
||||||
// const MaterialName &GetName()const override
|
|
||||||
// {
|
|
||||||
// static MaterialName mtl_name("VertexColor2D");
|
|
||||||
//
|
|
||||||
// return mtl_name;
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// MaterialCreateInfo *Create(MaterialCreateConfig *cfg) override
|
|
||||||
// {
|
|
||||||
// return CreateVertexColor2D((Material2DCreateConfig *)cfg);
|
|
||||||
// }
|
|
||||||
//};//class MaterialFactoryVertexColor2D:public MaterialFactory
|
|
||||||
//
|
|
||||||
//DEFINE_MATERIAL_FACTORY(VertexColor2D)
|
|
||||||
|
|
||||||
DEFINE_MATERIAL_FACTORY_CLASS(VertexColor2D,CreateVertexColor2D,Material2DCreateConfig)
|
const MaterialName &GetName()const override
|
||||||
|
{
|
||||||
|
static MaterialName mtl_name("VertexColor2D");
|
||||||
|
|
||||||
|
return mtl_name;
|
||||||
|
}
|
||||||
|
|
||||||
|
MaterialCreateInfo *Create(const GPUDeviceAttribute *dev_attr,MaterialCreateConfig *cfg) override
|
||||||
|
{
|
||||||
|
return CreateVertexColor2D(dev_attr,(Material2DCreateConfig *)cfg);
|
||||||
|
}
|
||||||
|
};//class MaterialFactoryVertexColor2D:public MaterialFactory
|
||||||
|
|
||||||
|
static RegistryMaterialFactoryClass<MaterialFactoryVertexColor2D> MaterialFactoryInstance_VertexColor2D;
|
||||||
|
|
||||||
|
|
||||||
|
//DEFINE_MATERIAL_FACTORY_CLASS(VertexColor2D,CreateVertexColor2D,Material2DCreateConfig)
|
||||||
|
|
||||||
STD_MTL_NAMESPACE_END
|
STD_MTL_NAMESPACE_END
|
||||||
|
@ -102,7 +102,7 @@ namespace
|
|||||||
|
|
||||||
material_file::MaterialFileData *LoadMaterialDataFromFile(const AnsiString &mtl_filename);
|
material_file::MaterialFileData *LoadMaterialDataFromFile(const AnsiString &mtl_filename);
|
||||||
|
|
||||||
MaterialCreateInfo *LoadMaterialFromFile(const AnsiString &name,Material2DCreateConfig *cfg)
|
MaterialCreateInfo *LoadMaterialFromFile(const GPUDeviceAttribute *dev_attr,const AnsiString &name,Material2DCreateConfig *cfg)
|
||||||
{
|
{
|
||||||
if(name.IsEmpty()||!cfg)
|
if(name.IsEmpty()||!cfg)
|
||||||
return(nullptr);
|
return(nullptr);
|
||||||
@ -119,6 +119,6 @@ MaterialCreateInfo *LoadMaterialFromFile(const AnsiString &name,Material2DCreate
|
|||||||
|
|
||||||
Std2DMaterialLoader mtl(mfd,cfg);
|
Std2DMaterialLoader mtl(mfd,cfg);
|
||||||
|
|
||||||
return mtl.Create();
|
return mtl.Create(dev_attr);
|
||||||
}
|
}
|
||||||
STD_MTL_NAMESPACE_END
|
STD_MTL_NAMESPACE_END
|
||||||
|
@ -86,7 +86,7 @@ void main()
|
|||||||
};//class MaterialBillboard2DDynamicSize:public Std3DMaterial
|
};//class MaterialBillboard2DDynamicSize:public Std3DMaterial
|
||||||
}//namespace
|
}//namespace
|
||||||
|
|
||||||
MaterialCreateInfo *CreateBillboard2DDynamic(mtl::BillboardMaterialCreateConfig *cfg)
|
MaterialCreateInfo *CreateBillboard2DDynamic(const GPUDeviceAttribute *dev_attr,mtl::BillboardMaterialCreateConfig *cfg)
|
||||||
{
|
{
|
||||||
if(!cfg)
|
if(!cfg)
|
||||||
return(nullptr);
|
return(nullptr);
|
||||||
@ -97,6 +97,6 @@ MaterialCreateInfo *CreateBillboard2DDynamic(mtl::BillboardMaterialCreateConfig
|
|||||||
|
|
||||||
MaterialBillboard2DDynamicSize mtl_billbard_2d(cfg);
|
MaterialBillboard2DDynamicSize mtl_billbard_2d(cfg);
|
||||||
|
|
||||||
return mtl_billbard_2d.Create();
|
return mtl_billbard_2d.Create(dev_attr);
|
||||||
}
|
}
|
||||||
STD_MTL_NAMESPACE_END
|
STD_MTL_NAMESPACE_END
|
||||||
|
@ -96,7 +96,7 @@ void main()
|
|||||||
};//class MaterialBillboard2DFixedSize:public Std3DMaterial
|
};//class MaterialBillboard2DFixedSize:public Std3DMaterial
|
||||||
}//namespace
|
}//namespace
|
||||||
|
|
||||||
MaterialCreateInfo *CreateBillboard2DFixedSize(mtl::BillboardMaterialCreateConfig *cfg)
|
MaterialCreateInfo *CreateBillboard2DFixedSize(const GPUDeviceAttribute *dev_attr,mtl::BillboardMaterialCreateConfig *cfg)
|
||||||
{
|
{
|
||||||
if(!cfg)
|
if(!cfg)
|
||||||
return(nullptr);
|
return(nullptr);
|
||||||
@ -107,6 +107,6 @@ MaterialCreateInfo *CreateBillboard2DFixedSize(mtl::BillboardMaterialCreateConfi
|
|||||||
|
|
||||||
MaterialBillboard2DFixedSize mtl_billbard_2d_fixed_size(cfg);
|
MaterialBillboard2DFixedSize mtl_billbard_2d_fixed_size(cfg);
|
||||||
|
|
||||||
return mtl_billbard_2d_fixed_size.Create();
|
return mtl_billbard_2d_fixed_size.Create(dev_attr);
|
||||||
}
|
}
|
||||||
STD_MTL_NAMESPACE_END
|
STD_MTL_NAMESPACE_END
|
||||||
|
@ -93,10 +93,10 @@ void main()
|
|||||||
};//class MaterialGizmo3D:public Std3DMaterial
|
};//class MaterialGizmo3D:public Std3DMaterial
|
||||||
}//namespace
|
}//namespace
|
||||||
|
|
||||||
MaterialCreateInfo *CreateMaterialGizmo3D(const Material3DCreateConfig *cfg)
|
MaterialCreateInfo *CreateMaterialGizmo3D(const GPUDeviceAttribute *dev_attr,const Material3DCreateConfig *cfg)
|
||||||
{
|
{
|
||||||
MaterialGizmo3D mg3d(cfg);
|
MaterialGizmo3D mg3d(cfg);
|
||||||
|
|
||||||
return mg3d.Create();
|
return mg3d.Create(dev_attr);
|
||||||
}
|
}
|
||||||
STD_MTL_NAMESPACE_END
|
STD_MTL_NAMESPACE_END
|
||||||
|
@ -54,10 +54,10 @@ void main()
|
|||||||
};//class MaterialVertexColor3D:public Std3DMaterial
|
};//class MaterialVertexColor3D:public Std3DMaterial
|
||||||
}//namespace
|
}//namespace
|
||||||
|
|
||||||
MaterialCreateInfo *CreateVertexColor3D(const Material3DCreateConfig *cfg)
|
MaterialCreateInfo *CreateVertexColor3D(const GPUDeviceAttribute *dev_attr,const Material3DCreateConfig *cfg)
|
||||||
{
|
{
|
||||||
MaterialVertexColor3D mvc3d(cfg);
|
MaterialVertexColor3D mvc3d(cfg);
|
||||||
|
|
||||||
return mvc3d.Create();
|
return mvc3d.Create(dev_attr);
|
||||||
}
|
}
|
||||||
STD_MTL_NAMESPACE_END
|
STD_MTL_NAMESPACE_END
|
||||||
|
@ -68,10 +68,10 @@ void main()
|
|||||||
};//class MaterialVertexLuminance3D:public Std3DMaterial
|
};//class MaterialVertexLuminance3D:public Std3DMaterial
|
||||||
}//namespace
|
}//namespace
|
||||||
|
|
||||||
MaterialCreateInfo *CreateVertexLuminance3D(const Material3DCreateConfig *cfg)
|
MaterialCreateInfo *CreateVertexLuminance3D(const GPUDeviceAttribute *dev_attr,const Material3DCreateConfig *cfg)
|
||||||
{
|
{
|
||||||
MaterialVertexLuminance3D mvc3d(cfg);
|
MaterialVertexLuminance3D mvc3d(cfg);
|
||||||
|
|
||||||
return mvc3d.Create();
|
return mvc3d.Create(dev_attr);
|
||||||
}
|
}
|
||||||
STD_MTL_NAMESPACE_END
|
STD_MTL_NAMESPACE_END
|
||||||
|
@ -103,7 +103,7 @@ namespace
|
|||||||
|
|
||||||
material_file::MaterialFileData *LoadMaterialDataFromFile(const AnsiString &mtl_filename);
|
material_file::MaterialFileData *LoadMaterialDataFromFile(const AnsiString &mtl_filename);
|
||||||
|
|
||||||
MaterialCreateInfo *LoadMaterialFromFile(const AnsiString &name,Material3DCreateConfig *cfg)
|
MaterialCreateInfo *LoadMaterialFromFile(const GPUDeviceAttribute *dev_attr,const AnsiString &name,Material3DCreateConfig *cfg)
|
||||||
{
|
{
|
||||||
if(name.IsEmpty()||!cfg)
|
if(name.IsEmpty()||!cfg)
|
||||||
return (nullptr);
|
return (nullptr);
|
||||||
@ -120,6 +120,6 @@ MaterialCreateInfo *LoadMaterialFromFile(const AnsiString &name,Material3DCreate
|
|||||||
|
|
||||||
Std3DMaterialLoader mtl(mfd,cfg);
|
Std3DMaterialLoader mtl(mfd,cfg);
|
||||||
|
|
||||||
return mtl.Create();
|
return mtl.Create(dev_attr);
|
||||||
}
|
}
|
||||||
STD_MTL_NAMESPACE_END
|
STD_MTL_NAMESPACE_END
|
||||||
|
@ -17,8 +17,8 @@ MaterialCreateInfo::MaterialCreateInfo(const MaterialCreateConfig *mc)
|
|||||||
if(hasGeometry ())shader_map.Add(geom=new ShaderCreateInfoGeometry(&mdi));else geom=nullptr;
|
if(hasGeometry ())shader_map.Add(geom=new ShaderCreateInfoGeometry(&mdi));else geom=nullptr;
|
||||||
if(hasFragment ())shader_map.Add(frag=new ShaderCreateInfoFragment(&mdi));else frag=nullptr;
|
if(hasFragment ())shader_map.Add(frag=new ShaderCreateInfoFragment(&mdi));else frag=nullptr;
|
||||||
|
|
||||||
ubo_range=config->dev_attr->physical_device->GetUBORange(); //Mali-T系/G71为16k,nVidia和Mali-G系列除G71外为64k,Intel/PowerVR为128M,AMD无限制。
|
ubo_range=0;
|
||||||
ssbo_range=config->dev_attr->physical_device->GetSSBORange();
|
ssbo_range=0;
|
||||||
|
|
||||||
{
|
{
|
||||||
mi_data_bytes=0;
|
mi_data_bytes=0;
|
||||||
@ -225,11 +225,14 @@ bool MaterialCreateInfo::SetLocalToWorld(const uint32_t shader_stage_flag_bits)
|
|||||||
return(true);
|
return(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool MaterialCreateInfo::CreateShader()
|
bool MaterialCreateInfo::CreateShader(const GPUDeviceAttribute *dev_attr)
|
||||||
{
|
{
|
||||||
if(shader_map.IsEmpty())
|
if(shader_map.IsEmpty())
|
||||||
return(false);
|
return(false);
|
||||||
|
|
||||||
|
ubo_range=dev_attr->physical_device->GetUBORange(); //Mali-T系/G71为16k,nVidia和Mali-G系列除G71外为64k,Intel/PowerVR为128M,AMD无限制。
|
||||||
|
ssbo_range=dev_attr->physical_device->GetSSBORange();
|
||||||
|
|
||||||
mdi.Resort();
|
mdi.Resort();
|
||||||
|
|
||||||
ShaderCreateInfo *sc,*last=nullptr;
|
ShaderCreateInfo *sc,*last=nullptr;
|
||||||
|
@ -15,6 +15,8 @@ namespace material_file
|
|||||||
|
|
||||||
constexpr size_t SHADER_RESOURCE_NAME_MAX_LENGTH=VERTEX_ATTRIB_NAME_MAX_LENGTH;
|
constexpr size_t SHADER_RESOURCE_NAME_MAX_LENGTH=VERTEX_ATTRIB_NAME_MAX_LENGTH;
|
||||||
|
|
||||||
|
using ShaderNameVariable=char[SHADER_RESOURCE_NAME_MAX_LENGTH];
|
||||||
|
|
||||||
struct MaterialInstanceData
|
struct MaterialInstanceData
|
||||||
{
|
{
|
||||||
const char *code;
|
const char *code;
|
||||||
@ -28,15 +30,15 @@ namespace material_file
|
|||||||
|
|
||||||
struct SamplerData
|
struct SamplerData
|
||||||
{
|
{
|
||||||
char name[SHADER_RESOURCE_NAME_MAX_LENGTH];
|
ShaderNameVariable name;
|
||||||
|
|
||||||
SamplerType type;
|
SamplerType type;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct UBOData
|
struct UBOData
|
||||||
{
|
{
|
||||||
char struct_name[SHADER_RESOURCE_NAME_MAX_LENGTH];
|
ShaderNameVariable struct_name;
|
||||||
char name[SHADER_RESOURCE_NAME_MAX_LENGTH];
|
ShaderNameVariable name;
|
||||||
|
|
||||||
char filename[HGL_MAX_PATH];
|
char filename[HGL_MAX_PATH];
|
||||||
|
|
||||||
@ -56,7 +58,7 @@ namespace material_file
|
|||||||
const char * code;
|
const char * code;
|
||||||
uint code_length;
|
uint code_length;
|
||||||
|
|
||||||
ArrayList<SamplerData> sampler;
|
ArrayList<SamplerData> sampler;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
|
@ -46,7 +46,7 @@ void ClearMaterialFactory()
|
|||||||
SAFE_CLEAR(material_factory_map);
|
SAFE_CLEAR(material_factory_map);
|
||||||
}
|
}
|
||||||
|
|
||||||
MaterialCreateInfo *CreateMaterialCreateInfo(const MaterialName &name,MaterialCreateConfig *cfg)
|
MaterialCreateInfo *CreateMaterialCreateInfo(const GPUDeviceAttribute *dev_attr,const MaterialName &name,MaterialCreateConfig *cfg)
|
||||||
{
|
{
|
||||||
if(!cfg)
|
if(!cfg)
|
||||||
return(nullptr);
|
return(nullptr);
|
||||||
@ -56,7 +56,7 @@ MaterialCreateInfo *CreateMaterialCreateInfo(const MaterialName &name,MaterialCr
|
|||||||
if(!mf)
|
if(!mf)
|
||||||
return(nullptr);
|
return(nullptr);
|
||||||
|
|
||||||
return mf->Create(cfg);
|
return mf->Create(dev_attr,cfg);
|
||||||
}
|
}
|
||||||
|
|
||||||
STD_MTL_NAMESPACE_END
|
STD_MTL_NAMESPACE_END
|
||||||
|
@ -8,7 +8,7 @@ StdMaterial::StdMaterial(const MaterialCreateConfig *mcc)
|
|||||||
mci=new MaterialCreateInfo(mcc);
|
mci=new MaterialCreateInfo(mcc);
|
||||||
}
|
}
|
||||||
|
|
||||||
MaterialCreateInfo *StdMaterial::Create()
|
MaterialCreateInfo *StdMaterial::Create(const GPUDeviceAttribute *dev_attr)
|
||||||
{
|
{
|
||||||
if(!BeginCustomShader())
|
if(!BeginCustomShader())
|
||||||
return(nullptr);
|
return(nullptr);
|
||||||
@ -28,7 +28,7 @@ MaterialCreateInfo *StdMaterial::Create()
|
|||||||
if(!EndCustomShader())
|
if(!EndCustomShader())
|
||||||
return(nullptr);
|
return(nullptr);
|
||||||
|
|
||||||
if(!mci->CreateShader())
|
if(!mci->CreateShader(dev_attr))
|
||||||
return(nullptr);
|
return(nullptr);
|
||||||
|
|
||||||
return(mci);
|
return(mci);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user