
# Objective *Step towards https://github.com/bevyengine/bevy/issues/19686* We now have all the infrastructure in place to migrate Bevy's default behavior when loading glTF files to respect their coordinate system. Let's start migrating! For motivation, see the issue linked above ## Solution - Introduce a feature flag called `gltf_convert_coordinates_default` - Currently,`GltfPlugin::convert_coordinates` defaults to `false` - If `gltf_convert_coordinates_default` is enabled, `GltfPlugin::convert_coordinates` will default to `true` - If `gltf_convert_coordinates_default` is not enabled *and* `GltfPlugin::convert_coordinates` is false, we assume the user is implicitly using the old behavior. Print a warning *once* in that case, but only when a glTF was actually loaded - A user can opt into the new behavior either - Globally, by enabling `gltf_convert_coordinates_default` in their `Cargo.toml` - Globally, by enabling `GltfPlugin::convert_coordinates` - Per asset, by enabling `GltfLoaderSettings::convert_coordinates` - A user can explicitly opt out of the new behavior and silence the warning by - Enabling `gltf_convert_coordinates_default` in their `Cargo.toml` and disabling `GltfPlugin::convert_coordinates` - This PR also moves the existing release note into a migration guide Note that I'm very open to change any features, mechanisms, warning texts, etc. as needed :) ## Future Work - This PR leaves all examples fully functional by not enabling this flag internally yet. A followup PR will enable it as a `dev-dependency` and migrate all of our examples involving glTFs to the new behavior. - After 0.17 (and the RC before) lands, we'll gather feedback to see if anything breaks or the suggested migration is inconvenient in some way - If all goes well, we'll kill this flag and change the default of `GltfPlugin::convert_coordinates` to `true` in 0.18 ## Testing - Ran examples with and without the flag --------- Co-authored-by: Carter Anderson <mcanders1@gmail.com> Co-authored-by: AlephCubed <76791009+AlephCubed@users.noreply.github.com>
447 lines
15 KiB
TOML
447 lines
15 KiB
TOML
[package]
|
|
name = "bevy_internal"
|
|
version = "0.17.0-dev"
|
|
edition = "2024"
|
|
description = "An internal Bevy crate used to facilitate optional dynamic linking via the 'dynamic_linking' feature"
|
|
homepage = "https://bevy.org"
|
|
repository = "https://github.com/bevyengine/bevy"
|
|
license = "MIT OR Apache-2.0"
|
|
keywords = ["game", "engine", "gamedev", "graphics", "bevy"]
|
|
categories = ["game-engines", "graphics", "gui", "rendering"]
|
|
|
|
[features]
|
|
trace = [
|
|
"bevy_app/trace",
|
|
"bevy_asset?/trace",
|
|
"bevy_core_pipeline?/trace",
|
|
"bevy_anti_aliasing?/trace",
|
|
"bevy_ecs/trace",
|
|
"bevy_log/trace",
|
|
"bevy_pbr?/trace",
|
|
"bevy_render?/trace",
|
|
"bevy_winit?/trace",
|
|
]
|
|
trace_chrome = ["bevy_log/tracing-chrome"]
|
|
trace_tracy = ["bevy_render?/tracing-tracy", "bevy_log/tracing-tracy"]
|
|
trace_tracy_memory = ["bevy_log/trace_tracy_memory"]
|
|
detailed_trace = ["bevy_ecs/detailed_trace", "bevy_render?/detailed_trace"]
|
|
|
|
sysinfo_plugin = ["bevy_diagnostic/sysinfo_plugin"]
|
|
|
|
# Enables compressed KTX2 UASTC texture output on the asset processor
|
|
compressed_image_saver = [
|
|
"bevy_image/compressed_image_saver",
|
|
"bevy_render/compressed_image_saver",
|
|
]
|
|
|
|
# Texture formats that have specific rendering support (HDR enabled by default)
|
|
basis-universal = ["bevy_image/basis-universal", "bevy_render/basis-universal"]
|
|
exr = ["bevy_image/exr", "bevy_render/exr"]
|
|
hdr = ["bevy_image/hdr", "bevy_render/hdr"]
|
|
ktx2 = ["bevy_image/ktx2", "bevy_render/ktx2"]
|
|
|
|
# For ktx2 supercompression
|
|
zlib = ["bevy_image/zlib"]
|
|
zstd = ["bevy_image/zstd"]
|
|
zstd_rust = ["bevy_image/zstd_rust"]
|
|
zstd_c = ["bevy_image/zstd_c"]
|
|
|
|
# Image format support (PNG enabled by default)
|
|
bmp = ["bevy_image/bmp"]
|
|
ff = ["bevy_image/ff"]
|
|
gif = ["bevy_image/gif"]
|
|
ico = ["bevy_image/ico"]
|
|
jpeg = ["bevy_image/jpeg"]
|
|
png = ["bevy_image/png"]
|
|
pnm = ["bevy_image/pnm"]
|
|
qoi = ["bevy_image/qoi"]
|
|
tga = ["bevy_image/tga"]
|
|
tiff = ["bevy_image/tiff"]
|
|
webp = ["bevy_image/webp"]
|
|
dds = ["bevy_image/dds"]
|
|
|
|
# Enable SPIR-V passthrough
|
|
spirv_shader_passthrough = ["bevy_render/spirv_shader_passthrough"]
|
|
|
|
# Statically linked DXC shader compiler for DirectX 12
|
|
# TODO: When wgpu switches to DirectX 12 instead of Vulkan by default on windows, make this a default feature
|
|
statically-linked-dxc = ["bevy_render/statically-linked-dxc"]
|
|
|
|
# Include tonemapping LUT KTX2 files.
|
|
tonemapping_luts = ["bevy_core_pipeline/tonemapping_luts"]
|
|
|
|
# Include SMAA LUT KTX2 Files
|
|
smaa_luts = ["bevy_anti_aliasing/smaa_luts"]
|
|
|
|
# Audio format support (vorbis is enabled by default)
|
|
flac = ["bevy_audio/flac"]
|
|
mp3 = ["bevy_audio/mp3"]
|
|
vorbis = ["bevy_audio/vorbis"]
|
|
wav = ["bevy_audio/wav"]
|
|
minimp3 = ["bevy_audio/minimp3"]
|
|
symphonia-aac = ["bevy_audio/symphonia-aac"]
|
|
symphonia-all = ["bevy_audio/symphonia-all"]
|
|
symphonia-flac = ["bevy_audio/symphonia-flac"]
|
|
symphonia-isomp4 = ["bevy_audio/symphonia-isomp4"]
|
|
symphonia-vorbis = ["bevy_audio/symphonia-vorbis"]
|
|
symphonia-wav = ["bevy_audio/symphonia-wav"]
|
|
|
|
# Shader formats
|
|
shader_format_glsl = [
|
|
"bevy_render/shader_format_glsl",
|
|
"bevy_pbr?/shader_format_glsl",
|
|
]
|
|
shader_format_spirv = ["bevy_render/shader_format_spirv"]
|
|
shader_format_wesl = ["bevy_render/shader_format_wesl"]
|
|
|
|
serialize = [
|
|
"bevy_a11y?/serialize",
|
|
"bevy_color?/serialize",
|
|
"bevy_ecs/serialize",
|
|
"bevy_image?/serialize",
|
|
"bevy_input/serialize",
|
|
"bevy_math/serialize",
|
|
"bevy_scene?/serialize",
|
|
"bevy_time/serialize",
|
|
"bevy_transform/serialize",
|
|
"bevy_ui?/serialize",
|
|
"bevy_window?/serialize",
|
|
"bevy_winit?/serialize",
|
|
"bevy_platform/serialize",
|
|
"bevy_render/serialize",
|
|
]
|
|
multi_threaded = [
|
|
"std",
|
|
"bevy_asset?/multi_threaded",
|
|
"bevy_ecs/multi_threaded",
|
|
"bevy_render?/multi_threaded",
|
|
"bevy_tasks/multi_threaded",
|
|
]
|
|
async-io = ["std", "bevy_tasks/async-io"]
|
|
|
|
# Display server protocol support (X11 is enabled by default)
|
|
wayland = ["bevy_winit/wayland"]
|
|
x11 = ["bevy_winit/x11"]
|
|
|
|
# Android activity support (choose one)
|
|
android-native-activity = ["bevy_winit/android-native-activity"]
|
|
android-game-activity = ["bevy_winit/android-game-activity"]
|
|
|
|
# Transmission textures in `StandardMaterial`:
|
|
pbr_transmission_textures = [
|
|
"bevy_pbr?/pbr_transmission_textures",
|
|
"bevy_gltf?/pbr_transmission_textures",
|
|
]
|
|
|
|
# Multi-layer material textures in `StandardMaterial`:
|
|
pbr_multi_layer_material_textures = [
|
|
"bevy_pbr?/pbr_multi_layer_material_textures",
|
|
"bevy_gltf?/pbr_multi_layer_material_textures",
|
|
]
|
|
|
|
# Anisotropy texture in `StandardMaterial`:
|
|
pbr_anisotropy_texture = [
|
|
"bevy_pbr?/pbr_anisotropy_texture",
|
|
"bevy_gltf?/pbr_anisotropy_texture",
|
|
]
|
|
|
|
# Percentage-closer soft shadows
|
|
experimental_pbr_pcss = ["bevy_pbr?/experimental_pbr_pcss"]
|
|
|
|
# Specular textures in `StandardMaterial`:
|
|
pbr_specular_textures = [
|
|
"bevy_pbr?/pbr_specular_textures",
|
|
"bevy_gltf?/pbr_specular_textures",
|
|
]
|
|
|
|
# Optimise for WebGL2
|
|
webgl = [
|
|
"bevy_core_pipeline?/webgl",
|
|
"bevy_anti_aliasing?/webgl",
|
|
"bevy_pbr?/webgl",
|
|
"bevy_render?/webgl",
|
|
"bevy_gizmos?/webgl",
|
|
"bevy_sprite?/webgl",
|
|
]
|
|
|
|
webgpu = [
|
|
"bevy_core_pipeline?/webgpu",
|
|
"bevy_anti_aliasing?/webgpu",
|
|
"bevy_pbr?/webgpu",
|
|
"bevy_render?/webgpu",
|
|
"bevy_gizmos?/webgpu",
|
|
"bevy_sprite?/webgpu",
|
|
]
|
|
|
|
# enable systems that allow for automated testing on CI
|
|
bevy_ci_testing = ["bevy_dev_tools/bevy_ci_testing", "bevy_render?/ci_limits"]
|
|
|
|
# Enable animation support, and glTF animation loading
|
|
animation = ["bevy_animation", "bevy_gltf?/bevy_animation"]
|
|
|
|
bevy_sprite = ["dep:bevy_sprite", "bevy_gizmos?/bevy_sprite", "bevy_image"]
|
|
bevy_pbr = ["dep:bevy_pbr", "bevy_gizmos?/bevy_pbr", "bevy_image"]
|
|
bevy_window = ["dep:bevy_window", "dep:bevy_a11y"]
|
|
bevy_core_pipeline = ["dep:bevy_core_pipeline", "bevy_image"]
|
|
bevy_anti_aliasing = ["dep:bevy_anti_aliasing", "bevy_image"]
|
|
bevy_gizmos = ["dep:bevy_gizmos", "bevy_image"]
|
|
bevy_gltf = ["dep:bevy_gltf", "bevy_image"]
|
|
bevy_ui = ["dep:bevy_ui", "bevy_image"]
|
|
bevy_image = ["dep:bevy_image"]
|
|
|
|
# Used to disable code that is unsupported when Bevy is dynamically linked
|
|
dynamic_linking = ["bevy_diagnostic/dynamic_linking"]
|
|
|
|
# Enable using a shared stdlib for cxx on Android.
|
|
android_shared_stdcxx = ["bevy_audio/android_shared_stdcxx"]
|
|
|
|
# Enable AccessKit on Unix backends (currently only works with experimental
|
|
# screen readers and forks.)
|
|
accesskit_unix = ["bevy_winit/accesskit_unix"]
|
|
|
|
bevy_text = ["dep:bevy_text", "bevy_image"]
|
|
|
|
bevy_render = [
|
|
"dep:bevy_render",
|
|
"bevy_scene?/bevy_render",
|
|
"bevy_gizmos?/bevy_render",
|
|
"bevy_image",
|
|
"bevy_color/wgpu-types",
|
|
"bevy_color/encase",
|
|
]
|
|
|
|
# Enable assertions to check the validity of parameters passed to glam
|
|
glam_assert = ["bevy_math/glam_assert"]
|
|
|
|
# Enable assertions in debug builds to check the validity of parameters passed to glam
|
|
debug_glam_assert = ["bevy_math/debug_glam_assert"]
|
|
|
|
default_font = ["bevy_text?/default_font"]
|
|
|
|
# Enables the built-in asset processor for processed assets.
|
|
asset_processor = ["bevy_asset?/asset_processor"]
|
|
|
|
# Enables watching the filesystem for Bevy Asset hot-reloading
|
|
file_watcher = ["bevy_asset?/file_watcher"]
|
|
|
|
# Enables watching embedded files for Bevy Asset hot-reloading
|
|
embedded_watcher = ["bevy_asset?/embedded_watcher"]
|
|
|
|
# Enable system stepping support
|
|
bevy_debug_stepping = [
|
|
"bevy_ecs/bevy_debug_stepping",
|
|
"bevy_app/bevy_debug_stepping",
|
|
]
|
|
|
|
# Enables the meshlet renderer for dense high-poly scenes (experimental)
|
|
meshlet = ["bevy_pbr?/meshlet"]
|
|
|
|
# Enables processing meshes into meshlet meshes for bevy_pbr
|
|
meshlet_processor = ["bevy_pbr?/meshlet_processor"]
|
|
|
|
# Provides a collection of developer tools
|
|
bevy_dev_tools = ["dep:bevy_dev_tools"]
|
|
|
|
# Enable support for the Bevy Remote Protocol
|
|
bevy_remote = ["dep:bevy_remote", "serialize"]
|
|
|
|
# Provides picking functionality
|
|
bevy_picking = ["dep:bevy_picking"]
|
|
|
|
# Provides a mesh picking backend
|
|
bevy_mesh_picking_backend = [
|
|
"bevy_picking",
|
|
"bevy_picking/bevy_mesh_picking_backend",
|
|
]
|
|
|
|
# Provides a sprite picking backend
|
|
bevy_sprite_picking_backend = [
|
|
"bevy_picking",
|
|
"bevy_sprite/bevy_sprite_picking_backend",
|
|
]
|
|
|
|
# Provides a UI picking backend
|
|
bevy_ui_picking_backend = ["bevy_picking", "bevy_ui/bevy_ui_picking_backend"]
|
|
|
|
# Provides a UI debug overlay
|
|
bevy_ui_debug = ["bevy_ui?/bevy_ui_debug"]
|
|
|
|
# Enable built in global state machines
|
|
bevy_state = ["dep:bevy_state"]
|
|
|
|
# Enables source location tracking for change detection, which can assist with debugging
|
|
track_location = ["bevy_ecs/track_location"]
|
|
|
|
# Enable function reflection
|
|
reflect_functions = [
|
|
"bevy_reflect/functions",
|
|
"bevy_app/reflect_functions",
|
|
"bevy_ecs/reflect_functions",
|
|
]
|
|
|
|
# Enable documentation reflection
|
|
reflect_documentation = ["bevy_reflect/documentation"]
|
|
|
|
# Enable winit custom cursor support
|
|
custom_cursor = ["bevy_winit/custom_cursor"]
|
|
|
|
# Experimental support for nodes that are ignored for UI layouting
|
|
ghost_nodes = ["bevy_ui/ghost_nodes"]
|
|
|
|
# Allows access to the `std` crate. Enabling this feature will prevent compilation
|
|
# on `no_std` targets, but provides access to certain additional features on
|
|
# supported platforms.
|
|
std = [
|
|
"bevy_a11y?/std",
|
|
"bevy_app/std",
|
|
"bevy_color?/std",
|
|
"bevy_diagnostic/std",
|
|
"bevy_ecs/std",
|
|
"bevy_input/std",
|
|
"bevy_input_focus?/std",
|
|
"bevy_math/std",
|
|
"bevy_platform/std",
|
|
"bevy_reflect/std",
|
|
"bevy_state?/std",
|
|
"bevy_time/std",
|
|
"bevy_transform/std",
|
|
"bevy_tasks/std",
|
|
"bevy_window?/std",
|
|
]
|
|
|
|
# `critical-section` provides the building blocks for synchronization primitives
|
|
# on all platforms, including `no_std`.
|
|
critical-section = [
|
|
"bevy_a11y?/critical-section",
|
|
"bevy_app/critical-section",
|
|
"bevy_diagnostic/critical-section",
|
|
"bevy_ecs/critical-section",
|
|
"bevy_input/critical-section",
|
|
"bevy_input_focus?/critical-section",
|
|
"bevy_platform/critical-section",
|
|
"bevy_reflect/critical-section",
|
|
"bevy_state?/critical-section",
|
|
"bevy_time/critical-section",
|
|
"bevy_tasks/critical-section",
|
|
]
|
|
|
|
# Uses the `libm` maths library instead of the one provided in `std` and `core`.
|
|
libm = [
|
|
"bevy_color?/libm",
|
|
"bevy_input/libm",
|
|
"bevy_input_focus?/libm",
|
|
"bevy_math/libm",
|
|
"bevy_transform/libm",
|
|
"bevy_window?/libm",
|
|
]
|
|
|
|
# Uses `async-executor` as a task execution backend.
|
|
# This backend is incompatible with `no_std` targets.
|
|
async_executor = [
|
|
"std",
|
|
"bevy_tasks/async_executor",
|
|
"bevy_ecs/async_executor",
|
|
"bevy_transform/async_executor",
|
|
]
|
|
|
|
# Enables use of browser APIs.
|
|
# Note this is currently only applicable on `wasm32` architectures.
|
|
web = [
|
|
"bevy_app/web",
|
|
"bevy_platform/web",
|
|
"bevy_reflect/web",
|
|
"bevy_tasks/web",
|
|
]
|
|
|
|
hotpatching = ["bevy_app/hotpatching", "bevy_ecs/hotpatching"]
|
|
|
|
gltf_convert_coordinates_default = [
|
|
"bevy_gltf?/gltf_convert_coordinates_default",
|
|
]
|
|
|
|
debug = ["bevy_utils/debug"]
|
|
|
|
[dependencies]
|
|
# bevy (no_std)
|
|
bevy_app = { path = "../bevy_app", version = "0.17.0-dev", default-features = false, features = [
|
|
"bevy_reflect",
|
|
] }
|
|
bevy_derive = { path = "../bevy_derive", version = "0.17.0-dev", default-features = false }
|
|
bevy_diagnostic = { path = "../bevy_diagnostic", version = "0.17.0-dev", default-features = false }
|
|
bevy_ecs = { path = "../bevy_ecs", version = "0.17.0-dev", default-features = false, features = [
|
|
"bevy_reflect",
|
|
] }
|
|
bevy_input = { path = "../bevy_input", version = "0.17.0-dev", default-features = false, features = [
|
|
"bevy_reflect",
|
|
] }
|
|
bevy_math = { path = "../bevy_math", version = "0.17.0-dev", default-features = false, features = [
|
|
"bevy_reflect",
|
|
"nostd-libm",
|
|
] }
|
|
bevy_platform = { path = "../bevy_platform", version = "0.17.0-dev", default-features = false, features = [
|
|
"alloc",
|
|
] }
|
|
bevy_ptr = { path = "../bevy_ptr", version = "0.17.0-dev", default-features = false }
|
|
bevy_reflect = { path = "../bevy_reflect", version = "0.17.0-dev", default-features = false, features = [
|
|
"smallvec",
|
|
] }
|
|
bevy_time = { path = "../bevy_time", version = "0.17.0-dev", default-features = false, features = [
|
|
"bevy_reflect",
|
|
] }
|
|
bevy_transform = { path = "../bevy_transform", version = "0.17.0-dev", default-features = false, features = [
|
|
"bevy-support",
|
|
"bevy_reflect",
|
|
] }
|
|
bevy_utils = { path = "../bevy_utils", version = "0.17.0-dev", default-features = false }
|
|
bevy_tasks = { path = "../bevy_tasks", version = "0.17.0-dev", default-features = false }
|
|
|
|
# bevy (std required)
|
|
bevy_log = { path = "../bevy_log", version = "0.17.0-dev", optional = true }
|
|
|
|
# bevy (optional)
|
|
bevy_a11y = { path = "../bevy_a11y", optional = true, version = "0.17.0-dev", features = [
|
|
"bevy_reflect",
|
|
] }
|
|
bevy_animation = { path = "../bevy_animation", optional = true, version = "0.17.0-dev" }
|
|
bevy_asset = { path = "../bevy_asset", optional = true, version = "0.17.0-dev" }
|
|
bevy_audio = { path = "../bevy_audio", optional = true, version = "0.17.0-dev" }
|
|
bevy_color = { path = "../bevy_color", optional = true, version = "0.17.0-dev", default-features = false, features = [
|
|
"alloc",
|
|
"bevy_reflect",
|
|
] }
|
|
bevy_core_pipeline = { path = "../bevy_core_pipeline", optional = true, version = "0.17.0-dev" }
|
|
bevy_core_widgets = { path = "../bevy_core_widgets", optional = true, version = "0.17.0-dev" }
|
|
bevy_anti_aliasing = { path = "../bevy_anti_aliasing", optional = true, version = "0.17.0-dev" }
|
|
bevy_dev_tools = { path = "../bevy_dev_tools", optional = true, version = "0.17.0-dev" }
|
|
bevy_gilrs = { path = "../bevy_gilrs", optional = true, version = "0.17.0-dev" }
|
|
bevy_gizmos = { path = "../bevy_gizmos", optional = true, version = "0.17.0-dev", default-features = false }
|
|
bevy_gltf = { path = "../bevy_gltf", optional = true, version = "0.17.0-dev" }
|
|
bevy_image = { path = "../bevy_image", optional = true, version = "0.17.0-dev" }
|
|
bevy_input_focus = { path = "../bevy_input_focus", optional = true, version = "0.17.0-dev", default-features = false, features = [
|
|
"bevy_reflect",
|
|
] }
|
|
bevy_pbr = { path = "../bevy_pbr", optional = true, version = "0.17.0-dev" }
|
|
bevy_picking = { path = "../bevy_picking", optional = true, version = "0.17.0-dev" }
|
|
bevy_remote = { path = "../bevy_remote", optional = true, version = "0.17.0-dev" }
|
|
bevy_render = { path = "../bevy_render", optional = true, version = "0.17.0-dev" }
|
|
bevy_scene = { path = "../bevy_scene", optional = true, version = "0.17.0-dev" }
|
|
bevy_solari = { path = "../bevy_solari", optional = true, version = "0.17.0-dev" }
|
|
bevy_sprite = { path = "../bevy_sprite", optional = true, version = "0.17.0-dev" }
|
|
bevy_state = { path = "../bevy_state", optional = true, version = "0.17.0-dev", default-features = false, features = [
|
|
"bevy_app",
|
|
"bevy_reflect",
|
|
] }
|
|
bevy_text = { path = "../bevy_text", optional = true, version = "0.17.0-dev" }
|
|
bevy_ui = { path = "../bevy_ui", optional = true, version = "0.17.0-dev" }
|
|
bevy_window = { path = "../bevy_window", optional = true, version = "0.17.0-dev", default-features = false, features = [
|
|
"bevy_reflect",
|
|
] }
|
|
bevy_winit = { path = "../bevy_winit", optional = true, version = "0.17.0-dev", default-features = false }
|
|
|
|
[lints]
|
|
workspace = true
|
|
|
|
[package.metadata.docs.rs]
|
|
rustdoc-args = ["-Zunstable-options", "--generate-link-to-definition"]
|
|
all-features = true
|