# Changelog While we try to keep the `Unreleased` changes updated, it is often behind and does not include all merged pull requests. To see a list of all changes since the latest release, you may compare current changes on git with [previous release tags][git_tag_comparison]. [git_tag_comparison]: https://github.com/bevyengine/bevy/compare/v0.9.0...main ## Version 0.10.0 (2023-03-06) ## Added - [Accessibility: Added `Label` for marking text specifically as a label for UI controls.][6874] - [Accessibility: Integrate with and expose AccessKit accessibility.][6874] - [App: `App::setup`][7586] - [App: `SubApp::new`][7290] - [App: Bevy apps will now log system information on startup by default][5454] - [Audio Expose symphonia features from rodio in bevy_audio and bevy][6388] - [Audio: Basic spatial audio][6028] - [ECS: `bevy_ptr::dangling_with_align`: creates a well-aligned dangling pointer to a type whose alignment is not known at compile time.][6618] - [ECS: `Column::get_added_ticks`][6547] - [ECS: `Column::get_column_ticks`][6547] - [ECS: `DetectChanges::set_if_neq`: triggering change detection when the new and previous values are equal. This will work on both components and resources.][6853] - [ECS: `SparseSet::get_added_ticks`][6547] - [ECS: `SparseSet::get_column_ticks`][6547] - [ECS: `Tick`, a wrapper around a single change detection tick.][6547] - [ECS: `UnsafeWorldCell::world_mut` now exists and can be used to get a `&mut World` out of `UnsafeWorldCell`][7381] - [ECS: `WorldId` now implements the `FromWorld` trait.][7726] - [ECS: A `core::fmt::Pointer` impl to `Ptr`, `PtrMut` and `OwnedPtr`.][6980] - [ECS: Add `bevy_ecs::schedule_v3` module][6587] - [ECS: Add `EntityMap::iter()`][6935] - [ECS: Add `Ref` to the prelude][7392] - [ECS: Add `report_sets` option to `ScheduleBuildSettings`][7756] - [ECS: add `Resources::iter` to iterate over all resource IDs][6592] - [ECS: add `UnsafeWorldCell` abstraction][6404] - [ECS: Add `World::clear_resources` & `World::clear_all`][3212] - [ECS: Add a basic example for system ordering][7017] - [ECS: Add a missing impl of `ReadOnlySystemParam` for `Option>`][7245] - [ECS: add a spawn_on_external method to allow spawning on the scope’s thread or an external thread][7415] - [ECS: Add const `Entity::PLACEHOLDER`][6761] - [ECS: Add example to show how to use `apply_system_buffers`][7793] - [ECS: Add logging variants of system piping][6751] - [ECS: Add safe constructors for untyped pointers `Ptr` and `PtrMut`][6539] - [ECS: Add unit test with system that panics][7491] - [ECS: Add wrapping_add to change_tick][7146] - [ECS: Added “base sets” and ported CoreSet to use them.][7466] - [ECS: Added `as_mut` and `as_ref` methods to `MutUntyped`.][7009] - [ECS: Added `bevy::ecs::system::assert_is_read_only_system`.][7547] - [ECS: Added `Components::resource_id`.][7284] - [ECS: Added `DebugName` world query for more human friendly debug names of entities.][7186] - [ECS: Added `distributive_run_if` to `IntoSystemConfigs` to enable adding a run condition to each system when using `add_systems`.][7724] - [ECS: Added `EntityLocation::table_id`][6681] - [ECS: Added `EntityLocation::table_row`.][6681] - [ECS: Added `IntoIterator` implementation for `EventReader` so you can now do `&mut reader` instead of `reader.iter()` for events.][7720] - [ECS: Added `len`, `is_empty`, `iter` methods on SparseSets.][7638] - [ECS: Added `ManualEventReader::clear()`][7471] - [ECS: Added `MutUntyped::with_type` which allows converting into a `Mut`][7113] - [ECS: Added `new_for_test` on `ComponentInfo` to make test code easy.][7638] - [ECS: Added `not` condition.][7559] - [ECS: Added `on_timer` and `on_fixed_timer` run conditions][7866] - [ECS: Added `OwningPtr::read_unaligned`.][7039] - [ECS: Added `ReadOnlySystem`, which is implemented for any `System` type whose parameters all implement `ReadOnlySystemParam`.][7547] - [ECS: Added `Ref` which allows inspecting change detection flags in an immutable way][7097] - [ECS: Added `shrink` and `as_ref` methods to `PtrMut`.][7009] - [ECS: Added `SystemMeta::name`][6900] - [ECS: Added `SystemState::get_manual_mut`][7084] - [ECS: Added `SystemState::get_manual`][7084] - [ECS: Added `SystemState::update_archetypes`][7084] - [ECS: Added a large number of methods on `App` to work with schedules ergonomically][7267] - [ECS: Added conversions from `Ptr`, `PtrMut`, and `OwningPtr` to `NonNull`.][7181] - [ECS: Added rore common run conditions: `on_event`, resource change detection, `state_changed`, `any_with_component`][7579] - [ECS: Added support for variants of `bevy_ptr` types that do not require being correctly aligned for the pointee type.][7151] - [ECS: Added the `CoreSchedule` enum][7267] - [ECS: Added the `SystemParam` type `Deferred`, which can be used to defer `World` mutations. Powered by the new trait `SystemBuffer`.][6817] - [ECS: Added the extension methods `.and_then(...)` and `.or_else(...)` to run conditions, which allows combining run conditions with short-circuiting behavior.][7605] - [ECS: Added the marker trait `BaseSystemSet`, which is distinguished from a `FreeSystemSet`. These are both subtraits of `SystemSet`.][7863] - [ECS: Added the method `reborrow` to `Mut`, `ResMut`, `NonSendMut`, and `MutUntyped`.][7114] - [ECS: Added the private `prepare_view_uniforms` system now has a public system set for scheduling purposes, called `ViewSet::PrepareUniforms`][7267] - [ECS: Added the trait `Combine`, which can be used with the new `CombinatorSystem` to create system combinators with custom behavior.][7605] - [ECS: Added the trait `EntityCommand`. This is a counterpart of `Command` for types that execute code for a single entity.][7015] - [ECS: introduce EntityLocation::INVALID const and adjust Entities::get comment][7623] - [ECS: States derive macro][7535] - [ECS: support for tuple structs and unit structs to the `SystemParam` derive macro.][6957] - [Hierarchy: Add `Transform::look_to`][6692] - [Hierarchy: Added `add_child`, `set_parent` and `remove_parent` to `EntityMut`][6926] - [Hierarchy: Added `clear_children(&mut self) -> &mut Self` and `replace_children(&mut self, children: &[Entity]) -> &mut Self` function in `BuildChildren` trait][6035] - [Hierarchy: Added `ClearChildren` and `ReplaceChildren` struct][6035] - [Hierarchy: Added `push_and_replace_children_commands` and `push_and_clear_children_commands` test][6035] - [Hierarchy: Added the `BuildChildrenTransformExt` trait][7024] - [Input: add Input Method Editor support][7325] - [Input: Added `Axis::devices`][5400] - [INput: Added common run conditions for `bevy_input`][7806] - [Macro: add helper for macro to get either bevy::x or bevy_x depending on how it was imported][7164] - [Math: `CubicBezier2d`, `CubicBezier3d`, `QuadraticBezier2d`, and `QuadraticBezier3d` types with methods for sampling position, velocity, and acceleration. The generic `Bezier` type is also available, and generic over any degree of Bezier curve.][7653] - [Math: `CubicBezierEasing`, with additional methods to allow for smooth easing animations.][7653] - [Math: Added a generic cubic curve trait, and implementation for Cardinal splines (including Catmull-Rom), B-Splines, Beziers, and Hermite Splines. 2D cubic curve segments also implement easing functionality for animation.][7683] - [New reflection path syntax: struct field access by index (example syntax: `foo#1`)][7321] - [Reflect `State` generics other than just `RandomState` can now be reflected for both `hashbrown::HashMap` and `collections::HashMap`][7782] - [Reflect: `Aabb` now implements `FromReflect`.][7396] - [Reflect: `derive(Reflect)` now supports structs and enums that contain generic types][7364] - [Reflect: `ParsedPath` for cached reflection paths][7321] - [Reflect: `std::collections::HashMap` can now be reflected][7782] - [Reflect: `std::collections::VecDeque` now implements `Reflect` and all relevant traits.][6831] - [Reflect: Add reflection path support for `Tuple` types][7324] - [Reflect: Added `ArrayIter::new`.][7449] - [Reflect: Added `FromReflect::take_from_reflect`][6566] - [Reflect: Added `List::insert` and `List::remove`.][7063] - [Reflect: Added `Map::remove`][6564] - [Reflect: Added `ReflectFromReflect`][6245] - [Reflect: Added `TypeRegistrationDeserializer`, which simplifies getting a `&TypeRegistration` while deserializing a string.][7094] - [Reflect: Added methods to `List` that were previously provided by `Array`][7467] - [Reflect: Added support for enums in reflection paths][6560] - [Reflect: Added the `bevy_reflect_compile_fail_tests` crate for testing compilation errors][7041] - [Reflect: bevy_reflect: Add missing primitive registrations][7815] - [Reflect: impl `Reflect` for `&'static Path`][6755] - [Reflect: implement `Reflect` for `Fxaa`][7527] - [Reflect: implement `TypeUuid` for primitives and fix multiple-parameter generics having the same `TypeUuid`][6633] - [Reflect: Implemented `Reflect` + `FromReflect` for window events and related types. These types are automatically registered when adding the `WindowPlugin`.][6235] - [Reflect: Register Hash for glam types][6786] - [Reflect: Register missing reflected types for `bevy_render`][6811] - [Render: A pub field `extras` to `GltfNode`/`GltfMesh`/`GltfPrimitive` which store extras][6973] - [Render: A pub field `material_extras` to `GltfPrimitive` which store material extras][6973] - [Render: Add 'Color::as_lcha' function (#7757)][7766] - [Render: Add `Camera::viewport_to_world_2d`][6557] - [Render: Add a more familiar hex color entry][7060] - [Render: add ambient lighting hook][5428] - [Render: Add bevy logo to the lighting example to demo alpha mask shadows][7895] - [Render: Add Box::from_corners method][6672] - [Render: add OpenGL and DX11 backends][7481] - [Render: Add orthographic camera support back to directional shadows][7796] - [Render: add standard material depth bias to pipeline][7847] - [Render: Add support for Rgb9e5Ufloat textures][6781] - [Render: Added buffer usage field to buffers][7423] - [Render: can define a value from inside a shader][7518] - [Render: EnvironmentMapLight support for WebGL2][7737] - [Render: Implement `ReadOnlySystemParam` for `Extract<>`][7182] - [Render: Initial tonemapping options][7594] - [Render: ShaderDefVal: add an `UInt` option][6881] - [Render: Support raw buffers in AsBindGroup macro][7701] - [Rendering: `Aabb` now implements `Copy`.][7401] - [Rendering: `ExtractComponent` can specify output type, and outputting is optional.][6699] - [Rendering: `Mssaa::samples`][7292] - [Rendering: Add `#else ifdef` to shader preprocessing.][7431] - [Rendering: Add a field `push_constant_ranges` to RenderPipelineDescriptor and ComputePipelineDescriptor][7681] - [Rendering: Added `Material::prepass_vertex_shader()` and `Material::prepass_fragment_shader()` to control the prepass from the `Material`][6284] - [Rendering: Added `BloomSettings:lf_boost`, `BloomSettings:lf_boost_curvature`, `BloomSettings::high_pass_frequency` and `BloomSettings::composite_mode`.][6677] - [Rendering: Added `BufferVec::extend`][6833] - [Rendering: Added `BufferVec::truncate`][6833] - [Rendering: Added `Camera::msaa_writeback` which can enable and disable msaa writeback.][7671] - [Rendering: Added `CascadeShadowConfigBuilder` to help with creating `CascadeShadowConfig`][7456] - [Rendering: Added `DepthPrepass` and `NormalPrepass` component to control which textures will be created by the prepass and available in later passes.][6284] - [Rendering: Added `Draw::prepare` optional trait function.][6885] - [Rendering: Added `DrawFunctionsInternals::id()`][6745] - [Rendering: Added `FallbackImageCubemap`.][7051] - [Rendering: Added `FogFalloff` enum for selecting between three widely used “traditional” fog falloff modes: `Linear`, `Exponential` and `ExponentialSquared`, as well as a more advanced `Atmospheric` fog;][6412] - [Rendering: Added `get_input_node`][6720] - [Rendering: Added `Lcha` member to `bevy_render::color::Color` enum][7483] - [Rendering: Added `MainTaret::main_texture_other`][7343] - [Rendering: Added `PhaseItem::entity`][6885] - [Rendering: Added `prepass_enabled` flag to the `MaterialPlugin` that will control if a material uses the prepass or not.][6284] - [Rendering: Added `prepass_enabled` flag to the `PbrPlugin` to control if the StandardMaterial uses the prepass. Currently defaults to false.][6284] - [Rendering: Added `PrepassNode` that runs before the main pass][6284] - [Rendering: Added `PrepassPlugin` to extract/prepare/queue the necessary data][6284] - [Rendering: Added `RenderCommand::ItemorldQuery` associated type.][6885] - [Rendering: Added `RenderCommand::ViewWorldQuery` associated type.][6885] - [Rendering: Added `RenderContext::add_command_buffer`][7248] - [Rendering: Added `RenderContext::begin_tracked_render_pass`.][7053] - [Rendering: Added `RenderContext::finish`][7248] - [Rendering: Added `RenderContext::new`][7248] - [Rendering: Added `SortedCameras`, exposing information that was previously internal to the camera driver node.][7671] - [Rendering: Added `try_add_node_edge`][6720] - [Rendering: Added `try_add_slot_edge`][6720] - [Rendering: Added `with_r`, `with_g`, `with_b`, and `with_a` to `Color`.][6899] - [Rendering: Added 2x and 8x sample counts for MSAA.][7684] - [Rendering: Added a `#[storage(index)]` attribute to the derive `AsBindGroup` macro.][6129] - [Rendering: Added an `EnvironmentMapLight` camera component that adds additional ambient light to a scene.][7051] - [Rendering: Added argument to `ScalingMode::WindowSize` that specifies the number of pixels that equals one world unit.][6201] - [Rendering: Added cylinder shape][6809] - [Rendering: Added example `shaders/texture_binding_array`.][6995] - [Rendering: Added new capabilities for shader validation.][6995] - [Rendering: Added specializable `BlitPipeline` and ported the upscaling node to use this.][7671] - [Rendering: Added subdivisions field to shape::Plane][7546] - [Rendering: Added support for additive and multiplicative blend modes in the PBR `StandardMaterial`, via `AlphaMode::Add` and `AlphaMode::Multiply`;][6644] - [Rendering: Added support for distance-based fog effects for PBR materials, controllable per-camera via the new `FogSettings` component;][6412] - [Rendering: Added support for KTX2 `R8_SRGB`, `R8_UNORM`, `R8G8_SRGB`, `R8G8_UNORM`, `R8G8B8_SRGB`, `R8G8B8_UNORM` formats by converting to supported wgpu formats as appropriate][4594] - [Rendering: Added support for premultiplied alpha in the PBR `StandardMaterial`, via `AlphaMode::Premultiplied`;][6644] - [Rendering: Added the ability to `#[derive(ExtractComponent)]` with an optional filter.][7399] - [Rendering: Added: `bevy_render::color::LchRepresentation` struct][7483] - [Rendering: Clone impl for MaterialPipeline][7548] - [Rendering: Implemented `Clone` for all pipeline types.][6653] - [Rendering: Smooth Transition between Animations][6922] - [Support optional env variable `BEVY_ASSET_ROOT` to explicitly specify root assets directory.][5346] - [Task: Add thread create/destroy callbacks to TaskPool][6561] - [Tasks: Added `ThreadExecutor` that can only be ticked on one thread.][7087] - [the extension methods `in_schedule(label)` and `on_startup()` for configuring the schedule a system belongs to.][7790] - [Transform: Added `GlobalTransform::reparented_to`][7020] - [UI: `Size::new` is now `const`][6602] - [UI: Add const to methods and const defaults to bevy_ui][5542] - [UI: Added `all`, `width` and `height` functions to `Size`.][7468] - [UI: Added `Anchor` component to `Text2dBundle`][6807] - [UI: Added `CalculatedSize::preserve_aspect_ratio`][6825] - [UI: Added `Component` derive to `Anchor`][6807] - [UI: Added `RelativeCursorPosition`, and an example showcasing it][7199] - [UI: Added `Text::with_linebreak_behaviour`][7283] - [UI: Added `TextBundle::with_linebreak_behaviour`][7283] - [UI: Added a `BackgroundColor` component to `TextBundle`.][7596] - [UI: Added a helper method `with_background_color` to `TextBundle`.][7596] - [UI: Added the `SpaceEvenly` variant to `AlignContent`.][7859] - [UI: Added the `Start` and `End` variants to `AlignItems`, `AlignSelf`, `AlignContent` and `JustifyContent`.][7859] - [UI: Adds `flip_x` and `flip_y` fields to `ExtractedUiNode`.][6292] - [Utils: Added `SyncCell::read`, which allows shared access to values that already implement the `Sync` trait.][7718] - [Utils: Added the guard type `bevy_utils::OnDrop`.][7181] - [Window: Add `Windows::get_focused(_mut)`][6571] - [Window: add span to winit event handler][6612] - [Window: Transparent window on macos][7617] - [Windowing: `WindowDescriptor` renamed to `Window`.][5589] - [Windowing: Added `hittest` to `WindowAttributes`][6664] - [Windowing: Added `Window::prevent_default_event_handling` . This allows bevy apps to not override default browser behavior on hotkeys like F5, F12, Ctrl+R etc.][7304] - [Windowing: Added `WindowDescriptor.always_on_top` which configures a window to stay on top.][6527] - [Windowing: Added an example `cargo run --example fallthrough`][6664] - [Windowing: Added the `hittest`’s setters/getters][6664] - [Windowing: Modifed the `WindowDescriptor`’s `Default` impl.][6664] - [Windowing: Modified the `WindowBuilder`][6664] ## Changed - [Animation: `AnimationPlayer` that are on a child or descendant of another entity with another player will no longer be run.][6785] - [Animation: Animation sampling now runs fully multi-threaded using threads from `ComputeTaskPool`.][6785] - [App: Adapt path type of dynamically_load_plugin][6734] - [App: Break CorePlugin into TaskPoolPlugin, TypeRegistrationPlugin, FrameCountPlugin.][7083] - [App: Increment FrameCount in CoreStage::Last.][7477] - [App::run() will now panic when called from Plugin::build()][4241] - [Asset: `AssetIo::watch_path_for_changes` allows watched path and path to reload to differ][6797] - [Asset: make HandleUntyped::id private][7076] - [Audio: `AudioOutput` is now a `Resource`. It's no longer `!Send`][6436] - [Audio: AudioOutput is actually a normal resource now, not a non-send resource][7262] - [ECS: `.label(SystemLabel)` is now referred to as `.in_set(SystemSet)`][7267] - [ECS: `App::add_default_labels` is now `App::add_default_sets`][7267] - [ECS: `App::add_system_set` was renamed to `App::add_systems`][7267] - [ECS: `Archetype` indices and `Table` rows have been newtyped as `ArchetypeRow` and `TableRow`.][4878] - [ECS: `ArchetypeGeneration` now implements `Ord` and `PartialOrd`.][6742] - [ECS: `bevy_pbr::add_clusters` is no longer an exclusive system][7267] - [ECS: `Bundle::get_components` now takes a `FnMut(StorageType, OwningPtr)`. The provided storage type must be correct for the component being fetched.][6902] - [ECS: `ChangeTrackers` has been deprecated. It will be removed in Bevy 0.11.][7306] - [ECS: `Command` closures no longer need to implement the marker trait `std::marker::Sync`.][7014] - [ECS: `CoreStage` and `StartupStage` enums are now `CoreSet` and `StartupSet`][7267] - [ECS: `EntityMut::world_scope` now allows returning a value from the immediately-computed closure.][7385] - [ECS: `EntityMut`: rename `remove_intersection` to `remove` and `remove` to `take`][7810] - [ECS: `EventReader::clear` now takes a mutable reference instead of consuming the event reader.][6851] - [ECS: `EventWriter::send_batch` will only log a TRACE level log if the batch is non-empty.][7753] - [ECS: `oldest_id` and `get_event` convenience methods added to `Events`.][5735] - [ECS: `OwningPtr::drop_as` will now panic in debug builds if the pointer is not aligned.][7117] - [ECS: `OwningPtr::read` will now panic in debug builds if the pointer is not aligned.][7117] - [ECS: `Ptr::deref` will now panic in debug builds if the pointer is not aligned.][7117] - [ECS: `PtrMut::deref_mut` will now panic in debug builds if the pointer is not aligned.][7117] - [ECS: `Query::par_for_each(_mut)` has been changed to `Query::par_iter(_mut)` and will now automatically try to produce a batch size for callers based on the current `World` state.][4777] - [ECS: `RemovedComponents` now internally uses an `Events` instead of an `Events`][7503] - [ECS: `SceneSpawnerSystem` now runs under `CoreSet::Update`, rather than `CoreStage::PreUpdate.at_end()`.][7267] - [ECS: `StartupSet` is now a base set][7574] - [ECS: `System::default_labels` is now `System::default_system_sets`.][7267] - [ECS: `SystemLabel` trait was replaced by `SystemSet`][7267] - [ECS: `SystemParamState::apply` now takes a `&SystemMeta` parameter in addition to the provided `&mut World`.][6900] - [ECS: `SystemTypeIdLabel` was replaced by `SystemSetType`][7267] - [ECS: `tick_global_task_pools_on_main_thread` is no longer run as an exclusive system. Instead, it has been replaced by `tick_global_task_pools`, which uses a `NonSend` resource to force running on the main thread.][7267] - [ECS: `Tick::is_older_than` was renamed to `Tick::is_newer_than`. This is not a functional change, since that was what was always being calculated, despite the wrong name.][7561] - [ECS: `UnsafeWorldCell::world` is now used to get immutable access to the whole world instead of just the metadata which can now be done via `UnsafeWorldCell::world_metadata`][7381] - [ECS: `World::init_non_send_resource` now returns the generated `ComponentId`.][7284] - [ECS: `World::init_resource` now returns the generated `ComponentId`.][7284] - [ECS: `World::iter_entities` now returns an iterator of `EntityRef` instead of `Entity`.][6843] - [ECS: `World`s can now only hold a maximum of 2^32 - 1 tables.][6681] - [ECS: `World`s can now only hold a maximum of 2^32- 1 archetypes.][6681] - [ECS: `WorldId` now implements `SystemParam` and will return the id of the world the system is running in][7741] - [ECS: Adding rendering extraction systems now panics rather than silently failing if no subapp with the `RenderApp` label is found.][7267] - [ECS: Allow adding systems to multiple sets that share the same base set][7709] - [ECS: change `is_system_type() -> bool` to `system_type() -> Option`][7715] - [ECS: changed some `UnsafeWorldCell` methods to take `self` instead of `&self`/`&mut self` since there is literally no point to them doing that][7381] - [ECS: Changed: `Query::for_each(_mut)`, `QueryParIter` will now leverage autovectorization to speed up query iteration where possible.][6547] - [ECS: Default to using ExecutorKind::SingleThreaded on wasm32][7717] - [ECS: Ensure `Query` does not use the wrong `World`][7150] - [ECS: Exclusive systems may now be used with system piping.][7023] - [ECS: expose `ScheduleGraph` for use in third party tools][7522] - [ECS: extract topsort logic to a new method, one pass to detect cycles and …][7727] - [ECS: Fixed time steps now use a schedule (`CoreSchedule::FixedTimeStep`) rather than a run criteria.][7267] - [ECS: for disconnected, use Vec instead of HashSet to reduce insert overhead][7744] - [ECS: Implement `SparseSetIndex` for `WorldId`][7125] - [ECS: Improve the panic message for schedule build errors][7860] - [ECS: Lift the 16-field limit from the `SystemParam` derive][6867] - [ECS: Make `EntityRef::new` unsafe][7222] - [ECS: Make `Query` fields private][7149] - [ECS: make `ScheduleGraph::initialize` public][7723] - [ECS: Make boxed conditions read-only][7786] - [ECS: Make RemovedComponents mirror EventReaders api surface][7713] - [ECS: Mark TableRow and TableId as repr(transparent)][7166] - [ECS: Most APIs returning `&UnsafeCell` now returns `TickCells` instead, which contains two separate `&UnsafeCell` for either component ticks.][6547] - [ECS: Move MainThreadExecutor for stageless migration.][7444] - [ECS: Move safe operations out of `unsafe` blocks in `Query`][7851] - [ECS: Optimize `.nth()` and `.last()` for event iterators][7530] - [ECS: Optimize `Iterator::count` for event iterators][7582] - [ECS: Provide public `EntityRef::get_change_ticks_by_id` that takes `ComponentId`][6683] - [ECS: refactor: move internals from `entity_ref` to `World`, add `SAFETY` comments][6402] - [ECS: Rename `EntityId` to `EntityIndex`][6732] - [ECS: Rename `UnsafeWorldCellEntityRef` to `UnsafeEntityCell`][7568] - [ECS: Rename schedule v3 to schedule][7519] - [ECS: Rename state_equals condition to in_state][7677] - [ECS: Replace `World::read_change_ticks` with `World::change_ticks` within `bevy_ecs` crate][6816] - [ECS: Replaced the trait `ReadOnlySystemParamFetch` with `ReadOnlySystemParam`.][6865] - [ECS: Simplified the `SystemParamFunction` and `ExclusiveSystemParamFunction` traits.][7675] - [ECS: Speed up `CommandQueue` by storing commands more densely][6391] - [ECS: Stageless: move final apply outside of spawned executor][7445] - [ECS: Stageless: prettier cycle reporting][7463] - [ECS: Systems without `Commands` and `ParallelCommands` will no longer show a `system_commands` span when profiling.][6900] - [ECS: The `ReportHierarchyIssue` resource now has a public constructor (`new`), and implements `PartialEq`][7267] - [ECS: The `StartupSchedule` label is now defined as part of the `CoreSchedules` enum][7267] - [ECS: The `SystemParam` derive is now more flexible, allowing you to omit unused lifetime parameters.][6694] - [ECS: the top level `bevy_ecs::schedule` module was replaced with `bevy_ecs::scheduling`][7267] - [ECS: Use `World` helper methods for sending `HierarchyEvent`s][6921] - [ECS: Use a bounded channel in the multithreaded executor][7829] - [ECS: Use a default implementation for `set_if_neq`][7660] - [ECS: Use consistent names for marker generics][7788] - [ECS: Use correct terminology for a `NonSend` run condition panic][7841] - [ECS: Use default-implemented methods for `IntoSystemConfig<>`][7870] - [ECS: use try_send to replace send.await, unbounded channel should always b…][7745] - [General: The MSRV of the engine is now 1.67.][7379] - [Input: Bump gilrs version to 0.10][6558] - [IOS, Android... same thing][7493] - [Math: Update `glam` to `0.23`][7883] - [Math: use `Mul` to double the value of `Vec3`][6607] - [Reflect: bevy_reflect now uses a fixed state for its hasher, which means the output of `Reflect::reflect_hash` is now deterministic across processes.][7583] - [Reflect: Changed function signatures of `ReflectComponent` methods, `apply`, `remove`, `contains`, and `reflect`.][7206] - [Reflect: Changed the `List::push` and `List::pop` to have default implementations.][7063] - [Reflect: Registered `SmallVec<[Entity; 8]>` in the type registry][6578] - [Renamed methods on `GetPath`:][7321] - `path` -> `reflect_path` - `path_mut` -> `reflect_path_mut` - `get_path` -> `path` - `get_path_mut` -> `path_mut` - [Render: Allow prepass in webgl][7537] - [Render: bevy_pbr: Avoid copying structs and using registers in shaders][7069] - [Render: bevy_pbr: Clear fog DynamicUniformBuffer before populating each frame][7432] - [Render: bevy_render: Run calculate_bounds in the end-of-update exclusive systems][7127] - [Render: Change the glTF loader to use `Camera3dBundle`][7890] - [Render: Changed &mut PipelineCache to &PipelineCache][7598] - [Render: Intepret glTF colors as linear instead of sRGB][6828] - [Render: Move 'startup' Resource `WgpuSettings` into the `RenderPlugin`][6946] - [Render: Move prepass functions to prepass_utils][7354] - [Render: Only compute sprite color once per quad][7498] - [Render: Only execute `#define` if current scope is accepting lines][7798] - [Render: Pipelined Rendering][6503] - [Render: Refactor Globals and View structs into separate shaders][7512] - [Render: Replace UUID based IDs with a atomic-counted ones][6988] - [Render: run clear trackers on render world][6878] - [Render: set cull mode: None for Mesh2d][7514] - [Render: Shader defs can now have a value][5900] - [Render: Shrink ComputedVisibility][6305] - [Render: Use prepass shaders for shadows][7784] - [Rendering: `add_node_edge` is now infallible (panics on error)][6720] - [Rendering: `add_slot_edge` is now infallible (panics on error)][6720] - [Rendering: `AsBindGroup` is now object-safe.][6937] - [Rendering: `BloomSettings::knee` renamed to `BloomPrefilterSettings::softness`.][6677] - [Rendering: `BloomSettings::threshold` renamed to `BloomPrefilterSettings::threshold`.][6677] - [Rendering: `HexColorError::Hex` has been renamed to `HexColorError::Char`][6940] - [Rendering: `input_node` now panics on `None`][6720] - [Rendering: `ktx2` and `zstd` are now part of bevy’s default enabled features][7696] - [Rendering: `Msaa` is now enum][7292] - [Rendering: `PipelineCache` no longer requires mutable access in order to queue render / compute pipelines.][7205] - [Rendering: `RenderContext::command_encoder` is now private. Use the accessor `RenderContext::command_encoder()` instead.][7248] - [Rendering: `RenderContext::render_device` is now private. Use the accessor `RenderContext::render_device()` instead.][7248] - [Rendering: `RenderContext` now supports adding external `CommandBuffer`s for inclusion into the render graphs. These buffers can be encoded outside of the render graph (i.e. in a system).][7248] - [Rendering: `scale` is now applied before updating `area`. Reading from it will take `scale` into account.][6201] - [Rendering: `SkinnedMeshJoints::build` now takes a `&mut BufferVec` instead of a `&mut Vec` as a parameter.][6833] - [Rendering: `StandardMaterial` now defaults to a dielectric material (0.0 `metallic`) with 0.5 `perceptual_roughness`.][7664] - [Rendering: `TrackedRenderPass` now requires a `&RenderDevice` on construction.][7053] - [Rendering: `Visibility` is now an enum][6320] - [Rendering: Bloom now looks different.][6677] - [Rendering: Directional lights now use cascaded shadow maps for improved shadow quality.][7064] - [Rendering: ExtractedMaterials, extract_materials and prepare_materials are now public][7548] - [Rendering: For performance reasons, some detailed renderer trace logs now require the use of cargo feature `detailed_trace` in addition to setting the log level to `TRACE` in order to be shown.][7639] - [Rendering: Made cameras with the same target share the same `main_texture` tracker, which ensures continuity across cameras.][7671] - [Rendering: Renamed `ScalingMode::Auto` to `ScalingMode::AutoMin`.][6496] - [Rendering: Renamed `ScalingMode::None` to `ScalingMode::Fixed`][6201] - [Rendering: Renamed `window_origin` to `viewport_origin`][6201] - [Rendering: Renamed the `priority` field on `Camera` to `order`.][6908] - [Rendering: Replaced `left`, `right`, `bottom`, and `top` fields with a single `area: Rect`][6201] - [Rendering: StandardMaterials will now appear brighter and more saturated at high roughness, due to internal material changes. This is more physically correct.][7051] - [Rendering: The `layout` field of `RenderPipelineDescriptor` and `ComputePipelineDescriptor` is now mandatory.][7681] - [Rendering: The `rangefinder` module has been moved into the `render_phase` module.][7016] - [Rendering: The bloom example has been renamed to bloom_3d and improved. A bloom_2d example was added.][6677] - [Rendering: the SubApp Extract stage has been separated from running the sub app schedule.][7046] - [Rendering: To enable multiple `RenderPhases` to share the same `TrackedRenderPass`, the `RenderPhase::render` signature has changed.][7043] - [Rendering: update its `Transform` in order to preserve its `GlobalTransform` after the parent change][7024] - [Rendering: Updated to wgpu 0.15, wgpu-hal 0.15.1, and naga 0.11][7356] - [Rendering: Users can now use the DirectX Shader Compiler (DXC) on Windows with DX12 for faster shader compilation and ShaderModel 6.0+ support (requires `dxcompiler.dll` and `dxil.dll`)][7356] - [Rendering: You can now set up the rendering code of a `RenderPhase` directly using the `RenderPhase::render` method, instead of implementing it manually in your render graph node.][7013] - [Scenes: `SceneSpawner::spawn_dynamic` now returns `InstanceId` instead of `()`.][6663] - [Shape: Change `From` to `TryFrom`][6484] - [Tasks: `Scope` now uses `FallibleTask` to await the cancellation of all remaining tasks when it’s dropped.][6696] - [Time: `Time::set_relative_speed_fXX` now allows a relative speed of -0.0.][7740] - [UI: `FocusPolicy` default has changed from `FocusPolicy::Block` to `FocusPolicy::Pass`][7161] - [UI: `TextPipeline::queue_text` and `GlyphBrush::compute_glyphs` now need a TextLineBreakBehaviour argument, in order to pass through the new field.][7283] - [UI: `update_image_calculated_size_system` sets `preserve_aspect_ratio` to true for nodes with images.][6825] - [UI: Added `Changed` to the change detection query of `text_system`. This ensures that any change in the size of a text node will cause any text it contains to be recomputed.][7674] - [UI: Changed `Size::height` so it sets the `width` to `Val::AUTO`.][7626] - [UI: Changed `Size::width` so it sets the `height` to `Val::AUTO`.][7626] - [UI: Changed `TextAlignment` into an enum with `Left`, `Center`, and `Right` variants.][6807] - [UI: Changed extract_uinodes to extract the flip_x and flip_y values from UiImage.][6292] - [UI: Changed prepare_uinodes to swap the UV coordinates as required.][6292] - [UI: Changed Taffy version to 0.3.3 and disabled its `grid` feature.][7859] - [UI: Changed the `Size` `width` and `height` default values to `Val::Auto`][7475] - [UI: Changed the `size` field of `CalculatedSize` to a Vec2.][7641] - [UI: Changed UiImage derefs to texture field accesses.][6292] - [UI: Changed UiImage to a struct with texture, flip_x, and flip_y fields.][6292] - [UI: Modified the `text2d` example to show both linebreaking behaviours.][7283] - [UI: Renamed `image_node_system` to `update_image_calculated_size_system`][6674] - [UI: Renamed the `background_color` field of `ExtractedUiNode` to `color`.][7452] - [UI: Simplified the UI examples. Replaced numeric values with the Flex property enums or elided them where possible, and removed the remaining use of auto margins.][7626] - [UI: The `MeasureFunc` only preserves the aspect ratio when `preserve_aspect_ratio` is true.][6825] - [UI: Updated `from_style` for Taffy 0.3.3.][7859] - [UI: Upgraded to Taffy 0.2, improving UI layout performance significantly and adding the flexbox `gap` property and `AlignContent::SpaceEvenly`.][6743] - [UI: Use `f32::INFINITY` instead of `f32::MAX` to represent unbounded text in Text2dBounds][6807] - [Window: expose cursor position with scale][7297] - [Window: Make WindowId::primary() const][6582] - [Window: revert stage changed for window closing][7296] - [Windowing: `WindowId` is now `Entity`.][5589] - [Windowing: Moved `changed_window` and `despawn_window` systems to `CoreStage::Last` to avoid systems making changes to the `Window` between `changed_window` and the end of the frame as they would be ignored.][7517] - [Windowing: Requesting maximization/minimization is done on the [`Window::state`] field.][5589] - [Windowing: Width/height consolidated into a `WindowResolution` component.][5589] ## Removed - [App: Removed `App::add_sub_app`][7290] - [App: Rename dynamic feature][7340] - [ECS: Remove .on_update method to improve API consistency and clarity][7667] - [ECS: Remove `BuildWorldChildren` impl from `WorldChildBuilder`][6727] - [ECS: Remove a duplicate lookup in `apply_state_transitions`][7800] - [ECS: Remove an incorrect impl of `ReadOnlySystemParam` for `NonSendMut`][7243] - [ECS: Remove APIs deprecated in 0.9][6801] - [ECS: Remove broken `DoubleEndedIterator` impls on event iterators][7469] - [ECS: Remove duplicate lookups from `Resource` initialization][7174] - [ECS: Remove useless access to archetype in `UnsafeWorldCell::fetch_table`][7665] - [ECS: Removed `AddBundle`. `Edges::get_add_bundle` now returns `Option`][6742] - [ECS: Removed `Archetype::new` and `Archetype::is_empty`.][6742] - [ECS: Removed `ArchetypeComponentId::new` and `ArchetypeComponentId::value`.][6742] - [ECS: Removed `ArchetypeGeneration::value`][6742] - [ECS: Removed `ArchetypeId::new` and `ArchetypeId::value`.][6742] - [ECS: Removed `ArchetypeIdentity`.][6742] - [ECS: Removed `Archetypes`’s `Default` implementation.][6742] - [ECS: Removed `AsSystemLabel` trait][7267] - [ECS: Removed `Entities::alloc_at_without_replacement` and `AllocAtWithoutReplacement`.][6740] - [ECS: Removed `Entities`’s `Default` implementation.][6740] - [ECS: Removed `EntityMeta`][6740] - [ECS: Removed `on_hierarchy_reports_enabled` run criteria (now just uses an ad hoc resource checking run condition)][7267] - [ECS: Removed `RunCriteriaLabel`][7267] - [ECS: Removed `RunCriteriaLabel`][7267] - [ECS: Removed `SystemParamFetch`, its functionality has been moved to `SystemParamState`.][6865] - [ECS: Removed `Table::component_capacity`][4928] - [ECS: Removed `transform_propagate_system_set`: this was a nonstandard pattern that didn’t actually provide enough control. The systems are already `pub`: the docs have been updated to ensure that the third-party usage is clear.][7267] - [ECS: removed `UnsafeWorldCell::storages` since that is probably unsound since storages contains the actual component/resource data not just metadata][7381] - [ECS: Removed stages, and all code that mentions stages][7267] - [ECS: Removed states have been dramatically simplified, and no longer use a stack][7267] - [ECS: Removed systems in `RenderSet/Stage::Extract` no longer warn when they do not read data from the main world][7267] - [ECS: Removed the bound `T: Sync` from `Local` when used as an `ExclusiveSystemParam`.][7040] - [ECS: Removed the method `ExclusiveSystemParamState::apply`.][7489] - [ECS: Removed the trait `ExclusiveSystemParamState`, merging its functionality into `ExclusiveSystemParam`.][6919] - [ECS: Removed the trait `SystemParamState`, merging its functionality into `SystemParam`.][6919] - [ECS: Support `SystemParam` types with const generics][7001] - [ECS: Use T::Storage::STORAGE_TYPE to optimize out unused branches][6800] - [Hierarchy: Expose transform propagate systems][7145] - [Hierarchy: Make adding children idempotent][6763] - [Hierarchy: Remove `EntityCommands::add_children`][6942] - [Input: Gamepad events refactor][6965] - [Reflect: Make proc macros hygienic in bevy_reflect_derive][6752] - [Reflect: Removed `#[module]` helper attribute for `Reflect` derives (this is not currently used)][7148] - [Reflect: Removed `Array` as supertrait of `List`][7467] - [Reflect: Removed `PixelInfo` and get `pixel_size` from wgpu][6820] - [Reflect: Removed `ReflectSerialize` and `ReflectDeserialize` registrations from most glam types][6580] - [Remove unnecessary `Default` impl of HandleType][7472] - [Remove warning about missed events due to false positives][6730] - [Render: Make Core Pipeline Graph Nodes Public][6605] - [Render: Optimize color computation in prepare_uinodes][7311] - [Render: Organized scene_viewer into plugins for reuse and organization][6936] - [Render: put `update_frusta::` in `UpdateProjectionFrusta` set][7526] - [Render: Remove dependency on the mesh struct in the pbr function][7597] - [Render: remove potential ub in render_resource_wrapper][7279] - [Render: Remove redundant bitwise OR `TEXTURE_ADAPTER_SPECIFIC_FORMAT_FEATURES`][7033] - [Render: Remove the early exit to make sure the prepass textures are cleared][7891] - [Render: remove the image loaded check for nodes without images in extract_uinodes][7280] - [Render: Remove unnecessary alternate create_texture path in prepare_asset for Image][6671] - [Render: remove unused var in fxaa shader][7509] - [Render: set AVAILABLE_STORAGE_BUFFER_BINDINGS to the actual number of buffers available][6787] - [Render: Use `Time` `resource` instead of `Extract`ing `Time`][7316] - [Render: use better set inheritance in render systems][7524] - [Render: use blendstate blend for alphamode::blend][7899] - [Render: Use Image::default for 1 pixel white texture directly][7884] - [Rendering: Removed `bevy_render::render_phase::DrawState`. It was not usable in any form outside of `bevy_render`.][7053] - [Rendering: Removed `BloomSettings::scale`.][6677] - [Rendering: Removed `EntityPhaseItem` trait][6885] - [Rendering: Removed `ExtractedJoints`.][6833] - [Rendering: Removed `SetShadowViewBindGroup`, `queue_shadow_view_bind_group()`, and `LightMeta::shadow_view_bind_group` in favor of reusing the prepass view bind group.][7875] - [Rendering: Removed the `render` feature group.][6912] - [Scene: scene viewer: can select a scene from the asset path][6859] - [Text: Warn instead of erroring when max_font_atlases is exceeded][6673] - [Transform: Removed `GlobalTransform::translation_mut`][7134] - [UI: Re-enable taffy send+sync assert][7769] - [UI: Remove `TextError::ExceedMaxTextAtlases(usize)` variant][6796] - [UI: Remove needless manual default impl of ButtonBundle][6970] - [UI: Removed `HorizontalAlign` and `VerticalAlign`.][6807] - [UI: Removed `ImageMode`.][6674] - [UI: Removed `QueuedText`][7414] - [UI: Removed the `image_mode` field from `ImageBundle`][6674] - [UI: Removed the `Val` <-> `f32` conversion for `CalculatedSize`.][7641] - [Update toml_edit to 0.18][7370] - [Update tracing-chrome requirement from 0.6.0 to 0.7.0][6709] - [Window: Remove unnecessary windows.rs file][7277] - [Windowing: `window.always_on_top` has been removed, you can now use `window.window_level`][7480] - [Windowing: Removed `ModifiesWindows` system label.][7517] ## Fixed - [Asset: Fix asset_debug_server hang. There should be at most one ThreadExecut…][7825] - [Asset: fix load_internal_binary_asset with debug_asset_server][7246] - [Assets: Hot reloading for `LoadContext::read_asset_bytes`][6797] - [Diagnostics: Console log messages now show when the `trace_tracy` feature was enabled.][6955] - [ECS: Fix `last_changed()` and `set_last_changed()` for `MutUntyped`][7619] - [ECS: Fix a miscompilation with `#[derive(SystemParam)]`][7105] - [ECS: Fix get_unchecked_manual using archetype index instead of table row.][6625] - [ECS: Fix ignored lifetimes in `#[derive(SystemParam)]`][7458] - [ECS: Fix init_non_send_resource overwriting previous values][7261] - [ECS: fix mutable aliases for a very short time if `WorldCell` is already borrowed][6639] - [ECS: Fix partially consumed `QueryIter` and `QueryCombinationIter` having invalid `size_hint`][5214] - [ECS: Fix PipeSystem panicking with exclusive systems][6698] - [ECS: Fix soundness bug with `World: Send`. Dropping a `World` that contains a `!Send` resource on the wrong thread will now panic.][6534] - [ECS: Fix Sparse Change Detection][6896] - [ECS: Fix trait bounds for run conditions][7688] - [ECS: Fix unsoundnes in `insert` `remove` and `despawn`][7805] - [ECS: Fix unsoundness in `EntityMut::world_scope`][7387] - [ECS: Fixed `DetectChanges::last_changed` returning the wrong value.][7560] - [ECS: Fixed `DetectChangesMut::set_last_changed` not actually updating the `changed` tick.][7560] - [ECS: Fixed `Res` and `Query` parameter never being mutually exclusive.][5105] - [ECS: Fixed a bug that caused `#[derive(SystemParam)]` to leak the types of private fields.][7056] - [ECS: schedule_v3: fix default set for systems not being applied][7350] - [ECS: Stageless: close the finish channel so executor doesn't deadlock][7448] - [ECS: Stageless: fix unapplied systems][7446] - [Hierarchy: don't error when sending HierarchyEvents when Event type not registered][7031] - [Hierarchy: Fix unsoundness for `propagate_recursive`][7003] - [Hierarchy: Fixed missing `ChildAdded` events][6926] - [Input: Avoid triggering change detection for inputs][6847] - [Input: Fix `AxisSettings::new` only accepting invalid bounds][7233] - [Input: Fix incorrect behavior of `just_pressed` and `just_released` in `Input`][7238] - [Input: Removed Mobile Touch event y-axis flip][6597] - [Reflect: bevy_reflect: Fix misplaced impls][6829] - [Reflect: Fix bug where deserializing unit structs would fail for non-self-describing formats][6722] - [Reflect: Fix bug where scene deserialization using certain readers could fail (e.g. `BufReader`, `File`, etc.)][6894] - [Reflect: fix typo in bevy_reflect::impls::std GetTypeRegistration for vec like…][7520] - [Reflect: Retain `::` after `>`, `)` or bracket when shortening type names][7755] - [Render: bevy_core_pipeline: Fix prepass sort orders][7539] - [Render: Cam scale cluster fix][7078] - [Render: fix ambiguities in render schedule][7725] - [Render: fix bloom viewport][6802] - [Render: Fix dependency of shadow mapping on the optional `PrepassPlugin`][7878] - [Render: Fix feature gating in texture_binding_array example][7425] - [Render: Fix material alpha_mode in example global_vs_local_translation][6658] - [Render: fix regex for shader define: must have at least one whitespace][7754] - [Render: fix shader_instancing][7305] - [Render: fix spot dir nan again][7176] - [Render: Recreate tonemapping bind group if view uniforms buffer has changed][7904] - [Render: Shadow render phase - pass the correct view entity][7048] - [Render: Text2d doesn't recompute text on changes to the text's bounds][7846] - [Render: wasm: pad globals uniform also in 2d][6643] - [Rendering: Emission strength is now correctly interpreted by the `StandardMaterial` as linear instead of sRGB.][7897] - [Rendering: Fix deband dithering intensity for non-HDR pipelines.][6707] - [Rendering: Fixed StandardMaterial occlusion being incorrectly applied to direct lighting.][7051] - [Rendering: Fixed the alpha channel of the `image::DynamicImage::ImageRgb32F` to `bevy_render::texture::Image` conversion in `bevy_render::texture::Image::from_dynamic()`.][6914] - [Scene: Cleanup dynamic scene before building][6254] - [Task: Fix panicking on another scope][6524] - [UI: `Size::height` sets `width` not `height`][7478] - [UI: Don't ignore UI scale for text][7510] - [UI: Fix `bevy_ui` compile error without `bevy_text`][7877] - [UI: Fix overflow scaling for images][7142] - [UI: fix upsert_leaf not setting a MeasureFunc for new leaf nodes][7351] - [Window: Apply `WindowDescriptor` settings in all modes][6934] - [Window: break feedback loop when moving cursor][7298] - [Window: create window as soon as possible][7668] - [Window: Fix a typo on `Window::set_minimized`][7276] - [Window: Fix closing window does not exit app in desktop_app mode][7628] - [Window: fix cursor grab issue][7010] - [Window: Fix set_cursor_grab_mode to try an alternative mode before giving an error][6599] [3212]: https://github.com/bevyengine/bevy/pull/3212 [4241]: https://github.com/bevyengine/bevy/pull/4241 [4594]: https://github.com/bevyengine/bevy/pull/4594 [4777]: https://github.com/bevyengine/bevy/pull/4777 [4878]: https://github.com/bevyengine/bevy/pull/4878 [4928]: https://github.com/bevyengine/bevy/pull/4928 [5105]: https://github.com/bevyengine/bevy/pull/5105 [5214]: https://github.com/bevyengine/bevy/pull/5214 [5346]: https://github.com/bevyengine/bevy/pull/5346 [5400]: https://github.com/bevyengine/bevy/pull/5400 [5428]: https://github.com/bevyengine/bevy/pull/5428 [5454]: https://github.com/bevyengine/bevy/pull/5454 [5542]: https://github.com/bevyengine/bevy/pull/5542 [5589]: https://github.com/bevyengine/bevy/pull/5589 [5735]: https://github.com/bevyengine/bevy/pull/5735 [5900]: https://github.com/bevyengine/bevy/pull/5900 [6028]: https://github.com/bevyengine/bevy/pull/6028 [6035]: https://github.com/bevyengine/bevy/pull/6035 [6129]: https://github.com/bevyengine/bevy/pull/6129 [6201]: https://github.com/bevyengine/bevy/pull/6201 [6235]: https://github.com/bevyengine/bevy/pull/6235 [6245]: https://github.com/bevyengine/bevy/pull/6245 [6254]: https://github.com/bevyengine/bevy/pull/6254 [6284]: https://github.com/bevyengine/bevy/pull/6284 [6292]: https://github.com/bevyengine/bevy/pull/6292 [6305]: https://github.com/bevyengine/bevy/pull/6305 [6320]: https://github.com/bevyengine/bevy/pull/6320 [6388]: https://github.com/bevyengine/bevy/pull/6388 [6391]: https://github.com/bevyengine/bevy/pull/6391 [6402]: https://github.com/bevyengine/bevy/pull/6402 [6404]: https://github.com/bevyengine/bevy/pull/6404 [6412]: https://github.com/bevyengine/bevy/pull/6412 [6436]: https://github.com/bevyengine/bevy/pull/6436 [6484]: https://github.com/bevyengine/bevy/pull/6484 [6496]: https://github.com/bevyengine/bevy/pull/6496 [6503]: https://github.com/bevyengine/bevy/pull/6503 [6524]: https://github.com/bevyengine/bevy/pull/6524 [6527]: https://github.com/bevyengine/bevy/pull/6527 [6534]: https://github.com/bevyengine/bevy/pull/6534 [6539]: https://github.com/bevyengine/bevy/pull/6539 [6547]: https://github.com/bevyengine/bevy/pull/6547 [6557]: https://github.com/bevyengine/bevy/pull/6557 [6558]: https://github.com/bevyengine/bevy/pull/6558 [6560]: https://github.com/bevyengine/bevy/pull/6560 [6561]: https://github.com/bevyengine/bevy/pull/6561 [6564]: https://github.com/bevyengine/bevy/pull/6564 [6566]: https://github.com/bevyengine/bevy/pull/6566 [6571]: https://github.com/bevyengine/bevy/pull/6571 [6578]: https://github.com/bevyengine/bevy/pull/6578 [6580]: https://github.com/bevyengine/bevy/pull/6580 [6582]: https://github.com/bevyengine/bevy/pull/6582 [6587]: https://github.com/bevyengine/bevy/pull/6587 [6592]: https://github.com/bevyengine/bevy/pull/6592 [6597]: https://github.com/bevyengine/bevy/pull/6597 [6599]: https://github.com/bevyengine/bevy/pull/6599 [6602]: https://github.com/bevyengine/bevy/pull/6602 [6605]: https://github.com/bevyengine/bevy/pull/6605 [6607]: https://github.com/bevyengine/bevy/pull/6607 [6612]: https://github.com/bevyengine/bevy/pull/6612 [6618]: https://github.com/bevyengine/bevy/pull/6618 [6625]: https://github.com/bevyengine/bevy/pull/6625 [6633]: https://github.com/bevyengine/bevy/pull/6633 [6639]: https://github.com/bevyengine/bevy/pull/6639 [6643]: https://github.com/bevyengine/bevy/pull/6643 [6644]: https://github.com/bevyengine/bevy/pull/6644 [6653]: https://github.com/bevyengine/bevy/pull/6653 [6658]: https://github.com/bevyengine/bevy/pull/6658 [6663]: https://github.com/bevyengine/bevy/pull/6663 [6664]: https://github.com/bevyengine/bevy/pull/6664 [6671]: https://github.com/bevyengine/bevy/pull/6671 [6672]: https://github.com/bevyengine/bevy/pull/6672 [6673]: https://github.com/bevyengine/bevy/pull/6673 [6674]: https://github.com/bevyengine/bevy/pull/6674 [6677]: https://github.com/bevyengine/bevy/pull/6677 [6681]: https://github.com/bevyengine/bevy/pull/6681 [6683]: https://github.com/bevyengine/bevy/pull/6683 [6692]: https://github.com/bevyengine/bevy/pull/6692 [6694]: https://github.com/bevyengine/bevy/pull/6694 [6696]: https://github.com/bevyengine/bevy/pull/6696 [6698]: https://github.com/bevyengine/bevy/pull/6698 [6699]: https://github.com/bevyengine/bevy/pull/6699 [6707]: https://github.com/bevyengine/bevy/pull/6707 [6709]: https://github.com/bevyengine/bevy/pull/6709 [6720]: https://github.com/bevyengine/bevy/pull/6720 [6722]: https://github.com/bevyengine/bevy/pull/6722 [6727]: https://github.com/bevyengine/bevy/pull/6727 [6730]: https://github.com/bevyengine/bevy/pull/6730 [6732]: https://github.com/bevyengine/bevy/pull/6732 [6734]: https://github.com/bevyengine/bevy/pull/6734 [6740]: https://github.com/bevyengine/bevy/pull/6740 [6742]: https://github.com/bevyengine/bevy/pull/6742 [6743]: https://github.com/bevyengine/bevy/pull/6743 [6745]: https://github.com/bevyengine/bevy/pull/6745 [6751]: https://github.com/bevyengine/bevy/pull/6751 [6752]: https://github.com/bevyengine/bevy/pull/6752 [6755]: https://github.com/bevyengine/bevy/pull/6755 [6761]: https://github.com/bevyengine/bevy/pull/6761 [6763]: https://github.com/bevyengine/bevy/pull/6763 [6781]: https://github.com/bevyengine/bevy/pull/6781 [6785]: https://github.com/bevyengine/bevy/pull/6785 [6786]: https://github.com/bevyengine/bevy/pull/6786 [6787]: https://github.com/bevyengine/bevy/pull/6787 [6796]: https://github.com/bevyengine/bevy/pull/6796 [6797]: https://github.com/bevyengine/bevy/pull/6797 [6800]: https://github.com/bevyengine/bevy/pull/6800 [6801]: https://github.com/bevyengine/bevy/pull/6801 [6802]: https://github.com/bevyengine/bevy/pull/6802 [6807]: https://github.com/bevyengine/bevy/pull/6807 [6809]: https://github.com/bevyengine/bevy/pull/6809 [6811]: https://github.com/bevyengine/bevy/pull/6811 [6816]: https://github.com/bevyengine/bevy/pull/6816 [6817]: https://github.com/bevyengine/bevy/pull/6817 [6820]: https://github.com/bevyengine/bevy/pull/6820 [6825]: https://github.com/bevyengine/bevy/pull/6825 [6828]: https://github.com/bevyengine/bevy/pull/6828 [6829]: https://github.com/bevyengine/bevy/pull/6829 [6831]: https://github.com/bevyengine/bevy/pull/6831 [6833]: https://github.com/bevyengine/bevy/pull/6833 [6843]: https://github.com/bevyengine/bevy/pull/6843 [6847]: https://github.com/bevyengine/bevy/pull/6847 [6851]: https://github.com/bevyengine/bevy/pull/6851 [6853]: https://github.com/bevyengine/bevy/pull/6853 [6859]: https://github.com/bevyengine/bevy/pull/6859 [6865]: https://github.com/bevyengine/bevy/pull/6865 [6867]: https://github.com/bevyengine/bevy/pull/6867 [6874]: https://github.com/bevyengine/bevy/pull/6874 [6878]: https://github.com/bevyengine/bevy/pull/6878 [6881]: https://github.com/bevyengine/bevy/pull/6881 [6885]: https://github.com/bevyengine/bevy/pull/6885 [6894]: https://github.com/bevyengine/bevy/pull/6894 [6896]: https://github.com/bevyengine/bevy/pull/6896 [6899]: https://github.com/bevyengine/bevy/pull/6899 [6900]: https://github.com/bevyengine/bevy/pull/6900 [6902]: https://github.com/bevyengine/bevy/pull/6902 [6908]: https://github.com/bevyengine/bevy/pull/6908 [6912]: https://github.com/bevyengine/bevy/pull/6912 [6914]: https://github.com/bevyengine/bevy/pull/6914 [6919]: https://github.com/bevyengine/bevy/pull/6919 [6921]: https://github.com/bevyengine/bevy/pull/6921 [6922]: https://github.com/bevyengine/bevy/pull/6922 [6926]: https://github.com/bevyengine/bevy/pull/6926 [6934]: https://github.com/bevyengine/bevy/pull/6934 [6935]: https://github.com/bevyengine/bevy/pull/6935 [6936]: https://github.com/bevyengine/bevy/pull/6936 [6937]: https://github.com/bevyengine/bevy/pull/6937 [6940]: https://github.com/bevyengine/bevy/pull/6940 [6942]: https://github.com/bevyengine/bevy/pull/6942 [6946]: https://github.com/bevyengine/bevy/pull/6946 [6955]: https://github.com/bevyengine/bevy/pull/6955 [6957]: https://github.com/bevyengine/bevy/pull/6957 [6965]: https://github.com/bevyengine/bevy/pull/6965 [6970]: https://github.com/bevyengine/bevy/pull/6970 [6973]: https://github.com/bevyengine/bevy/pull/6973 [6980]: https://github.com/bevyengine/bevy/pull/6980 [6988]: https://github.com/bevyengine/bevy/pull/6988 [6995]: https://github.com/bevyengine/bevy/pull/6995 [7001]: https://github.com/bevyengine/bevy/pull/7001 [7003]: https://github.com/bevyengine/bevy/pull/7003 [7009]: https://github.com/bevyengine/bevy/pull/7009 [7010]: https://github.com/bevyengine/bevy/pull/7010 [7013]: https://github.com/bevyengine/bevy/pull/7013 [7014]: https://github.com/bevyengine/bevy/pull/7014 [7015]: https://github.com/bevyengine/bevy/pull/7015 [7016]: https://github.com/bevyengine/bevy/pull/7016 [7017]: https://github.com/bevyengine/bevy/pull/7017 [7020]: https://github.com/bevyengine/bevy/pull/7020 [7023]: https://github.com/bevyengine/bevy/pull/7023 [7024]: https://github.com/bevyengine/bevy/pull/7024 [7031]: https://github.com/bevyengine/bevy/pull/7031 [7033]: https://github.com/bevyengine/bevy/pull/7033 [7039]: https://github.com/bevyengine/bevy/pull/7039 [7040]: https://github.com/bevyengine/bevy/pull/7040 [7041]: https://github.com/bevyengine/bevy/pull/7041 [7043]: https://github.com/bevyengine/bevy/pull/7043 [7046]: https://github.com/bevyengine/bevy/pull/7046 [7048]: https://github.com/bevyengine/bevy/pull/7048 [7051]: https://github.com/bevyengine/bevy/pull/7051 [7053]: https://github.com/bevyengine/bevy/pull/7053 [7056]: https://github.com/bevyengine/bevy/pull/7056 [7060]: https://github.com/bevyengine/bevy/pull/7060 [7063]: https://github.com/bevyengine/bevy/pull/7063 [7064]: https://github.com/bevyengine/bevy/pull/7064 [7069]: https://github.com/bevyengine/bevy/pull/7069 [7076]: https://github.com/bevyengine/bevy/pull/7076 [7078]: https://github.com/bevyengine/bevy/pull/7078 [7083]: https://github.com/bevyengine/bevy/pull/7083 [7084]: https://github.com/bevyengine/bevy/pull/7084 [7087]: https://github.com/bevyengine/bevy/pull/7087 [7094]: https://github.com/bevyengine/bevy/pull/7094 [7097]: https://github.com/bevyengine/bevy/pull/7097 [7105]: https://github.com/bevyengine/bevy/pull/7105 [7113]: https://github.com/bevyengine/bevy/pull/7113 [7114]: https://github.com/bevyengine/bevy/pull/7114 [7117]: https://github.com/bevyengine/bevy/pull/7117 [7125]: https://github.com/bevyengine/bevy/pull/7125 [7127]: https://github.com/bevyengine/bevy/pull/7127 [7134]: https://github.com/bevyengine/bevy/pull/7134 [7142]: https://github.com/bevyengine/bevy/pull/7142 [7145]: https://github.com/bevyengine/bevy/pull/7145 [7146]: https://github.com/bevyengine/bevy/pull/7146 [7148]: https://github.com/bevyengine/bevy/pull/7148 [7149]: https://github.com/bevyengine/bevy/pull/7149 [7150]: https://github.com/bevyengine/bevy/pull/7150 [7151]: https://github.com/bevyengine/bevy/pull/7151 [7161]: https://github.com/bevyengine/bevy/pull/7161 [7164]: https://github.com/bevyengine/bevy/pull/7164 [7166]: https://github.com/bevyengine/bevy/pull/7166 [7174]: https://github.com/bevyengine/bevy/pull/7174 [7176]: https://github.com/bevyengine/bevy/pull/7176 [7181]: https://github.com/bevyengine/bevy/pull/7181 [7182]: https://github.com/bevyengine/bevy/pull/7182 [7186]: https://github.com/bevyengine/bevy/pull/7186 [7199]: https://github.com/bevyengine/bevy/pull/7199 [7205]: https://github.com/bevyengine/bevy/pull/7205 [7206]: https://github.com/bevyengine/bevy/pull/7206 [7222]: https://github.com/bevyengine/bevy/pull/7222 [7233]: https://github.com/bevyengine/bevy/pull/7233 [7238]: https://github.com/bevyengine/bevy/pull/7238 [7243]: https://github.com/bevyengine/bevy/pull/7243 [7245]: https://github.com/bevyengine/bevy/pull/7245 [7246]: https://github.com/bevyengine/bevy/pull/7246 [7248]: https://github.com/bevyengine/bevy/pull/7248 [7261]: https://github.com/bevyengine/bevy/pull/7261 [7262]: https://github.com/bevyengine/bevy/pull/7262 [7267]: https://github.com/bevyengine/bevy/pull/7267 [7276]: https://github.com/bevyengine/bevy/pull/7276 [7277]: https://github.com/bevyengine/bevy/pull/7277 [7279]: https://github.com/bevyengine/bevy/pull/7279 [7280]: https://github.com/bevyengine/bevy/pull/7280 [7283]: https://github.com/bevyengine/bevy/pull/7283 [7284]: https://github.com/bevyengine/bevy/pull/7284 [7290]: https://github.com/bevyengine/bevy/pull/7290 [7292]: https://github.com/bevyengine/bevy/pull/7292 [7296]: https://github.com/bevyengine/bevy/pull/7296 [7297]: https://github.com/bevyengine/bevy/pull/7297 [7298]: https://github.com/bevyengine/bevy/pull/7298 [7304]: https://github.com/bevyengine/bevy/pull/7304 [7305]: https://github.com/bevyengine/bevy/pull/7305 [7306]: https://github.com/bevyengine/bevy/pull/7306 [7311]: https://github.com/bevyengine/bevy/pull/7311 [7316]: https://github.com/bevyengine/bevy/pull/7316 [7321]: https://github.com/bevyengine/bevy/pull/7321 [7324]: https://github.com/bevyengine/bevy/pull/7324 [7325]: https://github.com/bevyengine/bevy/pull/7325 [7340]: https://github.com/bevyengine/bevy/pull/7340 [7343]: https://github.com/bevyengine/bevy/pull/7343 [7350]: https://github.com/bevyengine/bevy/pull/7350 [7351]: https://github.com/bevyengine/bevy/pull/7351 [7354]: https://github.com/bevyengine/bevy/pull/7354 [7356]: https://github.com/bevyengine/bevy/pull/7356 [7364]: https://github.com/bevyengine/bevy/pull/7364 [7370]: https://github.com/bevyengine/bevy/pull/7370 [7379]: https://github.com/bevyengine/bevy/pull/7379 [7381]: https://github.com/bevyengine/bevy/pull/7381 [7385]: https://github.com/bevyengine/bevy/pull/7385 [7387]: https://github.com/bevyengine/bevy/pull/7387 [7392]: https://github.com/bevyengine/bevy/pull/7392 [7396]: https://github.com/bevyengine/bevy/pull/7396 [7399]: https://github.com/bevyengine/bevy/pull/7399 [7401]: https://github.com/bevyengine/bevy/pull/7401 [7414]: https://github.com/bevyengine/bevy/pull/7414 [7415]: https://github.com/bevyengine/bevy/pull/7415 [7423]: https://github.com/bevyengine/bevy/pull/7423 [7425]: https://github.com/bevyengine/bevy/pull/7425 [7431]: https://github.com/bevyengine/bevy/pull/7431 [7432]: https://github.com/bevyengine/bevy/pull/7432 [7444]: https://github.com/bevyengine/bevy/pull/7444 [7445]: https://github.com/bevyengine/bevy/pull/7445 [7446]: https://github.com/bevyengine/bevy/pull/7446 [7448]: https://github.com/bevyengine/bevy/pull/7448 [7449]: https://github.com/bevyengine/bevy/pull/7449 [7452]: https://github.com/bevyengine/bevy/pull/7452 [7456]: https://github.com/bevyengine/bevy/pull/7456 [7458]: https://github.com/bevyengine/bevy/pull/7458 [7463]: https://github.com/bevyengine/bevy/pull/7463 [7466]: https://github.com/bevyengine/bevy/pull/7466 [7467]: https://github.com/bevyengine/bevy/pull/7467 [7468]: https://github.com/bevyengine/bevy/pull/7468 [7469]: https://github.com/bevyengine/bevy/pull/7469 [7471]: https://github.com/bevyengine/bevy/pull/7471 [7472]: https://github.com/bevyengine/bevy/pull/7472 [7475]: https://github.com/bevyengine/bevy/pull/7475 [7477]: https://github.com/bevyengine/bevy/pull/7477 [7478]: https://github.com/bevyengine/bevy/pull/7478 [7480]: https://github.com/bevyengine/bevy/pull/7480 [7481]: https://github.com/bevyengine/bevy/pull/7481 [7483]: https://github.com/bevyengine/bevy/pull/7483 [7489]: https://github.com/bevyengine/bevy/pull/7489 [7491]: https://github.com/bevyengine/bevy/pull/7491 [7493]: https://github.com/bevyengine/bevy/pull/7493 [7498]: https://github.com/bevyengine/bevy/pull/7498 [7503]: https://github.com/bevyengine/bevy/pull/7503 [7509]: https://github.com/bevyengine/bevy/pull/7509 [7510]: https://github.com/bevyengine/bevy/pull/7510 [7512]: https://github.com/bevyengine/bevy/pull/7512 [7514]: https://github.com/bevyengine/bevy/pull/7514 [7517]: https://github.com/bevyengine/bevy/pull/7517 [7518]: https://github.com/bevyengine/bevy/pull/7518 [7519]: https://github.com/bevyengine/bevy/pull/7519 [7520]: https://github.com/bevyengine/bevy/pull/7520 [7522]: https://github.com/bevyengine/bevy/pull/7522 [7524]: https://github.com/bevyengine/bevy/pull/7524 [7526]: https://github.com/bevyengine/bevy/pull/7526 [7527]: https://github.com/bevyengine/bevy/pull/7527 [7530]: https://github.com/bevyengine/bevy/pull/7530 [7535]: https://github.com/bevyengine/bevy/pull/7535 [7537]: https://github.com/bevyengine/bevy/pull/7537 [7539]: https://github.com/bevyengine/bevy/pull/7539 [7546]: https://github.com/bevyengine/bevy/pull/7546 [7547]: https://github.com/bevyengine/bevy/pull/7547 [7548]: https://github.com/bevyengine/bevy/pull/7548 [7559]: https://github.com/bevyengine/bevy/pull/7559 [7560]: https://github.com/bevyengine/bevy/pull/7560 [7561]: https://github.com/bevyengine/bevy/pull/7561 [7568]: https://github.com/bevyengine/bevy/pull/7568 [7574]: https://github.com/bevyengine/bevy/pull/7574 [7579]: https://github.com/bevyengine/bevy/pull/7579 [7582]: https://github.com/bevyengine/bevy/pull/7582 [7583]: https://github.com/bevyengine/bevy/pull/7583 [7586]: https://github.com/bevyengine/bevy/pull/7586 [7594]: https://github.com/bevyengine/bevy/pull/7594 [7596]: https://github.com/bevyengine/bevy/pull/7596 [7597]: https://github.com/bevyengine/bevy/pull/7597 [7598]: https://github.com/bevyengine/bevy/pull/7598 [7605]: https://github.com/bevyengine/bevy/pull/7605 [7617]: https://github.com/bevyengine/bevy/pull/7617 [7619]: https://github.com/bevyengine/bevy/pull/7619 [7623]: https://github.com/bevyengine/bevy/pull/7623 [7626]: https://github.com/bevyengine/bevy/pull/7626 [7628]: https://github.com/bevyengine/bevy/pull/7628 [7638]: https://github.com/bevyengine/bevy/pull/7638 [7639]: https://github.com/bevyengine/bevy/pull/7639 [7641]: https://github.com/bevyengine/bevy/pull/7641 [7653]: https://github.com/bevyengine/bevy/pull/7653 [7660]: https://github.com/bevyengine/bevy/pull/7660 [7664]: https://github.com/bevyengine/bevy/pull/7664 [7665]: https://github.com/bevyengine/bevy/pull/7665 [7667]: https://github.com/bevyengine/bevy/pull/7667 [7668]: https://github.com/bevyengine/bevy/pull/7668 [7671]: https://github.com/bevyengine/bevy/pull/7671 [7674]: https://github.com/bevyengine/bevy/pull/7674 [7675]: https://github.com/bevyengine/bevy/pull/7675 [7677]: https://github.com/bevyengine/bevy/pull/7677 [7681]: https://github.com/bevyengine/bevy/pull/7681 [7683]: https://github.com/bevyengine/bevy/pull/7683 [7684]: https://github.com/bevyengine/bevy/pull/7684 [7688]: https://github.com/bevyengine/bevy/pull/7688 [7696]: https://github.com/bevyengine/bevy/pull/7696 [7701]: https://github.com/bevyengine/bevy/pull/7701 [7709]: https://github.com/bevyengine/bevy/pull/7709 [7713]: https://github.com/bevyengine/bevy/pull/7713 [7715]: https://github.com/bevyengine/bevy/pull/7715 [7717]: https://github.com/bevyengine/bevy/pull/7717 [7718]: https://github.com/bevyengine/bevy/pull/7718 [7720]: https://github.com/bevyengine/bevy/pull/7720 [7723]: https://github.com/bevyengine/bevy/pull/7723 [7724]: https://github.com/bevyengine/bevy/pull/7724 [7725]: https://github.com/bevyengine/bevy/pull/7725 [7726]: https://github.com/bevyengine/bevy/pull/7726 [7727]: https://github.com/bevyengine/bevy/pull/7727 [7737]: https://github.com/bevyengine/bevy/pull/7737 [7740]: https://github.com/bevyengine/bevy/pull/7740 [7741]: https://github.com/bevyengine/bevy/pull/7741 [7744]: https://github.com/bevyengine/bevy/pull/7744 [7745]: https://github.com/bevyengine/bevy/pull/7745 [7753]: https://github.com/bevyengine/bevy/pull/7753 [7754]: https://github.com/bevyengine/bevy/pull/7754 [7755]: https://github.com/bevyengine/bevy/pull/7755 [7756]: https://github.com/bevyengine/bevy/pull/7756 [7766]: https://github.com/bevyengine/bevy/pull/7766 [7769]: https://github.com/bevyengine/bevy/pull/7769 [7782]: https://github.com/bevyengine/bevy/pull/7782 [7784]: https://github.com/bevyengine/bevy/pull/7784 [7786]: https://github.com/bevyengine/bevy/pull/7786 [7788]: https://github.com/bevyengine/bevy/pull/7788 [7790]: https://github.com/bevyengine/bevy/pull/7790 [7793]: https://github.com/bevyengine/bevy/pull/7793 [7796]: https://github.com/bevyengine/bevy/pull/7796 [7798]: https://github.com/bevyengine/bevy/pull/7798 [7800]: https://github.com/bevyengine/bevy/pull/7800 [7805]: https://github.com/bevyengine/bevy/pull/7805 [7806]: https://github.com/bevyengine/bevy/pull/7806 [7810]: https://github.com/bevyengine/bevy/pull/7810 [7815]: https://github.com/bevyengine/bevy/pull/7815 [7825]: https://github.com/bevyengine/bevy/pull/7825 [7829]: https://github.com/bevyengine/bevy/pull/7829 [7841]: https://github.com/bevyengine/bevy/pull/7841 [7846]: https://github.com/bevyengine/bevy/pull/7846 [7847]: https://github.com/bevyengine/bevy/pull/7847 [7851]: https://github.com/bevyengine/bevy/pull/7851 [7859]: https://github.com/bevyengine/bevy/pull/7859 [7860]: https://github.com/bevyengine/bevy/pull/7860 [7863]: https://github.com/bevyengine/bevy/pull/7863 [7866]: https://github.com/bevyengine/bevy/pull/7866 [7870]: https://github.com/bevyengine/bevy/pull/7870 [7875]: https://github.com/bevyengine/bevy/pull/7875 [7877]: https://github.com/bevyengine/bevy/pull/7877 [7878]: https://github.com/bevyengine/bevy/pull/7878 [7883]: https://github.com/bevyengine/bevy/pull/7883 [7884]: https://github.com/bevyengine/bevy/pull/7884 [7890]: https://github.com/bevyengine/bevy/pull/7890 [7891]: https://github.com/bevyengine/bevy/pull/7891 [7895]: https://github.com/bevyengine/bevy/pull/7895 [7897]: https://github.com/bevyengine/bevy/pull/7897 [7899]: https://github.com/bevyengine/bevy/pull/7899 [7904]: https://github.com/bevyengine/bevy/pull/7904 ## Version 0.9.0 (2022-11-12) ### Added - [Bloom][6397] - [Add FXAA postprocessing][6393] - [Fix color banding by dithering image before quantization][5264] - [Plugins own their settings. Rework PluginGroup trait.][6336] - [Add global time scaling][5752] - [add globals to mesh view bind group][5409] - [Add UI scaling][5814] - [Add FromReflect for Timer][6422] - [Re-add local bool `has_received_time` in `time_system`][6357] - [Add default implementation of Serialize and Deserialize to Timer and Stopwatch][6248] - [add time wrapping to Time][5982] - [Stopwatch elapsed secs f64][5978] - [Remaining fn in Timer][5971] - [Support array / cubemap / cubemap array textures in KTX2][5325] - [Add methods for silencing system-order ambiguity warnings][6158] - [bevy_dynamic_plugin: make it possible to handle loading errors][6437] - [can get the settings of a plugin from the app][6372] - [Use plugin setup for resource only used at setup time][6360] - [Add `TimeUpdateStrategy` resource for manual `Time` updating][6159] - [dynamic scene builder][6227] - [Create a scene from a dynamic scene][6229] - [Scene example: write file in a task][5952] - [Add writing of scene data to Scene example][5949] - [can clone a scene][5855] - [Add "end of main pass post processing" render graph node][6468] - [Add `Camera::viewport_to_world`][6126] - [Sprite: allow using a sub-region (Rect) of the image][6014] - [Add missing type registrations for bevy_math types][5758] - [Add `serialize` feature to `bevy_core`][6423] - [add serialize feature to bevy_transform][6379] - [Add associated constant `IDENTITY` to `Transform` and friends.][5340] - [bevy_reflect: Add `Reflect::into_reflect`][6502] - [Add reflect_owned][6494] - [`Reflect` for `Tonemapping` and `ClusterConfig`][6488] - [add `ReflectDefault` to std types][6429] - [Add FromReflect for Visibility][6410] - [Register `RenderLayers` type in `CameraPlugin`][6308] - [Enable Constructing ReflectComponent/Resource][6257] - [Support multiple `#[reflect]`/`#[reflect_value]` + improve error messages][6237] - [Reflect Default for GlobalTransform][6200] - [Impl Reflect for PathBuf and OsString][6193] - [Reflect Default for `ComputedVisibility` and `Handle`][6187] - [Register `Wireframe` type][6152] - [Derive `FromReflect` for `Transform` and `GlobalTransform`][6015] - [Make arrays behave like lists in reflection][5987] - [Implement `Debug` for dynamic types][5948] - [Implemented `Reflect` for all the ranges][5806] - [Add `pop` method for `List` trait.][5797] - [bevy_reflect: `GetTypeRegistration` for `SmallVec`][5782] - [register missing reflect types][5747] - [bevy_reflect: Get owned fields][5728] - [bevy_reflect: Add `FromReflect` to the prelude][5720] - [implement `Reflect` for `Input`, some misc improvements to reflect value derive][5676] - [register `Cow<'static, str>` for reflection][5664] - [bevy_reflect: Relax bounds on `Option`][5658] - [remove `ReflectMut` in favor of `Mut`][5630] - [add some info from `ReflectPathError` to the error messages][5626] - [Added reflect/from reflect impls for NonZero integer types][5556] - [bevy_reflect: Update enum derives][5473] - [Add `reflect(skip_serializing)` which retains reflection but disables automatic serialization][5250] - [bevy_reflect: Reflect enums][4761] - [Disabling default features support in bevy_ecs, bevy_reflect and bevy][5993] - [expose window alpha mode][6331] - [Make bevy_window and bevy_input events serializable][6180] - [Add window resizing example][5813] - [feat: add GamepadInfo, expose gamepad names][6342] - [Derive `Reflect` + `FromReflect` for input types][6232] - [Make TouchInput and ForceTouch serializable][6191] - [Add a Gamepad Viewer tool to examples][6074] - [Derived `Copy` trait for `bevy_input` events, `Serialize`/`Deserialize` for events in `bevy_input` and `bevy_windows`, `PartialEq` for events in both, and `Eq` where possible in both.][6023] - [Support for additional gamepad buttons and axis][5853] - [Added keyboard scan input event][5495] - [Add `set_parent` and `remove_parent` to `EntityCommands`][6189] - [Add methods to `Query<&Children>` and `Query<&Parent>` to iterate over descendants and ancestors][6185] - [Add `is_finished` to `Task`][6444] - [Expose mint feature in bevy_math/glam][5857] - [Utility methods for Val][6134] - [Register missing bevy_text types][6029] - [Add additional constructors for `UiRect` to specify values for specific fields][5988] - [Add AUTO and UNDEFINED const constructors for `Size`][5761] - [Add Exponential Moving Average into diagnostics][4992] - [Add `send_event` and friends to `WorldCell`][6515] - [Add a method for accessing the width of a `Table`][6249] - [Add iter_entities to World #6228][6242] - [Adding Debug implementations for App, Stage, Schedule, Query, QueryState, etc.][6214] - [Add a method for mapping `Mut` -> `Mut`][6199] - [implemented #[bundle(ignore)]][6123] - [Allow access to non-send resource through `World::resource_scope`][6113] - [Add get_entity to Commands][5854] - [Added the ability to get or set the last change tick of a system.][5838] - [Add a module for common system `chain`/`pipe` adapters][5776] - [SystemParam for the name of the system you are currently in][5731] - [Warning message for missing events][5730] - [Add a change detection bypass and manual control over change ticks][5635] - [Add into_world_mut to EntityMut][5586] - [Add `FromWorld` bound to `T` in `Local`][5481] - [Add `From` for EntityRef (fixes #5459)][5461] - [Implement IntoIterator for ECS wrapper types.][5096] - [add `Res::clone`][4109] - [Add CameraRenderGraph::set][6470] - [Use wgsl saturate][6318] - [Add mutating `toggle` method to `Visibility` component][6268] - [Add globals struct to mesh2d][6222] - [add support for .comp glsl shaders][6084] - [Implement `IntoIterator` for `&Extract

`][6025] - [add Debug, Copy, Clone derives to Circle][6009] - [Add TextureFormat::Rg16Unorm support for Image and derive Resource for SpecializedComputePipelines][5991] - [Add `bevy_render::texture::ImageSettings` to prelude][5566] - [Add `Projection` component to prelude.][5557] - [Expose `Image` conversion functions (fixes #5452)][5527] - [Macro for Loading Internal Binary Assets][6478] - [Add `From` for `AssetPath<'a>`][6337] - [Add Eq & PartialEq to AssetPath][6274] - [add `ReflectAsset` and `ReflectHandle`][5923] - [Add warning when using load_folder on web][5827] - [Expose rodio's Source and Sample traits in bevy_audio][6374] - [Add a way to toggle `AudioSink`][6321] ### Changed - [separate tonemapping and upscaling passes][3425] - [Rework ViewTarget to better support post processing][6415] - [bevy_reflect: Improve serialization format even more][5723] - [bevy_reflect: Binary formats][6140] - [Unique plugins][6411] - [Support arbitrary RenderTarget texture formats][6380] - [Make `Resource` trait opt-in, requiring `#[derive(Resource)]` V2][5577] - [Replace `WorldQueryGats` trait with actual gats][6319] - [Change UI coordinate system to have origin at top left corner][6000] - [Move the cursor's origin back to the bottom-left][6533] - [Add z-index support with a predictable UI stack][5877] - [TaskPool Panic Handling][6443] - [Implement `Bundle` for `Component`. Use `Bundle` tuples for insertion][2975] - [Spawn now takes a Bundle][6054] - [make `WorldQuery` very flat][5205] - [Accept Bundles for insert and remove. Deprecate insert/remove_bundle][6039] - [Exclusive Systems Now Implement `System`. Flexible Exclusive System Params][6083] - [bevy_scene: Serialize entities to map][6416] - [bevy_scene: Stabilize entity order in `DynamicSceneBuilder`][6382] - [bevy_scene: Replace root list with struct][6354] - [bevy_scene: Use map for scene `components`][6345] - [Start running systems while prepare_systems is running][4919] - [Extract Resources into their own dedicated storage][4809] - [get proper texture format after the renderer is initialized, fix #3897][5413] - [Add getters and setters for `InputAxis` and `ButtonSettings`][6088] - [Clean up Fetch code][4800] - [Nested spawns on scope][4466] - [Skip empty archetypes and tables when iterating over queries][4724] - [Increase the `MAX_DIRECTIONAL_LIGHTS` from 1 to 10][6066] - [bevy_pbr: Normalize skinned normals][6543] - [remove mandatory mesh attributes][6127] - [Rename `play` to `start` and add new `play` method that won't overwrite the existing animation if it's already playing][6350] - [Replace the `bool` argument of `Timer` with `TimerMode`][6247] - [improve panic messages for add_system_to_stage and add_system_set_to_stage][5847] - [Use default serde impls for Entity][6194] - [scenes: simplify return type of iter_instance_entities][5994] - [Consistently use `PI` to specify angles in examples.][5825] - [Remove `Transform::apply_non_uniform_scale`][6133] - [Rename `Transform::mul_vec3` to `transform_point` and improve docs][6132] - [make `register` on `TypeRegistry` idempotent][6487] - [do not set cursor grab on window creation if not asked for][6381] - [Make `raw_window_handle` field in `Window` and `ExtractedWindow` an `Option`.][6114] - [Support monitor selection for all window modes.][5878] - [`Gamepad` type is `Copy`; do not require / return references to it in `Gamepads` API][5296] - [Update tracing-chrome to 0.6.0][6398] - [Update to ron 0.8][5864] - [Update clap requirement from 3.2 to 4.0][6303] - [Update glam 0.22, hexasphere 8.0, encase 0.4][6427] - [Update `wgpu` to 0.14.0, `naga` to `0.10.0`, `winit` to 0.27.4, `raw-window-handle` to 0.5.0, `ndk` to 0.7][6218] - [Update to notify 5.0 stable][5865] - [Update rodio requirement from 0.15 to 0.16][6020] - [remove copyless][6100] - [Mark `Task` as `#[must_use]`][6068] - [Swap out num_cpus for std::thread::available_parallelism][4970] - [Cleaning up NodeBundle, and some slight UI module re-organization][6473] - [Make the default background color of `NodeBundle` transparent][6211] - [Rename `UiColor` to `BackgroundColor`][6087] - [changed diagnostics from seconds to milliseconds][5554] - [Remove unnecesary branches/panics from Query accesses][6461] - [`debug_checked_unwrap` should track its caller][6452] - [Speed up `Query::get_many` and add benchmarks][6400] - [Rename system chaining to system piping][6230] - [[Fixes #6059] ``Entity``'s “ID” should be named “index” instead][6107] - [`Query` filter types must be `ReadOnlyWorldQuery`][6008] - [Remove ambiguity sets][5916] - [relax `Sized` bounds around change detection types][5917] - [Remove ExactSizeIterator from QueryCombinationIter][5895] - [Remove Sync bound from Command][5871] - [Make most `Entity` methods `const`][5688] - [Remove `insert_resource_with_id`][5608] - [Avoid making `Fetch`s `Clone`][5593] - [Remove `Sync` bound from `Local`][5483] - [Replace `many_for_each_mut` with `iter_many_mut`.][5402] - [bevy_ecs: Use 32-bit entity ID cursor on platforms without AtomicI64][4452] - [Specialize UI pipeline on "hdr-ness"][6459] - [Allow passing `glam` vector types as vertex attributes][6442] - [Add multi draw indirect draw calls][6392] - [Take DirectionalLight's GlobalTransform into account when calculating shadow map volume (not just direction)][6384] - [Respect mipmap_filter when create ImageDescriptor with linear()/nearest()][6349] - [use bevy default texture format if the surface is not yet available][6233] - [log pipeline cache errors earlier][6115] - [Merge TextureAtlas::from_grid_with_padding into TextureAtlas::from_grid through option arguments][6057] - [Reconfigure surface on present mode change][6049] - [Use 3 bits of PipelineKey to store MSAA sample count][5826] - [Limit FontAtlasSets][5708] - [Move `sprite::Rect` into `bevy_math`][5686] - [Make vertex colors work without textures in bevy_sprite][5685] - [use bevy_default() for texture format in post_processing][5601] - [don't render completely transparent UI nodes][5537] - [make TextLayoutInfo a Component][4460] - [make `Handle::` field id private, and replace with a getter][6176] - [Remove `AssetServer::watch_for_changes()`][5968] - [Rename Handle::as_weak() to cast_weak()][5321] - [Remove `Sync` requirement in `Decodable::Decoder`][5819] ### Fixed - [Optimize rendering slow-down at high entity counts][5509] - [bevy_reflect: Fix `DynamicScene` not respecting component registrations during serialization][6288] - [fixes the types for Vec3 and Quat in scene example to remove WARN from the logs][5751] - [Fix end-of-animation index OOB][6210] - [bevy_reflect: Remove unnecessary `Clone` bounds][5783] - [bevy_reflect: Fix `apply` method for `Option`][5780] - [Fix outdated and badly formatted docs for `WindowDescriptor::transparent`][6329] - [disable window pre creation for ios][5883] - [Remove unnecessary unsafe `Send` and `Sync` impl for `WinitWindows` on wasm.][5863] - [Fix window centering when scale_factor is not 1.0][5582] - [fix order of exit/close window systems][5558] - [bevy_input: Fix process touch event][4352] - [fix: explicitly specify required version of async-task][6509] - [Fix `clippy::iter_with_drain`][6485] - [Use `cbrt()` instead of `powf(1./3.)`][6481] - [Fix `RemoveChildren` command][6192] - [Fix inconsistent children removal behavior][6017] - [tick local executor][6121] - [Fix panic when the primary window is closed][6545] - [UI scaling fix][6479] - [Fix clipping in UI][6351] - [Fixes scroll example after inverting UI Y axis][6290] - [Fixes incorrect glyph positioning for text2d][6273] - [Clean up taffy nodes when UI node entities are removed][5886] - [Fix unsound `EntityMut::remove_children`. Add `EntityMut::world_scope`][6464] - [Fix spawning empty bundles][6425] - [Fix query.to_readonly().get_component_mut() soundness bug][6401] - [#5817: derive_bundle macro is not hygienic][5835] - [drop old value in `insert_resource_by_id` if exists][5587] - [Fix lifetime bound on `From` impl for `NonSendMut` -> `Mut`][5560] - [Fix `mesh.wgsl` error for meshes without normals][6439] - [Fix panic when using globals uniform in wasm builds][6460] - [Resolve most remaining execution-order ambiguities][6341] - [Call `mesh2d_tangent_local_to_world` with the right arguments][6209] - [Fixes Camera not being serializable due to missing registrations in core functionality.][6170] - [fix spot dir nan bug][6167] - [use alpha mask even when unlit][6047] - [Ignore `Timeout` errors on Linux AMD & Intel][5957] - [adjust cluster index for viewport origin][5947] - [update camera projection if viewport changed][5945] - [Ensure 2D phase items are sorted before batching][5942] - [bevy_pbr: Fix incorrect and unnecessary normal-mapping code][5766] - [Add explicit ordering between `update_frusta` and `camera_system`][5757] - [bevy_pbr: Fix tangent and normal normalization][5666] - [Fix shader syntax][5613] - [Correctly use as_hsla_f32 in `Add` and `AddAssign`, fixes #5543][5546] - [Sync up bevy_sprite and bevy_ui shader View struct][5531] - [Fix View by adding missing fields present in ViewUniform][5512] - [Freeing memory held by visible entities vector][3009] - [Correctly parse labels with '#'][5729] [6545]: https://github.com/bevyengine/bevy/pull/6545 [6543]: https://github.com/bevyengine/bevy/pull/6543 [6533]: https://github.com/bevyengine/bevy/pull/6533 [6515]: https://github.com/bevyengine/bevy/pull/6515 [6509]: https://github.com/bevyengine/bevy/pull/6509 [6502]: https://github.com/bevyengine/bevy/pull/6502 [6494]: https://github.com/bevyengine/bevy/pull/6494 [6488]: https://github.com/bevyengine/bevy/pull/6488 [6487]: https://github.com/bevyengine/bevy/pull/6487 [6485]: https://github.com/bevyengine/bevy/pull/6485 [6481]: https://github.com/bevyengine/bevy/pull/6481 [6479]: https://github.com/bevyengine/bevy/pull/6479 [6478]: https://github.com/bevyengine/bevy/pull/6478 [6473]: https://github.com/bevyengine/bevy/pull/6473 [6470]: https://github.com/bevyengine/bevy/pull/6470 [6468]: https://github.com/bevyengine/bevy/pull/6468 [6464]: https://github.com/bevyengine/bevy/pull/6464 [6461]: https://github.com/bevyengine/bevy/pull/6461 [6460]: https://github.com/bevyengine/bevy/pull/6460 [6459]: https://github.com/bevyengine/bevy/pull/6459 [6452]: https://github.com/bevyengine/bevy/pull/6452 [6444]: https://github.com/bevyengine/bevy/pull/6444 [6443]: https://github.com/bevyengine/bevy/pull/6443 [6442]: https://github.com/bevyengine/bevy/pull/6442 [6439]: https://github.com/bevyengine/bevy/pull/6439 [6437]: https://github.com/bevyengine/bevy/pull/6437 [6429]: https://github.com/bevyengine/bevy/pull/6429 [6427]: https://github.com/bevyengine/bevy/pull/6427 [6425]: https://github.com/bevyengine/bevy/pull/6425 [6423]: https://github.com/bevyengine/bevy/pull/6423 [6422]: https://github.com/bevyengine/bevy/pull/6422 [6416]: https://github.com/bevyengine/bevy/pull/6416 [6415]: https://github.com/bevyengine/bevy/pull/6415 [6411]: https://github.com/bevyengine/bevy/pull/6411 [6410]: https://github.com/bevyengine/bevy/pull/6410 [6401]: https://github.com/bevyengine/bevy/pull/6401 [6400]: https://github.com/bevyengine/bevy/pull/6400 [6398]: https://github.com/bevyengine/bevy/pull/6398 [6397]: https://github.com/bevyengine/bevy/pull/6397 [6393]: https://github.com/bevyengine/bevy/pull/6393 [6392]: https://github.com/bevyengine/bevy/pull/6392 [6384]: https://github.com/bevyengine/bevy/pull/6384 [6382]: https://github.com/bevyengine/bevy/pull/6382 [6381]: https://github.com/bevyengine/bevy/pull/6381 [6380]: https://github.com/bevyengine/bevy/pull/6380 [6379]: https://github.com/bevyengine/bevy/pull/6379 [6374]: https://github.com/bevyengine/bevy/pull/6374 [6372]: https://github.com/bevyengine/bevy/pull/6372 [6360]: https://github.com/bevyengine/bevy/pull/6360 [6357]: https://github.com/bevyengine/bevy/pull/6357 [6354]: https://github.com/bevyengine/bevy/pull/6354 [6351]: https://github.com/bevyengine/bevy/pull/6351 [6350]: https://github.com/bevyengine/bevy/pull/6350 [6349]: https://github.com/bevyengine/bevy/pull/6349 [6345]: https://github.com/bevyengine/bevy/pull/6345 [6342]: https://github.com/bevyengine/bevy/pull/6342 [6341]: https://github.com/bevyengine/bevy/pull/6341 [6337]: https://github.com/bevyengine/bevy/pull/6337 [6336]: https://github.com/bevyengine/bevy/pull/6336 [6331]: https://github.com/bevyengine/bevy/pull/6331 [6329]: https://github.com/bevyengine/bevy/pull/6329 [6321]: https://github.com/bevyengine/bevy/pull/6321 [6319]: https://github.com/bevyengine/bevy/pull/6319 [6318]: https://github.com/bevyengine/bevy/pull/6318 [6308]: https://github.com/bevyengine/bevy/pull/6308 [6303]: https://github.com/bevyengine/bevy/pull/6303 [6290]: https://github.com/bevyengine/bevy/pull/6290 [6288]: https://github.com/bevyengine/bevy/pull/6288 [6274]: https://github.com/bevyengine/bevy/pull/6274 [6273]: https://github.com/bevyengine/bevy/pull/6273 [6268]: https://github.com/bevyengine/bevy/pull/6268 [6257]: https://github.com/bevyengine/bevy/pull/6257 [6249]: https://github.com/bevyengine/bevy/pull/6249 [6248]: https://github.com/bevyengine/bevy/pull/6248 [6247]: https://github.com/bevyengine/bevy/pull/6247 [6242]: https://github.com/bevyengine/bevy/pull/6242 [6237]: https://github.com/bevyengine/bevy/pull/6237 [6233]: https://github.com/bevyengine/bevy/pull/6233 [6232]: https://github.com/bevyengine/bevy/pull/6232 [6230]: https://github.com/bevyengine/bevy/pull/6230 [6229]: https://github.com/bevyengine/bevy/pull/6229 [6227]: https://github.com/bevyengine/bevy/pull/6227 [6222]: https://github.com/bevyengine/bevy/pull/6222 [6218]: https://github.com/bevyengine/bevy/pull/6218 [6214]: https://github.com/bevyengine/bevy/pull/6214 [6211]: https://github.com/bevyengine/bevy/pull/6211 [6210]: https://github.com/bevyengine/bevy/pull/6210 [6209]: https://github.com/bevyengine/bevy/pull/6209 [6200]: https://github.com/bevyengine/bevy/pull/6200 [6199]: https://github.com/bevyengine/bevy/pull/6199 [6194]: https://github.com/bevyengine/bevy/pull/6194 [6193]: https://github.com/bevyengine/bevy/pull/6193 [6192]: https://github.com/bevyengine/bevy/pull/6192 [6191]: https://github.com/bevyengine/bevy/pull/6191 [6189]: https://github.com/bevyengine/bevy/pull/6189 [6187]: https://github.com/bevyengine/bevy/pull/6187 [6185]: https://github.com/bevyengine/bevy/pull/6185 [6180]: https://github.com/bevyengine/bevy/pull/6180 [6176]: https://github.com/bevyengine/bevy/pull/6176 [6170]: https://github.com/bevyengine/bevy/pull/6170 [6167]: https://github.com/bevyengine/bevy/pull/6167 [6159]: https://github.com/bevyengine/bevy/pull/6159 [6158]: https://github.com/bevyengine/bevy/pull/6158 [6152]: https://github.com/bevyengine/bevy/pull/6152 [6140]: https://github.com/bevyengine/bevy/pull/6140 [6134]: https://github.com/bevyengine/bevy/pull/6134 [6133]: https://github.com/bevyengine/bevy/pull/6133 [6132]: https://github.com/bevyengine/bevy/pull/6132 [6127]: https://github.com/bevyengine/bevy/pull/6127 [6126]: https://github.com/bevyengine/bevy/pull/6126 [6123]: https://github.com/bevyengine/bevy/pull/6123 [6121]: https://github.com/bevyengine/bevy/pull/6121 [6115]: https://github.com/bevyengine/bevy/pull/6115 [6114]: https://github.com/bevyengine/bevy/pull/6114 [6113]: https://github.com/bevyengine/bevy/pull/6113 [6107]: https://github.com/bevyengine/bevy/pull/6107 [6100]: https://github.com/bevyengine/bevy/pull/6100 [6088]: https://github.com/bevyengine/bevy/pull/6088 [6087]: https://github.com/bevyengine/bevy/pull/6087 [6084]: https://github.com/bevyengine/bevy/pull/6084 [6083]: https://github.com/bevyengine/bevy/pull/6083 [6074]: https://github.com/bevyengine/bevy/pull/6074 [6068]: https://github.com/bevyengine/bevy/pull/6068 [6066]: https://github.com/bevyengine/bevy/pull/6066 [6057]: https://github.com/bevyengine/bevy/pull/6057 [6054]: https://github.com/bevyengine/bevy/pull/6054 [6049]: https://github.com/bevyengine/bevy/pull/6049 [6047]: https://github.com/bevyengine/bevy/pull/6047 [6039]: https://github.com/bevyengine/bevy/pull/6039 [6029]: https://github.com/bevyengine/bevy/pull/6029 [6025]: https://github.com/bevyengine/bevy/pull/6025 [6023]: https://github.com/bevyengine/bevy/pull/6023 [6020]: https://github.com/bevyengine/bevy/pull/6020 [6017]: https://github.com/bevyengine/bevy/pull/6017 [6015]: https://github.com/bevyengine/bevy/pull/6015 [6014]: https://github.com/bevyengine/bevy/pull/6014 [6009]: https://github.com/bevyengine/bevy/pull/6009 [6008]: https://github.com/bevyengine/bevy/pull/6008 [6000]: https://github.com/bevyengine/bevy/pull/6000 [5994]: https://github.com/bevyengine/bevy/pull/5994 [5993]: https://github.com/bevyengine/bevy/pull/5993 [5991]: https://github.com/bevyengine/bevy/pull/5991 [5988]: https://github.com/bevyengine/bevy/pull/5988 [5987]: https://github.com/bevyengine/bevy/pull/5987 [5982]: https://github.com/bevyengine/bevy/pull/5982 [5978]: https://github.com/bevyengine/bevy/pull/5978 [5971]: https://github.com/bevyengine/bevy/pull/5971 [5968]: https://github.com/bevyengine/bevy/pull/5968 [5957]: https://github.com/bevyengine/bevy/pull/5957 [5952]: https://github.com/bevyengine/bevy/pull/5952 [5949]: https://github.com/bevyengine/bevy/pull/5949 [5948]: https://github.com/bevyengine/bevy/pull/5948 [5947]: https://github.com/bevyengine/bevy/pull/5947 [5945]: https://github.com/bevyengine/bevy/pull/5945 [5942]: https://github.com/bevyengine/bevy/pull/5942 [5923]: https://github.com/bevyengine/bevy/pull/5923 [5917]: https://github.com/bevyengine/bevy/pull/5917 [5916]: https://github.com/bevyengine/bevy/pull/5916 [5895]: https://github.com/bevyengine/bevy/pull/5895 [5886]: https://github.com/bevyengine/bevy/pull/5886 [5883]: https://github.com/bevyengine/bevy/pull/5883 [5878]: https://github.com/bevyengine/bevy/pull/5878 [5877]: https://github.com/bevyengine/bevy/pull/5877 [5871]: https://github.com/bevyengine/bevy/pull/5871 [5865]: https://github.com/bevyengine/bevy/pull/5865 [5864]: https://github.com/bevyengine/bevy/pull/5864 [5863]: https://github.com/bevyengine/bevy/pull/5863 [5857]: https://github.com/bevyengine/bevy/pull/5857 [5855]: https://github.com/bevyengine/bevy/pull/5855 [5854]: https://github.com/bevyengine/bevy/pull/5854 [5853]: https://github.com/bevyengine/bevy/pull/5853 [5847]: https://github.com/bevyengine/bevy/pull/5847 [5838]: https://github.com/bevyengine/bevy/pull/5838 [5835]: https://github.com/bevyengine/bevy/pull/5835 [5827]: https://github.com/bevyengine/bevy/pull/5827 [5826]: https://github.com/bevyengine/bevy/pull/5826 [5825]: https://github.com/bevyengine/bevy/pull/5825 [5819]: https://github.com/bevyengine/bevy/pull/5819 [5814]: https://github.com/bevyengine/bevy/pull/5814 [5813]: https://github.com/bevyengine/bevy/pull/5813 [5806]: https://github.com/bevyengine/bevy/pull/5806 [5797]: https://github.com/bevyengine/bevy/pull/5797 [5783]: https://github.com/bevyengine/bevy/pull/5783 [5782]: https://github.com/bevyengine/bevy/pull/5782 [5780]: https://github.com/bevyengine/bevy/pull/5780 [5776]: https://github.com/bevyengine/bevy/pull/5776 [5766]: https://github.com/bevyengine/bevy/pull/5766 [5761]: https://github.com/bevyengine/bevy/pull/5761 [5758]: https://github.com/bevyengine/bevy/pull/5758 [5757]: https://github.com/bevyengine/bevy/pull/5757 [5752]: https://github.com/bevyengine/bevy/pull/5752 [5751]: https://github.com/bevyengine/bevy/pull/5751 [5747]: https://github.com/bevyengine/bevy/pull/5747 [5731]: https://github.com/bevyengine/bevy/pull/5731 [5730]: https://github.com/bevyengine/bevy/pull/5730 [5729]: https://github.com/bevyengine/bevy/pull/5729 [5728]: https://github.com/bevyengine/bevy/pull/5728 [5723]: https://github.com/bevyengine/bevy/pull/5723 [5720]: https://github.com/bevyengine/bevy/pull/5720 [5708]: https://github.com/bevyengine/bevy/pull/5708 [5688]: https://github.com/bevyengine/bevy/pull/5688 [5686]: https://github.com/bevyengine/bevy/pull/5686 [5685]: https://github.com/bevyengine/bevy/pull/5685 [5676]: https://github.com/bevyengine/bevy/pull/5676 [5666]: https://github.com/bevyengine/bevy/pull/5666 [5664]: https://github.com/bevyengine/bevy/pull/5664 [5658]: https://github.com/bevyengine/bevy/pull/5658 [5635]: https://github.com/bevyengine/bevy/pull/5635 [5630]: https://github.com/bevyengine/bevy/pull/5630 [5626]: https://github.com/bevyengine/bevy/pull/5626 [5613]: https://github.com/bevyengine/bevy/pull/5613 [5608]: https://github.com/bevyengine/bevy/pull/5608 [5601]: https://github.com/bevyengine/bevy/pull/5601 [5593]: https://github.com/bevyengine/bevy/pull/5593 [5587]: https://github.com/bevyengine/bevy/pull/5587 [5586]: https://github.com/bevyengine/bevy/pull/5586 [5582]: https://github.com/bevyengine/bevy/pull/5582 [5577]: https://github.com/bevyengine/bevy/pull/5577 [5566]: https://github.com/bevyengine/bevy/pull/5566 [5560]: https://github.com/bevyengine/bevy/pull/5560 [5558]: https://github.com/bevyengine/bevy/pull/5558 [5557]: https://github.com/bevyengine/bevy/pull/5557 [5556]: https://github.com/bevyengine/bevy/pull/5556 [5554]: https://github.com/bevyengine/bevy/pull/5554 [5546]: https://github.com/bevyengine/bevy/pull/5546 [5537]: https://github.com/bevyengine/bevy/pull/5537 [5531]: https://github.com/bevyengine/bevy/pull/5531 [5527]: https://github.com/bevyengine/bevy/pull/5527 [5512]: https://github.com/bevyengine/bevy/pull/5512 [5509]: https://github.com/bevyengine/bevy/pull/5509 [5495]: https://github.com/bevyengine/bevy/pull/5495 [5483]: https://github.com/bevyengine/bevy/pull/5483 [5481]: https://github.com/bevyengine/bevy/pull/5481 [5473]: https://github.com/bevyengine/bevy/pull/5473 [5461]: https://github.com/bevyengine/bevy/pull/5461 [5413]: https://github.com/bevyengine/bevy/pull/5413 [5409]: https://github.com/bevyengine/bevy/pull/5409 [5402]: https://github.com/bevyengine/bevy/pull/5402 [5340]: https://github.com/bevyengine/bevy/pull/5340 [5325]: https://github.com/bevyengine/bevy/pull/5325 [5321]: https://github.com/bevyengine/bevy/pull/5321 [5296]: https://github.com/bevyengine/bevy/pull/5296 [5264]: https://github.com/bevyengine/bevy/pull/5264 [5250]: https://github.com/bevyengine/bevy/pull/5250 [5205]: https://github.com/bevyengine/bevy/pull/5205 [5096]: https://github.com/bevyengine/bevy/pull/5096 [4992]: https://github.com/bevyengine/bevy/pull/4992 [4970]: https://github.com/bevyengine/bevy/pull/4970 [4919]: https://github.com/bevyengine/bevy/pull/4919 [4809]: https://github.com/bevyengine/bevy/pull/4809 [4800]: https://github.com/bevyengine/bevy/pull/4800 [4761]: https://github.com/bevyengine/bevy/pull/4761 [4724]: https://github.com/bevyengine/bevy/pull/4724 [4466]: https://github.com/bevyengine/bevy/pull/4466 [4460]: https://github.com/bevyengine/bevy/pull/4460 [4452]: https://github.com/bevyengine/bevy/pull/4452 [4352]: https://github.com/bevyengine/bevy/pull/4352 [4109]: https://github.com/bevyengine/bevy/pull/4109 [3425]: https://github.com/bevyengine/bevy/pull/3425 [3009]: https://github.com/bevyengine/bevy/pull/3009 [2975]: https://github.com/bevyengine/bevy/pull/2975 ## Version 0.8.0 (2022-07-30) ### Added - [Callable PBR functions][4939] - [Spotlights][4715] - [Camera Driven Rendering][4745] - [Camera Driven Viewports][4898] - [Visibilty Inheritance, universal `ComputedVisibility`, and `RenderLayers` support][5310] - [Better Materials: `AsBindGroup` trait and derive, simpler `Material` trait][5053] - [Derive `AsBindGroup` Improvements: Better errors, more options, update examples][5364] - [Support `AsBindGroup` for 2d materials as well][5312] - [Parallel Frustum Culling][4489] - [Hierarchy commandization][4197] - [Generate vertex tangents using mikktspace][3872] - [Add a `SpatialBundle` with `Visibility` and `Transform` components][5344] - [Add `RegularPolygon` and `Circle` meshes][3730] - [Add a `SceneBundle` to spawn a scene][2424] - [Allow higher order systems][4833] - [Add global `init()` and `get()` accessors for all newtyped `TaskPools`][2250] - [Add reusable shader functions for transforming position/normal/tangent][4901] - [Add support for vertex colors][4528] - [Add support for removing attributes from meshes][5254] - [Add option to center a window][4999] - [Add `depth_load_op` configuration field to `Camera3d`][4904] - [Refactor `Camera` methods and add viewport rect][4948] - [Add `TextureFormat::R16Unorm` support for `Image`][5249] - [Add a `VisibilityBundle` with `Visibility` and `ComputedVisibility` components][5335] - [Add ExtractResourcePlugin][3745] - [Add depth_bias to SpecializedMaterial][4101] - [Added `offset` parameter to `TextureAtlas::from_grid_with_padding`][4836] - [Add the possibility to create custom 2d orthographic cameras][4048] - [bevy_render: Add `attributes` and `attributes_mut` methods to `Mesh`][3927] - [Add helper methods for rotating `Transform`s][5151] - [Enable wgpu profiling spans when using bevy's trace feature][5182] - [bevy_pbr: rework `extract_meshes`][4240] - [Add `inverse_projection` and `inverse_view_proj` fields to shader view uniform][5119] - [Add `ViewRangefinder3d` to reduce boilerplate when enqueuing standard 3D `PhaseItems`][5014] - [Create `bevy_ptr` standalone crate][4653] - [Add `IntoIterator` impls for `&Query` and `&mut Query`][4692] - [Add untyped APIs for `Components` and `Resources`][4447] - [Add infallible resource getters for `WorldCell`][4104] - [Add `get_change_ticks` method to `EntityRef` and `EntityMut`][2539] - [Add comparison methods to `FilteredAccessSet`][4211] - [Add `Commands::new_from_entities`][4423] - [Add `QueryState::get_single_unchecked_manual` and its family members][4841] - [Add `ParallelCommands` system parameter][4749] - [Add methods for querying lists of entities][4879] - [Implement `FusedIterator` for eligible `Iterator` types][4942] - [Add `component_id()` function to `World` and `Components`][5066] - [Add ability to inspect entity's components][5136] - [Add a more helpful error to help debug panicking command on despawned entity][5198] - [Add `ExactSizeIterator` implementation for `QueryCombinatonIter`][5148] - [Added the `ignore_fields` attribute to the derive macros for `*Label` types][5366] - [Exact sized event iterators][3863] - [Add a `clear()` method to the `EventReader` that consumes the iterator][4693] - [Add helpers to send `Events` from `World`][5355] - [Add file metadata to `AssetIo`][2123] - [Add missing audio/ogg file extensions: .oga, .spx][4703] - [Add `reload_asset` method to `AssetServer`][5106] - [Allow specifying chrome tracing file path using an environment variable][4618] - [Create a simple tool to compare traces between executions][4628] - [Add a tracing span for run criteria][4709] - [Add tracing spans for `Query::par_for_each` and its variants.][4711] - [Add a `release_all` method on `Input`][5011] - [Add a `reset_all` method on `Input`][5015] - [Add a helper tool to build examples for wasm][4776] - [bevy_reflect: add a `ReflectFromPtr` type to create `&dyn Reflect` from a `*const ()`][4475] - [Add a `ReflectDefault` type and add `#[reflect(Default)]` to all component types that implement Default and are user facing][3733] - [Add a macro to implement `Reflect` for struct types and migrate glam types to use this for reflection][4540] - [bevy_reflect: reflect arrays][4701] - [bevy_reflect: reflect char][4790] - [bevy_reflect: add `GetTypeRegistration` impl for reflected tuples][4226] - [Add reflection for `Resources`][5175] - [bevy_reflect: add `as_reflect` and `as_reflect_mut` methods on `Reflect`][4350] - [Add an `apply_or_insert` method to `ReflectResource` and `ReflectComponent`][5201] - [bevy_reflect: `IntoIter` for `DynamicList` and `DynamicMap`][4108] - [bevy_reflect: Add `PartialEq` to reflected `f32`s and `f64`s][4217] - [Create mutable versions of `TypeRegistry` methods][4484] - [bevy_reflect: add a `get_boxed` method to `reflect_trait`][4120] - [bevy_reflect: add `#[reflect(default)]` attribute for `FromReflect`][4140] - [bevy_reflect: add statically available type info for reflected types][4042] - [Add an `assert_is_exclusive_system` function][5275] - [bevy_ui: add a multi-windows check for `Interaction` (we dont yet support multiple windows)][5225] ### Changed - [Depend on Taffy (a Dioxus and Bevy-maintained fork of Stretch)][4716] - [Use lifetimed, type erased pointers in bevy_ecs][3001] - [Migrate to `encase` from `crevice`][4339] - [Update `wgpu` to 0.13][5168] - [Pointerfication followup: Type safety and cleanup][4621] - [bevy_ptr works in no_std environments][4760] - [Fail to compile on 16-bit platforms][4736] - [Improve ergonomics and reduce boilerplate around creating text elements][5343] - [Don't cull `Ui` nodes that have a rotation][5389] - [Rename `ElementState` to `ButtonState`][4314] - [Move `Size` to `bevy_ui`][4285] - [Move `Rect` to `bevy_ui` and rename it to `UiRect`][4276] - [Modify `FontAtlas` so that it can handle fonts of any size][3592] - [Rename `CameraUi`][5234] - [Remove `task_pool` parameter from `par_for_each(_mut)`][4705] - [Copy `TaskPool` resoures to sub-Apps][4792] - [Allow closing windows at runtime][3575] - [Move the configuration of the `WindowPlugin` to a `Resource`][5227] - [Optionally resize `Window` canvas element to fit parent element][4726] - [Change window resolution types from tuple to `Vec2`][5276] - [Update time by sending frame `Instant` through a channel][4744] - [Split time functionality into `bevy_time`][4187] - [Split mesh shader files to make the shaders more reusable][4867] - [Set `naga` capabilities corresponding to `wgpu` features][4824] - [Separate out PBR lighting, shadows, clustered forward, and utils from pbr.wgsl][4938] - [Separate PBR and tonemapping into 2 functions][5078] - [Make `RenderStage::Extract` run on the render world][4402] - [Change default `FilterMode` of `Image` to `Linear`][4465] - [bevy_render: Fix KTX2 UASTC format mapping][4569] - [Allow rendering meshes without UV coordinate data][5222] - [Validate vertex attribute format on insertion][5259] - [Use `Affine3A` for `GlobalTransform`to allow any affine transformation][4379] - [Recalculate entity `AABB`s when meshes change][4944] - [Change `check_visibility` to use thread-local queues instead of a channel][4663] - [Allow unbatched render phases to use unstable sorts][5049] - [Extract resources into their target location][5271] - [Enable loading textures of unlimited size][5305] - [Do not create nor execute render passes which have no `PhaseItems` to draw][4643] - [Filter material handles on extraction][4178] - [Apply vertex colors to `ColorMaterial` and `Mesh2D`][4812] - [Make `MaterialPipelineKey` fields public][4508] - [Simplified API to get NDC from camera and world position][4041] - [Set `alpha_mode` based on alpha value][4658] - [Make `Wireframe` respect `VisibleEntities`][4660] - [Use const `Vec2` in lights cluster and bounding box when possible][4602] - [Make accessors for mesh vertices and indices public][3906] - [Use `BufferUsages::UNIFORM` for `SkinnedMeshUniform`][4816] - [Place origin of `OrthographicProjection` at integer pixel when using `ScalingMode::WindowSize`][4085] - [Make `ScalingMode` more flexible][3253] - [Move texture sample out of branch in `prepare_normal`][5129] - [Make the fields of the `Material2dKey` public][5212] - [Use collect to build mesh attributes][5255] - [Replace `ReadOnlyFetch` with `ReadOnlyWorldQuery`][4626] - [Replace `ComponentSparseSet`'s internals with a `Column`][4909] - [Remove QF generics from all `Query/State` methods and types][5170] - [Remove `.system()`][4499] - [Make change lifespan deterministic and update docs][3956] - [Make derived `SystemParam` readonly if possible][4650] - [Merge `matches_archetype` and `matches_table`][4807] - [Allows conversion of mutable queries to immutable queries][5376] - [Skip `drop` when `needs_drop` is `false`][4773] - [Use u32 over usize for `ComponentSparseSet` indicies][4723] - [Remove redundant `ComponentId` in `Column`][4855] - [Directly copy moved `Table` components to the target location][5056] - [`SystemSet::before` and `SystemSet::after` now take `AsSystemLabel`][4503] - [Converted exclusive systems to parallel systems wherever possible][2774] - [Improve `size_hint` on `QueryIter`][4244] - [Improve debugging tools for change detection][4160] - [Make `RunOnce` a non-manual `System` impl][3922] - [Apply buffers in `ParamSet`][4677] - [Don't allocate for `ComponentDescriptors` of non-dynamic component types][4725] - [Mark mutable APIs under ECS storage as `pub(crate)`][5065] - [Update `ExactSizeIterator` impl to support archetypal filters (`With`, `Without`)][5124] - [Removed world cell from places where split multable access is not needed][5167] - [Add Events to `bevy_ecs` prelude][5159] - [Improve `EntityMap` API][5231] - [Implement `From` for `ShouldRun`.][5306] - [Allow iter combinations on custom world queries][5286] - [Simplify design for `*Label`s][4957] - [Tidy up the code of events][4713] - [Rename `send_default_event` to `send_event_default` on world][5383] - [enable optional dependencies to stay optional][5023] - [Remove the dependency cycles][5171] - [Enforce type safe usage of Handle::get][4794] - [Export anyhow::error for custom asset loaders][5359] - [Update `shader_material_glsl` example to include texture sampling][5215] - [Remove unused code in game of life shader][5349] - [Make the contributor birbs bounce to the window height][5274] - [Improve Gamepad D-Pad Button Detection][5220] - [bevy_reflect: support map insertio][5173] - [bevy_reflect: improve debug formatting for reflected types][4218] - [bevy_reflect_derive: big refactor tidying up the code][4712] - [bevy_reflect: small refactor and default `Reflect` methods][4739] - [Make `Reflect` safe to implement][5010] - [`bevy_reflect`: put `serialize` into external `ReflectSerialize` type][4782] - [Remove `Serialize` impl for `dyn Array` and friends][4780] - [Re-enable `#[derive(TypeUuid)]` for generics][4118] - [Move primitive type registration into `bevy_reflect`][4844] - [Implement reflection for more `glam` types][5194] - [Make `reflect_partial_eq` return more accurate results][5210] - [Make public macros more robust with `$crate`][4655] - [Ensure that the parent is always the expected entity][4717] - [Support returning data out of `with_children`][4708] - [Remove `EntityMut::get_unchecked`][4547] - [Diagnostics: meaningful error when graph node has wrong number of inputs][4924] - [Remove redundant `Size` import][5339] - [Export and register `Mat2`.][5324] - [Implement `Debug` for `Gamepads`][5291] - [Update codebase to use `IntoIterator` where possible.][5269] - [Rename `headless_defaults` example to `no_renderer` for clarity][5263] - [Remove dead `SystemLabelMarker` struct][5190] - [bevy_reflect: remove `glam` from a test which is active without the glam feature][5195] - [Disable vsync for stress tests][5187] - [Move `get_short_name` utility method from `bevy_reflect` into `bevy_utils`][5174] - [Derive `Default` for enums where possible][5158] - [Implement `Eq` and `PartialEq` for `MouseScrollUnit`][5048] - [Some cleanup for `bevy_ptr`][4668] - [Move float_ord from `bevy_core` to `bevy_utils`][4189] - [Remove unused `CountdownEvent`][4290] - [Some minor cleanups of asset_server][4604] - [Use `elapsed()` on `Instant`][4599] - [Make paused `Timers` update `just_finished` on tick][4445] - [bevy_utils: remove hardcoded log level limit][4580] - [Make `Time::update_with_instant` public for use in tests][4469] - [Do not impl Component for Task][4113] - [Remove nonexistent `WgpuResourceDiagnosticsPlugin`][4541] - [Update ndk-glue requirement from 0.5 to 0.6][3624] - [Update tracing-tracy requirement from 0.8.0 to 0.9.0][4786] - [update image to 0.24][4121] - [update xshell to 0.2][4789] - [Update gilrs to v0.9][4848] - [bevy_log: upgrade to tracing-tracy 0.10.0][4991] - [update hashbrown to 0.12][5035] - [Update `clap` to 3.2 in tools using `value_parser`][5031] - [Updated `glam` to `0.21`.][5142] - [Update Notify Dependency][5396] ### Fixed - [bevy_ui: keep `Color` as 4 `f32`s][4494] - [Fix issues with bevy on android other than the rendering][5130] - [Update layout/style when scale factor changes too][4689] - [Fix `Overflow::Hidden` so it works correctly with `scale_factor_override`][3854] - [Fix `bevy_ui` touch input][4099] - [Fix physical viewport calculation][5055] - [Minimally fix the known unsoundness in `bevy_mikktspace`][5299] - [Make `Transform` propagation correct in the presence of updated children][4608] - [`StorageBuffer` uses wrong type to calculate the buffer size.][4557] - [Fix confusing near and far fields in Camera][4457] - [Allow minimising window if using a 2d camera][4527] - [WGSL: use correct syntax for matrix access][5039] - [Gltf: do not import `IoTaskPool` in wasm][5038] - [Fix skinned mesh normal handling in mesh shader][5095] - [Don't panic when `StandardMaterial` `normal_map` hasn't loaded yet][5307] - [Fix incorrect rotation in `Transform::rotate_around`][5300] - [Fix `extract_wireframes`][5301] - [Fix type parameter name conflicts of `#[derive(Bundle)]`][4636] - [Remove unnecessary `unsafe impl` of `Send+Sync` for `ParallelSystemContainer`][5137] - [Fix line material shader][5348] - [Fix `mouse_clicked` check for touch][2029] - [Fix unsoundness with `Or`/`AnyOf`/`Option` component access][4659] - [Improve soundness of `CommandQueue`][4863] - [Fix some memory leaks detected by miri][4959] - [Fix Android example icon][4076] - [Fix broken `WorldCell` test][5009] - [Bugfix `State::set` transition condition infinite loop][4890] - [Fix crash when using `Duration::MAX`][4900] - [Fix release builds: Move asserts under `#[cfg(debug_assertions)]`][4871] - [Fix frame count being a float][4493] - [Fix "unused" warnings when compiling with `render` feature but without `animation`][4714] - [Fix re-adding a plugin to a `PluginGroup`][2039] - [Fix torus normals][4520] - [Add `NO_STORAGE_BUFFERS_SUPPORT` shaderdef when needed][4949] [2029]: https://github.com/bevyengine/bevy/pull/2029 [2039]: https://github.com/bevyengine/bevy/pull/2039 [2123]: https://github.com/bevyengine/bevy/pull/2123 [2250]: https://github.com/bevyengine/bevy/pull/2250 [2424]: https://github.com/bevyengine/bevy/pull/2424 [2539]: https://github.com/bevyengine/bevy/pull/2539 [2774]: https://github.com/bevyengine/bevy/pull/2774 [3001]: https://github.com/bevyengine/bevy/pull/3001 [3253]: https://github.com/bevyengine/bevy/pull/3253 [3575]: https://github.com/bevyengine/bevy/pull/3575 [3592]: https://github.com/bevyengine/bevy/pull/3592 [3624]: https://github.com/bevyengine/bevy/pull/3624 [3730]: https://github.com/bevyengine/bevy/pull/3730 [3733]: https://github.com/bevyengine/bevy/pull/3733 [3745]: https://github.com/bevyengine/bevy/pull/3745 [3854]: https://github.com/bevyengine/bevy/pull/3854 [3863]: https://github.com/bevyengine/bevy/pull/3863 [3872]: https://github.com/bevyengine/bevy/pull/3872 [3906]: https://github.com/bevyengine/bevy/pull/3906 [3922]: https://github.com/bevyengine/bevy/pull/3922 [3927]: https://github.com/bevyengine/bevy/pull/3927 [3956]: https://github.com/bevyengine/bevy/pull/3956 [4041]: https://github.com/bevyengine/bevy/pull/4041 [4042]: https://github.com/bevyengine/bevy/pull/4042 [4048]: https://github.com/bevyengine/bevy/pull/4048 [4076]: https://github.com/bevyengine/bevy/pull/4076 [4085]: https://github.com/bevyengine/bevy/pull/4085 [4099]: https://github.com/bevyengine/bevy/pull/4099 [4101]: https://github.com/bevyengine/bevy/pull/4101 [4104]: https://github.com/bevyengine/bevy/pull/4104 [4108]: https://github.com/bevyengine/bevy/pull/4108 [4113]: https://github.com/bevyengine/bevy/pull/4113 [4118]: https://github.com/bevyengine/bevy/pull/4118 [4120]: https://github.com/bevyengine/bevy/pull/4120 [4121]: https://github.com/bevyengine/bevy/pull/4121 [4140]: https://github.com/bevyengine/bevy/pull/4140 [4160]: https://github.com/bevyengine/bevy/pull/4160 [4178]: https://github.com/bevyengine/bevy/pull/4178 [4187]: https://github.com/bevyengine/bevy/pull/4187 [4189]: https://github.com/bevyengine/bevy/pull/4189 [4197]: https://github.com/bevyengine/bevy/pull/4197 [4211]: https://github.com/bevyengine/bevy/pull/4211 [4217]: https://github.com/bevyengine/bevy/pull/4217 [4218]: https://github.com/bevyengine/bevy/pull/4218 [4226]: https://github.com/bevyengine/bevy/pull/4226 [4240]: https://github.com/bevyengine/bevy/pull/4240 [4244]: https://github.com/bevyengine/bevy/pull/4244 [4276]: https://github.com/bevyengine/bevy/pull/4276 [4285]: https://github.com/bevyengine/bevy/pull/4285 [4290]: https://github.com/bevyengine/bevy/pull/4290 [4314]: https://github.com/bevyengine/bevy/pull/4314 [4339]: https://github.com/bevyengine/bevy/pull/4339 [4350]: https://github.com/bevyengine/bevy/pull/4350 [4379]: https://github.com/bevyengine/bevy/pull/4379 [4402]: https://github.com/bevyengine/bevy/pull/4402 [4423]: https://github.com/bevyengine/bevy/pull/4423 [4445]: https://github.com/bevyengine/bevy/pull/4445 [4447]: https://github.com/bevyengine/bevy/pull/4447 [4457]: https://github.com/bevyengine/bevy/pull/4457 [4465]: https://github.com/bevyengine/bevy/pull/4465 [4469]: https://github.com/bevyengine/bevy/pull/4469 [4475]: https://github.com/bevyengine/bevy/pull/4475 [4484]: https://github.com/bevyengine/bevy/pull/4484 [4489]: https://github.com/bevyengine/bevy/pull/4489 [4493]: https://github.com/bevyengine/bevy/pull/4493 [4494]: https://github.com/bevyengine/bevy/pull/4494 [4499]: https://github.com/bevyengine/bevy/pull/4499 [4503]: https://github.com/bevyengine/bevy/pull/4503 [4508]: https://github.com/bevyengine/bevy/pull/4508 [4520]: https://github.com/bevyengine/bevy/pull/4520 [4527]: https://github.com/bevyengine/bevy/pull/4527 [4528]: https://github.com/bevyengine/bevy/pull/4528 [4540]: https://github.com/bevyengine/bevy/pull/4540 [4541]: https://github.com/bevyengine/bevy/pull/4541 [4547]: https://github.com/bevyengine/bevy/pull/4547 [4557]: https://github.com/bevyengine/bevy/pull/4557 [4569]: https://github.com/bevyengine/bevy/pull/4569 [4580]: https://github.com/bevyengine/bevy/pull/4580 [4599]: https://github.com/bevyengine/bevy/pull/4599 [4602]: https://github.com/bevyengine/bevy/pull/4602 [4604]: https://github.com/bevyengine/bevy/pull/4604 [4608]: https://github.com/bevyengine/bevy/pull/4608 [4618]: https://github.com/bevyengine/bevy/pull/4618 [4621]: https://github.com/bevyengine/bevy/pull/4621 [4626]: https://github.com/bevyengine/bevy/pull/4626 [4628]: https://github.com/bevyengine/bevy/pull/4628 [4636]: https://github.com/bevyengine/bevy/pull/4636 [4643]: https://github.com/bevyengine/bevy/pull/4643 [4650]: https://github.com/bevyengine/bevy/pull/4650 [4653]: https://github.com/bevyengine/bevy/pull/4653 [4655]: https://github.com/bevyengine/bevy/pull/4655 [4658]: https://github.com/bevyengine/bevy/pull/4658 [4659]: https://github.com/bevyengine/bevy/pull/4659 [4660]: https://github.com/bevyengine/bevy/pull/4660 [4663]: https://github.com/bevyengine/bevy/pull/4663 [4668]: https://github.com/bevyengine/bevy/pull/4668 [4677]: https://github.com/bevyengine/bevy/pull/4677 [4689]: https://github.com/bevyengine/bevy/pull/4689 [4692]: https://github.com/bevyengine/bevy/pull/4692 [4693]: https://github.com/bevyengine/bevy/pull/4693 [4701]: https://github.com/bevyengine/bevy/pull/4701 [4703]: https://github.com/bevyengine/bevy/pull/4703 [4705]: https://github.com/bevyengine/bevy/pull/4705 [4708]: https://github.com/bevyengine/bevy/pull/4708 [4709]: https://github.com/bevyengine/bevy/pull/4709 [4711]: https://github.com/bevyengine/bevy/pull/4711 [4712]: https://github.com/bevyengine/bevy/pull/4712 [4713]: https://github.com/bevyengine/bevy/pull/4713 [4714]: https://github.com/bevyengine/bevy/pull/4714 [4715]: https://github.com/bevyengine/bevy/pull/4715 [4716]: https://github.com/bevyengine/bevy/pull/4716 [4717]: https://github.com/bevyengine/bevy/pull/4717 [4723]: https://github.com/bevyengine/bevy/pull/4723 [4725]: https://github.com/bevyengine/bevy/pull/4725 [4726]: https://github.com/bevyengine/bevy/pull/4726 [4736]: https://github.com/bevyengine/bevy/pull/4736 [4739]: https://github.com/bevyengine/bevy/pull/4739 [4744]: https://github.com/bevyengine/bevy/pull/4744 [4745]: https://github.com/bevyengine/bevy/pull/4745 [4749]: https://github.com/bevyengine/bevy/pull/4749 [4760]: https://github.com/bevyengine/bevy/pull/4760 [4773]: https://github.com/bevyengine/bevy/pull/4773 [4776]: https://github.com/bevyengine/bevy/pull/4776 [4780]: https://github.com/bevyengine/bevy/pull/4780 [4782]: https://github.com/bevyengine/bevy/pull/4782 [4786]: https://github.com/bevyengine/bevy/pull/4786 [4789]: https://github.com/bevyengine/bevy/pull/4789 [4790]: https://github.com/bevyengine/bevy/pull/4790 [4792]: https://github.com/bevyengine/bevy/pull/4792 [4794]: https://github.com/bevyengine/bevy/pull/4794 [4807]: https://github.com/bevyengine/bevy/pull/4807 [4812]: https://github.com/bevyengine/bevy/pull/4812 [4816]: https://github.com/bevyengine/bevy/pull/4816 [4824]: https://github.com/bevyengine/bevy/pull/4824 [4833]: https://github.com/bevyengine/bevy/pull/4833 [4836]: https://github.com/bevyengine/bevy/pull/4836 [4841]: https://github.com/bevyengine/bevy/pull/4841 [4844]: https://github.com/bevyengine/bevy/pull/4844 [4848]: https://github.com/bevyengine/bevy/pull/4848 [4855]: https://github.com/bevyengine/bevy/pull/4855 [4863]: https://github.com/bevyengine/bevy/pull/4863 [4867]: https://github.com/bevyengine/bevy/pull/4867 [4871]: https://github.com/bevyengine/bevy/pull/4871 [4879]: https://github.com/bevyengine/bevy/pull/4879 [4890]: https://github.com/bevyengine/bevy/pull/4890 [4898]: https://github.com/bevyengine/bevy/pull/4898 [4900]: https://github.com/bevyengine/bevy/pull/4900 [4901]: https://github.com/bevyengine/bevy/pull/4901 [4904]: https://github.com/bevyengine/bevy/pull/4904 [4909]: https://github.com/bevyengine/bevy/pull/4909 [4924]: https://github.com/bevyengine/bevy/pull/4924 [4938]: https://github.com/bevyengine/bevy/pull/4938 [4939]: https://github.com/bevyengine/bevy/pull/4939 [4942]: https://github.com/bevyengine/bevy/pull/4942 [4944]: https://github.com/bevyengine/bevy/pull/4944 [4948]: https://github.com/bevyengine/bevy/pull/4948 [4949]: https://github.com/bevyengine/bevy/pull/4949 [4957]: https://github.com/bevyengine/bevy/pull/4957 [4959]: https://github.com/bevyengine/bevy/pull/4959 [4991]: https://github.com/bevyengine/bevy/pull/4991 [4999]: https://github.com/bevyengine/bevy/pull/4999 [5009]: https://github.com/bevyengine/bevy/pull/5009 [5010]: https://github.com/bevyengine/bevy/pull/5010 [5011]: https://github.com/bevyengine/bevy/pull/5011 [5014]: https://github.com/bevyengine/bevy/pull/5014 [5015]: https://github.com/bevyengine/bevy/pull/5015 [5023]: https://github.com/bevyengine/bevy/pull/5023 [5031]: https://github.com/bevyengine/bevy/pull/5031 [5035]: https://github.com/bevyengine/bevy/pull/5035 [5038]: https://github.com/bevyengine/bevy/pull/5038 [5039]: https://github.com/bevyengine/bevy/pull/5039 [5048]: https://github.com/bevyengine/bevy/pull/5048 [5049]: https://github.com/bevyengine/bevy/pull/5049 [5053]: https://github.com/bevyengine/bevy/pull/5053 [5055]: https://github.com/bevyengine/bevy/pull/5055 [5056]: https://github.com/bevyengine/bevy/pull/5056 [5065]: https://github.com/bevyengine/bevy/pull/5065 [5066]: https://github.com/bevyengine/bevy/pull/5066 [5078]: https://github.com/bevyengine/bevy/pull/5078 [5095]: https://github.com/bevyengine/bevy/pull/5095 [5106]: https://github.com/bevyengine/bevy/pull/5106 [5119]: https://github.com/bevyengine/bevy/pull/5119 [5124]: https://github.com/bevyengine/bevy/pull/5124 [5129]: https://github.com/bevyengine/bevy/pull/5129 [5130]: https://github.com/bevyengine/bevy/pull/5130 [5136]: https://github.com/bevyengine/bevy/pull/5136 [5137]: https://github.com/bevyengine/bevy/pull/5137 [5142]: https://github.com/bevyengine/bevy/pull/5142 [5148]: https://github.com/bevyengine/bevy/pull/5148 [5151]: https://github.com/bevyengine/bevy/pull/5151 [5158]: https://github.com/bevyengine/bevy/pull/5158 [5159]: https://github.com/bevyengine/bevy/pull/5159 [5167]: https://github.com/bevyengine/bevy/pull/5167 [5168]: https://github.com/bevyengine/bevy/pull/5168 [5170]: https://github.com/bevyengine/bevy/pull/5170 [5171]: https://github.com/bevyengine/bevy/pull/5171 [5173]: https://github.com/bevyengine/bevy/pull/5173 [5174]: https://github.com/bevyengine/bevy/pull/5174 [5175]: https://github.com/bevyengine/bevy/pull/5175 [5182]: https://github.com/bevyengine/bevy/pull/5182 [5187]: https://github.com/bevyengine/bevy/pull/5187 [5190]: https://github.com/bevyengine/bevy/pull/5190 [5194]: https://github.com/bevyengine/bevy/pull/5194 [5195]: https://github.com/bevyengine/bevy/pull/5195 [5198]: https://github.com/bevyengine/bevy/pull/5198 [5201]: https://github.com/bevyengine/bevy/pull/5201 [5210]: https://github.com/bevyengine/bevy/pull/5210 [5212]: https://github.com/bevyengine/bevy/pull/5212 [5215]: https://github.com/bevyengine/bevy/pull/5215 [5220]: https://github.com/bevyengine/bevy/pull/5220 [5222]: https://github.com/bevyengine/bevy/pull/5222 [5225]: https://github.com/bevyengine/bevy/pull/5225 [5227]: https://github.com/bevyengine/bevy/pull/5227 [5231]: https://github.com/bevyengine/bevy/pull/5231 [5234]: https://github.com/bevyengine/bevy/pull/5234 [5249]: https://github.com/bevyengine/bevy/pull/5249 [5254]: https://github.com/bevyengine/bevy/pull/5254 [5255]: https://github.com/bevyengine/bevy/pull/5255 [5259]: https://github.com/bevyengine/bevy/pull/5259 [5263]: https://github.com/bevyengine/bevy/pull/5263 [5269]: https://github.com/bevyengine/bevy/pull/5269 [5271]: https://github.com/bevyengine/bevy/pull/5271 [5274]: https://github.com/bevyengine/bevy/pull/5274 [5275]: https://github.com/bevyengine/bevy/pull/5275 [5276]: https://github.com/bevyengine/bevy/pull/5276 [5286]: https://github.com/bevyengine/bevy/pull/5286 [5291]: https://github.com/bevyengine/bevy/pull/5291 [5299]: https://github.com/bevyengine/bevy/pull/5299 [5300]: https://github.com/bevyengine/bevy/pull/5300 [5301]: https://github.com/bevyengine/bevy/pull/5301 [5305]: https://github.com/bevyengine/bevy/pull/5305 [5306]: https://github.com/bevyengine/bevy/pull/5306 [5307]: https://github.com/bevyengine/bevy/pull/5307 [5310]: https://github.com/bevyengine/bevy/pull/5310 [5312]: https://github.com/bevyengine/bevy/pull/5312 [5324]: https://github.com/bevyengine/bevy/pull/5324 [5335]: https://github.com/bevyengine/bevy/pull/5335 [5339]: https://github.com/bevyengine/bevy/pull/5339 [5343]: https://github.com/bevyengine/bevy/pull/5343 [5344]: https://github.com/bevyengine/bevy/pull/5344 [5348]: https://github.com/bevyengine/bevy/pull/5348 [5349]: https://github.com/bevyengine/bevy/pull/5349 [5355]: https://github.com/bevyengine/bevy/pull/5355 [5359]: https://github.com/bevyengine/bevy/pull/5359 [5364]: https://github.com/bevyengine/bevy/pull/5364 [5366]: https://github.com/bevyengine/bevy/pull/5366 [5376]: https://github.com/bevyengine/bevy/pull/5376 [5383]: https://github.com/bevyengine/bevy/pull/5383 [5389]: https://github.com/bevyengine/bevy/pull/5389 [5396]: https://github.com/bevyengine/bevy/pull/5396 ## Version 0.7.0 (2022-04-15) ### Added - [Mesh Skinning][4238] - [Animation Player][4375] - [Gltf animations][3751] - [Mesh vertex buffer layouts][3959] - [Render to a texture][3412] - [KTX2/DDS/.basis compressed texture support][3884] - [Audio control - play, pause, volume, speed, loop][3948] - [Auto-label function systems with SystemTypeIdLabel][4224] - [Query::get_many][4298] - [Dynamic light clusters][3968] - [Always update clusters and remove per-frame allocations][4169] - [`ParamSet` for conflicting `SystemParam`:s][2765] - [default() shorthand][4071] - [use marker components for cameras instead of name strings][3635] - [Implement `WorldQuery` derive macro][2713] - [Implement AnyOf queries][2889] - [Compute Pipeline Specialization][3979] - [Make get_resource (and friends) infallible][4047] - [bevy_pbr: Support flipping tangent space normal map y for DirectX normal maps][4433] - [Faster view frustum culling][4181] - [Use storage buffers for clustered forward point lights][3989] - [Add &World as SystemParam][2923] - [Add text wrapping support to Text2d][4347] - [Scene Viewer to display glTF files][4183] - [Internal Asset Hot Reloading][3966] - [Add FocusPolicy to NodeBundle and ImageBundle][3952] - [Allow iter combinations on queries with filters][3656] - [bevy_render: Support overriding wgpu features and limits][3912] - [bevy_render: Use RenderDevice to get limits/features and expose AdapterInfo][3931] - [Reduce power usage with configurable event loop][3974] - [can specify an anchor for a sprite][3463] - [Implement len and is_empty for EventReaders][2969] - [Add more FromWorld implementations][3945] - [Add cart's fork of ecs_bench_suite][4225] - [bevy_derive: Add derives for `Deref` and `DerefMut`][4328] - [Add clear_schedule][3941] - [Add Query::contains][3090] - [bevy_render: Support removal of nodes, edges, subgraphs][3048] - [Implement init_resource for `Commands` and `World`][3079] - [Added method to restart the current state][3328] - [Simplify sending empty events][2935] - [impl Command for `impl FnOnce(&mut World)`][2996] - [Useful error message when two assets have the save UUID][3739] - [bevy_asset: Add AssetServerSettings watch_for_changes member][3643] - [Add conversio from Color to u32][4088] - [Introduce `SystemLabel`'s for `RenderAssetPlugin`, and change `Image` preparation system to run before others][3917] - [Add a helper for storage buffers similar to `UniformVec`][4079] - [StandardMaterial: expose a cull_mode option][3982] - [Expose draw indirect][4056] - [Add view transform to view uniform][3885] - [Add a size method on Image.][3696] - [add Visibility for lights][3958] - [bevy_render: Provide a way to opt-out of the built-in frustum culling][3711] - [use error scope to handle errors on shader module creation][3675] - [include sources in shader validation error][3724] - [insert the gltf mesh name on the entity if there is one][4119] - [expose extras from gltf nodes][2154] - [gltf: add a name to nodes without names][4396] - [Enable drag-and-drop events on windows][3772] - [Add transform hierarchy stress test][4170] - [Add TransformBundle][3054] - [Add Transform::rotate_around method][3107] - [example on how to create an animation in code][4399] - [Add examples for Transforms][2441] - [Add mouse grab example][4114] - [examples: add screenspace texture shader example][4063] - [Add generic systems example][2636] - [add examples on how to have a data source running in another thread / in a task pool thread][2915] - [Simple 2d rotation example][3065] - [Add move sprite example.][2414] - [add an example using UI & states to create a game menu][2960] - [CI runs `cargo miri test -p bevy_ecs`][4310] - [Tracy spans around main 3D passes][4182] - [Add automatic docs deployment to GitHub Pages][3535] ### Changed - [Proper prehashing][3963] - [Move import_path definitions into shader source][3976] - [Make `System` responsible for updating its own archetypes][4115] - [Some small changes related to run criteria piping][3923] - [Remove unnecessary system labels][4340] - [Increment last event count on next instead of iter][2382] - [Obviate the need for `RunSystem`, and remove it][3817] - [Cleanup some things which shouldn't be components][2982] - [Remove the config api][3633] - [Deprecate `.system`][3302] - [Hide docs for concrete impls of Fetch, FetchState, and SystemParamState][4250] - [Move the CoreStage::Startup to a seperate StartupSchedule label][2434] - [`iter_mut` on Assets: send modified event only when asset is iterated over][3565] - [check if resource for asset already exists before adding it][3560] - [bevy_render: Batch insertion for prepare_uniform_components][4179] - [Change default `ColorMaterial` color to white][3981] - [bevy_render: Only auto-disable mappable primary buffers for discrete GPUs][3803] - [bevy_render: Do not automatically enable MAPPABLE_PRIMARY_BUFFERS][3698] - [increase the maximum number of point lights with shadows to the max supported by the device][4435] - [perf: only recalculate frusta of changed lights][4086] - [bevy_pbr: Optimize assign_lights_to_clusters][3984] - [improve error messages for render graph runner][3930] - [Skinned extraction speedup][4428] - [Sprites - keep color as 4 f32][4361] - [Change scaling mode to FixedHorizontal][4055] - [Replace VSync with PresentMode][3812] - [do not set cursor grab on window creation if not asked for][3617] - [bevy_transform: Use Changed in the query for much faster transform_propagate_system][4180] - [Split bevy_hierarchy out from bevy_transform][4168] - [Make transform builder methods const][3045] - [many_cubes: Add a cube pattern suitable for benchmarking culling changes][4126] - [Make many_cubes example more interesting][4015] - [Run tests (including doc tests) in `cargo run -p ci` command][3849] - [Use more ergonomic span syntax][4246] ### Fixed - [Remove unsound lifetime annotations on `EntityMut`][4096] - [Remove unsound lifetime annotations on `Query` methods][4243] - [Remove `World::components_mut`][4092] - [unsafeify `World::entities_mut`][4093] - [Use ManuallyDrop instead of forget in insert_resource_with_id][2947] - [Backport soundness fix][3685] - [Fix clicked UI nodes getting reset when hovering child nodes][4194] - [Fix ui interactions when cursor disappears suddenly][3926] - [Fix node update][3785] - [Fix derive(SystemParam) macro][4400] - [SystemParam Derive fixes][2838] - [Do not crash if RenderDevice doesn't exist][4427] - [Fixed case of R == G, following original conversion formula][4383] - [Fixed the frustum-sphere collision and added tests][4035] - [bevy_render: Fix Quad flip][3741] - [Fix HDR asset support][3795] - [fix cluster tiling calculations][4148] - [bevy_pbr: Do not panic when more than 256 point lights are added the scene][3697] - [fix issues with too many point lights][3916] - [shader preprocessor - do not import if scope is not valid][4012] - [support all line endings in shader preprocessor][3603] - [Fix animation: shadow and wireframe support][4367] - [add AnimationPlayer component only on scene roots that are also animation roots][4417] - [Fix loading non-TriangleList meshes without normals in gltf loader][4376] - [gltf-loader: disable backface culling if material is double-sided][4270] - [Fix glTF perspective camera projection][4006] - [fix mul_vec3 transformation order: should be scale -> rotate -> translate][3811] [2154]: https://github.com/bevyengine/bevy/pull/2154 [2382]: https://github.com/bevyengine/bevy/pull/2382 [2414]: https://github.com/bevyengine/bevy/pull/2414 [2434]: https://github.com/bevyengine/bevy/pull/2434 [2441]: https://github.com/bevyengine/bevy/pull/2441 [2636]: https://github.com/bevyengine/bevy/pull/2636 [2713]: https://github.com/bevyengine/bevy/pull/2713 [2765]: https://github.com/bevyengine/bevy/pull/2765 [2838]: https://github.com/bevyengine/bevy/pull/2838 [2889]: https://github.com/bevyengine/bevy/pull/2889 [2915]: https://github.com/bevyengine/bevy/pull/2915 [2923]: https://github.com/bevyengine/bevy/pull/2923 [2935]: https://github.com/bevyengine/bevy/pull/2935 [2947]: https://github.com/bevyengine/bevy/pull/2947 [2960]: https://github.com/bevyengine/bevy/pull/2960 [2969]: https://github.com/bevyengine/bevy/pull/2969 [2982]: https://github.com/bevyengine/bevy/pull/2982 [2996]: https://github.com/bevyengine/bevy/pull/2996 [3045]: https://github.com/bevyengine/bevy/pull/3045 [3048]: https://github.com/bevyengine/bevy/pull/3048 [3054]: https://github.com/bevyengine/bevy/pull/3054 [3065]: https://github.com/bevyengine/bevy/pull/3065 [3079]: https://github.com/bevyengine/bevy/pull/3079 [3090]: https://github.com/bevyengine/bevy/pull/3090 [3107]: https://github.com/bevyengine/bevy/pull/3107 [3302]: https://github.com/bevyengine/bevy/pull/3302 [3328]: https://github.com/bevyengine/bevy/pull/3328 [3412]: https://github.com/bevyengine/bevy/pull/3412 [3463]: https://github.com/bevyengine/bevy/pull/3463 [3535]: https://github.com/bevyengine/bevy/pull/3535 [3560]: https://github.com/bevyengine/bevy/pull/3560 [3565]: https://github.com/bevyengine/bevy/pull/3565 [3603]: https://github.com/bevyengine/bevy/pull/3603 [3617]: https://github.com/bevyengine/bevy/pull/3617 [3633]: https://github.com/bevyengine/bevy/pull/3633 [3635]: https://github.com/bevyengine/bevy/pull/3635 [3643]: https://github.com/bevyengine/bevy/pull/3643 [3656]: https://github.com/bevyengine/bevy/pull/3656 [3675]: https://github.com/bevyengine/bevy/pull/3675 [3685]: https://github.com/bevyengine/bevy/pull/3685 [3696]: https://github.com/bevyengine/bevy/pull/3696 [3697]: https://github.com/bevyengine/bevy/pull/3697 [3698]: https://github.com/bevyengine/bevy/pull/3698 [3711]: https://github.com/bevyengine/bevy/pull/3711 [3724]: https://github.com/bevyengine/bevy/pull/3724 [3739]: https://github.com/bevyengine/bevy/pull/3739 [3741]: https://github.com/bevyengine/bevy/pull/3741 [3751]: https://github.com/bevyengine/bevy/pull/3751 [3772]: https://github.com/bevyengine/bevy/pull/3772 [3785]: https://github.com/bevyengine/bevy/pull/3785 [3795]: https://github.com/bevyengine/bevy/pull/3795 [3803]: https://github.com/bevyengine/bevy/pull/3803 [3811]: https://github.com/bevyengine/bevy/pull/3811 [3812]: https://github.com/bevyengine/bevy/pull/3812 [3817]: https://github.com/bevyengine/bevy/pull/3817 [3849]: https://github.com/bevyengine/bevy/pull/3849 [3884]: https://github.com/bevyengine/bevy/pull/3884 [3885]: https://github.com/bevyengine/bevy/pull/3885 [3912]: https://github.com/bevyengine/bevy/pull/3912 [3916]: https://github.com/bevyengine/bevy/pull/3916 [3917]: https://github.com/bevyengine/bevy/pull/3917 [3923]: https://github.com/bevyengine/bevy/pull/3923 [3926]: https://github.com/bevyengine/bevy/pull/3926 [3930]: https://github.com/bevyengine/bevy/pull/3930 [3931]: https://github.com/bevyengine/bevy/pull/3931 [3941]: https://github.com/bevyengine/bevy/pull/3941 [3945]: https://github.com/bevyengine/bevy/pull/3945 [3948]: https://github.com/bevyengine/bevy/pull/3948 [3952]: https://github.com/bevyengine/bevy/pull/3952 [3958]: https://github.com/bevyengine/bevy/pull/3958 [3959]: https://github.com/bevyengine/bevy/pull/3959 [3963]: https://github.com/bevyengine/bevy/pull/3963 [3966]: https://github.com/bevyengine/bevy/pull/3966 [3968]: https://github.com/bevyengine/bevy/pull/3968 [3974]: https://github.com/bevyengine/bevy/pull/3974 [3976]: https://github.com/bevyengine/bevy/pull/3976 [3979]: https://github.com/bevyengine/bevy/pull/3979 [3981]: https://github.com/bevyengine/bevy/pull/3981 [3982]: https://github.com/bevyengine/bevy/pull/3982 [3984]: https://github.com/bevyengine/bevy/pull/3984 [3989]: https://github.com/bevyengine/bevy/pull/3989 [4006]: https://github.com/bevyengine/bevy/pull/4006 [4012]: https://github.com/bevyengine/bevy/pull/4012 [4015]: https://github.com/bevyengine/bevy/pull/4015 [4035]: https://github.com/bevyengine/bevy/pull/4035 [4047]: https://github.com/bevyengine/bevy/pull/4047 [4055]: https://github.com/bevyengine/bevy/pull/4055 [4056]: https://github.com/bevyengine/bevy/pull/4056 [4063]: https://github.com/bevyengine/bevy/pull/4063 [4071]: https://github.com/bevyengine/bevy/pull/4071 [4079]: https://github.com/bevyengine/bevy/pull/4079 [4086]: https://github.com/bevyengine/bevy/pull/4086 [4088]: https://github.com/bevyengine/bevy/pull/4088 [4092]: https://github.com/bevyengine/bevy/pull/4092 [4093]: https://github.com/bevyengine/bevy/pull/4093 [4096]: https://github.com/bevyengine/bevy/pull/4096 [4114]: https://github.com/bevyengine/bevy/pull/4114 [4115]: https://github.com/bevyengine/bevy/pull/4115 [4119]: https://github.com/bevyengine/bevy/pull/4119 [4126]: https://github.com/bevyengine/bevy/pull/4126 [4148]: https://github.com/bevyengine/bevy/pull/4148 [4168]: https://github.com/bevyengine/bevy/pull/4168 [4169]: https://github.com/bevyengine/bevy/pull/4169 [4170]: https://github.com/bevyengine/bevy/pull/4170 [4179]: https://github.com/bevyengine/bevy/pull/4179 [4180]: https://github.com/bevyengine/bevy/pull/4180 [4181]: https://github.com/bevyengine/bevy/pull/4181 [4182]: https://github.com/bevyengine/bevy/pull/4182 [4183]: https://github.com/bevyengine/bevy/pull/4183 [4194]: https://github.com/bevyengine/bevy/pull/4194 [4224]: https://github.com/bevyengine/bevy/pull/4224 [4225]: https://github.com/bevyengine/bevy/pull/4225 [4238]: https://github.com/bevyengine/bevy/pull/4238 [4243]: https://github.com/bevyengine/bevy/pull/4243 [4246]: https://github.com/bevyengine/bevy/pull/4246 [4250]: https://github.com/bevyengine/bevy/pull/4250 [4270]: https://github.com/bevyengine/bevy/pull/4270 [4298]: https://github.com/bevyengine/bevy/pull/4298 [4310]: https://github.com/bevyengine/bevy/pull/4310 [4328]: https://github.com/bevyengine/bevy/pull/4328 [4340]: https://github.com/bevyengine/bevy/pull/4340 [4347]: https://github.com/bevyengine/bevy/pull/4347 [4361]: https://github.com/bevyengine/bevy/pull/4361 [4367]: https://github.com/bevyengine/bevy/pull/4367 [4375]: https://github.com/bevyengine/bevy/pull/4375 [4376]: https://github.com/bevyengine/bevy/pull/4376 [4383]: https://github.com/bevyengine/bevy/pull/4383 [4396]: https://github.com/bevyengine/bevy/pull/4396 [4399]: https://github.com/bevyengine/bevy/pull/4399 [4400]: https://github.com/bevyengine/bevy/pull/4400 [4417]: https://github.com/bevyengine/bevy/pull/4417 [4427]: https://github.com/bevyengine/bevy/pull/4427 [4428]: https://github.com/bevyengine/bevy/pull/4428 [4433]: https://github.com/bevyengine/bevy/pull/4433 [4435]: https://github.com/bevyengine/bevy/pull/4435 ## Version 0.6.0 (2022-01-08) ### Added - [New Renderer][3175] - [Clustered forward rendering][3153] - [Frustum culling][2861] - [Sprite Batching][3060] - [Materials and MaterialPlugin][3428] - [2D Meshes and Materials][3460] - [WebGL2 support][3039] - [Pipeline Specialization, Shader Assets, and Shader Preprocessing][3031] - [Modular Rendering][2831] - [Directional light and shadow][c6] - [Directional light][2112] - [Use the infinite reverse right-handed perspective projection][2543] - [Implement and require `#[derive(Component)]` on all component structs][2254] - [Shader Imports. Decouple Mesh logic from PBR][3137] - [Add support for opaque, alpha mask, and alpha blend modes][3072] - [bevy_gltf: Load light names from gltf][3553] - [bevy_gltf: Add support for loading lights][3506] - [Spherical Area Lights][1901] - [Shader Processor: process imported shader][3290] - [Add support for not casting/receiving shadows][2726] - [Add support for configurable shadow map sizes][2700] - [Implement the `Overflow::Hidden` style property for UI][3296] - [SystemState][2283] - [Add a method `iter_combinations` on query to iterate over combinations of query results][1763] - [Add FromReflect trait to convert dynamic types to concrete types][1395] - [More pipelined-rendering shader examples][3041] - [Configurable wgpu features/limits priority][3452] - [Cargo feature for bevy UI][3546] - [Spherical area lights example][3498] - [Implement ReflectValue serialization for Duration][3318] - [bevy_ui: register Overflow type][3443] - [Add Visibility component to UI][3426] - [Implement non-indexed mesh rendering][3415] - [add tracing spans for parallel executor and system overhead][3416] - [RemoveChildren command][1925] - [report shader processing errors in `RenderPipelineCache`][3289] - [enable Webgl2 optimisation in pbr under feature][3291] - [Implement Sub-App Labels][2695] - [Added `set_cursor_icon(...)` to `Window`][3395] - [Support topologies other than TriangleList][3349] - [Add an example 'showcasing' using multiple windows][3367] - [Add an example to draw a rectangle][2957] - [Added set_scissor_rect to tracked render pass.][3320] - [Add RenderWorld to Extract step][2555] - [re-export ClearPassNode][3336] - [add default standard material in PbrBundle][3325] - [add methods to get reads and writes of `Access`][3166] - [Add despawn_children][2903] - [More Bevy ECS schedule spans][3281] - [Added transparency to window builder][3105] - [Add Gamepads resource][3257] - [Add support for #else for shader defs][3206] - [Implement iter() for mutable Queries][2305] - [add shadows in examples][3201] - [Added missing wgpu image render resources.][3171] - [Per-light toggleable shadow mapping][3126] - [Support nested shader defs][3113] - [use bytemuck crate instead of Byteable trait][2183] - [`iter_mut()` for Assets type][3118] - [EntityRenderCommand and PhaseItemRenderCommand][3111] - [add position to WindowDescriptor][3070] - [Add System Command apply and RenderGraph node spans][3069] - [Support for normal maps including from glTF models][2741] - [MSAA example][3049] - [Add MSAA to new renderer][3042] - [Add support for IndexFormat::Uint16][2990] - [Apply labels to wgpu resources for improved debugging/profiling][2912] - [Add tracing spans around render subapp and stages][2907] - [Add set_stencil_reference to TrackedRenderPass][2885] - [Add despawn_recursive to EntityMut][2855] - [Add trace_tracy feature for Tracy profiling][2832] - [Expose wgpu's StencilOperation with bevy][2819] - [add get_single variant][2793] - [Add builder methods to Transform][2778] - [add get_history function to Diagnostic][2772] - [Add convenience methods for checking a set of inputs][2760] - [Add error messages for the spooky insertions][2581] - [Add Deref implementation for ComputePipeline][2759] - [Derive thiserror::Error for HexColorError][2740] - [Spawn specific entities: spawn or insert operations, refactor spawn internals, world clearing][2673] - [Add ClearColor Resource to Pipelined Renderer][2631] - [remove_component for ReflectComponent][2682] - [Added ComputePipelineDescriptor][2628] - [Added StorageTextureAccess to the exposed wgpu API][2614] - [Add sprite atlases into the new renderer.][2560] - [Log adapter info on initialization][2542] - [Add feature flag to enable wasm for bevy_audio][2397] - [Allow `Option>` and `Option>` as SystemParam][2345] - [Added helpful adders for systemsets][2366] - [Derive Clone for Time][2360] - [Implement Clone for Fetches][2641] - [Implement IntoSystemDescriptor for SystemDescriptor][2718] - [implement DetectChanges for NonSendMut][2326] - [Log errors when loading textures from a gltf file][2260] - [expose texture/image conversions as From/TryFrom][2175] - [[ecs] implement is_empty for queries][2271] - [Add audio to ios example][1007] - [Example showing how to use AsyncComputeTaskPool and Tasks][2180] - [Expose set_changed() on ResMut and Mut][2208] - [Impl AsRef+AsMut for Res, ResMut, and Mut][2189] - [Add exit_on_esc_system to examples with window][2121] - [Implement rotation for Text2d][2084] - [Mesh vertex attributes for skinning and animation][1831] - [load zeroed UVs as fallback in gltf loader][1803] - [Implement direct mutable dereferencing][2100] - [add a span for frames][2053] - [Add an alias mouse position -> cursor position][2038] - [Adding `WorldQuery` for `WithBundle`][2024] - [Automatic System Spans][2033] - [Add system sets and run criteria example][1909] - [EnumVariantMeta derive][1972] - [Added TryFrom for VertexAttributeValues][1963] - [add render_to_texture example][1927] - [Added example of entity sorting by components][1817] - [calculate flat normals for mesh if missing][1808] - [Add animate shaders example][1765] - [examples on how to tests systems][1714] - [Add a UV sphere implementation][1887] - [Add additional vertex formats][1878] - [gltf-loader: support data url for images][1828] - [glTF: added color attribute support][1775] - [Add synonyms for transform relative vectors][1667] ### Changed - [Relicense Bevy under the dual MIT or Apache-2.0 license][2509] - [[ecs] Improve `Commands` performance][2332] - [Merge AppBuilder into App][2531] - [Use a special first depth slice for clustered forward rendering][3545] - [Add a separate ClearPass][3209] - [bevy_pbr2: Improve lighting units and documentation][2704] - [gltf loader: do not use the taskpool for only one task][3577] - [System Param Lifetime Split][2605] - [Optional `.system`][2398] - [Optional `.system()`, part 2][2403] - [Optional `.system()`, part 3][2422] - [Optional `.system()`, part 4 (run criteria)][2431] - [Optional `.system()`, part 6 (chaining)][2494] - [Make the `iter_combinators` examples prettier][3075] - [Remove dead anchor.rs code][3551] - [gltf: load textures asynchronously using io task pool][1767] - [Use fully-qualified type names in Label derive.][3544] - [Remove Bytes, FromBytes, Labels, EntityLabels][3521] - [StorageType parameter removed from ComponentDescriptor::new_resource][3495] - [remove dead code: ShaderDefs derive][3490] - [Enable Msaa for webgl by default][3489] - [Renamed Entity::new to Entity::from_raw][3465] - [bevy::scene::Entity renamed to bevy::scene::DynamicEntity.][3448] - [make `sub_app` return an `&App` and add `sub_app_mut() -> &mut App`][3309] - [use ogg by default instead of mp3][3421] - [enable `wasm-bindgen` feature on gilrs][3420] - [Use EventWriter for gilrs_system][3413] - [Add some of the missing methods to `TrackedRenderPass`][3401] - [Only bevy_render depends directly on wgpu][3393] - [Update wgpu to 0.12 and naga to 0.8][3375] - [Improved bevymark: no bouncing offscreen and spawn waves from CLI][3364] - [Rename render UiSystem to RenderUiSystem][3371] - [Use updated window size in bevymark example][3335] - [Enable trace feature for subfeatures using it][3337] - [Schedule gilrs system before input systems][2989] - [Rename fixed timestep state and add a test][3260] - [Port bevy_ui to pipelined-rendering][2653] - [update wireframe rendering to new renderer][3193] - [Allow `String` and `&String` as `Id` for `AssetServer.get_handle(id)`][3280] - [Ported WgpuOptions to new renderer][3282] - [Down with the system!][2496] - [Update dependencies `ron` `winit`& fix `cargo-deny` lists][3244] - [Improve contributors example quality][3258] - [Expose command encoders][3271] - [Made Time::time_since_startup return from last tick.][3264] - [Default image used in PipelinedSpriteBundle to be able to render without loading a texture][3270] - [make texture from sprite pipeline filterable][3236] - [iOS: replace cargo-lipo, and update for new macOS][3109] - [increase light intensity in pbr example][3182] - [Faster gltf loader][3189] - [Use crevice std140_size_static everywhere][3168] - [replace matrix swizzles in pbr shader with index accesses][3122] - [Disable default features from `bevy_asset` and `bevy_ecs`][3097] - [Update tracing-subscriber requirement from 0.2.22 to 0.3.1][3076] - [Update vendored Crevice to 0.8.0 + PR for arrays][3059] - [change texture atlas sprite indexing to usize][2887] - [Update derive(DynamicPlugin) to edition 2021][3038] - [Update to edition 2021 on master][3028] - [Add entity ID to expect() message][2943] - [Use RenderQueue in BufferVec][2847] - [removed unused RenderResourceId and SwapChainFrame][2890] - [Unique WorldId][2827] - [add_texture returns index to texture][2864] - [Update hexasphere requirement from 4.0.0 to 5.0.0][2880] - [enable change detection for hierarchy maintenance][2411] - [Make events reuse buffers][2850] - [Replace `.insert_resource(T::default())` calls with `init_resource::()`][2807] - [Improve many sprites example][2785] - [Update glam requirement from 0.17.3 to 0.18.0][2748] - [update ndk-glue to 0.4][2684] - [Remove Need for Sprite Size Sync System][2632] - [Pipelined separate shadow vertex shader][2727] - [Sub app label changes][2717] - [Use Explicit Names for Flex Direction][2672] - [Make default near plane more sensible at 0.1][2703] - [Reduce visibility of various types and fields][2690] - [Cleanup FromResources][2601] - [Better error message for unsupported shader features Fixes #869][2598] - [Change definition of `ScheduleRunnerPlugin`][2606] - [Re-implement Automatic Sprite Sizing][2613] - [Remove with bundle filter][2623] - [Remove bevy_dynamic_plugin as a default][2578] - [Port bevy_gltf to pipelined-rendering][2537] - [Bump notify to 5.0.0-pre.11][2564] - [Add 's (state) lifetime to `Fetch`][2515] - [move bevy_core_pipeline to its own plugin][2552] - [Refactor ECS to reduce the dependency on a 1-to-1 mapping between components and real rust types][2490] - [Inline world get][2520] - [Dedupe move logic in remove_bundle and remove_bundle_intersection][2521] - [remove .system from pipelined code][2538] - [Scale normal bias by texel size][c26] - [Make Remove Command's fields public][2449] - [bevy_utils: Re-introduce `with_capacity()`.][2393] - [Update rodio requirement from 0.13 to 0.14][2244] - [Optimize Events::extend and impl std::iter::Extend][2207] - [Bump winit to 0.25][2186] - [Improve legibility of RunOnce::run_unsafe param][2181] - [Update gltf requirement from 0.15.2 to 0.16.0][2196] - [Move to smallvec v1.6][2074] - [Update rectangle-pack requirement from 0.3 to 0.4][2086] - [Make Commands public?][2034] - [Monomorphize various things][1914] - [Detect camera projection changes][2015] - [support assets of any size][1997] - [Separate Query filter access from fetch access during initial evaluation][1977] - [Provide better error message when missing a render backend][1965] - [par_for_each: split batches when iterating on a sparse query][1945] - [Allow deriving `SystemParam` on private types][1936] - [Angle bracket annotated types to support generics][1919] - [More detailed errors when resource not found][1864] - [Moved events to ECS][1823] - [Use a sorted Map for vertex buffer attributes][1796] - [Error message improvements for shader compilation/gltf loading][1786] - [Rename Light => PointLight and remove unused properties][1778] - [Override size_hint for all Iterators and add ExactSizeIterator where applicable][1734] - [Change breakout to use fixed timestamp][1541] ### Fixed - [Fix shadows for non-TriangleLists][3581] - [Fix error message for the `Component` macro's `component` `storage` attribute.][3534] - [do not add plugin ExtractComponentPlugin twice for StandardMaterial][3502] - [load spirv using correct API][3466] - [fix shader compilation error reporting for non-wgsl shaders][3441] - [bevy_ui: Check clip when handling interactions][3461] - [crevice derive macro: fix path to render_resource when importing from bevy][3438] - [fix parenting of scenes][2410] - [Do not panic on failed setting of GameOver state in AlienCakeAddict][3411] - [Fix minimization crash because of cluster updates.][3369] - [Fix custom mesh pipelines][3381] - [Fix hierarchy example panic][3378] - [Fix double drop in BlobVec::replace_unchecked (#2597)][2848] - [Remove vestigial derives][3343] - [Fix crash with disabled winit][3330] - [Fix clustering for orthographic projections][3316] - [Run a clear pass on Windows without any Views][3304] - [Remove some superfluous unsafe code][3297] - [clearpass: also clear views without depth (2d)][3286] - [Check for NaN in `Camera::world_to_screen()`][3268] - [Fix sprite hot reloading in new renderer][3207] - [Fix path used by macro not considering that we can use a sub-crate][3178] - [Fix torus normals][3549] - [enable alpha mode for textures materials that are transparent][3202] - [fix calls to as_rgba_linear][3200] - [Fix shadow logic][3186] - [fix: as_rgba_linear used wrong variant][3192] - [Fix MIME type support for glTF buffer Data URIs][3101] - [Remove wasm audio feature flag for 2021][3000] - [use correct size of pixel instead of 4][2977] - [Fix custom_shader_pipelined example shader][2992] - [Fix scale factor for cursor position][2932] - [fix window resize after wgpu 0.11 upgrade][2953] - [Fix unsound lifetime annotation on `Query::get_component`][2964] - [Remove double Events::update in bevy-gilrs][2894] - [Fix bevy_ecs::schedule::executor_parallel::system span management][2905] - [Avoid some format! into immediate format!][2913] - [Fix panic on is_resource_* calls (#2828)][2863] - [Fix window size change panic][2858] - [fix `Default` implementation of `Image` so that size and data match][2833] - [Fix scale_factor_override in the winit backend][2784] - [Fix breakout example scoreboard][2770] - [Fix `Option>` and `Option>`][2757] - [fix missing paths in ECS SystemParam derive macro v2][2550] - [Add missing bytemuck feature][2625] - [Update EntityMut's location in push_children() and insert_children()][2604] - [Fixed issue with how texture arrays were uploaded with write_texture.][c24] - [Don't update when suspended to avoid GPU use on iOS.][2482] - [update archetypes for run criterias][2177] - [Fix AssetServer::get_asset_loader deadlock][2395] - [Fix unsetting RenderLayers bit in without fn][2409] - [Fix view vector in pbr frag to work in ortho][2370] - [Fixes Timer Precision Error Causing Panic][2362] - [[assets] Fix `AssetServer::get_handle_path`][2310] - [Fix bad bounds for NonSend SystemParams][2325] - [Add minimum sizes to textures to prevent crash][2300] - [[assets] set LoadState properly and more testing!][2226] - [[assets] properly set `LoadState` with invalid asset extension][2318] - [Fix Bevy crashing if no audio device is found][2269] - [Fixes dropping empty BlobVec][2295] - [[assets] fix Assets being set as 'changed' each frame][2280] - [drop overwritten component data on double insert][2227] - [Despawn with children doesn't need to remove entities from parents children when parents are also removed][2278] - [reduce tricky unsafety and simplify table structure][2221] - [Use bevy_reflect as path in case of no direct references][1875] - [Fix Events:: bug][2206] - [small ecs cleanup and remove_bundle drop bugfix][2172] - [Fix PBR regression for unlit materials][2197] - [prevent memory leak when dropping ParallelSystemContainer][2176] - [fix diagnostic length for asset count][2165] - [Fixes incorrect `PipelineCompiler::compile_pipeline()` step_mode][2126] - [Asset re-loading while it's being deleted][2011] - [Bevy derives handling generics in impl definitions.][2044] - [Fix unsoundness in `Query::for_each_mut`][2045] - [Fix mesh with no vertex attributes causing panic][2036] - [Fix alien_cake_addict: cake should not be at height of player's location][1954] - [fix memory size for PointLightBundle][1940] - [Fix unsoundness in query component access][1929] - [fixing compilation error on macos aarch64][1905] - [Fix SystemParam handling of Commands][1899] - [Fix IcoSphere UV coordinates][1871] - [fix 'attempted to subtract with overflow' for State::inactives][1668] [1007]: https://github.com/bevyengine/bevy/pull/1007 [1395]: https://github.com/bevyengine/bevy/pull/1395 [1541]: https://github.com/bevyengine/bevy/pull/1541 [1667]: https://github.com/bevyengine/bevy/pull/1667 [1668]: https://github.com/bevyengine/bevy/pull/1668 [1714]: https://github.com/bevyengine/bevy/pull/1714 [1734]: https://github.com/bevyengine/bevy/pull/1734 [1763]: https://github.com/bevyengine/bevy/pull/1763 [1765]: https://github.com/bevyengine/bevy/pull/1765 [1767]: https://github.com/bevyengine/bevy/pull/1767 [1775]: https://github.com/bevyengine/bevy/pull/1775 [1778]: https://github.com/bevyengine/bevy/pull/1778 [1786]: https://github.com/bevyengine/bevy/pull/1786 [1796]: https://github.com/bevyengine/bevy/pull/1796 [1803]: https://github.com/bevyengine/bevy/pull/1803 [1808]: https://github.com/bevyengine/bevy/pull/1808 [1817]: https://github.com/bevyengine/bevy/pull/1817 [1823]: https://github.com/bevyengine/bevy/pull/1823 [1828]: https://github.com/bevyengine/bevy/pull/1828 [1831]: https://github.com/bevyengine/bevy/pull/1831 [1864]: https://github.com/bevyengine/bevy/pull/1864 [1871]: https://github.com/bevyengine/bevy/pull/1871 [1875]: https://github.com/bevyengine/bevy/pull/1875 [1878]: https://github.com/bevyengine/bevy/pull/1878 [1887]: https://github.com/bevyengine/bevy/pull/1887 [1899]: https://github.com/bevyengine/bevy/pull/1899 [1901]: https://github.com/bevyengine/bevy/pull/1901 [1905]: https://github.com/bevyengine/bevy/pull/1905 [1909]: https://github.com/bevyengine/bevy/pull/1909 [1914]: https://github.com/bevyengine/bevy/pull/1914 [1919]: https://github.com/bevyengine/bevy/pull/1919 [1925]: https://github.com/bevyengine/bevy/pull/1925 [1927]: https://github.com/bevyengine/bevy/pull/1927 [1929]: https://github.com/bevyengine/bevy/pull/1929 [1936]: https://github.com/bevyengine/bevy/pull/1936 [1940]: https://github.com/bevyengine/bevy/pull/1940 [1945]: https://github.com/bevyengine/bevy/pull/1945 [1954]: https://github.com/bevyengine/bevy/pull/1954 [1963]: https://github.com/bevyengine/bevy/pull/1963 [1965]: https://github.com/bevyengine/bevy/pull/1965 [1972]: https://github.com/bevyengine/bevy/pull/1972 [1977]: https://github.com/bevyengine/bevy/pull/1977 [1997]: https://github.com/bevyengine/bevy/pull/1997 [2011]: https://github.com/bevyengine/bevy/pull/2011 [2015]: https://github.com/bevyengine/bevy/pull/2015 [2024]: https://github.com/bevyengine/bevy/pull/2024 [2033]: https://github.com/bevyengine/bevy/pull/2033 [2034]: https://github.com/bevyengine/bevy/pull/2034 [2036]: https://github.com/bevyengine/bevy/pull/2036 [2038]: https://github.com/bevyengine/bevy/pull/2038 [2044]: https://github.com/bevyengine/bevy/pull/2044 [2045]: https://github.com/bevyengine/bevy/pull/2045 [2053]: https://github.com/bevyengine/bevy/pull/2053 [2074]: https://github.com/bevyengine/bevy/pull/2074 [2084]: https://github.com/bevyengine/bevy/pull/2084 [2086]: https://github.com/bevyengine/bevy/pull/2086 [2100]: https://github.com/bevyengine/bevy/pull/2100 [2112]: https://github.com/bevyengine/bevy/pull/2112 [2121]: https://github.com/bevyengine/bevy/pull/2121 [2126]: https://github.com/bevyengine/bevy/pull/2126 [2165]: https://github.com/bevyengine/bevy/pull/2165 [2172]: https://github.com/bevyengine/bevy/pull/2172 [2175]: https://github.com/bevyengine/bevy/pull/2175 [2176]: https://github.com/bevyengine/bevy/pull/2176 [2177]: https://github.com/bevyengine/bevy/pull/2177 [2180]: https://github.com/bevyengine/bevy/pull/2180 [2181]: https://github.com/bevyengine/bevy/pull/2181 [2183]: https://github.com/bevyengine/bevy/pull/2183 [2186]: https://github.com/bevyengine/bevy/pull/2186 [2189]: https://github.com/bevyengine/bevy/pull/2189 [2196]: https://github.com/bevyengine/bevy/pull/2196 [2197]: https://github.com/bevyengine/bevy/pull/2197 [2206]: https://github.com/bevyengine/bevy/pull/2206 [2207]: https://github.com/bevyengine/bevy/pull/2207 [2208]: https://github.com/bevyengine/bevy/pull/2208 [2221]: https://github.com/bevyengine/bevy/pull/2221 [2226]: https://github.com/bevyengine/bevy/pull/2226 [2227]: https://github.com/bevyengine/bevy/pull/2227 [2244]: https://github.com/bevyengine/bevy/pull/2244 [2254]: https://github.com/bevyengine/bevy/pull/2254 [2260]: https://github.com/bevyengine/bevy/pull/2260 [2269]: https://github.com/bevyengine/bevy/pull/2269 [2271]: https://github.com/bevyengine/bevy/pull/2271 [2278]: https://github.com/bevyengine/bevy/pull/2278 [2280]: https://github.com/bevyengine/bevy/pull/2280 [2283]: https://github.com/bevyengine/bevy/pull/2283 [2295]: https://github.com/bevyengine/bevy/pull/2295 [2300]: https://github.com/bevyengine/bevy/pull/2300 [2305]: https://github.com/bevyengine/bevy/pull/2305 [2310]: https://github.com/bevyengine/bevy/pull/2310 [2318]: https://github.com/bevyengine/bevy/pull/2318 [2325]: https://github.com/bevyengine/bevy/pull/2325 [2326]: https://github.com/bevyengine/bevy/pull/2326 [2332]: https://github.com/bevyengine/bevy/pull/2332 [2345]: https://github.com/bevyengine/bevy/pull/2345 [2360]: https://github.com/bevyengine/bevy/pull/2360 [2362]: https://github.com/bevyengine/bevy/pull/2362 [2366]: https://github.com/bevyengine/bevy/pull/2366 [2370]: https://github.com/bevyengine/bevy/pull/2370 [2393]: https://github.com/bevyengine/bevy/pull/2393 [2395]: https://github.com/bevyengine/bevy/pull/2395 [2397]: https://github.com/bevyengine/bevy/pull/2397 [2398]: https://github.com/bevyengine/bevy/pull/2398 [2403]: https://github.com/bevyengine/bevy/pull/2403 [2409]: https://github.com/bevyengine/bevy/pull/2409 [2410]: https://github.com/bevyengine/bevy/pull/2410 [2411]: https://github.com/bevyengine/bevy/pull/2411 [2422]: https://github.com/bevyengine/bevy/pull/2422 [2431]: https://github.com/bevyengine/bevy/pull/2431 [2449]: https://github.com/bevyengine/bevy/pull/2449 [2482]: https://github.com/bevyengine/bevy/pull/2482 [2490]: https://github.com/bevyengine/bevy/pull/2490 [2494]: https://github.com/bevyengine/bevy/pull/2494 [2496]: https://github.com/bevyengine/bevy/pull/2496 [2509]: https://github.com/bevyengine/bevy/pull/2509 [2515]: https://github.com/bevyengine/bevy/pull/2515 [2520]: https://github.com/bevyengine/bevy/pull/2520 [2521]: https://github.com/bevyengine/bevy/pull/2521 [2531]: https://github.com/bevyengine/bevy/pull/2531 [2537]: https://github.com/bevyengine/bevy/pull/2537 [2538]: https://github.com/bevyengine/bevy/pull/2538 [2542]: https://github.com/bevyengine/bevy/pull/2542 [2543]: https://github.com/bevyengine/bevy/pull/2543 [2550]: https://github.com/bevyengine/bevy/pull/2550 [2552]: https://github.com/bevyengine/bevy/pull/2552 [2555]: https://github.com/bevyengine/bevy/pull/2555 [2560]: https://github.com/bevyengine/bevy/pull/2560 [2564]: https://github.com/bevyengine/bevy/pull/2564 [2578]: https://github.com/bevyengine/bevy/pull/2578 [2581]: https://github.com/bevyengine/bevy/pull/2581 [2598]: https://github.com/bevyengine/bevy/pull/2598 [2601]: https://github.com/bevyengine/bevy/pull/2601 [2604]: https://github.com/bevyengine/bevy/pull/2604 [2605]: https://github.com/bevyengine/bevy/pull/2605 [2606]: https://github.com/bevyengine/bevy/pull/2606 [2613]: https://github.com/bevyengine/bevy/pull/2613 [2614]: https://github.com/bevyengine/bevy/pull/2614 [2623]: https://github.com/bevyengine/bevy/pull/2623 [2625]: https://github.com/bevyengine/bevy/pull/2625 [2628]: https://github.com/bevyengine/bevy/pull/2628 [2631]: https://github.com/bevyengine/bevy/pull/2631 [2632]: https://github.com/bevyengine/bevy/pull/2632 [2641]: https://github.com/bevyengine/bevy/pull/2641 [2653]: https://github.com/bevyengine/bevy/pull/2653 [2672]: https://github.com/bevyengine/bevy/pull/2672 [2673]: https://github.com/bevyengine/bevy/pull/2673 [2682]: https://github.com/bevyengine/bevy/pull/2682 [2684]: https://github.com/bevyengine/bevy/pull/2684 [2690]: https://github.com/bevyengine/bevy/pull/2690 [2695]: https://github.com/bevyengine/bevy/pull/2695 [2700]: https://github.com/bevyengine/bevy/pull/2700 [2703]: https://github.com/bevyengine/bevy/pull/2703 [2704]: https://github.com/bevyengine/bevy/pull/2704 [2717]: https://github.com/bevyengine/bevy/pull/2717 [2718]: https://github.com/bevyengine/bevy/pull/2718 [2726]: https://github.com/bevyengine/bevy/pull/2726 [2727]: https://github.com/bevyengine/bevy/pull/2727 [2740]: https://github.com/bevyengine/bevy/pull/2740 [2741]: https://github.com/bevyengine/bevy/pull/2741 [2748]: https://github.com/bevyengine/bevy/pull/2748 [2757]: https://github.com/bevyengine/bevy/pull/2757 [2759]: https://github.com/bevyengine/bevy/pull/2759 [2760]: https://github.com/bevyengine/bevy/pull/2760 [2770]: https://github.com/bevyengine/bevy/pull/2770 [2772]: https://github.com/bevyengine/bevy/pull/2772 [2778]: https://github.com/bevyengine/bevy/pull/2778 [2784]: https://github.com/bevyengine/bevy/pull/2784 [2785]: https://github.com/bevyengine/bevy/pull/2785 [2793]: https://github.com/bevyengine/bevy/pull/2793 [2807]: https://github.com/bevyengine/bevy/pull/2807 [2819]: https://github.com/bevyengine/bevy/pull/2819 [2827]: https://github.com/bevyengine/bevy/pull/2827 [2831]: https://github.com/bevyengine/bevy/pull/2831 [2832]: https://github.com/bevyengine/bevy/pull/2832 [2833]: https://github.com/bevyengine/bevy/pull/2833 [2847]: https://github.com/bevyengine/bevy/pull/2847 [2848]: https://github.com/bevyengine/bevy/pull/2848 [2850]: https://github.com/bevyengine/bevy/pull/2850 [2855]: https://github.com/bevyengine/bevy/pull/2855 [2858]: https://github.com/bevyengine/bevy/pull/2858 [2861]: https://github.com/bevyengine/bevy/pull/2861 [2863]: https://github.com/bevyengine/bevy/pull/2863 [2864]: https://github.com/bevyengine/bevy/pull/2864 [2880]: https://github.com/bevyengine/bevy/pull/2880 [2885]: https://github.com/bevyengine/bevy/pull/2885 [2887]: https://github.com/bevyengine/bevy/pull/2887 [2890]: https://github.com/bevyengine/bevy/pull/2890 [2894]: https://github.com/bevyengine/bevy/pull/2894 [2903]: https://github.com/bevyengine/bevy/pull/2903 [2905]: https://github.com/bevyengine/bevy/pull/2905 [2907]: https://github.com/bevyengine/bevy/pull/2907 [2912]: https://github.com/bevyengine/bevy/pull/2912 [2913]: https://github.com/bevyengine/bevy/pull/2913 [2932]: https://github.com/bevyengine/bevy/pull/2932 [2943]: https://github.com/bevyengine/bevy/pull/2943 [2953]: https://github.com/bevyengine/bevy/pull/2953 [2957]: https://github.com/bevyengine/bevy/pull/2957 [2964]: https://github.com/bevyengine/bevy/pull/2964 [2977]: https://github.com/bevyengine/bevy/pull/2977 [2989]: https://github.com/bevyengine/bevy/pull/2989 [2990]: https://github.com/bevyengine/bevy/pull/2990 [2992]: https://github.com/bevyengine/bevy/pull/2992 [3000]: https://github.com/bevyengine/bevy/pull/3000 [3028]: https://github.com/bevyengine/bevy/pull/3028 [3031]: https://github.com/bevyengine/bevy/pull/3031 [3038]: https://github.com/bevyengine/bevy/pull/3038 [3039]: https://github.com/bevyengine/bevy/pull/3039 [3041]: https://github.com/bevyengine/bevy/pull/3041 [3042]: https://github.com/bevyengine/bevy/pull/3042 [3049]: https://github.com/bevyengine/bevy/pull/3049 [3059]: https://github.com/bevyengine/bevy/pull/3059 [3060]: https://github.com/bevyengine/bevy/pull/3060 [3069]: https://github.com/bevyengine/bevy/pull/3069 [3070]: https://github.com/bevyengine/bevy/pull/3070 [3072]: https://github.com/bevyengine/bevy/pull/3072 [3075]: https://github.com/bevyengine/bevy/pull/3075 [3076]: https://github.com/bevyengine/bevy/pull/3076 [3097]: https://github.com/bevyengine/bevy/pull/3097 [3101]: https://github.com/bevyengine/bevy/pull/3101 [3105]: https://github.com/bevyengine/bevy/pull/3105 [3109]: https://github.com/bevyengine/bevy/pull/3109 [3111]: https://github.com/bevyengine/bevy/pull/3111 [3113]: https://github.com/bevyengine/bevy/pull/3113 [3118]: https://github.com/bevyengine/bevy/pull/3118 [3122]: https://github.com/bevyengine/bevy/pull/3122 [3126]: https://github.com/bevyengine/bevy/pull/3126 [3137]: https://github.com/bevyengine/bevy/pull/3137 [3153]: https://github.com/bevyengine/bevy/pull/3153 [3166]: https://github.com/bevyengine/bevy/pull/3166 [3168]: https://github.com/bevyengine/bevy/pull/3168 [3171]: https://github.com/bevyengine/bevy/pull/3171 [3175]: https://github.com/bevyengine/bevy/pull/3175 [3178]: https://github.com/bevyengine/bevy/pull/3178 [3182]: https://github.com/bevyengine/bevy/pull/3182 [3186]: https://github.com/bevyengine/bevy/pull/3186 [3189]: https://github.com/bevyengine/bevy/pull/3189 [3192]: https://github.com/bevyengine/bevy/pull/3192 [3193]: https://github.com/bevyengine/bevy/pull/3193 [3200]: https://github.com/bevyengine/bevy/pull/3200 [3201]: https://github.com/bevyengine/bevy/pull/3201 [3202]: https://github.com/bevyengine/bevy/pull/3202 [3206]: https://github.com/bevyengine/bevy/pull/3206 [3207]: https://github.com/bevyengine/bevy/pull/3207 [3209]: https://github.com/bevyengine/bevy/pull/3209 [3236]: https://github.com/bevyengine/bevy/pull/3236 [3244]: https://github.com/bevyengine/bevy/pull/3244 [3257]: https://github.com/bevyengine/bevy/pull/3257 [3258]: https://github.com/bevyengine/bevy/pull/3258 [3260]: https://github.com/bevyengine/bevy/pull/3260 [3264]: https://github.com/bevyengine/bevy/pull/3264 [3268]: https://github.com/bevyengine/bevy/pull/3268 [3270]: https://github.com/bevyengine/bevy/pull/3270 [3271]: https://github.com/bevyengine/bevy/pull/3271 [3280]: https://github.com/bevyengine/bevy/pull/3280 [3281]: https://github.com/bevyengine/bevy/pull/3281 [3282]: https://github.com/bevyengine/bevy/pull/3282 [3286]: https://github.com/bevyengine/bevy/pull/3286 [3289]: https://github.com/bevyengine/bevy/pull/3289 [3290]: https://github.com/bevyengine/bevy/pull/3290 [3291]: https://github.com/bevyengine/bevy/pull/3291 [3296]: https://github.com/bevyengine/bevy/pull/3296 [3297]: https://github.com/bevyengine/bevy/pull/3297 [3304]: https://github.com/bevyengine/bevy/pull/3304 [3309]: https://github.com/bevyengine/bevy/pull/3309 [3316]: https://github.com/bevyengine/bevy/pull/3316 [3318]: https://github.com/bevyengine/bevy/pull/3318 [3320]: https://github.com/bevyengine/bevy/pull/3320 [3325]: https://github.com/bevyengine/bevy/pull/3325 [3330]: https://github.com/bevyengine/bevy/pull/3330 [3335]: https://github.com/bevyengine/bevy/pull/3335 [3336]: https://github.com/bevyengine/bevy/pull/3336 [3337]: https://github.com/bevyengine/bevy/pull/3337 [3343]: https://github.com/bevyengine/bevy/pull/3343 [3349]: https://github.com/bevyengine/bevy/pull/3349 [3364]: https://github.com/bevyengine/bevy/pull/3364 [3367]: https://github.com/bevyengine/bevy/pull/3367 [3369]: https://github.com/bevyengine/bevy/pull/3369 [3371]: https://github.com/bevyengine/bevy/pull/3371 [3375]: https://github.com/bevyengine/bevy/pull/3375 [3378]: https://github.com/bevyengine/bevy/pull/3378 [3381]: https://github.com/bevyengine/bevy/pull/3381 [3393]: https://github.com/bevyengine/bevy/pull/3393 [3395]: https://github.com/bevyengine/bevy/pull/3395 [3401]: https://github.com/bevyengine/bevy/pull/3401 [3411]: https://github.com/bevyengine/bevy/pull/3411 [3413]: https://github.com/bevyengine/bevy/pull/3413 [3415]: https://github.com/bevyengine/bevy/pull/3415 [3416]: https://github.com/bevyengine/bevy/pull/3416 [3420]: https://github.com/bevyengine/bevy/pull/3420 [3421]: https://github.com/bevyengine/bevy/pull/3421 [3426]: https://github.com/bevyengine/bevy/pull/3426 [3428]: https://github.com/bevyengine/bevy/pull/3428 [3438]: https://github.com/bevyengine/bevy/pull/3438 [3441]: https://github.com/bevyengine/bevy/pull/3441 [3443]: https://github.com/bevyengine/bevy/pull/3443 [3448]: https://github.com/bevyengine/bevy/pull/3448 [3452]: https://github.com/bevyengine/bevy/pull/3452 [3460]: https://github.com/bevyengine/bevy/pull/3460 [3461]: https://github.com/bevyengine/bevy/pull/3461 [3465]: https://github.com/bevyengine/bevy/pull/3465 [3466]: https://github.com/bevyengine/bevy/pull/3466 [3489]: https://github.com/bevyengine/bevy/pull/3489 [3490]: https://github.com/bevyengine/bevy/pull/3490 [3495]: https://github.com/bevyengine/bevy/pull/3495 [3498]: https://github.com/bevyengine/bevy/pull/3498 [3502]: https://github.com/bevyengine/bevy/pull/3502 [3506]: https://github.com/bevyengine/bevy/pull/3506 [3521]: https://github.com/bevyengine/bevy/pull/3521 [3534]: https://github.com/bevyengine/bevy/pull/3534 [3544]: https://github.com/bevyengine/bevy/pull/3544 [3545]: https://github.com/bevyengine/bevy/pull/3545 [3546]: https://github.com/bevyengine/bevy/pull/3546 [3549]: https://github.com/bevyengine/bevy/pull/3549 [3551]: https://github.com/bevyengine/bevy/pull/3551 [3553]: https://github.com/bevyengine/bevy/pull/3553 [3577]: https://github.com/bevyengine/bevy/pull/3577 [3581]: https://github.com/bevyengine/bevy/pull/3581 [c6]: https://github.com/cart/bevy/pull/6 [c24]: https://github.com/cart/bevy/pull/24 [c26]: https://github.com/cart/bevy/pull/26 ## Version 0.5.0 (2021-04-06) ### Added - [PBR Rendering][1554] - [PBR Textures][1632] - [HIDPI Text][1132] - [Rich text][1245] - [Wireframe Rendering Pipeline][562] - [Render Layers][1209] - [Add Sprite Flipping][1407] - [OrthographicProjection scaling mode + camera bundle refactoring][400] - [3D OrthographicProjection improvements + new example][1361] - [Flexible camera bindings][1689] - [Render text in 2D scenes][1122] - [`Text2d` render quality][1171] - [System sets and run criteria v2][1675] - [System sets and parallel executor v2][1144] - [Many-to-many system labels][1576] - [Non-string labels (#1423 continued)][1473] - [Make `EventReader` a `SystemParam`][1244] - [Add `EventWriter`][1575] - [Reliable change detection][1471] - [Redo State architecture][1424] - [`Query::get_unique`][1263] - [gltf: load normal and occlusion as linear textures][1762] - [Add separate brightness field to AmbientLight][1605] - [world coords to screen space][1258] - [Experimental Frustum Culling (for Sprites)][1492] - [Enable wgpu device limits][1544] - [bevy_render: add torus and capsule shape][1223] - [New mesh attribute: color][1194] - [Minimal change to support instanced rendering][1262] - [Add support for reading from mapped buffers][1274] - [Texture atlas format and conversion][1365] - [enable wgpu device features][547] - [Subpixel text positioning][1196] - [make more information available from loaded GLTF model][1020] - [use `Name` on node when loading a gltf file][1183] - [GLTF loader: support mipmap filters][1639] - [Add support for gltf::Material::unlit][1341] - [Implement `Reflect` for tuples up to length 12][1218] - [Process Asset File Extensions With Multiple Dots][1277] - [Update Scene Example to Use scn.ron File][1339] - [3d game example][1252] - [Add keyboard modifier example (#1656)][1657] - [Count number of times a repeating Timer wraps around in a tick][1112] - [recycle `Timer` refactor to duration.sparkles Add `Stopwatch` struct.][1151] - [add scene instance entity iteration][1058] - [Make `Commands` and `World` apis consistent][1703] - [Add `insert_children` and `push_children` to `EntityMut`][1728] - [Extend `AppBuilder` api with `add_system_set` and similar methods][1453] - [add labels and ordering for transform and parent systems in `POST_UPDATE` stage][1456] - [Explicit execution order ambiguities API][1469] - [Resolve (most) internal system ambiguities][1606] - [Change 'components' to 'bundles' where it makes sense semantically][1257] - [add `Flags` as a query to get flags of component][1172] - [Rename `add_resource` to `insert_resource`][1356] - [Update `init_resource` to not overwrite][1349] - [Enable dynamic mutable access to component data][1284] - [Get rid of `ChangedRes`][1313] - [impl `SystemParam` for `Option>` / `Option>`][1494] - [Add Window Resize Constraints][1409] - [Add basic file drag and drop support][1096] - [Modify Derive to allow unit structs for `RenderResources`.][1089] - [bevy_render: load .spv assets][1104] - [Expose wgpu backend in WgpuOptions and allow it to be configured from the environment][1042] - [updates on diagnostics (log + new diagnostics)][1085] - [enable change detection for labels][1155] - [Name component with fast comparisons][1109] - [Support for `!Send` tasks][1216] - [Add missing `spawn_local` method to `Scope` in the single threaded executor case][1266] - [Add bmp as a supported texture format][1081] - [Add an alternative winit runner that can be started when not on the main thread][1063] - [Added `use_dpi` setting to `WindowDescriptor`][1131] - [Implement `Copy` for `ElementState`][1154] - [Mutable mesh accessors: `indices_mut` and `attribute_mut`][1164] - [Add support for OTF fonts][1200] - [Add `from_xyz` to `Transform`][1212] - [Adding `copy_texture_to_buffer` and `copy_texture_to_texture`][1236] - [Added `set_minimized` and `set_position` to `Window`][1292] - [Example for 2D Frustum Culling][1503] - [Add remove resource to commands][1478] ### Changed - [Bevy ECS V2][1525] - [Fix Reflect serialization of tuple structs][1366] - [color spaces and representation][1572] - [Make vertex buffers optional][1485] - [add to lower case to make asset loading case insensitive][1427] - [Replace right/up/forward and counter parts with `local_x`/`local_y` and `local_z`][1476] - [Use valid keys to initialize `AHasher` in `FixedState`][1268] - [Change `Name` to take `Into` instead of `String`][1283] - [Update to wgpu-rs 0.7][542] - [Update glam to 0.13.0.][1550] - [use std clamp instead of Bevy's][1644] - [Make `Reflect` impls unsafe (`Reflect::any` must return `self`)][1679] ### Fixed - [convert grayscale images to rgb][1524] - [Glb textures should use bevy_render to load images][1454] - [Don't panic on error when loading assets][1286] - [Prevent ImageBundles from causing constant layout recalculations][1299] - [do not check for focus until cursor position has been set][1070] - [Fix lock order to remove the chance of deadlock][1121] - [Prevent double panic in the Drop of TaksPoolInner][1064] - [Ignore events when receiving unknown WindowId][1072] - [Fix potential bug when using multiple lights.][1055] - [remove panics when mixing UI and non UI entities in hierarchy][1180] - [fix label to load gltf scene][1204] - [fix repeated gamepad events][1221] - [Fix iOS touch location][1224] - [Don't panic if there's no index buffer and call draw][1229] - [Fix Bug in Asset Server Error Message Formatter][1340] - [add_stage now checks Stage existence][1346] - [Fix Un-Renamed add_resource Compile Error][1357] - [Fix Interaction not resetting to None sometimes][1315] - [Fix regression causing "flipped" sprites to be invisible][1399] - [revert default vsync mode to Fifo][1416] - [Fix missing paths in ECS SystemParam derive macro][1434] - [Fix staging buffer required size calculation (fixes #1056)][1509] [400]: https://github.com/bevyengine/bevy/pull/400 [542]: https://github.com/bevyengine/bevy/pull/542 [547]: https://github.com/bevyengine/bevy/pull/547 [562]: https://github.com/bevyengine/bevy/pull/562 [1020]: https://github.com/bevyengine/bevy/pull/1020 [1042]: https://github.com/bevyengine/bevy/pull/1042 [1055]: https://github.com/bevyengine/bevy/pull/1055 [1058]: https://github.com/bevyengine/bevy/pull/1058 [1063]: https://github.com/bevyengine/bevy/pull/1063 [1064]: https://github.com/bevyengine/bevy/pull/1064 [1070]: https://github.com/bevyengine/bevy/pull/1070 [1072]: https://github.com/bevyengine/bevy/pull/1072 [1081]: https://github.com/bevyengine/bevy/pull/1081 [1085]: https://github.com/bevyengine/bevy/pull/1085 [1089]: https://github.com/bevyengine/bevy/pull/1089 [1096]: https://github.com/bevyengine/bevy/pull/1096 [1104]: https://github.com/bevyengine/bevy/pull/1104 [1109]: https://github.com/bevyengine/bevy/pull/1109 [1112]: https://github.com/bevyengine/bevy/pull/1112 [1121]: https://github.com/bevyengine/bevy/pull/1121 [1122]: https://github.com/bevyengine/bevy/pull/1122 [1131]: https://github.com/bevyengine/bevy/pull/1131 [1132]: https://github.com/bevyengine/bevy/pull/1132 [1144]: https://github.com/bevyengine/bevy/pull/1144 [1151]: https://github.com/bevyengine/bevy/pull/1151 [1154]: https://github.com/bevyengine/bevy/pull/1154 [1155]: https://github.com/bevyengine/bevy/pull/1155 [1164]: https://github.com/bevyengine/bevy/pull/1164 [1171]: https://github.com/bevyengine/bevy/pull/1171 [1172]: https://github.com/bevyengine/bevy/pull/1172 [1180]: https://github.com/bevyengine/bevy/pull/1180 [1183]: https://github.com/bevyengine/bevy/pull/1183 [1194]: https://github.com/bevyengine/bevy/pull/1194 [1196]: https://github.com/bevyengine/bevy/pull/1196 [1200]: https://github.com/bevyengine/bevy/pull/1200 [1204]: https://github.com/bevyengine/bevy/pull/1204 [1209]: https://github.com/bevyengine/bevy/pull/1209 [1212]: https://github.com/bevyengine/bevy/pull/1212 [1216]: https://github.com/bevyengine/bevy/pull/1216 [1218]: https://github.com/bevyengine/bevy/pull/1218 [1221]: https://github.com/bevyengine/bevy/pull/1221 [1223]: https://github.com/bevyengine/bevy/pull/1223 [1224]: https://github.com/bevyengine/bevy/pull/1224 [1229]: https://github.com/bevyengine/bevy/pull/1229 [1236]: https://github.com/bevyengine/bevy/pull/1236 [1244]: https://github.com/bevyengine/bevy/pull/1244 [1245]: https://github.com/bevyengine/bevy/pull/1245 [1252]: https://github.com/bevyengine/bevy/pull/1252 [1257]: https://github.com/bevyengine/bevy/pull/1257 [1258]: https://github.com/bevyengine/bevy/pull/1258 [1262]: https://github.com/bevyengine/bevy/pull/1262 [1263]: https://github.com/bevyengine/bevy/pull/1263 [1266]: https://github.com/bevyengine/bevy/pull/1266 [1268]: https://github.com/bevyengine/bevy/pull/1268 [1274]: https://github.com/bevyengine/bevy/pull/1274 [1277]: https://github.com/bevyengine/bevy/pull/1277 [1283]: https://github.com/bevyengine/bevy/pull/1283 [1284]: https://github.com/bevyengine/bevy/pull/1284 [1286]: https://github.com/bevyengine/bevy/pull/1286 [1292]: https://github.com/bevyengine/bevy/pull/1292 [1299]: https://github.com/bevyengine/bevy/pull/1299 [1313]: https://github.com/bevyengine/bevy/pull/1313 [1315]: https://github.com/bevyengine/bevy/pull/1315 [1339]: https://github.com/bevyengine/bevy/pull/1339 [1340]: https://github.com/bevyengine/bevy/pull/1340 [1341]: https://github.com/bevyengine/bevy/pull/1341 [1346]: https://github.com/bevyengine/bevy/pull/1346 [1349]: https://github.com/bevyengine/bevy/pull/1349 [1356]: https://github.com/bevyengine/bevy/pull/1356 [1357]: https://github.com/bevyengine/bevy/pull/1357 [1361]: https://github.com/bevyengine/bevy/pull/1361 [1365]: https://github.com/bevyengine/bevy/pull/1365 [1366]: https://github.com/bevyengine/bevy/pull/1366 [1399]: https://github.com/bevyengine/bevy/pull/1399 [1407]: https://github.com/bevyengine/bevy/pull/1407 [1409]: https://github.com/bevyengine/bevy/pull/1409 [1416]: https://github.com/bevyengine/bevy/pull/1416 [1424]: https://github.com/bevyengine/bevy/pull/1424 [1427]: https://github.com/bevyengine/bevy/pull/1427 [1434]: https://github.com/bevyengine/bevy/pull/1434 [1453]: https://github.com/bevyengine/bevy/pull/1453 [1454]: https://github.com/bevyengine/bevy/pull/1454 [1456]: https://github.com/bevyengine/bevy/pull/1456 [1469]: https://github.com/bevyengine/bevy/pull/1469 [1471]: https://github.com/bevyengine/bevy/pull/1471 [1473]: https://github.com/bevyengine/bevy/pull/1473 [1476]: https://github.com/bevyengine/bevy/pull/1476 [1478]: https://github.com/bevyengine/bevy/pull/1478 [1485]: https://github.com/bevyengine/bevy/pull/1485 [1492]: https://github.com/bevyengine/bevy/pull/1492 [1494]: https://github.com/bevyengine/bevy/pull/1494 [1503]: https://github.com/bevyengine/bevy/pull/1503 [1509]: https://github.com/bevyengine/bevy/pull/1509 [1524]: https://github.com/bevyengine/bevy/pull/1524 [1525]: https://github.com/bevyengine/bevy/pull/1525 [1544]: https://github.com/bevyengine/bevy/pull/1544 [1550]: https://github.com/bevyengine/bevy/pull/1550 [1554]: https://github.com/bevyengine/bevy/pull/1554 [1572]: https://github.com/bevyengine/bevy/pull/1572 [1575]: https://github.com/bevyengine/bevy/pull/1575 [1576]: https://github.com/bevyengine/bevy/pull/1576 [1605]: https://github.com/bevyengine/bevy/pull/1605 [1606]: https://github.com/bevyengine/bevy/pull/1606 [1632]: https://github.com/bevyengine/bevy/pull/1632 [1639]: https://github.com/bevyengine/bevy/pull/1639 [1644]: https://github.com/bevyengine/bevy/pull/1644 [1657]: https://github.com/bevyengine/bevy/pull/1657 [1675]: https://github.com/bevyengine/bevy/pull/1675 [1679]: https://github.com/bevyengine/bevy/pull/1679 [1689]: https://github.com/bevyengine/bevy/pull/1689 [1703]: https://github.com/bevyengine/bevy/pull/1703 [1728]: https://github.com/bevyengine/bevy/pull/1728 [1762]: https://github.com/bevyengine/bevy/pull/1762 ## Version 0.4.0 (2020-12-19) ### Added - [add bevymark benchmark example][273] - [gltf: support camera and fix hierarchy][772] - [Add tracing spans to schedules, stages, systems][789] - [add example that represents contributors as bevy icons][801] - [Add received character][805] - [Add bevy_dylib to force dynamic linking of bevy][808] - [Added RenderPass::set_scissor_rect][815] - [`bevy_log`][836] - Adds logging functionality as a Plugin. - Changes internal logging to work with the new implementation. - [cross-platform main function][847] - [Controllable ambient light color][852] - Added a resource to change the current ambient light color for PBR. - [Added more basic color constants][859] - [Add box shape][883] - [Expose an EventId for events][894] - [System Inputs, Outputs, and Chaining][876] - [Expose an `EventId` for events][894] - [Added `set_cursor_position` to `Window`][917] - [Added new Bevy reflection system][926] - Replaces the properties system - [Add support for Apple Silicon][928] - [Live reloading of shaders][937] - [Store mouse cursor position in Window][940] - [Add removal_detection example][945] - [Additional vertex attribute value types][946] - [Added WindowFocused event][956] - [Tracing chrome span names][979] - [Allow windows to be maximized][1004] - [GLTF: load default material][1016] - [can spawn a scene from a ChildBuilder, or directly set its parent when spawning it][1026] - [add ability to load `.dds`, `.tga`, and `.jpeg` texture formats][1038] - [add ability to provide custom a `AssetIo` implementation][1037] ### Changed - [delegate layout reflection to RenderResourceContext][691] - [Fall back to remove components one by one when failing to remove a bundle][719] - [Port hecs derive macro improvements][761] - [Use glyph_brush_layout and add text alignment support][765] - [upgrade glam and hexasphere][791] - [Flexible ECS Params][798] - [Make Timer.tick return &Self][820] - [FileAssetIo includes full path on error][821] - [Removed ECS query APIs that could easily violate safety from the public interface][829] - [Changed Query filter API to be easier to understand][834] - [bevy_render: delegate buffer aligning to render_resource_context][842] - [wasm32: non-spirv shader specialization][843] - [Renamed XComponents to XBundle][863] - [Check for conflicting system resource parameters][864] - [Tweaks to TextureAtlasBuilder.finish()][887] - [do not spend time drawing text with is_visible = false][893] - [Extend the Texture asset type to support 3D data][903] - [Breaking changes to timer API][914] - Created getters and setters rather than exposing struct members. - [Removed timer auto-ticking system][931] - Added an example of how to tick timers manually. - [When a task scope produces <= 1 task to run, run it on the calling thread immediately][932] - [Breaking changes to Time API][934] - Created getters to get `Time` state and made members private. - Modifying `Time`'s values directly is no longer possible outside of bevy. - [Use `mailbox` instead of `fifo` for vsync on supported systems][920] - [switch winit size to logical to be dpi independent][947] - [Change bevy_input::Touch API to match similar APIs][952] - [Run parent-update and transform-propagation during the "post-startup" stage (instead of "startup")][955] - [Renderer Optimization Round 1][958] - [Change`TextureAtlasBuilder` into expected Builder conventions][969] - [Optimize Text rendering / SharedBuffers][972] - [hidpi swap chains][973] - [optimize asset gpu data transfer][987] - [naming coherence for cameras][995] - [Schedule v2][1021] - [Use shaderc for aarch64-apple-darwin][1027] - [update `Window`'s `width` & `height` methods to return `f32`][1033] - [Break out Visible component from Draw][1034] - Users setting `Draw::is_visible` or `Draw::is_transparent` should now set `Visible::is_visible` and `Visible::is_transparent` - [`winit` upgraded from version 0.23 to version 0.24][1043] - [set is_transparent to true by default for UI bundles][1071] ### Fixed - [Fixed typos in KeyCode identifiers][857] - [Remove redundant texture copies in TextureCopyNode][871] - [Fix a deadlock that can occur when using scope() on ComputeTaskPool from within a system][892] - [Don't draw text that isn't visible][893] - [Use `instant::Instant` for WASM compatibility][895] - [Fix pixel format conversion in bevy_gltf][897] - [Fixed duplicated children when spawning a Scene][904] - [Corrected behaviour of the UI depth system][905] - [Allow despawning of hierarchies in threadlocal systems][908] - [Fix `RenderResources` index slicing][948] - [Run parent-update and transform-propagation during the "post-startup" stage][955] - [Fix collision detection by comparing abs() penetration depth][966] - [deal with rounding issue when creating the swap chain][997] - [only update components for entities in map][1023] - [Don't panic when attempting to set shader defs from an asset that hasn't loaded yet][1035] [273]: https://github.com/bevyengine/bevy/pull/273 [691]: https://github.com/bevyengine/bevy/pull/691 [719]: https://github.com/bevyengine/bevy/pull/719 [761]: https://github.com/bevyengine/bevy/pull/761 [765]: https://github.com/bevyengine/bevy/pull/765 [772]: https://github.com/bevyengine/bevy/pull/772 [789]: https://github.com/bevyengine/bevy/pull/789 [791]: https://github.com/bevyengine/bevy/pull/791 [798]: https://github.com/bevyengine/bevy/pull/798 [801]: https://github.com/bevyengine/bevy/pull/801 [805]: https://github.com/bevyengine/bevy/pull/805 [808]: https://github.com/bevyengine/bevy/pull/808 [815]: https://github.com/bevyengine/bevy/pull/815 [820]: https://github.com/bevyengine/bevy/pull/820 [821]: https://github.com/bevyengine/bevy/pull/821 [829]: https://github.com/bevyengine/bevy/pull/829 [834]: https://github.com/bevyengine/bevy/pull/834 [836]: https://github.com/bevyengine/bevy/pull/836 [842]: https://github.com/bevyengine/bevy/pull/842 [843]: https://github.com/bevyengine/bevy/pull/843 [847]: https://github.com/bevyengine/bevy/pull/847 [852]: https://github.com/bevyengine/bevy/pull/852 [857]: https://github.com/bevyengine/bevy/pull/857 [859]: https://github.com/bevyengine/bevy/pull/859 [863]: https://github.com/bevyengine/bevy/pull/863 [864]: https://github.com/bevyengine/bevy/pull/864 [871]: https://github.com/bevyengine/bevy/pull/871 [876]: https://github.com/bevyengine/bevy/pull/876 [883]: https://github.com/bevyengine/bevy/pull/883 [887]: https://github.com/bevyengine/bevy/pull/887 [892]: https://github.com/bevyengine/bevy/pull/892 [893]: https://github.com/bevyengine/bevy/pull/893 [894]: https://github.com/bevyengine/bevy/pull/894 [895]: https://github.com/bevyengine/bevy/pull/895 [897]: https://github.com/bevyengine/bevy/pull/897 [903]: https://github.com/bevyengine/bevy/pull/903 [904]: https://github.com/bevyengine/bevy/pull/904 [905]: https://github.com/bevyengine/bevy/pull/905 [908]: https://github.com/bevyengine/bevy/pull/908 [914]: https://github.com/bevyengine/bevy/pull/914 [917]: https://github.com/bevyengine/bevy/pull/917 [920]: https://github.com/bevyengine/bevy/pull/920 [926]: https://github.com/bevyengine/bevy/pull/926 [928]: https://github.com/bevyengine/bevy/pull/928 [931]: https://github.com/bevyengine/bevy/pull/931 [932]: https://github.com/bevyengine/bevy/pull/932 [934]: https://github.com/bevyengine/bevy/pull/934 [937]: https://github.com/bevyengine/bevy/pull/937 [940]: https://github.com/bevyengine/bevy/pull/940 [945]: https://github.com/bevyengine/bevy/pull/945 [946]: https://github.com/bevyengine/bevy/pull/946 [947]: https://github.com/bevyengine/bevy/pull/947 [948]: https://github.com/bevyengine/bevy/pull/948 [952]: https://github.com/bevyengine/bevy/pull/952 [955]: https://github.com/bevyengine/bevy/pull/955 [956]: https://github.com/bevyengine/bevy/pull/956 [958]: https://github.com/bevyengine/bevy/pull/958 [966]: https://github.com/bevyengine/bevy/pull/966 [969]: https://github.com/bevyengine/bevy/pull/969 [972]: https://github.com/bevyengine/bevy/pull/972 [973]: https://github.com/bevyengine/bevy/pull/973 [979]: https://github.com/bevyengine/bevy/pull/979 [987]: https://github.com/bevyengine/bevy/pull/987 [995]: https://github.com/bevyengine/bevy/pull/995 [997]: https://github.com/bevyengine/bevy/pull/997 [1004]: https://github.com/bevyengine/bevy/pull/1004 [1016]: https://github.com/bevyengine/bevy/pull/1016 [1021]: https://github.com/bevyengine/bevy/pull/1021 [1023]: https://github.com/bevyengine/bevy/pull/1023 [1026]: https://github.com/bevyengine/bevy/pull/1026 [1027]: https://github.com/bevyengine/bevy/pull/1027 [1033]: https://github.com/bevyengine/bevy/pull/1033 [1034]: https://github.com/bevyengine/bevy/pull/1034 [1035]: https://github.com/bevyengine/bevy/pull/1035 [1037]: https://github.com/bevyengine/bevy/pull/1037 [1038]: https://github.com/bevyengine/bevy/pull/1038 [1043]: https://github.com/bevyengine/bevy/pull/1043 [1071]: https://github.com/bevyengine/bevy/pull/1071 ## Version 0.3.0 (2020-11-03) ### Added - [Touch Input][696] - [iOS XCode Project][539] - [Android Example and use bevy-glsl-to-spirv 0.2.0][740] - [Introduce Mouse capture API][679] - [`bevy_input::touch`: implement touch input][696] - [D-pad support on MacOS][653] - [Support for Android file system][723] - [app: PluginGroups and DefaultPlugins][744] - `PluginGroup` is a collection of plugins where each plugin can be enabled or disabled. - [Support to get gamepad button/trigger values using `Axis`][683] - [Expose Winit decorations][627] - [Enable changing window settings at runtime][644] - [Expose a pointer of EventLoopProxy to process custom messages][674] - [Add a way to specify padding/ margins between sprites in a TextureAtlas][460] - [Add `bevy_ecs::Commands::remove` for bundles][579] - [impl `Default` for `TextureFormat`][675] - [Expose current_entity in ChildBuilder][595] - [`AppBuilder::add_thread_local_resource`][671] - [`Commands::write_world_boxed` takes a pre-boxed world writer to the ECS's command queue][661] - [`FrameTimeDiagnosticsPlugin` now shows "frame count" in addition to "frame time" and "fps"][678] - [Add hierarchy example][565] - [`WgpuPowerOptions` for choosing between low power, high performance, and adaptive power][397] - Derive `Debug` for more types: [#597][597], [#632][632] - Index buffer specialization - [Allows the use of U32 indices in Mesh index buffers in addition to the usual U16 indices][568] - [Switch to u32 indices by default][572] - More instructions for system dependencies - [Add `systemd-devel` for Fedora Linux dependencies][528] - [Add `libudev-dev` to Ubuntu dependencies][538] - [Add Void Linux to linux dependencies file][645] - [WSL2 instructions][727] - [Suggest `-Zrun-dsymutil-no` for faster compilation on MacOS][552] ### Changed - [ecs: ergonomic query.iter(), remove locks, add QuerySets][741] - `query.iter()` is now a real iterator! - `QuerySet` allows working with conflicting queries and is checked at compile-time. - [Rename `query.entity()` and `query.get()`][752] - `query.get::(entity)` is now `query.get_component::(entity)` - `query.entity(entity)` is now `query.get(entity)` - [Asset system rework and GLTF scene loading][693] - [Introduces WASM implementation of `AssetIo`][703] - [Move transform data out of Mat4][596] - [Separate gamepad state code from gamepad event code and other customizations][700] - [gamepad: expose raw and filtered gamepad events][711] - [Do not depend on `spirv-reflect` on `wasm32` target][689] - [Move dynamic plugin loading to its own optional crate][544] - [Add field to `WindowDescriptor` on wasm32 targets to optionally provide an existing canvas element as winit window][515] - [Adjust how `ArchetypeAccess` tracks mutable & immutable deps][660] - [Use `FnOnce` in `Commands` and `ChildBuilder` where possible][535] - [Runners explicitly call `App.initialize()`][690] - [sRGB awareness for `Color`][616] - Color is now assumed to be provided in the non-linear sRGB colorspace. Constructors such as `Color::rgb` and `Color::rgba` will be converted to linear sRGB. - New methods `Color::rgb_linear` and `Color::rgba_linear` will accept colors already in linear sRGB (the old behavior) - Individual color-components must now be accessed through setters and getters. - [`Mesh` overhaul with custom vertex attributes][599] - Any vertex attribute can now be added over `mesh.attributes.insert()`. - See `example/shader/mesh_custom_attribute.rs` - Removed `VertexAttribute`, `Vertex`, `AsVertexBufferDescriptor`. - For missing attributes (requested by shader, but not defined by mesh), Bevy will provide a zero-filled fallback buffer. - Despawning an entity multiple times causes a debug-level log message to be emitted instead of a panic: [#649][649], [#651][651] - [Migrated to Rodio 0.12][692] - New method of playing audio can be found in the examples. - Added support for inserting custom initial values for `Local` system resources [#745][745] ### Fixed - [Properly update bind group ids when setting dynamic bindings][560] - [Properly exit the app on AppExit event][610] - [Fix FloatOrd hash being different for different NaN values][618] - [Fix Added behavior for QueryOne get][543] - [Update camera_system to fix issue with late camera addition][488] - [Register `IndexFormat` as a property][664] - [Fix breakout example bug][685] - [Fix PreviousParent lag by merging parent update systems][713] - [Fix bug of connection event of gamepad at startup][730] - [Fix wavy text][725] [397]: https://github.com/bevyengine/bevy/pull/397 [460]: https://github.com/bevyengine/bevy/pull/460 [488]: https://github.com/bevyengine/bevy/pull/488 [515]: https://github.com/bevyengine/bevy/pull/515 [528]: https://github.com/bevyengine/bevy/pull/528 [535]: https://github.com/bevyengine/bevy/pull/535 [538]: https://github.com/bevyengine/bevy/pull/538 [539]: https://github.com/bevyengine/bevy/pull/539 [543]: https://github.com/bevyengine/bevy/pull/543 [544]: https://github.com/bevyengine/bevy/pull/544 [552]: https://github.com/bevyengine/bevy/pull/552 [560]: https://github.com/bevyengine/bevy/pull/560 [565]: https://github.com/bevyengine/bevy/pull/565 [568]: https://github.com/bevyengine/bevy/pull/568 [572]: https://github.com/bevyengine/bevy/pull/572 [579]: https://github.com/bevyengine/bevy/pull/579 [595]: https://github.com/bevyengine/bevy/pull/595 [596]: https://github.com/bevyengine/bevy/pull/596 [597]: https://github.com/bevyengine/bevy/pull/597 [599]: https://github.com/bevyengine/bevy/pull/599 [610]: https://github.com/bevyengine/bevy/pull/610 [616]: https://github.com/bevyengine/bevy/pull/616 [618]: https://github.com/bevyengine/bevy/pull/618 [627]: https://github.com/bevyengine/bevy/pull/627 [632]: https://github.com/bevyengine/bevy/pull/632 [644]: https://github.com/bevyengine/bevy/pull/644 [645]: https://github.com/bevyengine/bevy/pull/645 [649]: https://github.com/bevyengine/bevy/pull/649 [651]: https://github.com/bevyengine/bevy/pull/651 [653]: https://github.com/bevyengine/bevy/pull/653 [660]: https://github.com/bevyengine/bevy/pull/660 [661]: https://github.com/bevyengine/bevy/pull/661 [664]: https://github.com/bevyengine/bevy/pull/664 [671]: https://github.com/bevyengine/bevy/pull/671 [674]: https://github.com/bevyengine/bevy/pull/674 [675]: https://github.com/bevyengine/bevy/pull/675 [678]: https://github.com/bevyengine/bevy/pull/678 [679]: https://github.com/bevyengine/bevy/pull/679 [683]: https://github.com/bevyengine/bevy/pull/683 [685]: https://github.com/bevyengine/bevy/pull/685 [689]: https://github.com/bevyengine/bevy/pull/689 [690]: https://github.com/bevyengine/bevy/pull/690 [692]: https://github.com/bevyengine/bevy/pull/692 [693]: https://github.com/bevyengine/bevy/pull/693 [696]: https://github.com/bevyengine/bevy/pull/696 [700]: https://github.com/bevyengine/bevy/pull/700 [703]: https://github.com/bevyengine/bevy/pull/703 [711]: https://github.com/bevyengine/bevy/pull/711 [713]: https://github.com/bevyengine/bevy/pull/713 [723]: https://github.com/bevyengine/bevy/pull/723 [725]: https://github.com/bevyengine/bevy/pull/725 [727]: https://github.com/bevyengine/bevy/pull/727 [730]: https://github.com/bevyengine/bevy/pull/730 [740]: https://github.com/bevyengine/bevy/pull/740 [741]: https://github.com/bevyengine/bevy/pull/741 [744]: https://github.com/bevyengine/bevy/pull/744 [745]: https://github.com/bevyengine/bevy/pull/745 [752]: https://github.com/bevyengine/bevy/pull/752 ## Version 0.2.1 (2020-9-20) ### Fixed - [Remove UI queue print][521] - [Use async executor 1.3.0][526] [521]: https://github.com/bevyengine/bevy/pull/521 [526]: https://github.com/bevyengine/bevy/pull/526 ## Version 0.2.0 (2020-9-19) ### Added - [Task System for Bevy][384] - Replaces rayon with a custom designed task system that consists of several "TaskPools". - Exports `IOTaskPool`, `ComputePool`, and `AsyncComputePool` in `bevy_tasks` crate. - [Parallel queries for distributing work over with the `ParallelIterator` trait.][292] - e.g. `query.iter().par_iter(batch_size).for_each(/* ... */)` - [Added gamepad support using Gilrs][280] - [Implement WASM support for bevy_winit][503] - [Create winit canvas under WebAssembly][506] - [Implement single threaded task scheduler for WebAssembly][496] - [Support for binary glTF (.glb).][271] - [Support for `Or` in ECS queries.][358] - [Added methods `unload()` and `unload_sync()` on `SceneSpawner` for unloading scenes.][339]. - [Custom rodio source for audio.][145] - `AudioOuput` is now able to play anything `Decodable`. - [`Color::hex`][362] for creating `Color` from string hex values. - Accepts the forms RGB, RGBA, RRGGBB, and RRGGBBAA. - [`Color::rgb_u8` and `Color::rgba_u8`.][381] - [Added `bevy_render::pass::ClearColor` to prelude.][396] - [`SpriteResizeMode` may choose how `Sprite` resizing should be handled. `Automatic` by default.][430] - [Added methods on `Input`][428] for iterator access to keys. - `get_pressed()`, `get_just_pressed()`, `get_just_released()` - [Derived `Copy` for `MouseScrollUnit`.][270] - [Derived `Clone` for UI component bundles.][390] - [Some examples of documentation][338] - [Update docs for Updated, Changed and Mutated][451] - Tips for faster builds on macOS: [#312][312], [#314][314], [#433][433] - Added and documented cargo features - [Created document `docs/cargo_features.md`.][249] - [Added features for x11 and wayland display servers.][249] - [and added a feature to disable libloading.][363] (helpful for WASM support) - Added more instructions for Linux dependencies - [Arch / Manjaro][275], [NixOS][290], [Ubuntu][463] and [Solus][331] - [Provide shell.nix for easier compiling with nix-shell][491] - [Add `AppBuilder::add_startup_stage_|before/after`][505] ### Changed - [Transform rewrite][374] - [Use generational entity ids and other optimizations][504] - [Optimize transform systems to only run on changes.][417] - [Send an AssetEvent when modifying using `get_id_mut`][323] - [Rename `Assets::get_id_mut` -> `Assets::get_with_id_mut`][332] - [Support multiline text in `DrawableText`][183] - [iOS: use shaderc-rs for glsl to spirv compilation][324] - [Changed the default node size to Auto instead of Undefined to match the Stretch implementation.][304] - [Load assets from root path when loading directly][478] - [Add `render` feature][485], which makes the entire render pipeline optional. ### Fixed - [Properly track added and removed RenderResources in RenderResourcesNode.][361] - Fixes issues where entities vanished or changed color when new entities were spawned/despawned. - [Fixed sprite clipping at same depth][385] - Transparent sprites should no longer clip. - [Check asset path existence][345] - [Fixed deadlock in hot asset reloading][376] - [Fixed hot asset reloading on Windows][394] - [Allow glTFs to be loaded that don't have uvs and normals][406] - [Fixed archetypes_generation being incorrectly updated for systems][383] - [Remove child from parent when it is despawned][386] - [Initialize App.schedule systems when running the app][444] - [Fix missing asset info path for synchronous loading][486] - [fix font atlas overflow][495] - [do not assume font handle is present in assets][490] ### Internal Improvements - Many improvements to Bevy's CI [#325][325], [#349][349], [#357][357], [#373][373], [#423][423] [145]: https://github.com/bevyengine/bevy/pull/145 [183]: https://github.com/bevyengine/bevy/pull/183 [249]: https://github.com/bevyengine/bevy/pull/249 [270]: https://github.com/bevyengine/bevy/pull/270 [271]: https://github.com/bevyengine/bevy/pull/271 [275]: https://github.com/bevyengine/bevy/pull/275 [280]: https://github.com/bevyengine/bevy/pull/280 [290]: https://github.com/bevyengine/bevy/pull/290 [292]: https://github.com/bevyengine/bevy/pull/292 [304]: https://github.com/bevyengine/bevy/pull/304 [312]: https://github.com/bevyengine/bevy/pull/312 [314]: https://github.com/bevyengine/bevy/pull/314 [323]: https://github.com/bevyengine/bevy/pull/323 [324]: https://github.com/bevyengine/bevy/pull/324 [325]: https://github.com/bevyengine/bevy/pull/325 [331]: https://github.com/bevyengine/bevy/pull/331 [332]: https://github.com/bevyengine/bevy/pull/332 [338]: https://github.com/bevyengine/bevy/pull/332 [345]: https://github.com/bevyengine/bevy/pull/345 [349]: https://github.com/bevyengine/bevy/pull/349 [357]: https://github.com/bevyengine/bevy/pull/357 [358]: https://github.com/bevyengine/bevy/pull/358 [361]: https://github.com/bevyengine/bevy/pull/361 [362]: https://github.com/bevyengine/bevy/pull/362 [363]: https://github.com/bevyengine/bevy/pull/363 [373]: https://github.com/bevyengine/bevy/pull/373 [374]: https://github.com/bevyengine/bevy/pull/374 [376]: https://github.com/bevyengine/bevy/pull/376 [381]: https://github.com/bevyengine/bevy/pull/381 [383]: https://github.com/bevyengine/bevy/pull/383 [384]: https://github.com/bevyengine/bevy/pull/384 [385]: https://github.com/bevyengine/bevy/pull/385 [386]: https://github.com/bevyengine/bevy/pull/386 [390]: https://github.com/bevyengine/bevy/pull/390 [394]: https://github.com/bevyengine/bevy/pull/394 [396]: https://github.com/bevyengine/bevy/pull/396 [339]: https://github.com/bevyengine/bevy/pull/339 [406]: https://github.com/bevyengine/bevy/pull/406 [417]: https://github.com/bevyengine/bevy/pull/417 [423]: https://github.com/bevyengine/bevy/pull/423 [428]: https://github.com/bevyengine/bevy/pull/428 [430]: https://github.com/bevyengine/bevy/pull/430 [433]: https://github.com/bevyengine/bevy/pull/433 [444]: https://github.com/bevyengine/bevy/pull/444 [451]: https://github.com/bevyengine/bevy/pull/451 [463]: https://github.com/bevyengine/bevy/pull/463 [478]: https://github.com/bevyengine/bevy/pull/478 [485]: https://github.com/bevyengine/bevy/pull/485 [486]: https://github.com/bevyengine/bevy/pull/486 [490]: https://github.com/bevyengine/bevy/pull/490 [491]: https://github.com/bevyengine/bevy/pull/491 [495]: https://github.com/bevyengine/bevy/pull/495 [496]: https://github.com/bevyengine/bevy/pull/496 [503]: https://github.com/bevyengine/bevy/pull/503 [504]: https://github.com/bevyengine/bevy/pull/504 [505]: https://github.com/bevyengine/bevy/pull/505 [506]: https://github.com/bevyengine/bevy/pull/506 ## Version 0.1.3 (2020-8-22) ## Version 0.1.2 (2020-8-10) ## Version 0.1.1 (2020-8-10) ## Version 0.1.0 (2020-8-10)