Unity ShaderGraph实现发光溶解效果(一)
Unity版本:2022.3.45fc1
第一步,创建一个2D的URP项目
第二步,Global Volume
辉光效果是一个后处理效果,为了实现它,需要创造一个全局体积(Global Volume)。
然后,在Global Volume的inspector面板new一个新的Volue Profile。
添加Override,选择Post-processing(后处理),选择Bloom(辉光或者说泛光),并设置为All。
着重介绍前三个属性:
Threshold是一个阈值,只有HDR颜色的强度超过这个阈值,才会对该部分进行后处理
Intensity是强度,这个会影响到全局的泛光强度。
Scatter是散射,影响的是泛光的发光范围。
第三步,创造Shader Graph和用于演示的物体
创建了一个2DSprite物体,图片资源大家可以选择自己喜欢的。
右键Create->Shader Graph->URP->Unlit Shader Graph
创造一个ShaderGraph,这里命名为Dissolve,并用其创建一个material,命名为matDissolve。
溶解效果的原理
c#
1 | 溶解效果的实现原理其实是通过一个平滑的噪声来作为片元的alpha值(此处的alpha值并非透明度,而是一个参数) |
首先进行主纹理的采样,创建一个主纹理外部变量,将其默认值设置为你想要的图片,经过采样节点后链接到片元着色器。
创建一个simple noise节点,为了减小噪声的变化速度,我们将scale设置为20
与此同时,在Graph Inspector界面中,将Surface Type设置为Opaque,并勾选Alpha Clipping
添加外部float变量:溶解值,为了方便起见,设置Mode为slider(滑动条),最大值和最小值分别设置为0和1,值得注意的是,Reference不能设置为中文,需要手动设置成英文。
将溶解值链接到Alpha Clip Threshold上。
下一期我们会介绍如何实现泛光效果。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Europa Superman 's blog!