Новости по Dagon 2

Разработка Dagon 2.0 началась в весьма бодром темпе. Deferred-рендер уже почти готов — остались только тени PSM и DPSM, поддержка локальных зондов освещения и forward-проход. Я добавил систему кэширования ресурсов, сжатие в BC7 (на основе компрессора bc7enc Рича Гелдриха) и проделал еще множество мелких улучшений на разных стадиях формирования кадра. Особое внимание я уделил тому, чтобы картинка соответствовала Eevee в Blender 5.

Что еще нового? Часть функциональности, которая в Dagon 1.0 существует в качестве расширений, теперь войдет в ядро — это физика на базе Jolt и загрузчик текстур в формате KTX/KTX2. Такое решение я принял исходя из полезности этих фич, простоты сборки Jolt и libktx из исходников и их автономности: они не имеют собственных зависимостей и отлично работают на всех платформах (в противовес тому же Newton, который имеет проблемы с работой некоторых функций под Linux). Наличие libktx «из коробки» дает серьезные преимущества и ставит Dagon 2 в авангард движкостроения; в будущем не исключен перевод текстурного кэша с DDS на KTX2.

Еще одним нововведением будет встроенная VM GScript3, которую я разработал в прошлом году. Движок при старте загружает скомпилированный байт-код скрипта и выполняет его, а скрипт, в свою очередь, навешивает обработчики событий, позволяя, таким образом, выполнять внешнюю логику без пересборки игры. Игра может экспонировать скриптовой системе свои данные и методы, что полезно для создания модов. Некоторые встроенные классы Dagon уже реализуют интерфейс GsObject и напрямую совместимы с GScript: это Entity, Scene, World, BaseGame.

Зарегистрирован пакет dagon2 в реестре DUB, так что начать пользоваться можно уже сейчас, несмотря на то, что разработка находится на ранней стадии.

Переезд сайтов на домене ru

В связи с тем, что в России для владельцев доменов в зонах ru/su/рф ввели обязательное подтверждение личности через Госуслуги, я решил отказаться от timurgafarov.ru и перенести все свои персональные ресурсы на домен pixperfect.online. Это касается следующих сайтов и страниц:

Также https://xtreme3d.ru переезжает на https://xtreme3d.org.

Редиректы со старых URL будут работать до сентября 2026 года.

Dagon 1.0

Рад сообщить, что наконец-то выпустил Dagon 1.0.0, первый стабильный релиз моего игрового движка! Это в основном исправляющий релиз, который подытоживает огромную работу над Dagon, которую я проделал за последние два года.

Исправлен баг с неправильным сэмплингом BRDF LUT, что ранее приводило к излишней яркости шероховатых поверхностей. Исправлен эффект тумана для точечных источников света.
Улучшена система частиц. Добавлено свойтсво Emitter.fadeInDuration для плавного появления частиц из прозрачности, а также Emitter.gravity для управления гравитацией частиц. Свойство Emitter.initialPositionRandomRadius теперь является вектором и называется Emitter.initialPositionRandomRadii — это радиус-вектор, позволяющий задать разброс случайного появления частиц отдельно по всем трем осям.
Добавлен новый тип событий CustomResize, который используется в тех случаях, когда пользовательский код должен обрабатывать кастомный ресайз вьюпорта (обычно это необходимо, если размер вьюпорта не привязан жестко к размеру окна и вычисляется другим способом). Также менеджер событий теперь обрабатывает SDL_WINDOWEVENT_CLOSE для грациозного закрытия игры при нажатии Alt+F4. Добавлен новый метод Application.isWindowMinimized.
Добавлен новый режим воспроизведения анимации для GLTFBlendedPosePlayMode.OnceAndStop. Он позволяет проиграть анимацию один раз и остановиться на последнем ключевом кадре. Добавлено новое свойство GLTFBlendedPose.timeScale для управления скоростью анимации.
Добавлено свойство Light.angularRadius, которое симулирует солнечный диск угловым радиусом распределения света.
Улучшен шейдер ночного неба StarfieldSkyShader: добавлены свойства sunEnergy (энергия светила), spaceColorZenith (цвет пространства в зените), spaceColorHorizon (цвет пространства на горизонте).
Добавлено новое свойство FirstPersonViewComponent.roll — поворот камеры от первого лица по оси Z для эффекта наклона головы вбок.
В расширении dagon:jolt добавлена поддержка convex cast (JoltPhysicsWorld.shapeCast). Контроллер персонажа JoltCharacterController теперь использует shapeCast в логике приседания (для проверки высоты потолка над головой). Как следствие, персонаж теперь автоматически приседает, чтобы избежать врезания головой в низкие потолки. Добавлен метод onGround, который возвращает true, если персонаж стоит на земле.
Исправлена компиляция расширения dagon:nuklear.