Files
XCEngine/docs/api/XCEngine/Resources/Material/MaterialLoader/MaterialLoader.md

2.0 KiB
Raw Blame History

MaterialLoader

命名空间: XCEngine::Resources

类型: class

头文件: XCEngine/Resources/Material/MaterialLoader.h

描述: 材质 source 文件与 .xcmat artifact 的统一加载器。

概览

MaterialLoader 当前要处理三类输入:

  1. builtin:// 材质路径
  2. source 材质文件 .mat / .material / .json
  3. 材质 artifact .xcmat

其中 .xcmat 已经是当前材质 artifact v4

  • magic XCMAT04
  • schema 4
  • texture binding 保存的是“binding name + 编码 AssetRef + 可选 path”
  • 回读后默认只恢复绑定元数据,不会立即同步加载全部纹理 payload
  • 额外保存 hasRenderStateOverride,区分“显式材质 override”和“仅保留默认 render-state 缓存”

source 材质解析能力

对 source 文件loader 当前支持解析:

  • shader
  • shaderPass / pass
  • renderQueue 支持整数或名字
  • tags
  • renderState 解析到该对象时会自动启用 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 回读。

相关文档