Bevy 0.20 ra mắt: Đột phá về render, hệ thống scene và shader WESL

Công nghệ08 tháng 10, 2026·6 phút đọc

Bevy 0.20 vừa được phát hành với hơn 817 pull request từ 227 cộng tác viên, mang đến nhiều cải tiến quan trọng như renderer Solari nhanh hơn hỗ trợ macOS, hệ thống scene BSN với cú pháp gọn gàng hơn, và việc chính thức chuyển sang ngôn ngữ shader WESL. Bản phát hành này cũng bổ sung nhiều widget UI mới, cải thiện hiệu năng và tăng cường khả năng xử lý lỗi cho game engine viết bằng Rust này.

Bevy 0.20 ra mắt: Đột phá về render, hệ thống scene và shader WESL

Bevy 0.20 ra mắt: Đột phá về render, hệ thống scene và shader WESL

Bevy 0.20 vừa chính thức được phát hành trên crates.io, đánh dấu một cột mốc quan trọng với sự đóng góp của 227 cộng tác viên và 817 pull request. Bản cập nhật này tập trung vào ba trụ cột chính: cải thiện renderer theo dõi đường đi (path tracer) Solari, tinh chỉnh hệ thống scene BSN và chính thức áp dụng ngôn ngữ shader WESL.

Đối với những ai chưa biết, Bevy là một game engine mã nguồn mở được viết bằng Rust, nổi tiếng với kiến trúc dựa trên ECS (Entity Component System) và triết lý thiết kế đơn giản, linh hoạt. Engine này hoàn toàn miễn phí và mã nguồn mở vĩnh viễn, thu hút một cộng đồng phát triển game ngày càng lớn mạnh.

Cảnh Zorah được render bằng Bevy SolariCảnh Zorah được render bằng Bevy Solari

Solari và DLSS: Renderer theo dõi đường đi mạnh mẽ hơn

Solari — renderer theo dõi đường đi thời gian thực của Bevy — đã có những bước tiến vượt bậc trong bản 0.20. Chất lượng hình ảnh được cải thiện đáng kể nhờ những nâng cấp trong triển khai ReSTIR, giúp việc render gần như không còn sai lệch, mang lại ánh sáng chính xác hơn nhiều. Các vật thể chuyển động không còn để lại bóng đổ trễ, và phản xạ trông mượt mà hơn hẳn khi chuyển động.

Về hiệu năng, nhóm phát triển đã quyết định đưa ReSTIR thành tùy chọn và tắt mặc định, do DLSS-RR đã trở nên rất tốt trong các bản cập nhật gần đây. Điều này giúp giảm đáng kể chi phí CPU nhờ mã quản lý scene của Solari được tối ưu hóa theo hướng "retained".

Điểm đáng chú ý nhất có lẽ là Solari giờ đây đã chạy được trên macOS thông qua Metal, mở rộng đáng kể nền tảng hỗ trợ. Tuy nhiên, hiện chưa có bộ khử nhiễu (denoiser) tích hợp sẵn cho macOS. Bên cạnh đó, crate dlss_wgpu đã được cập nhật để hỗ trợ DLSS-RR 4.5.

Hệ thống scene BSN với cú pháp tinh gọn

BSN — hệ thống scene thế hệ mới của Bevy — đã nhận được nhiều thay đổi về cú pháp nhằm tăng tính rõ ràng và dễ đọc. Các thay đổi chính bao gồm:

  • Cú pháp scene tường minh: Tất cả tham chiếu scene giờ đây yêu cầu tiền tố @, giúp dễ dàng nhận diện các scene được đưa vào.
  • Loại bỏ template_value: Không còn cần bọc các giá trị component trong template_value, giúp mã nguồn sạch sẽ hơn.
  • Enum hoạt động tự nhiên: Các enum không còn yêu cầu VariantDefaults hay FromTemplate, chỉ cần triển khai Default và Clone.
  • Hỗ trợ phương thức chuỗi: Mẫu builder pattern giờ đây hoạt động mà không cần wrapper.

Đặc biệt, sự kiện Ready mới cho phép chạy logic khi một scene đã được spawn hoàn chỉnh — bao gồm tất cả dependencies đã tải, hierarchy đầy đủ và các component ban đầu đã được chèn. Đây là yếu tố then chốt để xây dựng các scene độc lập, có thể tái sử dụng.

Widget UI mới trong Bevy Feathers

Bevy Feathers — bộ công cụ UI hướng editor của Bevy — bổ sung thêm nhiều widget hữu ích:

  • Color Input: Bộ chọn màu nhỏ gọn với bánh xe màu, bộ chọn RGB, HSL và lưới màu gần đây.
  • List View / Scrollbar: Danh sách cuộn được, có thể chọn.
  • Dropdown Selection: Trường chọn hiển thị menu thả xuống khi nhấp.
  • Lazy Menu: Menu chỉ được spawn khi mở và hủy khi đóng, tiết kiệm tài nguyên.
  • Number Input cải tiến: Hỗ trợ cả nhập văn bản lẫn kéo/thay đổi giá trị, với giới hạn cứng và mềm.

Widget Color Input mới trong Bevy 0.20Widget Color Input mới trong Bevy 0.20

WESL Shader: Chuẩn hóa ngôn ngữ shader

Bevy đã chính thức áp dụng WESL (WebGPU Extended Shading Language) — một tiêu chuẩn mở rộng WGSL với các tính năng như module, import, biên dịch có điều kiện. Ngôn ngữ WGSL tùy chỉnh cũ của Bevy đã bị loại bỏ.

WESL mang lại lợi ích to lớn cho hệ sinh thái shader, bao gồm hỗ trợ LSP qua wgsl-analyzer, giúp có tính năng tô sáng cú pháp, nhảy đến định nghĩa, gợi ý nội tuyến và định dạng mã ngay trong IDE. Các shader tùy chỉnh cũ cần được chuyển đổi sang WESL và đổi tên từ .wgsl sang .wesl.

Bên cạnh đó, Mesh Shader giờ đây đã được tích hợp vào pipeline cache của Bevy, cho phép các nhà phát triển nâng cao tạo hình học trực tiếp trên GPU. Sprite Material cũng được bổ sung, cho phép tạo material tùy chỉnh cho sprite thông qua trait MaterialExtension2d.

Camera Pan Orbit và các tối ưu hóa khác

PanOrbitCamera — được chuyển từ plugin bevy_editor_cam của cộng đồng — giờ đây cho phép điều hướng cảnh theo phong cách CAD, rất hữu ích cho các ứng dụng thiết kế và biên tập.

Về mặt hiệu năng, tính năng Per-Column Change Ticks cho phép bỏ qua toàn bộ cột entity khi truy vấn thay đổi, mang lại tốc độ nhanh hơn 132 lần trong mã trích xuất mesh GPU. Schedule Randomization giúp phát hiện các lỗi phụ thuộc thứ tự tiềm ẩn bằng cách ngẫu nhiên hóa thứ tự chạy hệ thống.

Khả năng xử lý lỗi cũng được cải thiện khi các panic giờ đây được chuyển thành lỗi và xử lý qua fallback error handler, thay vì làm sập toàn bộ ứng dụng. Điều này đặc biệt quan trọng cho các ứng dụng chạy dài như trình biên tập ảnh.

Tương lai của Bevy

Nhóm phát triển đã hé lộ nhiều tính năng đang trong quá trình hoàn thiện, bao gồm định dạng tệp .bsn có thể hot-reload, asset dưới dạng entity, trình inspector từ xa, và hỗ trợ màn hình HDR. Đây đều là những mảnh ghép quan trọng hướng tới một trình biên tập scene hoàn chỉnh cho Bevy.

Bevy sẽ luôn miễn phí và mã nguồn mở, nhưng việc phát triển nó không hề miễn phí. Cộng đồng có thể đóng góp thông qua Bevy Foundation.

Với những cải tiến vượt bậc về render, hệ thống scene và shader, Bevy 0.20 khẳng định vị thế là một trong những game engine Rust hàng đầu, ngày càng thu hút các nhà phát triển game tìm kiếm giải pháp mã nguồn mở, hiệu năng cao và hiện đại.

Chia sẻ:FacebookX
Nội dung tổng hợp bằng AI, mang tính tham khảo. Xem bài gốc ↗