找回密码
 立即注册
查看: 357|回复: 5

[简易教程] Unity ASE 黑白闪Shader教程

[复制链接]
发表于 2022-2-11 17:45 | 显示全部楼层 |阅读模式
因为这个东西不难,三五分钟就能做出来,就算带上讲解也就不到10分钟,所以就出一个教程。
材质模板设置

像阴影投射  接受阴影 雾效什么的不使用的都关掉,选择半透明模式,LightMode设置成Grab。


Grab是什么?

Grab是在URP管线设置时的抓取部分,不同的项目可能设置的有些区别,这里标注一下。
如果对于URP管线获取图像不了解,可以使用RT图(RenderTexture)去制作。




材质制作部分

一、抓取屏幕颜色

我们使用屏幕UV,输出抓取的屏幕颜色的单通道,效果正常
如果对于URP管线获取图像不了解,可以使用RT图(RenderTexture)去制作。




二、将屏幕灰度图转为黑白

通过smoothstep校正,灰度区间,如果最小最大接近于0.49-0.51之间 就越接近完全黑白,如果在0-1区间,那么就是接近灰度图。






三、极坐标流动纹理

拿屏幕UV 设置极坐标的中心,UV密度,将计算后的UV给到贴图,再输出到灰度控制。




这时会发现画面中本来就不多的白色,通过乘后就变的更少了,所以这里选择的是,原有的白色+屏幕黑白*纹理。




这里还是要说一下,因为算是个可预知的问题,比如说原来屏幕颜色就是0-1,那么我又在0-1上加了一层再计算smoothstep,会不会让颜色超过1,出现溢值问题那(颜色超过1)。

float smoothstep(float t1, float t2, float x) {
x = clamp((x - t1) / (t2 - t1), 0.0, 1.0);
return x * x * (3 - 2 * x);
}

这里查了一下smoothstep的公式可以看到,他是有clamp的0-1区间的,那就没有必要再去使用饱和节点去限制了。


四、反向计算

现在我们只有一种白黑配合,我们要知道黑白闪是需要黑闪和白闪搭配使用的,这时我们就可以使用黑白切换去插值计算,正常输出与反向输出。






五、粒子配合

虽然我们可以用动画滑杆控制,但是这个效果完全没必要K动画,我们可以使用粒子的顶点颜色A通道控制,也就不用模型片贴在摄像机前面了。粒子参数这种非常基础的东西我就不做过多解释了,就是在摄像机前面发射一个足够挡住画面的粒子,这里需要说的是color动画,黑白闪本身存在的时间就不长,也有用在终结杀配合慢动作的这里先不讲,直说短暂的黑白闪,黑白切换要快不能看出明显插值所以颜色渐变要这么做,才能闪。


六、红黑闪

其实就在最后输出的时候乘下颜色就好了,反正屏幕内的颜色已经划分成非黑即白,那么我们让白色的换成红色的就可以了。








同理你想闪其他颜色也可以


其他拓展

其实到这,我的笔记本来做完了,突然就想,那我的颜色要是不是纯色那?屏幕UV拿过来乘tiling给到图,乘上输出颜色。其实由此衍生出来的玩法,就更多了。UV流动扰动,闪点等等很多玩法就都可以混合在第二纹理里。





本帖子中包含更多资源

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

×
发表于 2022-2-11 17:46 | 显示全部楼层
先点赞、评论完再看[口罩]
发表于 2022-2-11 17:54 | 显示全部楼层
点赞了 点赞了 别骂了别骂了
发表于 2022-2-11 18:02 | 显示全部楼层
已赞
发表于 2022-2-11 18:06 | 显示全部楼层
怎么解决把后面的半透明物体遮住的问题[捂脸]
发表于 2022-2-11 18:09 | 显示全部楼层
优秀人
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-5-6 07:42 , Processed in 0.103168 second(s), 26 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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