Unity Shader 卡通渲染 (二):仿塞尔达荒野之息 Shader(高光、平滑)

该博客介绍了在Unity中创建塞尔达荒野之息风格卡通渲染Shader的方法,主要关注高光和平滑效果。作者首先通过视角和光照方向的结合实现基本高光,然后利用smoothstep函数进行边缘平滑处理,以消除锯齿感。最终Shader实现了更加柔和的卡通渲染效果。
摘要由CSDN通过智能技术生成

上一篇传送门:

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 值。(或者用下一篇讲的顶点色控制)

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值