Вышел игровой движок Bevy 0.20: трассировка путей, WESL и новый синтаксис сцен

· Linux и open source
Движок Bevy на Rust получил крупное обновление: ускоренный трассировщик Solari с поддержкой macOS, переход на стандарт шейдеров WESL и доработанную систему сцен BSN.

cover.svg

Команда Bevy выпустила версию 0.20 своего свободного игрового движка на Rust. Над релизом, по данным авторов, работали 227 участников, объединивших 817 запросов на слияние.

Рендеринг

Главное внимание уделено Solari — трассировщику путей реального времени. Он стал точнее благодаря доработанной реализации ReSTIR, у движущихся объектов исчезло запаздывание теней, а отражения перестали мерцать. При этом ReSTIR теперь по умолчанию отключён: разработчики сочли, что на многих сценах он заметно снижает производительность, почти не улучшая картинку. Solari научился работать на macOS через Metal (пока без встроенного шумоподавителя) и поддерживает освещение от атмосферы и карт окружения. Крейт dlss_wgpu обновлён до DLSS-RR 4.5.

Движок официально перешёл на язык шейдеров WESL — стандартизированное расширение WGSL с модулями, импортами и условной компиляцией. Собственный диалект «расширенного WGSL» удалён; старые шейдеры нужно переименовать и адаптировать. Появилась и начальная поддержка mesh-шейдеров, заменяющих классический вершинный шейдер вычислительным.

Сцены и интерфейс

Система сцен BSN получила правки синтаксиса: все ссылки на сцены теперь требуют префикса @, исчезли громоздкие обёртки template_value, перечисления работают без лишних макросов, а элементы списка разделяются через --. Авторы считают синтаксис в основном устоявшимся. Добавлено событие Ready, срабатывающее «снизу вверх», когда сущность полностью создана вместе с потомками.

Набор виджетов Feathers пополнился выбором цвета, прокручиваемым списком, выпадающим меню и «ленивым» меню; поле ввода чисел теперь можно перетаскивать. Появилось контекстное оформление, единицы em и rem, эллиптические скругления углов и компонент FixedNode, привязывающий элемент к области просмотра камеры.

ECS и производительность

Добавлена «слабая» упорядоченность систем chain_weak: порядок сохраняется лишь там, где обращения к данным действительно конфликтуют, что повышает параллелизм. Появилась рандомизация расписания для выявления скрытых зависимостей между системами, а паники в системах теперь можно превращать в ошибки, не роняя всё приложение.

Массовое удаление сущностей через despawn_all ускорилось в полтора-два раза. Переработан бэкенд сжатия текстур: новая библиотека ctt выдаёт форматы BCn и ASTC с автоматической генерацией мип-уровней. Механизм BevyError обзавёлся контекстными сообщениями в духе крейта anyhow.

В планах — файловый формат .bsn, представление ассетов в виде сущностей и удалённый инспектор. Движок остаётся бесплатным и развивается на пожертвования.


Источник: Lobsters

Комментарии

Войдите, чтобы комментировать.

  • Пока нет комментариев.