参考示例:
崩坏三冰律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
即可得到如下图所示效果
固有色部分:
MainColor * BaseTexture即可。
边缘光部分:
使用的是Fresnel值做step乘上RimColor(边缘光颜色)
最后将固有色部分乘上扭曲和uv滚动部分再加上边缘光部分即可。
声明:发布此文是出于传递更多知识以供交流学习之目的。若有来源标注错误或侵犯了您的合法权益,请作者持权属证明与我们联系,我们将及时更正、删除,谢谢。
作者:Kirkice
原文:https://zhuanlan.zhihu.com/p/186145206
More:【微信公众号】 u3dnotes
本文分享自微信公众号 - Unity3D游戏开发精华教程干货(u3dnotes)。
如有侵权,请联系 [email protected] 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。