Bevy has recently been updated to version 0.14. For those unfamiliar, this free and open-source data-driven game engine is currently one of the best options for game development using the Rust programming language.
While it lacks a visual editor and functions more as a game framework, its design can benefit developers who prefer a code-driven approach and seek greater control, performance, and customization for their projects. With its comprehensive and constantly expanding feature set, Bevy is helping Rust become an increasingly viable option for game development.
Despite the version number suggesting a minor release, this update is quite significant. It represents the culmination of work from 256 contributors and 993 pull requests since the previous update back in February. The update heavily focuses on visuals, introducing multiple features in this area. It also includes numerous bug fixes and quality of life improvements.
A forested scene illustrating Bevy's new volumetric fog, depth of field, and screen-space reflections
Let's go over some of the highlights in this release:
- Virtual Geometry: Currently in an experimental state, this new feature functions similarly to Unreal Engine 5's Nanite renderer. It allows developers to preprocess meshes into "meshlets," enabling the efficient rendering of vast amounts of geometry.
- Sharp Screen Space Reflections: The initial implementation of Screen Space Reflections enables the approximation of real-time reflections by raymarching through the depth buffer and copying samples from the final rendered frame.
- Depth of Field: A new effect implemented as a post-processing shader that mimics the limitations of physical camera lenses, causing objects at specific depths to go "out of focus."
- Per-Object Motion Blur: A new post-processing effect that blurs objects in the direction of motion. This effect can be useful for enhancing the sense of speed, as seen in racing games where the player's vehicle remains sharp while stationary objects get blurred.
- Volumetric Fog / Lighting: Bevy's existing fog implementation is basic, relying solely on the distance from the camera for its effect. The new implementation simulates fog in actual 3D space. Although it is more computationally expensive, it enables lights to create stunning "god rays" shining through the fog.
- Filmic Color Grading: Bevy's existing tonemapping tools have been extended to include a complete set of filmic color grading tools, allowing developers to achieve the right look for their games.
- PBR Anisotropy: Support for anisotropy has been added, enabling roughness to vary along the tangent and bitangent directions of a mesh. This causes the specular light to stretch out into lines instead of a round lobe, making it useful for modeling surfaces such as brushed metal, hair, and similar materials.
- Auto Exposure: This feature automatically adjusts the camera's exposure based on the scene's brightness. It complements the manual or dynamic adjustment of exposure values (available since version 0.13) and is useful for simulating the eye's behavior in adapting to large changes in brightness, creating a high dynamic range effect.
- PCF for Point Lights: Percentage-closer filtering (PCF) has been added for point lights. This is a standard anti-aliasing technique used to achieve softer, less jagged shadows.
- Animation blending: The new low-level animation graph adds support for animation blending, enabling smooth transitions between animations. This feature also paves the way for first and third-party graphical, asset-driven animation tools.
- ECS Observers and Hooks: The update introduces two complementary "push" style mechanisms to the engine inspired by flecs ECS. Component Lifecycle Hooks and Observers allow for automatic (and immediate) responses to arbitrary events, such as component addition and removal.
- Better colors: Bevy now supports a broad selection of color spaces, each with its own type (e.g., LinearRgba, Hsla, Oklaba), and offers a wide range of fully documented operations and conversions between them.
- Computed states and substates: These two additional tools enable easier modeling of complex game states. They are type-safe extensions to the States abstraction.
- Rounded corners: Bevy now allows developers to procedurally set the corner radius on UI elements.
There are countless additional new features and improvements. For the complete changelog, make sure to visit the Bevy 0.14 release article on Bevy's official website.