· via Hacker News – Front Page (native)
Bevy 0.20 arrives with 817 merged PRs, faster Solari renderer and WESL shaders
Bevy 0.20, the Rust game engine's latest release, merges 817 pull requests from 227 contributors, upgrading the Solari pathtraced renderer, adopting WESL shaders and simplifying BSN scene syntax.

What shipped
The Bevy project has released version 0.20 of its free, open source, data-driven game engine built in Rust, now available on crates.io. According to the official announcement on bevy.org, which surfaced on the Hacker News front page, the release merges 817 pull requests from 227 contributors, plus community reviewers and donors. Existing apps and plugins move to the new version through a published 0.19-to-0.20 migration guide.
Solari renderer: better images, lower cost, macOS support
Solari, the engine's real-time path tracing renderer, received broad improvements. Work on the ReSTIR implementation means rendering is now mostly unbiased, producing more accurate lighting; shadows no longer lag behind moving objects, and reflections shimmer less during motion, especially on non-metallic materials.
The most consequential performance change: ReSTIR is now optional and off by default. The team's reasoning, per the announcement, is that recent DLSS-RR updates have become good enough that in many scenes ReSTIR consumes a meaningful chunk of performance without noticeably improving image quality. Projects upgrading from 0.19 that see reduced shadow quality, or missing shadows in motion in scenes with many lights, can re-enable it via SolariLighting::restir. Cheaper light-sampling techniques are being explored for the future.
Solari's scene management is now retained and further optimized, which the announcement says significantly reduces CPU costs. SolariLighting also exposes new tuning knobs, including world cache size, per-pixel light sample count, temporal accumulation and path tracing bounce count.
On compatibility, Solari now handles lighting from Atmosphere and EnvironmentMapLights components on cameras, alongside existing support for DirectionalLight and emissive meshes, with PointLight, SpotLight and RectLight planned. The renderer also runs on macOS through Metal, though bevy_solari ships no built-in denoiser there yet; MetalFX Ray Reconstruction is suggested as a possible future solution, with contributions welcome.
The dlss_wgpu crate was updated to the latest DLSS SDK, adding DLSS-RR 4.5 with improved denoising quality in Solari. Anyone who used DLSS in 0.19 must download and set up the newest SDK version or they will hit compiler errors.
BSN scene syntax gets an ergonomics pass
BSN, Bevy's newer scene system, landed with friction points that this release addresses. All scene references now require an explicit @ prefix, which the team says makes scene inclusions easier to spot and unifies the syntax across cases.
The template_value wrapper is gone: plain values, function calls, clones and builder-style chained methods can now be written directly in BSN declarations. Enums also got simpler, no longer needing VariantDefaults or FromTemplate provided they implement Default and Clone. The announcement argues this improves compatibility with arbitrary Rust enums, since the language has no concept of enum variant defaults. The tradeoff is that every field of a variant must now be specified explicitly.
Entity lists switch from comma separation to a -- separator, intended to make entity boundaries visually clear without extra parentheses or over-indentation. According to the announcement, the syntax should now be largely nailed down.
Separately, BSN scene entities now emit an observable Ready event once all of their children have spawned.
WESL becomes the official shader language
Bevy has officially adopted WESL, a standardized extension of WGSL. The release notes describe it as already an improvement over the engine's previous custom WGSL dialect, and say the Bevy and WESL teams are jointly planning the future of shader development in the engine.
Widgets, sprite materials and cameras
Bevy Feathers, the editor-focused UI toolkit, gained Color Input, Scrollable List View, Dropdown Selection and Lazy Menu widgets, plus Headless Tab Widgets. The Number Input widget is now scrubbable and draggable.
Custom shader materials can now be created for Sprites, and 2D mesh materials can be extended the same way as in 3D. A new built-in pan orbit camera allows CAD-style navigation of scenes.
Why it matters
Bevy is one of the most prominent game engines in the Rust ecosystem, and a release of this size — 817 pull requests across a few months — shows the pace of its community development. Two decisions stand out for readers tracking graphics technology. First, disabling ReSTIR by default signals that AI-based reconstruction such as DLSS-RR has matured enough to carry real-time path tracing on its own in many scenes, reshaping how engines balance sampling cost against image quality. Second, adopting WESL moves Bevy's shader code toward a shared standard rather than an engine-specific dialect, which could matter for tool portability across WGSL-based engines. Meanwhile, settling BSN's syntax gives plugin and tooling authors a stabler target to build against. Upgraders should read the migration guide carefully, since the BSN changes and the DLSS SDK requirement are breaking.
- #rust
- #bevy
- #game-engine
- #graphics
- #open-source