element3ds.com
原创TA-Shader [Unity] 【unity】shader的溶解效果,定性溶解和中心溶解
发布于
2021-4-20
15229
24
原创TA/Shader
Shader信息: 节点shader文件
Shader类型: 特效 
工程信息: 仅shader文件 
使用的版本管线: -

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

x
价格:200元素币收益:10200元素币 销量:51

尊敬的游客 ,本内容需要支付后可见.
您可以[充值][发帖] [悬赏] [任务]来赚取积分。

溶解效果是一个很基础的效果,本文是对溶解效果的一个简单的总结,作为一个记录以达到技术积累的目的。同时会在GitHub实现一个小例子,来验证理论。
溶解效果
要实现溶解效果,最重要的就是让某些像素显示,某些像素消失,如下图所示。
image.png
为了实现这种效果,我们需要标记哪些像素要显示,哪些像素要消失,于是使用一张噪声图来给每一个像素做标记(Mask)。如下图所示,这个噪声图就是在Photoshop里用“云彩”工具生成的。由于噪声图的随机性,使得像素的显示和消失显得非常不规则,也就满足了对不规则溶解效果的需求。
mask2.png
在shader中“抠掉”一个像素,可以使用clip函数。在片段着色器中调用clip(x)即可丢弃这个像素,其中x为数字,当x小于0.0,该像素则会被丢弃。
在片段着色器中根据当前uv,采样噪声图,就可以获得一个遮罩值。通常的实现方式为clip(遮罩值 - 阈值),这句代码表示当遮罩值小于阈值时,则当前像素会被丢弃。如果阈值会从0到1动态变化,那么在游戏里将会看到一个动态溶解的动画过程。
以上就是溶解的基本原理。
half dissove = tex2D(_DissTex, i.uv).r;clip(dissolve - _Clip);



定向溶解
有的时候,溶解需要有一定的方向性,比如纸张从左下角往右上角燃烧的效果。设clip = dissolve - _Clip,那么我们可以在clip的基础上,给一个方向相关的因子,即clip = clip + worldFactor。其中worldFactor就是方向相关的因子。
这里给出一种方向相关因子的计算方法。以下为计算worldFactor的顶点着色器代码。
float4 worldPos = mul(unity_ObjectToWorld, v.vertex);float3 rootPos = float3(unity_ObjectToWorld[0].w, unity_ObjectToWorld[1].w, unity_ObjectToWorld[2].w);float3 pos = worldPos.rgb - rootPos;float posOffset = dot(normalize(_DissolveDir), pos);o.worldFactor = posOffset;


其中rootPos为物体质心所在的坐标值,因为世界变换矩阵的w行向量即为世界位置(详细请搜索世界矩阵介绍和推导相关文章)。worldPos为当前顶点所处世界位置,在Unity里需要注意这里不允许动态合批,否则worldPos就失效了。那么worldPos - rootPos就可以求得顶点偏离模型质心的偏移向量,最后偏移向量在_DissolveDir方向上的投影长度就是我们所需要的方向因子,因为投影越长,那么在_DissolveDir方向上像素离质心越远。
最终在片段着色器里如下实现即可。
fixed dissove = tex2D(_DissTex, i.uv).r;dissove = (dissove - _Clip) + i.worldFactor * _WorldSpaceScale;clip(dissove);
顶点溶解
有的时候,溶解需要从中心点向外溶解,或者从某一点开始向外溶解。这个就比较简单了,根据定向溶解的原理,最重要的是找到一个因子。顶点溶解的因子根据像素离中心点距离来求得即可,也就是使用distance函数就可以求得。代码如下。
fixed dissove = tex2D(_DissTex, i.uv).r;float dist = distance(_DissolveCenterUV, i.uv);dissove = dissove + dist * _WorldSpaceScale;
总结
本文实现的效果如下。

参与人数 4 元素币 +50 活跃度 +55
还没有设置签名!您可以在此展示你的链接,或者个人主页!

使用道具 举报 登录

回复 <
ZhaoZG  发表于 2021-4-20 10:14:58  
2#
好东西 谢谢分享
回复 收起回复
使用道具
癫狂柳絮随风舞  发表于 2021-4-20 13:26:36  
3#
感谢分享~
回复 收起回复
使用道具
挚爱丿蓉儿  发表于 2021-4-21 14:05:38  
4#
感谢楼主分享
回复 收起回复
使用道具
wangaiqian1016  发表于 2021-4-21 16:28:37  
5#
溶解可以哈哈
回复 收起回复
使用道具
l387692051  发表于 2021-4-21 16:37:43  
6#
感谢楼主分享
回复 收起回复
使用道具
Weidaliya  发表于 2021-4-21 20:14:57  
7#
真心不戳,感谢大佬分享
回复 收起回复
使用道具
墨泪  发表于 2021-4-21 20:41:05  
8#
缺的就是这个
回复 收起回复
使用道具
落雪成白  发表于 2021-4-22 01:00:04  
9#
更新
回复 收起回复
使用道具
qq_larxio_W00  发表于 2021-4-22 09:24:42  
10#
真不错~快去研究一下
回复 收起回复
使用道具
几点_77  发表于 2021-4-22 12:19:39  
11#
感谢楼主分享
回复 收起回复
使用道具
areis  发表于 2021-4-22 13:03:34  
12#
每天三铁~蒸做论坛发烧友
回复 收起回复
使用道具
仙剑_3  发表于 2021-4-22 18:07:01  
13#
666666666666666
回复 收起回复
使用道具
瞄了个咪的  发表于 2021-4-23 09:48:39  
14#
回复 收起回复
使用道具
areis  发表于 2021-4-23 10:15:02  
15#
每天一早上元素,挖矿撩妹两不误
回复 收起回复
使用道具
areis  发表于 2021-4-25 11:48:25  
16#
资源哪里好,肯定元素找
回复 收起回复
使用道具
areis  发表于 2021-4-26 11:23:23  
17#
资源发布哪家强?元素首发称大王
回复 收起回复
使用道具
瑷珀尔  发表于 2021-4-27 10:10:50  
18#
厉害厉害厉害
回复 收起回复
使用道具
七海之风  发表于 2021-10-26 09:39:08  
19#
这个旧管线也可以用吗?
回复 收起回复
使用道具
SHY1231  发表于 2021-11-16 17:23:17  
20#
好东西 谢谢分享
回复 收起回复
使用道具
12下一页

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

清晨丷 实名

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

  

主题
18
精华
2
超神
1
扩散
178
微金
2758
智慧
480
余额
0
在线时间
683 小时

无色原始矿 绿母翠晶矿 短杖 彗星钛晶矿 扩散者 学徒法袍 钢剑 粒粒皆辛苦 赛博空间 黑珍珠戒指 双杀 元素铜币 元素银币 元素金币 莆田鞋 长剑 元素之钻 长枪 火元素

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