温馨提示:
本系列文章面向那些 Shader 刚刚入门,想寻求进一步提升的群体,如果对 Shader 一无所知的话,建议自行搜索其他 Shader入门教程观看学习,再食用本系列文章。
前言:
说起卡通渲染,就不得不提 《塞尔达:荒野之息》。
《塞尔达:荒野之息》可谓 2017 年的神作了,击败了众多 3A 大作,成为了当年的年度游戏。其采用的卡通渲染的美术风格也算是一大亮点(也可能是 Wii U 和 Switch 机能限制所致)。
当年想模仿一下它的风格,可惜技术捉急…… 如今 Shader 神功已有小成,就想着尝试一下。
因为主要在移动端开发,因此本系列文章都会采用 Vertex & Fragment Shader,非常纯净。
今后可能还会做一些其他风格的卡通渲染,不过目前就先以《塞尔达:荒野之息》的风格作为起点吧!
话不多说,先打开游戏,截个图作参考:
由图可见,塞尔达荒野之息的卡通渲染十分简单明快,主要有三个要点:亮部、暗部、边缘光
当然仔细看的话,头发是有高光且有特殊处理的,不过这篇如题 “简易版”,就不考虑那么多了,先把上边这三点做完。
一、准备工作
首先,在目录下新建一个 Unlit Shader。
获取三个常用素材,法线 N,光照方向 L,视角方向 V。
熟悉 Shader 的一定知道,这里就不多说了,直接贴代码:
struct appdata
{
float4 vertex : POSITION;
float2 uv : TEXCOORD0;
float3 normal : NORMAL;
};
struct v2f
{
float2 uv : TEXCOORD0;
float3 worldNormal : TEXCOORD1;
float3 worldPos : TEXCOORD2;
UNITY_FOG_COORDS(3)