游戏特效-Unity Shader Graph
最近由于一些原因需要使用UE5开发,于是体验了一下UE的shader蓝图系统,感觉开发效率大大提升了,虽然功能简化了很多,但对大部分效果而言用蓝图开发确实比写Shader方便。遂计划在Unity中用shader graph快速实现一些特效以学习思路。
参考自教程:Unity ShaderGraph使用教程与各种特效案例’
先看效果自己尝试实现,然后再看教程实现,这里用内置的unlit材质实现。
边缘向内发光
直接用菲涅尔。
带方向的边缘发光
点乘一个法线即可。
裁剪效果
我这里按屏幕坐标裁剪,最理想应该是裁剪范围正好和模型尺度一致。用alpha clip实现,感觉Shader graph中的alpha cilp的逻辑怪怪的。
带边缘色的裁剪
给可见区域的颜色加上一个渐变边缘色,再用Pow缩小渐变区域。
溶解/带边缘色的溶解
镜音铃的消失(×),增加一点点alpha值后用step得到alpha cilp后的结果,减去原来的就能得到边界。
卡通阴影
手动实现了Sample Gradient(如果是一些Graph没有提供的方法,用Graph来写还是有点麻烦的,不少语法是需要多个模块组合实现的),由分块的阴影和边缘光组成。
水波纹
采样纹理随时间偏移,然后和原颜色插值即可。
积雪
可以通过增加噪声纹理修改积雪区域,但边缘处效果不太好,而且没有遮挡关系。
不锈钢效果
😇没想到怎么实现的,用切线空间下的视线方向采样噪声纹理,虽然能想到和视线方向有关,但确实想不到要在切线空间下。
UV抖动
正如其名,不是顶点抖动,而是在采样UV时对相同V值的UV坐标做一个同方向的偏移。
只有在纹理图片中各表面的贴图之间有一定距离,且都是正向绘制时才有比较好的效果,不然就会像下面这样很鬼畜。
水面上下波动效果/红旗飘飘
都是经典的沿法线偏移顶点,偏移量采样噪声纹理得到,这里就不实现了。
马赛克
这里的马赛克是指对某个画面处理的效果,而不是马赛克处理纹理后采样绘制到模型表面(和前面的直接作用于纹理不一样)。
Posterize:分色,即连续的颜色被固定数量离散的颜色替代。
用Posterize实现马赛克样式的UV,采样即是马赛克。
无贴图水球
依旧是对UV进行处理,先对V坐标step出基本的水位效果,然后加偏移同时随时间变化。
无贴图火焰
用两个Voronoi噪声纹理叠加实现,卡通火焰效果。案例是设置了一个火焰的中心点,按到中心点的距离插值,为方便我直接从下往上插值了。
无贴图漩涡
关键是Twirl的使用,使UV绕中心点环形偏移,且越远偏移越多。噪声这块用哪种效果都差不多。
Twirl-Node文档:按到中心点的距离旋转UV坐标。
个人感觉属于比较好看的一档。
无贴图闪电
不难实现,为确保闪电粗细尽量一致,需要Power处理一下,使纹理在Step设置的值附近(0.7)变化率足够大。
全息效果
由菲涅尔计算的边缘光,从上到下的扫描线以及缓慢移动的水平线条纹理组成。正常应该为透明材质,但这里没有给非透明材质,是因为模型非透明效果非常不好。另一块我看案例用的是模型坐标,这里我人物在模型坐标下是躺下的,所以用世界坐标处理了。
水波纹特效
一个环形的UV偏移效果,且越远离中心点程度越小。一开始我对UV向外偏移实现(法线贴图如下),效果有但不像水波纹。
看了下大佬案例的实现,感觉应该是向中心的对称点偏移才对。
改了改后感觉好了不少。
高斯模糊
直接写shader或者用custom function吧,不然节点数太哈人了。
局部溶解/局部显示效果
计算距离加噪声即可,边缘色同之前可实现。
视差漫画版
待补充...
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)