godotengine / godot

Godot Engine – Multi-platform 2D and 3D game engine
https://godotengine.org
MIT License
91.17k stars 21.2k forks source link

Font outline is seen through the actual character #61055

Open miv391 opened 2 years ago

miv391 commented 2 years ago

Godot version

v3.4.4.stable.official [419e713a2]

System information

Windows 10, OpenGL ES 3.0 Renderer: GeForce GTX 1060 6GB/PCIe/SSE2

Issue description

My goal is to fade out Label using AnimationPlayer. Animation is changing Label's Modulation to fully transparent. However, it seems that outline is seen through the actual character. This looks pretty ugly. Is this a bug or is this working as expected? Are there any other ways to fade out the label?

kuva

Steps to reproduce

Minimal reproduction project

The example project doesn't contain AnimationPlayer, as animation is not needed to replicate this.

font_outline.zip

Calinou commented 2 years ago

This is expected, as the font outline does not actually contain the "background" of the character itself. If your animation is fast enough, it probably won't be that noticeable to players anyway. Alternatively, you can modulate the outline's opacity before modulating the main font's opacity.

In Godot 4.0, you'll be able to use a CanvasGroup node to modify the opacity of the whole final rendering, rather than the individual font glyphs and its outline.

That said, it might be possible to fix this without CanvasGroup by combining the main font with the outline (using the outline font as the main font color) in the outline rendering. cc @bruvzg