Bevy 0.20 Released: Path Tracing, WESL Shaders and a Refined Scene Syntax
Translated by a model; the original is in Russian.
The Bevy team has released version 0.20 of its free, Rust-based game engine. According to the authors, 227 contributors landed 817 pull requests for this release.
Rendering
The spotlight falls on Solari, Bevy's realtime path tracer. Improvements to its ReSTIR implementation make lighting more accurate, moving objects no longer trail laggy shadows, and reflections stop shimmering in motion. Yet ReSTIR is now off by default: the developers found it costs noticeable performance in many scenes while adding little visual quality. Solari now runs on macOS via Metal (with no built-in denoiser yet) and supports lighting from atmosphere and environment maps. The dlss_wgpu crate has been bumped to DLSS-RR 4.5.
The engine has officially adopted WESL as its shader language — a standardized extension of WGSL with modules, imports and conditional compilation. The old "extended WGSL" dialect is gone; existing shaders must be renamed and ported. There is also initial support for mesh shaders, which replace the classic vertex shader with a compute shader.
Scenes and UI
The BSN scene system saw syntax changes: all scene references now require an @ prefix, the clumsy template_value wrappers are gone, enums work without extra macros, and list entries are separated with --. The authors consider the syntax largely settled now. A new Ready event fires "bottom up" once an entity and all its descendants have been fully spawned.
The Feathers widget set gained a color input, a scrollable list, a dropdown selection and a lazy menu; the number input can now be scrubbed by dragging. There is contextual theming, em and rem sizing units, elliptical border radii, and a FixedNode component that anchors an element to the camera viewport.
ECS and performance
A new "weak" system ordering, chain_weak, keeps an order only where data accesses actually conflict, freeing unrelated systems to run in parallel. Schedule randomization has been added to surface hidden dependencies between systems, and panics inside systems can now be turned into errors instead of crashing the whole app.
Bulk despawning via despawn_all is now 1.5–2× faster. The texture compression backend was reworked around the ctt library, emitting BCn and ASTC formats with automatic mipmap generation. BevyError gained anyhow-style contextual error messages.
Still ahead: a .bsn asset file format, representing assets as entities, and a remote inspector. The engine remains free and is funded by community donations.
Source: Lobsters
Comments
Sign in, to comment.