Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add high quality glow mode (3.x) #51491

Merged
merged 1 commit into from
Oct 8, 2021

Conversation

Calinou
Copy link
Member

@Calinou Calinou commented Aug 11, 2021

This backports the high quality glow mode from the master branch. Thanks @clayjohn for the original implementation 🙂

Previously, during downsample, every second row was ignored. Now, when high-quality is used, we sample two rows at once to ensure that no pixel is missed. It is slower, but looks much better and has a much high stability while moving.

High quality also takes an additional horizontal sample the width of the horizontal blur matches the height of the vertical blur.

This closes #43110.

Preview

GLES3

Low quality (default) High quality
2021-08-11_04 45 52 2021-08-11_04 40 25

GLES2 (Bloom = 1, since there is no HDR)

Low quality (default) High quality
2021-08-11_04 42 38 2021-08-11_04 42 41

@Calinou Calinou requested review from a team as code owners August 11, 2021 02:44
@Calinou Calinou added this to the 3.4 milestone Aug 11, 2021
@Calinou Calinou changed the title Add high quality glow mode Add high quality glow mode (3.x) Aug 11, 2021
This backports the high quality glow mode from the `master` branch.

Previously, during downsample, every second row was ignored.
Now, when high-quality is used, we sample two rows at once to ensure
that no pixel is missed. It is slower, but looks much better and has
a much high stability while moving.

High quality also takes an additional horizontal sample the width of the
horizontal blur matches the height of the vertical blur.
@Calinou Calinou force-pushed the glow-add-high-quality-mode-3.x branch from 3488389 to 0e0af7f Compare August 11, 2021 15:00
Copy link
Member

@clayjohn clayjohn left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fracteed requested this. It is not a risky change and is opt-in so @akien-mga if you are comfortable we could merge this for 3.4

@akien-mga akien-mga merged commit 06fc237 into godotengine:3.x Oct 8, 2021
@akien-mga
Copy link
Member

Thanks!

@Calinou Calinou deleted the glow-add-high-quality-mode-3.x branch October 8, 2021 16:07
@RichardR01
Copy link

RichardR01 commented Oct 20, 2021

I hardly notice the difference between low and high, except that high quality seems to blend better. Also it would be nice if we had a tagging system where the glow only effects certain objects. You wouldn't even need a new identifier, you can use the already existing grouping functions. So like if I add "glow" to the group for specific objects, then only those objects would be affected by the post process effect. Even if it can't work exactly like that, an identifier of some sort would be great. (This has been asked before).

@Calinou
Copy link
Member Author

Calinou commented Oct 20, 2021

I hardly notice the difference between low and high, except that high quality seems to blend better. Also it would be nice if we had a tagging system where the glow only effects certain objects. You wouldn't even need a new identifier, you can use the already existing grouping functions. So like if I add "glow" to the group for specific objects, then only those objects would be affected by the post process effect. Even if it can't work exactly like that, an identifier of some sort would be great. (This has been asked before).

When using GLES3, this can already be done by increasing the glow effect's HDR Threshold property and making your "glowy" objects brighter. Surfaces darker than the HDR threshold won't generate any glow.

If you need further control for artistic reasons, using glow billboard sprites is a reasonable (and often cheaper) alternative. This way, you can do pretty much anything: use different shapes, colors, etc. Use SpatialMaterial's Proximity Fade and Distance Fade properties to your advantage here.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants