
Lost in Time, Varrbound, and Level Generation
2026-01-12
This week we see a whole bunch of improvements to Bevy's lighting and shadows. Including fresnel improvements, brightness fixes and more.
For those that like performance graphs, check out the Parallel GPU buffer writes PR.
Here's some demo shots of what Bevy can do.
Buildings

Overhangs

Streets

System Fonts

A new example shows off querying for and using system fonts via cosmic-text.
cargo run --example system_fonts
2d rotation

A new 2d rotation demo shows a non-generic way to handle 2d rotation to make a sprite face towards the mouse cursor.
cargo run --example rotate_to_cursor

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


Pico Striker
showcase
Bevy and Ratatui combine for this TUI application aimed at monitoring lightning strike detection from a Pico W board.
Text-based RPG
showcase
A number of features live in this text-based RPG test project that is mostly used to find things to work on upstream in Bevy.
- Jinja markdown template, rendered to egui via
egui_commonmark - Jinja scripting context is populated by ECS data via
bevy_reflect - Markdown links are hooked back into the ECS as reflected observer events that get triggered when clicked
- These hooks are specified as YAML frontmatter, and deserialize into real bevy
Eventtypes - Auto-reloading via bevy_asset file watcher
- Because the entire thing is a jinja template, this means definition of each hook can be scripted, which can dynamically adjust the event data based on real ECS data, or even completely change which events are triggered when a link is clicked
Here's an example of what a markdown template looks like:
---
hooks:
sleep: !Sleep
interact: !Interact
target: Merchant
multiple:
- !Talk
target: Merchant
- !GiveItem
target: Merchant
item: GoldCoin
---
# The Tavern
Hi {{ player.Name }}!
- [Sleep](sleep)
- [Interact with the Merchant](interact)
- [Talk to the Merchant and Give a Gold Coin](multiple)


Reactor's Vengence
showcase
Reactor's Vengence is a submission to the SoloDevelopement #10 - New Year Jam
You spawn inside a maze with one goal: make the reactor explode. The reactor is set to blow in 300 seconds… but rogue robots are sabotaging the computers controlling the countdown. If too many systems go down, the whole plan stalls.

Planetes
showcase
A prototype Bevy editor with support for adding components to entities. The project is aimed at developing an understanding of the problem space to help with the more official editor efforts.

Rogue Quest
showcase
A long-term project years in the making, this Roguelike has been updated to 0.16 from 0.14, and hopefully 0.17 soon.

bevy_pointcloud wasm demo
showcase
A wasm demo of bevy_pointcloud's Potree support, available on the web. The point cloud size is 100 mb and is stored on cloud flare. It is loaded progressively using a priority queue.

Lost In Time Playtest
showcase
Lost in Time is a rogue-like game with some survival elements, taking inspo from Risk of Rain, Vampire Survivers, Megabonk, Diablo/PoE, and many more.
The Lost in Time Discord (invite link) is hosting the downloads for the playtest.

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

bevy_mod_ffi v0.2.0
crate_release
FFI bindings to Bevy for dynamic plugins and hot-reloading, now with observers, custom components and more new features
bevy_btml
crate_release
HTML-like syntax for Bevy
btml!(commands,
<Node
width=Val::Percent(100.0)
justify_content=JustifyContent::Center
align_items=AlignItems::Center
>
<BackgroundColor>Color::BLACK</BackgroundColor>
<children>
<Text>"Hello World".to_string()</Text>
<TextFont font_size=30.0 />
<TextColor>Color::WHITE</TextColor>
</children>
</Node>
);
Aquila
crate_release
Aquila is a modular asset server with support for OAuth and multiple file backends, meant for serving game assets.
MotionGfx 0.1.0
crate_release
MotionGfx is a backend-agnostic motion graphics framework built on top of Bevy ECS. It provides a modular foundation for procedural animations.

bevy_split_canvas
crate_release
evy_split_canvas splits a single canvas into multiple using multiple cameras.

Devlogs
vlog style updates from long-term projects
Shadow mapping in distance fog authored by mate-h
Update BRP method names in code examples authored by Nilirad
fix: add unwind safety to `resource_scope` authored by joseph-gio
Document that `configure_schedules()` only applies to currently existing schedules. authored by kpreid
Improve macro hygiene of `children!` by re-defining it in terms of `related!` authored by ItsDoot
Remove system fonts test code from the `text` example. authored by ickshonpe
new 2d rotation example authored by ChristopherBiscardi
Remove the `Component` derive from `FontSource`. authored by ickshonpe
Improve code examples in 0.18 migration guides authored by BD103
Deduplicate solari realtime bindings authored by SparkyPotato
Parallel GPU buffer writes authored by aevyrie
Fix copy-pasting mistake in extended material bindless example authored by janhohenheim
Fix panic in mesh picking when a mesh is `RENDER_WORLD` only authored by greeble-dev
Clarify glTF coordinate conversion documentation authored by greeble-dev
Fix Area Light Specular Over-Brightness authored by aevyrie
Fix: "The build mesh uniforms pipeline wasn't ready” warning now fires only once authored by kfc35
Derive `PartialEq` for `InputFocus` authored by Shatur
Remove `Strikethrough` from the `text` example authored by ickshonpe
Text pipeline update buffer spans refactor authored by ickshonpe
Remove `bevy_camera` and `bevy_ui` deps from `bevy_input_focus`, no feature flag needed authored by kfc35
Add Ray.plane_intersection_point to simplify example code authored by nicebenny23
Reduce aliasing and Moiré patterns in temporal shadow filtering authored by superdump
Update the doc link for Clone Behaviors section of `EntityCloner` authored by WaterWhisperer
docs: adds migration guide for Assets<Mesh> retaining render_world only meshes authored by kfc35
`TextPipeline::update_buffer` return with early error on degenerate scale factor authored by ickshonpe
Add render diagnostic functions for reading from a buffer authored by JMS55
Update `Combine` trait example to use `unwrap_or(false)` authored by WaterWhisperer
Fix shader crash in `apply_fog` authored by aevyrie
bevy_asset: support upgrading Reader to SeekableReader authored by cart
Fix font ID leak in `TextPipeline` authored by ickshonpe
Directional navigation now considers UiTransform rotation authored by snk-git-hub
Make `bevy_audio` optional for `android_shared_stdcxx` authored by Shatur
Update Automatic Directional Navigation Release Notes (due to dependency rearrangement) authored by kfc35
Add warning log for sprite picking failure on compressed textures authored by mirsella
Remove bincode dev dependency authored by mockersf
Add AssetPath::resolve_path and resolve_embed_path methods authored by Eyad3skr
Store registered system as Option and take it when running authored by cart
0.18: Fix markdown lint in `optional_asset_reader_seek.md` release note authored by greeble-dev
0.18: Remove references to `ReaderRequiredFeatures` authored by greeble-dev
systemstate support commands track location authored by MushineLament
SkinUniforms to RenderStartup authored by atlv24
0.18: Add experimental warning to glTF coordinate conversion migration guide authored by greeble-dev
0.18: Add migration guide for automatic `Aabb` updates authored by greeble-dev
Fix Visibility Latching Bug authored by aevyrie
Allow reading the individual accesses of a `FilteredAccessSet`. authored by andriyDev
move define_atomic_id to bevy_utils authored by atlv24
Remove EarthlikeAtmosphere resources authored by cart
The fresnel can't hurt you any more authored by aevyrie
Remove 0.18 release content from main repo authored by alice-i-cecile
Large scenes authored by DGriffin91
wght font feature tag comment fix authored by ickshonpe
`system_fonts` example authored by ickshonpe
`TextPipeline::update_buffer` collect `Attrs` directly authored by ickshonpe
Fix the fix to the optimization and fix authored by aevyrie
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
Physically Based Screen Space Reflections authored by aevyrie
Scene entity map when saving scene authored by molikto
Rough Screen Space Reflections authored by aevyrie
Generic font families authored by ickshonpe
Contact Shadows authored by aevyrie
New `combined_navigation` example combining auto and manual directional nav authored by kfc35
Render Debug Overlay authored by aevyrie
More fully type erase all pbr types from specialization authored by tychedelia
CI improvements for PRs that do not target main authored by kfc35
bevy_material authored by atlv24
reflect PartialOrd authored by molikto
Make `ReflectEvent` more accessible authored by ItsDoot
Convert `MeshPipelineViewLayouts` and `MeshPipeline` to `RenderStartup` system authored by Zeophlite
`FontSmoothing` fixes authored by ickshonpe
add calculate_tile_pos function authored by uwulasm
Add `FontSmoothing` to `bevy_text::prelude` authored by ickshonpe
Fix typo in "Generic Option Parameter" for migration guide 0.17 authored by citrusmunch
Solari: Improved mirror denoising authored by JMS55
Add tools to avoid unnecessary `AssetEvent::Modified` events that lead to rendering performance costs (#16751) authored by MatrixDev
[bevy_camera_controller] Implement customisable rotation system for camera movement authored by ExtremTechniker
Add EnvironmentMapLight creation helper functions authored by atlv24
Solari: Fix mirror artifacts and world cache showing up in mirrors authored by JMS55
Issues Opened this week
`bevy_input_focus`: Ability to manually set “no navigation in a given direction” for an entity authored by kfc35
better support for PR not targeting main authored by mockersf
Atmospheric fog bleeds sunlight through all objects authored by atlv24
Using both Bloom and Motion Blur breaks camera ordering. authored by HugoPeters1024
Feature Request: Native Support for Huawei HarmonyOS authored by teszNU
Problems with `Font`s as `Asset`s authored by ickshonpe
Use of .is_resource_changed in a closure authored by ethereumdegen
Replace PathBuf-based resolution in AssetPath::resolve with URL-like segment resolver authored by Eyad3skr
Gizmos render unreliably authored by KucaKun
[Crash] STATUS_STACK_BUFFER_OVERRUN (0xc0000409) on startup with RTX 4060 Ti (Solari) authored by Sprict
MSAA changes camera ordering. authored by IQuick143
Mesh with vertex joint attributes presumes existence of SkinnedMesh authored by qoh







