This Week in Bevy

What happened this week in the Bevy Engine ecosystem

Links

The next big step for Avian performance, Light Textures, and playtests

2025-07-07

This Week in Bevy a series of improvements were made to the Reflect derive, such as #19906 and rendering is landing features and refactors including Light Textures.

Interesting new functionality is on the horizon for a Hanabi Particle Editor as well as performance improvements in crates like Avian.

We also highlight some commercial Bevy usage from Nominal and Foresight as well as playtests for To Build A Home and Rare Episteme.

Light Textures

light textures

LightTextures (or light cookies, or light functions, or light projectors), introduced in #18031, enable effects like window shadows, faked caustics,

A PointLightTexture can be added to a PointLight, a SpotLightTexture can be added to a SpotLight, or a DirectionalLightTexture can be added to a DirectionalLight to apply a texture mask is applied to the light source to modulate its intensity.

RenderStartup

The RenderStartup schedule was introduced in #19841 to provide a place to spawn RenderApp-specific logic and its been used in a number of places including examples like #19886: Use RenderStartup in custom_post_processing example and in rendering-related crates.

Bevy Remote Protocol

Clients using the Bevy Remote Protocol that intend to build World Inspector style functionality would benefit from an endpoint that retrieves all of the relevant information for all entities. #19857 does exactly that, introducing BRP functionality that returns All component values.

New Ease structs

#18739 adds a new way to use easing functions that fits in with the larger Curve system. Using these structs directly allows sampling each of the curve types.

SmoothStep.sample(t);

Elastic(50.0).sample(t);

Steps(4, JumpAt::Start).sample(t)

Bevy Feathers

The series of Bevy standard widgets continues.

#19928 introduces toggle switches to bevy_feathers while #19900 introduces checkboxes.

CoreScollbar was also added in #19803.

Crate reorganization

Bevy's UI rendering was moved into bevy_ui_render in #18703 to make it easier to improve the UI renderer, allow the UI renderer to be used with other UI frameworks (apart from bevy_ui), and for using alternative renderers like Vello. Work was also done this week to enable a new bevy_light crate.

Composable Pipeline Specialization

If you've written a custom Material or used lower level rendering APIs you might be familiar with the specialize function which allows the customization of render pipelines. #17373 changes the underlying functionality to be composable via a new Specializer trait.

The Specializer trait now mutates a base descriptor instead of producing one. The new APIs, including GetBaseDescriptor and Specializer, can be examined in the shader/custom_phase_item example.

wgpu adapter selection

As of #19921, applications can specify WGPU_ADAPTER_NAME or WGPU_FORCE_FALLBACK_ADAPTER to give priority to rendering adapters.


Alice's Merge Train is a maintainer-level view into active PRs and how the Bevy sausage is made.

Showcase

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

rare episteme

Rare Episteme

showcase

Rare Episteme | Museum of Dead Card Games is an online multiplayer anti-trading trading card game where you can design cards and bring them to a shared deck to fight an opponent, first one to draw from an empty deck loses!

This game had its first online, in-browser playtesting weekend!

Preview it on YouTube

arcade game

Local Co-op Platformer

showcase

A local co-op arcade platformer with a focus on score combos, in the spirit of Bubble Bobble or Snow Bros. All placeholder graphics & audio thanks to free assets from itch.io

bevy_animation_graph + Avian

bevy_animation_graph + Avian

showcase

New support for attaching Avian colliders to bones in skeletal animation in bevy_animation_graph including a new UI for it in the editor.

wind tunnel viz

Nominal x Foresight

showcase

to build a home playtest

To Build a Home Playtest

showcase

The To Build a Home playtest is underway. To Build a home is a 2D life simulation game.

flowing water

Flowing Water

showcase

A first attempt at flowing water. A comment in the Discord thread suggests checking out this site on the wayback machine for those interested.

hanabi particle editor widgets

Hanabi Particle Editor Widgets

showcase

Refinement of the widgets for this Hanabi particle editor. Another polishing pass will happen before the open sourcing of the project.

roommd

RoomMD

showcase

Inspired by AACircuit (a program where you can draw electronic schematics with ASCII characters), RoomMD is a tool to create ascii art sketches of a home as 3D models; it is a tool to create 3D building plans.

pixelated theme

Pixelated look and theming

showcase

A pixelized look and some theming to this coding/puzzle game

procedural trees

Procedural Trees

showcase

Procedurally generated trees with a realtime egui development interface for configuring parameters

2048

2048

showcase

A 2048 implementation with various board sizes, implemented as a plugin test case for some in-development plugins.

bevy linter + vscode

Bevy Linter + VSCode

showcase

Improvements to the Bevy Linter, in this case the insert_unit_bundle lint specifically. In the process the linter has been hooked up to VSCode's automatic suggestions.

bevy_mod_config preview

showcase

bevy_mod_config is a work-in-progress modular settings management framework.

#[derive(Config)]
struct Foo {
    #[config(default = 1.0, min = 0.0, max = 10.0)]
    thickness: f32,
    #[config(default = Color::WHITE)]
    color:     Color,
}
font storage

Font Storage

showcase

A demo (with source code!) of storing and using a variety of fonts.

They're stored as tables with each font having, RegularFont, BoldFont, ItalicFont, BoldItalicFont, DefaultFontSize, and DefaultFontColor. Each font can then be referred to via relationships on entities with text (with a DefaultFont as a fallback).

atmosphere

Bevy Atmospherics Tests

showcase

A series of experiments with different values for Bevy Atmospherics, resulting in a visual board of the effect of various value changes.

avian pyramid 2d

The next big step for Avian performance

showcase

The next big step for Avian's performance: a parallel constraint solver with graph coloring!

Some physics engines such as Rapier use inter-island parallelism, where bodies are grouped into disjoint simulation islands that can be safely solved in parallel, since each body only belongs to a single island. However, it does not help with large islands, such as big piles of objects, because constraints within each island must still be solved serially.

Many state-of-the art physics solvers such as Box2D instead use graph coloring, which assigns "colors" to constraints such that no adjacent edges in the graph share the same color. This ensures that each body appears at most once in each color, and allows constraints within each color to be solved in parallel without race conditions. This works even for large islands, and also opens the door to using wide SIMD for the solver.

The benefit of graph coloring shows. With a large pyramid, Avian now scales to multiple threads very well, even beating Rapier in performance when multi-threaded. Rapier has a very flat profile in comparison, as it needs to solve the whole pyramid serially.

Crates

New releases to crates.io and substantial updates to existing projects

haalka 0.5.1

crate_release

haalka is an ergonomic reactivity library powered by the FRP signals of futures-signals. It is a port of the web UI libraries MoonZoon and Dominator and offers the same signal semantics as a thin layer on top of bevy_ui. While haalka is primarily targeted at UI and provides high level UI abstractions as such, its core abstraction can be used to manage signals-powered reactivity for any entity, not just bevy_ui nodes.

garray2d

crate_release

A 2d array with signed index and offset support

lightyear 0.21

crate_release

Lightyear is a full-featured networking library for bevy.

0.21 has brought a full rewrite of the crate which in turn brings bevy_enhanced_input support and more

bevy_auto_plugin 0.3

crate_release

bevy_auto_plugin is designed to reduce the boilerplate required when creating Bevy plugins.

With new stabilizations in Rust 1.88, the need to use nightly with bevy_auto_plugin has been removed!

bevy_northstar 0.3.0

crate_release

bevy_northstar is an HPA* crate for Bevy.

In 0.3 the API has substantially changed as a result of user feedback. Accordingly the bevy_northstar book has also been updated

bevy_webgate

crate_release

bevy_webgate is a fork of bevy_webserver that adds

  • Multi-port support - Run multiple servers on different ports
  • IP binding control - Bind servers to specific IP addresses

bevy_vello 0.10.2

crate_release

bevy_vello is a cross-platform, 2D compute-centric vector graphics rendering library for Bevy. There is default support for rendering text and scenes, with additional opt-in features for SVG and Lottie.

Devlogs

vlog style updates from long-term projects

Beet Update - A Very Bevy Metaframework

devlog

A Beet rewrite now with:

  • File based routes
  • Markdown & Rusty MDX
  • All the Rendering: SSR, CSR & SSG
  • Client Islands
  • Server Actions
  • Template Scoped Styles
  • Instant Template Reloading

Voxel Hex

devlog

The underlying project here is an exploration of voxel raytracing in Rust that uses Bevy for rendering. The video details a visibility-based data streaming technique that keeps GPU buffers in check.

No Educational this week
Pull Requests Merged This Week
Contributing

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.

How do I contribute?

Pull Requests Opened this week

Issues Opened this week