Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Objective
Explanation
What is bloom
Bloom occurs in real life when light passes through an imperfect medium such as a lens and slightly scatters around before continuing on its way to the sensor or the retina. Bloom is effectively just a blur effect created by imperfections in glass or human eyes.
Motivation
To emulate it in a natural-looking way it should be energy-conserving and based on its real-life counterpart. The existing implementation is quite close but it does not emulate the scattering perfectly and is certainly not energy-conserving. As a result, the current implementation is easy to configure in an obnoxious way and ruin the look of the game.
Examples
Bloom example with existing implementation:Bloom example in this PR:
Lighting example with existing implementation of bloom:
Lighting example with bloom in this PR:
Note: The existing implementation could look closer to this PR if the intensity is turned down, however, the existing implementation never results in a natural look at high intensity values, that is what the examples try to highlight.
Existing implementation with intensity of 1 (not related to a physical parameter):Bloom in this PR with intensity of 1 (light is equally as likely to exit at any point of the lens). This is still WIP since the whole screen should be the same color
Solution
Changelog
Changed:
Migration Guide
threshold
andknee
fields from all instances ofcore_pipeline::bloom::BloomSettings
.deblooming
filed to approximate the look threshold values above 0 created.