docs: align widgets and editor panel notes with refactor

This commit is contained in:
2026-04-09 23:52:07 +08:00
parent cb3d558aaa
commit 4aaac9887e
5 changed files with 101 additions and 160 deletions

View File

@@ -6,64 +6,34 @@
**源文件**: `editor/src/panels/MaterialInspectorMaterialStateIO.h`
**描述**: Material Inspector 状态与 shader/material/source text 之间的同步 helper负责属性快照收集、schema 对齐、authoring presence 标记和材质文件文本生成
**描述**: 材质 Inspector 状态与 shader / authoring 文本之间的同步与序列化辅助函数集合
## 概
## 概
`MaterialInspectorMaterialStateIO` Material Inspector 的几条关键数据流集中到一起:
`MaterialInspectorMaterialStateIO.h` 是 [MaterialInspectorMaterialState](../MaterialInspectorMaterialState/MaterialInspectorMaterialState.md)
的配套辅助层,负责三类工作:
1. 从运行时 `Material` 收集可编辑属性状态
2. shader schema 把现有状态重排、补齐或丢弃
3. 根据 source text 标记哪些 keyword / property / texture 真正来自作者输入
4. 把编辑状态重新编码成材质资产文本
- 从运行时 `Material` 收集属性状态
- 根据 shader 元数据同步和重置状态
- 根据当前状态重新生成材质资产文本
## 公开函数
| 函数 | 说明 |
|------|------|
| [IsTextureMaterialPropertyType](IsTextureMaterialPropertyType.md) | 判断属性是否属于 texture/cubemap。 |
| [CollectMaterialPropertyStates](CollectMaterialPropertyStates.md) | 从 `Material` 收集并排序属性编辑状态。 |
| [SyncMaterialAssetStateWithShader](SyncMaterialAssetStateWithShader.md) | 以 shader schema 为准同步 keyword 与 property 列表,同时尽量保留兼容旧值。 |
| [ResetMaterialPropertyStateToShaderDefault](ResetMaterialPropertyStateToShaderDefault.md) | 把指定属性恢复到 shader 默认值,并清除 serialized 标志。 |
| [ApplyMaterialAuthoringPresenceToState](ApplyMaterialAuthoringPresenceToState.md) | 从原始 source text 判断哪些 keyword / property / texture 真正出现在 authoring 文本里。 |
| [BuildMaterialAssetFileText](BuildMaterialAssetFileText.md) | 按当前状态生成材质资产 JSON 文本 |
| `IsTextureMaterialPropertyType(...)` | 判断某个属性类型是否按纹理处理 |
| `CollectMaterialPropertyStates(...)` | 从 `Material` 抽取属性状态数组 |
| `SyncMaterialAssetStateWithShader(...)` | 依据 shader 元数据补齐或修正状态 |
| `ResetMaterialPropertyStateToShaderDefault(...)` | 把指定属性重置为 shader 默认值 |
| `ApplyMaterialAuthoringPresenceToState(...)` | 根据 authoring 文本标记哪些字段已显式序列化 |
| `BuildMaterialAssetFileText(...)` | 按当前状态生成材质资产文本 |
## 当前实现行为
## 当前角色
- `CollectMaterialPropertyStates(...)` 会优先按 shader property 顺序排序;没有 shader schema 时才退回名字排序。
- `SyncMaterialAssetStateWithShader(...)` 会保留“同名且类型兼容”的旧编辑值,同时丢弃陈旧属性
- shader pass 里声明的 keyword 会被整理成 `MaterialKeywordState`;之前已启用的 keyword 会尽量保留 `serialized` 状态。
- `ApplyMaterialAuthoringPresenceToState(...)` 会区分:
- `properties`
- `textures`
- `keywords`
- `renderState`
这样 Inspector 可以知道某项是默认值,还是作者在材质文件里显式写过的覆盖。
- `BuildMaterialAssetFileText(...)` 会省略未序列化的默认项,只写当前确实需要落盘的字段。
- `BuildMaterialAssetFileText(...)` 同时负责把 `renderQueue`、tags、textures 和 `renderState` override 编码成最终 JSON。
## 测试
- `tests/Editor/test_material_inspector_material_state_io.cpp` 当前覆盖:
- 只标记 source authored 的 entries
- 按 shader schema 保留兼容 override 并丢弃陈旧属性
- 把声明过的 keyword 补成 disabled entries
- 恢复 shader 默认值
- 省略未序列化默认值
- 写出 texture 与 render-state 覆盖
## 相关函数页面
- [IsTextureMaterialPropertyType](IsTextureMaterialPropertyType.md)
- [CollectMaterialPropertyStates](CollectMaterialPropertyStates.md)
- [SyncMaterialAssetStateWithShader](SyncMaterialAssetStateWithShader.md)
- [ResetMaterialPropertyStateToShaderDefault](ResetMaterialPropertyStateToShaderDefault.md)
- [ApplyMaterialAuthoringPresenceToState](ApplyMaterialAuthoringPresenceToState.md)
- [BuildMaterialAssetFileText](BuildMaterialAssetFileText.md)
这组函数把“面板里的 staged 状态”与“磁盘上的材质 authoring 文件”连接起来,
因此它们是 Material Inspector 从查看模式走向可编辑模式的关键拼装层
## 相关文档
- [panels](../panels.md)
- [MaterialInspectorMaterialState](../MaterialInspectorMaterialState/MaterialInspectorMaterialState.md)
- [Material](../../../Resources/Material/Material/Material.md)
- [Shader](../../../Resources/Shader/Shader/Shader.md)