-
-
Notifications
You must be signed in to change notification settings - Fork 3.6k
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
Log a warning when the tonemapping_luts
feature is disabled but required for the selected tonemapper.
#10253
Log a warning when the tonemapping_luts
feature is disabled but required for the selected tonemapper.
#10253
Conversation
You added a new feature but didn't update the readme. Please run |
match key.tonemapping { | ||
Tonemapping::None => shader_defs.push("TONEMAP_METHOD_NONE".into()), | ||
Tonemapping::Reinhard => shader_defs.push("TONEMAP_METHOD_REINHARD".into()), | ||
Tonemapping::ReinhardLuminance => { | ||
shader_defs.push("TONEMAP_METHOD_REINHARD_LUMINANCE".into()); | ||
} | ||
Tonemapping::AcesFitted => shader_defs.push("TONEMAP_METHOD_ACES_FITTED".into()), | ||
Tonemapping::AgX => shader_defs.push("TONEMAP_METHOD_AGX".into()), | ||
Tonemapping::AgX => { | ||
#[cfg(not(feature = "tonemapping_luts"))] |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Why warn instead of gating the actual enum variants behind the flag? That way we'd make the invalid states not representable.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'd rather not change the default tonemapper depending on what features are enabled, and this avoids users wondering why their bevy library or game (with default features disabled) looks different than everyone else's.
# Include tonemapping Look Up Tables KTX2 files | ||
tonemapping_luts = ["bevy_internal/tonemapping_luts"] | ||
# Include tonemapping Look Up Tables KTX2 files. If everything is pink, you need to enable this feature or change the `Tonemapping` method on your `Camera2dBundle` or `Camera3dBundle`. | ||
tonemapping_luts = ["bevy_internal/tonemapping_luts", "ktx2", "zstd"] |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is a bit ugly (since tonemapping_luts already depends on them in bevy_core_pipeline's cargo.toml), but stops the ktx2 and zstd features from appearing as optional features in the cargo_features doc when they're already enabled.
Agreed on both counts :) |
Waiting on some final tweaks that the author wanted to add :) |
…uired for the selected tonemapper. (bevyengine#10253) # Objective Make it obvious why stuff renders pink when rendering stuff with bevy with `default_features = false` and bevy's default tonemapper (TonyMcMapFace, it requires a LUT which requires the `tonemapping_luts`, `ktx2`, and `zstd` features). Not sure if this should be considered as fixing these issues, but in my previous PR (bevyengine#9073, and old discussions on discord that I only somewhat remember) it seemed like we didn't want to make ktx2 and zstd required features for bevy_core_pipeline. Related bevyengine#9179 Related bevyengine#9098 ## Solution This logs an error when a LUT based tonemapper is used without the `tonemapping_luts` feature enabled, and cleans up the default features a bit (`tonemapping_luts` now includes the `ktx2` and `zstd` features, since it panics without them). Another solution would be to fall back to a non-lut based tonemapper, but I don't like this solution as then it's not explicitly clear to users why eg. a library example renders differently than a normal bevy app (if the library forgot the `tonemapping_luts` feature). I did remove the `ktx2` and `zstd` features from the list of default features in Cargo.toml, as I don't believe anything else currently in bevy relies on them (or at least searching through every hit for `ktx2` and `zstd` didn't show anything except loading an environment map in some examples), and they still show up in the `cargo_features` doc as default features. --- ## Changelog - The `tonemapping_luts` feature now includes both the `ktx2` and `zstd` features to avoid a panic when the `tonemapping_luts` feature was enable without both the `ktx2` and `zstd` feature enabled.
…uired for the selected tonemapper. (bevyengine#10253) # Objective Make it obvious why stuff renders pink when rendering stuff with bevy with `default_features = false` and bevy's default tonemapper (TonyMcMapFace, it requires a LUT which requires the `tonemapping_luts`, `ktx2`, and `zstd` features). Not sure if this should be considered as fixing these issues, but in my previous PR (bevyengine#9073, and old discussions on discord that I only somewhat remember) it seemed like we didn't want to make ktx2 and zstd required features for bevy_core_pipeline. Related bevyengine#9179 Related bevyengine#9098 ## Solution This logs an error when a LUT based tonemapper is used without the `tonemapping_luts` feature enabled, and cleans up the default features a bit (`tonemapping_luts` now includes the `ktx2` and `zstd` features, since it panics without them). Another solution would be to fall back to a non-lut based tonemapper, but I don't like this solution as then it's not explicitly clear to users why eg. a library example renders differently than a normal bevy app (if the library forgot the `tonemapping_luts` feature). I did remove the `ktx2` and `zstd` features from the list of default features in Cargo.toml, as I don't believe anything else currently in bevy relies on them (or at least searching through every hit for `ktx2` and `zstd` didn't show anything except loading an environment map in some examples), and they still show up in the `cargo_features` doc as default features. --- ## Changelog - The `tonemapping_luts` feature now includes both the `ktx2` and `zstd` features to avoid a panic when the `tonemapping_luts` feature was enable without both the `ktx2` and `zstd` feature enabled.
Objective
Make it obvious why stuff renders pink when rendering stuff with bevy with
default_features = false
and bevy's default tonemapper (TonyMcMapFace, it requires a LUT which requires thetonemapping_luts
,ktx2
, andzstd
features).Not sure if this should be considered as fixing these issues, but in my previous PR (#9073, and old discussions on discord that I only somewhat remember) it seemed like we didn't want to make ktx2 and zstd required features for bevy_core_pipeline.
Related #9179
Related #9098
Solution
This logs an error when a LUT based tonemapper is used without the
tonemapping_luts
feature enabled, and cleans up the default features a bit (tonemapping_luts
now includes thektx2
andzstd
features, since it panics without them).Another solution would be to fall back to a non-lut based tonemapper, but I don't like this solution as then it's not explicitly clear to users why eg. a library example renders differently than a normal bevy app (if the library forgot the
tonemapping_luts
feature).I did remove the
ktx2
andzstd
features from the list of default features in Cargo.toml, as I don't believe anything else currently in bevy relies on them (or at least searching through every hit forktx2
andzstd
didn't show anything except loading an environment map in some examples), and they still show up in thecargo_features
doc as default features.Changelog
tonemapping_luts
feature now includes both thektx2
andzstd
features to avoid a panic when thetonemapping_luts
feature was enable without both thektx2
andzstd
feature enabled.