2.0 KiB
2.0 KiB
MaterialLoader
命名空间: XCEngine::Resources
类型: class
头文件: XCEngine/Resources/Material/MaterialLoader.h
描述: 材质 source 文件与 .xcmat artifact 的统一加载器。
概览
MaterialLoader 当前要处理三类输入:
builtin://材质路径- source 材质文件
.mat/.material/.json - 材质 artifact
.xcmat
其中 .xcmat 已经是当前材质 artifact v4:
- magic
XCMAT04 - schema
4 - texture binding 保存的是“binding name + 编码
AssetRef+ 可选 path” - 回读后默认只恢复绑定元数据,不会立即同步加载全部纹理 payload
- 额外保存
hasRenderStateOverride,区分“显式材质 override”和“仅保留默认 render-state 缓存”
source 材质解析能力
对 source 文件,loader 当前支持解析:
shadershaderPass/passrenderQueue支持整数或名字tagsrenderState解析到该对象时会自动启用HasRenderStateOverride()- texture 声明
包括 known key 和
textures { ... }字典
相对 texture 路径会按材质文件目录或当前 resourceRoot 解析。
当前实现边界
- source 解析仍是轻量手写 JSON-like parser,不是完整 JSON AST。
.xcmat分支显式检查的是 magic,不是schemaVersion分支分发;当前 reader 只覆盖到XCMAT04。- 异步纹理兑现由
Material在后续访问时触发,而不是在Load()内一次性完成。
重点方法
| 方法 | 说明 |
|---|---|
| CanLoad | 判断路径是否属于 builtin 材质、source 材质或 .xcmat artifact。 |
| Load | 按输入类型分派到 builtin 材质、source 解析或 .xcmat artifact 回读。 |