首页 / 博客 / 图形
发布: 2026年1月24日 约 9 分钟 图形
风格化光照:走出卡通渲染之后

风格化光照:走出卡通渲染之后

分层阴影是所有人都知道的第一步。真正的个性藏在边缘光和阴影颜色的选择里。

只做分层是不够的

一提到卡通着色,大家首先想到的是把光照强度取整成几个台阶。单靠这一点只会显得廉价,场景看起来不像动画,而像低品质。

真正拉开差距的是这些台阶落在什么颜色上。把阴影推向光的补色而不是黑色,场景会立刻变得像是经过美术指导的。

边缘光拯救剪影

在风格化场景中,因为明暗细节很少,物体容易融进背景。所以边缘光不是装饰,而是功能性工具。

如果按摄像机距离缩放边缘光强度,远处的物体就不会过曝。一个很小的系数就能带来很大差别。

测量它的开销

认为风格化着色器很便宜的假设是错的。多层边缘光、描边和自定义阴影计算可能比 PBR 还贵。

我用 RenderDoc 测量每个着色器变体,并把 GPU 开销写进文档。当美术团队能看到预算时,他们的决策会更好。

ToonLit.hlsl
half3 ToonShade(half3 albedo, half3 N, half3 L, half3 lightColor) { half ndl = dot(N, L) * 0.5h + 0.5h; half band = floor(ndl * _Steps) / _Steps; half rim = pow(1.0h - saturate(dot(N, _ViewDir)), _RimPower); return albedo * lightColor * band + _RimColor * rim; }
hlslToonLit.hlsl

一致性就是一切

场景中所有材质必须共用同一个光照模型。哪怕只有一个 PBR 物体,也会破坏风格化场景的整体性。

因此我会写一个共享的光照函数,让所有着色器调用它。模型改一次,整个场景跟着变。

← 全部文章