卡通渲染
卡通渲染(Toon Shading)是非真实渲染的常见效果之一。
通常卡通渲染的内容包含以下几个基础部分:
- 对物体进行描边
- 降低色阶的数量并模拟色阶不连续现象
- 阴影形状干扰等
Creator 提供了内置卡通渲染着色器 ,以此为例,我们在材质资源中将 Effect 属性中的着色器切换为 builtin-toon.effect
,可以看到卡通渲染由两个渲染过程(Pass)组成:
- 渲染过程 0(Pass 0):用于描边,默认不启用,可勾选右侧的 USE_OUTLINE_PASS 开启。
- 渲染过程 1(Pass 1):正常渲染模型
渲染过程 0 会将光栅化状态中的剔除模式选择为正面剔除()并将模型的顶点沿法线进行扩张,由此得到一个比原模型较大的单色模型,之后 渲染过程 1 会正常渲染一次模型并遮盖住 渲染过程 0 的渲染结果,由于 渲染过程 1 的模型尺寸小于 渲染过程 0 的尺寸,因此会留下一个纯色的边缘形成描边。
渲染过程 0 可通过勾选 USE_OUTLINE_PASS 开启或关闭。
当勾选 USE_OUTLINE_PASS 开启 渲染过程 0 的描边功能后,效果图如下:
若需要调整描边的深度效果,可通过 DepthBias 属性进行调整:
当不勾选 USE_OUTLINE_PASS 关闭 渲染过程 0 的描边功能后,效果图如下:
卡通渲染的核心思路是通过降低色阶的数量,模拟器卡通中的赛璐璐(Celluloid)画风。
在着色器中将色阶降低为三个色阶,并通过三个颜色组成:
- baseColor:基础颜色
- shadeColor2:二阶着色的颜色
其颜色与编辑器材质属性的对应关系如下图:
勾选 USE_1ST_SHADE_MAP 和 USE_2ND_SHADE_MAP 的情况下,使用外部进行纹理模拟色阶不连续现象。