参考示例:

崩坏三冰律Boss中的冰块效果



塞尔达荒野之息中的冰材质



实现效果



实现思路

材质-1:

 查看动图可以发现材质是半透材质然后由两层闪烁的亮部(一层较亮,一层较暗)、一层固有色、高光外加一个外勾边组成。

外勾边的实现就不赘述了,两层高光的实现想法如下

我的想法是计算lambert模型后step出两层的范围,Blinn-Phong模型计算的高光范围。









   但是动图中的视角是在旋转的,可是面向我们的一面都是有在闪烁的,我的想法是:会不会光源方向也是一同旋转的,我就拿一个空物体挂在相机上,调整好合适位置后计算和冰块材质的向量作为光源方向传给shader。

闪烁部分拿三层颜色做lerp,Time做周期闪烁,加上随机即可。

材质-2:

首先是半透材质,有uv流动,扭曲和折射效果外加一层边缘光。

折射部分:



这个折射实现是对抓取屏幕的_GrabTexture的uv使用Normal的xy相乘得到偏移并叠加到屏幕坐标的xy上。


扭曲和uv滚动部分:

 我使用了三张噪声图,(可以把三张图存在一张图的三个通道里)一张图横向滚动另一张纵向滚动,第三张计算扭曲:拿该噪声图的xy叠加到流动噪声图的uv上,(类似热扭曲的计算),再将横向流动乘上纵向流动,并使用该值作为透明度A值。

Unity Shader-热空气扭曲效果 blog.csdn.net卡通冰材质的简单实现-LMLPHP



即可得到如下图所示效果



固有色部分:

MainColor * BaseTexture即可。

边缘光部分:

使用的是Fresnel值做step乘上RimColor(边缘光颜色)


最后将固有色部分乘上扭曲和uv滚动部分再加上边缘光部分即可。






声明:发布此文是出于传递更多知识以供交流学习之目的。若有来源标注错误或侵犯了您的合法权益,请作者持权属证明与我们联系,我们将及时更正、删除,谢谢。

作者:Kirkice

原文:https://zhuanlan.zhihu.com/p/186145206



More:【微信公众号】 u3dnotes

卡通冰材质的简单实现-LMLPHP


本文分享自微信公众号 - Unity3D游戏开发精华教程干货(u3dnotes)。
如有侵权,请联系 [email protected] 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

09-10 04:09