shader 两张纹理取样相加为什么会出现透明

image
这个是相加后的结果,


这个是背景层的纹理
image
这个是效果层纹理
为什么两个相加后效果层出现了透明。。。。

单纯的像素相加肯定是两张纹理的像素值叠加,这不是透明,是像素的单纯叠加。你如果想飞机不“透明”,就判断如果当前uv飞机的像素透明度为1.0,则输出飞机的像素,否则按照两张纹理当前uv的像素透明度比例来加权相加rgb,a是简单相加,最后都限制<=1.0就行。

color = vec4(mix(color.rgb, secondColor.rgb, secondColor.a), 1.0);

2赞

飞机的那个图底色是黑的,a值始终为1,我该怎么去掉黑底色,要是用if判断的话 去掉后的就很生硬

飞机图取出的像素,如果像素是黑色就a为0,如果像素是光晕的色值范围,a为rgb的平均值,如果像素是其他色值,a为1

好的好的谢谢