diff --git a/CMCore b/CMCore index f9007c55..252f2f6a 160000 --- a/CMCore +++ b/CMCore @@ -1 +1 @@ -Subproject commit f9007c5564568b2596ddfb8643905e9df28cf7b8 +Subproject commit 252f2f6a1f4546d84e105e9f76462576e1b26a25 diff --git a/inc/hgl/graph/mtl/Material2DCreateConfig.h b/inc/hgl/graph/mtl/Material2DCreateConfig.h index ddc62e0a..3a08bbb4 100644 --- a/inc/hgl/graph/mtl/Material2DCreateConfig.h +++ b/inc/hgl/graph/mtl/Material2DCreateConfig.h @@ -38,5 +38,7 @@ MaterialCreateInfo *CreatePureColor2D(const Material2DCreateConfig *); MaterialCreateInfo *CreatePureTexture2D(const Material2DCreateConfig *); MaterialCreateInfo *CreateRectTexture2D(Material2DCreateConfig *); MaterialCreateInfo *CreateRectTexture2DArray(Material2DCreateConfig *); + +MaterialCreateInfo *LoadMaterialFromFile(const AnsiString &,const Material2DCreateConfig *); STD_MTL_NAMESPACE_END #endif//HGL_GRAPH_MTL_2D_CREATE_CONFIG_INCLUDE diff --git a/src/ShaderGen/CMakeLists.txt b/src/ShaderGen/CMakeLists.txt index 47da7742..7763c988 100644 --- a/src/ShaderGen/CMakeLists.txt +++ b/src/ShaderGen/CMakeLists.txt @@ -69,7 +69,8 @@ SET(STD_MTL_3D_SOURCE_FILES ${STD_MTL_HEADER_PATH}/Material3DCreateConfig.h SET(STD_MTL_SOURCE ${STD_MTL_HEADER_PATH}/MaterialConfig.h ${STD_MTL_HEADER_PATH}/StdMaterial.h ${STD_MTL_HEADER_PATH}/ShaderBuffer.h - StandardMaterial.cpp) + StandardMaterial.cpp + MaterialFileLoader.cpp) SOURCE_GROUP("Standard Material" FILES ${STD_MTL_SOURCE}) SOURCE_GROUP("Standard Material\\2D" FILES ${STD_MTL_2D_SOURCE_FILES}) diff --git a/src/ShaderGen/MaterialFileLoader.cpp b/src/ShaderGen/MaterialFileLoader.cpp new file mode 100644 index 00000000..893a632a --- /dev/null +++ b/src/ShaderGen/MaterialFileLoader.cpp @@ -0,0 +1,186 @@ +#include +#include +#include + +#include +#include +#include + +STD_MTL_NAMESPACE_BEGIN +namespace +{ + using MaterialFileParse=io::TextInputStream::ParseCallback; + + enum class MaterialFileState + { + None, + + Material, + MaterialInstance, + MaterialInstanceCode, + + Vertex, + VertexInput, + VertexOutput, + VertexCode, + + Geometry, + GeometryInput, + GeometryOutput, + GeometryCode, + + Fragment, + FragmentInput, + FragmentOutput, + FragmentCode, + + ENUM_CLASS_RANGE(None,FragmentCode) + };//enum class State + + constexpr const char *StateNameList[]= + { + "Material", + "MaterialInstance", + "Vertex", + "Geometry", + "Fragment", + }; + + const MaterialFileState GetMaterialFileState(const char *str) + { + for(int i=0;iOnLine(text,len); + + return(true); + } + }; +}//namespace MaterialFile + +bool LoadMaterialFromFile(const AnsiString &mtl_filename) +{ + const OSString mtl_osfn=ToOSString(mtl_filename+".mtl"); + + const OSString mtl_os_filename=filesystem::MergeFilename(OS_TEXT("ShaderLibrary"),mtl_osfn); + + if(!filesystem::FileExist(mtl_os_filename)) + return(false); + + io::OpenFileInputStream fis(mtl_os_filename); + + if(!fis) + return(false); + + MaterialTextParse mtp; + + io::TextInputStream tis(fis,0); + + tis.SetParseCallback(&mtp); + + return tis.Run(); +} + +MaterialCreateInfo *LoadMaterialFromFile(const AnsiString &name,const MaterialCreateConfig *cfg) +{ + return nullptr; +} + +//MaterialCreateInfo *LoadMaterialFromFile(const AnsiString &name,const Material2DCreateConfig *cfg) +//{ +// Std2DMaterial *mtl=new Std2DMaterial(cfg); +// +// +//} +// +//MaterialCreateInfo *LoadMaterialFromFile(const AnsiString &name,const Material3DCreateConfig *cfg) +//{ +//} +STD_MTL_NAMESPACE_END