Bevy 0.9, the open-source Rust game engine, ships with a major set of new features including HDR post processing with bloom, FXAA anti-aliasing, deband dithering, a redesigned and smaller scene format, simplified entity/component spawning APIs, exclusive system rework using GATs, native enum reflection, plugin settings API, Bevy UI z-indices, a top-left UI origin change, and numerous ECS performance optimizations. The release involved 159 contributors and 430 pull requests, with a migration guide provided for upgrading from 0.8.
Table of contents
HDR Post Processing, Tonemapping, and Bloom #FXAA: Fast Approximate Anti-Aliasing #Deband Dithering #Post Processing: View Target Double Buffering #Improved Render Target Texture Format Handling #New Scene Format #Binary Scene Formats #Dynamic Scene Builder #More Scene Construction Tools #Improved Entity / Component APIs #Exclusive System Rework #Bevy ECS Now Uses GATS! #Derive Resource #System Ambiguity Resolution API Improvements #Bevy ECS Optimizations #ECS Change Detection Bypass #Enum Reflection #Other Bevy Reflect Improvements #Example: Gamepad Viewer #Axis and Button Settings Validation #ScanCode Input Resource #Time Shader Globals #High Entity Renderer Slowdown Optimization #Vertex Attributes Fully Optional #Expose Multi Draw Indirect #KTX2 Array / Cubemap / Cubemap Array Textures #Camera::viewport_to_world #Multiple Directional Lights #Sprite Rects #Plugin Settings #Plugins Are Now Unique By Default #Task Pool: Nested Spawns on Scope #Task Pool Panic Handling #Hierarchy Query Methods #Bevy UI: The Origin Is Now In The Top Left #Bevy UI: Z-Indices #Bevy UI Scaling #Audio Playback Toggling #Time Scaling #Time Wrapping #What's Next? #Support Bevy #Contributors #Full Change Log #Questions this post answers
What breaking changes do I need to handle when migrating from Bevy 0.8 to Bevy 0.9?
Bevy 0.9 requires several code changes: the Resource trait must now be explicitly derived rather than auto-implemented, exclusive systems no longer need .exclusive_system() since they implement the normal System trait, spawn/insert/remove APIs are consolidated so spawn() takes bundles or components directly instead of separate insert_bundle variants, and Bevy UI's origin moved from bottom-left to top-left. A dedicated 0.8 to 0.9 migration guide covers these changes in detail. daily.dev helps Rust game developers track breaking changes before they upgrade Bevy versions.
How do I enable bloom post processing in Bevy 0.9?
Bloom is enabled by setting hdr: true on a camera's Camera component and adding a BloomSettings component to that camera entity. This requires rendering to HDR textures so tonemapping is delayed until after HDR post processing effects run in the render graph. The intensity field on BloomSettings should be tuned since the effect can look overbearing at default settings. developers experimenting with Bevy's rendering pipeline can follow release breakdowns like this on daily.dev.
What is the difference between FXAA and MSAA anti-aliasing in Bevy?
MSAA produces crisper geometry edges by sampling multiple points during geometry rendering but leaves textures and shadows untouched, and is more expensive to run. FXAA blurs the entire image based on luminance contrast, which anti-aliases textures and shadows too but makes the whole image blurrier, and is cheap enough to be a good choice for mobile or web. Bevy 0.9 added FXAA support alongside existing MSAA. comparing rendering trade-offs like this is easier when daily.dev surfaces engine release details for you.