TA-Shader-文件 特效通用Shader功能分享
发布于
2021-4-12
9052
17
TA资源类型
TA资源类型: 算法思路 
shader资源类型: 其它 
适用引擎: unity 
资源介绍: 来着 Unity技术美术官方公众号

您需要 登录 才可以下载或查看,没有账号?注册

x

我是一名入行快"两个巴掌"的老特效了,从一个小白摸爬滚打到现在,见证了页游到精品手游的不同时代,使用的引擎和参与过的项目也是要"两个巴掌"才数得过来。但还是觉得自己懂太少,要不断学习,不然就会被时代狠狠的甩下,它才不会管你入行多少年。
市场上每年都有琳琅满目的教程不断的涌现出来,也买了不少,看了不少,被坑的也不少。很多炫技的确实很厉害,效果也非常好;但学完之后发现,这些技术用在个人作品上是挺好的,但如果放到项目中去用,可能会被程序大哥们集体围殴吧!哈哈~开个玩笑下面认真一点。
由于近两年都在用Unity开发项目,自然遇到的问题也是层出不穷,其中一个最大的痛点应该就是关于Shader方面了吧,说实话也学了不少这方面的知识,但基本都是教我们连连看。项目组也有懂Shader的程序大佬,但你的需求和他们写出的总感觉哪里不对,又不能随时叫他修改和添加功能,使用起来很憋屈,但也只能忍了(谁让咱自己不会嘞)。有时候他们得一句:‘这个加不了!’怼得我也是哑口无言。于是继续在教程海洋里不断寻找着!有一次一个朋友无意间给我推荐了一门教程,说是专门讲Shader的,问我有没兴趣。我开始以为又是连连看,没有太在意。直到有一天我打开了课程目录,天哪~!一堆我认知以外的专业名词,瞬间让我起劲了,想立刻就拥有的冲动。毕竟价格还是不便宜的,冷静下来后,上网找了一些关于目录的资源,发现这门教程真的是从很基础和底层开始教我们如何一步步的深入,理论和实践相结合。最后用我吃了一周泡面省下来的钱,我成功报名了。说实话,刚开始学习是有些小吃力,太多新名词、新知识、新概念,看了就想睡,听了就忘。感觉有点受挫,中间有持续了差不多两个月没打开过。但后来项目中遇到的问题依旧还在,再想想我当初是如何下定决心要买它的,现在又怎么对得起那一周的泡面。于是我看了一遍不会,看两遍,再加上老师的私人耐心指导,几天下来,发现效率明显提高了很多。直到做出自己的第一个纯代码写的Shader,虽然功能很简单,但成就感确是满满的。到目前我已经学了一大半,也已经能独立编写一个复杂的特效通用Shader合集了。现在在公司打开VS Code在敲代码的时候,时不时有同事走过来,不管是美术还是程序看到都会感叹一句:‘厉害呀~你居然还会写代码’。其实我也不想在他们面前显摆,但感觉实力已经藏不住了(老脸一红)。现在课程还在不断的更新内容,感觉可以学的知识真的还有很多很多。现在回头看,这个教程真是太值得了!离我的TA梦又近了一步。牛也吹完了,接下来我就分享下我最近的学习成果吧。 微信图片_20210412113414.jpg
课程中也有教用C#如何去自定义化材质界面,但是我还没学,所以暂时放个原生版的~
这里根据整个Shader的参数面板,大致说明下各模块功能。

1.渲染模块(Render)
包含:混合模式、面剔除、深度写入、深度测试。

2. 模板缓冲区(Stencil)
这里面也是将整个‘模板缓冲区’的参数都暴露出来提供使用。

3.主纹理区(Base)
这里除了基本的颜色、UV流动速度、颜色强度外;还加了UV是否平铺、去色、UV反转和旋转功能。这样可以让一张贴图的可用性最大化。另外还加了一个遮罩的颜色调节功能。

4.扭曲模块(Distortion)
这个模块看去比较简单,只有一个贴图属性加一行四维参数,前两个是UV速度,Z值是控制主纹理,W值用来控制溶解纹理(因为溶解的参数都用满了,为了省资源才放到这)。但后面流光和遮罩图片也都会受这到扭曲的影响,当然这个模块不勾选,所有扭曲都失效。

5.流光模块(Streamer)
这个确实是最简单的模块,只有纹理、UV速度、强度、扭曲强度可以调节。

6.遮罩模块(Mask)
这里面也加入了和主纹理一样的UV平铺、反转、旋转等功能。除此之外还有一项遮罩类型可以选,可以是它自身做遮罩,也可以将它和主纹理去色后相乘的结果做遮罩。

7.溶解模块(Dissolve)
这无疑是功能最复杂的一个模块,为了做出好的溶解效果,功能也是一加再加。按顺序分别是:亮边颜色、纹理,软硬边、整体溶解范围、亮边宽度、亮边强度、纹理溶解范围,UV速度的过渡、两次采样的UV速度,溶解纹理和遮罩纹理的过渡(未开启遮罩模块,会和去色后的主纹理进行过渡)。大家看到这可能会对这些功能一头雾水或充满疑惑,后面用实际案例向大家演示效果。

8.边缘光(Rim)
也就是我们熟知的菲涅尔效果,这里除了常用的颜色、边缘亮度、范围、里面亮度,还加了个反向的开关。

接下来我就根据每个模块,挑一些功能来比较详细的说明下实现思路和效果展示。

一、主纹理区(Base)

    微信图片_20210412113509.gif
  • Wrap Mode:这里实现的思路就是将uv.xy小于0的值都为0、大于1的值都为1。
  • UV Reverse:UV反转比较简单只要将uv.x = (1-uv.x); 即可。
  • Luminance:去色有一个专门的内置函数,再用一个Lerp来做。
  • Rotate:关于旋转的话,这里还要注意一下,我这里做出来的结果不是以360为一圈,主要是为了节省计算量,省去了把弧度转角度的计算。


二、扭曲模块(Distortion)


   
  • 扭曲:对主纹理、流光、遮罩和溶解四处都有产生影响,但必须在勾选时它们才有效果。
  • 一开始是用Lerp来实现扭曲的效果,但发现数值太大或太小时,会对UV重复度产生明显的变化。后面就采用了(uv + 扭曲贴图 * 强度系数)的方式实现。

三、流光模块(Streamer)


   
  • 这个模块相对比较简单,就是将流光的纹理乘到主纹理上,再加上颜色,UV速度,强度和扭曲参数。

四、遮罩模块(Mask)


   
  • 在遮罩模块里,也加入了和主纹理一样的几个功能,具体实现方式可以参考上面的内容。
  • Mask Type:这个功能也是从实际项目中总结出来的。实现原理也很简单,只要将主纹理去色后,取一个通道和遮罩的一个通道相乘,就得到了它们交集的部分做遮罩。


五、溶解模块(Dissolve)


   
  • 溶解的部分稍微会复杂一些。整体思路就是我们根据贴图和调节参数计算出三个区域,我们按范围从大到小先分别用a、b、c来命名,下面分别带入讲解。
  • Mask Color:这里可以改变遮罩的颜色,这样在溶解时,底色就不永远是纯黑色。这个的实现方式只需要在最后把(a - b)*  Mask Color的值加到最终的结果里即可。
  • Clip:这个是整体的溶解范围,也就是a的值。
  • Main_Clip:这个是纹理部分的溶解范围,也就是b的值,它和最终的纹理相乘就是中间显示的纹理。
  • Edge:亮边宽度,也就是(b - c)的值,用(b - c)* Intensity * Dissolve Color,就可以调边的粗细、亮度和颜色了。
  • Dissolve Range:这个是用来调节遮罩的软硬边,具体思路的话就是把a 除以Dissolve Range的值。当Dissolve Range等于1时,a为本身;当Dissolve Range的值越接近0,a的多大于1的面积越大。然后再用clamp把最终的值控制在0~1之间。由于分母不能为0,就把Dissolve Range控制在0.01~1之间,这样就实现了软硬边和调节。
  • UV Range:我在制作效果的时候发现,溶解的纹理静止不动显得比较死板,但如果只是匀速运动也不够优美,于是我给它采样了两组的UV,分别调速度,并让它们通过Lerp来融合,并形成了生动的效果。
  • Mask Range:对于溶解的纹理也是,让它和Mask Tex进行过渡融合,可以让融解变得更生动,但发现如果没有勾选Mask时,这个功能会出问题。于是我把主纹理引入,并可以在没勾选Mask时与它过渡。
  • 上面就展现了Clip配合Mask Range一起使用,可以制作出更丰富的效果。

六、边缘光(Rim)


   
  • 这个功能也比较常用,就是大家熟知的‘菲涅尔’效果,把公式搬过来,加入对应的参数就可以实现了。对于Invert的话,我的实现方式就是(1 - fresnel),做了个取反的效果,让它可以中间亮。

关于这个特效Shader的主要功能就讲解完了。然后这里面的每个模块功能都是用’shader_feature’来控制开关,在不用的情况下直接不勾选,对功能和性能方面能兼顾到。上面的分享也是一些自己尚潜的思路,具体在把它们串起来的过程当中还是遇到了不少问题,每个模块的开启或关闭对其它模块是否会产生错误的影响,都要不断测试和修改才能完成的。如果大家有更好的方法或对以上内容有不同的看法也欢迎一起探讨。






本帖被以下画板推荐:

在奋斗中学会享受,在享受中学会奋斗!   -传说哥

使用道具 举报 登录

回复 <
CG沣  发表于 2021-4-13 09:45:57  
2#
阿这,这资源真好啊
回复 收起回复
使用道具
颜龙  发表于 2021-4-13 10:02:26  
3#
想要,不会shader的福音啊
回复 收起回复
使用道具
黄小厨  发表于 2021-4-13 14:51:09  
5#
很好的帖子,很有诚意
回复 收起回复
使用道具
挚爱丿蓉儿  发表于 2021-4-15 14:14:58  
6#
好帖子,给赞了~
回复 收起回复
使用道具
永和站神大龍貓  发表于 2021-4-19 17:43:02  
7#
大佬66666666666666
回复 收起回复
使用道具
zero0602  发表于 2021-4-23 19:49:25  
8#
这已经是技美。不是特效
回复 收起回复
使用道具
cqchenweijiang  发表于 2021-6-10 12:32:36  
9#
请问这个教程地址在哪,我想看看,对此非常感兴趣,麻烦楼主发下教程地址
回复 收起回复
使用道具
肆月  发表于 2021-8-16 20:09:17  
10#
美术转TA牛啊牛啊
回复 收起回复
使用道具
yangrun  发表于 2022-6-14 18:38:04  
11#
这世上没有什么是元素币搞不定的,如果有,那就用更多。
回复 收起回复
使用道具
素食熊  发表于 2022-8-11 16:34:36  
12#
真不错啊
回复 收起回复
使用道具
link66666  发表于 2022-8-17 14:10:15  
13#
资源哪里好,肯定元素找。
回复 收起回复
使用道具
bigcow48  发表于 2023-7-19 17:31:03  
14#
真不错
回复 收起回复
使用道具
megane  发表于 2023-9-2 15:30:18  
15#
回复 收起回复
使用道具
787084951  发表于 2024-6-17 09:19:01  
16#
阿这,这资源真好啊
回复 收起回复
使用道具
chenjinwen00  发表于 2024-6-26 14:36:18  
17#
每天一早上元素,挖矿撩妹两不误。
回复 收起回复
使用道具

快来发表你宝贵的意见吧!

丿不会呼吸的鱼 实名

通过了实名认证的内容创造者

3D场景设计师

主题
193
精华
41
超神
1
扩散
387
微金
247
智慧
1002
余额
0
在线时间
13706 小时

翡翠剑 学徒法袍 赤铁剑 英雄盾 铁剑 钢盾 钢剑 长剑 元素铜币 元素银币 元素金币 元素秘币 短杖 碧之轨迹 长枪 双杀 龙枪 六维几何 裁决 火元素 暴风之眼 小苹果 蓝色药水 赤色药水 紫色药水 钢铁矿镐 彗星钛晶矿 阿尔法晶矿 泰坦高能矿 守望者【EX】 守望者【天使】 吃鸡头盔 冰晶剑 黑珍珠戒指 玫瑰金项链 【绝】真-黑珍珠戒指 【绝】千人纪念徽章 橙色药水 赛博空间 无色原始矿 绿母翠晶矿 怀特紫星矿 粒粒皆辛苦 微库VIP(失效) 莆田鞋 魔法扫帚 魔法帽 烈火长枪 青戒之钻 圣诞帽

快速回复 返回顶部 返回列表