While we try to keep the Unreleased changes updated, it is often behind master and does not include
all merged pull requests. To see a list of all changes since the latest release, you may compare
master using the git tags for releases.
For example,
https://github.com/bevyengine/bevy/compare/v0.2.1...master
to view all changes since the 0.2.1 release.
- Introduce Mouse capture API
bevy_input::touch: implement touch input- D-pad support on MacOS
- Support to get gamepad button/trigger values using
Axis<GamepadButton> - Expose Winit decorations
- Enable changing window settings at runtime
- Expose a pointer of EventLoopProxy to process custom messages
- Add a way to specify padding/ margins between sprites in a TextureAtlas
- Add remove bundle to
bevy_ecs::Commands - impl
DefaultforTextureFormat - Expose current_entity in ChildBuilder
AppBuilder::add_thread_local_resourceCommands::write_world_boxedtakes a pre-boxed world writer to the ECS's command queueFrameTimeDiagnosticsPluginnow shows "frame count" in addition to "frame time" and "fps"- Add hierarchy example
WgpuPowerOptionsfor choosing between low power, high performance, and adaptive power- Derive
Debugfor more types: #597, #632 - Index buffer specialization
- More instructions for system dependences
- Suggest
-Zrun-dsymutil-nofor faster compilation on MacOS
- Asset system rework and GLTF scene loading
- Introduces WASM implementation of
AssetIo - Move transform data out of Mat4
- Separate gamepad state code from gamepad event code and other customizations
- gamepad: expose raw and filtered gamepad events
- Do not depend on
spirv-reflectonwasm32target - Move dynamic plugin loading to its own optional crate
- Add field to
WindowDescriptoron wasm32 targets to optionally provide an existing canvas element as winit window - Adjust how
ArchetypeAccesstracks mutable & immutable deps - Use
FnOnceinCommandsandChildBuilderwhere possible - Runners explicitly call
App.initialize() - sRGB awareness for
Color- Color is now assumed to be provided in the non-linear sRGB colorspace, and constructors such as
Color::rgbandColor::rgbawill be converted to linear sRGB under-the-hood. - This allows drop-in use of colors from most applications.
- New methods
Color::rgb_linearandColor::rgba_linearwill accept colors already in linear sRGB (the old behavior) - Individual color-components must now be accessed through setters and getters:
.r,.g,.b,.a,.set_r,.set_g,.set_b,.set_a, and the corresponding methods with the*_linearsuffix.
- Color is now assumed to be provided in the non-linear sRGB colorspace, and constructors such as
- Despawning an entity multiple times causes a debug-level log message to be emitted instead of a panic: #649, #651
- Migrated to Rodio 0.12
- Playing an mp3 no longer sometimes panics in debug mode
- New method of playing audio can be found in the audio example (an intermediary
Audiostruct is used instead ofAudioOutputdirectly)
- Properly update bind group ids when setting dynamic bindings
- Properly exit the app on AppExit event
- Fix FloatOrd hash being different for different NaN values
- Fix Added behavior for QueryOne get
- Update camera_system to fix issue with late camera addition
- Register
IndexFormatas a property - Fix breakout example bug
- Task System for Bevy
- Replaces rayon with a custom designed task system that consists of several "TaskPools".
- Exports
IOTaskPool,ComputePool, andAsyncComputePoolinbevy_taskscrate.
- Parallel queries for distributing work over with the
ParallelIteratortrait.- e.g.
query.iter().par_iter(batch_size).for_each(/* ... */)
- e.g.
- Added gamepad support using Gilrs
- Implement WASM support for bevy_winit
- Create winit canvas under WebAssembly
- Implement single threaded task scheduler for WebAssembly
- Support for binary glTF (.glb).
- Support for
Orin ECS queries. - Added methods
unload()andunload_sync()onSceneSpawnerfor unloading scenes.. - Custom rodio source for audio.
AudioOuputis now able to play anythingDecodable.
Color::hexfor creatingColorfrom string hex values.- Accepts the forms RGB, RGBA, RRGGBB, and RRGGBBAA.
Color::rgb_u8andColor::rgba_u8.- Added
bevy_render::pass::ClearColorto prelude. SpriteResizeModemay choose howSpriteresizing should be handled.Automaticby default.- Added methods on
Input<T>for iterator access to keys.get_pressed(),get_just_pressed(),get_just_released()
- Derived
CopyforMouseScrollUnit. - Derived
Clonefor UI component bundles. - Some examples of documentation
- Update docs for Updated, Changed and Mutated
- Tips for faster builds on macOS: #312, #314, #433
- Added and documented cargo features
- Added more instructions for Linux dependencies
- Arch / Manjaro, NixOS, Ubuntu and Solus
- Provide shell.nix for easier compiling with nix-shell
- Add
AppBuilder::add_startup_stage_|before/after
- Transform rewrite
- Use generational entity ids and other optimizations
- Optimize transform systems to only run on changes.
- Send an AssetEvent when modifying using
get_id_mut - Rename
Assets::get_id_mut->Assets::get_with_id_mut - Support multiline text in
DrawableText - iOS: use shaderc-rs for glsl to spirv compilation
- Changed the default node size to Auto instead of Undefined to match the Stretch implementation.
- Load assets from root path when loading directly
- Add
renderfeature, which makes the entire render pipeline optional.
- Properly track added and removed RenderResources in RenderResourcesNode.
- Fixes issues where entities vanished or changed color when new entities were spawned/despawned.
- Fixed sprite clipping at same depth
- Transparent sprites should no longer clip.
- Check asset path existence
- Fixed deadlock in hot asset reloading
- Fixed hot asset reloading on Windows
- Allow glTFs to be loaded that don't have uvs and normals
- Fixed archetypes_generation being incorrectly updated for systems
- Remove child from parent when it is despawned
- Initialize App.schedule systems when running the app
- Fix missing asset info path for synchronous loading
- fix font atlas overflow
- do not assume font handle is present in assets