游戏特效-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吧,不然节点数太哈人了。

局部溶解/局部显示效果

计算距离加噪声即可,边缘色同之前可实现。

视差漫画版

Unity URP实现漫画板效果

待补充...

posted @   溪溯P  阅读(49)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
点击右上角即可分享
微信分享提示