+2 votes

I have a Glow effect in a WorldEnvironment and it gets disabled on nodes of CanvasLayer
type and all it's child nodes.

Godot version v3.3.1.stable.official
in Engine by (454 points)

2 Answers

+6 votes
Best answer

2D World Environment / Glow:

To affect 2D/Canvas Nodes you have to set the WorldEnvironment mode to Canvas.

Then in order to make a visible difference — in the Glow settings, set the Blend Mode to Additive and then turn down Hdr Threshold and/or Hdr Scale values.

Steps to make 2D nodes Glow

CanvasLayer Solution:

CanvasLayers (as indicated by their name) allow rendering on a specific drawing layer. By default CanvasLayer renders above the standard 2D scene and is thus also not affected by the WorldEnvironment glow effect.

This could be solved in two ways, first set the CanvasLayer's layer below 0 (as vnmk8 has found out and answered), or alternatively in the WorldEnvironment, set the Canvas Max Layer to 1:

CanvasLayer Solutions

by (1,014 points)
selected by

i took a screenshot, I applied the settings you told me, as you can see the issue persists, the sprite that is child of the CanvasLayer type node doesn't get the glow effect applied.
https://imgur.com/a/lt9lO3c
the project is really easy to reproduce if you can please do and tell me if the same happens to you?
scene

awesome explanation, thanks

0 votes

I was tinkering with it and found that these types of nodes "CanvasLayer" have a Layer property in the inspector, lowering to 0 or below affected it's child nodes applying the effect, leaving this here for anyone who might need it.

by (454 points)

I'm glad that you found the solution! I wasn't quite sure how you had your project set up so I was guessing at some details of your question. I'll update my answer to include what you've found out .

Note that you can also change the WorldEnvironment Canvas Max Layer. Which would affect all CanvasLayers by default. I'll update my GIF to include that step as well.

I'm having trouble with the layers I set the CanvasLayer Layer in the inspector less than 0 and its gets the effect but some of the other layers in my project are on top and I don't know why, the only way to place them behind the CanvasLayer node is to give assign them canvas material and setting them to add and that meses up my glow effect. what is Canvas Max Layer? btw

hey it worked! I set the WorldEnvironment's node CanvasMaxLayer to 1 and the CanvasLayer Layer property to 0 and my Hud has glow and is on top the other nodes is just what I needed, Thanks!

No problem man, glad you got it sorted!

Welcome to Godot Engine Q&A, where you can ask questions and receive answers from other members of the community.

Please make sure to read Frequently asked questions and How to use this Q&A? before posting your first questions.
Social login is currently unavailable. If you've previously logged in with a Facebook or GitHub account, use the I forgot my password link in the login box to set a password for your account. If you still can't access your account, send an email to [email protected] with your username.