357 KiB
		
	
	
	
	
	
	
	
			
		
		
	
	
			357 KiB
		
	
	
	
	
	
	
	
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.
Version 0.13.0 (2024-02-17)
A-Rendering + A-Windowing
- Allow prepare_windows to run off main thread.
- Allow prepare_windows to run off main thread on all platforms
- don't run create_surfacessystem if not needed
- fix create_surfaces system ordering
A-Animation + A-Reflection
A-Assets
- Don't .unwrap()inAssetPath::try_parse
- feat: Debugimplemented forAssetMode
- Remove rogue : from embedded_asset! docs
- use treesyntax to explain bevy_rock file structure
- Make AssetLoader/Saver Error type bounds compatible with anyhow::Error
- Fix untyped labeled asset loading
- Add load_untypedto LoadContext
- fix example custom_asset_reader on wasm
- ReadAssetBytesError::Ioexposes failing path
- Added Method to Allow Pipelined Asset Loading
- Add missing asset load error logs for load_folder and load_untyped
- Fix wasm builds with file_watcher enabled
- Do not panic when failing to create assets folder (#10613)
- Use handles for queued scenes in SceneSpawner
- Fix file_watcher feature hanging indefinitely
- derive asset for enums
- Ensure consistency between Un/Typed AssetIdandHandle
- Fix Asset Loading Bug
- remove double-hasing of typeid for handle
- AssetMetaMode
- Fix GLTF scene dependencies and make full scene renders predictable
- Print precise and correct watch warnings (and only when necessary)
- Allow removing and reloading assets with live handles
- Add GltfLoaderSettings
- Refactor process_handle_drop_internal()in bevy_asset
- fix base64 padding when loading a gltf file
- assets should be kept on CPU by default
- Don't auto create assets folder
- Use impl Into<A>forAssets::add
- Add reserve_handletoAssets.
- Better error message on incorrect asset label
- GLTF extension support
- Fix embedded watcher to work with external crates
- Added AssetLoadFailedEvent, UntypedAssetLoadFailedEvent
- auto create imported asset folder if needed
- Fix minor typo
- Include asset path in get_meta_path panic message
- Fix documentation for AssetReader::is_directoryfunction
- AssetSaver and AssetTransformer split
- AssetPath source parse fix
- Allow TextureAtlasBuilder in AssetLoader
- Add a getter for asset watching status on AssetServer
- Make SavedAsset::get_labeled accept &str as label
- Added Support for Extension-less Assets
- Fix embedded asset path manipulation
- Fix AssetTransformer breaking LabeledAssets
- Put asset_events behind a run condition
- Use Asset Path Extension for AssetLoaderDisambiguation
A-Core + A-App
A-Accessibility
A-Transform
A-ECS + A-Hierarchy
A-Text
- Rename TextAlignmenttoJustifyText.
- Subtract 1 from text positions to account for glyph texture padding.
A-Assets + A-UI
A-Utils + A-Time
A-Rendering + A-Assets
- Fix shader import hot reloading on windows
- Unload render assets from RAM
- mipmap levels can be 0 and they should be interpreted as 1
A-Physics
A-ECS + A-Editor + A-App + A-Diagnostics
A-Reflection + A-Scenes
A-Audio + A-Windowing
A-Build-System + A-Meta
A-ECS + A-Time
- Wait until FixedUpdatecan see events before dropping them
- Add First/Pre/Post/Last schedules to the Fixed timestep
- Add run conditions for executing a system after a delay
- Add paused run condition
A-Meta
- Add "update screenshots" to release checklist
- Remove references to specific projects from the readme
- Fix broken link between files
- [doc] Fix typo in CONTRIBUTING.md
- Remove unused namespace declarations
- Add docs link to root Cargo.toml
- Migrate third party plugins guidelines to the book
- Run markdownlint
- Improve config_fast_builds.toml
- Use -Z threads=0option inconfig_fast_builds.toml
- CONTRIBUTING.md: Mention splitting complex PRs
A-Time
- docs: use readinstead of deprecatediter
- Rename Time::<Fixed>::overstep_percentage()andTime::<Fixed>::overstep_percentage_f64()
- Rename Timer::{percent,percent_left}toTimer::{fraction,fraction_remaining}
- Document how to configure FixedUpdate
- Add discard_overstep function to Time<Fixed>
A-Assets + A-Reflection
A-Diagnostics + A-Utils
A-Windowing + A-App
A-ECS + A-Scenes
A-Hierarchy
- bevy_hierarchy: add some docs
- Make bevy_app and reflect opt-out for bevy_hierarchy.
- Add bevy_hierarchyCrate and plugin documentation
- Rename "AddChild" to "PushChild"
- Inline trivial methods in bevy_hierarchy
A-ECS + A-App
A-Transform + A-Math
A-UI + A-Text
A-Input
- Make ButtonSettings.is_pressed/released public
- Rename InputtoButtonInput
- Add method to check if all inputs are pressed
- Add window entity to TouchInput events
- Extend Toucheswith clear and reset methods
- Add logical key data to KeyboardInput
- Derive Ord for GamepadButtonType.
- Add delta to CursorMoved event
A-Rendering + A-Diagnostics
A-Rendering
- Fix bevy_pbr shader function name
- Implement Clone for VisibilityBundle and SpatialBundle
- Reexport wgpu::Maintain
- Use a consistent scale factor and resolution in stress tests
- Ignore inactive cameras
- Add shader_material_2d example
- More inactive camera checks
- Fix post processing example to only run effect on camera with settings component
- Make sure added image assets are checked in camera_system
- Ensure ExtendedMaterial works with reflection (to enable bevy_egui_inspector integration)
- Explicit color conversion methods
- Re-export wgpu BufferAsyncError
- Improve shader_material example
- Non uniform transmission samples
- Explain how AmbientLightis inserted and configured
- Add wgpu_pass method to TrackedRenderPass
- Add a depth_biastoMaterial2d
- Use as_image_copy where possible
- impl From<Color>for ClearColorConfig
- Ensure instance_index push constant is always used in prepass.wgsl
- Bind group layout entries
- prepass vertex shader always outputs world position
- Swap material and mesh bind groups
- try_insert Aabbs
- Fix prepass binding issues causing crashes when not all prepass bindings are used
- Fix binding group in custom_material_2d.wgsl
- Normalize only nonzero normals for mikktspace normal maps
- light renderlayers
- Explain how RegularPolygon mesh is generated
- Fix Mesh2d normals on webgl
- Update to wgpu 0.18
- Fix typo in docs for ViewVisibility
- Add docs to bevy_sprite a little
- Fix BindingType import warning
- Update texture_atlas example with different padding and sampling
- Update AABB when Sprite component changes in calculate_bounds_2d()
- OrthographicProjection.scaling_mode is not just for resize
- Derive DebugforBloomCompositeMode
- Document None conditions on compute_aabb
- Replace calculation with function call
- Register Camera types.
- Add example for pixel-perfect grid snapping in 2D
- Misc cleanup
- Keep track of when a texture is first cleared
- Fix Mesh::ATTRIBUTE_UV_0 documentation
- Do not load prepass normals for transmissive materials
- Export tonemapping_pipeline_key (2d), alpha_mode_pipeline_key
- Simplify examples/3d/orthographic
- Implement lightmaps.
- Bump the vertex attribute index for prepass joints.
- Fix: Gizmos crash due to the persistence policy being set to Unload. Change it toKeep
- Usability methods for RenderTargets and image handles
- Explain Camera physical size is in pixel
- update Outdated comment
- Revert "Implement minimal reflection probes. (#10057)"
- Explain OrthographicProjection.scale
- Mul<f32>for ScalingMode
- Rustdoc examples for OrthographicProjection
- Option to enable deterministic rendering
- Fix ssao only sampling mip 0
- Revert "Implement minimal reflection probes. (#10057)"
- Sprite slicing and tiling
- Approximate indirect specular occlusion
- Texture Atlas rework
- Exposure settings (adopted)
- Remove Vec from GpuArrayBuffer
- Make DynamicUniformBuffer::pushaccept an&Tinstead ofT
- Restore brightness in the remaining three examples after exposure PR
- Customizable camera main texture usage
- Cleanup deterministic example
- Implement minimal reflection probes (fixed macOS, iOS, and Android).
- optimize batch_and_prepare_render_phase
- add storage_textureoption to as_bind_group macro
- Revert rendering-related associated type name changes
- Meshlet prep
- Reuse sampler when creating cached bind groups
- Add Animated Material example
- Update to wgpu 0.19 and raw-window-handle 0.6
- Fix bug where Sprite::rect was ignored
- Added documentation explaining the difference between lumens and luxes
- Fix infinite asset preparation due to undrained AssetEvent events
- Workaround for ICE in the DXC shader compiler in debug builds with an EnvironmentMapLight
- Refactor tonemapping example's image viewer update into two systems
- Add Meshtransformation
- Fix specular envmap in deferred
- Add Meshabletrait and implement meshing for 2D primitives
- Optimize extract_clusters and prepare_clusters systems
- RenderAssetPersistencePolicy → RenderAssetUsages
- RenderGraph Labelization
- Gate diffuse and specular transmission behind shader defs
- Add helpers for translate, rotate, and scale operations - Mesh
- CameraProjection::compute_frustum
- Added formats to MeshVertexAttributeconstant's docstrings
- Async pipeline compilation
- sort by pipeline then mesh for non transparent passes for massively better batching
- Added remove_indices to Mesh
- Implement irradiance volumes.
- Mesh insert indices
- Don't try to create a uniform buffer for light probes if there are no views.
- Properly check for result when getting pipeline in Msaa
- wait for render app when main world is dropped
- Deprecate shapes in bevy_render::mesh::shape
- Cache the QueryState used to drop swapchain TextureViews
- Multithreaded render command encoding
- Fix Quaddeprecation message mentioning a type that doesn't exist
- Stop extracting mesh entities to the render world.
- Stop copying the light probe array to the stack in the shader.
- Add Mesh::merge
- Call a TextureAtlasLayout a layout and not an atlas
- fix shadow batching
- Change light defaults & fix light examples
- New Exposure and Lighting Defaults (and calibrate examples)
- Change MeshUniform::new() to be public.
- Rename Core Render Graph Labels
- Support optional clear color in ColorAttachment.
- irradiance: use textureSampleLevel for WebGPU support
- Add configuration for async pipeline creation on RenderPlugin
- Derive Reflect for Exposure
- Add MeshPipelineKey::LIGHTMAPPEDas applicable during the shadow map pass.
- Irradiance volume example tweaks
- Disable irradiance volumes on WebGL and WebGPU.
- Remove naga_oildependency frombevy_pbr
A-Scenes
- Re-export roninbevy_scene
- Fix load scene example to use proper serialization format for rotation field
- Mention DynamicSceneBuilder in doc comment
- Mention DynamicSceneBuilder in scene example
- Implement Std traits for SceneInstanceReady
- Change SceneSpawner::spawn_dynamic_sync to return InstanceID
- Fix scene example
- Send SceneInstanceReadyonly once per scene
A-Utils
- bevy_utils: Export generate_composite_uuidutility function
- Save an instruction in EntityHasher
- Add SystemTime to bevy_utils
- Re-export smallvec crate from bevy_utils
- Enable cloning EntityHashMap and PreHashMap
- impl BorrowandAsRefforCowArc
- Hash stability guarantees
- Deprecating hashbrown reexports
- Update ahash to 0.8.7
A-UI
- ui material: fix right border width
- Add PartialEq to Anchor
- UI Material: each material should have its own buffer
- UI Materials: ignore entities with a BackgroundColorcomponent
- Fix panic when using image in UiMaterial
- Make clipped areas of UI nodes non-interactive
- Fix typo in resolve_outlines_system
- Clip outlines by the node's own clipping rect, not the parent's.
- Give UI nodes with Display::Nonean empty clipping rect
- Create serialize feature for bevy_ui
- Made the remaining types from bevy_ui to reflect the Default trait if…
- Camera-driven UI
- fix occasional crash moving ui root nodes
- Fix panic on Text UI without Cameras
- Allow user to choose default ui camera
- Rustdoc links in bevy_ui
- Avoid unconditionally unwrapping the Result - UI Stack System
A-Assets + A-Diagnostics
A-Audio + A-Reflection
A-Audio
- Add VolumeLevel::ZERO
- Deduplicate systems in bevy_audio
- Non-Intrusive refactor of play_queued_audio_system()
- docs: AnimationPlayer::play doesn't have transition_duration arg
- Remove the ability to ignore global volume
- Optional override for global spatial scale
A-Tasks
- Make FakeTask public on singlethreaded context
- Re-export futures_liteinbevy_tasks
- bump bevy_tasks futures-lite to 2.0.1
- Fix wrong transmuted type in TaskPool::scope_with_executor_inner
- Use std::thread::sleepinstead of spin-waiting in the async_compute example
A-ECS
- Use EntityHashMapforEntityMapper
- Allow registering boxed systems
- Remove unnecessary if statement in scheduler
- Optimize Entity::eq
- Add 'World::run_system_with_input' function + allow World::run_systemto get system output
- Update Eventsend methods to returnEventId
- Some docs for IntoSystemSet
- Link to Ininpipedocumentation
- Optimise Entitywith repr align & manualPartialOrd/Ord
- Allow #[derive(Bundle)] on tuple structs (take 3)
- Add an Entryapi toEntityWorldMut.
- Make impl block for RemovedSystem generic
- Append commands
- Rustdoc example for Ref
- Link to Mainschedule docs from other schedules
- Warn that Added/Changed filters do not see deferred changes
- Fix non-functional nondeterministic_system_order example
- Copy over docs for Conditiontrait from PR #10718
- Implement DropforCommandQueue
- Split WorldQuery into WorldQueryData and WorldQueryFilter
- Make IntoSystemConfigs::into_configs public API (visible in docs)
- Override QueryIter::fold to port Query::for_each perf gains to select Iterator combinators
- Deprecate QueryState::for_each_unchecked
- Clarifying Commands' purpose
- Make ComponentId typed in Components
- Reduced TableRowasCasting
- Add EntityCommands.retainandEntityWorldMut.retain
- Remove unnecessary ResMut in examples
- Add a couple assertions for system types
- Remove reference to default schedule
- Improve EntityWorldMut.remove,retainanddespawndocs by linking to more detail
- Reorder fields in SystemSchedule
- Rename WorldQueryData&WorldQueryFiltertoQueryData&QueryFilter
- Fix soundness of UnsafeWorldCellusage example
- Actually check alignment in BlobVec test aligned_zst
- Rename Qtype parameter toDwhen referring toWorldQueryData
- Allow the editing of startup schedules
- Auto insert sync points
- Simplify lifetimes in QueryStatemethods
- Add is_resource_changed_by_id + is_resource_added_by_id
- Rename some lifetimes (ResMut etc) for clarity
- Add non-existent entity behavior to Has doc
- Fix typo in docs for Has
- Add insert_state to App.
- Explain Changed, Added are not archetype filters
- Add missing colon in Statesdocumentation
- Explain EventWriter limits concurrency
- Better doc for SystemName
- impl ExclusiveSystemParam for WorldId
- impl ExclusiveSystemParam for PhantomData
- Remove little warn on bevy_ecs
- Rename ArchetypeEntity::entityintoArchetypeEntity::id
- Fixed Typo in the description of EntityMut
- Implement Deref and DerefMut for In
- impl ExclusiveSystemParam for SystemName
- Print a warning for un-applied commands being dropped from a CommandQueue
- Implement TypePath for EntityHash
- Fix integer overflow in BlobVec::push for ZST
- Fix integer overflow in BlobVec::reserve_exact
- StateTransitionEvent
- Restore support for running fnEntityCommandson entities that might be despawned
- Remove apply_deferred example
- Minimize small allocations by dropping the tick Vecs from Resources
- Change Entity::generation from u32 to NonZeroU32 for niche optimization
- fix B0003 example and update logs
- Unified identifer for entities & relations
- Simplify conditions
- Add example using Statein docs
- Skip rehashing TypeIds
- Make TypeId::hashmore robust in case of upstream rustc changes
- Fix doc of [Schedules] to mention exclusion of current schedule.
- Dynamic queries and builder API
- Remove duplicate #[automatically_derived]in ECS macro
- Get Change Tick methods for Resources
- Optional state
- Double the capacity when BlobVec is full
- document which lifetime is needed for systemparam derive
- refactor: Simplify lifetimes for Commandsand related types
- Implement DebugforCommandQueue
- Fix typo in comment
- Rename Schedule::name to Schedule::label
- Exclusive systems can now be used for one-shot systems
- added ability to get Res<T>fromWorldwithWorld::get_resource_ref
- bevy_ecs: Add doc example for par_iter_mut (#11311)
- Add an example demonstrating how to send and receive events in the same system
- Add a doctest example for EntityMapper
- Rephrase comment about Local<T>for clarity. (Adopted)
- Use batch spawn in benchmarks
- Fix bug where events are not being dropped
- Make Archetypes.archetype_component_count private
- Deprecated Various Component Methods from QueryandQueryState
- System::type_idConsistency
- Typo in [ScheduleLabel] derive macro
- Mention Resource where missing from component/resource related type docs
- Expose query accesses
- Add a method for detecting changes within a certain scope
- Fix double indirection when applying command queues
- Immediately poll the executor once before spawning it as a task
- Fix small docs misformat in BundleInfo::new
- FilteredEntityRefconversions
A-Rendering + A-Animation
A-ECS + A-Meta
A-Rendering + A-UI
- Provide GlobalsUniform in UiMaterial shaders
- Include UI node size in the vertex inputs for UiMaterial.
- UI Texture 9 slice
- Optional ImageScaleMode
A-Math
- Define a basic set of Primitives
- Add and impl Primitives
- Add winding order for Triangle2d
- Use minor and major radii for Torusprimitive shape
- Remove Fromimplementations from the direction types
- Impl TryFromvector for directions and addInvalidDirectionError
- Add Direction2d::from_xyandDirection3d::from_xyz
- Implement NegforDirection2dandDirection3d
- Add constants for Direction2dandDirection3d
- Add approxfeature tobevy_math
- Add libmfeature tobevy_math
- Add new_and_lengthmethod toDirection2dandDirection3d
- Update glam,encaseandhexasphere
- Implement bounding volume types
- Remove Defaultimpl forCubicCurve
- Implement bounding volumes for primitive shapes
- Improve RectangleandCuboidconsistency
- Change Ellipserepresentation and improve helpers
- Add Aabb2d::newandAabb3d::newconstructors
- Add geometric primitives to bevy_math::prelude
- Direction: Rename from_normalizedtonew_unchecked
- Implement bounding volume intersections
- Add newconstructors forCircleandSphere
- Derive PartialEq, Serialize, Deserialize and Reflect on primitives
- Document RegularPolygon
- Add RayTest2d and RayTest3d
- Add more constructors and math helpers for primitive shapes
- Add Capsule2dprimitive
- Add volume cast intersection tests
- Add Clone to intersection test types
- Implement approxtraits for direction types
- Support rotating Direction3dbyQuat
- Rename RayTest to RayCast
- Add example for bounding volumes and intersection tests
- Dedicated primitive example
- Un-hardcode positions and colors in 2d_shapesexample
A-Build-System
- check for all-features with cargo-deny
- Bump actions/github-script from 6 to 7
- Add doc_markdown clippy linting config to cargo workspace
- Enable clippy::undocumented_unsafe_blockswarning across the workspace
- Remove trailing whitespace
- Move remaining clippy lint definitions to Cargo.toml
- Add clippy::manual_let_elseat warn level to lints
- Remove unused import
- Rename functions and variables to follow code style
- Remove unused variable
- add libxkbcommon-x11-0 to the default linux dependencies
- fix patches for example showcase after winit update
- finish cleaning up dependency bans job
- Bump actions/upload-artifact from 2 to 4
- Publish dev-docs with Github Pages artifacts (2nd attempt)
- example showcase patches: use default instead of game mode for desktop
- Bump toml_edit in build-template-pages tool
- Miri is failing on latest nightly: pin nightly to last known working version
- Bump dev-docs pages actions
- Unpin nightly for miri
- documentation in CI: remove lock file
- Bump actions/cache from 3 to 4
- simplify animated_material example
- example showcase: fix window resized patch
- run examples on macOS to validate PRs
- Inverse missing_docslogic
- Bump peter-evans/create-pull-request from 5 to 6
A-Gizmos
- Fix float precision issue in the gizmo shader
- Gizmo Arrows
- Move Circle Gizmos to Their Own File
- move gizmo arcs to their own file
- Warn when bevy_sprite and bevy_pbr are not enabled with bevy_gizmos
- Multiple Configurations for Gizmos
- Fix gizmos app new panic
- Use Direction3d for gizmos.circle normal
- Implement Arc3D for Gizmos
- Insert Gizmos config instead of Init
- Drawing Primitives with Gizmos
- fix(primitives): fix polygon gizmo rendering bug
- Fix global wireframe behavior not being applied on new meshes
- Overwrite gizmo group in insert_gizmo_group
A-Rendering + A-Math
- Split RayintoRay2dandRay3dand simplify plane construction
- Introduce AspectRatio struct
- Implement meshing for Capsule2d
- Implement Meshablefor some 3D primitives
A-Core
- Derive DebugforFramecount
- Don't unconditionally enable bevy_render or bevy_assets if mutli-threaded feature is enabled
A-Windowing
- Some explanations for Window component
- don't run update before window creation in winit
- add new event WindowOccludedfrom winit
- Add comment about scale factor in WindowMode
- Refactor function update_accessibility_nodes
- Change Windowscale factor to f32 (adopted)
- Reexport winit::platform::android::activity::* in bevy_winit
- Update winit dependency to 0.29
- Remove CanvasParentResizePlugin
- Use WindowBuilder::with_append()to append canvas
- Fix perf degradation on web builds
- mobile and webgpu: trigger redraw request when needed and improve window creation
- Remove unnecessary unsafe impls for WinitWindows on Wasm
- Fix Reactive and ReactiveLowPower update modes
- Change WinitPlugindefaults to limit game update rate when window is not visible (for real this time)
- Cleanup bevy winit
- Add nametobevy::window::Window
- Avoid unwraps in winit fullscreen handling code
A-UI + A-Transform + A-Text
A-Animation
- Fix animations resetting after repeat count
- Add Debug, PartialEq and Eq derives to bevy_animation.
- support all types of animation interpolation from gltf
- Clean up code to find the current keyframe
- Skip alloc when updating animation path cache
- Replace the cubic_spline_interpolationmacro with a generic function
- Animatable trait for interpolation and blending
A-ECS + A-Pointers
A-ECS + A-Utils
A-Reflection
- Fix issue with Optionserialization
- fix insert_reflectpanic caused byclone_value
- Remove pointless trait implementation exports in bevy_reflect
- Fix nested generics in Reflect derive
- Fix debug printing for dynamic types
- reflect: maximally relax TypePathbounds
- Use static_assertionsto check for trait impls
- Add ReflectFromWorldand replace theFromWorldrequirement onReflectComponentandReflectBundlewithFromReflect
- Fix reflected serialization/deserialization on Namecomponent
- Add Reflection for Wrapping/Saturating types
- Remove TypeUuid
- Fix warnings in bevy_reflect
- bevy_reflect: Type parameter bounds
- bevy_reflect: Split #[reflect(where)]
- reflection: replace impl_reflect_structwithimpl_reflect
- Add the ability to manually create ParsedPaths (+ cleanup)
- bevy_reflect: Reflect &'static str
- Improve DynamicStruct::insert
- Missing registrations
- Add ReflectKind
- doc(bevy_reflect): add note about trait bounds on impl_type_path
- bevy_reflect_derive: Clean up attribute logic
A-ECS + A-Tasks
A-Pointers
- Remove a ptr-to-int cast in CommandQueue::apply
- Fix memory leak in dynamic ECS example
- bevy_ptr: fix unsafe_op_in_unsafe_fnlint
A-ECS + A-Reflection
A-Reflection + A-Gizmos
No area label
- Fix intra-doc link warnings
- Fix minor issues with custom_asset example
- Prepend root_pathto meta path in HttpWasmAssetReader
- support required features in wasm examples showcase
- examples showcase: use patches instead of sed for wasm hacks
- Add [lints] table, fix  adding #![allow(clippy::type_complexity)]everywhere
- Bumps async crates requirements to latest major version
- delete methods deprecated in 0.12
- Ran cargo fmtonbenchescrate
- Remove unnecessary path prefixes
- Fix typos in safety comment
- Substitute get(0)withfirst()
- Remove identity mapcalls
- Renamed Accessibility plugin to AccessKitPlugin in bevy_winit
- Reorder impl to be the same as the trait
- Replace deprecated elements
- Remove unnecessary parentheses
- Replace deprecated elements
- Simplify equality assertions
- Add Solus package requrements to linux_dependencies.md
- Update base64 requirement from 0.13.0 to 0.21.5
- Update sysinfo version to 0.30.0
- Remove unnecessary parens
- Reorder impl to be the same as the trait
- Fix ci xvfb
- Replace or document ignored doctests
- Add static assertions to bevy_utils for compile-time checks
- Fix missed explicit conversions in examples
- Remove unused event-listener dependency
- Fixed typo in generate_custom_mesh.rs example
- Extract examples CameraControllerinto a module
- Use EntityHashMap whenever possible
- Fix link to plugin guidelines
- [doc] Fix typo and formatting in CONTRIBUTING.md
- add a required feature for shader_material_glsl
- Update ruzstd requirement from 0.4.0 to 0.5.0
- Tweak gamepad viewer example style
- Add .tomlextension to.cargo/config_fast_builds
- Add README to benches
- Fix panic in examples using argh on the web
- Fix cyclic dep
- Enable the unsafe_op_in_unsafe_fnlint
- Update erased-serde requirement from 0.3 to 0.4
- Fix example send_and_receive_events
- Update cursor.rs
- Use the Continuousupdate mode in stress tests when unfocused
- Don't auto insert on the extract schedule
- Update tracing-tracy requirement from 0.10.4 to 0.11.0 and tracy-client requirement from 0.16.4 to 0.17.0
- Use TypeIdMap whenever possible
- Fix a few typos in error docs
- bevy_render: use the non-send marker from bevy_core
- Ignore screenshots generated by screenshotexample
- Docs reflect that RemovalDetectionalso yields despawned entities
- bevy_dynamic_plugin: fix unsafe_op_in_unsafe_fnlint
- Replace crossbeam::scopereference withthread::scopein docs
- Use question mark operator when possible
- Fix a few Clippy lints
- WebGPU: fix web-sys version
- Remove map_flatten from linting rules
- Fix duplicate encase_derive_impldependency
A-App
- add regression test for #10385/#10389
- Fix typos plugin.rs
- Expressively define plugins using functions
- Mark DynamicPluginLoadErrorinternal error types as source
A-Diagnostics
- Fix Line for tracy version
- Some doc to bevy_diagnostic
- Print to stderr from panic handler in LogPlugin
- Add ability to panic to logs example
- Make sure tracy deps conform to compatibility table
- Describe purpose of bevy_diagnostic
- Add support for updating the tracing subscriber in LogPlugin
- Replace DiagnosticIdbyDiagnosticPath
- fix link to tracy
- Fix sysinfo CPU brand output
A-Rendering + A-ECS
A-Assets + A-Math
Version 0.12.0 (2023-11-04)
A-ECS + A-Diagnostics
A-ECS + A-Scenes
A-Scenes
- Move scene spawner systems to SpawnScene schedule
- Add SceneInstanceReady
- Add SpawnSceneto prelude
- Finish documenting bevy_scene
- Only attempt to copy resources that still exist from scenes
- Correct Scene loader error description
A-Tasks + A-Diagnostics
A-Tasks
- elaborate on TaskPool and bevy tasks
- Remove Resource and add Debug to TaskPoolOptions
- Fix clippy lint in single_threaded_task_pool
- Remove dependecies from bevy_tasks' README
- Allow using async_io::block_on in bevy_tasks
- add test for nested scopes
- Global TaskPool API improvements
A-Audio + A-Windowing
A-Animation + A-Transform
A-Transform
- Update GlobalTransformon insertion
- Add Without<Parent>filter tosync_simple_transforms' orphaned entities query
- Fix ambiguities in transform example
A-App
- Add track_callertoApp::add_plugins
- Remove redundant check for AppExitevents inScheduleRunnerPlugin
- fix typos in crates/bevy_app/src/app.rs
- fix typos in crates/bevy_app/src/app.rs
- fix run-once runners
A-ECS + A-App
- Add configure_schedules to App and Schedules to apply ScheduleBuildSettingsto all schedules
- Only run event systems if they have tangible work to do
A-Rendering + A-Gizmos
A-Rendering + A-Diagnostics
- Include note of common profiling issue
- Enhance many_cubes stress test use cases
- GLTF loader: handle warning NODE_SKINNED_MESH_WITHOUT_SKIN
A-Rendering + A-Reflection
A-Windowing
- Add option to toggle window control buttons
- Fixed: Default window is now "App" instead of "Bevy App"
- improve documentation relating to WindowPluginandWindow
- Improve bevy_winitdocumentation
- Change WinitPlugindefaults to limit game update rate when window is not visible
- User controlled window visibility
- Check cursor position for out of bounds of the window
- Fix doc link in transparent_window example
- Wait before making window visible
- don't create windows on winit StartCause::Init event
- Fix the doc warning attribute and document remaining items for bevy_window
- Revert "macOS Sonoma (14.0) / Xcode 15.0 — Compatibility Fixes + Docs…
- Revert "macOS Sonoma (14.0) / Xcode 15.0 — Compatibility Fixes + Docs…
- Allow Bevy to start from non-main threads on supported platforms
- Prevent black frames during startup
- Slightly improve CursorIcondoc.
- Fix typo in window.rs
A-Gizmos
- Replace AHash with a good sequence for entity AABB colors
- gizmo plugin lag bugfix
- Clarify immediate mode in Gizmosdocumentation
- Fix crash when drawing line gizmo with less than 2 vertices
- Document that gizmo depth_biashas no effect in 2D
A-Utils
- change 'collapse_type_name' to retain enum types
- bevy_derive: Fix #[deref]breaking other attributes
- Move default docs
A-Rendering + A-Assets
- Import the second UV map if present in glTF files.
- fix custom shader imports
- Add ImageSamplerDescriptoras an image loader setting
A-ECS
- Add the Has world query to bevy_ecs::prelude
- Simplify parallel iteration methods
- Fix safety invariants for WorldQuery::fetchand simplify cloning
- Derive debug for ManualEventIterator
- Add EntityMap::clear
- Add a paragraph to the lifetimeless module doc
- opt-out multi-threadedfeature flag
- Fix ambiguous_withbreaking run conditions
- Add RunSystem
- Add replace_if_neqtoDetectChangesMut
- Adding Copy, Clone, Debugto derived traits ofExecutorKind
- Fix incorrect documentation link in DetectChangesMut
- Implement DebugforUnsafeWorldCell
- Relax In/Out bounds on impl Debug for dyn System
- Improve various Debugimplementations
- Make run_if_innerpublic and rename torun_if_dyn
- Refactor build_schedule and related errors
- Add system.map(...)for transforming the output of a system
- Reorganize EventsandEventSequencecode
- Replaced EntityMap with HashMap
- clean up configure_set(s) erroring
- Relax more Syncbounds onLocal
- Rename ManualEventIterator
- Replaced EntityCommandImplementation forFnOnce
- Add a variant of Events::updatethat returns the removed events
- Move schedule name into Schedule
- port old ambiguity tests over
- Refactor EventReader::itertoread
- fix ambiguity reporting
- Fix anonymous set name stack overflow
- Fix unsoundness in QueryState::is_empty
- Add panicking helpers for getting components from Query
- Replace IntoSystemSetConfigwithIntoSystemSetConfigs
- Moved get_component(_unchecked_mut)fromQuerytoQueryState
- Fix naming on "tick" Column and ComponentSparseSet methods
- Clarify a comment in Option WorldQuery impl
- Return a boolean from set_if_neq
- Rename RemovedComponents::iter/iter_with_id to read/read_with_id
- Remove some old references to CoreSet
- Use single threaded executor for archetype benches
- docs: Improve some ComponentIddoc cross-linking.
- One Shot Systems
- Add mutual exclusion safety info on filter_fetch
- add try_insert to entity commands
- Improve codegen for world validation
- docs: Use intradoc links for method references.
- Remove States::variants and remove enum-only restriction its derive
- as_deref_mut()method for Mut-like types
- refactor: Change Option<With<T>>query params toHas<T>
- Hide UnsafeWorldCell::unsafe_world
- Add a public API to ArchetypeGeneration/Id
- Ignore ambiguous components or resources
- Use chain in breakout example
- ParamSets containing non-send parameters should also be non-send
- Replace all labels with interned labels
- Fix outdated comment referencing CoreSet
A-Rendering + A-Math
A-UI
- Fix for vertical text bounds and alignment
- UI extraction order fix
- Update text example using default font
- bevy_ui: fix doc formatting for some Style fields
- Remove the With<Parent>query filter frombevy_ui::render::extract_uinode_borders
- Fix incorrent doc comment for the set method of ContentSize
- Improved text widget doc comments
- Change the default for the measure_funcfield ofContentSizeto None.
- Unnecessary line in game_menu example
- Change UiScaleto a tuple struct
- Remove unnecessary doc string
- Add some missing pub in ui_node
- UI examples clean up
- round_ties_upfix
- fix incorrect docs for JustifyItemsandJustifySelf
- Added Val::ZEROConstant
- Cleanup some bevy_text pipeline.rs
- Make GridPlacement's fields non-zero and add accessor functions.
- Remove Val'stry_*arithmetic methods
- UI node bundle comment fix
- Do not panic on non-UI child of UI entity
- Rename Valevaluatetoresolveand implement viewport variant support
- Change Urect::width&Urect::heightto be const
- TextLayoutInfo::sizeshould hold the drawn size of the text, and not a scaled value.
- impl From<String>and- From<&str>for- TextSection
- Remove z-axis scaling in extract_text2d_sprite
- Fix doc comments for align items
- Add tests to bevy_ui::Layout
- examples: Remove unused doc comments.
- Add missing bevy_textfeature attribute toTextBundlefrom impl
- Move Valintogeometry
- Derive Serialize and Deserialize for UiRect
- ContentSizereplacement fix
- Round UI coordinates after scaling
- Have a separate implicit viewport node per root node + make viewport node Display::Grid
- Rename num_font_atlasestolen.
- Fix documentation for ui node Style
- text_wrap_debugscale factor commandline args
- Store both the rounded and unrounded node size in Node
- Various accessibility API updates.
- UI node outlines
- Implement serialize and deserialize for some UI types
- Tidy up UI node docs
- Remove unused import warning when default_font feature is disabled
- Fix crash with certain right-aligned text
- Add some more docs for bevy_text.
- Implement NegforVal
- normalizemethod for- Rect
- don't Implement DisplayforVal
- [bevy_text] Document what happens when font is not specified
- Update UI alignment docs
- Add stack index to Node
- don't Implement DisplayforVal
A-Animation
- Fix doc typo
- Expose animation_clippaths
- animations: convert skinning weights from unorm8x4 to float32x4
- API updates to the AnimationPlayer
- only take up to the max number of joints
- check root node for animations
- Fix morph interpolation
A-Pointers
A-Assets + A-Reflection
A-Rendering + A-Hierarchy
A-ECS + A-Tasks
A-Reflection + A-Utils
A-Reflection + A-Math
A-Hierarchy
A-Input
- input: allow multiple gamepad inputs to be registered for one button in one frame
- Bevy Input Docs : lib.rs
- Bevy Input Docs : gamepad.rs
- Add GamepadButtonInputevent
- Bevy Input Docs : the modules
- Finish documenting bevy_gilrs
- Change AxisSettingslivezone default
- docs: Update input_toggle_active example
A-Input + A-Windowing
- Fix Window::set_cursor_position
- Change Window::physical_cursor_positionto use the physical size of the window
- Fix check that cursor position is within window bounds
A-ECS + A-Reflection
- implement insert and remove reflected entity commands
- Allow disjoint mutable world access via EntityMut
- Implement ReflectforState<S>andNextState<S>
- #[derive(Clone)]on- Component{Info,Descriptor}
A-Math
- Rename bevy_math::rects conversion methods
- Add glam swizzles traits to prelude
- Rename BeziertoCubicBezierfor clarity
- Add a method to compute a bounding box enclosing a set of points
- re-export debug_glam_assertfeature
- Add Cubicprefix to all cubic curve generators
A-Build-System
- only check for bans if the dependency tree changed
- Slightly better message when contributor modifies examples template
- switch CI jobs between windows and linux for example execution
- Check for bevy_internal imports in CI
- Fix running examples on linux in CI
- Bump actions/checkout from 2 to 4
- doc: Remove reference to clippy::manual-strip.
- Only run some workflows on the bevy repo (not forks)
- run mobile tests on more devices / OS versions
- Allow clippy::type_complexityin more places.
- hacks for running (and screenshotting) the examples in CI on a github runner
- make CI less failing on cargo deny bans
- add test on Android 14 / Pixel 8
- Use clippy::doc_markdownmore.
A-Diagnostics
A-Rendering + A-Animation
A-Core
A-Reflection
- Fix typo in NamedTypePathDef
- Refactor pathmodule ofbevy_reflect
- Refactor parsing in bevy_reflect path module
- bevy_reflect: Fix combined field attributes
- bevy_reflect: Opt-out attribute for TypePath
- Add reflect path parsing benchmark
- Make it so ParsedPathcan be passed to GetPath
- Make the reflect path parser utf-8-unaware
- bevy_scene: Add ReflectBundle
- Fix comment in scene example FromResources
- Remove TypeRegistry re-export rename
- Provide getters for fields of ReflectFromPtr
- Add TypePath to the prelude
- Improve TypeUuid's derive macro error messages
- Migrate Quatreflection strategy from "value" to "struct"
- bevy_reflect: Fix dynamic type serialization
- bevy_reflect: Fix ignored/skipped field order
A-Rendering + A-Assets + A-Reflection
A-ECS + A-Time
A-ECS + A-Hierarchy
A-Audio
- Added Pitch as an alternative sound source
- update documentation on AudioSink
- audio sinks don't need their custom drop anymore
- Clarify what happens when setting the audio volume
- More ergonomic spatial audio
A-Rendering + A-UI
- Remove out-of-date paragraph in Style::border
- Revert "Fix UI corruption for AMD gpus with Vulkan (#9169)"
- Revert "Fix UI corruption for AMD gpus with Vulkan (#9169)"
- many_buttonsenhancements
- Fix UI borders
- UI batching Fix
- Add UI Materials
A-ECS + A-Reflection + A-Pointers
No area label
- Fix typos throughout the project
- Bump Version after Release
- fix clippy::default_constructed_unit_structsand trybuild errors
- delete code deprecated in 0.11
- Drain ExtractedUiNodesinprepare_uinodes
- example showcase - pagination and can build for WebGL2
- example showcase: switch default api to webgpu
- Add some more helpful errors to BevyManifest when it doesn't find Cargo.toml
- Fix path reference to contributors example
- replace parens with square brackets when referencing _mut on Querydocs #9200
- use AutoNoVsync in stress tests
- bevy_render: Remove direct dep on wgpu-hal.
- Fixed typo in line 322
- custom_material.vert: gl_InstanceIndex includes gl_BaseInstance
- fix typo in a link - Mesh docs
- Improve font size related docs
- Fix gamepad viewer being marked as a non-wasm example
- Rustdoc: Scrape examples
- enable multithreading on benches
- webgl feature renamed to webgl2
- Example Comment Typo Fix
- Fix shader_instancing example
- Update tracy-client requirement from 0.15 to 0.16
- fix bevy imports. windows_settings.rs example
- Fix CI for Rust 1.72
- Swap TransparentUi to use a stable sort
- Replace uses of entity.insertwith tuple bundles ingame_menuexample
- Remove IntoIteratorimpl for&mut EventReader
- remove VecSwizzles imports
- Fix erronenous glam version
- Fixing some doc comments
- Explicitly make instance_index vertex output @interpolate(flat)
- Fix some nightly warnings
- Use default resolution for viewport_debug example
- Refer to "macOS", not "macOS X".
- Remove useless single tuples and trailing commas
- Fix some warnings shown in nightly
- Fix animate_scale scaling z value in text2d example
- "serialize" feature no longer enables the optional "bevy_scene" feature if it's not enabled from elsewhere
- fix deprecation warning in bench
- don't enable filesystem_watcher when building for WebGPU
- Improve doc formatting.
- Fix the clippy::explicit_iter_looplint
- Wslg docs
- skybox.wgsl: Fix precision issues
- Fix typos.
- Add link to Text2dBundleinTextBundledocs.
- Fix some typos
- Fix typos
- Replaced parking_lotwithstd::sync
- Add inline(never) to bench systems
- Android: handle suspend / resume
- Fix some warnings shown in nightly
- Updates for rust 1.73
- Improve selection of iOS device in mobile example
- Update toml_edit requirement from 0.19 to 0.20
- foxes shouldn't march in sync
- Fix tonemapping test patten
- Removed once_cell
- Improve WebGPU unstable flags docs
- shadow_biases: Support different PCF methods
- shadow_biases: Support moving the light position and resetting biases
- Update async-io requirement from 1.13.0 to 2.0.0
- few fmt tweaks
- Derive Error for more error types
- Allow AccessKit to react to WindowEvents before they reach the engine
A-Rendering + A-Build-System
A-Meta
- Remove the bevy_dylib feature
- add and fix shields in Readmes
- Added section for contributing and links for issues and PRs
- Fix orphaned contributing paragraph
A-Assets + A-Animation
A-Editor + A-Diagnostics
A-Time
- Fix timers.rs documentation
- Add missing documentation to bevy_time
- Clarify behaviour of Timer::finished()for repeating timers
- ignore time channel error
- Unify FixedTimeandTimewhile fixing several problems
- Time: demote delta time clamping warning to debug
- fix typo in time.rs example
- Example time api
A-Rendering + A-ECS
A-UI + A-Reflection
A-Build-System + A-Assets
A-Rendering
- Clarify that wgpu is based on the webGPU API
- Return URect instead of (UVec2, UVec2) in Camera::physical_viewport_rect
- fix module name for AssetPath shaders
- Add GpuArrayBuffer and BatchedUniformBuffer
- Update bevy_window::PresentModeto mirrorwgpu::PresentMode
- Stop using unwrap in the pipelined rendering thread
- Fix panic whilst loading UASTC encoded ktx2 textures
- Document ClearColorConfig
- Use GpuArrayBuffer for MeshUniform
- Update docs for scaling_mode field of Orthographic projection
- Fix shader_material_glsl example after #9254
- Improve Meshdocumentation
- Include tone_mapping fn in tonemapping_test_patterns
- Extend the default render range of 2D camera
- Document when Camera::viewport_to_world and related methods return None
- include toplevel shader-associated defs
- Fix post_processing example on webgl2
- use ViewNodeRunner in the post_processing example
- Work around naga/wgpu WGSL instance_index -> GLSL gl_InstanceID bug on WebGL2
- Fix non-visible motion vector text in shader prepass example
- Use bevy crates imports instead of bevy internal. post_processing example
- Make Anchor Copy
- Move window.rs to window/mod.rs in bevy_render
- Reduce the size of MeshUniform to improve performance
- Fix temporal jitter bug
- Fix gizmo lines deforming or disappearing when partially behind the camera
- Make WgpuSettings::default() check WGPU_POWER_PREF
- fix wireframe after MeshUniform size reduction
- fix shader_material_glsl example
- [RAINBOW EFFECT] Added methods to get HSL components from Color
- ktx2: Fix Rgb8 -> Rgba8Unorm conversion
- Reorder render sets, refactor bevy_sprite to take advantage
- Improve documentation relating to FrustumandHalfSpace
- Revert "Update defaults for OrthographicProjection (#9537)"
- Remove unused regex dep from bevy_render
- Split ComputedVisibilityinto two components to allow for accurate change detection and speed up visibility propagation
- Use instancing for sprites
- Enhance bevymark
- Remove redundant math in tonemapping.
- Improve SpatialBundledocs
- Cache depth texture based on usage
- warn and min for different vertex count
- default 16bit rgb/rgba textures to unorm instead of uint
- Fix TextureAtlasBuilder padding
- Add example for Camera::viewport_to_world
- Fix wireframe for skinned/morphed meshes
- generate indices for Mikktspace
- invert face culling for negatively scaled gltf nodes
- renderer init: create a detached task only on wasm, block otherwise
- Cleanup visibilitymodule
- Use a single line for of large binding lists
- Fix a typo in DirectionalLightBundle
- Revert "Update defaults for OrthographicProjection (#9537)"
- Refactor rendering systems to use let-else
- Use radsort for Transparent2d PhaseItem sorting
- Automatic batching/instancing of draw commands
- Directly copy data into uniform buffers
- Allow other plugins to create renderer resources
- Use EntityHashMap<Entity, T> for render world entity storage for better performance
- Parallelize extract_meshes
- Fix comment grammar
- Allow overriding global wireframe setting.
- wireframes: workaround for DX12
- Alternate wireframe override api
- Fix TextureAtlasBuilder padding
- fix example mesh2d_manual
- PCF For DirectionalLight/SpotLight Shadows
- Refactor the render instance logic in #9903 so that it's easier for other components to adopt.
- Fix 2d_shapes and general 2D mesh instancing
- fix webgl2 crash
- fix orthographic cluster aabb for spotlight culling
- Add consuming builder methods for more ergonomic Meshcreation
- wgpu 0.17
- use Materialfor wireframes
- Extract common wireframe filters in type alias
- Deferred Renderer
- Configurable colors for wireframe
- chore: Renamed RenderInstance trait to ExtractInstance
- pbr shader cleanup
- Fix text2d view-visibility
- Allow optional extraction of resources from the main world
- ssao use unlit_color instead of white
- Fix missing explicit lifetime name for copy_deferred_lighting_id name
- Fixed mod.rs in rendering to support Radeon Cards
- Explain usage of prepass shaders in docs for Materialtrait
- Better link for prepare_windows docs
- Improve linking within RenderSetdocs.
- Fix unlit missing parameters
- *_PREPASSShader Def Cleanup
- check for any prepass phase
- allow extensions to StandardMaterial
- array_texture example: use new name of pbr function
- chore: use ExtractComponent derive macro for EnvironmentMapLight and FogSettings
- Variable MeshPipelineView Bind Group Layout
- update shader imports
- Bind group entries
- Detect cubemap for dds textures
- Fix alignment on ios simulator
- Add convenient methods for Image
- Use “specular occlusion” term to consistently extinguish fresnel on Ambient and Environment Map lights
- Fix fog color being inaccurate
- Replace all usages of texture_descritor.size.* with the helper methods
- View Transformations
- fix deferred example fog values
- WebGL2: fix import path for unpack_unorm3x4_plus_unorm_20_
- Use wildcard imports in bevy_pbr
- Make mesh attr vertex count mismatch warn more readable
- Image Sampler Improvements
- Fix sampling of diffuse env map texture with non-uniform control flow
- Log a warning when the tonemapping_lutsfeature is disabled but required for the selected tonemapper.
- Smaller TAA fixes
- Truncate attribute buffer data rather than attribute buffers
- Fix deferred lighting pass values not all working on M1 in WebGL2
- Add frustum to shader View
- Fix handling of double_sidedfor normal maps
- Add helper function to determine if color is transparent
- StandardMaterialLight Transmission
- double sided normals: fix apply_normal_mapping calls
- Combine visibility queries in check_visibility_system
- Make VERTEX_COLORS usable in prepass shader, if available
- allow DeferredPrepass to work without other prepass markers
- Increase default normal bias to avoid common artifacts
- Make DirectionalLightCascadescomputation generic overCameraProjection
- Update default ClearColorto better match Bevy's branding
- Fix gizmo crash when prepass enabled
A-Build-System + A-Meta
A-Assets
- doc(asset): fix asset trait example
- Add GltfLoader::new.
- impl From<&AssetPath>forHandleId
- allow asset loader pre-registration
- fix asset loader preregistration for multiple assets
- Fix point light radius
- Add support for KHR_materials_emissive_strength
- Fix panic when using .load_folder()with absolute paths
- Bevy Asset V2
- create imported asset directory if needed
- Copy on Write AssetPaths
- Asset v2: Asset path serialization fix
- don't ignore some EventKind::Modify
- Manual "Reflect Value" AssetPath impl to fix dynamic linking
- Fix unused variable warning for simple AssetV2 derives
- Remove monkey.gltf
- Update notify-debouncer-full requirement from 0.2.0 to 0.3.1
- Removed anyhow
- Multiple Asset Sources
- Make loading warning for no file ext more descriptive
- Fix load_folder for non-default Asset Sources
- only set up processed source if asset plugin is not unprocessed
- Hot reload labeled assets whose source asset is not loaded
- Return an error when loading non-existent labels
- remove unused import on android
- Log an error when registering an AssetSource after AssetPlugin has been built
- Add note about asset source register order
- Add asset_processorfeature and remove AssetMode::ProcessedDev
- Implement source into Display for AssetPath
- assets: use blake3 instead of md5
- Reduce noise in asset processing example
- Adding AssetPath::resolve() method.
- Assets: fix first hot reloading
- Non-blocking load_untyped using a wrapper asset
- Reuse and hot reload folder handles
- Additional AssetPath unit tests.
- Corrected incorrect doc comment on read_asset_bytes
- support file operations in single threaded context
Version 0.11.0 (2023-07-09)
Rendering
- Webgpu support
- improve shader import model
- Screen Space Ambient Occlusion (SSAO) MVP
- Temporal Antialiasing (TAA)
- Immediate Mode Line/Gizmo Drawing
- Make render graph slots optional for most cases
- Split opaque and transparent phases
- Built-in skybox
- Add parallax mapping to bevy PBR
- Add port of AMD's Robust Contrast Adaptive Sharpening
- Add RenderGraphApp to simplify adding render nodes
- Add screenshot api
- Add morph targets
- Screenshots in wasm
- Add ViewNode to simplify render node management
- Bias texture mipmaps
- Instanced line rendering for gizmos based on bevy_polyline
- Add RenderTarget::TextureView
- Change default tonemapping method
- Allow custom depth texture usage
- Use the prepass normal texture in main pass when possible
- Left-handed y-up cubemap coordinates
- Allow SPIR-V shaders to process when shader defs are present
- Remove unnecesssary values Vec from DynamicUniformBuffer and DynamicStorageBuffer
- Add MAY_DISCARDshader def, enabling early depth tests for most cases
- Add Aabbcalculation forSprite,TextureAtlasSpriteandMesh2d
- Color::Lcha constructors
- Fix Color::as_rgba_linear for Color::Lcha
- Added Globals struct to prepass shader
- Derive Copy and Clone for Collision
- Fix crash when enabling HDR on 2d cameras
- Dither fix
- Compute vertex_countfor indexed meshes onGpuMesh
- Run update_previous_view_projections in PreUpdate schedule
- Added WebPimage format support
- Add support for pnm textures
- fix invalid bone weights
- Fix pbr shader breaking on missing UVs
- Fix Plane UVs / texture flip
- Fix look_to resulting in NaN rotations
- Fix look_to variable naming
- Fix segfault with 2d gizmos
- Use RenderGraphApp in more places
- Fix viewport change detection
- Remove capacity fields from all Buffer wrapper types
- Sync pbr_types.wgsl StandardMaterial values
- Avoid spawning gizmo meshes when no gizmos are being drawn
- Use a consistent seed for AABB gizmo colors
- bevy_pbr: Do not cull meshes without Aabbs from cascades
- Handle vertex_uvs if they are present in default prepass fragment shader
- Changed (Vec2, Vec2) to Rect in Camera::logical_viewport_rect
- make glsl and spirv support optional
- fix prepass normal_mapping
- conversions between [u8; 4] and Color
- Add option to disable gizmo rendering for specific cameras
- Fix morph target prepass shader
- Fix bloom wasm support
- Fix black spots appearing due to NANs when SSAO is enabled
- fix normal prepass
- Refs #8975 -- Add return to RenderDevice::poll()
- Fix WebGL mode for Adreno GPUs
- Fix parallax mapping
- Added Vec append to BufferVec - Issue #3531
- Fix CAS shader with explicit FullscreenVertexOutput import
- Make TextureAtlas::texture_handlespubinstead ofpub(crate)(#8633)
- Make Material2d pipeline systems public
- Fix screenshots on Wayland + Nvidia
- Apply codebase changes in preparation for StandardMaterialtransmission
- Use ViewNode for TAA
- Change Camera3dBundle::tonemapping to Default
- Remove Componentderive for AlphaMode
- Make setup of Opaque3dPrepass and AlphaMask3dPrepass phase items consistent with others
- Rename Planestruct toHalfSpace
- Expand FallbackImageto include aGpuImagefor each possibleTextureViewDimension
- Cascaded shadow maps: Fix prepass ortho depth clamping
- Fix gizmos in WebGPU
- Fix AsBindGroup derive, texture attribute, visibility flag parsing
- Disable camera on window close
- Reflect ComponentandDefaultofBloomSettings
- Add Reflection Macros to TextureAtlasSprite
- Implement Reflect on NoFrustumCulling
Audio
Diagnostics
- Allow systems using Diagnostics to run in parallel
- add a feature for memory tracing with tracy
- Re-add the "frame" span for tracy comparisons
- log to stderr instead of stdout
Scenes
- bevy_scene: Add SceneFilter
- (De) serialize resources in scenes
- add position to scene errors
- Bugfix: Scene reload fix (nonbreaking)
- avoid panic with parented scenes on deleted entities
Transform + Hierarchy
Gizmo
- Add a bounding box gizmo
- Added arc_2dfunction for gizmos
- Use AHash to get color from entity in bevy_gizmos
- do not crash when rendering only one gizmo
Reflection
- reflect: stable type path v2
- bevy_reflect: Better proxies
- bevy_reflect: FromReflect Ergonomics Implementation
- bevy_reflect: Allow #[reflect(default)]on enum variant fields
- Add FromReflect where Reflect is used
- Add get_at_mut to bevy_reflect::Map trait
- Reflect now requires DynamicTypePath. Remove Reflect::get_type_path()
- bevy_ui: Add FromReflectderives
- Add Reflect and FromReflect for AssetPath
- bevy_reflect: Fix trailing comma breaking derives
- Fix Box dyn Reflect struct with a hashmap in it panicking when clone_value is called on it
- bevy_reflect: Add ReflectFromReflectto the prelude
- bevy_reflect: Allow construction of MapIter outside of the bevy_reflect crate.
- bevy_reflect: Disambiguate type bounds in where clauses.
- adding reflection for Cow<'static, [T]>
- Do not require mut on ParsedPath::element_mut
- Reflect UUID
- Don't ignore additional entries in UntypedReflectDeserializerVisitor
- Construct Box dyn Reflect from world for ReflectComponent
- reflect: avoid deadlock in GenericTypeCell
App
- Allow tuples and single plugins in add_plugins, deprecateadd_plugin
- Merge ScheduleRunnerSettings into ScheduleRunnerPlugin
- correctly setup everything in the default run_once runner
- Fix Plugin::builddetection
- Fix not calling App::finish and App::cleanup in ScheduleRunnerPlugin
- Relaxed runner type from Fn to FnOnce
- Relax FnMut to FnOnce in app::edit_schedule
Windowing + Reflection
Hierarchy
- fix panic when moving child
- Remove Childrencomponent when callingdespawn_descendants
- Change despawn_descendantsto return&mut Self
Time
Assets
- Delay asset hot reloading
- Add support for custom glTF vertex attributes.
- Fix panic when using debug_asset_server
- unused_variableswarning when building with- filesystem_watcherfeature disabled
- bevy_asset: Add LoadContext::get_handle_untyped
Windowing
- Move cursor position to internal state
- Set cursor hittest during window creation
- do not set hit test unconditionally on window creation
- Add winit's wayland-csd-adwaitafeature to Bevy'swaylandfeature
- Support to set window theme and expose system window theme changed event
- Touchpad magnify and rotate events
- Fix windows not being centered properly when system interface is scaled
- Expose WindowDestroyed events
Animation
UI
- Ui Node Borders
- Add CSS Grid support to bevy_ui
- text_systemsplit
- Replace the local text queues in the text systems with flags stored in a component
- NoWrap- Textfeature
- add a default font
- UI texture atlas support
- Improved UI render batching
- Consistent screen-space coordinates
- UiImagehelper functions
- Perform text scaling calculations per text, not per glyph
- Fix size of clipped text glyphs.
- Apply scale factor to  ImageMeasuresizes
- Fix WebGPU error in "ui_pipeline" by adding a flat interpolate attribute
- Rename Interaction::Clicked -> Interaction::Pressed
- Flatten UI Styleproperties that useSize+ removeSize
- Split UI Overflowby axis
- Add methods for calculating the size and postion of UI nodes
- Skip the UV calculations for untextured UI nodes
- Fix text measurement algorithm
- Divide by UiScale when converting UI coordinates from physical to logical
- MeasureFuncimprovements
- Expose sorting methods in Children
- Fix min and max size using size value
- Fix the Text2dtext anchor's incorrect horizontal alignment
- Remove Val::Undefined
- Valviewport unit variants
- Remove the corresponding measure from Taffy when a CalculatedSizecomponent is removed.
- UiRectaxes constructor
- Fix the UV calculations for clipped and flipped ImageNodes
- Fix text systems broken when resolving merge conflicts in #8026
- Allow bevy_uicrate to compile without thetextfeature enabled
- Fix the double leaf node updates in flex_node_system
- also import the default handle when feature disabled
- measure_text_systemtext query fix
- Fix panic in example: text_wrap_debug.rs
- UI layout tree debug print
- Fix Node::physical_rectand add aphysical_sizemethod
- Perform relative_cursor_positioncalculation vectorwise inui_focus_system
- Add UiRect::px()andUiRect::percent()utils
- Add missing dependencies to bevy_textfeature
- Remove "bevy_text" feature attributes on imports used by non-text systems
- Growing UI nodes Fix
ECS
- Schedule-First: the new and improved add_systems
- Add OnTransition schedule that is ran between OnExit and OnEnter
- run_iffor- SystemConfigsvia anonymous system sets
- Remove OnUpdate system set
- Rename apply_system_buffers to apply_deferred
- Rename Command's "write" method to "apply"
- Require #[derive(Event)]on all Events
- Implement WorldQuery for EntityRef
- Improve or-with disjoint checks
- Add a method to run read-only systems using &World
- Reduce branching when inserting components
- Make #[system_param(ignore)]and#[world_query(ignore)]unnecessary
- Remove #[system_param(ignore)]and#[world_query(ignore)]
- Extend the WorldQuerymacro to tuple structs
- Make state private and only accessible through getter for State resource
- implement DerefforState<S>
- Inline more ECS functions
- Add a scopeAPI for world schedules
- Simplify system piping and make it more flexible
- Add any_component_removedcondition
- Use UnsafeWorldCellto increase code quality forSystemParam
- Improve safety for the multi-threaded executor using UnsafeWorldCell
- Migrate the rest of the engine to UnsafeWorldCell
- Make the Conditiontrait generic
- Add or_else combinator to run_conditions.rs
- Add iter_many_manual QueryState method
- Provide access to world storages via UnsafeWorldCell
- Added Has T WorldQuery type
- Add/fix track_callerattribute on panicking entity accessor methods
- Increase type safety and clarity for change detection
- Make WorldQuerymeta types unnameable
- Add a public constructor for Mut<T>
- Remove ChangeTrackers
- Derive Eq, PartialEq for Tick
- Initialize empty schedules when calling .in_scheduleif they do not already exist
- Replace multiple calls to add_systemwithadd_systems
- don't panic on unknown ambiguity
- add Clone to common conditions
- Make BundleInfo's fields not pub(crate)
- Pass query change ticks to QueryParIterinstead of always using change ticks fromWorld.
- Remove redundant bounds check in Entities::get
- Add World::try_run_schedule
- change not implemation to custom system struct
- Fix name conflicts caused by the SystemParamandWorldQuerymacros
- Check for conflicting accesses in assert_is_system
- Fix field visibility for read-only WorldQuerytypes
- Or<T>should be a new type of- PhantomData<T>
- Make standard commands more ergonomic (in niche cases)
- Remove base set error variants of ScheduleBuildError
- Replace some unsafe system executor code with safe code
- Update increment_change_tickto return a strongly-typedTick
- Move event traces to detailed_trace!
- Only trigger state transitons if next_state != old_state
- Fix panics and docs when using World schedules
- Improve warning for Send resources marked as non_send
- Reorganize system modules
- Fix boxed labels
- Simplify world schedule methods
- Just print out name string, not the entire Name struct
- Manually implement common traits for EventId
- Replace remaining uses of &T, Changed<T>withRefin UI system queries
- Rename UnsafeWorldCell::read_change_tick
- Improve encapsulation for commands and add docs
- Fix all_tuples + added docs.
- Add newandmapmethods toRef
- Allow unsized types as mapped value in Ref::map
- Implement CloneforCombinatorSystem
- Add get_ref to EntityRef
- Make QueryParIter::for_each_uncheckedprivate
- Simplify the ComponentIdFortype
- Add last_changed_tick and added_tick to ComponentTicks
- Require read-only queries in QueryState::par_iter
- Fix any_component_removed
- Deprecate type aliases for WorldQuery::Fetch
- bevy_ecs: add untyped methods for inserting components and bundles
- Move AppTypeRegistry to bevy_ecs
- skip check change tick for apply_deferred systems
- Split the bevy_ecs reflect.rs module
- Make function pointers of ecs Reflect* public
Rendering + Reflection + Scenes
Tasks
Math
- Re-export glam_assert feature
- Fix CubicCurve::iter_samples iteration count
- Add integer equivalents for Rect
- Add CubicCurve::segment_count+iter_samplesadjustment
Rendering + Assets + Meta
ECS + Scenes
Util
Input
- Add gamepad rumble support to bevy_input
- Rename keys like LAlttoAltLeft
- Add window entity to mouse and keyboard events
- Add get_unclamped to Axis
Upgrades
- Upgrade Taffy requirement to v0.3.5
- Update ruzstd and basis universal
- Updated to wgpu 0.16.0, wgpu-hal 0.16.0 and naga 0.12.0
- Update sysinfo requirement from 0.28.1 to 0.29.0
- Update libloading requirement from 0.7 to 0.8
- update syn, encase, glam and hexasphere
- Update android_log-sys requirement from 0.2.0 to 0.3.0
- update bitflags to 2.3
- Update ruzstd requirement from 0.3.1 to 0.4.0
- Update notify requirement from 5.0.0 to 6.0.0
- Bump hashbrown to 0.14
- update ahash and hashbrown
- Bump accesskit and accesskit_winit
Examples
- new example showcase tool
- Adding a bezier curve example
- Add low level post process example using a custom render pass
- Add example to demonstrate manual generation and UV mapping of 3D mesh (generate_custom_mesh) solve #4922
- Add overflow_debugexample
- UI text wrapping and LineBreakOnexample
- Size Constraints Example
- UI Display and Visibility Example
Version 0.10.0 (2023-03-06)
Added
- Accessibility: Added Labelfor marking text specifically as a label for UI controls.
- Accessibility: Integrate with and expose AccessKit accessibility.
- App: App::setup
- App: SubApp::new
- App: Bevy apps will now log system information on startup by default
- Audio Expose symphonia features from rodio in bevy_audio and bevy
- Audio: Basic spatial audio
- ECS: bevy_ptr::dangling_with_align: creates a well-aligned dangling pointer to a type whose alignment is not known at compile time.
- ECS: Column::get_added_ticks
- ECS: Column::get_column_ticks
- ECS: DetectChanges::set_if_neq: triggering change detection when the new and previous values are equal. This will work on both components and resources.
- ECS: SparseSet::get_added_ticks
- ECS: SparseSet::get_column_ticks
- ECS: Tick, a wrapper around a single change detection tick.
- ECS: UnsafeWorldCell::world_mutnow exists and can be used to get a&mut Worldout ofUnsafeWorldCell
- ECS: WorldIdnow implements theFromWorldtrait.
- ECS: A core::fmt::Pointerimpl toPtr,PtrMutandOwnedPtr.
- ECS: Add bevy_ecs::schedule_v3module
- ECS: Add EntityMap::iter()
- ECS: Add Refto the prelude
- ECS: Add report_setsoption toScheduleBuildSettings
- ECS: add Resources::iterto iterate over all resource IDs
- ECS: add UnsafeWorldCellabstraction
- ECS: Add World::clear_resources&World::clear_all
- ECS: Add a basic example for system ordering
- ECS: Add a missing impl of ReadOnlySystemParamforOption<NonSend<>>
- ECS: add a spawn_on_external method to allow spawning on the scope’s thread or an external thread
- ECS: Add const Entity::PLACEHOLDER
- ECS: Add example to show how to use apply_system_buffers
- ECS: Add logging variants of system piping
- ECS: Add safe constructors for untyped pointers PtrandPtrMut
- ECS: Add unit test with system that panics
- ECS: Add wrapping_add to change_tick
- ECS: Added “base sets” and ported CoreSet to use them.
- ECS: Added as_mutandas_refmethods toMutUntyped.
- ECS: Added bevy::ecs::system::assert_is_read_only_system.
- ECS: Added Components::resource_id.
- ECS: Added DebugNameworld query for more human friendly debug names of entities.
- ECS: Added distributive_run_iftoIntoSystemConfigsto enable adding a run condition to each system when usingadd_systems.
- ECS: Added EntityLocation::table_id
- ECS: Added EntityLocation::table_row.
- ECS: Added IntoIteratorimplementation forEventReaderso you can now do&mut readerinstead ofreader.iter()for events.
- ECS: Added len,is_empty,itermethods on SparseSets.
- ECS: Added ManualEventReader::clear()
- ECS: Added MutUntyped::with_typewhich allows converting into aMut<T>
- ECS: Added new_for_testonComponentInfoto make test code easy.
- ECS: Added notcondition.
- ECS: Added on_timerandon_fixed_timerrun conditions
- ECS: Added OwningPtr::read_unaligned.
- ECS: Added ReadOnlySystem, which is implemented for anySystemtype whose parameters all implementReadOnlySystemParam.
- ECS: Added Refwhich allows inspecting change detection flags in an immutable way
- ECS: Added shrinkandas_refmethods toPtrMut.
- ECS: Added SystemMeta::name
- ECS: Added SystemState::get_manual_mut
- ECS: Added SystemState::get_manual
- ECS: Added SystemState::update_archetypes
- ECS: Added a large number of methods on Appto work with schedules ergonomically
- ECS: Added conversions from Ptr,PtrMut, andOwningPtrtoNonNull<u8>.
- ECS: Added rore common run conditions: on_event, resource change detection,state_changed,any_with_component
- ECS: Added support for variants of bevy_ptrtypes that do not require being correctly aligned for the pointee type.
- ECS: Added the CoreScheduleenum
- ECS: Added the SystemParamtypeDeferred<T>, which can be used to deferWorldmutations. Powered by the new traitSystemBuffer.
- ECS: Added the extension methods .and_then(...)and.or_else(...)to run conditions, which allows combining run conditions with short-circuiting behavior.
- ECS: Added the marker trait BaseSystemSet, which is distinguished from aFreeSystemSet. These are both subtraits ofSystemSet.
- ECS: Added the method reborrowtoMut,ResMut,NonSendMut, andMutUntyped.
- ECS: Added the private prepare_view_uniformssystem now has a public system set for scheduling purposes, calledViewSet::PrepareUniforms
- ECS: Added the trait Combine, which can be used with the newCombinatorSystemto create system combinators with custom behavior.
- ECS: Added the trait EntityCommand. This is a counterpart ofCommandfor types that execute code for a single entity.
- ECS: introduce EntityLocation::INVALID const and adjust Entities::get comment
- ECS: States derive macro
- ECS: support for tuple structs and unit structs to the SystemParamderive macro.
- Hierarchy: Add Transform::look_to
- Hierarchy: Added add_child,set_parentandremove_parenttoEntityMut
- Hierarchy: Added clear_children(&mut self) -> &mut Selfandreplace_children(&mut self, children: &[Entity]) -> &mut Selffunction inBuildChildrentrait
- Hierarchy: Added ClearChildrenandReplaceChildrenstruct
- Hierarchy: Added push_and_replace_children_commandsandpush_and_clear_children_commandstest
- Hierarchy: Added the BuildChildrenTransformExttrait
- Input: add Input Method Editor support
- Input: Added Axis<T>::devices
- INput: Added common run conditions for bevy_input
- Macro: add helper for macro to get either bevy::x or bevy_x depending on how it was imported
- Math: CubicBezier2d,CubicBezier3d,QuadraticBezier2d, andQuadraticBezier3dtypes with methods for sampling position, velocity, and acceleration. The genericBeziertype is also available, and generic over any degree of Bezier curve.
- Math: CubicBezierEasing, with additional methods to allow for smooth easing animations.
- 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.
- New reflection path syntax: struct field access by index (example syntax: foo#1)
- Reflect  Stategenerics other than justRandomStatecan now be reflected for bothhashbrown::HashMapandcollections::HashMap
- Reflect: Aabbnow implementsFromReflect.
- Reflect: derive(Reflect)now supports structs and enums that contain generic types
- Reflect: ParsedPathfor cached reflection paths
- Reflect: std::collections::HashMapcan now be reflected
- Reflect: std::collections::VecDequenow implementsReflectand all relevant traits.
- Reflect: Add reflection path support for Tupletypes
- Reflect: Added ArrayIter::new.
- Reflect: Added FromReflect::take_from_reflect
- Reflect: Added List::insertandList::remove.
- Reflect: Added Map::remove
- Reflect: Added ReflectFromReflect
- Reflect: Added TypeRegistrationDeserializer, which simplifies getting a&TypeRegistrationwhile deserializing a string.
- Reflect: Added methods to Listthat were previously provided byArray
- Reflect: Added support for enums in reflection paths
- Reflect: Added the bevy_reflect_compile_fail_testscrate for testing compilation errors
- Reflect: bevy_reflect: Add missing primitive registrations
- Reflect: impl Reflectfor&'static Path
- Reflect: implement ReflectforFxaa
- Reflect: implement TypeUuidfor primitives and fix multiple-parameter generics having the sameTypeUuid
- Reflect: Implemented Reflect+FromReflectfor window events and related types. These types are automatically registered when adding theWindowPlugin.
- Reflect: Register Hash for glam types
- Reflect: Register missing reflected types for bevy_render
- Render: A pub field extrastoGltfNode/GltfMesh/GltfPrimitivewhich store extras
- Render: A pub field material_extrastoGltfPrimitivewhich store material extras
- Render: Add 'Color::as_lcha' function (#7757)
- Render: Add Camera::viewport_to_world_2d
- Render: Add a more familiar hex color entry
- Render: add ambient lighting hook
- Render: Add bevy logo to the lighting example to demo alpha mask shadows
- Render: Add Box::from_corners method
- Render: add OpenGL and DX11 backends
- Render: Add orthographic camera support back to directional shadows
- Render: add standard material depth bias to pipeline
- Render: Add support for Rgb9e5Ufloat textures
- Render: Added buffer usage field to buffers
- Render: can define a value from inside a shader
- Render: EnvironmentMapLight support for WebGL2
- Render: Implement ReadOnlySystemParamforExtract<>
- Render: Initial tonemapping options
- Render: ShaderDefVal: add an UIntoption
- Render: Support raw buffers in AsBindGroup macro
- Rendering: Aabbnow implementsCopy.
- Rendering: ExtractComponentcan specify output type, and outputting is optional.
- Rendering: Mssaa::samples
- Rendering: Add #else ifdefto shader preprocessing.
- Rendering: Add a field push_constant_rangesto RenderPipelineDescriptor and ComputePipelineDescriptor
- Rendering: Added  Material::prepass_vertex_shader()andMaterial::prepass_fragment_shader()to control the prepass from theMaterial
- Rendering: Added BloomSettings:lf_boost,BloomSettings:lf_boost_curvature,BloomSettings::high_pass_frequencyandBloomSettings::composite_mode.
- Rendering: Added BufferVec::extend
- Rendering: Added BufferVec::truncate
- Rendering: Added Camera::msaa_writebackwhich can enable and disable msaa writeback.
- Rendering: Added CascadeShadowConfigBuilderto help with creatingCascadeShadowConfig
- Rendering: Added DepthPrepassandNormalPrepasscomponent to control which textures will be created by the prepass and available in later passes.
- Rendering: Added Draw<T>::prepareoptional trait function.
- Rendering: Added DrawFunctionsInternals::id()
- Rendering: Added FallbackImageCubemap.
- Rendering: Added FogFalloffenum for selecting between three widely used “traditional” fog falloff modes:Linear,ExponentialandExponentialSquared, as well as a more advancedAtmosphericfog;
- Rendering: Added get_input_node
- Rendering: Added Lchamember tobevy_render::color::Colorenum
- Rendering: Added MainTaret::main_texture_other
- Rendering: Added PhaseItem::entity
- Rendering: Added prepass_enabledflag to theMaterialPluginthat will control if a material uses the prepass or not.
- Rendering: Added prepass_enabledflag to thePbrPluginto control if the StandardMaterial uses the prepass. Currently defaults to false.
- Rendering: Added PrepassNodethat runs before the main pass
- Rendering: Added PrepassPluginto extract/prepare/queue the necessary data
- Rendering: Added RenderCommand::ItemorldQueryassociated type.
- Rendering: Added RenderCommand::ViewWorldQueryassociated type.
- Rendering: Added RenderContext::add_command_buffer
- Rendering: Added RenderContext::begin_tracked_render_pass.
- Rendering: Added RenderContext::finish
- Rendering: Added RenderContext::new
- Rendering: Added SortedCameras, exposing information that was previously internal to the camera driver node.
- Rendering: Added try_add_node_edge
- Rendering: Added try_add_slot_edge
- Rendering: Added with_r,with_g,with_b, andwith_atoColor.
- Rendering: Added 2x and 8x sample counts for MSAA.
- Rendering: Added a #[storage(index)]attribute to the deriveAsBindGroupmacro.
- Rendering: Added an EnvironmentMapLightcamera component that adds additional ambient light to a scene.
- Rendering: Added argument to ScalingMode::WindowSizethat specifies the number of pixels that equals one world unit.
- Rendering: Added cylinder shape
- Rendering: Added example shaders/texture_binding_array.
- Rendering: Added new capabilities for shader validation.
- Rendering: Added specializable BlitPipelineand ported the upscaling node to use this.
- Rendering: Added subdivisions field to shape::Plane
- Rendering: Added support for additive and multiplicative blend modes in the PBR StandardMaterial, viaAlphaMode::AddandAlphaMode::Multiply;
- Rendering: Added support for distance-based fog effects for PBR materials, controllable per-camera via the new FogSettingscomponent;
- Rendering: Added support for KTX2 R8_SRGB,R8_UNORM,R8G8_SRGB,R8G8_UNORM,R8G8B8_SRGB,R8G8B8_UNORMformats by converting to supported wgpu formats as appropriate
- Rendering: Added support for premultiplied alpha in the PBR StandardMaterial, viaAlphaMode::Premultiplied;
- Rendering: Added the ability to #[derive(ExtractComponent)]with an optional filter.
- Rendering: Added: bevy_render::color::LchRepresentationstruct
- Rendering: Clone impl for MaterialPipeline
- Rendering: Implemented Clonefor all pipeline types.
- Rendering: Smooth Transition between Animations
- Support optional env variable BEVY_ASSET_ROOTto explicitly specify root assets directory.
- Task: Add thread create/destroy callbacks to TaskPool
- Tasks: Added ThreadExecutorthat can only be ticked on one thread.
- the extension methods in_schedule(label)andon_startup()for configuring the schedule a system belongs to.
- Transform: Added GlobalTransform::reparented_to
- UI: Size::newis nowconst
- UI: Add const to methods and const defaults to bevy_ui
- UI: Added all,widthandheightfunctions toSize.
- UI: Added Anchorcomponent toText2dBundle
- UI: Added CalculatedSize::preserve_aspect_ratio
- UI: Added Componentderive toAnchor
- UI: Added RelativeCursorPosition, and an example showcasing it
- UI: Added Text::with_linebreak_behaviour
- UI: Added TextBundle::with_linebreak_behaviour
- UI: Added a BackgroundColorcomponent toTextBundle.
- UI: Added a helper method with_background_colortoTextBundle.
- UI: Added the SpaceEvenlyvariant toAlignContent.
- UI: Added the StartandEndvariants toAlignItems,AlignSelf,AlignContentandJustifyContent.
- UI: Adds flip_xandflip_yfields toExtractedUiNode.
- Utils: Added SyncCell::read, which allows shared access to values that already implement theSynctrait.
- Utils: Added the guard type bevy_utils::OnDrop.
- Window: Add Windows::get_focused(_mut)
- Window: add span to winit event handler
- Window: Transparent window on macos
- Windowing: WindowDescriptorrenamed toWindow.
- Windowing: Added hittesttoWindowAttributes
- 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.
- Windowing: Added WindowDescriptor.always_on_topwhich configures a window to stay on top.
- Windowing: Added an example cargo run --example fallthrough
- Windowing: Added the hittest’s setters/getters
- Windowing: Modifed the WindowDescriptor’sDefaultimpl.
- Windowing: Modified the WindowBuilder
Changed
- Animation: AnimationPlayerthat are on a child or descendant of another entity with another player will no longer be run.
- Animation: Animation sampling now runs fully multi-threaded using threads from ComputeTaskPool.
- App: Adapt path type of dynamically_load_plugin
- App: Break CorePlugin into TaskPoolPlugin, TypeRegistrationPlugin, FrameCountPlugin.
- App: Increment FrameCount in CoreStage::Last.
- App::run() will now panic when called from Plugin::build()
- Asset: AssetIo::watch_path_for_changesallows watched path and path to reload to differ
- Asset: make HandleUntyped::id private
- Audio: AudioOutputis now aResource. It's no longer!Send
- Audio: AudioOutput is actually a normal resource now, not a non-send resource
- ECS: .label(SystemLabel)is now referred to as.in_set(SystemSet)
- ECS: App::add_default_labelsis nowApp::add_default_sets
- ECS: App::add_system_setwas renamed toApp::add_systems
- ECS: Archetypeindices andTablerows have been newtyped asArchetypeRowandTableRow.
- ECS: ArchetypeGenerationnow implementsOrdandPartialOrd.
- ECS: bevy_pbr::add_clustersis no longer an exclusive system
- ECS: Bundle::get_componentsnow takes aFnMut(StorageType, OwningPtr). The provided storage type must be correct for the component being fetched.
- ECS: ChangeTrackers<T>has been deprecated. It will be removed in Bevy 0.11.
- ECS: Commandclosures no longer need to implement the marker traitstd::marker::Sync.
- ECS: CoreStageandStartupStageenums are nowCoreSetandStartupSet
- ECS: EntityMut::world_scopenow allows returning a value from the immediately-computed closure.
- ECS: EntityMut: renameremove_intersectiontoremoveandremovetotake
- ECS: EventReader::clearnow takes a mutable reference instead of consuming the event reader.
- ECS: EventWriter::send_batchwill only log a TRACE level log if the batch is non-empty.
- ECS: oldest_idandget_eventconvenience methods added toEvents<T>.
- ECS: OwningPtr::drop_aswill now panic in debug builds if the pointer is not aligned.
- ECS: OwningPtr::readwill now panic in debug builds if the pointer is not aligned.
- ECS: Ptr::derefwill now panic in debug builds if the pointer is not aligned.
- ECS: PtrMut::deref_mutwill now panic in debug builds if the pointer is not aligned.
- ECS: Query::par_for_each(_mut)has been changed toQuery::par_iter(_mut)and will now automatically try to produce a batch size for callers based on the currentWorldstate.
- ECS: RemovedComponentsnow internally uses anEvents<RemovedComponentsEntity>instead of anEvents<Entity>
- ECS: SceneSpawnerSystemnow runs underCoreSet::Update, rather thanCoreStage::PreUpdate.at_end().
- ECS: StartupSetis now a base set
- ECS: System::default_labelsis nowSystem::default_system_sets.
- ECS: SystemLabeltrait was replaced bySystemSet
- ECS: SystemParamState::applynow takes a&SystemMetaparameter in addition to the provided&mut World.
- ECS: SystemTypeIdLabel<T>was replaced bySystemSetType<T>
- ECS: tick_global_task_pools_on_main_threadis no longer run as an exclusive system. Instead, it has been replaced bytick_global_task_pools, which uses aNonSendresource to force running on the main thread.
- ECS: Tick::is_older_thanwas renamed toTick::is_newer_than. This is not a functional change, since that was what was always being calculated, despite the wrong name.
- ECS: UnsafeWorldCell::worldis now used to get immutable access to the whole world instead of just the metadata which can now be done viaUnsafeWorldCell::world_metadata
- ECS: World::init_non_send_resourcenow returns the generatedComponentId.
- ECS: World::init_resourcenow returns the generatedComponentId.
- ECS: World::iter_entitiesnow returns an iterator ofEntityRefinstead ofEntity.
- ECS: Worlds can now only hold a maximum of 2^32 - 1 tables.
- ECS: Worlds can now only hold a maximum of 2^32- 1 archetypes.
- ECS: WorldIdnow implementsSystemParamand will return the id of the world the system is running in
- ECS: Adding rendering extraction systems now panics rather than silently failing if no subapp with the RenderApplabel is found.
- ECS: Allow adding systems to multiple sets that share the same base set
- ECS: change is_system_type() -> booltosystem_type() -> Option<TypeId>
- ECS: changed some UnsafeWorldCellmethods to takeselfinstead of&self/&mut selfsince there is literally no point to them doing that
- ECS: Changed: Query::for_each(_mut),QueryParIterwill now leverage autovectorization to speed up query iteration where possible.
- ECS: Default to using ExecutorKind::SingleThreaded on wasm32
- ECS: Ensure Querydoes not use the wrongWorld
- ECS: Exclusive systems may now be used with system piping.
- ECS: expose ScheduleGraphfor use in third party tools
- ECS: extract topsort logic to a new method, one pass to detect cycles and …
- ECS: Fixed time steps now use a schedule (CoreSchedule::FixedTimeStep) rather than a run criteria.
- ECS: for disconnected, use Vec instead of HashSet to reduce insert overhead
- ECS: Implement SparseSetIndexforWorldId
- ECS: Improve the panic message for schedule build errors
- ECS: Lift the 16-field limit from the SystemParamderive
- ECS: Make EntityRef::newunsafe
- ECS: Make Queryfields private
- ECS: make ScheduleGraph::initializepublic
- ECS: Make boxed conditions read-only
- ECS: Make RemovedComponents mirror EventReaders api surface
- ECS: Mark TableRow and TableId as repr(transparent)
- ECS: Most APIs returning &UnsafeCell<ComponentTicks>now returnsTickCellsinstead, which contains two separate&UnsafeCell<Tick>for either component ticks.
- ECS: Move MainThreadExecutor for stageless migration.
- ECS: Move safe operations out of unsafeblocks inQuery
- ECS: Optimize .nth()and.last()for event iterators
- ECS: Optimize Iterator::countfor event iterators
- ECS: Provide public EntityRef::get_change_ticks_by_idthat takesComponentId
- ECS: refactor: move internals from entity_reftoWorld, addSAFETYcomments
- ECS: Rename EntityIdtoEntityIndex
- ECS: Rename UnsafeWorldCellEntityReftoUnsafeEntityCell
- ECS: Rename schedule v3 to schedule
- ECS: Rename state_equals condition to in_state
- ECS: Replace World::read_change_tickswithWorld::change_tickswithinbevy_ecscrate
- ECS: Replaced the trait ReadOnlySystemParamFetchwithReadOnlySystemParam.
- ECS: Simplified the SystemParamFunctionandExclusiveSystemParamFunctiontraits.
- ECS: Speed up CommandQueueby storing commands more densely
- ECS: Stageless: move final apply outside of spawned executor
- ECS: Stageless: prettier cycle reporting
- ECS: Systems without CommandsandParallelCommandswill no longer show asystem_commandsspan when profiling.
- ECS: The ReportHierarchyIssueresource now has a public constructor (new), and implementsPartialEq
- ECS: The StartupSchedulelabel is now defined as part of theCoreSchedulesenum
- ECS: The SystemParamderive is now more flexible, allowing you to omit unused lifetime parameters.
- ECS: the top level bevy_ecs::schedulemodule was replaced withbevy_ecs::scheduling
- ECS: Use Worldhelper methods for sendingHierarchyEvents
- ECS: Use a bounded channel in the multithreaded executor
- ECS: Use a default implementation for set_if_neq
- ECS: Use consistent names for marker generics
- ECS: Use correct terminology for a NonSendrun condition panic
- ECS: Use default-implemented methods for IntoSystemConfig<>
- ECS: use try_send to replace send.await, unbounded channel should always b…
- General: The MSRV of the engine is now 1.67.
- Input: Bump gilrs version to 0.10
- IOS, Android... same thing
- Math: Update glamto0.23
- Math: use Mul<f32>to double the value ofVec3
- Reflect: bevy_reflect now uses a fixed state for its hasher, which means the output of Reflect::reflect_hashis now deterministic across processes.
- Reflect: Changed function signatures of ReflectComponentmethods,apply,remove,contains, andreflect.
- Reflect: Changed the List::pushandList::popto have default implementations.
- Reflect: Registered SmallVec<[Entity; 8]>in the type registry
- Renamed methods on GetPath:- path->- reflect_path
- path_mut->- reflect_path_mut
- get_path->- path
- get_path_mut->- path_mut
 
- Render: Allow prepass in webgl
- Render: bevy_pbr: Avoid copying structs and using registers in shaders
- Render: bevy_pbr: Clear fog DynamicUniformBuffer before populating each frame
- Render: bevy_render: Run calculate_bounds in the end-of-update exclusive systems
- Render: Change the glTF loader to use Camera3dBundle
- Render: Changed &mut PipelineCache to &PipelineCache
- Render: Intepret glTF colors as linear instead of sRGB
- Render: Move 'startup' Resource WgpuSettingsinto theRenderPlugin
- Render: Move prepass functions to prepass_utils
- Render: Only compute sprite color once per quad
- Render: Only execute #defineif current scope is accepting lines
- Render: Pipelined Rendering
- Render: Refactor Globals and View structs into separate shaders
- Render: Replace UUID based IDs with a atomic-counted ones
- Render: run clear trackers on render world
- Render: set cull mode: None for Mesh2d
- Render: Shader defs can now have a value
- Render: Shrink ComputedVisibility
- Render: Use prepass shaders for shadows
- Rendering: add_node_edgeis now infallible (panics on error)
- Rendering: add_slot_edgeis now infallible (panics on error)
- Rendering: AsBindGroupis now object-safe.
- Rendering: BloomSettings::kneerenamed toBloomPrefilterSettings::softness.
- Rendering: BloomSettings::thresholdrenamed toBloomPrefilterSettings::threshold.
- Rendering: HexColorError::Hexhas been renamed toHexColorError::Char
- Rendering: input_nodenow panics onNone
- Rendering: ktx2andzstdare now part of bevy’s default enabled features
- Rendering: Msaais now enum
- Rendering: PipelineCacheno longer requires mutable access in order to queue render / compute pipelines.
- Rendering: RenderContext::command_encoderis now private. Use the accessorRenderContext::command_encoder()instead.
- Rendering: RenderContext::render_deviceis now private. Use the accessorRenderContext::render_device()instead.
- Rendering: RenderContextnow supports adding externalCommandBuffers for inclusion into the render graphs. These buffers can be encoded outside of the render graph (i.e. in a system).
- Rendering: scaleis now applied before updatingarea. Reading from it will takescaleinto account.
- Rendering: SkinnedMeshJoints::buildnow takes a&mut BufferVecinstead of a&mut Vecas a parameter.
- Rendering: StandardMaterialnow defaults to a dielectric material (0.0metallic) with 0.5perceptual_roughness.
- Rendering: TrackedRenderPassnow requires a&RenderDeviceon construction.
- Rendering: Visibilityis now an enum
- Rendering: Bloom now looks different.
- Rendering: Directional lights now use cascaded shadow maps for improved shadow quality.
- Rendering: ExtractedMaterials, extract_materials and prepare_materials are now public
- Rendering: For performance reasons, some detailed renderer trace logs now require the use of cargo feature detailed_tracein addition to setting the log level toTRACEin order to be shown.
- Rendering: Made cameras with the same target share the same main_texturetracker, which ensures continuity across cameras.
- Rendering: Renamed ScalingMode::AutotoScalingMode::AutoMin.
- Rendering: Renamed ScalingMode::NonetoScalingMode::Fixed
- Rendering: Renamed window_origintoviewport_origin
- Rendering: Renamed the priorityfield onCameratoorder.
- Rendering: Replaced left,right,bottom, andtopfields with a singlearea: Rect
- Rendering: StandardMaterials will now appear brighter and more saturated at high roughness, due to internal material changes. This is more physically correct.
- Rendering: The layoutfield ofRenderPipelineDescriptorandComputePipelineDescriptoris now mandatory.
- Rendering: The rangefindermodule has been moved into therender_phasemodule.
- Rendering: The bloom example has been renamed to bloom_3d and improved. A bloom_2d example was added.
- Rendering: the SubApp Extract stage has been separated from running the sub app schedule.
- Rendering: To enable multiple RenderPhasesto share the sameTrackedRenderPass, theRenderPhase::rendersignature has changed.
- Rendering: update its Transformin order to preserve itsGlobalTransformafter the parent change
- Rendering: Updated to wgpu 0.15, wgpu-hal 0.15.1, and naga 0.11
- 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.dllanddxil.dll)
- Rendering: You can now set up the rendering code of a RenderPhasedirectly using theRenderPhase::rendermethod, instead of implementing it manually in your render graph node.
- Scenes: SceneSpawner::spawn_dynamicnow returnsInstanceIdinstead of().
- Shape: Change From<Icosphere>toTryFrom<Icosphere>
- Tasks: Scopenow usesFallibleTaskto await the cancellation of all remaining tasks when it’s dropped.
- Time: Time::set_relative_speed_fXXnow allows a relative speed of -0.0.
- UI: FocusPolicydefault has changed fromFocusPolicy::BlocktoFocusPolicy::Pass
- UI: TextPipeline::queue_textandGlyphBrush::compute_glyphsnow need a TextLineBreakBehaviour argument, in order to pass through the new field.
- UI: update_image_calculated_size_systemsetspreserve_aspect_ratioto true for nodes with images.
- UI: Added Changed<Node>to the change detection query oftext_system. This ensures that any change in the size of a text node will cause any text it contains to be recomputed.
- UI: Changed Size::heightso it sets thewidthtoVal::AUTO.
- UI: Changed Size::widthso it sets theheighttoVal::AUTO.
- UI: Changed TextAlignmentinto an enum withLeft,Center, andRightvariants.
- UI: Changed extract_uinodes to extract the flip_x and flip_y values from UiImage.
- UI: Changed prepare_uinodes to swap the UV coordinates as required.
- UI: Changed Taffy version to 0.3.3 and disabled its gridfeature.
- UI: Changed the Sizewidthandheightdefault values toVal::Auto
- UI: Changed the sizefield ofCalculatedSizeto a Vec2.
- UI: Changed UiImage derefs to texture field accesses.
- UI: Changed UiImage to a struct with texture, flip_x, and flip_y fields.
- UI: Modified the text2dexample to show both linebreaking behaviours.
- UI: Renamed image_node_systemtoupdate_image_calculated_size_system
- UI: Renamed the background_colorfield ofExtractedUiNodetocolor.
- 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.
- UI: The MeasureFunconly preserves the aspect ratio whenpreserve_aspect_ratiois true.
- UI: Updated from_stylefor Taffy 0.3.3.
- UI: Upgraded to Taffy 0.2, improving UI layout performance significantly and adding the flexbox gapproperty andAlignContent::SpaceEvenly.
- UI: Use f32::INFINITYinstead off32::MAXto represent unbounded text in Text2dBounds
- Window: expose cursor position with scale
- Window: Make WindowId::primary() const
- Window: revert stage changed for window closing
- Windowing: WindowIdis nowEntity.
- Windowing: Moved changed_windowanddespawn_windowsystems toCoreStage::Lastto avoid systems making changes to theWindowbetweenchanged_windowand the end of the frame as they would be ignored.
- Windowing: Requesting maximization/minimization is done on the [Window::state] field.
- Windowing: Width/height consolidated into a WindowResolutioncomponent.
Removed
- App: Removed App::add_sub_app
- App: Rename dynamic feature
- ECS: Remove .on_update method to improve API consistency and clarity
- ECS: Remove BuildWorldChildrenimpl fromWorldChildBuilder
- ECS: Remove a duplicate lookup in apply_state_transitions
- ECS: Remove an incorrect impl of ReadOnlySystemParamforNonSendMut
- ECS: Remove APIs deprecated in 0.9
- ECS: Remove broken DoubleEndedIteratorimpls on event iterators
- ECS: Remove duplicate lookups from Resourceinitialization
- ECS: Remove useless access to archetype in UnsafeWorldCell::fetch_table
- ECS: Removed AddBundle.Edges::get_add_bundlenow returnsOption<ArchetypeId>
- ECS: Removed Archetype::newandArchetype::is_empty.
- ECS: Removed ArchetypeComponentId::newandArchetypeComponentId::value.
- ECS: Removed ArchetypeGeneration::value
- ECS: Removed ArchetypeId::newandArchetypeId::value.
- ECS: Removed ArchetypeIdentity.
- ECS: Removed Archetypes’sDefaultimplementation.
- ECS: Removed AsSystemLabeltrait
- ECS: Removed Entities::alloc_at_without_replacementandAllocAtWithoutReplacement.
- ECS: Removed Entities’sDefaultimplementation.
- ECS: Removed EntityMeta
- ECS: Removed on_hierarchy_reports_enabledrun criteria (now just uses an ad hoc resource checking run condition)
- ECS: Removed RunCriteriaLabel
- ECS: Removed RunCriteriaLabel
- ECS: Removed SystemParamFetch, its functionality has been moved toSystemParamState.
- ECS: Removed Table::component_capacity
- ECS: Removed transform_propagate_system_set: this was a nonstandard pattern that didn’t actually provide enough control. The systems are alreadypub: the docs have been updated to ensure that the third-party usage is clear.
- ECS: removed UnsafeWorldCell::storagessince that is probably unsound since storages contains the actual component/resource data not just metadata
- ECS: Removed stages, and all code that mentions stages
- ECS: Removed states have been dramatically simplified, and no longer use a stack
- ECS: Removed systems in RenderSet/Stage::Extractno longer warn when they do not read data from the main world
- ECS: Removed the bound T: SyncfromLocal<T>when used as anExclusiveSystemParam.
- ECS: Removed the method ExclusiveSystemParamState::apply.
- ECS: Removed the trait ExclusiveSystemParamState, merging its functionality intoExclusiveSystemParam.
- ECS: Removed the trait SystemParamState, merging its functionality intoSystemParam.
- ECS: Support SystemParamtypes with const generics
- ECS: Use T::Storage::STORAGE_TYPE to optimize out unused branches
- Hierarchy: Expose transform propagate systems
- Hierarchy: Make adding children idempotent
- Hierarchy: Remove EntityCommands::add_children
- Input: Gamepad events refactor
- Reflect: Make proc macros hygienic in bevy_reflect_derive
- Reflect: Removed #[module]helper attribute forReflectderives (this is not currently used)
- Reflect: Removed Arrayas supertrait ofList
- Reflect: Removed PixelInfoand getpixel_sizefrom wgpu
- Reflect: Removed ReflectSerializeandReflectDeserializeregistrations from most glam types
- Remove unnecessary Defaultimpl of HandleType
- Remove warning about missed events due to false positives
- Render: Make Core Pipeline Graph Nodes Public
- Render: Optimize color computation in prepare_uinodes
- Render: Organized scene_viewer into plugins for reuse and organization
- Render: put update_frusta::<Projection>inUpdateProjectionFrustaset
- Render: Remove dependency on the mesh struct in the pbr function
- Render: remove potential ub in render_resource_wrapper
- Render: Remove redundant bitwise OR TEXTURE_ADAPTER_SPECIFIC_FORMAT_FEATURES
- Render: Remove the early exit to make sure the prepass textures are cleared
- Render: remove the image loaded check for nodes without images in extract_uinodes
- Render: Remove unnecessary alternate create_texture path in prepare_asset for Image
- Render: remove unused var in fxaa shader
- Render: set AVAILABLE_STORAGE_BUFFER_BINDINGS to the actual number of buffers available
- Render: Use Timeresourceinstead ofExtractingTime
- Render: use better set inheritance in render systems
- Render: use blendstate blend for alphamode::blend
- Render: Use Image::default for 1 pixel white texture directly
- Rendering: Removed bevy_render::render_phase::DrawState. It was not usable in any form outside ofbevy_render.
- Rendering: Removed BloomSettings::scale.
- Rendering: Removed EntityPhaseItemtrait
- Rendering: Removed ExtractedJoints.
- Rendering: Removed SetShadowViewBindGroup,queue_shadow_view_bind_group(), andLightMeta::shadow_view_bind_groupin favor of reusing the prepass view bind group.
- Rendering: Removed the renderfeature group.
- Scene: scene viewer: can select a scene from the asset path
- Text: Warn instead of erroring when max_font_atlases is exceeded
- Transform: Removed GlobalTransform::translation_mut
- UI: Re-enable taffy send+sync assert
- UI: Remove TextError::ExceedMaxTextAtlases(usize)variant
- UI: Remove needless manual default impl of ButtonBundle
- UI: Removed HorizontalAlignandVerticalAlign.
- UI: Removed ImageMode.
- UI: Removed QueuedText
- UI: Removed the image_modefield fromImageBundle
- UI: Removed the Val<->f32conversion forCalculatedSize.
- Update toml_edit to 0.18
- Update tracing-chrome requirement from 0.6.0 to 0.7.0
- Window: Remove unnecessary windows.rs file
- Windowing: window.always_on_tophas been removed, you can now usewindow.window_level
- Windowing: Removed ModifiesWindowssystem label.
Fixed
- Asset: Fix asset_debug_server hang. There should be at most one ThreadExecut…
- Asset: fix load_internal_binary_asset with debug_asset_server
- Assets: Hot reloading for LoadContext::read_asset_bytes
- Diagnostics: Console log messages now show when the trace_tracyfeature was enabled.
- ECS: Fix last_changed()andset_last_changed()forMutUntyped
- ECS: Fix a miscompilation with #[derive(SystemParam)]
- ECS: Fix get_unchecked_manual using archetype index instead of table row.
- ECS: Fix ignored lifetimes in #[derive(SystemParam)]
- ECS: Fix init_non_send_resource overwriting previous values
- ECS: fix mutable aliases for a very short time if WorldCellis already borrowed
- ECS: Fix partially consumed QueryIterandQueryCombinationIterhaving invalidsize_hint
- ECS: Fix PipeSystem panicking with exclusive systems
- ECS: Fix soundness bug with World: Send. Dropping aWorldthat contains a!Sendresource on the wrong thread will now panic.
- ECS: Fix Sparse Change Detection
- ECS: Fix trait bounds for run conditions
- ECS: Fix unsoundnes in insertremoveanddespawn
- ECS: Fix unsoundness in EntityMut::world_scope
- ECS: Fixed DetectChanges::last_changedreturning the wrong value.
- ECS: Fixed DetectChangesMut::set_last_changednot actually updating thechangedtick.
- ECS: Fixed ResandQueryparameter never being mutually exclusive.
- ECS: Fixed a bug that caused #[derive(SystemParam)]to leak the types of private fields.
- ECS: schedule_v3: fix default set for systems not being applied
- ECS: Stageless: close the finish channel so executor doesn't deadlock
- ECS: Stageless: fix unapplied systems
- Hierarchy: don't error when sending HierarchyEvents when Event type not registered
- Hierarchy: Fix unsoundness for propagate_recursive
- Hierarchy: Fixed missing ChildAddedevents
- Input: Avoid triggering change detection for inputs
- Input: Fix AxisSettings::newonly accepting invalid bounds
- Input: Fix incorrect behavior of just_pressedandjust_releasedinInput<GamepadButton>
- Input: Removed Mobile Touch event y-axis flip
- Reflect: bevy_reflect: Fix misplaced impls
- Reflect: Fix bug where deserializing unit structs would fail for non-self-describing formats
- Reflect: Fix bug where scene deserialization using certain readers could fail (e.g. BufReader,File, etc.)
- Reflect: fix typo in bevy_reflect::impls::std GetTypeRegistration for vec like…
- Reflect: Retain ::after>,)or bracket when shortening type names
- Render: bevy_core_pipeline: Fix prepass sort orders
- Render: Cam scale cluster fix
- Render: fix ambiguities in render schedule
- Render: fix bloom viewport
- Render: Fix dependency of shadow mapping on the optional PrepassPlugin
- Render: Fix feature gating in texture_binding_array example
- Render: Fix material alpha_mode in example global_vs_local_translation
- Render: fix regex for shader define: must have at least one whitespace
- Render: fix shader_instancing
- Render: fix spot dir nan again
- Render: Recreate tonemapping bind group if view uniforms buffer has changed
- Render: Shadow render phase - pass the correct view entity
- Render: Text2d doesn't recompute text on changes to the text's bounds
- Render: wasm: pad globals uniform also in 2d
- Rendering: Emission strength is now correctly interpreted by the StandardMaterialas linear instead of sRGB.
- Rendering: Fix deband dithering intensity for non-HDR pipelines.
- Rendering: Fixed StandardMaterial occlusion being incorrectly applied to direct lighting.
- Rendering: Fixed the alpha channel of the image::DynamicImage::ImageRgb32Ftobevy_render::texture::Imageconversion inbevy_render::texture::Image::from_dynamic().
- Scene: Cleanup dynamic scene before building
- Task: Fix panicking on another scope
- UI: Size::heightsetswidthnotheight
- UI: Don't ignore UI scale for text
- UI: Fix bevy_uicompile error withoutbevy_text
- UI: Fix overflow scaling for images
- UI: fix upsert_leaf not setting a MeasureFunc for new leaf nodes
- Window: Apply WindowDescriptorsettings in all modes
- Window: break feedback loop when moving cursor
- Window: create window as soon as possible
- Window: Fix a typo on Window::set_minimized
- Window: Fix closing window does not exit app in desktop_app mode
- Window: fix cursor grab issue
- Window: Fix set_cursor_grab_mode to try an alternative mode before giving an error
Version 0.9.0 (2022-11-12)
Added
- Bloom
- Add FXAA postprocessing
- Fix color banding by dithering image before quantization
- Plugins own their settings. Rework PluginGroup trait.
- Add global time scaling
- add globals to mesh view bind group
- Add UI scaling
- Add FromReflect for Timer
- Re-add local bool has_received_timeintime_system
- Add default implementation of Serialize and Deserialize to Timer and Stopwatch
- add time wrapping to Time
- Stopwatch elapsed secs f64
- Remaining fn in Timer
- Support array / cubemap / cubemap array textures in KTX2
- Add methods for silencing system-order ambiguity warnings
- bevy_dynamic_plugin: make it possible to handle loading errors
- can get the settings of a plugin from the app
- Use plugin setup for resource only used at setup time
- Add TimeUpdateStrategyresource for manualTimeupdating
- dynamic scene builder
- Create a scene from a dynamic scene
- Scene example: write file in a task
- Add writing of scene data to Scene example
- can clone a scene
- Add "end of main pass post processing" render graph node
- Add Camera::viewport_to_world
- Sprite: allow using a sub-region (Rect) of the image
- Add missing type registrations for bevy_math types
- Add serializefeature tobevy_core
- add serialize feature to bevy_transform
- Add associated constant IDENTITYtoTransformand friends.
- bevy_reflect: Add Reflect::into_reflect
- Add reflect_owned
- Reflectfor- Tonemappingand- ClusterConfig
- add ReflectDefaultto std types
- Add FromReflect for Visibility
- Register RenderLayerstype inCameraPlugin
- Enable Constructing ReflectComponent/Resource
- Support multiple #[reflect]/#[reflect_value]+ improve error messages
- Reflect Default for GlobalTransform
- Impl Reflect for PathBuf and OsString
- Reflect Default for ComputedVisibilityandHandle<T>
- Register Wireframetype
- Derive FromReflectforTransformandGlobalTransform
- Make arrays behave like lists in reflection
- Implement Debugfor dynamic types
- Implemented Reflectfor all the ranges
- Add popmethod forListtrait.
- bevy_reflect: GetTypeRegistrationforSmallVec<T>
- register missing reflect types
- bevy_reflect: Get owned fields
- bevy_reflect: Add FromReflectto the prelude
- implement ReflectforInput<T>, some misc improvements to reflect value derive
- register Cow<'static, str>for reflection
- bevy_reflect: Relax bounds on Option<T>
- remove ReflectMutin favor ofMut<dyn Reflect>
- add some info from ReflectPathErrorto the error messages
- Added reflect/from reflect impls for NonZero integer types
- bevy_reflect: Update enum derives
- Add reflect(skip_serializing)which retains reflection but disables automatic serialization
- bevy_reflect: Reflect enums
- Disabling default features support in bevy_ecs, bevy_reflect and bevy
- expose window alpha mode
- Make bevy_window and bevy_input events serializable
- Add window resizing example
- feat: add GamepadInfo, expose gamepad names
- Derive Reflect+FromReflectfor input types
- Make TouchInput and ForceTouch serializable
- Add a Gamepad Viewer tool to examples
- Derived Copytrait forbevy_inputevents,Serialize/Deserializefor events inbevy_inputandbevy_windows,PartialEqfor events in both, andEqwhere possible in both.
- Support for additional gamepad buttons and axis
- Added keyboard scan input event
- Add set_parentandremove_parenttoEntityCommands
- Add methods to Query<&Children>andQuery<&Parent>to iterate over descendants and ancestors
- Add is_finishedtoTask<T>
- Expose mint feature in bevy_math/glam
- Utility methods for Val
- Register missing bevy_text types
- Add additional constructors for UiRectto specify values for specific fields
- Add AUTO and UNDEFINED const constructors for Size
- Add Exponential Moving Average into diagnostics
- Add send_eventand friends toWorldCell
- Add a method for accessing the width of a Table
- Add iter_entities to World #6228
- Adding Debug implementations for App, Stage, Schedule, Query, QueryState, etc.
- Add a method for mapping Mut<T>->Mut<U>
- implemented #[bundle(ignore)]
- Allow access to non-send resource through World::resource_scope
- Add get_entity to Commands
- Added the ability to get or set the last change tick of a system.
- Add a module for common system chain/pipeadapters
- SystemParam for the name of the system you are currently in
- Warning message for missing events
- Add a change detection bypass and manual control over change ticks
- Add into_world_mut to EntityMut
- Add FromWorldbound toTinLocal<T>
- Add From<EntityMut>for EntityRef (fixes #5459)
- Implement IntoIterator for ECS wrapper types.
- add Res::clone
- Add CameraRenderGraph::set
- Use wgsl saturate
- Add mutating togglemethod toVisibilitycomponent
- Add globals struct to mesh2d
- add support for .comp glsl shaders
- Implement IntoIteratorfor&Extract<P>
- add Debug, Copy, Clone derives to Circle
- Add TextureFormat::Rg16Unorm support for Image and derive Resource for SpecializedComputePipelines
- Add bevy_render::texture::ImageSettingsto prelude
- Add Projectioncomponent to prelude.
- Expose Imageconversion functions (fixes #5452)
- Macro for Loading Internal Binary Assets
- Add From<String>forAssetPath<'a>
- Add Eq & PartialEq to AssetPath
- add ReflectAssetandReflectHandle
- Add warning when using load_folder on web
- Expose rodio's Source and Sample traits in bevy_audio
- Add a way to toggle AudioSink
Changed
- separate tonemapping and upscaling passes
- Rework ViewTarget to better support post processing
- bevy_reflect: Improve serialization format even more
- bevy_reflect: Binary formats
- Unique plugins
- Support arbitrary RenderTarget texture formats
- Make Resourcetrait opt-in, requiring#[derive(Resource)]V2
- Replace WorldQueryGatstrait with actual gats
- Change UI coordinate system to have origin at top left corner
- Move the cursor's origin back to the bottom-left
- Add z-index support with a predictable UI stack
- TaskPool Panic Handling
- Implement BundleforComponent. UseBundletuples for insertion
- Spawn now takes a Bundle
- make WorldQueryvery flat
- Accept Bundles for insert and remove. Deprecate insert/remove_bundle
- Exclusive Systems Now Implement System. Flexible Exclusive System Params
- bevy_scene: Serialize entities to map
- bevy_scene: Stabilize entity order in DynamicSceneBuilder
- bevy_scene: Replace root list with struct
- bevy_scene: Use map for scene components
- Start running systems while prepare_systems is running
- Extract Resources into their own dedicated storage
- get proper texture format after the renderer is initialized, fix #3897
- Add getters and setters for InputAxisandButtonSettings
- Clean up Fetch code
- Nested spawns on scope
- Skip empty archetypes and tables when iterating over queries
- Increase the MAX_DIRECTIONAL_LIGHTSfrom 1 to 10
- bevy_pbr: Normalize skinned normals
- remove mandatory mesh attributes
- Rename playtostartand add newplaymethod that won't overwrite the existing animation if it's already playing
- Replace the boolargument ofTimerwithTimerMode
- improve panic messages for add_system_to_stage and add_system_set_to_stage
- Use default serde impls for Entity
- scenes: simplify return type of iter_instance_entities
- Consistently use PIto specify angles in examples.
- Remove Transform::apply_non_uniform_scale
- Rename Transform::mul_vec3totransform_pointand improve docs
- make registeronTypeRegistryidempotent
- do not set cursor grab on window creation if not asked for
- Make raw_window_handlefield inWindowandExtractedWindowanOption.
- Support monitor selection for all window modes.
- Gamepadtype is- Copy; do not require / return references to it in- GamepadsAPI
- Update tracing-chrome to 0.6.0
- Update to ron 0.8
- Update clap requirement from 3.2 to 4.0
- Update glam 0.22, hexasphere 8.0, encase 0.4
- Update wgputo 0.14.0,nagato0.10.0,winitto 0.27.4,raw-window-handleto 0.5.0,ndkto 0.7
- Update to notify 5.0 stable
- Update rodio requirement from 0.15 to 0.16
- remove copyless
- Mark Taskas#[must_use]
- Swap out num_cpus for std:🧵:available_parallelism
- Cleaning up NodeBundle, and some slight UI module re-organization
- Make the default background color of NodeBundletransparent
- Rename UiColortoBackgroundColor
- changed diagnostics from seconds to milliseconds
- Remove unnecesary branches/panics from Query accesses
- debug_checked_unwrapshould track its caller
- Speed up Query::get_manyand add benchmarks
- Rename system chaining to system piping
- [Fixes #6059] Entity's “ID” should be named “index” instead
- Queryfilter types must be- ReadOnlyWorldQuery
- Remove ambiguity sets
- relax Sizedbounds around change detection types
- Remove ExactSizeIterator from QueryCombinationIter
- Remove Sync bound from Command
- Make most Entitymethodsconst
- Remove insert_resource_with_id
- Avoid making FetchsClone
- Remove Syncbound fromLocal
- Replace many_for_each_mutwithiter_many_mut.
- bevy_ecs: Use 32-bit entity ID cursor on platforms without AtomicI64
- Specialize UI pipeline on "hdr-ness"
- Allow passing glamvector types as vertex attributes
- Add multi draw indirect draw calls
- Take DirectionalLight's GlobalTransform into account when calculating shadow map volume (not just direction)
- Respect mipmap_filter when create ImageDescriptor with linear()/nearest()
- use bevy default texture format if the surface is not yet available
- log pipeline cache errors earlier
- Merge TextureAtlas::from_grid_with_padding into TextureAtlas::from_grid through option arguments
- Reconfigure surface on present mode change
- Use 3 bits of PipelineKey to store MSAA sample count
- Limit FontAtlasSets
- Move sprite::Rectintobevy_math
- Make vertex colors work without textures in bevy_sprite
- use bevy_default() for texture format in post_processing
- don't render completely transparent UI nodes
- make TextLayoutInfo a Component
- make Handle::<T>field id private, and replace with a getter
- Remove AssetServer::watch_for_changes()
- Rename Handle::as_weak() to cast_weak()
- Remove Syncrequirement inDecodable::Decoder
Fixed
- Optimize rendering slow-down at high entity counts
- bevy_reflect: Fix DynamicScenenot respecting component registrations during serialization
- fixes the types for Vec3 and Quat in scene example to remove WARN from the logs
- Fix end-of-animation index OOB
- bevy_reflect: Remove unnecessary Clonebounds
- bevy_reflect: Fix applymethod forOption<T>
- Fix outdated and badly formatted docs for WindowDescriptor::transparent
- disable window pre creation for ios
- Remove unnecessary unsafe SendandSyncimpl forWinitWindowson wasm.
- Fix window centering when scale_factor is not 1.0
- fix order of exit/close window systems
- bevy_input: Fix process touch event
- fix: explicitly specify required version of async-task
- Fix clippy::iter_with_drain
- Use cbrt()instead ofpowf(1./3.)
- Fix RemoveChildrencommand
- Fix inconsistent children removal behavior
- tick local executor
- Fix panic when the primary window is closed
- UI scaling fix
- Fix clipping in UI
- Fixes scroll example after inverting UI Y axis
- Fixes incorrect glyph positioning for text2d
- Clean up taffy nodes when UI node entities are removed
- Fix unsound EntityMut::remove_children. AddEntityMut::world_scope
- Fix spawning empty bundles
- Fix query.to_readonly().get_component_mut() soundness bug
- #5817: derive_bundle macro is not hygienic
- drop old value in insert_resource_by_idif exists
- Fix lifetime bound on Fromimpl forNonSendMut->Mut
- Fix mesh.wgslerror for meshes without normals
- Fix panic when using globals uniform in wasm builds
- Resolve most remaining execution-order ambiguities
- Call mesh2d_tangent_local_to_worldwith the right arguments
- Fixes Camera not being serializable due to missing registrations in core functionality.
- fix spot dir nan bug
- use alpha mask even when unlit
- Ignore Timeouterrors on Linux AMD & Intel
- adjust cluster index for viewport origin
- update camera projection if viewport changed
- Ensure 2D phase items are sorted before batching
- bevy_pbr: Fix incorrect and unnecessary normal-mapping code
- Add explicit ordering between update_frustaandcamera_system
- bevy_pbr: Fix tangent and normal normalization
- Fix shader syntax
- Correctly use as_hsla_f32 in Add<Color>andAddAssign<Color>, fixes #5543
- Sync up bevy_sprite and bevy_ui shader View struct
- Fix View by adding missing fields present in ViewUniform
- Freeing memory held by visible entities vector
- Correctly parse labels with '#'
Version 0.8.0 (2022-07-30)
Added
- Callable PBR functions
- Spotlights
- Camera Driven Rendering
- Camera Driven Viewports
- Visibilty Inheritance, universal ComputedVisibility, andRenderLayerssupport
- Better Materials: AsBindGrouptrait and derive, simplerMaterialtrait
- Derive AsBindGroupImprovements: Better errors, more options, update examples
- Support AsBindGroupfor 2d materials as well
- Parallel Frustum Culling
- Hierarchy commandization
- Generate vertex tangents using mikktspace
- Add a SpatialBundlewithVisibilityandTransformcomponents
- Add RegularPolygonandCirclemeshes
- Add a SceneBundleto spawn a scene
- Allow higher order systems
- Add global init()andget()accessors for all newtypedTaskPools
- Add reusable shader functions for transforming position/normal/tangent
- Add support for vertex colors
- Add support for removing attributes from meshes
- Add option to center a window
- Add depth_load_opconfiguration field toCamera3d
- Refactor Cameramethods and add viewport rect
- Add TextureFormat::R16Unormsupport forImage
- Add a VisibilityBundlewithVisibilityandComputedVisibilitycomponents
- Add ExtractResourcePlugin
- Add depth_bias to SpecializedMaterial
- Added offsetparameter toTextureAtlas::from_grid_with_padding
- Add the possibility to create custom 2d orthographic cameras
- bevy_render: Add attributesandattributes_mutmethods toMesh
- Add helper methods for rotating Transforms
- Enable wgpu profiling spans when using bevy's trace feature
- bevy_pbr: rework extract_meshes
- Add inverse_projectionandinverse_view_projfields to shader view uniform
- Add ViewRangefinder3dto reduce boilerplate when enqueuing standard 3DPhaseItems
- Create bevy_ptrstandalone crate
- Add IntoIteratorimpls for&Queryand&mut Query
- Add untyped APIs for ComponentsandResources
- Add infallible resource getters for WorldCell
- Add get_change_ticksmethod toEntityRefandEntityMut
- Add comparison methods to FilteredAccessSet
- Add Commands::new_from_entities
- Add QueryState::get_single_unchecked_manualand its family members
- Add ParallelCommandssystem parameter
- Add methods for querying lists of entities
- Implement FusedIteratorfor eligibleIteratortypes
- Add component_id()function toWorldandComponents
- Add ability to inspect entity's components
- Add a more helpful error to help debug panicking command on despawned entity
- Add ExactSizeIteratorimplementation forQueryCombinatonIter
- Added the ignore_fieldsattribute to the derive macros for*Labeltypes
- Exact sized event iterators
- Add a clear()method to theEventReaderthat consumes the iterator
- Add helpers to send EventsfromWorld
- Add file metadata to AssetIo
- Add missing audio/ogg file extensions: .oga, .spx
- Add reload_assetmethod toAssetServer
- Allow specifying chrome tracing file path using an environment variable
- Create a simple tool to compare traces between executions
- Add a tracing span for run criteria
- Add tracing spans for Query::par_for_eachand its variants.
- Add a release_allmethod onInput
- Add a reset_allmethod onInput
- Add a helper tool to build examples for wasm
- bevy_reflect: add a ReflectFromPtrtype to create&dyn Reflectfrom a*const ()
- Add a ReflectDefaulttype and add#[reflect(Default)]to all component types that implement Default and are user facing
- Add a macro to implement Reflectfor struct types and migrate glam types to use this for reflection
- bevy_reflect: reflect arrays
- bevy_reflect: reflect char
- bevy_reflect: add GetTypeRegistrationimpl for reflected tuples
- Add reflection for Resources
- bevy_reflect: add as_reflectandas_reflect_mutmethods onReflect
- Add an apply_or_insertmethod toReflectResourceandReflectComponent
- bevy_reflect: IntoIterforDynamicListandDynamicMap
- bevy_reflect: Add PartialEqto reflectedf32s andf64s
- Create mutable versions of TypeRegistrymethods
- bevy_reflect: add a get_boxedmethod toreflect_trait
- bevy_reflect: add #[reflect(default)]attribute forFromReflect
- bevy_reflect: add statically available type info for reflected types
- Add an assert_is_exclusive_systemfunction
- bevy_ui: add a multi-windows check for Interaction(we dont yet support multiple windows)
Changed
- Depend on Taffy (a Dioxus and Bevy-maintained fork of Stretch)
- Use lifetimed, type erased pointers in bevy_ecs
- Migrate to encasefromcrevice
- Update wgputo 0.13
- Pointerfication followup: Type safety and cleanup
- bevy_ptr works in no_std environments
- Fail to compile on 16-bit platforms
- Improve ergonomics and reduce boilerplate around creating text elements
- Don't cull Uinodes that have a rotation
- Rename ElementStatetoButtonState
- Move Sizetobevy_ui
- Move Recttobevy_uiand rename it toUiRect
- Modify FontAtlasso that it can handle fonts of any size
- Rename CameraUi
- Remove task_poolparameter frompar_for_each(_mut)
- Copy TaskPoolresoures to sub-Apps
- Allow closing windows at runtime
- Move the configuration of the WindowPluginto aResource
- Optionally resize Windowcanvas element to fit parent element
- Change window resolution types from tuple to Vec2
- Update time by sending frame Instantthrough a channel
- Split time functionality into bevy_time
- Split mesh shader files to make the shaders more reusable
- Set nagacapabilities corresponding towgpufeatures
- Separate out PBR lighting, shadows, clustered forward, and utils from pbr.wgsl
- Separate PBR and tonemapping into 2 functions
- Make RenderStage::Extractrun on the render world
- Change default FilterModeofImagetoLinear
- bevy_render: Fix KTX2 UASTC format mapping
- Allow rendering meshes without UV coordinate data
- Validate vertex attribute format on insertion
- Use Affine3AforGlobalTransformto allow any affine transformation
- Recalculate entity AABBs when meshes change
- Change check_visibilityto use thread-local queues instead of a channel
- Allow unbatched render phases to use unstable sorts
- Extract resources into their target location
- Enable loading textures of unlimited size
- Do not create nor execute render passes which have no PhaseItemsto draw
- Filter material handles on extraction
- Apply vertex colors to ColorMaterialandMesh2D
- Make MaterialPipelineKeyfields public
- Simplified API to get NDC from camera and world position
- Set alpha_modebased on alpha value
- Make WireframerespectVisibleEntities
- Use const Vec2in lights cluster and bounding box when possible
- Make accessors for mesh vertices and indices public
- Use BufferUsages::UNIFORMforSkinnedMeshUniform
- Place origin of OrthographicProjectionat integer pixel when usingScalingMode::WindowSize
- Make ScalingModemore flexible
- Move texture sample out of branch in prepare_normal
- Make the fields of the Material2dKeypublic
- Use collect to build mesh attributes
- Replace ReadOnlyFetchwithReadOnlyWorldQuery
- Replace ComponentSparseSet's internals with aColumn
- Remove QF generics from all Query/Statemethods and types
- Remove .system()
- Make change lifespan deterministic and update docs
- Make derived SystemParamreadonly if possible
- Merge matches_archetypeandmatches_table
- Allows conversion of mutable queries to immutable queries
- Skip dropwhenneeds_dropisfalse
- Use u32 over usize for ComponentSparseSetindicies
- Remove redundant ComponentIdinColumn
- Directly copy moved Tablecomponents to the target location
- SystemSet::beforeand- SystemSet::afternow take- AsSystemLabel
- Converted exclusive systems to parallel systems wherever possible
- Improve size_hintonQueryIter
- Improve debugging tools for change detection
- Make RunOncea non-manualSystemimpl
- Apply buffers in ParamSet
- Don't allocate for ComponentDescriptorsof non-dynamic component types
- Mark mutable APIs under ECS storage as pub(crate)
- Update ExactSizeIteratorimpl to support archetypal filters (With,Without)
- Removed world cell from places where split multable access is not needed
- Add Events to bevy_ecsprelude
- Improve EntityMapAPI
- Implement From<bool>forShouldRun.
- Allow iter combinations on custom world queries
- Simplify design for *Labels
- Tidy up the code of events
- Rename send_default_eventtosend_event_defaulton world
- enable optional dependencies to stay optional
- Remove the dependency cycles
- Enforce type safe usage of Handle::get
- Export anyhow::error for custom asset loaders
- Update shader_material_glslexample to include texture sampling
- Remove unused code in game of life shader
- Make the contributor birbs bounce to the window height
- Improve Gamepad D-Pad Button Detection
- bevy_reflect: support map insertio
- bevy_reflect: improve debug formatting for reflected types
- bevy_reflect_derive: big refactor tidying up the code
- bevy_reflect: small refactor and default Reflectmethods
- Make Reflectsafe to implement
- bevy_reflect: put- serializeinto external- ReflectSerializetype
- Remove Serializeimpl fordyn Arrayand friends
- Re-enable #[derive(TypeUuid)]for generics
- Move primitive type registration into bevy_reflect
- Implement reflection for more glamtypes
- Make reflect_partial_eqreturn more accurate results
- Make public macros more robust with $crate
- Ensure that the parent is always the expected entity
- Support returning data out of with_children
- Remove EntityMut::get_unchecked
- Diagnostics: meaningful error when graph node has wrong number of inputs
- Remove redundant Sizeimport
- Export and register Mat2.
- Implement DebugforGamepads
- Update codebase to use IntoIteratorwhere possible.
- Rename headless_defaultsexample tono_rendererfor clarity
- Remove dead SystemLabelMarkerstruct
- bevy_reflect: remove glamfrom a test which is active without the glam feature
- Disable vsync for stress tests
- Move get_short_nameutility method frombevy_reflectintobevy_utils
- Derive Defaultfor enums where possible
- Implement EqandPartialEqforMouseScrollUnit
- Some cleanup for bevy_ptr
- Move float_ord from bevy_coretobevy_utils
- Remove unused CountdownEvent
- Some minor cleanups of asset_server
- Use elapsed()onInstant
- Make paused Timersupdatejust_finishedon tick
- bevy_utils: remove hardcoded log level limit
- Make Time::update_with_instantpublic for use in tests
- Do not impl Component for Task
- Remove nonexistent WgpuResourceDiagnosticsPlugin
- Update ndk-glue requirement from 0.5 to 0.6
- Update tracing-tracy requirement from 0.8.0 to 0.9.0
- update image to 0.24
- update xshell to 0.2
- Update gilrs to v0.9
- bevy_log: upgrade to tracing-tracy 0.10.0
- update hashbrown to 0.12
- Update clapto 3.2 in tools usingvalue_parser
- Updated glamto0.21.
- Update Notify Dependency
Fixed
- bevy_ui: keep Coloras 4f32s
- Fix issues with bevy on android other than the rendering
- Update layout/style when scale factor changes too
- Fix Overflow::Hiddenso it works correctly withscale_factor_override
- Fix bevy_uitouch input
- Fix physical viewport calculation
- Minimally fix the known unsoundness in bevy_mikktspace
- Make Transformpropagation correct in the presence of updated children
- StorageBufferuses wrong type to calculate the buffer size.
- Fix confusing near and far fields in Camera
- Allow minimising window if using a 2d camera
- WGSL: use correct syntax for matrix access
- Gltf: do not import IoTaskPoolin wasm
- Fix skinned mesh normal handling in mesh shader
- Don't panic when StandardMaterialnormal_maphasn't loaded yet
- Fix incorrect rotation in Transform::rotate_around
- Fix extract_wireframes
- Fix type parameter name conflicts of #[derive(Bundle)]
- Remove unnecessary unsafe implofSend+SyncforParallelSystemContainer
- Fix line material shader
- Fix mouse_clickedcheck for touch
- Fix unsoundness with Or/AnyOf/Optioncomponent access
- Improve soundness of CommandQueue
- Fix some memory leaks detected by miri
- Fix Android example icon
- Fix broken WorldCelltest
- Bugfix State::settransition condition infinite loop
- Fix crash when using Duration::MAX
- Fix release builds: Move asserts under #[cfg(debug_assertions)]
- Fix frame count being a float
- Fix "unused" warnings when compiling with renderfeature but withoutanimation
- Fix re-adding a plugin to a PluginGroup
- Fix torus normals
- Add NO_STORAGE_BUFFERS_SUPPORTshaderdef when needed
Version 0.7.0 (2022-04-15)
Added
- Mesh Skinning
- Animation Player
- Gltf animations
- Mesh vertex buffer layouts
- Render to a texture
- KTX2/DDS/.basis compressed texture support
- Audio control - play, pause, volume, speed, loop
- Auto-label function systems with SystemTypeIdLabel
- Query::get_many
- Dynamic light clusters
- Always update clusters and remove per-frame allocations
- ParamSetfor conflicting- SystemParam:s
- default() shorthand
- use marker components for cameras instead of name strings
- Implement WorldQueryderive macro
- Implement AnyOf queries
- Compute Pipeline Specialization
- Make get_resource (and friends) infallible
- bevy_pbr: Support flipping tangent space normal map y for DirectX normal maps
- Faster view frustum culling
- Use storage buffers for clustered forward point lights
- Add &World as SystemParam
- Add text wrapping support to Text2d
- Scene Viewer to display glTF files
- Internal Asset Hot Reloading
- Add FocusPolicy to NodeBundle and ImageBundle
- Allow iter combinations on queries with filters
- bevy_render: Support overriding wgpu features and limits
- bevy_render: Use RenderDevice to get limits/features and expose AdapterInfo
- Reduce power usage with configurable event loop
- can specify an anchor for a sprite
- Implement len and is_empty for EventReaders
- Add more FromWorld implementations
- Add cart's fork of ecs_bench_suite
- bevy_derive: Add derives for DerefandDerefMut
- Add clear_schedule
- Add Query::contains
- bevy_render: Support removal of nodes, edges, subgraphs
- Implement init_resource for CommandsandWorld
- Added method to restart the current state
- Simplify sending empty events
- impl Command for impl FnOnce(&mut World)
- Useful error message when two assets have the save UUID
- bevy_asset: Add AssetServerSettings watch_for_changes member
- Add conversio from Color to u32
- Introduce SystemLabel's forRenderAssetPlugin, and changeImagepreparation system to run before others
- Add a helper for storage buffers similar to UniformVec
- StandardMaterial: expose a cull_mode option
- Expose draw indirect
- Add view transform to view uniform
- Add a size method on Image.
- add Visibility for lights
- bevy_render: Provide a way to opt-out of the built-in frustum culling
- use error scope to handle errors on shader module creation
- include sources in shader validation error
- insert the gltf mesh name on the entity if there is one
- expose extras from gltf nodes
- gltf: add a name to nodes without names
- Enable drag-and-drop events on windows
- Add transform hierarchy stress test
- Add TransformBundle
- Add Transform::rotate_around method
- example on how to create an animation in code
- Add examples for Transforms
- Add mouse grab example
- examples: add screenspace texture shader example
- Add generic systems example
- add examples on how to have a data source running in another thread / in a task pool thread
- Simple 2d rotation example
- Add move sprite example.
- add an example using UI & states to create a game menu
- CI runs cargo miri test -p bevy_ecs
- Tracy spans around main 3D passes
- Add automatic docs deployment to GitHub Pages
Changed
- Proper prehashing
- Move import_path definitions into shader source
- Make Systemresponsible for updating its own archetypes
- Some small changes related to run criteria piping
- Remove unnecessary system labels
- Increment last event count on next instead of iter
- Obviate the need for RunSystem, and remove it
- Cleanup some things which shouldn't be components
- Remove the config api
- Deprecate .system
- Hide docs for concrete impls of Fetch, FetchState, and SystemParamState
- Move the CoreStage::Startup to a seperate StartupSchedule label
- iter_muton Assets: send modified event only when asset is iterated over
- check if resource for asset already exists before adding it
- bevy_render: Batch insertion for prepare_uniform_components
- Change default ColorMaterialcolor to white
- bevy_render: Only auto-disable mappable primary buffers for discrete GPUs
- bevy_render: Do not automatically enable MAPPABLE_PRIMARY_BUFFERS
- increase the maximum number of point lights with shadows to the max supported by the device
- perf: only recalculate frusta of changed lights
- bevy_pbr: Optimize assign_lights_to_clusters
- improve error messages for render graph runner
- Skinned extraction speedup
- Sprites - keep color as 4 f32
- Change scaling mode to FixedHorizontal
- Replace VSync with PresentMode
- do not set cursor grab on window creation if not asked for
- bevy_transform: Use Changed in the query for much faster transform_propagate_system
- Split bevy_hierarchy out from bevy_transform
- Make transform builder methods const
- many_cubes: Add a cube pattern suitable for benchmarking culling changes
- Make many_cubes example more interesting
- Run tests (including doc tests) in cargo run -p cicommand
- Use more ergonomic span syntax
Fixed
- Remove unsound lifetime annotations on EntityMut
- Remove unsound lifetime annotations on Querymethods
- Remove World::components_mut
- unsafeify World::entities_mut
- Use ManuallyDrop instead of forget in insert_resource_with_id
- Backport soundness fix
- Fix clicked UI nodes getting reset when hovering child nodes
- Fix ui interactions when cursor disappears suddenly
- Fix node update
- Fix derive(SystemParam) macro
- SystemParam Derive fixes
- Do not crash if RenderDevice doesn't exist
- Fixed case of R == G, following original conversion formula
- Fixed the frustum-sphere collision and added tests
- bevy_render: Fix Quad flip
- Fix HDR asset support
- fix cluster tiling calculations
- bevy_pbr: Do not panic when more than 256 point lights are added the scene
- fix issues with too many point lights
- shader preprocessor - do not import if scope is not valid
- support all line endings in shader preprocessor
- Fix animation: shadow and wireframe support
- add AnimationPlayer component only on scene roots that are also animation roots
- Fix loading non-TriangleList meshes without normals in gltf loader
- gltf-loader: disable backface culling if material is double-sided
- Fix glTF perspective camera projection
- fix mul_vec3 transformation order: should be scale -> rotate -> translate
Version 0.6.0 (2022-01-08)
Added
- New Renderer
- Clustered forward rendering
- Frustum culling
- Sprite Batching
- Materials and MaterialPlugin
- 2D Meshes and Materials
- WebGL2 support
- Pipeline Specialization, Shader Assets, and Shader Preprocessing
- Modular Rendering
- Directional light and shadow
- Directional light
- Use the infinite reverse right-handed perspective projection
- Implement and require #[derive(Component)]on all component structs
- Shader Imports. Decouple Mesh logic from PBR
- Add support for opaque, alpha mask, and alpha blend modes
- bevy_gltf: Load light names from gltf
- bevy_gltf: Add support for loading lights
- Spherical Area Lights
- Shader Processor: process imported shader
- Add support for not casting/receiving shadows
- Add support for configurable shadow map sizes
- Implement the Overflow::Hiddenstyle property for UI
- SystemState
- Add a method iter_combinationson query to iterate over combinations of query results
- Add FromReflect trait to convert dynamic types to concrete types
- More pipelined-rendering shader examples
- Configurable wgpu features/limits priority
- Cargo feature for bevy UI
- Spherical area lights example
- Implement ReflectValue serialization for Duration
- bevy_ui: register Overflow type
- Add Visibility component to UI
- Implement non-indexed mesh rendering
- add tracing spans for parallel executor and system overhead
- RemoveChildren command
- report shader processing errors in RenderPipelineCache
- enable Webgl2 optimisation in pbr under feature
- Implement Sub-App Labels
- Added set_cursor_icon(...)toWindow
- Support topologies other than TriangleList
- Add an example 'showcasing' using multiple windows
- Add an example to draw a rectangle
- Added set_scissor_rect to tracked render pass.
- Add RenderWorld to Extract step
- re-export ClearPassNode
- add default standard material in PbrBundle
- add methods to get reads and writes of Access<T>
- Add despawn_children
- More Bevy ECS schedule spans
- Added transparency to window builder
- Add Gamepads resource
- Add support for #else for shader defs
- Implement iter() for mutable Queries
- add shadows in examples
- Added missing wgpu image render resources.
- Per-light toggleable shadow mapping
- Support nested shader defs
- use bytemuck crate instead of Byteable trait
- iter_mut()for Assets type
- EntityRenderCommand and PhaseItemRenderCommand
- add position to WindowDescriptor
- Add System Command apply and RenderGraph node spans
- Support for normal maps including from glTF models
- MSAA example
- Add MSAA to new renderer
- Add support for IndexFormat::Uint16
- Apply labels to wgpu resources for improved debugging/profiling
- Add tracing spans around render subapp and stages
- Add set_stencil_reference to TrackedRenderPass
- Add despawn_recursive to EntityMut
- Add trace_tracy feature for Tracy profiling
- Expose wgpu's StencilOperation with bevy
- add get_single variant
- Add builder methods to Transform
- add get_history function to Diagnostic
- Add convenience methods for checking a set of inputs
- Add error messages for the spooky insertions
- Add Deref implementation for ComputePipeline
- Derive thiserror::Error for HexColorError
- Spawn specific entities: spawn or insert operations, refactor spawn internals, world clearing
- Add ClearColor Resource to Pipelined Renderer
- remove_component for ReflectComponent
- Added ComputePipelineDescriptor
- Added StorageTextureAccess to the exposed wgpu API
- Add sprite atlases into the new renderer.
- Log adapter info on initialization
- Add feature flag to enable wasm for bevy_audio
- Allow Option<NonSend<T>>andOption<NonSendMut<T>>as SystemParam
- Added helpful adders for systemsets
- Derive Clone for Time
- Implement Clone for Fetches
- Implement IntoSystemDescriptor for SystemDescriptor
- implement DetectChanges for NonSendMut
- Log errors when loading textures from a gltf file
- expose texture/image conversions as From/TryFrom
- [ecs] implement is_empty for queries
- Add audio to ios example
- Example showing how to use AsyncComputeTaskPool and Tasks
- Expose set_changed() on ResMut and Mut
- Impl AsRef+AsMut for Res, ResMut, and Mut
- Add exit_on_esc_system to examples with window
- Implement rotation for Text2d
- Mesh vertex attributes for skinning and animation
- load zeroed UVs as fallback in gltf loader
- Implement direct mutable dereferencing
- add a span for frames
- Add an alias mouse position -> cursor position
- Adding WorldQueryforWithBundle
- Automatic System Spans
- Add system sets and run criteria example
- EnumVariantMeta derive
- Added TryFrom for VertexAttributeValues
- add render_to_texture example
- Added example of entity sorting by components
- calculate flat normals for mesh if missing
- Add animate shaders example
- examples on how to tests systems
- Add a UV sphere implementation
- Add additional vertex formats
- gltf-loader: support data url for images
- glTF: added color attribute support
- Add synonyms for transform relative vectors
Changed
- Relicense Bevy under the dual MIT or Apache-2.0 license
- [ecs] Improve Commandsperformance
- Merge AppBuilder into App
- Use a special first depth slice for clustered forward rendering
- Add a separate ClearPass
- bevy_pbr2: Improve lighting units and documentation
- gltf loader: do not use the taskpool for only one task
- System Param Lifetime Split
- Optional .system
- Optional .system(), part 2
- Optional .system(), part 3
- Optional .system(), part 4 (run criteria)
- Optional .system(), part 6 (chaining)
- Make the iter_combinatorsexamples prettier
- Remove dead anchor.rs code
- gltf: load textures asynchronously using io task pool
- Use fully-qualified type names in Label derive.
- Remove Bytes, FromBytes, Labels, EntityLabels
- StorageType parameter removed from ComponentDescriptor::new_resource
- remove dead code: ShaderDefs derive
- Enable Msaa for webgl by default
- Renamed Entity::new to Entity::from_raw
- bevy::scene::Entity renamed to bevy::scene::DynamicEntity.
- make sub_appreturn an&Appand addsub_app_mut() -> &mut App
- use ogg by default instead of mp3
- enable wasm-bindgenfeature on gilrs
- Use EventWriter for gilrs_system
- Add some of the missing methods to TrackedRenderPass
- Only bevy_render depends directly on wgpu
- Update wgpu to 0.12 and naga to 0.8
- Improved bevymark: no bouncing offscreen and spawn waves from CLI
- Rename render UiSystem to RenderUiSystem
- Use updated window size in bevymark example
- Enable trace feature for subfeatures using it
- Schedule gilrs system before input systems
- Rename fixed timestep state and add a test
- Port bevy_ui to pipelined-rendering
- update wireframe rendering to new renderer
- Allow Stringand&StringasIdforAssetServer.get_handle(id)
- Ported WgpuOptions to new renderer
- Down with the system!
- Update dependencies ronwinit& fixcargo-denylists
- Improve contributors example quality
- Expose command encoders
- Made Time::time_since_startup return from last tick.
- Default image used in PipelinedSpriteBundle to be able to render without loading a texture
- make texture from sprite pipeline filterable
- iOS: replace cargo-lipo, and update for new macOS
- increase light intensity in pbr example
- Faster gltf loader
- Use crevice std140_size_static everywhere
- replace matrix swizzles in pbr shader with index accesses
- Disable default features from bevy_assetandbevy_ecs
- Update tracing-subscriber requirement from 0.2.22 to 0.3.1
- Update vendored Crevice to 0.8.0 + PR for arrays
- change texture atlas sprite indexing to usize
- Update derive(DynamicPlugin) to edition 2021
- Update to edition 2021 on master
- Add entity ID to expect() message
- Use RenderQueue in BufferVec
- removed unused RenderResourceId and SwapChainFrame
- Unique WorldId
- add_texture returns index to texture
- Update hexasphere requirement from 4.0.0 to 5.0.0
- enable change detection for hierarchy maintenance
- Make events reuse buffers
- Replace .insert_resource(T::default())calls withinit_resource::<T>()
- Improve many sprites example
- Update glam requirement from 0.17.3 to 0.18.0
- update ndk-glue to 0.4
- Remove Need for Sprite Size Sync System
- Pipelined separate shadow vertex shader
- Sub app label changes
- Use Explicit Names for Flex Direction
- Make default near plane more sensible at 0.1
- Reduce visibility of various types and fields
- Cleanup FromResources
- Better error message for unsupported shader features Fixes #869
- Change definition of ScheduleRunnerPlugin
- Re-implement Automatic Sprite Sizing
- Remove with bundle filter
- Remove bevy_dynamic_plugin as a default
- Port bevy_gltf to pipelined-rendering
- Bump notify to 5.0.0-pre.11
- Add 's (state) lifetime to Fetch
- move bevy_core_pipeline to its own plugin
- Refactor ECS to reduce the dependency on a 1-to-1 mapping between components and real rust types
- Inline world get
- Dedupe move logic in remove_bundle and remove_bundle_intersection
- remove .system from pipelined code
- Scale normal bias by texel size
- Make Remove Command's fields public
- bevy_utils: Re-introduce with_capacity().
- Update rodio requirement from 0.13 to 0.14
- Optimize Events::extend and impl std::iter::Extend
- Bump winit to 0.25
- Improve legibility of RunOnce::run_unsafe param
- Update gltf requirement from 0.15.2 to 0.16.0
- Move to smallvec v1.6
- Update rectangle-pack requirement from 0.3 to 0.4
- Make Commands public?
- Monomorphize various things
- Detect camera projection changes
- support assets of any size
- Separate Query filter access from fetch access during initial evaluation
- Provide better error message when missing a render backend
- par_for_each: split batches when iterating on a sparse query
- Allow deriving SystemParamon private types
- Angle bracket annotated types to support generics
- More detailed errors when resource not found
- Moved events to ECS
- Use a sorted Map for vertex buffer attributes
- Error message improvements for shader compilation/gltf loading
- Rename Light => PointLight and remove unused properties
- Override size_hint for all Iterators and add ExactSizeIterator where applicable
- Change breakout to use fixed timestamp
Fixed
- Fix shadows for non-TriangleLists
- Fix error message for the Componentmacro'scomponentstorageattribute.
- do not add plugin ExtractComponentPlugin twice for StandardMaterial
- load spirv using correct API
- fix shader compilation error reporting for non-wgsl shaders
- bevy_ui: Check clip when handling interactions
- crevice derive macro: fix path to render_resource when importing from bevy
- fix parenting of scenes
- Do not panic on failed setting of GameOver state in AlienCakeAddict
- Fix minimization crash because of cluster updates.
- Fix custom mesh pipelines
- Fix hierarchy example panic
- Fix double drop in BlobVec::replace_unchecked (#2597)
- Remove vestigial derives
- Fix crash with disabled winit
- Fix clustering for orthographic projections
- Run a clear pass on Windows without any Views
- Remove some superfluous unsafe code
- clearpass: also clear views without depth (2d)
- Check for NaN in Camera::world_to_screen()
- Fix sprite hot reloading in new renderer
- Fix path used by macro not considering that we can use a sub-crate
- Fix torus normals
- enable alpha mode for textures materials that are transparent
- fix calls to as_rgba_linear
- Fix shadow logic
- fix: as_rgba_linear used wrong variant
- Fix MIME type support for glTF buffer Data URIs
- Remove wasm audio feature flag for 2021
- use correct size of pixel instead of 4
- Fix custom_shader_pipelined example shader
- Fix scale factor for cursor position
- fix window resize after wgpu 0.11 upgrade
- Fix unsound lifetime annotation on Query::get_component
- Remove double Events::update in bevy-gilrs
- Fix bevy_ecs::schedule::executor_parallel::system span management
- Avoid some format! into immediate format!
- Fix panic on is_resource_* calls (#2828)
- Fix window size change panic
- fix Defaultimplementation ofImageso that size and data match
- Fix scale_factor_override in the winit backend
- Fix breakout example scoreboard
- Fix Option<NonSend<T>>andOption<NonSendMut<T>>
- fix missing paths in ECS SystemParam derive macro v2
- Add missing bytemuck feature
- Update EntityMut's location in push_children() and insert_children()
- Fixed issue with how texture arrays were uploaded with write_texture.
- Don't update when suspended to avoid GPU use on iOS.
- update archetypes for run criterias
- Fix AssetServer::get_asset_loader deadlock
- Fix unsetting RenderLayers bit in without fn
- Fix view vector in pbr frag to work in ortho
- Fixes Timer Precision Error Causing Panic
- [assets] Fix AssetServer::get_handle_path
- Fix bad bounds for NonSend SystemParams
- Add minimum sizes to textures to prevent crash
- [assets] set LoadState properly and more testing!
- [assets] properly set LoadStatewith invalid asset extension
- Fix Bevy crashing if no audio device is found
- Fixes dropping empty BlobVec
- [assets] fix Assets being set as 'changed' each frame
- drop overwritten component data on double insert
- Despawn with children doesn't need to remove entities from parents children when parents are also removed
- reduce tricky unsafety and simplify table structure
- Use bevy_reflect as path in case of no direct references
- Fix Events::<drain/clear> bug
- small ecs cleanup and remove_bundle drop bugfix
- Fix PBR regression for unlit materials
- prevent memory leak when dropping ParallelSystemContainer
- fix diagnostic length for asset count
- Fixes incorrect PipelineCompiler::compile_pipeline()step_mode
- Asset re-loading while it's being deleted
- Bevy derives handling generics in impl definitions.
- Fix unsoundness in Query::for_each_mut
- Fix mesh with no vertex attributes causing panic
- Fix alien_cake_addict: cake should not be at height of player's location
- fix memory size for PointLightBundle
- Fix unsoundness in query component access
- fixing compilation error on macos aarch64
- Fix SystemParam handling of Commands
- Fix IcoSphere UV coordinates
- fix 'attempted to subtract with overflow' for State::inactives
Version 0.5.0 (2021-04-06)
Added
- PBR Rendering
- PBR Textures
- HIDPI Text
- Rich text
- Wireframe Rendering Pipeline
- Render Layers
- Add Sprite Flipping
- OrthographicProjection scaling mode + camera bundle refactoring
- 3D OrthographicProjection improvements + new example
- Flexible camera bindings
- Render text in 2D scenes
- Text2drender quality
- System sets and run criteria v2
- System sets and parallel executor v2
- Many-to-many system labels
- Non-string labels (#1423 continued)
- Make EventReaderaSystemParam
- Add EventWriter
- Reliable change detection
- Redo State architecture
- Query::get_unique
- gltf: load normal and occlusion as linear textures
- Add separate brightness field to AmbientLight
- world coords to screen space
- Experimental Frustum Culling (for Sprites)
- Enable wgpu device limits
- bevy_render: add torus and capsule shape
- New mesh attribute: color
- Minimal change to support instanced rendering
- Add support for reading from mapped buffers
- Texture atlas format and conversion
- enable wgpu device features
- Subpixel text positioning
- make more information available from loaded GLTF model
- use Nameon node when loading a gltf file
- GLTF loader: support mipmap filters
- Add support for gltf::Material::unlit
- Implement Reflectfor tuples up to length 12
- Process Asset File Extensions With Multiple Dots
- Update Scene Example to Use scn.ron File
- 3d game example
- Add keyboard modifier example (#1656)
- Count number of times a repeating Timer wraps around in a tick
- recycle Timerrefactor to duration.sparkles AddStopwatchstruct.
- add scene instance entity iteration
- Make CommandsandWorldapis consistent
- Add insert_childrenandpush_childrentoEntityMut
- Extend AppBuilderapi withadd_system_setand similar methods
- add labels and ordering for transform and parent systems in POST_UPDATEstage
- Explicit execution order ambiguities API
- Resolve (most) internal system ambiguities
- Change 'components' to 'bundles' where it makes sense semantically
- add Flags<T>as a query to get flags of component
- Rename add_resourcetoinsert_resource
- Update init_resourceto not overwrite
- Enable dynamic mutable access to component data
- Get rid of ChangedRes
- impl SystemParamforOption<Res<T>>/Option<ResMut<T>>
- Add Window Resize Constraints
- Add basic file drag and drop support
- Modify Derive to allow unit structs for RenderResources.
- bevy_render: load .spv assets
- Expose wgpu backend in WgpuOptions and allow it to be configured from the environment
- updates on diagnostics (log + new diagnostics)
- enable change detection for labels
- Name component with fast comparisons
- Support for !Sendtasks
- Add missing spawn_localmethod toScopein the single threaded executor case
- Add bmp as a supported texture format
- Add an alternative winit runner that can be started when not on the main thread
- Added use_dpisetting toWindowDescriptor
- Implement CopyforElementState
- Mutable mesh accessors: indices_mutandattribute_mut
- Add support for OTF fonts
- Add from_xyztoTransform
- Adding copy_texture_to_bufferandcopy_texture_to_texture
- Added set_minimizedandset_positiontoWindow
- Example for 2D Frustum Culling
- Add remove resource to commands
Changed
- Bevy ECS V2
- Fix Reflect serialization of tuple structs
- color spaces and representation
- Make vertex buffers optional
- add to lower case to make asset loading case insensitive
- Replace right/up/forward and counter parts with local_x/local_yandlocal_z
- Use valid keys to initialize AHasherinFixedState
- Change Nameto takeInto<String>instead ofString
- Update to wgpu-rs 0.7
- Update glam to 0.13.0.
- use std clamp instead of Bevy's
- Make Reflectimpls unsafe (Reflect::anymust returnself)
Fixed
- convert grayscale images to rgb
- Glb textures should use bevy_render to load images
- Don't panic on error when loading assets
- Prevent ImageBundles from causing constant layout recalculations
- do not check for focus until cursor position has been set
- Fix lock order to remove the chance of deadlock
- Prevent double panic in the Drop of TaksPoolInner
- Ignore events when receiving unknown WindowId
- Fix potential bug when using multiple lights.
- remove panics when mixing UI and non UI entities in hierarchy
- fix label to load gltf scene
- fix repeated gamepad events
- Fix iOS touch location
- Don't panic if there's no index buffer and call draw
- Fix Bug in Asset Server Error Message Formatter
- add_stage now checks Stage existence
- Fix Un-Renamed add_resource Compile Error
- Fix Interaction not resetting to None sometimes
- Fix regression causing "flipped" sprites to be invisible
- revert default vsync mode to Fifo
- Fix missing paths in ECS SystemParam derive macro
- Fix staging buffer required size calculation (fixes #1056)
Version 0.4.0 (2020-12-19)
Added
- add bevymark benchmark example
- gltf: support camera and fix hierarchy
- Add tracing spans to schedules, stages, systems
- add example that represents contributors as bevy icons
- Add received character
- Add bevy_dylib to force dynamic linking of bevy
- Added RenderPass::set_scissor_rect
- bevy_log- Adds logging functionality as a Plugin.
- Changes internal logging to work with the new implementation.
 
- cross-platform main function
- Controllable ambient light color
- Added a resource to change the current ambient light color for PBR.
 
- Added more basic color constants
- Add box shape
- Expose an EventId for events
- System Inputs, Outputs, and Chaining
- Expose an EventIdfor events
- Added set_cursor_positiontoWindow
- Added new Bevy reflection system
- Replaces the properties system
 
- Add support for Apple Silicon
- Live reloading of shaders
- Store mouse cursor position in Window
- Add removal_detection example
- Additional vertex attribute value types
- Added WindowFocused event
- Tracing chrome span names
- Allow windows to be maximized
- GLTF: load default material
- can spawn a scene from a ChildBuilder, or directly set its parent when spawning it
- add ability to load .dds,.tga, and.jpegtexture formats
- add ability to provide custom a AssetIoimplementation
Changed
- delegate layout reflection to RenderResourceContext
- Fall back to remove components one by one when failing to remove a bundle
- Port hecs derive macro improvements
- Use glyph_brush_layout and add text alignment support
- upgrade glam and hexasphere
- Flexible ECS Params
- Make Timer.tick return &Self
- FileAssetIo includes full path on error
- Removed ECS query APIs that could easily violate safety from the public interface
- Changed Query filter API to be easier to understand
- bevy_render: delegate buffer aligning to render_resource_context
- wasm32: non-spirv shader specialization
- Renamed XComponents to XBundle
- Check for conflicting system resource parameters
- Tweaks to TextureAtlasBuilder.finish()
- do not spend time drawing text with is_visible = false
- Extend the Texture asset type to support 3D data
- Breaking changes to timer API
- Created getters and setters rather than exposing struct members.
 
- Removed timer auto-ticking system
- 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
- Breaking changes to Time API
- Created getters to get Timestate and made members private.
- Modifying Time's values directly is no longer possible outside of bevy.
 
- Created getters to get 
- Use mailboxinstead offifofor vsync on supported systems
- switch winit size to logical to be dpi independent
- Change bevy_input::Touch API to match similar APIs
- Run parent-update and transform-propagation during the "post-startup" stage (instead of "startup")
- Renderer Optimization Round 1
- ChangeTextureAtlasBuilderinto expected Builder conventions
- Optimize Text rendering / SharedBuffers
- hidpi swap chains
- optimize asset gpu data transfer
- naming coherence for cameras
- Schedule v2
- Use shaderc for aarch64-apple-darwin
- update Window'swidth&heightmethods to returnf32
- Break out Visible component from Draw
- Users setting Draw::is_visibleorDraw::is_transparentshould now setVisible::is_visibleandVisible::is_transparent
 
- Users setting 
- winitupgraded from version 0.23 to version 0.24
- set is_transparent to true by default for UI bundles
Fixed
- Fixed typos in KeyCode identifiers
- Remove redundant texture copies in TextureCopyNode
- Fix a deadlock that can occur when using scope() on ComputeTaskPool from within a system
- Don't draw text that isn't visible
- Use instant::Instantfor WASM compatibility
- Fix pixel format conversion in bevy_gltf
- Fixed duplicated children when spawning a Scene
- Corrected behaviour of the UI depth system
- Allow despawning of hierarchies in threadlocal systems
- Fix RenderResourcesindex slicing
- Run parent-update and transform-propagation during the "post-startup" stage
- Fix collision detection by comparing abs() penetration depth
- deal with rounding issue when creating the swap chain
- only update components for entities in map
- Don't panic when attempting to set shader defs from an asset that hasn't loaded yet
Version 0.3.0 (2020-11-03)
Added
- Touch Input
- iOS XCode Project
- Android Example and use bevy-glsl-to-spirv 0.2.0
- Introduce Mouse capture API
- bevy_input::touch: implement touch input
- D-pad support on MacOS
- Support for Android file system
- app: PluginGroups and DefaultPlugins
- PluginGroupis a collection of plugins where each plugin can be enabled or disabled.
 
- 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 bevy_ecs::Commands::removefor bundles
- impl DefaultforTextureFormat
- Expose current_entity in ChildBuilder
- AppBuilder::add_thread_local_resource
- Commands::write_world_boxedtakes a pre-boxed world writer to the ECS's command queue
- FrameTimeDiagnosticsPluginnow 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 dependencies
- Suggest -Zrun-dsymutil-nofor faster compilation on MacOS
Changed
- ecs: ergonomic query.iter(), remove locks, add QuerySets
- query.iter()is now a real iterator!
- QuerySetallows working with conflicting queries and is checked at compile-time.
 
- Rename query.entity()andquery.get()- query.get::<Component>(entity)is now- query.get_component::<Component>(entity)
- query.entity(entity)is now- query.get(entity)
 
- 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.
Constructors such as Color::rgbandColor::rgbawill be converted to linear sRGB.
- 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.
 
- Color is now assumed to be provided in the non-linear sRGB colorspace.
Constructors such as 
- Meshoverhaul with custom vertex attributes- 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.
 
- Any vertex attribute can now be added over 
- 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
- New method of playing audio can be found in the examples.
 
- Added support for inserting custom initial values for Local<T>system resources #745
Fixed
- 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
- Fix PreviousParent lag by merging parent update systems
- Fix bug of connection event of gamepad at startup
- Fix wavy text
Version 0.2.1 (2020-9-20)
Fixed
Version 0.2.0 (2020-9-19)
Added
- 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 anything- Decodable.
 
- Color::hexfor creating- Colorfrom string hex values.- Accepts the forms RGB, RGBA, RRGGBB, and RRGGBBAA.
 
- Color::rgb_u8and- Color::rgba_u8.
- Added bevy_render::pass::ClearColorto prelude.
- SpriteResizeModemay choose how- Spriteresizing 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
Changed
- 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.
Fixed
- 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
