Dagon 0.11.0

После полутора лет разработки вышла новая версия игрового движка 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.

Dagon vs Eevee

В грядущем Dagon 0.11 будет поддерживаться дополнительный метод тональной компрессии схожий по результату с тем, что используется в Blender 2.8 (Filmic View Transform). Ниже — сравнение рендеров Eevee в Blender 2.82 и Dagon на примере сцены со шлемом из коллекции примеров glTF. Моя картинка чуть более контрастна, но зато нет «передержаных» бликов.

Новый домен

Я переношу все свои личные проекты на домен timurgafarov.ru, так что блог отныне будет доступен как https://gamedev.timurgafarov.ru/. Старый адрес в ближайшем будущем сохранится, но будет перенаправлять на новый.