Particles Blend mode "Add" doesn't display correctly when running on top of a background image

:information_source: Attention Topic was automatically imported from the old Question2Answer platform.
:bust_in_silhouette: Asked By winger

Hi All,

I’ve come across an issue concerning the Godot particles Canvas Item Material when set to Blend Mode “Add”. Nothing I try solves the issue I’m seeing, so I thought this would be the time to post my first question on this forum.

I created a nice explosion effect in its own scene which is essentially a mixture of colours but the key part that makes the effect realistic is that I set the Material property to CanvasItemMaterial and the Blend Mode to “Add”.

However, I then make instances of this explosion scene in my Main scene, and this Main scene has a background sprite image (very light/pale in colour). The problem is that these explosion instances in my Main scene all appear white (i.e. absolutely none of the colours that it is setup with are displayed). If I hide the background sprite then the explosions are shown correctly with the colours. So clearly my Main background sprite image is modifying my explosion effect somehow.

As I understand it, the Blend Mode “Add” property adds the colours of the image AND the background. This is where I suspect the problem lies. And consequently I’ve been looking for a way to ensure the “Add” property only effects its own scene and doesn’t get manipulated by images and background colours in other scenes.

Therefore my question: Do you know of a way to detach or separate the “Add” functionality so that it only applies the Add effect within its own scene and isn’t affected by any images and materials in other scenes that it’s being instanced in?

Or do you know of any option/property/idea on how else I can prevent this from happening?

Any help would be greatly appreciated. Thanks in advance!

:bust_in_silhouette: Reply From: winger

Hi, me again. Just wondering if anyone has any solution/alternative fix for this issue. I’m at a road-block.

I’m having the same problem, any solution?

It sounds like this is best addressed by the CanvasGroup node, which was added in Godot 4.0.