5.2 KiB
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 自己的材质抽象层。
最低应包含:
MaterialTypeBaseColorBaseColorTextureNormalTextureMetallicRoughnessMetallicRoughnessTextureAoTextureEmissiveColorEmissiveTextureDoubleSidedAlphaMode
这层定义的是“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
- 应该和模型导入、层级编辑并列为引擎基础主线
推荐实现顺序
建议按下面顺序推进:
- 定义 MetaCore 材质资源结构
- 建立材质资源持久化
- 建立材质到 simplepbr 参数的映射
- 打通编辑器材质编辑入口
- 打通场景对象材质指派
- 验证编辑器与 Player 一致性
- 再考虑材质实例、更多贴图槽和更丰富 feature
第一阶段明确不要做的事
这些都属于以后,不应在当前阶段过早展开:
- 完整的类 URP 自定义 render feature 体系
- 大而全的后处理系统
- 复杂透明与特效管线
- 完整 shader graph
- 面向所有项目类型的通用渲染框架
长期方向
长期方向应该明确为:
MetaCore 第一阶段借助 panda3d-simplepbr 跑通基础 PBR 材质工作流,后续逐步演进为 MetaCore 自己的类 URP 渲染管线。
这句话同时保证了:
- 当前可执行
- 中期可演进
- 长期不被第三方实现细节绑死
最终建议
当前最好的策略不是:
- 直接做 URP
- 也不是完全依附
simplepbr
而是:
MetaCore 自己拥有材质系统,第一版渲染后端借力 panda3d-simplepbr。
这是第一阶段最合理、风险最低、推进速度最快的选型。