Bevy 0.15 release candidates are now shipping!
2024-10-28
The major feature of the issue this week is the start of Bevy 0.15's release candidate process! You can find the current rc on docs.rs and if you're getting ahead of the game you'll find up to date examples for 0.15 in the examples folder in the release-0.15 branch.
Note there is a draft migration guide for early adopters of the release candidates available on the bevy website and if you want more immediate notifications when release candidates go out, take the Notify-RC
role in the Bevy Discord.
Feature PRs are a bit lighter this week, as you would expect with 0.15's release candidate process running.
The Bevy Spooky Jam also finished up this weekend. The theme was Eldritch.
Meshlets
Meshlets saw a number of PRs merged this week, including meshlet builder improvements, new error projection, and other changes.
Either
Either is an interesting crate used in #16036 for refactoring purposes. Its not only used in Bevy, but also in leptos, itertools, rayon, sqlx, polars, and more. If you're looking for a sum type that behaves a bit like a Result
but doesn't have the success/failure meaning associated with the arms, Either
could be what you're looking for. Also notable is that the either crate implements a number of useful functions for working with the type.
Indices::push
When working with meshes its common to have a list of vertices and a list of indices. The indices indicate which vertices a triangle should be drawn with. As of #16014 the Indices
enum is a bit easier to use with a new push
method, which is helpful because the Indices
enum otherwise requires matching on the U16 and U32 arms.
Required Components
As of #16072 TextureAtlas
is no longer a Component
and has now because part of UiImage
's data.
commands.spawn(UiImage::from_atlas_image(image, TextureAtlas { index, layout }));
Picking
The new picking behavior in Bevy 0.15 for event listeners was originally implemented using Observers. #16105 re-introduces the ability to listen for picking events using EventReader
which should ease some migrations from bevy_mod_picking
in the 0.15 cycle.
Alice's Merge Train is a maintainer-level view into active PRs, both those that are merging and those that need work.
Showcase
Bevy work from the #showcase channel in Discord and around the internet. Use hashtag #bevyengine.
Markdown to bevy_ui
showcase
Using pulldown_cmark to process markdown into bevy_ui nodes, allowing the rendering of markdown documents in native Bevy.
bevy + plotters
showcase
An adapter integration between Bevy and the plotters crate, allowing updatable (but not interactive) graphs.
Crates
New releases to crates.io and substantial updates to existing projects
bevy_libgdx_atlas
crate_release
Load libgdx sprite atlas files as Bevy assets. Use the GDX Texture Packer cross platform tool to create sprite sheets like in the example screenshot.
bevy_easy_portals
crate_release
An implementation of (visual) portals that let you create mirrors and other cool effects!
bevy_enhanced_input
crate_release
Inspired by Unreal Engine Enhanced Input, bevy_enhanced_input is a dynamic and contextual input mapping crate.
Features
- Map inputs from various sources (keyboard, gamepad, etc.) to gameplay actions like
Jump
,Move
, orAttack
. - Assign actions to different contexts like
OnFoot
orInCar
, which are regular components. - Activate or deactivate contexts by simply adding or removing components.
- Control how actions accumulate input from sources and consume it.
- Layer multiple contexts on a single entity, controlled by priority.
- Apply modifiers to inputs, such as dead zones, inversion, scaling, etc., or create custom modifiers by implementing a trait.
- Assign conditions for how and when an action is triggered, like "hold", "tap", "chord", etc. You can also create custom conditions, such as "on the ground".
- React on actions with observers.
Devlogs
vlog style updates from long-term projects
Architecting a Rust Game Engine (with Alice Cecile)
devlog
Alice recorded a podcast with Developer Voices this week where she talks with the host about Bevy, the ECS, the project, and more.
bevy logging
devlog
This series of posts in mdbook format covers the author's knowledge of how logging works and what they've found to work for them using Bevy.
Feature gate `bevy_remote` http transport. authored by LiamGallagher737
Fix red background in `ui_material` example authored by rparrett
Fix some duplicate words in docs/comments authored by rparrett
Unnecessary division in compute_smooth_normals authored by stepancheg
Use `en-us` locale for `typos` authored by rparrett
Add a test for Mesh::compute_smooth_normals authored by stepancheg
QueryEntityError: Use short name for components authored by SpecificProtagonist
Fix typos in `config_fast_builds.toml` authored by benfrankel
Check examples screenshots on windows authored by mockersf
Mute unreachable patterns/code warnings authored by stepancheg
Mute non-local definition warnings in bevy_reflect authored by stepancheg
Indices::push(u32) authored by stepancheg
fix: add reflect to `SceneInstanceReady` and other observers/events authored by mrchantey
Fix a tiny mismatch between code and comment authored by VitalyAnkh
Typo-check .hidden files authored by benfrankel
UI borders and outlines clipping fix authored by ickshonpe
Add a test for Mesh::triangles and fix for TriangleStrip authored by stepancheg
Replace TwoIterators with Either in bevy_animation authored by stepancheg
Fix point light count limit authored by akimakinai
Meshlet fix software rasterization authored by JMS55
crate publish order: bevy_animation depends on bevy_animation_derive authored by mockersf
remove reference to missing file in bevy_remote cargo.toml authored by mockersf
Meshlet new error projection authored by JMS55
Move TextureAtlas into UiImage and remove impl Component for TextureAtlas authored by cart
Ensure ghost nodes are skipped when getting parent clipping rect authored by villor
Fixes for a few minor borders and outlines bugs authored by ickshonpe
Use CosmicFontSystem in public bevy_text APIs and remove cosmic_text re-export authored by cart
Meshlet fill cluster buffers rewritten authored by JMS55
Meshlet builder improvements redux authored by JMS55
Reduce the clusterable object UBO size below 16384 for WebGL 2. authored by pcwalton
Place percentage-closer soft shadows behind a feature gate to save on samplers. authored by pcwalton
Fix `bevy_picking` plugin suffixes authored by BD103
fix bevy_dev_tools build authored by mockersf
Add `AsyncSeekForwardExt` trait to allows a similar API to the previous Bevy version authored by ldubos
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
Mesh::merge: count_vertices instead of initializing positions authored by stepancheg
Indices::extend authored by stepancheg
Add .contains_aabb for Frustum authored by Soulghost
track_change_detection: Also track spawns/despawns authored by SpecificProtagonist
Compute better smooth normals for cheaper, maybe authored by shanecelis
Multiview Rendering authored by awtterpip
Unified materials prototype authored by ecoskey
Avoid vec push authored by BenjaminBrienen
Correctly feature gate `custom_cursor` authored by Friz64
Make some associated functions of `Color` const authored by mamekoro
Add `ImageScaleMode` to `UiImage` authored by ickshonpe
Move `ContentSize` requirements from `Node` to the widget defining components authored by ickshonpe
Fix AsBindGroupError display for InvalidSamplerType authored by Henauxg
Window picking authored by NthTensor
Remove custom rounding authored by ickshonpe
Layout rounding debug example authored by ickshonpe
Native unclipped depth on supported platforms authored by JMS55
Prefer `Display` over `Debug` and format args consistently authored by BenjaminBrienen
Improve formatting authored by BenjaminBrienen
Meshlet normal-aware LOD and meshoptimizer upgrade authored by JMS55
Fix `dead_code` warnings in examples authored by BenjaminBrienen
Issues Opened this week
System ordering around BRP (Bevy Remote Protocol) authored by inodentry
Respond to asset changes using observers. authored by inodentry
Component hooks are not applied during exclusive world access authored by alice-i-cecile
`Event` trait should not be reused for observers and buffered events authored by alice-i-cecile
parseVec could not cast the value authored by ivnsch
Observers should not use `Entity::PLACEHOLDER` authored by alice-i-cecile
Add render-target passthrough for picking authored by alice-i-cecile
Webgl warning when performing buffer readback in web authored by m-edlund
Allow passing `--jobs` to `ci` to prevent OOM on home machines authored by hukasu
Improved fresnel approximation authored by JMS55
Normal texture results in wrong reflections authored by askor
Load only mip levels up to a specific size authored by inodentry
Add `std::panic::Location` field to Entities in debug builds authored by VVishion
Scalarize light loop authored by JMS55
Update function runs once after closing the window authored by beholdnec
Excessive logging from new `mesh_picking` backend authored by rs017991
Panic with DirectionalLight+Shadows+Camera authored by rs017991
IO Panic related to Unknown vertex attribute TEXCOORD_2 authored by ethereumdegen
Experiment with smaller depth buffer formats authored by JMS55
Let users control the line height of their text authored by rparrett
Make BinnedRenderPhase fields for accessing batchable and unbatchable entities public authored by askogseide
Batch together shadow view draws for different materials with the same conceptual shaders authored by JMS55
Maximize useful directional light cascade shadow map texels authored by JMS55
Automatic shadow biasing authored by JMS55
Use native depth clip control instead of manual DEPTH_CLAMP_ORTHO where possible authored by JMS55
Rendering after switching to a 2nd camera is broken. authored by Elabajaba
Consistent formatting of entities in error messages authored by SpecificProtagonist
`FileDragAndDrop` events on wayland are WEIRD authored by metdxt
Consider reverting #14387 "Deprecate is_playing_animation" for 0.15 authored by mgi388
texture sliced UI nodes are sized intrinsically since required components changes authored by ickshonpe
Provides a slot in bevy_render to grabing screen texture for achieve blend mode or glass effect in bevy_sprite. authored by Ahuang0107