Dagon

Dagon - это мой движок для разработки 3D-игр, основанный на OpenGL 4.0 и SDL2. Полный список возможностей и особенностей см. ниже.

Сайт проекта:
https://gecko0307.github.io/dagon

Исходники стабильной версии:
https://github.com/gecko0307/dagon

Development-ветка:
https://github.com/gecko0307/dagon/tree/dagon-ng

Демонстрационное приложение:
https://github.com/gecko0307/dagon-demo

Если вы заинтересованы в развитии этого проекта, поддержите его на Patreon: https://www.patreon.com/gecko0307. Все, кто пожертвует $10 и выше, будут перечислены в списке спонсоров на этой странице, в репозитории Dagon, а также на сайте движка. Вы также можете сделать разовое пожертвование через PayPal: https://www.paypal.me/tgafarov. Заранее благодарен!

Спонсоры проекта: Rafał Ziemniewski, Kumar Sookram, Александр Ковалев, Robert Georges, Jan Jurzitza (WebFreak), Раис Сафиуллин (SARFEX). Огромное спасибо за вашу поддержку!

Отдельное спасибо контрибьюторам Rafał Ziemniewski, Mateusz Muszyński, Björn Roberg, dayllenger, my-ijet, а также Lawrence Aberba, Andrey Penechko, Elias Batek, aferust, enjoysmath за багрепорты и полезные идеи.


На сегодняшний день Dagon включает следующие особенности и возможности:
  • Использование OpenGL 4.0 и SDL2.
  • Поддержка форматов моделей OBJ и IQM.
  • Собственный формат сцен *.asset с экспортером для Blender. Используется для хранения мешей, объектов, материалов и текстур.
  • Поддержка текстур PNG, JPG, TGA, BMP, HDR.
  • Поддержка контейнера Box для ресурсов. Это простой несжатый архив, альтернатива TAR с использованием UTF-8 для имен файлов.
  • Скелетная анимация.
  • HDR-рендеринг с поддержкой автоматической экспозиции и операторов тональной компрессии ACES, Hable/Uncharted, Reinhard.
  • Отложенный рендеринг с использованием прокси-геометрии (световых объемов). Прозрачные объекты рендерятся в прямом режиме поверх непрозрачной геометрии, пока без учета точечных источников света.
  • Неограниченное (fillrate-bound) количество точечных/объемных источников света.
  • Сферические и трубчатые объемные источники света. 
  • Направленные и конусные источники света.
  • Каскадные теневые карты (cascaded shadow maps) для направленных источников света, поддержка мягких теней (PCF).
  • Normal mapping, parallax mapping, parallax occlusion mapping.
  • PBR (roughness/metallic workflow), Cook-Torrance BRDF.
  • Декали.
  • Процедурное динамическое небо с солнцем по модели Рэлея.
  • Рендеринг ландшафтов с поддержкой шума OpenSimplex для карт высот.
  • HDR-карты окружения (кубические и равнопромежуточные), рендеринг сцены в кубическую текстуру.
  • Система частиц с поддержкой векторных полей, мягкие частицы, освещаемые частицы, тени от частиц.
  • Постобработка, встроенные фильтры SSAO, FXAA, Motion Blur, Glow, Lens Distortion, Color Grading.
  • Рендеринг текста в кодировке UTF-8 с использованием TTF-шрифтов.
  • Модель управления памятью на основе концепции владельца (owner), позаимствованной из Delphi. Любой объект может принадлежать другому: когда удаляется объект-владелец, удаляются и все принадлежащие ему объекты.
  • Менеджер сцен. Каждая сцена - это отдельная сущность со своим набором объектов и ресурсов, логическим контекстом, параметрами графического конвейера и т.д.
  • Модель сущностей и компонентов (entity-component), позволяющая расширять функциональность объектов динамически, без наследования классов
  • Контроллер - абстракция, позволяющая гибко управлять трансформацией сущностей. Например, можно создать контроллер твердого тела, чтобы синхронизировать сущность с телом в физическом движке, либо контроллер персонажа, позволяющий двигать сущность по законам кинематики.
  • Динамическая перезагрузка ресурсов при их модификации сторонним приложением без перезапуска игры. 
  • Система событий. 
  • Файлы конфигурации.
  • Встроенная логика для камеры от первого лица (first person view) и свободного просмотра сцены (freeview). 
    Игры и приложения, сделанные при помощи Dagon:

    2 комментария: