Bevy 0.13 out now!
2024-02-26
Welcome to another week in the Bevy ecosystem!
This week we've got the Bevy 0.13 release! That means a whole lot of crate releases that upgrade compatibility.
Don't forget to check out the official release notes which include in-depth guides for migrating as well as dives into some of the amazing new features like Lightmaps, Irradiance Volumes, and the new primitive shapes!
Bevy currently releases once every three months (approximately, there is no set date) and this is the first release of 2024.
Showcase
Bevy work from the #showcase channel in Discord and around the internet. Use hashtag #bevyengine.
"Furniture Mode" in Project Home
showcase
Project Home is a life simulation game with over a year of work in it. This showcase demos furniture placement.
Flappy Bird 3d
showcase
A classic flappy bird implementation in 3d, using a gun firing as the mechanic for "flapping".
Colony Sim Voxels
showcase
Voxels! This time for a colony sim type game, which includes being able to see underground. The video in the Discord thread includes a vertical slice animation that is very nice.
Integrating bevy_mesh_terrain and space_editor
showcase
bevy_mesh_terrain is a plugin for terrain and space_editor is a plugin for prototyping with prefabs. Combining them results in this demo. The forked space_editor lives on GitHub.
Design terrain, save file, import RON data.
Erosion Simulation
showcase
Simulating erosion with some nice UI and visualization to go with it. Includes conservation of momentum. The input is Perlin noise summed at several scales.
The two maps on the side are water volume map (black-teal) and water momentum map (grey with red/blue streams)
3d suspension with bevy_xpbd
showcase
A continuation of the bevy_xpbd_2d suspension also featured in this issue,
The Discord thread links to a discussion of possible solvers
Project Harmonia windows
showcase
Project Harmonia is a work-in-progress life simulation game. This demo showcases the ability to place windows with transparency. Models are imported from Blender.
Performant Voxel Terrain Slicing
showcase
voxel based world with the ability to show vertical slices of the terrain. The Discord thread contains some discussion about using prepass shaders with links to source code.
A separate Discord thread covers additional context around getting to this implementation.
Minecraft inspired
showcase
A wonderful looking Minecraft clone. Source code is available on GitHub.
This implementation has a chunk size of 32x32x32 and can handle 16 chunk render distance at smooth performance.
The discord thread includes a bunch of extra voxelly links:
100k enemies with bullet collisions
showcase
This kd-tree powered bullet hell demo can sustain 100k enemies with bullet collisions.
The discord thread also includes some interesting discussion about using different structures, like a spatial grid.
Townscaper-inspired irregular grid
showcase
Townscaper is a game in which you click to generate buildings. There are many aspects of Townscaper that make their way into other games: Wave Function Collapse is one, but the Procedural Irregular Grid is another.
The grid defines how buildings are built and results in a very organic looking collection. This is an implementation of that grid in Bevy, currently using gizmos.
Progress towards realtime path traced GI
showcase
GPU-driven realtime path-traced global illumination is a mouthful of words. That's what this example is. These examples over have to converge over some period of time, so be sure to check out the Discord thread to see the convergence speed. There's also some discussion of different Global Illumination approaches with mentions of ReSTIR, Radiance Cascades, and more.
bevy_mod_debugdump live playground
showcase
This live playground shows off the results of using bevy_mod_debugdump. If you've ever been curious about all the systems that run around inside of your Bevy app, this is a great place to check!
Contact Projective Decals
showcase
A talk on Path of Exile's rendering approaches mentioned something they called "Contact Parallax". This is an example implementing the technique inside of Bevy using the default renderer with the depth_prepass function.
The parallax mapping PR to Bevy and the tracking issue are also good reading for those interested in similar techniques.
Source is available on GitHub. and there's lots of great discussion in the Discord thread.
Particles!
showcase
bevy_firework is a CPU-driven, batch-rendered particle system, which can use bevy_xpbd colliders. This is in contrast to bevy_hanabi, which is GPU-based.
The collision uses xpbd's raycasts to detect collisions and runs a very primitive simulation to update velocities
Crates
New releases to crates.io and substantial updates to existing projects
bevy_query_ext 0.3
crate_release
A collection of types used to simplify how components are used in queries, by implementing bevy's QueryData on generics.
Griffin's crates updated to Bevy 0.13
crate_release
DGriffin91 maintains a whole host of crates that are continuously updated with each version of Bevy. All got Bevy 0.13 updates. In particular I'm excited to see the glowy orb tutorial featured in the Bevy 0.8 release continue to get updated with each passing version.
The rust-gpu support in bevy_mod_rust_gpu is interesting if you're into experimental alternative shader tech.
- bevy_ridiculous_ssgi
- bevy_glowy_orb_tutorial
- bevy_mod_mesh_tools
- bevy_mod_mipmap_generator
- bevy_basic_camera
- bevy_sponza_scene
- bevy_bistro_scene
- bevy_san_miguel_scene
- bevy_mod_environment_map_tools
- bevy_mod_taa
- bevy_coordinate_systems
- ridiculous_bevy_hot_reloading
- bevy_mod_standard_material
- bevy_mod_standard_material/tree/minimal
- bevy_picoui
- bevy_mod_hlsl
- bevy_mod_slang
- bevy_mod_rust_gpu
Dexterous Developer 0.2
crate_release
Dexterous Developer
is an experimental hot reload system for the bevy game engine. Inspired by DGriffin91's Ridiculous bevy hot reloading - adding the ability to re-load arbitrary systems, and the ability to transform resource/component structures over time.
bevy_ecss 0.7.0
crate_release
Bevy ECSS is a crate which allows the usage of a subset of CSS to interact with bevy_ecs. It's mainly aimed to apply styling on bevy_ui but it can be used by any component by implementing custom properties.
In addition to supporting Bevy 0.13
- Added support for applying multiple style sheets to an entity;
- Added support for row-gap and column-gap properties.
- Added support for Any (*) selector.
It includes a book.
bevy-histrion-packer 0.2.0
crate_release
bevy_histrion-packer
is a Bevy plugin to pack assets into a single .hpak
file.
bevy_ineffable 0.5.0
crate_release
bevy_ineffable
is simple-to-use input manager that empowers players and makes accessibility easy.
The Discord thread contains a light comparison to leafwing_input_manager and there is a roadmap in the README.
bevy_simple_text_input 0.4.0
crate_release
bevy_simple_text_input
is an unambitious single-line text input widget for bevy_ui. Updated for Bevy 0.13.
bevy_pipelines_ready 0.3.0
crate_release
Does audio in your web app go all wonky when Bevy stops the world to compile a pipeline? You might want to incorporate this into your loading state!
bevy_pipelines_ready
is a tiny Bevy plugin that counts the number of render pipelines that are ready and makes that data available as a Resource in the main world.
bevy_smooth_pixel_camera 0.3.0
crate_release
bevy_smooth_pixel_camera
adds a simple smooth pixel camera based on this video. It is now updated for Bevy 0.13.
full changelog is available on GitHub.
bevy_vector_shapes
crate_release
Bevy Vector Shapes is a library for easily and ergonomically creating instanced vector shapes in Bevy. It has been updated to Bevy 0.13.
bevy_kira_audio 0.19
crate_release
bevy_kira_audio is a replacement for the built-in bevy_audio. The goal is to replace or update bevy_audio, if Kira turns out to be a good approach.
0.19 brings Bevy 0.13 support.
bevy_mod_index 0.4.0
crate_release
A Rust crate that allows efficient querying for components by their values
Bevy EntiTiles 0.6.*
crate_release
A 2d tilemap library for bevy. With many useful algorithms/tools built in. There are examples using ldtk and wave function collapse.
bevy_asset_loader 0.20.0
crate_release
bevy_asset_loader
is one of those crates that makes its way into just about every Bevy project I make. It describes itself as
Loading states with minimal boilerplate
#[derive(AssetCollection, Resource)]
struct PlayerAssets {
#[asset(path = "images/player.png")]
sprite: Handle<Image>,
}
bevy_wind_waker_shader
crate_release
bevy_wind_waker_shader
is a Bevy implementation a toon shader that looks like the one used for characters in The Legend of Zelda: The Wind Waker. I builds on the ideas in this video
leafwing-input-manager 0.12.0 and 0.13
crate_release
leafwing_input_manager
is a straightforward but robust input-action manager for Bevy.
0.12 included a number of breaking changes with the goal of squashing some bugs and removing some tech debt. The 0.13 release supports Bevy 0.13.
The Bevy 0.13 update will be a different release.
bevy_video_glitch
crate_release
bevy_video_glitch
is a port of a shadertoy video glitch example to Bevy.
bevy_terminal_shader
crate_release
bevy_terminal_shader
is a port of a shadertoy terminal shader example to Bevy.
bevy_lookup_curve 0.1
crate_release
bevy_lookup_curve is a crate for editable lookup curves that can be used for animations or other gameplay elements like physics, audio modulation, etc. It comes with an Egui-based editor with save-functionality and an AssetLoader.
leafwing_abilities 0.7
crate_release
Track resources (like mana), cooldowns, charges and more in a simple well-tested framework that integrates with leafwing_input_manager.
Bevy 0.13 crate updates
crate_release
A whole host of crates have updated to Bevy 0.13. Here's some that made announcements for it.
- bevy_ehttp
- bevy_button_released_plugin
- bevy_wasm_window_resize
- aery
- bevy_screen_diagnostics
- Yarn Spinner
- spew
- pixelate_mesh
- stardust
- bevy_turborand
- bevy_rand
- bevy_async_ecs
- bevy_egui
- bevy_commandify
- bevy_interleave
- moonshine_save
- moonshine_behavior
- moonshine_kind
- moonshine_spawn
- bevy_state_curves
- bevy_eventwork_mod_websockets
- bevy_mod_reqwest
- bevy_2d_screen_space_lightmaps
- oxidized_navigation
- lightyear
- bevy_xpbd_interp
- bevy-inspector-egui
- bevy_editor_pls
- bevy_mod_debugdump
- bevy-egui-kbgp
- bevy_hanabi
- bevy_renet
- bevy_seldom_state
- bevy_silk
- bevy_verlet
- bevy_life
- hexx
- bevy_replicon
- bevy_steamworks
- bevy_tnua
- bevy_xpbd_3d_parenting
Devlogs
vlog style updates from long-term projects
Update documentation for WorldQuery and filters authored by kristoff3r
Fix dds feature dependencies in bevy_core_pipeline authored by TimJentzsch
Add single-f32 constructors for a few (very few) primitives authored by Aztro-dev
scene example: remove unnecessary reflect(FromWorld) authored by awwsmm
typo authored by tomara-x
Qualify embedded_asset expansion with $crate:: authored by coolreader18
Use `is` method instead of `downcast_ref::<T>().is_some()` in `App::is_plugin_added` authored by doonv
revert PointLightBundle to DirectionalLightBundle change made to asset_loading example between 0.12.1 and 0.13.0 authored by awwsmm
Prevent panic when multiple Enter inputs received in `text_input` example authored by sam-kirby
rename Camera3dBundle's 'dither' field to 'deband_dither' to align with Camera2dBundle authored by awwsmm
Rework animation to be done in two phases. authored by pcwalton
refactor: Extract parallel queue abstraction authored by james7132
Implement Debug for SpriteBundle and SpriteSheetBundle authored by NixyJuppie
also look in just_pressed touches for position authored by mockersf
Add method for querying whether a given short type path is ambiguous authored by coreh
Gltf loader now shows which file is missing pre baked tangents authored by andristarr
Use the scroll wheel to control the camera speed in examples authored by Kanabenki
Stepping disabled performance fix authored by dmlary
Add a `[lints]` entry for workspace members missing it authored by Kanabenki
Remove APIs deprecated in 0.13 authored by james7132
Simplify and improve `overflow_debug` example authored by rparrett
Replace references to old book with quick start guide authored by pkupper
Update to toml_edit 0.22 authored by james7132
Add the serde feature to bitflags for bevy_render. authored by andriyDev
text2d example: animate_scale no longer unnecessarily performs the same translation at each Update authored by awwsmm
Fix example docs on embedded_asset macro authored by nicopap
Save 16 bytes per MeshUniform in uniform/storage buffers authored by superdump
Update `split_screen` example with 4 cameras authored by djeedai
Fix MSAA writeback when 3 or more cameras have the same target. authored by komadori
Fix docs for quaternion interpolation authored by msvbg
Allow Mesh-related queue phase systems to parallelize authored by james7132
Make Globals visible in vertex shaders authored by IceSentry
Move gizmos examples in the separate folder authored by ekropotin
Move AlphaMode into bevy_render authored by mweatherley
Update async-channel to 2.2.0 authored by mintlu8
Bump Version after Release authored by github-actions[bot]
Parse missing mime types authored by Maximetinu
Create imported_assets directory with full path authored by infmagic2047
Fix `SystemTypeSet::system_type` being out of sync with `System::type_id` authored by jakobhellermann
Add support for KHR_texture_transform authored by janhohenheim
fix some typos authored by ameknite
Fix taplo CI - toml fmt authored by ameknite
bevy_ecs address trivial cases of `unsafe_op_in_unsafe_fn` authored by tguichaoua
Document all members of `bevy_dynamic_plugin` authored by BD103
only update `Touches` resource when needed authored by JeanMertz
Fixed Ui Image slicing authored by ManevilleF
FIX: iOS Simulator not rendering due to missing CUBE_ARRAY_TEXTURES authored by sampettersson
Make more things pub in the renderer authored by IceSentry
set pipeline to queued when shader is not yet available authored by mockersf
Improve file watcher error msg authored by torsteingrindvik
Add a release step, add links to the github release note authored by ameknite
Remove unnecessary wildcards from `LogPlugin` and convert warnings to errors. authored by doonv
Upstreaming bevy_color. authored by viridia
fix typo: converstion -> conversion authored by ameknite
bevy_color: adding 'palettes' module. authored by viridia
`bevy_color`: Created a private trait `StandardColor` authored by bushrat011899
Loosen lifetime requirements for single-threaded `Scope::spawn` to match the multi-threaded version. authored by chescock
make reflection probe example frame rate independent authored by mockersf
Pad SkyUniforms to 16 bytes for WASM authored by Waridley
Immediately apply deferred system params in System::run authored by james7132
Fix SimpleExecutor crash authored by SpecificProtagonist
`bevy_color`: Added `Xyza` Colour Space authored by bushrat011899
remove unnecessary mut in query in ui_texture_slice example authored by rmsthebest
Fix missing renaming of Input -> ButtonInput authored by ShadowMitia
Adding "fluent" methods to modify color channels. authored by viridia
Rename `bevy_render::Color` to `LegacyColor` authored by alice-i-cecile
Want to contribute to Bevy?
Here you can find two types of potential contribution: Pull Requests that might need review and Issues that might need to be worked on.
Pull Requests Opened this week
Fix Steam overlay flickering somehow authored by SDesya74
Add random shader utils, fix cluster_debug_visualization authored by JMS55
Replace async_channel with event_listener in bevy_tasks authored by james7132
Add Rounded box gizmos authored by solis-lumine-vorago
Enable queue phase parallelization by use Parallel to back RenderPhase authored by james7132
Increase 3D Lighting example's light intensity authored by BD103
Improve Bloom 3D screenshot and use `spawn_batch` authored by BD103
Use `spawn_batch` in `many_lights` example authored by BD103
Add `Direction3dA` and move direction types out of `primitives` authored by Jondolf
Use `embedded_asset` to load shaders authored by nicopap
game_menu example: pull common patterns into methods authored by awwsmm
guess image formats authored by robtfm
Use rayon as the bevy_task thread pool authored by james7132
Fix incorrect distance given by ViewRangefinder3d authored by floppyhammer
Implement the `AnimationGraph`, allowing for multiple animations to be blended together. authored by pcwalton
Add Grid gizmos authored by solis-lumine-vorago
Add Clone, PartialEq, Ser/De traits to Parent/Children authored by cBournhonesque
Remove the UpdateAssets and AssetEvents schedules authored by james7132
reflect: remove manual `Reflect` impls which could be handled by macros authored by soqb
reflect: treat proxy types correctly when serializing authored by soqb
Add methods to directly load assets from World authored by nicopap
Improve lighting in more examples authored by BD103
Add `World::iter_resources()` and `World::iter_resources_mut()` methods authored by coreh
configure_surface needs to be on the main thread on iOS authored by mockersf
Add access to `App` within `LogPlugin::update_subscriber` authored by doonv
Update async-executor to 1.9.0 authored by james7132
Improved glTF extension support authored by MalekiRe
Add `typos` - Source code spell checker authored by ameknite
Allow re-use of an existing audio sink. authored by AxiomaticSemantics
make gizmo groups ordering stable when rendering authored by mockersf
Increase modularity of bevy by making more features optional. authored by AxiomaticSemantics
bevy_reflect: Skip serializing `Instant` authored by MrGVSV
Slicing support for texture atlas authored by ManevilleF
Consolidate together Bevy's TaskPools authored by james7132
asset hooks authored by MalekiRe
bevy_color: Add Tailwind palette authored by rparrett
Use NonMaxUsize for non-component SparseSets authored by james7132
Use immutable key for `HashMap` and `HashSet` authored by tguichaoua
Make Gilrs a normal resource on non-Wasm targets authored by james7132
Add features to switch NativeActivity and GameActivity usage authored by Litttlefish
Add WinitEvent aggregate event for synchronized window event reading authored by UkoeHB
Issues Opened this week
Inspect and edit deferred commands just before they are applied? authored by Architector4
Process an asset directory for consumption on Wasm32 authored by spectria-limina
`transform_point` strange rotation behaviour authored by ddorstijn
Add a flag to GltfLoaderSettings to control RenderAssetUsages for meshes/images authored by JMS55
[0.13] Cannot build without explicit `bevy_gizmos_macros` dependency authored by djeedai
wgpu 0.19 regression spawning 160k entities with unique materials authored by superdump
`AssetPath` ignores source and label when parsing `Path` and `PathBuf` authored by afonsolage
9-slice sprite is behaving weirdly on UI when sprite size is smaller than texture size authored by Litttlefish
Improve `AssetEvent` docs authored by alercah
Define an official grammar for documentation and site in Bevy authored by afonsolage
AmbientLight docs doesn't specify units authored by fintelia
Disable system stepping feature by default authored by alice-i-cecile
Move AlphaMode out of bevy_pbr authored by spectria-limina
iOS Simulator not rendering due to missing CUBE_ARRAY_TEXTURES capability authored by sampettersson
example post_processing doesn't work in Wasm authored by mockersf
Support Detail maps in StandardMaterial authored by tbillington
Deprecate current `bevy_dynamic_plugin` implementation authored by BD103
Interactivity regression in bevy_ui authored by eidloi
Serialization of `Name` component may not be working correctly authored by rparrett
When VIEWPORT is set to CAMERA and switched to `SizedFullscreen`, PANIC may occur. authored by hyoi
Rectangle missing flip use case from deprecated shape Quad authored by tripokey
Bevy 0.13 not being able to detect gpu authored by LeMinhThin
Auto-detect breaking changes to ensure migration guides exist authored by obi1kenobi
Support HemisphereLight authored by viridia
Android example based on GameActivity authored by fr-an-k
bevy_color migration plan authored by viridia
RenderDevice::poll return type changed from v0.12.1 to v0.13 authored by Tsudico
Async-Executor v1.9.0 Selected by Cargo Locks up the engine authored by dt665m
FloatExt::lerp names value t instead of s authored by Veritius
Improve docs for ReceivedCharacter authored by rparrett
`InheritedVisibility` not updated when `Parent` changes authored by dmlary
bevy_color: migrate color conversion code from bevy_render authored by viridia
Font rendering is blurry authored by Shatur
Lighting of material weirdly angle dependent authored by Affinator
Add a feature to switch NativeActivity and GameActivity for winit in bevy_winit authored by Litttlefish
Can't get Rendering Assets to unload from RAM on wasm webgl2.0 build authored by egol
WebGL2: can't render StandardMaterial authored by mockersf
Text Overflow Bug authored by franklinblanco
Ensure that bevy_color works with HDR authored by eero-lehtinen
Ui Text does not word wrap if next "word" begins with a dot authored by porkbrain
FPS Capped at Refresh Rate even after changing present mode on mac authored by arjpeg
AssetServer returns invalid handle after entity despawned (in the same frame) authored by eidloi
Livelock after closing secondary window. authored by AxiomaticSemantics