DagoBan возвращается! Игра, изначально написанная Mateusz Muszyński в целях демонстрации возможностей тулкита Nuklear в Dagon, недавно была портирована мной на актуальную версию движка. Сборку для Windows можно скачать здесь.
Напомню, DagoBan — это мини-клон Sokoban на D со встроенным редактором уровней.
Вышла новая версия движка Dagon. Главное нововведение в этом релизе — поддержка моделей в формате glTF (gltf+bin). glTF представляет собой текстовое описание трехмерной сцены на основе JSON, хранящее всю информацию, необходимую для ее отрисовки (граф, материалы, текстуры и т.д.). Главной особенностью glTF является лейаут, оптимизированный по скорости загрузки — для передачи в графические API данные из glTF практически не нужно декодировать или конвертировать, поэтому сцены загружаются очень быстро.
Также значительно улучшен загрузчик текстур в формате DDS. Список поддерживаемых пиксельных форматов расширился (в частности, 32- и 16-битными RGBA с плавающей запятой), появилась поддержка кубических карт и mip-уровней. К примеру, теперь стало возможно загружать кубические карты с предрассчитанными зеркальными лепестками (specular lobes) для разных уровней шероховатости. Декодирование неигровых форматов изображений (PNG, JPEG и др.) в Dagon теперь осуществляется при помощи библиотеки stb_image, что в разы ускорило загрузку ресурсов. Как бесплатный бонус — появилась поддержка формата PSD.
Добавлен новый эффект постобработки Depth of Field (расфокусированность) с реалистичным боке и настройками оптики. Исправлены некоторые баги постобработки и отложенных эффектов — в частности, устранен артефакт «черных точек».
На смену встроенному физическому движку dmech идет привязка к Newton Dynamics, реализованная как расширение dagon:newton (подключается к проекту как отдельная зависимость). Newton предоставляет отличный компромисс между производительностью и стабильностью симуляции, поддерживает все стандартные геометрические тела, а также поддержку физики для ландшафтов и произвольных объектов (автоматически генерирует выпуклые оболочки для мешей).
Декодирование некоторых форматов текстур (PNG, JPEG и др.) в Dagon теперь осуществляется при помощи библиотеки stb_image, что в разы ускорило загрузку игровых ресурсов. Как бесплатный бонус — появилась поддержка формата PSD.
Декодирование HDR и DDS по-прежнему основывается на функциях dlib.image. В будущем хочу также добавить декодер KTX, нового формата текстур от Khronos.
В следующей версии Dagon появится поддержка кубических карт в формате DDS. Чаще всего для кубических карт этот формат используется, если необходимо хранить предрассчитанные зеркальные лепестки (specular lobes) для разных уровней шероховатости — DDS позволяет хранить эти данные в mip-уровнях текстуры и быстро загружать их без промежуточного декодирования.
До этого единственным доступным вариантом была генерация mip-уровней в самом движке, но это делалось блочным фильтром, без учета BRDF. Теперь свертку карты окружения можно осуществлять при помощи внешних инструментов — я рекомендую, например, IBLBaker.
В Dagon 0.12 появится начальная поддержка glTF 2.0, популярного формата 3D-моделей от Khronos. На сегодняшний день готова загрузка мешей, текстур и, частично, материалов, на очереди — сцены и узлы, а в перспективе не исключена и поддержка анимации. Ниже — скриншоты дворца Спонца, загруженного из glTF.
Вышел Dagon 0.11.0. Движок был значительно улучшен, переработана структура модулей, практически полностью переписан рендер, исправлено множество проблем и узких мест производительности. Посмотреть движок в действии можно при помощи демки dagon-sandbox, а также на моем YouTube-канале. Также были дополнены уроки и примеры.
Вышли dlib 0.18, 0.19 и 0.20. У проекта появилась онлайн-документация, генерируемая из исходников при помощи Dub/ddox. В 2021 году dlib исполняется 10 лет!
За этот год мне удалось собрать донатов на сумму $172,10. Огромное спасибо всем, кто перечислил деньги! Часть средств пошла на покупку аппаратного обеспечения — в частности, SSD (3590 руб.), наушников (790 руб.), USB-разветвителя (790 руб.), разветвителя для аудио (45,95 руб.). Также был приобретен графический софт: ArtRage (2423,38 руб.) и Armor Paint (1205,78 руб.). На оплату хостинга, на котором размещен этот блог, ушло 1447 руб. Кроме того, был куплен домен timurgafarov.ru за 199 руб. Итого израсходовано 10491,11 руб.
Ну и, конечно, не могу не назвать самые значимые для меня события в мире CG, СПО и геймдева:
Выход Blender 2.90 — очень впечатлила новая опция режима редактирования, позволяющая автоматически смещать UV-координаты синхронно с изменением геометрии. В целом Blender 2.80+ в моем восприятии превратился в полноценно рабочий инструмент, я начал использовать его в коммерческих проектах.
Выход бесплатной версии Unigine. Скачал, заценил — есть множество интересных фич, в частности понравился live reloading моделей и текстур при их обновлении внешними приложениями. Не понравилось, однако, то, что редактор нельзя запустить без входа в аккаунт (возможно, есть какой-то оффлайн-режим — не искал).
Открытие исходников NeoAxis. Пока детально не изучал этот движок, но в целом выглядит привлекательно.
После полутора лет разработки вышла новая версия игрового движка Dagon. Релиз примечателен серьезным рефакторингом большинства компонентов, в первую очередь — системы рендеринга. Устранена сцепленность кода, теперь рендеринг логически отделен от остальной части движка, стало возможно написать свой собственный конвейер и подключить его к приложению. Улучшена производительность многих эффектов и шейдеров.
Из прочих крупных изменений отмечу следующие:
GUI на основе Nuklear, модуль шрифтов на основе Freetype, физический движок и загрузчик анимированных моделей IQM вынесены в расширения (субпакеты Dub), их нужно добавлять в зависимости отдельно (dagon:nuklear, dagon:ftfont). Это было сделано из-за трудностей у пользователей с установкой Nuklear под Linux.
Добавлена поддержка эффекта объемного рассеивания света (volumetric light scattering) для направленного источника. Это оптическое явление, возникающие в дисперсной среде, например, в тумане. Объекты, отбрасывающие тень, заслоняют собой свет и блокируют рассеивание, в результате чего в атмосфере образуются видимые лучи и неоднородности. В Dagon этот эффект основан на разновидности ray marching’а — теневая карта сэмплируется несколько раз вдоль луча в направлении взгляда из пикселя, результат нормируется и используется как коэффициент фазовой функции Хеньи-Гринштейна.
Добавлена поддержка файлов DDS для текстур. Поддерживаются форматы сжатия S3TC (DXT1/BC1, DXT3/BC2, DXT5/BC3), RGTC (BC4, BC5), BPTC (BC6H, BC7).
Добавлен новый оператор тональной компрессии Tonemapper.Filmic, близкий к тому, что используется в Blender/Eevee.