为什么要先讲历史
理解一项技术的演化史,不是为了情怀,而是为了判断力。 当你清楚知道"为什么现在的标准是这样",你才能在自己的项目里做出有根据的取舍, 而不是盲目跟风或者不知所措地面对过时教程。
卡通渲染(Cel Shading / Toon Shading)在独立游戏里的地位已经发生了根本性改变。 它不再是"低成本替代品",而是一种成熟的、具有高商业价值的视觉风格。 这个转变,是由过去 25 年的技术积累和产业实践共同塑造的。
前史:2000 年之前的卡通化尝试
严格来说,游戏图形的"卡通化"冲动在 3D 时代到来之前就已存在。 早期 2D 游戏本身就是卡通——精灵图(Sprite)的色块表达在技术上天然接近动画赛璐珞(Cel)的分层绘制逻辑。 但"Cel Shading"作为一个独立的技术概念,是在 3D 渲染管线成熟后才真正浮现的。
1998 年的《喷射战士》(Jet Set Radio,日版名《ジェット セット ラジオ》)通常被视为商业化 Cel Shading 的第一声炮响。 Sega 在 Dreamcast 上实现了基于轮廓描边和平面着色的风格化渲染,在当时的技术语境里几乎是"异端"—— 主流行业正在追求照片级写实,而 Sega 选择了刻意的非写实。这个判断在商业和艺术两个层面都被证明是正确的。
早期 Cel Shading 的实现高度依赖硬件固定管线的特殊技巧: 利用双面渲染(Two-Pass)配合顶点外扩来模拟描边, 用一维贴图(1D Texture / Ramp Texture)对光照进行离散化。 彼时没有可编程 Shader,这些方法都是在固定管线内的"曲线救国"。
PS2 时代:技术定型与商业化爆发(2001–2006)
PS2 与 GameCube 时代是卡通渲染技术快速定型的关键窗口。可编程 Vertex Shader 和 Fragment Shader 的引入, 让开发者第一次拥有了在 GPU 层面完整控制着色逻辑的能力。
《罪恶装备》系列:描边技术的里程碑
Arc System Works 在 PS2 时代确立了一套至今仍被参考的描边方法论。 他们的核心技巧是法线外扩描边(Normal Expand Outline): 在一个独立的渲染 Pass 中,将背面的顶点沿法线方向外扩一定距离, 只渲染背面,从而形成视觉上的轮廓线。
这个方法的优雅之处在于它的工程简洁性——不需要额外的几何信息, 只需要在 Shader 中做一次顶点偏移即可。代价是对模型拓扑有严格要求: 法线必须正确、无重叠,否则描边会在转角处出现撕裂或缺失。
《塞尔达传说:风之杖》:卡通渲染的艺术正名
2002 年,《风之杖》将卡通渲染带入了全球最顶级的 IP 序列。任天堂的选择不是妥协,而是一种清醒的美学宣言。 在大量媒体和玩家的质疑声中,《风之杖》最终以强烈的视觉辨识度和持久的耐看性证明了卡通风格的长线价值。
从技术角度看,《风之杖》对 Toon Shading 的贡献在于对环境光遮蔽(AO)和间接光的风格化处理: 不追求物理正确的光照,而是用设计师手动控制的光照贴图(Light Map)来补充卡通化光照的扁平感。 这个思路在今天的独立游戏中仍然普遍有效。
移动时代的分水岭(2007–2016)
智能手机时代的到来对卡通渲染产生了双重影响。一方面,移动端有限的 GPU 算力使卡通渲染因其相对低廉的计算成本重新受到关注; 另一方面,Unity 和 Unreal 引擎的普及化极大降低了独立开发者接触 Shader 编程的门槛。
这个阶段最重要的技术遗产是可编程渲染管线(SRP 前身)在移动端上的实践积累。 大量中小团队开始在 Unity 的内置管线(Built-in Render Pipeline)上积累卡通渲染的工程经验, 形成了一批沉淀至今的开源 Shader 和技术博客,构成了今天独立开发者的重要参考资料库。
原神时代:技术标准的重定义(2020 年至今)
2020 年,《原神》的全球发布是卡通渲染历史上的一次技术断层升级。 米哈游在移动端实现了此前只在主机平台上才能见到的卡通渲染品质, 同时引入了一批对整个行业产生深远影响的技术方案:
- 面部 SDF 光照:使用有向距离场(SDF)贴图控制面部阴影边界, 彻底解决了传统光照模型在面部产生不自然阴影的痛点。 这一技术已经成为国内二游开发的事实标准。
- 多层材质分区:在单个角色模型上实现皮肤、头发、衣物等不同区域的差异化 Shader 表现, 需要精细的 UV 分区和材质 ID 管理体系。
- 深度描边优化:将传统的背面法线外扩与屏幕空间后处理描边结合, 在保证性能的同时实现更精细的描边控制。
《原神》级别的卡通渲染需要大规模资产管理体系、专职技术美术团队和数年迭代积累的支撑。 独立游戏在参考这些技术时应专注于理解原理,而非盲目复制完整方案。 本专题后续的文章将重点讨论如何以合理的成本实现接近效果。
PBR 与 Toon 的融合争论
现代卡通渲染的最大争议是:PBR 底层 + 卡通外观,到底是不是正确路径?
反对派的核心论点:PBR 建立在能量守恒和物理正确的假设上,而 Toon Shading 的本质是"故意不物理正确"。 用 PBR 数据驱动 Toon 渲染,在概念上是矛盾的——你在建立一套规则,然后打破它。
支持派的回应:PBR 工作流的价值不仅在于物理正确,更在于流程标准化与资产兼容性。 Metallic/Roughness 贴图提供了统一的材质描述语言,即使最终渲染风格是卡通化的, 资产管线也能保持工程上的一致性,减少项目扩展时的混乱。
实践层面,目前主流国产二游的选择是混合路径: 资产制作阶段遵循 PBR 规范(确保资产质量上限), Shader 阶段对 PBR 输出进行卡通化改造(Toon 化的光照模型替换 GGX,Ramp 替换 BRDF)。 这种方式兼顾了工业级资产管线的稳定性和风格化渲染的视觉自由度。
Unity 引擎卡通渲染能力的演化脉络
| 阶段 | 时间 | 核心能力 | 局限 |
|---|---|---|---|
| 内置管线(Built-in) | 2005–2019 | 可编程 Shader、Surface Shader 语法 | 扩展性差,难以自定义渲染流 |
| LWRP → URP | 2018–至今 | Render Feature 机制、Shader Graph 集成 | 早期版本功能缺失,社区资产兼容性问题 |
| HDRP | 2018–至今 | 体积光、高质量后处理、Custom Pass | 移动端不适用,性能门槛高 |
| Renderer Graph(Unity 6+) | 2024–至今 | 完整 GPU 资源控制、Pass 自由组合 | API 尚在迭代,文档不完整 |
给独立开发者的实践建议
了解历史的目的是落地。以下是从本文历史梳理中提炼的、对独立游戏开发者最有实际价值的三点判断:
- 选择 URP,不要犹豫。内置管线已是历史,HDRP 对大多数独立游戏是杀鸡用牛刀。 URP 是当前 Unity 卡通渲染的最佳工程选择,也是社区资产和教程最密集的地方。
- 学习描边,不要忽视。描边是二次元渲染最高频的视觉信号,也是质量差距最直接的外显。 理解至少两种描边实现(Pass Inverted + Screen-Space Edge Detection)是基本技术修养。
- 参考但不照抄《原神》方案。面部 SDF、多层材质分区这些技术是优秀的方向参考, 但需要结合你的项目规模和团队能力做适度裁剪。 本专题后续文章会提供面向独立游戏规模的精简实现路径。
主题 01 / 30 · 历史演进 · 新手友好 · 14 分钟阅读
Xmohe 独游魔盒 · Unity 二次元卡通 Shader 技术专题