一. 移植shader 时,总会带有黑色的背景,如果背景和展现出来的特效颜色差别大还好,就怕特效和背景颜色特别相近,那么这种shader如何去掉黑色背景呢?
-
先看一下如下图的shader特效
之前的帖子: 2.4.x 红色闪电shader实现源码 - Creator - Cocos中文社区
-
我们都知道,在shader中,纯黑色可以这样写如下图
gl_FragColor 可以理解为,我们shader需要输出的颜色,vec3(0.) 代表的颜色值,后面的1. 代表透明度
根据上面代码,如果要实现透明背景,那么我们需要根据颜色值,从而计算当前颜色下的透明度,
既,背景的部分,我们需要设置它的透明度为0.,让它完全透明,背景与颜色有重叠的部分,我们要根据颜色值,做适当的判断,一定范围内的值,设置它的透明度为0.,如下图代码:
上图代码,我取的颜色值x、y、z的绝对值的和,如果想更细致的判断,可以分别判断x,y,z的值
3.工程测试代码如下:
2_4_x_shaders_demos_20210717.zip (816.6 KB)4.上面代码只是简单实现透明背景,有更好的方法可以留言,互相学习,非常感谢您的审阅
5.上面的说明,全是大白话,不太会说专业术语,有不对地方请见谅,以后改正