На днях вышла новая версия движка! Как я уже писал ранее, в этой версии все загрузчики ресурсов в Dagon используют единую виртуальную файловую систему — Application.vfs
. В связи с этим класс VirtualFileSystem
был значительно актуализирован и расширен. В частности, теперь движок из коробки поддерживает загрузку ресурсов из папки с данными (C:\Users\AppData\Roaming\<appDataFolder>
под Windows, где <appDataFolder>
— кастомное имя папки, которое указывается при создании приложения Dagon). Кроме того, главный конфиг приложения (ранее Game.config
) переехал в класс Application
. Появился новый метод Application.showConsoleWindow
для переключения видимости окна консоли под Windows.
В EventManager
наконец-то доведена до ума проверка однократного нажатия и отпускания клавиш/кнопок мыши/кнопок контроллера (EventManager.keyDown
, EventManager.keyUp
и т.д.). Эта функциональность добавляет небольшой оверхед, поэтому она по умолчанию отключена — нужно ее включать свойством EventManager.trackUpDownState
. Как следствие, InputManager.getButtonUp
и InputManager.getButtonDown
теперь также работают корректно. Добавлено свойство EventManager.application
, чтобы можно было получить доступ к объекту приложения из менеджера событий.
Добавлен новый аппаратно-ускоряемый генератор кубических карт — функция dagon.graphics.texproc.generateCubemap
, эффективная замена методу Texture.createFromEquirectangularMap
. Эта функция конвертирует равнопромежуточные карты окружения в кубические, что позволяет избежать некоторых неприятных артефактов первых. Благодаря переносу на GPU, теперь эта процедура выполняется очень быстро. Данный компонент будет развиваться и дальше — в следующих версиях будет поддержка префильтрации, о которой я писал в предыдущем посте.
Предрассчитанная таблица BRDF LUT теперь поставляется вместе с движком в папке data/__internal/textures/brdf.dds. Эта текстура загружается автоматически и доступна как DeferredRenderer.brdf
. В случае использования отложенного рендера, рекомендуется активировать ее следующим образом:
environment.ambientBRDF = game.deferredRenderer.brdf;
Это нужно для физически обоснованного расчета зеркальных отражений от карты окружения. Таблица хранит значения функции Смита для различных сочетаний шероховатости и углов падения.
GLTFPose
и GLTFBlendedPose
теперь обновляют матрицы трансформации объектов Entity
, ассоциированных с костями glTF. Это позволяет, например, использовать Entity.positionAbsolute
для получения позиции кости в мировом пространстве.
Добавлен новый модуль dagon.extra.verlet
с реализацией position-based динамики для симуляции веревок и цепей.