Состоялся релиз масштабного обновления игрового движка Bevy 0.20, создаваемого на языке Rust. В подготовке апдейта участвовали 227 разработчиков, закрывших 817 пул-реквестов. Свежая версия принесла кардинальные изменения в графический конвейер, двухмерный рендеринг, пользовательский интерфейс и архитектуру описания сцен.
Рендерер реального времени с трассировкой путей Solari получил интеграцию технологии реконструкции лучей DLSS-RR 4.5 и стал доступен на macOS через графический API Metal, хотя встроенный шумоподавитель на платформе от Apple пока отсутствует. При этом авторы приняли спорное решение отключить алгоритм сэмплирования света ReSTIR по умолчанию ради экономии ресурсов видеокарты. В сценах с множеством источников освещения это приведет к снижению точности теней и их исчезновению в динамике, если пользователи не активируют параметр вручную. Кроме того, переход на новую версию технологии от Nvidia потребует обязательной установки актуального пакета DLSS SDK во избежание ошибок сборки.
Движок полностью отказался от собственного расширенного диалекта шейдеров в пользу открытого стандарта WESL, расширяющего WGSL. Поддержка прежнего формата была удалена из кодовой базы, поэтому авторам проектов придется вручную переписывать логику шейдеров и менять расширения файлов с .wgsl на .wesl. Взамен разработчики получили интеграцию с языковым сервером wgsl-analyzer, обеспечивающим подсветку синтаксиса и переход к определениям прямо в редакторе кода.
В графическом ядре дебютировали меш-шейдеры, заменяющие классические вершинные стадии вычислительными пайплайнами для генерации геометрии непосредственно силами видеочипа. Нововведение открывает возможности для рендеринга процедурной травы, вокселей и массивных систем частиц, однако пока не работает в веб-сборках и требует прямого обращения к низкоуровневым интерфейсам. Двухмерный конвейер при этом получил поддержку кастомных материалов для спрайтов и расширяемых шейдеров через трейт MaterialExtension2d, а сам бэкенд 2D-рендеринга объединили с трехмерной архитектурой.
Синтаксис системы сцен BSN подвергся масштабной чистке от лишнего бойлерплейта. Создатели убрали вспомогательные обертки компонентов, заменили скобки и запятые в списках на разделитель из двойного дефиса, а также добавили системное событие Ready, уведомляющее о завершении создания всей иерархии объектов. Скорость пакетного удаления сущностей через команду despawn_all выросла до 1.7 раза, а для выявления скрытых конфликтов в порядке выполнения систем появился специальный генератор случайного порядка расписания.
Набор интерфейсных компонентов Bevy Feathers расширился палитрами выбора цветов, выпадающими списками и числовыми полями с поддержкой перетаскивания курсором. Системные паники теперь перехватываются штатным обработчиком ошибок и не приводят к мгновенному падению программы, что особенно важно при длительной работе с редакторами.
В ближайшие планы команды входит перенос описания сцен BSN в отдельный дисковый формат с поддержкой горячей перезагрузки, трансформация игровых ресурсов в полноценные сущности архитектуры ECS, внедрение удаленного инспектора для мониторинга сущностей по сети и реализация вывода изображения с расширенным динамическим диапазоном HDR.
Источник: www.playground.ru