From a1d8ad52cb7320bb67dfac8550a00bb2831e298f Mon Sep 17 00:00:00 2001 From: hyzboy Date: Thu, 5 Dec 2024 13:49:44 +0800 Subject: [PATCH] use newly Compartor<> --- CMAssetsManage | 2 +- CMCore | 2 +- CMSceneGraph | 2 +- CMUtil | 2 +- inc/hgl/graph/module/GraphModule.h | 11 +++++++- inc/hgl/graph/mtl/Material2DCreateConfig.h | 8 +++--- inc/hgl/graph/mtl/Material3DCreateConfig.h | 8 +++--- inc/hgl/graph/mtl/MaterialConfig.h | 6 ++--- inc/hgl/graph/mtl/ShaderVariableType.h | 30 ++++++++-------------- res | 2 +- src/ShaderGen/ShaderVariableType.cpp | 2 +- 11 files changed, 34 insertions(+), 41 deletions(-) diff --git a/CMAssetsManage b/CMAssetsManage index 85436b5a..cf6a54d4 160000 --- a/CMAssetsManage +++ b/CMAssetsManage @@ -1 +1 @@ -Subproject commit 85436b5a7b0bc9347fcd3321a6895464470f1353 +Subproject commit cf6a54d484436eea700bc4f4ea002ed23eed6dc8 diff --git a/CMCore b/CMCore index 753b78dd..6e1f32f3 160000 --- a/CMCore +++ b/CMCore @@ -1 +1 @@ -Subproject commit 753b78dddf234cd305b5d211c687b311eebaaf8a +Subproject commit 6e1f32f38eca4cdc1088e737abf58ffec5e2592b diff --git a/CMSceneGraph b/CMSceneGraph index c958a6cb..b1e3ffe3 160000 --- a/CMSceneGraph +++ b/CMSceneGraph @@ -1 +1 @@ -Subproject commit c958a6cb2ac4a52716eabc1c45eba184f4c7e46c +Subproject commit b1e3ffe312b18ecad36849d9d53288bbb25af8dc diff --git a/CMUtil b/CMUtil index f7dce030..a7f4afab 160000 --- a/CMUtil +++ b/CMUtil @@ -1 +1 @@ -Subproject commit f7dce0304822280d0db23ae607783b7c3cd183fa +Subproject commit a7f4afab8029f52dff43840062c8b6cb2008bd67 diff --git a/inc/hgl/graph/module/GraphModule.h b/inc/hgl/graph/module/GraphModule.h index bc67c39c..cd3bf9b1 100644 --- a/inc/hgl/graph/module/GraphModule.h +++ b/inc/hgl/graph/module/GraphModule.h @@ -1,4 +1,4 @@ -#pragma once +#pragma once #include #include @@ -60,6 +60,8 @@ class GraphModule AnsiIDName module_name; + SortedSet dependent_module; ///<依赖的模块 + bool module_enable; bool module_ready; @@ -93,6 +95,13 @@ public: virtual bool Init(){return true;} ///<初始化当前模块 + int Comp(const GraphModule *gm)const + { + return(dependent_module.Contains(gm->module_name)?1:-1); //如果我依赖于他,那么我比他大 + } + + CompOperator(const GraphModule *,Comp) + public: GraphModule * GetModule(const AnsiIDName &name,bool create=false){return module_manager->GetModule(name,create);} ///<获取指定名称的模块 diff --git a/inc/hgl/graph/mtl/Material2DCreateConfig.h b/inc/hgl/graph/mtl/Material2DCreateConfig.h index 443cac67..81f56710 100644 --- a/inc/hgl/graph/mtl/Material2DCreateConfig.h +++ b/inc/hgl/graph/mtl/Material2DCreateConfig.h @@ -6,7 +6,7 @@ #include STD_MTL_NAMESPACE_BEGIN -struct Material2DCreateConfig:public MaterialCreateConfig +struct Material2DCreateConfig:public MaterialCreateConfig,public Comparator { CoordinateSystem2D coordinate_system; ///<使用的坐标系 @@ -32,9 +32,9 @@ public: position_format=VAT_VEC2; } - int Comp(const Material2DCreateConfig &cfg)const + const int compare(const Material2DCreateConfig &cfg)const override { - int off=MaterialCreateConfig::Comp(cfg); + int off=MaterialCreateConfig::compare(cfg); if(off)return off; @@ -48,8 +48,6 @@ public: return off; } - - CompOperator(const Material2DCreateConfig &,Comp) };//struct Material2DCreateConfig:public MaterialCreateConfig MaterialCreateInfo *CreateVertexColor2D(const Material2DCreateConfig *); diff --git a/inc/hgl/graph/mtl/Material3DCreateConfig.h b/inc/hgl/graph/mtl/Material3DCreateConfig.h index fcdfc32e..e76cbad0 100644 --- a/inc/hgl/graph/mtl/Material3DCreateConfig.h +++ b/inc/hgl/graph/mtl/Material3DCreateConfig.h @@ -6,7 +6,7 @@ STD_MTL_NAMESPACE_BEGIN -struct Material3DCreateConfig:public MaterialCreateConfig +struct Material3DCreateConfig:public MaterialCreateConfig,public Comparator { bool camera; ///<包含摄像机矩阵信息 @@ -32,9 +32,9 @@ public: // reverse_depth=false; } - int Comp(const Material3DCreateConfig &cfg)const + const int compare(const Material3DCreateConfig &cfg)const override { - int off=MaterialCreateConfig::Comp(cfg); + int off=MaterialCreateConfig::compare(cfg); if(off)return off; @@ -48,8 +48,6 @@ public: return off; } - - CompOperator(const Material3DCreateConfig &,Comp) };//struct Material3DCreateConfig:public MaterialCreateConfig MaterialCreateInfo *CreateVertexColor3D(const Material3DCreateConfig *); diff --git a/inc/hgl/graph/mtl/MaterialConfig.h b/inc/hgl/graph/mtl/MaterialConfig.h index 94e32c56..5cdca42f 100644 --- a/inc/hgl/graph/mtl/MaterialConfig.h +++ b/inc/hgl/graph/mtl/MaterialConfig.h @@ -13,7 +13,7 @@ class MaterialCreateInfo; /** * 材质配置结构 */ -struct MaterialCreateConfig +struct MaterialCreateConfig:public Comparator { const GPUDeviceAttribute *dev_attr; @@ -42,7 +42,7 @@ public: prim=p; } - virtual int Comp(const MaterialCreateConfig &cfg)const + const int compare(const MaterialCreateConfig &cfg)const override { int off; @@ -59,8 +59,6 @@ public: return off; } - - CompOperator(const MaterialCreateConfig &,Comp) };//struct MaterialCreateConfig STD_MTL_NAMESPACE_END #endif//HGL_GRAPH_MTL_CONFIG_INCLUDE diff --git a/inc/hgl/graph/mtl/ShaderVariableType.h b/inc/hgl/graph/mtl/ShaderVariableType.h index 329ab7b8..93d9d4a3 100644 --- a/inc/hgl/graph/mtl/ShaderVariableType.h +++ b/inc/hgl/graph/mtl/ShaderVariableType.h @@ -28,7 +28,7 @@ namespace hgl #pragma pack(push,1) - struct ShaderVariableType + struct ShaderVariableType:public Comparator { union { @@ -158,9 +158,7 @@ namespace hgl const bool Check()const; - int Comp(const ShaderVariableType &svt)const; - - CompOperator(const ShaderVariableType &,Comp) + const int compare(const ShaderVariableType &svt)const override; const char *GetTypename()const; @@ -281,7 +279,7 @@ namespace hgl using SVList=List; - struct ShaderVariableArray + struct ShaderVariableArray:public Comparator { uint count; @@ -304,44 +302,36 @@ namespace hgl Clear(); } - int Comp(const ShaderVariableArray *sva)const + const int compare(const ShaderVariableArray &sva)const override { - if(!sva) - return 1; - - int off=count-sva->count; + int off=count-sva.count; if(off)return off; for(uint i=0;iitems[i].location; + off=items[i].location-sva.items[i].location; if(off) return off; - if(items[i].type.ToCode()>sva->items[i].type.ToCode()) + if(items[i].type.ToCode()>sva.items[i].type.ToCode()) return 1; //ToCode返回的是uint64,可能差值超大,所以不能直接用-的结果 - if(items[i].type.ToCode()items[i].type.ToCode()) + if(items[i].type.ToCode()items[i].interpolation); + off=int(items[i].interpolation)-int(sva.items[i].interpolation); if(off) return off; - off=hgl::strcmp(items[i].name,sva->items[i].name); + off=hgl::strcmp(items[i].name,sva.items[i].name); if(off) return off; } return 0; } - - int Comp(const ShaderVariableArray &sva)const{return Comp(&sva);} - - CompOperator(const ShaderVariableArray *,Comp) - CompOperator(const ShaderVariableArray &,Comp) bool Init(const uint c=0) { diff --git a/res b/res index e1a36d78..475d8ad4 160000 --- a/res +++ b/res @@ -1 +1 @@ -Subproject commit e1a36d78f0eead5f6bb65493432c4690637b991d +Subproject commit 475d8ad43ceee084cd24f5d0bed59de9f6aa36fd diff --git a/src/ShaderGen/ShaderVariableType.cpp b/src/ShaderGen/ShaderVariableType.cpp index 652bb42c..2d5a381f 100644 --- a/src/ShaderGen/ShaderVariableType.cpp +++ b/src/ShaderGen/ShaderVariableType.cpp @@ -85,7 +85,7 @@ const bool ShaderVariableType::Check()const return(true); } -int ShaderVariableType::Comp(const ShaderVariableType &svt)const +const int ShaderVariableType::compare(const ShaderVariableType &svt)const { int off=(int)base_type-(int)svt.base_type;