Итоги 2020 года

Близится конец года, и это значит, что наступило время для традиционного подведения итогов по проектам.

  • У меня появился домен для личного бренда https://timurgafarov.ru, и, соответственно, блог переехал на новый адрес: https://gamedev.timurgafarov.ru.
  • Вышел Dagon 0.11.0. Движок был значительно улучшен, переработана структура модулей, практически полностью переписан рендер, исправлено множество проблем и узких мест производительности. Посмотреть движок в действии можно при помощи демки dagon-sandbox, а также на моем YouTube-канале. Также были дополнены уроки и примеры.
  • Вышли dlib 0.18, 0.19 и 0.20. У проекта появилась онлайн-документация, генерируемая из исходников при помощи Dub/ddox. В 2021 году dlib исполняется 10 лет!
  • Я опубликовал две новые статьи по D на Medium: Getting started with D и Const-correctness in D, а также небольшую вводную статью по WebGPU на CGWorld.
  • За этот год мне удалось собрать донатов на сумму $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. Пока детально не изучал этот движок, но в целом выглядит привлекательно.
  • Форк Dev-C++ от Embarcadero. До сих пор иногда пользуюсь этой IDE, поэтому новость для меня позитивная.

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/. Старый адрес в ближайшем будущем сохранится, но будет перенаправлять на новый.

С Новым годом!

Поздравляю всех читателей блога с наступившим 2020 годом! Желаю творческих успехов всем авторам и долгих лет жизни всем интересным проектам!

В качестве небольшого подарка – обновленная версия демки dagon-sandbox, которую теперь можно скомпилировать в “зимнем” режиме (version = Winter)