上一篇传送门:
https://blog.csdn.net/qq_27534999/article/details/100661120
本篇会在上一篇的基础上,添加高光与平滑效果。
一、高光
塞尔达中的头发高光应该是用普通高光加上额外贴图控制的,这边先做普通的高光。
还是用老办法,视角方向和光照方向相加后归一化,之后与法线点乘:
fixed3 worldHalfDir = normalize(worldLightDir + worldViewDir); //高光计算用
...
fixed spec = dot(worldNormal, worldHalfDir);
fixed4 specular = _Specular * lerp(0,1,step(0, spec+_SpecularScale-1)) * step(0.001, _SpecularScale);
...
fixed4 rim = light * rimStep * 0.5 * diffStep * _RimColor;
效果如下,脸部其实不应有高光的,但模型是一体的,没法分别设置参数。
建议把需要高光的模型单独拆出来,设置合适的 SpecularScale 值。(或者用下一篇讲的顶点色控制)