36 KiB
		
	
	
	
	
	
	
	
			
		
		
	
	
			36 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.
Unreleased
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 a SystemParam
- 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 Timerrefactor to duration.sparkles AddStopwatchstruct.
- add scene instance entity iteration
- Make Commands and World apis consistent
- Add insert_childrenandpush_childrento EntityMut
- Extend AppBuilder api with add_system_setand 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 to insert_resource
- Update init_resource to not overwrite
- Enable dynamic mutable access to component data
- Get rid of ChangedRes
- impl SystemParam for Option<Res> / Option<ResMut>
- 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 to Scope 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 to WindowDescriptor
- Implement Copy for ElementState
- Mutable mesh accessors: indices_mut and attribute_mut
- Add support for OTF fonts
- Add from_xyztoTransform
- Adding copy_texture_to_buffer and copy_texture_to_texture
- Added set_minimizedandset_positiontoWindow
- Example for 2D Frustum Culling
- Add remove resource to commands
Changed
- Bevy ECS V2
- Fix Reflect serialization of tuple structs
- color spaces and representation
- Make vertex buffers optional
- add to lower case to make asset loading case insensitive
- Replace right/up/forward and counter parts with local_x/local_y and local_z
- Use valid keys to initialize AHasher in FixedState
- Change Name to take Into instead of String
- 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 return self)
Fixed
- convert grayscale images to rgb
- Glb textures should use bevy_render to load images
- Don't panic on error when loading assets
- Prevent ImageBundles from causing constant layout recalculations
- do not check for focus until cursor position has been set
- Fix lock order to remove the chance of deadlock
- Prevent double panic in the Drop of TaksPoolInner
- Ignore events when receiving unknown WindowId
- Fix potential bug when using multiple lights.
- remove panics when mixing UI and non UI entities in hierarchy
- fix label to load gltf scene
- fix repeated gamepad events
- Fix iOS touch location
- Don't panic if there's no index buffer and call draw
- Fix Bug in Asset Server Error Message Formatter
- add_stage now checks Stage existence
- Fix Un-Renamed add_resource Compile Error
- Fix Interaction not resetting to None sometimes
- Fix regression causing "flipped" sprites to be invisible
- revert default vsync mode to Fifo
- Fix missing paths in ECS SystemParam derive macro
- Fix staging buffer required size calculation (fixes #1056)
Version 0.4.0 (2020-12-19)
Added
- add bevymark benchmark example
- gltf: support camera and fix hierarchy
- Add tracing spans to schedules, stages, systems
- add example that represents contributors as bevy icons
- Add received character
- Add bevy_dylib to force dynamic linking of bevy
- Added RenderPass::set_scissor_rect
- bevy_log- Adds logging functionality as a Plugin.
- Changes internal logging to work with the new implementation.
 
- cross-platform main function
- Controllable ambient light color
- Added a resource to change the current ambient light color for PBR.
 
- Added more basic color constants
- Add box shape
- Expose an EventId for events
- System Inputs, Outputs, and Chaining
- Expose an EventIdfor events
- Added set_cursor_positiontoWindow
- Added new Bevy reflection system
- Replaces the properties system
 
- Add support for Apple Silicon
- Live reloading of shaders
- Store mouse cursor position in Window
- Add removal_detection example
- Additional vertex attribute value types
- Added WindowFocused event
- Tracing chrome span names
- Allow windows to be maximized
- GLTF: load default material
- can spawn a scene from a ChildBuilder, or directly set its parent when spawning it
- add ability to load .dds,.tga, and.jpegtexture formats
- add ability to provide custom a AssetIoimplementation
Changed
- delegate layout reflection to RenderResourceContext
- Fall back to remove components one by one when failing to remove a bundle
- Port hecs derive macro improvements
- Use glyph_brush_layout and add text alignment support
- upgrade glam and hexasphere
- Flexible ECS Params
- Make Timer.tick return &Self
- FileAssetIo includes full path on error
- Removed ECS query APIs that could easily violate safety from the public interface
- Changed Query filter API to be easier to understand
- bevy_render: delegate buffer aligning to render_resource_context
- wasm32: non-spirv shader specialization
- Renamed XComponents to XBundle
- Check for conflicting system resource parameters
- Tweaks to TextureAtlasBuilder.finish()
- do not spend time drawing text with is_visible = false
- Extend the Texture asset type to support 3D data
- Breaking changes to timer API
- Created getters and setters rather than exposing struct members.
 
- Removed timer auto-ticking system
- Added an example of how to tick timers manually.
 
- When a task scope produces <= 1 task to run, run it on the calling thread immediately
- Breaking changes to Time API
- Created getters to get Timestate and made members private.
- Modifying Time's values directly is no longer possible outside of bevy.
 
- Created getters to get 
- Use mailboxinstead offifofor vsync on supported systems
- switch winit size to logical to be dpi independent
- Change bevy_input::Touch API to match similar APIs
- Run parent-update and transform-propagation during the "post-startup" stage (instead of "startup")
- Renderer Optimization Round 1
- ChangeTextureAtlasBuilderinto expected Builder conventions
- Optimize Text rendering / SharedBuffers
- hidpi swap chains
- optimize asset gpu data transfer
- naming coherence for cameras
- Schedule v2
- Use shaderc for aarch64-apple-darwin
- update Window'swidth&heightmethods to returnf32
- Break out Visible component from Draw
- Users setting Draw::is_visibleorDraw::is_transparentshould now setVisible::is_visibleandVisible::is_transparent
 
- Users setting 
- winitupgraded from version 0.23 to version 0.24
- set is_transparent to true by default for UI bundles
Fixed
- Fixed typos in KeyCode identifiers
- Remove redundant texture copies in TextureCopyNode
- Fix a deadlock that can occur when using scope() on ComputeTaskPool from within a system
- Don't draw text that isn't visible
- Use instant::Instantfor WASM compatibility
- Fix pixel format conversion in bevy_gltf
- Fixed duplicated children when spawning a Scene
- Corrected behaviour of the UI depth system
- Allow despawning of hierarchies in threadlocal systems
- Fix RenderResourcesindex slicing
- Run parent-update and transform-propagation during the "post-startup" stage
- Fix collision detection by comparing abs() penetration depth
- deal with rounding issue when creating the swap chain
- only update components for entities in map
- Don't panic when attempting to set shader defs from an asset that hasn't loaded yet
Version 0.3.0 (2020-11-03)
Added
- Touch Input
- iOS XCode Project
- Android Example and use bevy-glsl-to-spirv 0.2.0
- Introduce Mouse capture API
- bevy_input::touch: implement touch input
- D-pad support on MacOS
- Support for Android file system
- app: PluginGroups and DefaultPlugins
- PluginGroupis a collection of plugins where each plugin can be enabled or disabled.
 
- Support to get gamepad button/trigger values using Axis<GamepadButton>
- Expose Winit decorations
- Enable changing window settings at runtime
- Expose a pointer of EventLoopProxy to process custom messages
- Add a way to specify padding/ margins between sprites in a TextureAtlas
- Add bevy_ecs::Commands::removefor bundles
- impl DefaultforTextureFormat
- Expose current_entity in ChildBuilder
- AppBuilder::add_thread_local_resource
- Commands::write_world_boxedtakes a pre-boxed world writer to the ECS's command queue
- FrameTimeDiagnosticsPluginnow shows "frame count" in addition to "frame time" and "fps"
- Add hierarchy example
- WgpuPowerOptionsfor choosing between low power, high performance, and adaptive power
- Derive Debugfor more types: #597, #632
- Index buffer specialization
- More instructions for system dependencies
- Suggest -Zrun-dsymutil-nofor faster compilation on MacOS
Changed
- ecs: ergonomic query.iter(), remove locks, add QuerySets
- query.iter()is now a real iterator!
- QuerySetallows working with conflicting queries and is checked at compile-time.
 
- Rename query.entity()andquery.get()- query.get::<Component>(entity)is now- query.get_component::<Component>(entity)
- query.entity(entity)is now- query.get(entity)
 
- Asset system rework and GLTF scene loading
- Introduces WASM implementation of AssetIo
- Move transform data out of Mat4
- Separate gamepad state code from gamepad event code and other customizations
- gamepad: expose raw and filtered gamepad events
- Do not depend on spirv-reflectonwasm32target
- Move dynamic plugin loading to its own optional crate
- Add field to WindowDescriptoron wasm32 targets to optionally provide an existing canvas element as winit window
- Adjust how ArchetypeAccesstracks mutable & immutable deps
- Use FnOnceinCommandsandChildBuilderwhere possible
- Runners explicitly call App.initialize()
- sRGB awareness for Color- Color is now assumed to be provided in the non-linear sRGB colorspace.
Constructors such as Color::rgbandColor::rgbawill be converted to linear sRGB.
- New methods Color::rgb_linearandColor::rgba_linearwill accept colors already in linear sRGB (the old behavior)
- Individual color-components must now be accessed through setters and getters.
 
- Color is now assumed to be provided in the non-linear sRGB colorspace.
Constructors such as 
- Meshoverhaul with custom vertex attributes- Any vertex attribute can now be added over mesh.attributes.insert().
- See example/shader/mesh_custom_attribute.rs
- Removed VertexAttribute,Vertex,AsVertexBufferDescriptor.
- For missing attributes (requested by shader, but not defined by mesh), Bevy will provide a zero-filled fallback buffer.
 
- Any vertex attribute can now be added over 
- Despawning an entity multiple times causes a debug-level log message to be emitted instead of a panic: #649, #651
- Migrated to Rodio 0.12
- New method of playing audio can be found in the examples.
 
- Added support for inserting custom initial values for Local<T>system resources #745
Fixed
- Properly update bind group ids when setting dynamic bindings
- Properly exit the app on AppExit event
- Fix FloatOrd hash being different for different NaN values
- Fix Added behavior for QueryOne get
- Update camera_system to fix issue with late camera addition
- Register IndexFormatas a property
- Fix breakout example bug
- Fix PreviousParent lag by merging parent update systems
- Fix bug of connection event of gamepad at startup
- Fix wavy text
Version 0.2.1 (2020-9-20)
Fixed
Version 0.2.0 (2020-9-19)
Added
- Task System for Bevy
- Replaces rayon with a custom designed task system that consists of several "TaskPools".
- Exports IOTaskPool,ComputePool, andAsyncComputePoolinbevy_taskscrate.
 
- Parallel queries for distributing work over with the ParallelIteratortrait.- e.g. query.iter().par_iter(batch_size).for_each(/* ... */)
 
- e.g. 
- Added gamepad support using Gilrs
- Implement WASM support for bevy_winit
- Create winit canvas under WebAssembly
- Implement single threaded task scheduler for WebAssembly
- Support for binary glTF (.glb).
- Support for Orin ECS queries.
- Added methods unload()andunload_sync()onSceneSpawnerfor unloading scenes..
- Custom rodio source for audio.
- AudioOuputis now able to play anything- Decodable.
 
- Color::hexfor creating- Colorfrom string hex values.- Accepts the forms RGB, RGBA, RRGGBB, and RRGGBBAA.
 
- Color::rgb_u8and- Color::rgba_u8.
- Added bevy_render::pass::ClearColorto prelude.
- SpriteResizeModemay choose how- Spriteresizing should be handled.- Automaticby default.
- Added methods on Input<T>for iterator access to keys.- get_pressed(),- get_just_pressed(),- get_just_released()
 
- Derived CopyforMouseScrollUnit.
- Derived Clonefor UI component bundles.
- Some examples of documentation
- Update docs for Updated, Changed and Mutated
- Tips for faster builds on macOS: #312, #314, #433
- Added and documented cargo features
- Added more instructions for Linux dependencies
- Arch / Manjaro, NixOS, Ubuntu and Solus
 
- Provide shell.nix for easier compiling with nix-shell
- Add AppBuilder::add_startup_stage_|before/after
Changed
- Transform rewrite
- Use generational entity ids and other optimizations
- Optimize transform systems to only run on changes.
- Send an AssetEvent when modifying using get_id_mut
- Rename Assets::get_id_mut->Assets::get_with_id_mut
- Support multiline text in DrawableText
- iOS: use shaderc-rs for glsl to spirv compilation
- Changed the default node size to Auto instead of Undefined to match the Stretch implementation.
- Load assets from root path when loading directly
- Add renderfeature, which makes the entire render pipeline optional.
Fixed
- Properly track added and removed RenderResources in RenderResourcesNode.
- Fixes issues where entities vanished or changed color when new entities were spawned/despawned.
 
- Fixed sprite clipping at same depth
- Transparent sprites should no longer clip.
 
- Check asset path existence
- Fixed deadlock in hot asset reloading
- Fixed hot asset reloading on Windows
- Allow glTFs to be loaded that don't have uvs and normals
- Fixed archetypes_generation being incorrectly updated for systems
- Remove child from parent when it is despawned
- Initialize App.schedule systems when running the app
- Fix missing asset info path for synchronous loading
- fix font atlas overflow
- do not assume font handle is present in assets
