
Quake 1, a bevy_enoki editor, and serialized images
2025-08-04
This week Bevy upgraded to wgpu 26.0, and with another week we saw another particle editor! This time for bevy_enoki.
bevy_mikktspace was also split out into a separate repo which joins it with other similar crates like atomicow and disqualified in being solid infrastructure crates with few or no dependencies.
We also see a full reimplementation of Quake 1 in Bevy!
Solari
Solari, Bevy's realtime raytraced lighting effort, added roughness, metallic, and reflectance properties to its material system in #20242 as well as a new balance heuristic for spatial resampling in #20259.
As always with Solari, this is fairly experimental work so don't expect to drop it into your games yet.
bevy_shader
Refactors in the rendering stack continue with the introduction of a bevy_shader
crate. bevy_shader
takes a smaller amount of dependencies on crates like wesl and naga, which can enable the creation of shader libraries that don't depend on bevy_render
.
Serialized Image
#20328 introduces a new SerializedImage
, which similar to the recent SerializedMesh
, is a temporarily serializable version of an Image
.
This is meant to be used over tools like the Bevy Remote Protocol.
This is currently being used in a navigation mesh prototype.
Bevy Remote Protocol renames
As of #19377 most Bevy Remote Protocol methods have been renamed for 0.17.
Old | New |
---|---|
bevy/query |
world.query |
bevy/spawn |
world.spawn_entity |
bevy/destroy |
world.despawn_entity |
bevy/reparent |
world.reparent_entities |
bevy/get |
world.get_components |
bevy/insert |
world.insert_components |
bevy/remove |
world.remove_components |
bevy/list |
world.list_components |
bevy/mutate |
world.mutate_components |
bevy/get+watch |
world.get_components+watch |
bevy/list+watch |
world.list_components+watch |
bevy/get_resource |
world.get_resources |
bevy/insert_resource |
world.insert_resources |
bevy/remove_resource |
world.remove_resources |
bevy/list_resources |
world.list_resources |
bevy/mutate_resource |
world.mutate_resources |
registry/schema |
registry.schema |
for UiRect
From#20312 introduces a From
implementation for Val
and UiRect
, which can reduce verbosity when used with Node
definitions.
Node {
margin: Val::Px(20.).into(),
border: Val::Px(5.).into(),
padding: Val::Px(10.).into(),
..default()
}
Color Swatch Widget
As part of the Headless Widgets effort, #20237 introduces a new Color Swatch Widget.

Showcase
Bevy work from the #showcase channel in Discord and around the internet. Use hashtag #bevyengine.

bevy_enoki editor
showcase
An update to the editor for bevy_enoki, a CPU calculate particle system.

Yarnspinner Dialogue
showcase
The start of a dialogue system for To Build a Home. The dialogue is powered by Yarnspinner

Caves First Pass
showcase
Noise-based cave generation, which has also been released as a standalone noise crate: fmc_noise. The noise crate is enabled by simd.

Terrain Generation
showcase
A new terrain generation and rendering system. Instead of rendering to a giant texture once and then loading it in the game, it now generates the data at runtime, yielding much better detail while taking less time to load. Each planet and moon now has a function that maps a position on the surface to an elevation and a color.

Crates
New releases to crates.io and substantial updates to existing projects
bevy_ecs_tiled 0.8
crate_release
bevy_ecs_tiled is a Bevy plugin for working with 2D tilemaps created using the Tiled map editor. It leverages the official Tiled Rust bindings for parsing and loading Tiled map files, and uses the bevy_ecs_tilemap crate for efficient rendering.
0.8 brings an integration with the geo crate for unifying physics colliders.
bevy_save 1.0
crate_release
bevy_save is a framework for saving and loading application state.
With the introduction of reflection-powered versioning and migrations, bevy_save has released 1.0.
Jonmo
crate_release
jonmo provides an ergonomic, functional, and declarative API for specifying Bevy system dependency graphs, where "output" handles to nodes of the graph are canonically referred to as "signals".
bevy_northstar 0.3.2
crate_release
bevy_northstar is a Hierarchical Pathfinding plugin for Bevy.
0.3.2 brings improved 3D support to better handle 2.5D (isometric maps, 2d tilemaps with height).

Educational
Tutorials, deep dives, and other information on developing Bevy applications, games, and plugins
A dive into bevy_gltf
educational
A deep dive into the bevy_gltf crate, its features, and the implementations related to it.
Bevy iOS GameCenter
educational
A writeup around what the author learned integrating iOS GameCenter with Bevy
Delete `ui_material.rs` authored by ickshonpe
Fix webgl2 authored by atlv24
Allow UnevenSampleCurve to infer interpolation arguments from samples authored by laundmo
Fix observers' access to relationship data during `despawn_related` authored by muddxyii
Color swatch widget. authored by viridia
Implement `From<Val>` for `UiRect` authored by ickshonpe
Add methods Observer::with_entities and Observer::watch_entities authored by gwafotapa
Remove task in handle_tasks in async_compute example authored by IceSentry
Renamed BRP methods to be more explicit. authored by AlephCubed
Fix intermittent drag-and-drop freezing on Windows authored by zachbateman
Ensure required components are consistently depth-first authored by SkiFire13
Support multiple unnamed fields in relationship derive authored by Azorlogh
Move schedule warnings before systems are moved authored by hymm
Bug fix in Gizmo grid authored by theotherphil
Rename `When` system param to `If` authored by CorvusPrudens
UI layout taffy sync fix authored by ickshonpe
Changed the way cursors are defined in bevy_feathers. authored by viridia
Fix audio playback for audio entities without transforms authored by rparrett
Implement Serialized Image authored by janhohenheim
Set `SCOPED_ENTITIES_ENABLED` to `true` for `ComputedStates` authored by nezuo
minor gen env map cleanups authored by atlv24
Move view transformations to bevy_render authored by atlv24
Add migration guide for view transformation deprecation authored by atlv24
bevy_shader authored by atlv24
update release notes and migration guides for bevy_shader authored by atlv24
Release notes for generic component propagation authored by alice-i-cecile
Update accesskit requirement from 0.19 to 0.21 authored by mnmaita
Add a `from_line_height` constructor function to `TextFont`. authored by ickshonpe
Let `BorderColor::all` take `impl Into<Color>` authored by ickshonpe
Solari GI: Balance heuristic for spatial resampling authored by JMS55
Change to relationship iter method instead of looping over private vec field in relationship example authored by IRSMsoso
cache update action: fix setup authored by mockersf
clean up bevy_render deps authored by atlv24
add bevy::shader authored by atlv24
enable wayland by default authored by BenjaminBrienen
use transpose not inverse in shadow map transform authored by atlv24
Solari specular scene/PT support authored by JMS55
fix reflect import in bevy_app propagate authored by mockersf
Side: Fix `ci` tool when running with `--test-threads` authored by hukasu
Upgrade to `wgpu` version `26.0` authored by tychedelia
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
Add 2D segment intersection authored by kirillsurkov
Built in commands return results authored by fairhill1
Disable depth downsampling on GL/WebGL with downlevel flag authored by alextechcc
Fix GL BadDisplay by providing a wl_display handle (WIP on wgpu side too) authored by alextechcc
Remove unnecessary Option wrapper from PreviousGlobalTransform in meshlet extraction authored by fairhill1
Use add_command_buffer_generation_task for transparent and transmissive 3D passes authored by fairhill1
Added App::add_plugins_if_new and SubApp::add_plugins_if_new authored by GhostMinerPlus
Update Rodio to 0.21 authored by mnmaita
Make shadows respect render layers authored by tychedelia
Text input support authored by ickshonpe
`bevy_text::input` module authored by ickshonpe
Inline async_executor for deeper integration with bevy_tasks authored by james7132
add ref doc and extract a couple vars and skip a sqrt in shadow cascades authored by atlv24
use iterators and zip instead of enumeration and indexing in shadow map cascades authored by atlv24
bevy_render: Pass `DisplayHandle` to `wgpu` for compositor-aware `Instance` creation authored by MarijnS95
bevy_window: Split `RawHandleWrapper` out into `Display` wrapper authored by MarijnS95
Fix UB, panic and compiler error in `bevy_tasks` authored by NthTensor
Virtual keyboard widget authored by ickshonpe
`spec_v2` style and patterns authored by ecoskey
Remove `Material` trait from prelude authored by efikay
compute world_from_cascade analytically authored by atlv24
Add light_consts::lumens::VERY_LARGE_CINEMA_LIGHT authored by atlv24
Use the default directional light intensity constant authored by atlv24
Revert BlitPlugin RenderStartup authored by Zeophlite
Validate directional light shadow map size is power of two authored by atlv24
Minimal Many-to-Many Relationships authored by ItsDoot
Add a workaround for #20379 by making `RenderStartup` single-threaded. authored by andriyDev
Remove the `bevy_winit` dependency from `bevy_feathers` authored by ickshonpe
Issues Opened this week
Lightmap is not updating authored by kirillsurkov
Bevy crashes when simultaneously setting `camera.is_active = false` and inserting `Disabled` to it authored by M4tsuri
pink screen on startup authored by mockersf
Unsound to call `EntityRef::get_components` with a `QueryData` that performs resource access authored by chescock
CMD + Q does not behave the same as closing the window with the X button (macOS) authored by hacknus
Create Command for idempotently spawning a singleton entity authored by MalekiRe
Enhance tracy render diagnostic spans to support nesting authored by JMS55
Reflection should be fully optional and toggleable at a `bevy` level authored by alice-i-cecile
Generic propagation should happen in `PostUpdate` authored by alice-i-cecile
bevy async compute doesnt work at all and even the example fails authored by Saratii
Replace `from_field` constructors on `TextFont` with `From` impls authored by alice-i-cecile
The delta from Pointer<Drag> drifts away when dragging a Pickable authored by yatinmaan
Inserting components is not panic-safe authored by SkiFire13
Bevy should not catch Ctrl+C by default authored by SludgePhD
sprite picking on a compressed texture panic authored by mirsella
Rendering Ordering Issue with OIT and AlphaMode::Premultiplied authored by Schmarni-Dev
Atmosphere PBR support and volumetric shadows tracking issue authored by mate-h
The `or` Conditional Combinator is not Communitive if one System Fails to Validate authored by fluffiac
ShaderStorageBuffer changes only sync if Material is mutably accessed authored by smessmer
STATUS_HEAP_CORRUPTION on startup during `RenderStartup`. authored by andriyDev
bevy_feathers should not depend on bevy_winit authored by mockersf
`many_foxes` animation has stopped working authored by greeble-dev
Immutable relationships authored by Freyja-moth
building docs is failing authored by mockersf
Wayland Significantly Regresses Build Times authored by cart