editor: preserve material authoring overrides

This commit is contained in:
2026-04-07 21:47:36 +08:00
parent 4c26b410cb
commit 6289777c8e
3 changed files with 348 additions and 3 deletions

View File

@@ -481,3 +481,44 @@ Material 面板不应再次演化成随意堆字段的临时入口。所有 rend
- 针对 Inspector 材质链路的专门自动化测试
因此Phase 3 的完成标准是“Shader schema 驱动的属性面板已经建立起来”,但还不是最终形态。
## 14. Phase 4 执行结果
状态:已完成
本阶段重点处理的是 authoring-state 与 runtime-state 的一致性问题,避免 Inspector 因为单纯从运行时对象反推而破坏材质源文件的语义。
### 14.1 已完成内容
- Inspector 现在会回读材质源文件中实际 authored 的:
- `properties`
- `textures`
- `keywords`
- `renderState`
- 材质状态中已加入“是否需要序列化回源文件”的 authored 标记。
- 保存材质时,不再无条件把所有运行时属性都写回源文件。
- 对于未在源文件中显式 authored 的属性,当前会继续保持“继承 Shader 默认值”的语义。
- 当用户在 Inspector 中修改属性或贴图后,对应项才会被标记为显式 authored 并写回源文件。
### 14.2 本阶段解决的核心问题
本阶段解决的是一个架构层面的隐患:
- 如果只从运行时 `Material` 反推回材质源文件,打开并保存一次材质,就会把 Shader 默认值全部固化进 `.mat`
- 一旦默认值被固化,后续 Shader 默认值再调整,材质就不再继承新的默认值。
当前这条链路已经收口到更合理的状态:
- 只有显式 authored 的 override 才会写回
- 默认值仍然可以继续作为 Shader 侧的基线被继承
### 14.3 本阶段仍未完成的部分
以下内容仍然需要下一阶段继续完成:
- 针对 Inspector 材质链路的专门自动化测试
- 属性“重置到默认值”的正式交互
- 关键词的可视化编辑 UI
- 更完整的属性类型/显示策略覆盖
因此Phase 4 的性质是“先把 authoring 语义做正确”,为最后的测试与收口创造条件。