在游戏中,角色身上部件的高亮Bloom效果是游戏中比较基础且常见的效果。本文将带大家实现游戏中角色身上部件的高亮Bloom效果,同时也会用到Unity中Post Processing(后期处理)相关的基础功能。
Bloom
Bloom是一种图像后期处理的效果,可让高光部分更加的强烈,产生散射开的效果,从而使游戏画面更美观、生动。
实现角色身上部件的高亮Bloom效果,简单来说其原理就是对该部件处的颜色进行效果加强。通常的做法是,准备两个贴图资源,一个是角色本身的贴图资源,另一个是角色身上需要高亮部件的黑白贴图资源,如下所示。
将上面两个资源进行叠加合并,再对眼睛部分使用HDR颜色叠加,然后加上Post Processing的Bloom效果就可以得到文章开头所显示的最终结果。
那么如何实现呢?
首先还是需要创建一个Shader Graph文件,命名为Highlight,并创建对应的材质球M_Highlight。
基础资源显示
可参考UV滚动动画中的基础资源显示部分,节点如下所示。
眼睛的高亮部分显示
由于我没有对应眼睛部分的黑白美术资源,我这里会用另一种方式使用原始的角色资源来实现只显示眼睛部分的黑白美术资源数据。
这里会需要用到一个节点叫做Step节点,Step节点相当于一个过滤器,它分了两个输入参数,Edge代表当前输入的基础数据,In代表一个阈值,如果基础数据中小于该阈值的部分则会显示1(白色表示),大于该阈值的部分则会显示0(黑色表示)。可以理解为它是一个口径可变的漏斗,小于该口径大小的则会显示,大于该口径的则不显示。
此处我们需要再创建一个可控的阈值Float类型变量,命名为HighlightThreshold。
由于青蛙角色的眼睛为白色,只需要我们将阈值调整到足够大,则该白色部分在输出的结果中显示黑色,因为白色的值代表1。此处我们可将阈值调为0.9。由于眼睛部分白色为1大于0.9,则会在结果中显示黑色。
那么此时我们就得到了与我们期望的只有眼睛部分是白色的一个相反的数据结果,这个时候将其输出的结果进行一个用1去相减的操作,那么眼睛部分就会变成白色,因为1-0=1。此处需要用到一个One Minus的节点。
得到眼睛部分白色部分的资源后,我们可以给其添加一个颜色用来控制后续眼睛部分的颜色,将其结果与一个Color颜色节点相乘。创建一个Color变量,并设置其Mode为HDR(通过Post Processing实现Bloom效果需要用到)。
改变颜色就会在Multiply节点里看到对应的眼睛颜色效果了。
然后原来的基础数据还需要做一个操作,就是使用Subtract节点(A-B)将对应的眼睛部分的白色给去除掉,这样就可以将后续的带颜色的眼睛部分通过一个Add节点(A+B)叠加到原来基础的资源数据上然后输入到我们的Fragment节点的Base Color上就可以了。
回到Unity场景中,创建一个Sprite,将材质球指定到其上。
选择相机Main Camera,勾选上Post Processing选项,用来开启后期处理效果。
再在Hierachy视图中,右键创建一个Global Volume物体。
创建一个新的Profile,然后添加Bloom效果。勾选对应的选项,调整对应参数。
然后调节我们M_Highlight材质球上HDR颜色的Intensity和颜色就可以看到我们的高亮眼睛完成了。
标签:部分,高亮,效果,Graph,Shader,眼睛,2D,Bloom,节点 From: https://blog.csdn.net/u010338262/article/details/145207438