初步实现CreateMaterialCreateInfo(name,cfg,vil),下一待整合进WorkObject/WorkManager后正式启用。

This commit is contained in:
2025-05-06 00:41:07 +08:00
parent 9be5de0f57
commit e88facf834
7 changed files with 36 additions and 49 deletions

View File

@@ -2,35 +2,18 @@
#include<hgl/graph/VK.h>
#include<hgl/graph/mtl/StdMaterial.h>
#include<hgl/type/IDName.h>
#include<hgl/type/String.h>
STD_MTL_NAMESPACE_BEGIN
enum class MaterialDomain
{
UI, ///<用户界面,一般2D均使用这种
Gizmo, ///<Gizmo材质(基本同Surface但很多数值和处理逻辑会写死)
Surface, ///<常规的3D表面材质
DeferredDecal, ///<延迟贴花材质
PostProcess, ///<后期处理材质
ENUM_CLASS_RANGE(UI,PostProcess)
};
class MaterialFactory
{
public:
virtual AIDName GetName()const=0;
virtual AnsiString GetName()const=0;
//virtual const bool GetMaterialName()const=0;
virtual const MaterialDomain GetDomain()const=0;
//virtual const PrimitiveType supportPrimitive()const=0;
//virtual const bool is2D()const=0;
@@ -41,13 +24,12 @@ public:
//virtual const CoordinateSystem2D get2DCoordinateSystem()const=0;
virtual MaterialCreateInfo *Create();
virtual MaterialCreateInfo *Create(MaterialCreateConfig *);
};//class MaterialFactory
bool RegistryMaterialFactory(MaterialFactory *);
MaterialFactory *GetMaterialFactory(const AIDName &);
void ClearMaterialFactory();
bool RegistryMaterialFactory(MaterialFactory *);
MaterialFactory * GetMaterialFactory(const AnsiString &);
template<typename T> class RegistryMaterialFactoryClass
{
@@ -61,10 +43,6 @@ public:
#define DEFINE_MATERIAL_FACTORY(name) namespace{static RegistryMaterialFactoryClass<MaterialFactory##name> MaterialFactoryInstance_##name;}
struct Material2DCreateConfig;
struct Material3DCreateConfig;
Material *CreateMaterial2D(const AnsiString &,Material2DCreateConfig *cfg=nullptr);
Material *CreateMaterial3D(const AnsiString &,Material3DCreateConfig *cfg=nullptr);
MaterialCreateInfo *CreateMaterialCreateInfo(const AnsiString &,MaterialCreateConfig *cfg=nullptr,const VILConfig *vil_cfg=nullptr);
STD_MTL_NAMESPACE_END