dagon
Новый рендер в Dagon
В следующей версии движка, 0.11, будут полностью переписаны рендер и система постобработки, а также изменена структура модулей. Как следствие, Dagon потеряет совместимость со старыми проектами, но зато появится возможность практически не ограниченного расширения движка путем создания пользовательских графических конвейеров. Новая версия Dagon разрабатывается в ветке dagon-ng.
Из уже реализованных возможностей можно отметить почти готовый отложенный рендер с оптимизациями производительности и расхода памяти (например, больше не используется буфер позиций, позиции вычисляются на основе буфера глубины). Стало возможным изменение разрешения окна/вьюпорта в процессе работы приложения. Кроме того, был улучшен сэмплинг карты окружения — используется нелинейная зависимость mip-уровня от шероховатости, реализованная по методу, предложенному Морганом Макгуайром, что повысило реалистичность материалов с низкой и средней шероховатостью:
Экранное затенение среды (SSAO) было вынесено в отдельный буфер, что позволяет использовать данные о затенении на разных этапах конвейера. Был добавлен денойзер, благодаря которому удается рендерить SSAO без шума с небольшим количеством сэмплов:
Демку новой ветки Dagon с функциями редактора можно найти тут.
Dagon 0.10.0 и dlib 0.16.0
Вышли новые версии движка Dagon и библиотеки dlib — 0.10.0 и 0.16.0 соответственно. Релиз Dagon один из самых крупных за всю историю проекта: он содержит 226 коммитов и труд четырех разработчиков (Тимур Гафаров, Mateusz Muszyński, Rafał Ziemniewski, dayllenger). Вот краткий список изменений:
- Рендеринг ландшафтов, в том числе процедурных с использованием шума OpenSimplex.
- Интеграция GUI-тулкита Nuklear.
- Поддержка декалей для статических поверхностей.
- Поддержка трубчатых источников света (tube area light) и «фонариков» (spot light).
- Поддержка кубических карт.
- Улучшенный HDR glow.
- Множество новых функций для объектов Entity.
- Поддержка твинов (tween) для анимации перемещения, поворота и масштаба объектов. Встроенный набор функций изинга включает linear, quad, back, bounce.
- Улучшенный таймер.
- Система конфигурации приложений.
- Менеджер ввода (InputManager), позволяющий настраивать конфигурации клавиатуры и устройств ввода.
- Поддержка отладочных сообщений от видеодрайвера (при помощи OpenGL-расширения GL_KHR_debug).
Полный список изменений смотрите на странице релиза. Также было обновлено и демонстрационное приложение.
Напоминаю: если вы заинтересованы в развитии этого проекта, то можете поддержать его на Patreon: https://www.patreon.com/gecko0307. Вы также можете сделать разовое пожертвование через PayPal: https://www.paypal.me/tgafarov. Заранее благодарен!
Шейдер ландшафта и декали
Наконец-то добавил в Dagon специализированный материал для объекта Terrain — 4-канальный шейдер ландшафта, поддерживающий карты нормалей.
До этого также появилась поддержка отложенного рендеринга декалей (deferred decals) — текстур, проецируемых на статические объекты. При помощи декалей можно сделать на поверхностях различные следы, пятна, надписи, граффити, мелкий мусор и т.д. Для декалей поддерживаются карты нормалей, PBR и излучения света, так что они позволяют разнообразить сцену с высокой степенью реалистичности. Реализованы они путем блиттинга текстур в G-буфер — таким образом, декали могут быть отрисованы поверх уже отрендеренной геометрии с возможность смешивания цвета, нормалей и других атрибутов поверхности по альфа-маске. В демо-приложении Dagon декали используются для рендеринга следов игрока на земле:
Nuklear — GUI для Dagon
Отличные новости: стараниями Mateusz Muszyński aka Timu5 в Dagon был интегрирован Nuklear — тулкит для построения графических интерфейсов и рендеринга 2D-графики! Теперь на движке стало проще создать редактор, а то и вовсе написать 2D-игру, что и было сделано: на основе dagon.ui.nuklear был написан клон Sokoban с редактором уровней.
BindBC-биндинг Nuklear вы можете найти тут.
Также я работаю над поддержкой декалей и твининга, но об этом еще напишу подробнее в другой раз.
Кубические текстуры
Добавил в движок поддержку кубческих текстур для рендеринга отражений и простейшего GI. Также возможна конвертация равнопромежуточных карт окружения в кубические текстуры по методу, описанному мной в статье на LHS.
На скриншотах показано, как меняется отражение на металле при смене освещенности сцены.
Ландшафт
Стараниями Rafał Ziemniewski в Dagon была реализована базовая поддержка процедурных ландшафтов — загружаемых из карты высот, либо генерируемых шумом OpenSimplex. Надеюсь вскоре добавить проверку столкновений с ландшафтом и специализированный шейдер для него.
Итоги 2018 года
- 2018-й ознаменовался множеством значительных улучшений в движке Dagon. Самые важные из них включают переход на OpenGL 4.0, HDR, отложенный рендеринг, новую систему шейдеров, поддержку карт окружения, улучшенные частицы, новые эффекты пост-обработки (SSAO, HDR glow, motion blur, хроматическая аберрация, улучшенный color grading), экспорт сцен из Blender. Также была улучшена поддержка джойстиков и реализована поддержка рулей.
- Я написал цикл уроков по базовым возможностям Dagon и открыл англоязычный блог на Medium.
- Вышло три релиза коллекции библиотек dlib — 0.13.0, 0.14.0, 0.15.0.
- Я запустил краудфандинг своих проектов на Patreon и начал продавать 3D-модели на CGTrader.
- На сайте LightHouse Software вышли две мои статьи по D — «Преобразование карт окружения при помощи dlib», «Музыкальный D: синтезатор в 100 строк».
Ну и, конечно, не могу не назвать самые значимые для меня события в мире CG, СПО и геймдева:
- Прекращение поддержки OpenGL на macOS.
- Покупка GitHub корпорацией Microsoft.
- Открытие исходников PhysX под свободной лицензией.
- Появление поддержки WebAssembly в компиляторе LDC, включение фронтенда D в GCC, портирование бэкенда DMD на D, отвязывание всех компиляторов D от линкера MSVS при сборке 64-битных приложений. Инструменты развиваются, язык не стоит на месте, и все это, конечно, не может не радовать.
- Выход BindBC, нового биндинг-фреймворка от автора Derelict (я стал одним из первых его пользователей).
- Выход бета-версии Blender 2.80. Очень впечатлили возможности Eevee, но слегка разочаровал отказ от BGE — я-то надеялся, что игровой движок, напротив, будет улучшен и интегрирован с Eevee.
- Бесплатный релиз движка Armory. Давно и с большим интересом слежу за этим проектом, хотя и не собираюсь отказываться от Dagon в пользу чего-то стороннего.
- Krita 4.0 и GIMP 2.10.
- RTX от NVIDIA — трассировка лучей на GPU с игровой производительностью — и, соответственно, выход первых потребительских видеокарт с полной поддержкой этой технологии (линейка GeForce RTX 2080 на базе архитектуры Turing)
- C&D-письмо автору Spyro: Myths Awaken. Нападки корпораций на фанатское творчество не прекращаются, и это печально.
Tube area lights
Добавил в Dagon поддержку трубчатых источников света (tube area lights) по методу, описанному тут. На скриншотах показаны блики от трубок на поверхностях с разной шероховатостью, а также рельефом.