Шейдерные эффекты в Dagon

Работаю над убер-шейдером и тенями, а также сделал постобработку, добавил FXAA, SSAO и хроматическую аберрацию:

Dagon 0.2.0

Выпустил новую версию Dagon – 0.2.0. Релиз включает изменения, сделанные в рамках демы с автомобильной физикой и различных других примеров, а именно:

  • Система частиц с поддержкой векторных полей
  • Шейдерный бэкенд для материалов
  • Экспериментальная поддержка теневых карт
  • Демонстрационный пример Dagon также обновлен – в сцену с механикой от первого лица добавлены тени.
Также скоро в основную ветку будет внесена система постобработки и поддержка сглаживания FXAA. Следующим шагом будет реализация PBR-бэкенда и поддержки формата DGL3, а затем на Dagon можно будет портировать Atrium.
Скачать демку Dagon 0.2.0 для Windows и Linux можно тут.

Физика автомобиля на D

Давно мечтал написать собственный автосимулятор, хотя бы простенький. Насколько я знаю, на D ничего подобного никто еще не делал, и вот вам proof-of-concept: с использованием dmech можно реализовать вполне сносную физику автомобиля с моделированием колес и подвески на основе лучей (raycast car).

Я, впрочем, не планирую создание полноценной гоночной игры, поэтому не стал моделировать реальные характеристики двигателя, тормозов и т.д. – автомобиль движется под действием двух сил на каждое колесо, продольной и боковой, основанных на взятых “с потолка” константах. В принципе, ничто не мешает сделать точные расчеты этих сил.

Демка использует модифицированную версию dmech, а также Dagon в качестве графического движка (опять-таки с модификациями, которые совсем скоро войдут в основной репозиторий – к примеру, реализованы тени и шейдерный бэкенд для материалов). Все зависимости включены в архив, кроме dlib 0.11.1. Прилагается сборка для Windows. Можете использовать демку в своих проектах (код доступен под лицензией Boost).

Скачать (9,65 Мб)

Текущий статус и планы по проекту Dagon

Ненадолго получив доступ к Windows-машине, я наконец-то собрал под ней Dagon. К сожалению, большую часть времени сейчас мне приходится работать под старым железом, поэтому работа над движком продвигается медленнее, чем хотелось бы. Надеюсь, что этим летом у меня будет возможность довести его до ума и продолжить работу над Atrium. В первую очередь, планирую написать шейдерный бэкенд для системы материалов и загрузчик файлов формата DGL. Также будет поддержка FXAA, SSAO, CSM, DoF, Motion Blur.

Демки Dagon переместились в отдельный репозиторий: https://github.com/gecko0307/dagon-demo. Теперь это всего одно приложение, включающее несколько сцен и меню для переключения между ними. Появилась новая демка с реализацией системы частиц, которая, надеюсь, скоро станет частью движка. Система включает очень быстрый отрисовщик биллбордов для частиц, поддерживает стандартные векторные поля (аттрактор, дефлектор, “черная дыра”, вихрь) и позволяет добавлять новые.

Dagon

Прошу читателей этого блога извинить меня за редкие посты. Более полугода я не отчитывался по работе над Atrium – спешу заверить, что проект не похоронен, прогресс понемногу идет, просто чуть медленнее, чем хотелось бы. Последние несколько месяцев я был занят дипломной работой в институте, поэтому свободного времени для геймдева было крайне мало.

Те, кто следит за моей активностью на GitHub, могли заметить, что у меня появился новый репозиторий dagon – проект, который позиционируется как новая эволюционная ступень DGL. В процессе работы над Atrium я пришел к выводу, что в движке не хватает средств автоматизации некоторых рутинных задач. Например, управление памятью в типичном игровом приложении может быть почти полностью автоматизировано, поскольку выделение и высвобождение памяти происходит в специально задуманных паузах, таких как переключение между локациями (это не относится к играм с открытым миром с фоновой подгрузкой, но это уже специфический случай). Кроме того, в обсуждении на Reddit звучал вопрос, почему DGL не использует SDL2. Так родилась новая ветка движка, которую я решил сделать отдельным экспериментальным проектом.

На сегодняшний день Dagon включает следующие возможности:

  • Использование SDL2
  • Новая модель памяти на основе концепции владельца (owner), позаимствованной из Delphi
  • Модель образцов и компонентов (entity-component), позволяющая расширять функциональность объектов динамически, без наследования классов
  • Динамическая перезагрузка ресурсов при их модификации сторонним приложением без перезапуска игры
  • Поддержка форматов OBJ и IQM
  • Поддержка текстур PNG, JPG, TGA, BMP
  • Поддержка контейнера Box для ресурсов
  • Новая система материалов с разделением на фронтенд (набор параметров) и бэкенд (передатчик параметров графическому конвейеру – фиксированному или шейдерному, в зависимости от выбранной реализации бэкенда). Система позволяет использовать как стандартные материалы с известным набором параметров, так и создавать свои, специализированные
  • Некоторые компоненты, напрямую портированные из DGL – например, система событий, система освещения, рендеринг текста.
Как только будет дописана система материалов и поддержка формата DGL3, я начну портировать Atrium на новый движок.