mirror of
https://github.com/bevyengine/bevy
synced 2024-11-26 14:40:19 +00:00
0149c4145f
Big thanks to @colepoirier for putting together the changelog this time around!
111 KiB
111 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.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