This Week in Bevy

What happened this week in the Bevy Engine ecosystem

Links

BSN Public Experimentation, Streaming Video, and Compute Shaders

2025-07-21

This week we get what might be the most approved PR in Bevy history; and a sneaky reminder that you can review Bevy PRs. Even though 20190 ended up being a bit of a running joke to approve, running the examples on other PRs, trying to understand them, and asking questions is valuable work that anyone is allowed to do on any PR.

Some ongoing work in first-party tilemaps continues with #19924 bringing color tints and visibility data, while RenderStartup schedule refactors and various macro improvements are also getting work done; and using Tracy for profiling can be a daunting first-time topic, which #20109 improves.

In the showcases we see some interesting compute shader work for wind patterns in grass, terrain generation, and raymarching. As well as progress and updates on games like To Build a Home, POLDERS, and more.

Bevy Scene Notation

BSN, or Bevy Scene Notation, saw some interesting developments this week with the introduction of a Draft PR put up for discussion. This PR is not meant to be merged but rather is a signifier of BSN moving into a "public experimentation phase".

Since this is an experimental draft PR I am going to make you read the PR for details if you're interested and we'll do an overview of the functionality in the future when the features merge. There is a lot of really great stuff in here though, like Template, impl Scene, and the bsn! macro.

Streaming Textures

An experimental bevy_web_video crate was able to introduce the ability to stream video assets to a texture. This is a particularly exciting development.

There is a web demo playing Big Buck Bunny on a cube, and wgpu seems to be adding more support for GPUExternalTexture which will increase performance of the approach on the web.

If you're looking for something similar you can use today, check out vleue_kinetoscope.

angle-weighted smooth normals

normal visualization

#18552 makes angle-weighted smooth normals the default implementation. This method weights normals by the angles of the corners of connected triangles, thus eliminating triangle area and count as factors in the final normal.

The difference can be seen in this exaggerated example

The code has some great comments here, and some nice ascii visualizations too.

        //   5---------4
        //  /|        /|
        // 1-+-------0 |
        // | 6-------|-7
        // |/        |/
        // 2---------3

Rhombus sampling

Rhombus sampling

#20082 introduces sampling implementations for Rhombus. This is specifically an implementation of ShapeSample which includes boundary and interior sampling.

Partial GPU Buffer Reads

Using the Readback Component allows reading information from the GPU. You can see how this is currently used in the shader/gpu_readback example.

Previously this approach only allowed full reads of a buffer, but #20133 enables using an offset to read partial data. This is already being used in the wild to readback terrain generated on the GPU to create colliders

FixedTimestep

Fixed Timestep demo

Camera movement in the context of FixedTimesteps can be more complicated than it first appear as it includes factors like if the camera affects the direction of the character or the physics simulation. When should the camera rotate or translation relative to FixedTimesteps? #20089 ports an example to 3d to explain the details.

Solari Initial GI

ReSTIR GI

Single-bounce Raytraced Global Illumination was added in #20020. This is an initial implementation of ReSTIR GI (pdf).

Given the nature of this work, the noise and image compression have significant effects on the image displayed in this issue. If you're interested in an accurate representation of what this looks like in practice, run the code yourself.


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.

rockrun

Rockrun

showcase

Rockrun is an old-school 2d platformer that recently closed the version gap and upgraded to Bevy 0.16.

terrain generation

Rockets and Terrain

showcase

Compute shader-based terrain generation and rendering for a rocket game

DJ Software

DJ Software

showcase

DJ software that has all the basics of an FLX4 controller working, analyzing tracks bpm, key, metadata, etc. Multiple audio files can be analyzed in the background.

grass displacement

Grass with wind displacement

showcase

Progress on wind displacement shaders for vegetation/grass using manually gpu instanced grass. The end goal is to have the same wind system affect high end foliage assets with features like complex normals, SSAO and meshlets etc. as well as procedurally generated/predefined geometry while still allowing individual tweaking of assets.

isometric pathfinding

Isometric pathfinding

showcase

Prototype 3d isometric tilemap support for bevy_northstar, a hierarchical pathfinding crate.

roof hiding

Roof hiding

showcase

Roof hiding as players walk in and out of buildings for To Build a Home.

fmc ui

fmc.gg UI

showcase

UI for fmc.gg based on a video by Juxtopposed

celeste

Nano-9: Celeste

showcase

Nano-9 running the original stenographically encoded Celeste Pico-8 PNG cart directly from the web

multi level pathfinding

multi-level pathfinding

showcase

A small demo showcasing multi-level pathfinding with a winding set of stairs

platformer

2d Platformer

showcase

Progress on this 2d platformer includes torches flickering to give a more fire-like look, and the levels gained a new detail.

sunny shores

Sunny Shores

showcase

Sunny Shores combines the aesthetics of 3D Lofi and the creative freedom of a block-based sandbox. Hunt, fish, forage, build and craft to survive in an infinite open world.

compute shader raymarching

Compute Shader Raymarching

showcase

A compute shader raymarcher showing off domain repetition

shader blend

World Shader Blending

showcase

A shader that uses surface normals to blend between 2 textures

voxel worldgen

Voxel Worldgen

showcase

A new voxel worldgen example.

bevy_ui tabs

bevy_ui Tabs

showcase

bevy_ui tabs in a settings page with serialization.

boids

Boids

showcase

Boids simulation + "physics engine" for a uni project. Featuring:

  • Normal boids (green)
  • Boid testing unit (blue)
  • Predator boids (red)
  • Uniform grid searching other boids in neighboring cells
  • The 3 main rules (cohesion, separation and alignment) + global wind
  • Wind currents whose trajectory is described by cubic Bezier splines
  • Force fields that repel (red) or attract (blue)
  • Customizable settings
pacman

Pac-Man

showcase

A Pac-Man demo made to engage with the Bevy examples and work with a 2d environment.

grass and vegetation shaders

POLDERS vegetation

showcase

Progress on grass & vegetation shaders for POLDERS.

power system

Simple Power System

showcase

A small power system that seems to be for providing electrical power to resources.

Crates

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

lightyear 0.22

crate_release

Lightyear is a full-featured networking library for bevy

0.22 brings a huge upgrade to the rollback logic.

Check out the tutorial

q_service

crate_release

q_service aims to bring a service model to Bevy. The crate is loosely modeled after systemd. It doesn't manage PID1, but it does manage user services, including those necessary for startup.

Services are resources which have built-in state, associated data, and managed dependencies. This crate extends the Bevy ECS to include this functionality. Because it is an engine extension, there is no associated plugin. Simply import the prelude and you're good to go.

bevy_typst_textures

crate_release

bevy_typst_textures provides a Resource for generating rasterized textures out of either standalone .typ files or structured, zipped typst projects. typst is a layout tool similar to LaTeX.

bevy_light_2d

crate_release

A general purpose 2d lighting plugin.

0.7 brings a new Light2d marker component that serves to allow enabling/disabling lighting, which is exemplified by a new "minimap" example.

Moonshine Framework v0.4

crate_release

Moonshine Framework is a self-described unconventional cocktail of libraries that do a number of different things including provide state machines, save/load logic, and more.

No devlogs this week
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