Bevy 版本速览笔记

ZoOL 对 Bevy 主要版本发布的快速解读和重点特性提炼。


Bevy 0.15 速览 (2024-11-28)

重点特性

特性重要度说明
所需组件 (RequiredComponents)⭐⭐⭐#[require(Team, Sprite)] 自动注入依赖组件,精简 Bundle
实体选择/拾取 (Picking)⭐⭐⭐整合 bevy_mod_picking,支持 UI/Sprite/Mesh 默认后端,冒泡观察者模式
动画系统⭐⭐通用实体动画、动画遮罩、加法混合、动画事件
曲线系统⭐⭐Curve trait、循环样条、缓动函数、颜色渐变曲线
反射增强⭐⭐函数反射、唯一反射、远程类型反射
bevy-remote-protocol⭐⭐基于 hyper/HTTP 的 JSON-RPC 接口,可远程检查和修改 ECS 世界
保留渲染世界⭐⭐Render World 不再每帧清空,同步代替重建
UI 盒阴影BoxShadow 组件
VBAO垂直基于环境光遮蔽
色差后处理效果
体积雾改进点光源和聚光灯支持
游戏手柄作为实体手柄输入 ECS 化
Cosmic Text改进的文本渲染

关键代码示例

// 所需组件: 自动注入依赖
#[derive(Component, Default)]
#[require(Team, Sprite)]
struct Player { name: String }
 
// Picking: 冒泡观察者
commands.spawn(Text::new("Click Me!")).observe(on_click_print_hello);
 
fn on_click_print_hello(click: Trigger<Pointer<Click>>) {
    println!("{} was clicked!", click.entity());
}

评价

“所霉组件、拾取、远程协议都是编辑器的基石”


Bevy 0.16 速览 (2025-04-25)

重点特性

特性重要度说明
GPU 驱动渲染⭐⭐⭐Multi-draw indirect + Bindless,大场景 3x 性能提升
ECS 关系 (Relationships)⭐⭐⭐#[relationship] / #[relationship_target] 原生支持
no_std 支持⭐⭐已在 GBA 掌机上跑通,嵌入式可能
统一错误处理⭐⭐系统/观察者/命令返回 Result,GLOBAL_ERROR_HANDLER
大气散射⭐⭐程序化大气渲染
贴花 (Decals)Forward + Clustered 贴花
遮挡剔除性能优化
WESL 支持WGSL 扩展:imports + 条件编译

GPU 驱动渲染兼容性

OSAPIGPU TransformMulti-draw & GPU CullBindless
WindowsVulkan
WindowsD3D12
LinuxVulkan
macOSMetal
WebWebGPU
WebWebGL2

关键代码示例

// ECS 关系
#[derive(Component)]
#[relationship(relationship_target = LikedBy)]
struct Likes(pub Entity);
 
#[derive(Component, Deref)]
#[relationship_target(relationship = Likes)]
struct LikedBy(Vec<Entity>);
 
// 错误处理
fn my_system() -> Result {
    // 自动传递给 GLOBAL_ERROR_HANDLER
}
 
GLOBAL_ERROR_HANDLER.set(warn).expect("only once");

评价

“大场景 3x 性能提升,GBA 上跑 Bevy 很酷”


Bevy 0.17 速览 (2025-10-01)

重点特性

特性重要度说明
Bevy Solari (光追)⭐⭐⭐实时光线追踪全局光照,ReSTIR DI/GI
热重载 (Hotpatching)⭐⭐⭐实时更新 Rust 系统代码,无需重编译
虚拟几何 BVH⭐⭐⭐1150 亿三角形 3.5ms,8x 复杂度仅增 30% GPU 时间
DLSS 支持⭐⭐AI 超采样 + 降噪
UI 渐变系统⭐⭐线性/锥形/径向渐变
专用 UI 变换 (UiTransform)⭐⭐替代通用 Transform
Bevy Feathers⭐⭐专业 UI 组件库(编辑器用)
无头组件纯逻辑 + 完全样式控制
自动反射注册#[derive(Reflect)] 自动注册
帧时间图表FpsOverlayPlugin 实时性能监控
Web 资源加载直接从网络加载
瓦片地图分块渲染
光照纹理 (Light Cookies)调制光照强度
Text2d 增强阴影 + 背景色
ViewportNode相机输出渲染到 UI 节点

震撼性能数据

  • 130,000 条龙 × 870,000 三角形 = 1150 亿三角形 → 3.5ms
  • 1,000,000 条龙 = 9000 亿三角形 → 4.5ms
  • 相比 0.16:1,300 实例场景从 2.2ms → 1.3ms(提升 41%

关键代码示例

// 启用热重载
[features]
hotpatching = ["bevy/hotpatching"]
 
// UI 渐变
commands.spawn((
    Node::default(),
    BackgroundGradient::new_linear(
        LinearGradient::new(90.0)
            .with_stop(Color::RED, 0.0)
            .with_stop(Color::YELLOW, 0.5)
            .with_stop(Color::GREEN, 1.0)
    ),
));
 
// 自动反射
#[derive(Component, Reflect)]
struct Player { /* 自动注册 */ }

升级注意事项

  1. TriggerOn 命名变更
  2. TransformUiTransform (UI 节点)
  3. 系统集统一使用 *Systems 后缀
  4. glTF 坐标系处理变化

评价

“0.17 不仅是更新,是 Bevy 向世界级游戏引擎迈进的坚实一步” 下一步: BSN 场景/节点系统 (0.18)


版本对比总结

维度0.150.160.17
核心突破所霉组件GPU驱动渲染光追、热重载
性能保留渲染世界3x 大场景1150亿三角形
架构PickingECS关系虚拟几何BVH
开发体验BRPno_std、错误处理热重载、自动反射
UI盒阴影-渐变、Feathers、UiTransform

文件位置

  • /Users/zool/workspace/ZoOL's Valut/Bevy 0.15版速览.md
  • /Users/zool/workspace/ZoOL's Valut/Bevy 0.16 速览.md
  • /Users/zool/workspace/ZoOL's Valut/Bevy 0.17:光追照明、热修补系统与性能飞跃.md