bevy/crates
JMS55 2a7000a738 Revamp Bloom (#6677)
![image](https://user-images.githubusercontent.com/47158642/220197588-25e11022-02e4-45f3-b2e5-392c4ce7a025.png)

Huge credit to @StarLederer, who did almost all of the work on this. We're just reusing this PR to keep everything in one place.

# Objective

1. Make bloom more physically based.
1. Improve artistic control.
1. Allow to use bloom as screen blur.
1. Fix #6634.
1. Address #6655 (although the author makes incorrect conclusions).

## Solution

1. Set the default threshold to 0.
2. Lerp between bloom textures when `composite_mode: BloomCompositeMode::EnergyConserving`.
1. Use [a parametric function](https://starlederer.github.io/bloom) to control blend levels for each bloom texture. In the future this can be controlled per-pixel for things like lens dirt.
3. Implement BloomCompositeMode::Additive` for situations where the old school look is desired.

## Changelog

* Bloom now looks different.
* Added `BloomSettings:lf_boost`, `BloomSettings:lf_boost_curvature`, `BloomSettings::high_pass_frequency` and `BloomSettings::composite_mode`.
* `BloomSettings::scale` removed.
* `BloomSettings::knee` renamed to `BloomPrefilterSettings::softness`.
* `BloomSettings::threshold` renamed to `BloomPrefilterSettings::threshold`.
* The bloom example has been renamed to bloom_3d and improved. A bloom_2d example was added.

## Migration Guide

* Refactor mentions of `BloomSettings::knee` and `BloomSettings::threshold` as `BloomSettings::prefilter_settings` where knee is now `softness`.
* If defined without `..default()` add `..default()` to definitions of `BloomSettings` instances or manually define missing fields.
* Adapt to Bloom looking visually different (if needed).

Co-authored-by: Herman Lederer <germans.lederers@gmail.com>
2023-03-04 12:05:26 +00:00
..
bevy_a11y Integrate AccessKit (#6874) 2023-03-01 22:45:04 +00:00
bevy_animation Base Sets (#7466) 2023-02-06 03:10:08 +00:00
bevy_app Add marker traits to distinguish base sets from regular system sets (#7863) 2023-03-02 13:22:58 +00:00
bevy_asset Fix hot reloading for read_asset_bytes (#6797) 2023-03-02 02:51:06 +00:00
bevy_audio Remove redundant symphonia-mp3 feature (#7852) 2023-03-01 03:22:46 +00:00
bevy_core Fix some typos (#7763) 2023-02-20 22:56:57 +00:00
bevy_core_pipeline Revamp Bloom (#6677) 2023-03-04 12:05:26 +00:00
bevy_derive update winit to 0.28 (#7480) 2023-02-03 16:41:39 +00:00
bevy_diagnostic Update sysinfo and improve its use a bit (#7826) 2023-02-27 01:05:58 +00:00
bevy_dylib Rename dynamic feature (#7340) 2023-01-23 14:28:00 +00:00
bevy_dynamic_plugin Adapt path type of dynamically_load_plugin (#6734) 2022-12-05 23:39:43 +00:00
bevy_ecs Revise docs for system set marker traits (#7882) 2023-03-03 14:43:54 +00:00
bevy_ecs_compile_fail_tests EntityMut: rename remove_intersection to remove and remove to take (#7810) 2023-02-26 00:09:19 +00:00
bevy_encase_derive Update glam to 0.23 (#7883) 2023-03-04 11:42:27 +00:00
bevy_gilrs Make StartupSet a base set (#7574) 2023-02-19 03:10:06 +00:00
bevy_gltf Add extras field to GltfNode (#6973) 2023-02-13 17:56:36 +00:00
bevy_hierarchy EntityMut: rename remove_intersection to remove and remove to take (#7810) 2023-02-26 00:09:19 +00:00
bevy_input add common run conditions to bevy_input (#7806) 2023-02-25 22:08:13 +00:00
bevy_internal Integrate AccessKit (#6874) 2023-03-01 22:45:04 +00:00
bevy_log Fix suppression of all console logs when trace_tracy is enabled (#6955) 2022-12-20 23:45:43 +00:00
bevy_macro_utils Update toml_edit to 0.19 (#7834) 2023-02-27 23:59:06 +00:00
bevy_math Update glam to 0.23 (#7883) 2023-03-04 11:42:27 +00:00
bevy_mikktspace Update glam to 0.23 (#7883) 2023-03-04 11:42:27 +00:00
bevy_pbr Fix dependency of shadow mapping on the optional PrepassPlugin (#7878) 2023-03-03 15:08:54 +00:00
bevy_ptr Fix minor typos in code and docs (#7378) 2023-01-27 12:12:53 +00:00
bevy_reflect Update glam to 0.23 (#7883) 2023-03-04 11:42:27 +00:00
bevy_reflect_compile_fail_tests Enable deriving Reflect on structs with generic types (#7364) 2023-01-28 00:12:06 +00:00
bevy_render Update glam to 0.23 (#7883) 2023-03-04 11:42:27 +00:00
bevy_scene Base Sets (#7466) 2023-02-06 03:10:08 +00:00
bevy_sprite Doc bevy sprite (#7858) 2023-03-03 18:14:40 +00:00
bevy_tasks Fix asset_debug_server hang. There should be at most one ThreadExecut… (#7825) 2023-03-02 08:40:25 +00:00
bevy_text fix whitespaces in comment (#7853) 2023-03-01 10:20:56 +00:00
bevy_time Add timer-based common run conditions (on_timer and on_fixed_timer) (#7866) 2023-03-02 12:53:54 +00:00
bevy_transform single parent set for transform propagate (#7869) 2023-03-02 20:04:03 +00:00
bevy_ui Fix bevy_ui compile error without bevy_text (#7877) 2023-03-02 22:44:12 +00:00
bevy_utils Fix some typos (#7763) 2023-02-20 22:56:57 +00:00
bevy_window Remove mention of Windows 11 from Window::transparent's docs (#7832) 2023-02-27 21:10:52 +00:00
bevy_winit Integrate AccessKit (#6874) 2023-03-01 22:45:04 +00:00