24 using DefineSet = ::std::set<::std::string>;
26 using MaterialVariationMap = ::std::map<::std::string, ::std::shared_ptr<::cg::RenderMaterialBase>>;
31 ::ll::TypedStorage<8, 16, ::std::map<::std::string, ::std::shared_ptr<::cg::RenderMaterialBase>>>
33 ::ll::TypedStorage<8, 32, ::cg::VariationMap> mVariationMap;
34 ::ll::TypedStorage<8, 32, ::std::string> mFullMaterialName;
35 ::ll::TypedStorage<8, 32, ::std::string> mVariantName;
36 ::ll::TypedStorage<8, 32, ::std::string> mMaterialIdentifier;
37 ::ll::TypedStorage<8, 16, ::std::set<::std::string>> mDefines;
38 ::ll::TypedStorage<2, 2, ::mce::RenderState> mStateMask;
39 ::ll::TypedStorage<8, 32, ::std::string> mShaderHeader;
40 ::ll::TypedStorage<8, 32, ::Core::PathBuffer<::std::string>> mVertexShader;
41 ::ll::TypedStorage<8, 32, ::Core::PathBuffer<::std::string>> mFragmentShader;
42 ::ll::TypedStorage<8, 32, ::Core::PathBuffer<::std::string>> mGeometryShader;
43 ::ll::TypedStorage<8, 24, ::SemVersion> mVersion;
44 ::ll::TypedStorage<1, 1, uchar> mRequiredTextures;
63 virtual void parseRuntimeStates(
::Json::Value const& root) = 0;
65 virtual void appendShaderPathForGfxAPI() = 0;
68 virtual ::std::string buildHeader(::std::set<::std::string>
const&);
70 virtual ::std::string buildHeader(::std::set<::std::string>
const& defines);
89 MCAPI
void addDefine(::std::string
const& define);
91 MCFOLD ::std::set<::std::string>
const& getDefines()
const;
93 MCFOLD ::std::string
const& getMaterialIdentifier()
const;
95 MCFOLD ::std::map<::std::string, ::std::shared_ptr<::cg::RenderMaterialBase>>
const&
96 getMaterialVariationMap()
const;
98 MCAPI ::Core::PathBuffer<::std::string>
const& getShaderProgramName(::mce::ShaderType shaderType)
const;
100 MCAPI
bool hasDefine(::std::string
const& define)
const;
102 MCAPI
bool hasState(::mce::RenderState state)
const;
112 MCAPI
bool parseVariantWithInheritance(
114 ::std::string_view key,
115 ::mce::InheritanceType inheritanceType
120 MCAPI
void removeDefine(::std::string
const& define);
128 MCAPI
static void warnOnDeprecatedSchemaKeyword(
::Json::Value const& root, ::std::string_view key);
152 MCAPI ::std::string $buildHeader(::std::set<::std::string>
const& defines);