[package] name = "bevy_render" version = "0.18.1" edition = "2024" description = "Provides rendering functionality for Bevy Engine" homepage = "https://bevy.org" repository = "https://github.com/bevyengine/bevy" license = "MIT OR Apache-2.0" keywords = ["bevy"] [features] # Bevy users should _never_ turn this feature on. # # Bevy/wgpu developers can turn this feature on to test a newer version of wgpu without needing to also update naga_oil. # # When turning this feature on, you can add the following to bevy/Cargo.toml (not this file), and then run `cargo update`: # [patch.crates-io] # wgpu = { git = "https://github.com/gfx-rs/wgpu", rev = "..." } # wgpu-core = { git = "https://github.com/gfx-rs/wgpu", rev = "..." } # wgpu-hal = { git = "https://github.com/gfx-rs/wgpu", rev = "..." } # wgpu-types = { git = "https://github.com/gfx-rs/wgpu", rev = "..." } decoupled_naga = ["bevy_shader/decoupled_naga"] multi_threaded = ["bevy_tasks/multi_threaded"] morph = ["bevy_mesh/morph"] shader_format_spirv = ["bevy_shader/shader_format_spirv", "wgpu/spirv"] # Enable SPIR-V shader passthrough spirv_shader_passthrough = ["wgpu/spirv"] # 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 = ["wgpu/static-dxc"] # Forces the wgpu instance to be initialized using the raw Vulkan HAL, enabling additional configuration raw_vulkan_init = ["wgpu/vulkan"] trace = ["profiling"] tracing-tracy = ["dep:tracy-client"] ci_limits = [] webgl = ["wgpu/webgl"] webgpu = ["wgpu/webgpu"] vulkan-portability = ["wgpu/vulkan-portability"] gles = ["wgpu/gles"] detailed_trace = [] ## Adds serialization support through `serde`. serialize = ["bevy_mesh/serialize"] [dependencies] # bevy bevy_app = { path = "../bevy_app", version = "0.18.0" } bevy_asset = { path = "../bevy_asset", version = "0.18.0" } bevy_color = { path = "../bevy_color", version = "0.18.0", features = [ "serialize", "wgpu-types", ] } bevy_derive = { path = "../bevy_derive", version = "0.18.0" } bevy_diagnostic = { path = "../bevy_diagnostic", version = "0.18.0" } bevy_ecs = { path = "../bevy_ecs", version = "0.18.0" } bevy_encase_derive = { path = "../bevy_encase_derive", version = "0.18.0" } bevy_math = { path = "../bevy_math", version = "0.18.0" } bevy_reflect = { path = "../bevy_reflect", version = "0.18.0" } bevy_render_macros = { path = "macros", version = "0.18.0" } bevy_time = { path = "../bevy_time", version = "0.18.0" } bevy_transform = { path = "../bevy_transform", version = "0.18.0" } bevy_window = { path = "../bevy_window", version = "0.18.0" } bevy_utils = { path = "../bevy_utils", version = "0.18.0" } bevy_tasks = { path = "../bevy_tasks", version = "0.18.0" } bevy_image = { path = "../bevy_image", version = "0.18.0" } bevy_mesh = { path = "../bevy_mesh", version = "0.18.0" } bevy_camera = { path = "../bevy_camera", version = "0.18.0" } bevy_shader = { path = "../bevy_shader", version = "0.18.0" } bevy_platform = { path = "../bevy_platform", version = "0.18.0", default-features = false, features = [ "std", "serialize", ] } # rendering image = { version = "0.25.2", default-features = false } # misc # `fragile-send-sync-non-atomic-wasm` feature means we can't use Wasm threads for rendering # It is enabled for now to avoid having to do a significant overhaul of the renderer just for wasm. # When the 'atomics' feature is enabled `fragile-send-sync-non-atomic` does nothing # and Bevy instead wraps `wgpu` types to verify they are not used off their origin thread. wgpu = { version = "27", default-features = false, features = [ "wgsl", "dx12", "metal", "vulkan", "naga-ir", "fragile-send-sync-non-atomic-wasm", ] } naga = { version = "27", features = ["wgsl-in"] } bytemuck = { version = "1.5", features = ["derive", "must_cast"] } downcast-rs = { version = "2", default-features = false, features = ["std"] } thiserror = { version = "2", default-features = false } derive_more = { version = "2", default-features = false, features = ["from"] } encase = "0.12" glam = { version = "0.30.7", default-features = false, features = [ "std", "encase", ] } # For wgpu profiling using tracing. Use `RUST_LOG=info` to also capture the wgpu spans. profiling = { version = "1", features = [ "profile-with-tracing", ], optional = true } async-channel = "2.3.0" nonmax = "0.5" smallvec = { version = "1", default-features = false, features = ["const_new"] } offset-allocator = "0.2" variadics_please = "1.1" tracing = { version = "0.1", default-features = false, features = ["std"] } tracy-client = { version = "0.18.3", optional = true } indexmap = { version = "2" } fixedbitset = { version = "0.5" } bitflags = "2" [target.'cfg(all(target_arch = "wasm32", target_feature = "atomics"))'.dependencies] send_wrapper = { version = "0.6.0" } [dev-dependencies] proptest = "1" [target.'cfg(target_arch = "wasm32")'.dependencies] js-sys = "0.3.83" web-sys = { version = "0.3.67", features = [ 'Blob', 'Document', 'Element', 'HtmlElement', 'Node', 'Url', 'Window', ] } wasm-bindgen = "0.2" # TODO: Assuming all wasm builds are for the browser. Require `no_std` support to break assumption. bevy_app = { path = "../bevy_app", version = "0.18.0", default-features = false, features = [ "web", ] } bevy_platform = { path = "../bevy_platform", version = "0.18.0", default-features = false, features = [ "web", ] } bevy_reflect = { path = "../bevy_reflect", version = "0.18.0", default-features = false, features = [ "web", ] } [lints] workspace = true [package.metadata.docs.rs] rustdoc-args = ["-Zunstable-options", "--generate-link-to-definition"] all-features = true