Итоги 2021 года

Близится конец года, и это значит, что наступило время для традиционного подведения итогов. В наступающем 2022 году мой блог о разработке игр отмечает 10-летний юбилей!

  • Вышел Dagon 0.12. В новой версии добавлена начальная поддержка моделей формата glTF, поддержка кубических карт формата DDS, новый постэффект глубины резкости (Depth of Field). Изображения теперь декодируются при помощи stb_image, что сильно ускорило загрузку текстур. Старый физический движок dmech был заменен на Newton Dynamics. У меня еще много планов по движку: в первую очередь, хочу переделать систему загрузки текстур и реализовать поддержку KTX. В перспективе интересно было бы перенести Dagon на WebGPU, хотя об этом говорить пока рановато.
  • Вышли dlib 0.21, 0.22, 0.23. Это, в основном, исправляющие релизы. dlib приближается к релизу первой стабильной версии. Также я начал планировать архитектуру dlib 2.0.
  • Я окончательно перешел с Travis CI на GitHub Actions для тестирования моих проектов.
  • Я написал три новые статьи на Medium: dlib: Past, Present and Future, GitHub Actions and D, WebGPU is the Future of Graphics Development, in D as Well.
  • Журнал “FPS” был превращен в онлайн-издание. Было опубликовано много новых статей, продолжается разработка CMS, улучшается дизайн сайта. Возрождена группа журнала ВКонтакте.
  • За этот год мне удалось собрать донатов на сумму $165 (вышло чуть меньше, чем в 2020 году). Огромное спасибо всем, кто перечислил деньги! Эти средства частично покрыли затраты на покупку аппаратного обеспечения – в частности, нового системного блока HP Pavillion. На оплату хостинга и домена для сайта timurgafarov.ru ушло 2497 ₽. Итого (с учетом остатка с прошлого года) израсходовано 14337 ₽.

Ну и, конечно, не могу не назвать самые значимые для меня события в мире CG, СПО и геймдева:

  • Выход Blender 3.0. Очень впечатлил новый удобный браузер ресурсов
  • Поглощение Sketchfab и ArtStation компанией Epic Games
  • Выход Open 3D Engine, свободного движка на основе Amazon Lumberyard
  • WGSL – новый шейдерный язык, разрабатывающийся как часть стандарта WebGPU
  • Анонс Unreal Engine 5.

PSX

Не все, наверное, знают, что я изучал разработку под PlayStation – с этой приставкой у меня связано множество ностальгических воспоминаний. Все началось в середине нулевых, в годы повального увлечения эмуляцией ретро-консолей – тогда появился свободный SDK MIPS-GCC с библиотеками от Blade, на основе которого энтузиасты создали PsOne Development Studio. К сожалению, этот SDK имел довольно ограниченные возможности – например, не поддерживал чтение файлов с CD, что мешало создавать на нем что-то серьезное.

По счастью, в какой-то момент в Сети появился оригинальный SDK, который использовался для разработки некоторыми студиями в 90-х – PsyQ от SN Systems Ltd и Psygnosis. Это полнофункциональный SDK, предоставляющий доступ ко всем возможностям приставки, а также содержащий подробную документацию. В процессе изучения PsyQ я накопил достаточно много всяких полезных штук и решил, в итоге, сделать для них небольшую страничку: https://psxdev.xtreme3d.ru.

Пока на сайте есть лишь архив утилит и документации – в скором времени планирую выложить также свои примеры и демки.

Dagon 0.12

Вышла новая версия движка 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 предоставляет отличный компромисс между производительностью и стабильностью симуляции, поддерживает все стандартные геометрические тела, а также поддержку физики для ландшафтов и произвольных объектов (автоматически генерирует выпуклые оболочки для мешей).

Dagon теперь использует SDL 2.0.14.

Dagon и EARenderer

На YouTube появилось видео со сравнением двух рендер-движков, для D и C++ – Dagon и EARenderer.

Новые скриншоты

Еще несколько скриншотов будущего Dagon 0.12:

(далее…)