mirror of
https://github.com/bevyengine/bevy
synced 2024-12-14 15:22:30 +00:00
cdf4311fb9
* Add 0.10.0 changelog * Add missing `
204 KiB
204 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.10.0 (2023-03-06)
Added
- Accessibility: Added
Label
for 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_mut
now exists and can be used to get a&mut World
out ofUnsafeWorldCell
- ECS:
WorldId
now implements theFromWorld
trait. - ECS: A
core::fmt::Pointer
impl toPtr
,PtrMut
andOwnedPtr
. - ECS: Add
bevy_ecs::schedule_v3
module - ECS: Add
EntityMap::iter()
- ECS: Add
Ref
to the prelude - ECS: Add
report_sets
option toScheduleBuildSettings
- ECS: add
Resources::iter
to iterate over all resource IDs - ECS: add
UnsafeWorldCell
abstraction - ECS: Add
World::clear_resources
&World::clear_all
- ECS: Add a basic example for system ordering
- ECS: Add a missing impl of
ReadOnlySystemParam
forOption<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
Ptr
andPtrMut
- 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_mut
andas_ref
methods toMutUntyped
. - ECS: Added
bevy::ecs::system::assert_is_read_only_system
. - ECS: Added
Components::resource_id
. - ECS: Added
DebugName
world query for more human friendly debug names of entities. - ECS: Added
distributive_run_if
toIntoSystemConfigs
to enable adding a run condition to each system when usingadd_systems
. - ECS: Added
EntityLocation::table_id
- ECS: Added
EntityLocation::table_row
. - ECS: Added
IntoIterator
implementation forEventReader
so you can now do&mut reader
instead ofreader.iter()
for events. - ECS: Added
len
,is_empty
,iter
methods on SparseSets. - ECS: Added
ManualEventReader::clear()
- ECS: Added
MutUntyped::with_type
which allows converting into aMut<T>
- ECS: Added
new_for_test
onComponentInfo
to make test code easy. - ECS: Added
not
condition. - ECS: Added
on_timer
andon_fixed_timer
run conditions - ECS: Added
OwningPtr::read_unaligned
. - ECS: Added
ReadOnlySystem
, which is implemented for anySystem
type whose parameters all implementReadOnlySystemParam
. - ECS: Added
Ref
which allows inspecting change detection flags in an immutable way - ECS: Added
shrink
andas_ref
methods 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
App
to work with schedules ergonomically - ECS: Added conversions from
Ptr
,PtrMut
, andOwningPtr
toNonNull<u8>
. - ECS: Added rore common run conditions:
on_event
, resource change detection,state_changed
,any_with_component
- ECS: Added support for variants of
bevy_ptr
types that do not require being correctly aligned for the pointee type. - ECS: Added the
CoreSchedule
enum - ECS: Added the
SystemParam
typeDeferred<T>
, which can be used to deferWorld
mutations. 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
reborrow
toMut
,ResMut
,NonSendMut
, andMutUntyped
. - ECS: Added the private
prepare_view_uniforms
system now has a public system set for scheduling purposes, calledViewSet::PrepareUniforms
- ECS: Added the trait
Combine
, which can be used with the newCombinatorSystem
to create system combinators with custom behavior. - ECS: Added the trait
EntityCommand
. This is a counterpart ofCommand
for 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
SystemParam
derive macro. - Hierarchy: Add
Transform::look_to
- Hierarchy: Added
add_child
,set_parent
andremove_parent
toEntityMut
- Hierarchy: Added
clear_children(&mut self) -> &mut Self
andreplace_children(&mut self, children: &[Entity]) -> &mut Self
function inBuildChildren
trait - Hierarchy: Added
ClearChildren
andReplaceChildren
struct - Hierarchy: Added
push_and_replace_children_commands
andpush_and_clear_children_commands
test - Hierarchy: Added the
BuildChildrenTransformExt
trait - 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
, andQuadraticBezier3d
types with methods for sampling position, velocity, and acceleration. The genericBezier
type 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
State
generics other than justRandomState
can now be reflected for bothhashbrown::HashMap
andcollections::HashMap
- Reflect:
Aabb
now implementsFromReflect
. - Reflect:
derive(Reflect)
now supports structs and enums that contain generic types - Reflect:
ParsedPath
for cached reflection paths - Reflect:
std::collections::HashMap
can now be reflected - Reflect:
std::collections::VecDeque
now implementsReflect
and all relevant traits. - Reflect: Add reflection path support for
Tuple
types - Reflect: Added
ArrayIter::new
. - Reflect: Added
FromReflect::take_from_reflect
- Reflect: Added
List::insert
andList::remove
. - Reflect: Added
Map::remove
- Reflect: Added
ReflectFromReflect
- Reflect: Added
TypeRegistrationDeserializer
, which simplifies getting a&TypeRegistration
while deserializing a string. - Reflect: Added methods to
List
that were previously provided byArray
- Reflect: Added support for enums in reflection paths
- Reflect: Added the
bevy_reflect_compile_fail_tests
crate for testing compilation errors - Reflect: bevy_reflect: Add missing primitive registrations
- Reflect: impl
Reflect
for&'static Path
- Reflect: implement
Reflect
forFxaa
- Reflect: implement
TypeUuid
for primitives and fix multiple-parameter generics having the sameTypeUuid
- Reflect: Implemented
Reflect
+FromReflect
for 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
extras
toGltfNode
/GltfMesh
/GltfPrimitive
which store extras - Render: A pub field
material_extras
toGltfPrimitive
which 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
ReadOnlySystemParam
forExtract<>
- Render: Initial tonemapping options
- Render: ShaderDefVal: add an
UInt
option - Render: Support raw buffers in AsBindGroup macro
- Rendering:
Aabb
now implementsCopy
. - Rendering:
ExtractComponent
can specify output type, and outputting is optional. - Rendering:
Mssaa::samples
- Rendering: Add
#else ifdef
to shader preprocessing. - Rendering: Add a field
push_constant_ranges
to 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_frequency
andBloomSettings::composite_mode
. - Rendering: Added
BufferVec::extend
- Rendering: Added
BufferVec::truncate
- Rendering: Added
Camera::msaa_writeback
which can enable and disable msaa writeback. - Rendering: Added
CascadeShadowConfigBuilder
to help with creatingCascadeShadowConfig
- Rendering: Added
DepthPrepass
andNormalPrepass
component to control which textures will be created by the prepass and available in later passes. - Rendering: Added
Draw<T>::prepare
optional trait function. - Rendering: Added
DrawFunctionsInternals::id()
- Rendering: Added
FallbackImageCubemap
. - Rendering: Added
FogFalloff
enum for selecting between three widely used “traditional” fog falloff modes:Linear
,Exponential
andExponentialSquared
, as well as a more advancedAtmospheric
fog; - Rendering: Added
get_input_node
- Rendering: Added
Lcha
member tobevy_render::color::Color
enum - Rendering: Added
MainTaret::main_texture_other
- Rendering: Added
PhaseItem::entity
- Rendering: Added
prepass_enabled
flag to theMaterialPlugin
that will control if a material uses the prepass or not. - Rendering: Added
prepass_enabled
flag to thePbrPlugin
to control if the StandardMaterial uses the prepass. Currently defaults to false. - Rendering: Added
PrepassNode
that runs before the main pass - Rendering: Added
PrepassPlugin
to extract/prepare/queue the necessary data - Rendering: Added
RenderCommand::ItemorldQuery
associated type. - Rendering: Added
RenderCommand::ViewWorldQuery
associated 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_a
toColor
. - Rendering: Added 2x and 8x sample counts for MSAA.
- Rendering: Added a
#[storage(index)]
attribute to the deriveAsBindGroup
macro. - Rendering: Added an
EnvironmentMapLight
camera component that adds additional ambient light to a scene. - Rendering: Added argument to
ScalingMode::WindowSize
that 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
BlitPipeline
and 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::Add
andAlphaMode::Multiply
; - Rendering: Added support for distance-based fog effects for PBR materials, controllable per-camera via the new
FogSettings
component; - Rendering: Added support for KTX2
R8_SRGB
,R8_UNORM
,R8G8_SRGB
,R8G8_UNORM
,R8G8B8_SRGB
,R8G8B8_UNORM
formats by converting to supported wgpu formats as appropriate - 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::LchRepresentation
struct - Rendering: Clone impl for MaterialPipeline
- Rendering: Implemented
Clone
for all pipeline types. - Rendering: Smooth Transition between Animations
- Support optional env variable
BEVY_ASSET_ROOT
to explicitly specify root assets directory. - Task: Add thread create/destroy callbacks to TaskPool
- Tasks: Added
ThreadExecutor
that 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::new
is nowconst
- UI: Add const to methods and const defaults to bevy_ui
- UI: Added
all
,width
andheight
functions toSize
. - UI: Added
Anchor
component toText2dBundle
- UI: Added
CalculatedSize::preserve_aspect_ratio
- UI: Added
Component
derive toAnchor
- UI: Added
RelativeCursorPosition
, and an example showcasing it - UI: Added
Text::with_linebreak_behaviour
- UI: Added
TextBundle::with_linebreak_behaviour
- UI: Added a
BackgroundColor
component toTextBundle
. - UI: Added a helper method
with_background_color
toTextBundle
. - UI: Added the
SpaceEvenly
variant toAlignContent
. - UI: Added the
Start
andEnd
variants toAlignItems
,AlignSelf
,AlignContent
andJustifyContent
. - UI: Adds
flip_x
andflip_y
fields toExtractedUiNode
. - Utils: Added
SyncCell::read
, which allows shared access to values that already implement theSync
trait. - 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:
WindowDescriptor
renamed toWindow
. - Windowing: Added
hittest
toWindowAttributes
- 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_top
which 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
’sDefault
impl. - Windowing: Modified the
WindowBuilder
Changed
- Animation:
AnimationPlayer
that 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_changes
allows watched path and path to reload to differ - Asset: make HandleUntyped::id private
- Audio:
AudioOutput
is 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_labels
is nowApp::add_default_sets
- ECS:
App::add_system_set
was renamed toApp::add_systems
- ECS:
Archetype
indices andTable
rows have been newtyped asArchetypeRow
andTableRow
. - ECS:
ArchetypeGeneration
now implementsOrd
andPartialOrd
. - ECS:
bevy_pbr::add_clusters
is no longer an exclusive system - ECS:
Bundle::get_components
now 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:
Command
closures no longer need to implement the marker traitstd::marker::Sync
. - ECS:
CoreStage
andStartupStage
enums are nowCoreSet
andStartupSet
- ECS:
EntityMut::world_scope
now allows returning a value from the immediately-computed closure. - ECS:
EntityMut
: renameremove_intersection
toremove
andremove
totake
- ECS:
EventReader::clear
now takes a mutable reference instead of consuming the event reader. - ECS:
EventWriter::send_batch
will only log a TRACE level log if the batch is non-empty. - ECS:
oldest_id
andget_event
convenience methods added toEvents<T>
. - ECS:
OwningPtr::drop_as
will now panic in debug builds if the pointer is not aligned. - ECS:
OwningPtr::read
will now panic in debug builds if the pointer is not aligned. - ECS:
Ptr::deref
will now panic in debug builds if the pointer is not aligned. - ECS:
PtrMut::deref_mut
will 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 currentWorld
state. - ECS:
RemovedComponents
now internally uses anEvents<RemovedComponentsEntity>
instead of anEvents<Entity>
- ECS:
SceneSpawnerSystem
now runs underCoreSet::Update
, rather thanCoreStage::PreUpdate.at_end()
. - ECS:
StartupSet
is now a base set - ECS:
System::default_labels
is nowSystem::default_system_sets
. - ECS:
SystemLabel
trait was replaced bySystemSet
- ECS:
SystemParamState::apply
now takes a&SystemMeta
parameter in addition to the provided&mut World
. - ECS:
SystemTypeIdLabel<T>
was replaced bySystemSetType<T>
- ECS:
tick_global_task_pools_on_main_thread
is no longer run as an exclusive system. Instead, it has been replaced bytick_global_task_pools
, which uses aNonSend
resource to force running on the main thread. - ECS:
Tick::is_older_than
was 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::world
is 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_resource
now returns the generatedComponentId
. - ECS:
World::init_resource
now returns the generatedComponentId
. - ECS:
World::iter_entities
now returns an iterator ofEntityRef
instead ofEntity
. - ECS:
World
s can now only hold a maximum of 2^32 - 1 tables. - ECS:
World
s can now only hold a maximum of 2^32- 1 archetypes. - ECS:
WorldId
now implementsSystemParam
and 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
RenderApp
label is found. - ECS: Allow adding systems to multiple sets that share the same base set
- ECS: change
is_system_type() -> bool
tosystem_type() -> Option<TypeId>
- ECS: changed some
UnsafeWorldCell
methods to takeself
instead of&self
/&mut self
since there is literally no point to them doing that - ECS: Changed:
Query::for_each(_mut)
,QueryParIter
will now leverage autovectorization to speed up query iteration where possible. - ECS: Default to using ExecutorKind::SingleThreaded on wasm32
- ECS: Ensure
Query
does not use the wrongWorld
- ECS: Exclusive systems may now be used with system piping.
- ECS: expose
ScheduleGraph
for 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
SparseSetIndex
forWorldId
- ECS: Improve the panic message for schedule build errors
- ECS: Lift the 16-field limit from the
SystemParam
derive - ECS: Make
EntityRef::new
unsafe - ECS: Make
Query
fields private - ECS: make
ScheduleGraph::initialize
public - 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 returnsTickCells
instead, which contains two separate&UnsafeCell<Tick>
for either component ticks. - ECS: Move MainThreadExecutor for stageless migration.
- ECS: Move safe operations out of
unsafe
blocks inQuery
- ECS: Optimize
.nth()
and.last()
for event iterators - ECS: Optimize
Iterator::count
for event iterators - ECS: Provide public
EntityRef::get_change_ticks_by_id
that takesComponentId
- ECS: refactor: move internals from
entity_ref
toWorld
, addSAFETY
comments - ECS: Rename
EntityId
toEntityIndex
- ECS: Rename
UnsafeWorldCellEntityRef
toUnsafeEntityCell
- ECS: Rename schedule v3 to schedule
- ECS: Rename state_equals condition to in_state
- ECS: Replace
World::read_change_ticks
withWorld::change_ticks
withinbevy_ecs
crate - ECS: Replaced the trait
ReadOnlySystemParamFetch
withReadOnlySystemParam
. - ECS: Simplified the
SystemParamFunction
andExclusiveSystemParamFunction
traits. - ECS: Speed up
CommandQueue
by storing commands more densely - ECS: Stageless: move final apply outside of spawned executor
- ECS: Stageless: prettier cycle reporting
- ECS: Systems without
Commands
andParallelCommands
will no longer show asystem_commands
span when profiling. - ECS: The
ReportHierarchyIssue
resource now has a public constructor (new
), and implementsPartialEq
- ECS: The
StartupSchedule
label is now defined as part of theCoreSchedules
enum - ECS: The
SystemParam
derive is now more flexible, allowing you to omit unused lifetime parameters. - ECS: the top level
bevy_ecs::schedule
module was replaced withbevy_ecs::scheduling
- ECS: Use
World
helper methods for sendingHierarchyEvent
s - 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
NonSend
run 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
glam
to0.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_hash
is now deterministic across processes. - Reflect: Changed function signatures of
ReflectComponent
methods,apply
,remove
,contains
, andreflect
. - Reflect: Changed the
List::push
andList::pop
to 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
WgpuSettings
into theRenderPlugin
- Render: Move prepass functions to prepass_utils
- Render: Only compute sprite color once per quad
- Render: Only execute
#define
if 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_edge
is now infallible (panics on error) - Rendering:
add_slot_edge
is now infallible (panics on error) - Rendering:
AsBindGroup
is now object-safe. - Rendering:
BloomSettings::knee
renamed toBloomPrefilterSettings::softness
. - Rendering:
BloomSettings::threshold
renamed toBloomPrefilterSettings::threshold
. - Rendering:
HexColorError::Hex
has been renamed toHexColorError::Char
- Rendering:
input_node
now panics onNone
- Rendering:
ktx2
andzstd
are now part of bevy’s default enabled features - Rendering:
Msaa
is now enum - Rendering:
PipelineCache
no longer requires mutable access in order to queue render / compute pipelines. - Rendering:
RenderContext::command_encoder
is now private. Use the accessorRenderContext::command_encoder()
instead. - Rendering:
RenderContext::render_device
is now private. Use the accessorRenderContext::render_device()
instead. - Rendering:
RenderContext
now supports adding externalCommandBuffer
s for inclusion into the render graphs. These buffers can be encoded outside of the render graph (i.e. in a system). - Rendering:
scale
is now applied before updatingarea
. Reading from it will takescale
into account. - Rendering:
SkinnedMeshJoints::build
now takes a&mut BufferVec
instead of a&mut Vec
as a parameter. - Rendering:
StandardMaterial
now defaults to a dielectric material (0.0metallic
) with 0.5perceptual_roughness
. - Rendering:
TrackedRenderPass
now requires a&RenderDevice
on construction. - Rendering:
Visibility
is 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_trace
in addition to setting the log level toTRACE
in order to be shown. - Rendering: Made cameras with the same target share the same
main_texture
tracker, which ensures continuity across cameras. - Rendering: Renamed
ScalingMode::Auto
toScalingMode::AutoMin
. - Rendering: Renamed
ScalingMode::None
toScalingMode::Fixed
- Rendering: Renamed
window_origin
toviewport_origin
- Rendering: Renamed the
priority
field onCamera
toorder
. - Rendering: Replaced
left
,right
,bottom
, andtop
fields 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
layout
field ofRenderPipelineDescriptor
andComputePipelineDescriptor
is now mandatory. - Rendering: The
rangefinder
module has been moved into therender_phase
module. - 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
RenderPhases
to share the sameTrackedRenderPass
, theRenderPhase::render
signature has changed. - Rendering: update its
Transform
in order to preserve itsGlobalTransform
after 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.dll
anddxil.dll
) - Rendering: You can now set up the rendering code of a
RenderPhase
directly using theRenderPhase::render
method, instead of implementing it manually in your render graph node. - Scenes:
SceneSpawner::spawn_dynamic
now returnsInstanceId
instead of()
. - Shape: Change
From<Icosphere>
toTryFrom<Icosphere>
- Tasks:
Scope
now usesFallibleTask
to await the cancellation of all remaining tasks when it’s dropped. - Time:
Time::set_relative_speed_fXX
now allows a relative speed of -0.0. - UI:
FocusPolicy
default has changed fromFocusPolicy::Block
toFocusPolicy::Pass
- UI:
TextPipeline::queue_text
andGlyphBrush::compute_glyphs
now need a TextLineBreakBehaviour argument, in order to pass through the new field. - UI:
update_image_calculated_size_system
setspreserve_aspect_ratio
to 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::height
so it sets thewidth
toVal::AUTO
. - UI: Changed
Size::width
so it sets theheight
toVal::AUTO
. - UI: Changed
TextAlignment
into an enum withLeft
,Center
, andRight
variants. - 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
grid
feature. - UI: Changed the
Size
width
andheight
default values toVal::Auto
- UI: Changed the
size
field ofCalculatedSize
to 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
text2d
example to show both linebreaking behaviours. - UI: Renamed
image_node_system
toupdate_image_calculated_size_system
- UI: Renamed the
background_color
field ofExtractedUiNode
tocolor
. - 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
MeasureFunc
only preserves the aspect ratio whenpreserve_aspect_ratio
is true. - UI: Updated
from_style
for Taffy 0.3.3. - UI: Upgraded to Taffy 0.2, improving UI layout performance significantly and adding the flexbox
gap
property andAlignContent::SpaceEvenly
. - UI: Use
f32::INFINITY
instead off32::MAX
to represent unbounded text in Text2dBounds - Window: expose cursor position with scale
- Window: Make WindowId::primary() const
- Window: revert stage changed for window closing
- Windowing:
WindowId
is nowEntity
. - Windowing: Moved
changed_window
anddespawn_window
systems toCoreStage::Last
to avoid systems making changes to theWindow
betweenchanged_window
and 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
WindowResolution
component.
Removed
- App: Removed
App::add_sub_app
- App: Rename dynamic feature
- ECS: Remove .on_update method to improve API consistency and clarity
- ECS: Remove
BuildWorldChildren
impl fromWorldChildBuilder
- ECS: Remove a duplicate lookup in
apply_state_transitions
- ECS: Remove an incorrect impl of
ReadOnlySystemParam
forNonSendMut
- ECS: Remove APIs deprecated in 0.9
- ECS: Remove broken
DoubleEndedIterator
impls on event iterators - ECS: Remove duplicate lookups from
Resource
initialization - ECS: Remove useless access to archetype in
UnsafeWorldCell::fetch_table
- ECS: Removed
AddBundle
.Edges::get_add_bundle
now returnsOption<ArchetypeId>
- ECS: Removed
Archetype::new
andArchetype::is_empty
. - ECS: Removed
ArchetypeComponentId::new
andArchetypeComponentId::value
. - ECS: Removed
ArchetypeGeneration::value
- ECS: Removed
ArchetypeId::new
andArchetypeId::value
. - ECS: Removed
ArchetypeIdentity
. - ECS: Removed
Archetypes
’sDefault
implementation. - ECS: Removed
AsSystemLabel
trait - ECS: Removed
Entities::alloc_at_without_replacement
andAllocAtWithoutReplacement
. - ECS: Removed
Entities
’sDefault
implementation. - ECS: Removed
EntityMeta
- ECS: Removed
on_hierarchy_reports_enabled
run 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::storages
since 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::Extract
no longer warn when they do not read data from the main world - ECS: Removed the bound
T: Sync
fromLocal<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
SystemParam
types 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 forReflect
derives (this is not currently used) - Reflect: Removed
Array
as supertrait ofList
- Reflect: Removed
PixelInfo
and getpixel_size
from wgpu - Reflect: Removed
ReflectSerialize
andReflectDeserialize
registrations from most glam types - Remove unnecessary
Default
impl 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>
inUpdateProjectionFrusta
set - 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
Time
resource
instead ofExtract
ingTime
- 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
EntityPhaseItem
trait - Rendering: Removed
ExtractedJoints
. - Rendering: Removed
SetShadowViewBindGroup
,queue_shadow_view_bind_group()
, andLightMeta::shadow_view_bind_group
in favor of reusing the prepass view bind group. - Rendering: Removed the
render
feature 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
HorizontalAlign
andVerticalAlign
. - UI: Removed
ImageMode
. - UI: Removed
QueuedText
- UI: Removed the
image_mode
field fromImageBundle
- UI: Removed the
Val
<->f32
conversion 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_top
has been removed, you can now usewindow.window_level
- Windowing: Removed
ModifiesWindows
system 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_tracy
feature 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
WorldCell
is already borrowed - ECS: Fix partially consumed
QueryIter
andQueryCombinationIter
having invalidsize_hint
- ECS: Fix PipeSystem panicking with exclusive systems
- ECS: Fix soundness bug with
World: Send
. Dropping aWorld
that contains a!Send
resource on the wrong thread will now panic. - ECS: Fix Sparse Change Detection
- ECS: Fix trait bounds for run conditions
- ECS: Fix unsoundnes in
insert
remove
anddespawn
- ECS: Fix unsoundness in
EntityMut::world_scope
- ECS: Fixed
DetectChanges::last_changed
returning the wrong value. - ECS: Fixed
DetectChangesMut::set_last_changed
not actually updating thechanged
tick. - ECS: Fixed
Res
andQuery
parameter 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
ChildAdded
events - Input: Avoid triggering change detection for inputs
- Input: Fix
AxisSettings::new
only accepting invalid bounds - Input: Fix incorrect behavior of
just_pressed
andjust_released
inInput<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
StandardMaterial
as 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::ImageRgb32F
tobevy_render::texture::Image
conversion inbevy_render::texture::Image::from_dynamic()
. - Scene: Cleanup dynamic scene before building
- Task: Fix panicking on another scope
- UI:
Size::height
setswidth
notheight
- UI: Don't ignore UI scale for text
- UI: Fix
bevy_ui
compile error withoutbevy_text
- UI: Fix overflow scaling for images
- UI: fix upsert_leaf not setting a MeasureFunc for new leaf nodes
- Window: Apply
WindowDescriptor
settings 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_time
intime_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
TimeUpdateStrategy
resource for manualTime
updating - 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
serialize
feature tobevy_core
- add serialize feature to bevy_transform
- Add associated constant
IDENTITY
toTransform
and friends. - bevy_reflect: Add
Reflect::into_reflect
- Add reflect_owned
Reflect
forTonemapping
andClusterConfig
- add
ReflectDefault
to std types - Add FromReflect for Visibility
- Register
RenderLayers
type 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
ComputedVisibility
andHandle<T>
- Register
Wireframe
type - Derive
FromReflect
forTransform
andGlobalTransform
- Make arrays behave like lists in reflection
- Implement
Debug
for dynamic types - Implemented
Reflect
for all the ranges - Add
pop
method forList
trait. - bevy_reflect:
GetTypeRegistration
forSmallVec<T>
- register missing reflect types
- bevy_reflect: Get owned fields
- bevy_reflect: Add
FromReflect
to the prelude - implement
Reflect
forInput<T>
, some misc improvements to reflect value derive - register
Cow<'static, str>
for reflection - bevy_reflect: Relax bounds on
Option<T>
- remove
ReflectMut
in favor ofMut<dyn Reflect>
- add some info from
ReflectPathError
to 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
+FromReflect
for input types - Make TouchInput and ForceTouch serializable
- Add a Gamepad Viewer tool to examples
- Derived
Copy
trait forbevy_input
events,Serialize
/Deserialize
for events inbevy_input
andbevy_windows
,PartialEq
for events in both, andEq
where possible in both. - Support for additional gamepad buttons and axis
- Added keyboard scan input event
- Add
set_parent
andremove_parent
toEntityCommands
- Add methods to
Query<&Children>
andQuery<&Parent>
to iterate over descendants and ancestors - Add
is_finished
toTask<T>
- Expose mint feature in bevy_math/glam
- Utility methods for Val
- Register missing bevy_text types
- Add additional constructors for
UiRect
to specify values for specific fields - Add AUTO and UNDEFINED const constructors for
Size
- Add Exponential Moving Average into diagnostics
- Add
send_event
and 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
/pipe
adapters - 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
FromWorld
bound toT
inLocal<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
toggle
method toVisibility
component - Add globals struct to mesh2d
- add support for .comp glsl shaders
- Implement
IntoIterator
for&Extract<P>
- add Debug, Copy, Clone derives to Circle
- Add TextureFormat::Rg16Unorm support for Image and derive Resource for SpecializedComputePipelines
- Add
bevy_render::texture::ImageSettings
to prelude - Add
Projection
component to prelude. - Expose
Image
conversion functions (fixes #5452) - Macro for Loading Internal Binary Assets
- Add
From<String>
forAssetPath<'a>
- Add Eq & PartialEq to AssetPath
- add
ReflectAsset
andReflectHandle
- 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
Resource
trait opt-in, requiring#[derive(Resource)]
V2 - Replace
WorldQueryGats
trait 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
Bundle
forComponent
. UseBundle
tuples for insertion - Spawn now takes a Bundle
- make
WorldQuery
very 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
InputAxis
andButtonSettings
- Clean up Fetch code
- Nested spawns on scope
- Skip empty archetypes and tables when iterating over queries
- Increase the
MAX_DIRECTIONAL_LIGHTS
from 1 to 10 - bevy_pbr: Normalize skinned normals
- remove mandatory mesh attributes
- Rename
play
tostart
and add newplay
method that won't overwrite the existing animation if it's already playing - Replace the
bool
argument ofTimer
withTimerMode
- 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
PI
to specify angles in examples. - Remove
Transform::apply_non_uniform_scale
- Rename
Transform::mul_vec3
totransform_point
and improve docs - make
register
onTypeRegistry
idempotent - do not set cursor grab on window creation if not asked for
- Make
raw_window_handle
field inWindow
andExtractedWindow
anOption
. - Support monitor selection for all window modes.
Gamepad
type isCopy
; do not require / return references to it inGamepads
API- 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
wgpu
to 0.14.0,naga
to0.10.0
,winit
to 0.27.4,raw-window-handle
to 0.5.0,ndk
to 0.7 - Update to notify 5.0 stable
- Update rodio requirement from 0.15 to 0.16
- remove copyless
- Mark
Task
as#[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
NodeBundle
transparent - Rename
UiColor
toBackgroundColor
- changed diagnostics from seconds to milliseconds
- Remove unnecesary branches/panics from Query accesses
debug_checked_unwrap
should track its caller- Speed up
Query::get_many
and add benchmarks - Rename system chaining to system piping
- [Fixes #6059]
Entity
's “ID” should be named “index” instead Query
filter types must beReadOnlyWorldQuery
- Remove ambiguity sets
- relax
Sized
bounds around change detection types - Remove ExactSizeIterator from QueryCombinationIter
- Remove Sync bound from Command
- Make most
Entity
methodsconst
- Remove
insert_resource_with_id
- Avoid making
Fetch
sClone
- Remove
Sync
bound fromLocal
- Replace
many_for_each_mut
withiter_many_mut
. - bevy_ecs: Use 32-bit entity ID cursor on platforms without AtomicI64
- Specialize UI pipeline on "hdr-ness"
- Allow passing
glam
vector 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::Rect
intobevy_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
Sync
requirement inDecodable::Decoder
Fixed
- Optimize rendering slow-down at high entity counts
- bevy_reflect: Fix
DynamicScene
not 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
Clone
bounds - bevy_reflect: Fix
apply
method forOption<T>
- Fix outdated and badly formatted docs for
WindowDescriptor::transparent
- disable window pre creation for ios
- Remove unnecessary unsafe
Send
andSync
impl forWinitWindows
on 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
RemoveChildren
command - 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_id
if exists - Fix lifetime bound on
From
impl forNonSendMut
->Mut
- Fix
mesh.wgsl
error for meshes without normals - Fix panic when using globals uniform in wasm builds
- Resolve most remaining execution-order ambiguities
- Call
mesh2d_tangent_local_to_world
with 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
Timeout
errors 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_frusta
andcamera_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
, andRenderLayers
support - Better Materials:
AsBindGroup
trait and derive, simplerMaterial
trait - Derive
AsBindGroup
Improvements: Better errors, more options, update examples - Support
AsBindGroup
for 2d materials as well - Parallel Frustum Culling
- Hierarchy commandization
- Generate vertex tangents using mikktspace
- Add a
SpatialBundle
withVisibility
andTransform
components - Add
RegularPolygon
andCircle
meshes - Add a
SceneBundle
to 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_op
configuration field toCamera3d
- Refactor
Camera
methods and add viewport rect - Add
TextureFormat::R16Unorm
support forImage
- Add a
VisibilityBundle
withVisibility
andComputedVisibility
components - Add ExtractResourcePlugin
- Add depth_bias to SpecializedMaterial
- Added
offset
parameter toTextureAtlas::from_grid_with_padding
- Add the possibility to create custom 2d orthographic cameras
- bevy_render: Add
attributes
andattributes_mut
methods toMesh
- Add helper methods for rotating
Transform
s - Enable wgpu profiling spans when using bevy's trace feature
- bevy_pbr: rework
extract_meshes
- Add
inverse_projection
andinverse_view_proj
fields to shader view uniform - Add
ViewRangefinder3d
to reduce boilerplate when enqueuing standard 3DPhaseItems
- Create
bevy_ptr
standalone crate - Add
IntoIterator
impls for&Query
and&mut Query
- Add untyped APIs for
Components
andResources
- Add infallible resource getters for
WorldCell
- Add
get_change_ticks
method toEntityRef
andEntityMut
- Add comparison methods to
FilteredAccessSet
- Add
Commands::new_from_entities
- Add
QueryState::get_single_unchecked_manual
and its family members - Add
ParallelCommands
system parameter - Add methods for querying lists of entities
- Implement
FusedIterator
for eligibleIterator
types - Add
component_id()
function toWorld
andComponents
- Add ability to inspect entity's components
- Add a more helpful error to help debug panicking command on despawned entity
- Add
ExactSizeIterator
implementation forQueryCombinatonIter
- Added the
ignore_fields
attribute to the derive macros for*Label
types - Exact sized event iterators
- Add a
clear()
method to theEventReader
that consumes the iterator - Add helpers to send
Events
fromWorld
- Add file metadata to
AssetIo
- Add missing audio/ogg file extensions: .oga, .spx
- Add
reload_asset
method 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_each
and its variants. - Add a
release_all
method onInput
- Add a
reset_all
method onInput
- Add a helper tool to build examples for wasm
- bevy_reflect: add a
ReflectFromPtr
type to create&dyn Reflect
from a*const ()
- Add a
ReflectDefault
type and add#[reflect(Default)]
to all component types that implement Default and are user facing - Add a macro to implement
Reflect
for struct types and migrate glam types to use this for reflection - bevy_reflect: reflect arrays
- bevy_reflect: reflect char
- bevy_reflect: add
GetTypeRegistration
impl for reflected tuples - Add reflection for
Resources
- bevy_reflect: add
as_reflect
andas_reflect_mut
methods onReflect
- Add an
apply_or_insert
method toReflectResource
andReflectComponent
- bevy_reflect:
IntoIter
forDynamicList
andDynamicMap
- bevy_reflect: Add
PartialEq
to reflectedf32
s andf64
s - Create mutable versions of
TypeRegistry
methods - bevy_reflect: add a
get_boxed
method toreflect_trait
- bevy_reflect: add
#[reflect(default)]
attribute forFromReflect
- bevy_reflect: add statically available type info for reflected types
- Add an
assert_is_exclusive_system
function - 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
encase
fromcrevice
- Update
wgpu
to 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
Ui
nodes that have a rotation - Rename
ElementState
toButtonState
- Move
Size
tobevy_ui
- Move
Rect
tobevy_ui
and rename it toUiRect
- Modify
FontAtlas
so that it can handle fonts of any size - Rename
CameraUi
- Remove
task_pool
parameter frompar_for_each(_mut)
- Copy
TaskPool
resoures to sub-Apps - Allow closing windows at runtime
- Move the configuration of the
WindowPlugin
to aResource
- Optionally resize
Window
canvas element to fit parent element - Change window resolution types from tuple to
Vec2
- Update time by sending frame
Instant
through a channel - Split time functionality into
bevy_time
- Split mesh shader files to make the shaders more reusable
- Set
naga
capabilities corresponding towgpu
features - Separate out PBR lighting, shadows, clustered forward, and utils from pbr.wgsl
- Separate PBR and tonemapping into 2 functions
- Make
RenderStage::Extract
run on the render world - Change default
FilterMode
ofImage
toLinear
- bevy_render: Fix KTX2 UASTC format mapping
- Allow rendering meshes without UV coordinate data
- Validate vertex attribute format on insertion
- Use
Affine3A
forGlobalTransform
to allow any affine transformation - Recalculate entity
AABB
s when meshes change - Change
check_visibility
to 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
PhaseItems
to draw - Filter material handles on extraction
- Apply vertex colors to
ColorMaterial
andMesh2D
- Make
MaterialPipelineKey
fields public - Simplified API to get NDC from camera and world position
- Set
alpha_mode
based on alpha value - Make
Wireframe
respectVisibleEntities
- Use const
Vec2
in lights cluster and bounding box when possible - Make accessors for mesh vertices and indices public
- Use
BufferUsages::UNIFORM
forSkinnedMeshUniform
- Place origin of
OrthographicProjection
at integer pixel when usingScalingMode::WindowSize
- Make
ScalingMode
more flexible - Move texture sample out of branch in
prepare_normal
- Make the fields of the
Material2dKey
public - Use collect to build mesh attributes
- Replace
ReadOnlyFetch
withReadOnlyWorldQuery
- Replace
ComponentSparseSet
's internals with aColumn
- Remove QF generics from all
Query/State
methods and types - Remove
.system()
- Make change lifespan deterministic and update docs
- Make derived
SystemParam
readonly if possible - Merge
matches_archetype
andmatches_table
- Allows conversion of mutable queries to immutable queries
- Skip
drop
whenneeds_drop
isfalse
- Use u32 over usize for
ComponentSparseSet
indicies - Remove redundant
ComponentId
inColumn
- Directly copy moved
Table
components to the target location SystemSet::before
andSystemSet::after
now takeAsSystemLabel
- Converted exclusive systems to parallel systems wherever possible
- Improve
size_hint
onQueryIter
- Improve debugging tools for change detection
- Make
RunOnce
a non-manualSystem
impl - Apply buffers in
ParamSet
- Don't allocate for
ComponentDescriptors
of non-dynamic component types - Mark mutable APIs under ECS storage as
pub(crate)
- Update
ExactSizeIterator
impl to support archetypal filters (With
,Without
) - Removed world cell from places where split multable access is not needed
- Add Events to
bevy_ecs
prelude - Improve
EntityMap
API - Implement
From<bool>
forShouldRun
. - Allow iter combinations on custom world queries
- Simplify design for
*Label
s - Tidy up the code of events
- Rename
send_default_event
tosend_event_default
on 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_glsl
example 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
Reflect
methods - Make
Reflect
safe to implement bevy_reflect
: putserialize
into externalReflectSerialize
type- Remove
Serialize
impl fordyn Array
and friends - Re-enable
#[derive(TypeUuid)]
for generics - Move primitive type registration into
bevy_reflect
- Implement reflection for more
glam
types - Make
reflect_partial_eq
return 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
Size
import - Export and register
Mat2
. - Implement
Debug
forGamepads
- Update codebase to use
IntoIterator
where possible. - Rename
headless_defaults
example tono_renderer
for clarity - Remove dead
SystemLabelMarker
struct - bevy_reflect: remove
glam
from a test which is active without the glam feature - Disable vsync for stress tests
- Move
get_short_name
utility method frombevy_reflect
intobevy_utils
- Derive
Default
for enums where possible - Implement
Eq
andPartialEq
forMouseScrollUnit
- Some cleanup for
bevy_ptr
- Move float_ord from
bevy_core
tobevy_utils
- Remove unused
CountdownEvent
- Some minor cleanups of asset_server
- Use
elapsed()
onInstant
- Make paused
Timers
updatejust_finished
on tick - bevy_utils: remove hardcoded log level limit
- Make
Time::update_with_instant
public 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
clap
to 3.2 in tools usingvalue_parser
- Updated
glam
to0.21
. - Update Notify Dependency
Fixed
- bevy_ui: keep
Color
as 4f32
s - Fix issues with bevy on android other than the rendering
- Update layout/style when scale factor changes too
- Fix
Overflow::Hidden
so it works correctly withscale_factor_override
- Fix
bevy_ui
touch input - Fix physical viewport calculation
- Minimally fix the known unsoundness in
bevy_mikktspace
- Make
Transform
propagation correct in the presence of updated children StorageBuffer
uses 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
IoTaskPool
in wasm - Fix skinned mesh normal handling in mesh shader
- Don't panic when
StandardMaterial
normal_map
hasn't loaded yet - Fix incorrect rotation in
Transform::rotate_around
- Fix
extract_wireframes
- Fix type parameter name conflicts of
#[derive(Bundle)]
- Remove unnecessary
unsafe impl
ofSend+Sync
forParallelSystemContainer
- Fix line material shader
- Fix
mouse_clicked
check for touch - Fix unsoundness with
Or
/AnyOf
/Option
component access - Improve soundness of
CommandQueue
- Fix some memory leaks detected by miri
- Fix Android example icon
- Fix broken
WorldCell
test - Bugfix
State::set
transition 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
render
feature but withoutanimation
- Fix re-adding a plugin to a
PluginGroup
- Fix torus normals
- Add
NO_STORAGE_BUFFERS_SUPPORT
shaderdef 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
ParamSet
for conflictingSystemParam
:s- default() shorthand
- use marker components for cameras instead of name strings
- Implement
WorldQuery
derive 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
Deref
andDerefMut
- Add clear_schedule
- Add Query::contains
- bevy_render: Support removal of nodes, edges, subgraphs
- Implement init_resource for
Commands
andWorld
- 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 changeImage
preparation 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
System
responsible 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_mut
on 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
ColorMaterial
color 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 ci
command - Use more ergonomic span syntax
Fixed
- Remove unsound lifetime annotations on
EntityMut
- Remove unsound lifetime annotations on
Query
methods - 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::Hidden
style property for UI - SystemState
- Add a method
iter_combinations
on 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
WorldQuery
forWithBundle
- 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
Commands
performance - 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_combinators
examples 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_app
return an&App
and addsub_app_mut() -> &mut App
- use ogg by default instead of mp3
- enable
wasm-bindgen
feature 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
String
and&String
asId
forAssetServer.get_handle(id)
- Ported WgpuOptions to new renderer
- Down with the system!
- Update dependencies
ron
winit
& fixcargo-deny
lists - 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_asset
andbevy_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
SystemParam
on 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
Component
macro'scomponent
storage
attribute. - 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
Default
implementation ofImage
so 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
LoadState
with 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
Text2d
render quality- System sets and run criteria v2
- System sets and parallel executor v2
- Many-to-many system labels
- Non-string labels (#1423 continued)
- Make
EventReader
aSystemParam
- 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
Name
on node when loading a gltf file - GLTF loader: support mipmap filters
- Add support for gltf::Material::unlit
- Implement
Reflect
for 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
Timer
refactor to duration.sparkles AddStopwatch
struct. - add scene instance entity iteration
- Make
Commands
andWorld
apis consistent - Add
insert_children
andpush_children
toEntityMut
- Extend
AppBuilder
api withadd_system_set
and similar methods - add labels and ordering for transform and parent systems in
POST_UPDATE
stage - 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_resource
toinsert_resource
- Update
init_resource
to not overwrite - Enable dynamic mutable access to component data
- Get rid of
ChangedRes
- impl
SystemParam
forOption<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
!Send
tasks - Add missing
spawn_local
method toScope
in 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_dpi
setting toWindowDescriptor
- Implement
Copy
forElementState
- Mutable mesh accessors:
indices_mut
andattribute_mut
- Add support for OTF fonts
- Add
from_xyz
toTransform
- Adding
copy_texture_to_buffer
andcopy_texture_to_texture
- Added
set_minimized
andset_position
toWindow
- 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_y
andlocal_z
- Use valid keys to initialize
AHasher
inFixedState
- Change
Name
to takeInto<String>
instead ofString
- Update to wgpu-rs 0.7
- Update glam to 0.13.0.
- use std clamp instead of Bevy's
- Make
Reflect
impls unsafe (Reflect::any
must 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
EventId
for events - Added
set_cursor_position
toWindow
- 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.jpeg
texture formats - add ability to provide custom a
AssetIo
implementation
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
Time
state and made members private. - Modifying
Time
's values directly is no longer possible outside of bevy.
- Created getters to get
- Use
mailbox
instead offifo
for 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
- Change
TextureAtlasBuilder
into 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
&height
methods to returnf32
- Break out Visible component from Draw
- Users setting
Draw::is_visible
orDraw::is_transparent
should now setVisible::is_visible
andVisible::is_transparent
- Users setting
winit
upgraded 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::Instant
for 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
RenderResources
index 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
PluginGroup
is 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::remove
for bundles - impl
Default
forTextureFormat
- Expose current_entity in ChildBuilder
AppBuilder::add_thread_local_resource
Commands::write_world_boxed
takes a pre-boxed world writer to the ECS's command queueFrameTimeDiagnosticsPlugin
now shows "frame count" in addition to "frame time" and "fps"- Add hierarchy example
WgpuPowerOptions
for choosing between low power, high performance, and adaptive power- Derive
Debug
for more types: #597, #632 - Index buffer specialization
- More instructions for system dependencies
- Suggest
-Zrun-dsymutil-no
for faster compilation on MacOS
Changed
- ecs: ergonomic query.iter(), remove locks, add QuerySets
query.iter()
is now a real iterator!QuerySet
allows working with conflicting queries and is checked at compile-time.
- Rename
query.entity()
andquery.get()
query.get::<Component>(entity)
is nowquery.get_component::<Component>(entity)
query.entity(entity)
is nowquery.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-reflect
onwasm32
target - Move dynamic plugin loading to its own optional crate
- Add field to
WindowDescriptor
on wasm32 targets to optionally provide an existing canvas element as winit window - Adjust how
ArchetypeAccess
tracks mutable & immutable deps - Use
FnOnce
inCommands
andChildBuilder
where 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::rgb
andColor::rgba
will be converted to linear sRGB. - New methods
Color::rgb_linear
andColor::rgba_linear
will 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
Mesh
overhaul 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
IndexFormat
as 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
, andAsyncComputePool
inbevy_tasks
crate.
- Parallel queries for distributing work over with the
ParallelIterator
trait.- 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
Or
in ECS queries. - Added methods
unload()
andunload_sync()
onSceneSpawner
for unloading scenes.. - Custom rodio source for audio.
AudioOuput
is now able to play anythingDecodable
.
Color::hex
for creatingColor
from string hex values.- Accepts the forms RGB, RGBA, RRGGBB, and RRGGBBAA.
Color::rgb_u8
andColor::rgba_u8
.- Added
bevy_render::pass::ClearColor
to prelude. SpriteResizeMode
may choose howSprite
resizing should be handled.Automatic
by default.- Added methods on
Input<T>
for iterator access to keys.get_pressed()
,get_just_pressed()
,get_just_released()
- Derived
Copy
forMouseScrollUnit
. - Derived
Clone
for 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
render
feature, 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