Bevy 0.20 adds Solari path tracing upgrades, WESL shaders and BSN syntax changes
Bevy 0.20 is out on crates.io, with a faster Solari path tracer that now runs on macOS, a move to the WESL shader language, and breaking BSN syntax changes. Existing projects should read the 0.19 to 0.20 migration guide before upgrading.
Digital Developer Desk, 3h ago, 3 min read
Bevy 0.20 has been released on crates.io. The Bevy team credits 227 contributors and 817 pull requests. Highlights include Solari and DLSS updates, BSN syntax changes, a new Ready event, more Feathers UI widgets, adoption of the WESL shader language, custom sprite materials, extended 2D materials and a pan orbit camera.
Solari, the realtime path tracer, gets the biggest changes. Improvements to the ReSTIR implementation make rendering mostly unbiased, and the team says shadows on moving objects no longer lag and reflections shimmer less. ReSTIR is now optional and off by default, because DLSS-RR has improved enough that ReSTIR often costs performance without a big quality gain. With it off, expect weaker shadows in scenes with many lights. If you used Solari in 0.19, check your scenes and re-enable SolariLighting::restir if needed. Scene management is now retained, which cuts CPU cost, and SolariLighting has new settings for world cache size, per-pixel light samples, temporal accumulation and bounce count.
Solari now supports lighting from Atmosphere and EnvironmentMapLights on cameras, alongside DirectionalLight and emissive meshes. PointLight, SpotLight and RectLight support is something the team says it hopes to add in the near future. Solari also runs on macOS, but bevy_solari has no built-in denoiser there. The dlss_wgpu crate now supports DLSS-RR 4.5. If you used DLSS in 0.19, download and set up the newest DLSS SDK or you will hit compiler errors.
BSN, the new scene system, has breaking syntax changes that the team says should largely settle the syntax. All scene references now need an @ prefix. The template_value wrappers can be removed in general, including for chained method calls. Enums no longer need VariantDefaults or FromTemplate if they implement Default and Clone, but you must now specify every enum field. Entities in a list are separated with -- instead of commas or parentheses, which are deprecated in that context. The team also recommends bsn_list! {} over [] or () because of rustfmt behavior, and says it plans to build a BSN auto-formatter.
A new Ready event fires for each entity in a spawned scene once its full spawn logic, including descendants, has run. That gives you a bottom-up counterpart to the top-down Add event. Feathers, the editor-centric UI toolkit, adds Color Input, Scrollable List View, Dropdown Selection and Lazy Menu widgets, and its Number Input can now be dragged. bevy_ui_widgets gains headless tab widgets. Bevy's shaders are now written in WESL, and support for the old custom WGSL dialect has been removed, so check any custom shaders. The full list is in the release post and migration guide.
Sources
Get the daily brief
The five stories that matter, every weekday morning. Free.
Unity 6.6 is out, with Content Directories as the headline change
Unity's latest supported update focuses on under-the-hood engine work. Unity 6.3 remains the current LTS release for teams that need long-term stability.
gamedev.net43d ago3 min read
Godot 4.7 brings HDR output, a rectangular AreaLight3D and a new Asset Store
The 4.7 release adds HDR display output, a new AreaLight3D node, a rebuilt Asset Store and the ability to build games entirely on Android. The 4.7.2 maintenance release followed in August.
godotengine.org117d ago3 min read
Unreal Engine 5.8 is out: MegaLights goes production-ready and Lumen Lite arrives
Epic's 5.8 release moves MegaLights, Movie Render Graph and Iris replication to production-ready, adds a cheaper Lumen Lite global illumination mode in beta, and introduces experimental Mesh Terrain.
dev.epicgames.com119d ago5 min read