docs: align widgets and editor panel notes with refactor
This commit is contained in:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user