Unity Shader学习:Dissolve消融效果
消融效果在游戏里非常常用,这里简单的实现下,代码里用到了if分支在shader里可能会费一点,如果想直接用puppet_master大佬版本的话可以自己改一下,主要if分支比较好理解,大佬的写法比较绕但是没用到分支,性能可能更好。
消融效果基本原理:利用噪声图的随机使主贴图在相应的位置逐渐剔除噪声颜色值小于一定阈值的像素,再在更靠内(噪声颜色值比阈值稍大一点)的地方安排一个内边缘,在内外边缘之间显示渐变的消融颜色。
shader部分:
Shader "Custom/DissolveEffect" {
Properties {
_MainTex("MainTex",2D)="white"{
}
_NoiseTex("NoiseTex",2D)="white"{
}
//高光大小
_Gloss("Gloss",Range(0.0,20.0)) = 20.0
//高光强度
_SpecularFactor("SpecularFactor",Range(0.0,5.0)) = 1.0
//消融阈值
_DissolveThreshold("DissolveThreshold",Range(0.0,1.0)) = 0.5
//消融系数(消融边界值=消融系数*消融阈值)
_HalfDissolveThresholdFactor