 acdeeb893a
			
		
	
	
		acdeeb893a
		
			
		
	
	
	
	
		
			
			This release I'm experimenting with a new changelog format that doesn't sap hours of extra time to put together. Basically: 1. Sort by "development area" instead of added / changed / fixed. These distinctions are often unclear anyway and we have no automated way of assigning them currently. "Development area" sorting feels equally useful (if not more useful). Our changelog generator also already does "development area" categorization so this is efficient. 2. Sort by "importance" and trim out irrelevant changes. This is laborious, but I already do this as part of my blog post construction methodology, so it isn't "extra" work.
		
			
				
	
	
	
		
			236 KiB
		
	
	
	
	
	
	
	
			
		
		
	
	
			236 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.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