如何让粒子效果不受底色影响?

如何让粒子效果不受底色影响?
比如,如下,黑色背景:
QQ20240111-102734@2x
这个火焰的粒子效果到 绿色背景下就变成了金色火焰,而不是红色火焰。
QQ20240111-102756@2x

我知道,可以修改blend模式, blendFuncDestination 和 blendFuncSource
但是,修改完之后,可以保持本色,但是又无法有那种高亮柔光叠加的感觉。

有没有一种方式让即使是绿色背景下,火焰也表现得和黑色背景下那种火焰的感觉。求指导思路。
尝试了修改各种blend模式,以及加蒙版alpha通道(也可能是操作不对)。求一个具体实现思路方法。

材质球改下混合模式

可能是 add 模式导致的, 你看换成其他模式可不可以。

确实是混合模式导致的,可以去改ADD模式,把ADD模式改成Normal,确实可以显示源色,但是ADD模式帅啊,改成别的模式就没有ADD模式这么帅,但是用Add模式到绿色背景,不管如何调颜色,就调不出那种火红色。 (对GL不是那么熟,我在想可否弄一个黑色图层,但把黑色图层设置成透明,然后放在粒子效果底下,让他们的RGB以ADD模式混合,但透明度参数不混合)

感觉无解。
这个火焰效果,粒子间就会互相影响/混合,就是会受“已绘制”/画布影响。
这个火焰,是由很多“点”混合而成。
修改混合模式,火焰效果也会变化,因为上面的粒子也会受下面已绘制粒子影响。
(粗略思考)

1 根据背景颜色,修改所有粒子颜色试试。
2 先离屏渲染/渲染到纹理,再用合适的混合模式整体绘制到画布。
3 用模板测试把火焰背景去掉,再绘制。
(开脑洞,不保证准确性) :yawning_face:

我的感觉和你一样,感觉这个得到OPENGL层面,重新定义因子混合模式,自定义一种新的因子混合逻辑。
我在考虑可否结合shader解决这个问题。

多摄像机,然后用 RT 绘制火焰

用的哪一种混合模式,可以这样在不一样的场景把背景颜色传入shader, 根据颜色修改透明度通道的值,这样虽然混合公式是确定的但是混合因子的值是变化的,调试看看或许有意想不到的效果

已经用shader尝试了,有效果,不过暂时没调出想要的颜色,可能是对shader还不够熟悉,以后进一步学习shader后再深入尝试。果然术业有专攻。

你可以先了解下add模式是干什么的。add模式本质上就是在背景色基础上加上你的特效的颜色。原本是黑色的情况下,就会呈现出特效原本的颜色。
让粒子效果不受底色影响,本质上就是不用add模式。
问题的本质是不受底色影响的模式没有这么帅的效果。