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.

Освещение частиц

Работаю над освещением частиц:

Используется процедурная сферическая карта нормалей — то есть, каждый биллборд системы частиц интерпретируется пиксельным шейдером как виртуальная сфера. Планируются и пользовательские карты нормалей.

Тени от частиц

Добавил поддержку теней от частиц:

Реализовано путем отброса пикселей с прозрачностью ниже порогового значения при рендеринге частиц в теневую карту. Конечно, такая техника не позволяет рендерить прозрачные тени от дыма, но и такой результат все же лучше, чем полное отсутствие теней или, тем более, тени в виде квадратиков.

Dagon 0.2.0

Выпустил новую версию Dagon — 0.2.0. Релиз включает изменения, сделанные в рамках демы с автомобильной физикой и различных других примеров, а именно:

  • Система частиц с поддержкой векторных полей
  • Шейдерный бэкенд для материалов
  • Экспериментальная поддержка теневых карт
  • Демонстрационный пример Dagon также обновлен — в сцену с механикой от первого лица добавлены тени.
Также скоро в основную ветку будет внесена система постобработки и поддержка сглаживания FXAA. Следующим шагом будет реализация PBR-бэкенда и поддержки формата DGL3, а затем на Dagon можно будет портировать Atrium.
Скачать демку Dagon 0.2.0 для Windows и Linux можно тут.