[Shader]Cel Shading and Tone Based Shading

Oct 1, 2021


卡通渲染:

卡通渲染最关键的特征包括不同于真实感渲染的艺术化光影效果和描边。以这两个关键的特征为卡通渲染分类的话,可以将近年来游戏中常用的卡通渲染分为美式卡通风格和日式卡通风格。美式卡通风格在色彩上比较连续,有渐变色,着色风格很大程度上依赖于艺术家定义的色调(tone),而在阴影和高光方面常常采取夸张和变形的做法,比较典型的是《军团要塞2》;日式卡通风格往往角色造型更写实,但在着色方面,则趋向于大片大片纯色色块,并有的明暗交界,例如《崩坏3》。

描边:

1、基于视角的勾边:物体表面法线与视角相切;基于视角的描边,最大的缺点是线宽粗细差别较大,不易控制;

2、基于几何生成方法的描边:比较常见的做法是shell method,原理和实现都比较简单:首先在绘制结束正常的模型后,将需要描边的物体改用正面剔除再绘制一遍,在顶点着色中将顶点沿着法线方向膨胀一定距离,然后在片段着色中将模型用纯色输出。另外一种叫做z-bias的方法,也是绘制背面,但不膨胀,而是把背面顶点的Z值稍微向前偏移一点点,使得背面的些许部分显示出来形成描边效果。基于shell method的绘制方法,实现简单,线宽较为均匀;

3、基于图像处理的描边:

着色:

1、Cel Shading(突变,纯色色块):基本思想是把色彩从多色阶降到低色阶,减少色阶的丰富程度,从而实现类似手工着色的效果;

2、Tone Based Shading(渐变,类似半兰伯特光照):日式卡通的着色(日式卡通在着色方面比较典型的特点是以大量纯色为主,进一步说,往往只有“明暗”或者“冷暖”两个色阶,因此光照计算往往最后也要映射到离散的色彩表上)、美式卡通的着色。

风格化高光和阴影:

1、可变形状的高光:

①平移:改变高光的位置;

②有方向的缩放:沿着切线空间的某个轴缩放高光形状;

③分割:将一块连续的高光切分成两块;

④方块化:将趋于圆形的高光变成方形;

2、风格化阴影:

①膨胀/腐蚀(Inflation):扩大或者缩小阴影范围,用参数i来控制;

②亮度(Brightness):阴影区域的亮度,可以用于模拟半影区的效果,用参数b控制;

③柔度(Softness):阴影边界处的柔和程度,用参数s控制;

④抽象度(Abstraction):阴影形状的抽象程度,用参数alpha控制;

图片