Untoon Engine

Overview-and-Positioning

本页目录

概览与定位

分支定义

Untoon Engine 是一个面向卡通渲染与 NPR 工作流的 Unreal Engine 源码引擎分支。

  • 基线分支:release
  • 功能分支:untoon
  • 基础版本:Unreal Engine 5.8

Untoon 能力做在引擎层,随源码一起编译和升级,不依赖项目层的后处理或 shader hack。

适用场景

适合这几类项目:

  • 需要原生 Untoon 材质模型,而不是在项目层做后处理模拟
  • 项目同时用多光源、延迟渲染、Lumen 和 Ray Tracing,风格化表现要跟得上这些路径
  • 灯光、材质、阴影在卡通风格下需要统一的控制语义
  • 有团队能长期维护源码引擎分支

不适用场景

这几类项目不要直接用这个分支:

  • 只想做轻量后处理描边
  • 不具备源码引擎维护能力
  • 不计划长期跟进上游 release
  • 希望以普通插件方式完成全部 Untoon 能力

相对 release 的主要差异

相对于 release,untoon 的主要差异包括:

  • 新增 MSM_Untoon
  • 扩展材质翻译和 Shader 生成
  • 增加 GBufferToon
  • 保留 Untoon Base Pass 入口,并新增当前有效的 Untoon Light Pass、Untoon Shadow Mask、Untoon Outline
  • 新增 Nanite 专用 Untoon ShadowMask / UntoonLight 后置导出路径
  • 新增 Untoon 材质输出节点
  • 为 Light Component 增加 Untoon 控制项
  • 为 Scene / Post Process 增加 Untoon Diffuse 控制项

源码定制边界

untoon 通过两类方式组织源码差异:

  • Untoon 自有目录:Engine/Shaders/Private/Untoon 与 Engine/Source/Runtime/Renderer/Private/Untoon
  • 上游引擎集成文件:材质编译、Shader 生成、GBuffer、Deferred Renderer、Nanite、Light Component 等原有 UE 文件

Untoon 自有目录内不需要 Untoon Engine Start/End 包裹。其他 engine、renderer、shader、runtime 文件中的 Untoon 改动必须使用 marker 包裹,且 marker 不应嵌套。完整规则见 维护者规则。

推荐维护方式

把 untoon 当作内部引擎发行版来管,而不是项目里的普通依赖。分支策略和版本标签单独维护,每次同步 release 都记录升级日志并跑一遍回归验证。