# MetaCore 材质与渲染管线选型说明 生成时间:2026-03-28 状态:草案 范围:M3 场景编辑、材质与光照工作流 ## 目的 这份文档用于明确 MetaCore 第一阶段材质与渲染管线的选型策略。 目标不是一步到位做出完整的 Unity URP 等价物,而是: - 第一阶段先把基础 PBR 材质工作流跑通 - 让材质、灯光、模型和场景搭建形成稳定闭环 - 在不锁死未来架构的前提下,借力现有可行方案 ## 结论先说 **第一阶段使用 `panda3d-simplepbr` 作为基础 PBR Shader 实现,是正确且务实的选择。** 但这必须满足一个前提: **MetaCore 自己定义材质系统,`simplepbr` 只是第一版渲染后端实现,不是最终渲染架构。** ## 为什么这个选型合理 对于第一阶段来说,你当前最需要的不是一整套宏大的渲染管线,而是: - 模型导入后能有像样的材质表现 - 场景中灯光表现稳定 - 编辑器和运行时对材质的理解尽量一致 - 工程团队能尽快把材质工作流做起来 `panda3d-simplepbr` 非常适合作为这个阶段的起点,因为它解决的是: - 基础 PBR 材质 - 基础灯光 - 贴图和阴影的第一版工程问题 这正好对应 MetaCore 当前的 M3 目标。 ## 为什么它不能作为最终方案 MetaCore 的长期目标不是“接一个现成 shader 包就结束”,而是: - 拥有自己的材质资源模型 - 拥有自己的渲染配置抽象 - 逐步演进为类 Unity URP 的可控渲染管线 因此必须把两层分清楚: ### 第一层:MetaCore 材质系统 由 MetaCore 自己定义: - 材质资源结构 - 参数命名与参数槽位 - 贴图槽定义 - 默认材质类型 - 材质序列化与资源管理 ### 第二层:第一版 shader / render backend 当前先借助: - `panda3d-simplepbr` 以后可以逐步替换为: - MetaCore 自己的 render pipeline - 更像 Unity URP 的 pass / feature / renderer 组织 ## 第一阶段推荐落地方式 ### 1. 先定义 MetaCore 自己的材质资源模型 不要先把材质资源直接设计成 `simplepbr` 参数表。 第一阶段就应当有 MetaCore 自己的材质抽象层。 最低应包含: - `MaterialType` - `BaseColor` - `BaseColorTexture` - `NormalTexture` - `Metallic` - `Roughness` - `MetallicRoughnessTexture` - `AoTexture` - `EmissiveColor` - `EmissiveTexture` - `DoubleSided` - `AlphaMode` 这层定义的是“MetaCore 材质是什么”,不是“simplepbr 怎么用”。 ### 2. simplepbr 只做第一版 shader 映射 也就是: - MetaCore 材质参数 -> 映射到 Panda3D / simplepbr 需要的参数 这样后面如果你替换渲染后端: - 资源不需要全改 - 编辑器也不需要推翻 ### 3. 优先保证编辑器和运行时一致性 第一阶段不要追求特效广度,先保证: - 编辑器里看到的材质结果 - Player 里看到的材质结果 尽量一致。 对工业项目来说,这比“先上很多高级效果”更重要。 ## 第一阶段材质系统必须支持的能力 ### P0 - 基础 PBR 材质资源 - BaseColor - BaseColorTexture - NormalTexture - Metallic / Roughness - Emissive - 材质资源保存与加载 - 材质复用 - 材质在场景对象上的指派 ### P1 - AO 贴图 - Alpha 模式 - 双面材质 - 基础材质实例工作流 ### P2 - 更高级的渲染 feature - 后处理 - 特效扩展 - 更完整的 shadow / transparency 组织 ## 第一阶段光照建议 基于当前阶段,先把这几个做稳: - Directional Light - Point Light - Spot Light - 基础阴影 - 基础环境光 / IBL 重点不是参数数量,而是: - 稳定 - 一致 - 可编辑 - 可序列化 ## 与 M3 的关系 这个选型属于: **M3 场景编辑、材质与光照工作流** 它的作用是让 MetaCore 在这一阶段具备真正的材质生产力,而不是继续停留在“对象能显示颜色”的水平。 所以这条线的优先级: - 明显高于继续扩 RuntimeData - 明显高于继续加更多行业 adapter - 应该和模型导入、层级编辑并列为引擎基础主线 ## 推荐实现顺序 建议按下面顺序推进: 1. 定义 MetaCore 材质资源结构 2. 建立材质资源持久化 3. 建立材质到 simplepbr 参数的映射 4. 打通编辑器材质编辑入口 5. 打通场景对象材质指派 6. 验证编辑器与 Player 一致性 7. 再考虑材质实例、更多贴图槽和更丰富 feature ## 第一阶段明确不要做的事 这些都属于以后,不应在当前阶段过早展开: - 完整的类 URP 自定义 render feature 体系 - 大而全的后处理系统 - 复杂透明与特效管线 - 完整 shader graph - 面向所有项目类型的通用渲染框架 ## 长期方向 长期方向应该明确为: **MetaCore 第一阶段借助 `panda3d-simplepbr` 跑通基础 PBR 材质工作流,后续逐步演进为 MetaCore 自己的类 URP 渲染管线。** 这句话同时保证了: - 当前可执行 - 中期可演进 - 长期不被第三方实现细节绑死 ## 最终建议 当前最好的策略不是: - 直接做 URP - 也不是完全依附 `simplepbr` 而是: **MetaCore 自己拥有材质系统,第一版渲染后端借力 `panda3d-simplepbr`。** 这是第一阶段最合理、风险最低、推进速度最快的选型。