Dagon
Dagon – это мой движок для разработки 3D-игр, основанный на OpenGL 4.0 и SDL2. Полный список возможностей и особенностей см. ниже.
Сайт проекта: https://gecko0307.github.io/dagon
Исходники: https://github.com/gecko0307/dagon
Демонстрационное приложение: https://github.com/gecko0307/dagon-sandbox
Если вы заинтересованы в развитии этого проекта, поддержите его на Patreon: https://www.patreon.com/gecko0307, либо сделайте разовое пожертвование криптовалютой через NOWPayments. Все, кто пожертвует $10 и выше, будут перечислены в списке спонсоров на этой странице, в репозитории Dagon, а также на сайте движка. Заранее благодарен!
Спонсоры проекта: Daniel Laburthe, Rafał Ziemniewski, Kumar Sookram, Александр Ковалев, Robert Georges, Jan Jurzitza (WebFreak), Раис Сафиуллин (SARFEX), Benas Cernevicius, Koichi Takio, Константин Меньшиков. Огромное спасибо за вашу поддержку!
Отдельное спасибо контрибьюторам 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, начальная поддержка glTF 2.0.
- Поддержка текстур в форматах PNG, JPG, TGA, BMP, HDR, DDS. Для DDS поддерживаются форматы сжатия S3TC, RGTC, BPTC, ASTC.
- HDR-рендеринг с поддержкой операторов тональной компрессии ACES, Filmic, Uncharted, Reinhard, Unreal.
- Отложенный рендеринг с использованием прокси-геометрии (световых объемов). Неограниченное (fillrate-bound) количество точечных/объемных источников света. Прозрачные объекты рендерятся в прямом режиме поверх непрозрачной геометрии, пока без учета точечных источников света.
- Сферические и трубчатые объемные источники света.
- Направленные и конусные источники света.
- Каскадные теневые карты (cascaded shadow maps) для направленных источников света, поддержка мягких теней (PCF).
- Эффект объемных лучей (volumetric light) для направленного света.
- Normal mapping, parallax mapping, parallax occlusion mapping.
- PBR (roughness/metallic workflow), GGX BRDF.
- IBL при помощи кубических и равнопромежуточных HDR-карт окружения. Загрузка кубических карт из файлов DDS.
- Отложенные декали с поддержкой PBR.
- Процедурное динамическое небо с солнцем по модели Рэлея.
- Рендеринг ландшафтов с поддержкой шума OpenSimplex для карт высот.
- Система частиц с поддержкой векторных полей, мягкие частицы, освещаемые частицы, тени от частиц.
- Постобработка, встроенные фильтры SSAO, FXAA, Motion Blur, Glow, Lens Distortion, Color Grading, цветокоррекция на основе 3D-таблиц Hald CLUT.
- Рендеринг текста в кодировке UTF-8 с использованием TTF-шрифтов.
- Модель сущностей и компонентов (entity-component), позволяющая расширять функциональность объектов динамически, без наследования классов.
- Система событий.
- Файлы конфигурации.
- Встроенная логика для камеры от первого лица (first person view) и свободного просмотра сцены (freeview).
- Поддержка GUI при помощи тулкитов ImGui и Nuklear.
- Физика на основе движка Newton Dynamics.
Игры и приложения, сделанные при помощи Dagon:
- DagoBan – клон Sokoban
- Dagon-shooter – скроллинг шутер в разработке
- sacengine – свободная реализация движка игры Sacrifice.
Примеры:
- Коллекция базовых примеров
- Сцена Sponza
- Проверка столкновений с ландшафтом
- Управление от третьего лица
- Физика автомобиля
- Физика веревки (интегрирование Верле)
- 3D-звук
Публикации о движке:
- В рамках доклада “The D Programming Language for Modern Open Source Development” / Mike Shah (Northeastern University KCCSFP, USA) / FOSDEM ’24 (Брюссель, 2024) / с. 42-43
- “Графическим движком казанского художника пользуются гейм-разработчики всего мира” / Ольга Юхновская, “Вечерняя Казань”, 2024