Система освещения в DGL

В графическом движке DGL реализована новая система освещения, поддерживающая неограниченное количество динамических источников света. При этом она работает даже на старых видеокартах, не поддерживающих программируемый конвейер.
Метод основан на рендеринге каждого объекта с учетом лишь нескольких ближайших источников света (в связи с ограничениями OpenGL – не более 8 штук на объект; на практике редко бывает нужно более 3-5). Движок сортирует источники света в порядке убывания яркости относительно текущего объекта, выбирает наиболее яркие и обновляет соответствующим образом контекст OpenGL.

На скриншоте показан пример использования этой системы в сцене со 100 источниками света и >100 объектами.

Обновление Atrium

Доступна новая демонстрация проекта Atrium:

  • В игру интегрирован физический движок dmech в его актуальном состоянии
  • Проект теперь использует графический движок DGL
  • Готова модель гравитационного излучателя с эффектом электрического разряда
  • Добавлен HUD, который отображается на дисплее внутри шлема. Забрало шлема можно открывать и закрывать (планируется сделать локации в вакууме, проходить которые можно только с закрытым забралом)
  • Идет работа над первой игровой локацией.

Скачать:
atrium-demo-03122014-windows.zip 
atrium-demo-03122014-linux.tar.gz 

Итоги года

Вот и пролетел еще один год – самое время подводить итоги по проделанной работе!

  • Вышли подряд нескольно новых версий dlib (0.3 и 0.4). Появилась поддержка абстрактных потоков ввода/вывода, а также платформонезависимый интерфейс файловой системы и его реализации для Windows и POSIX. Пакет обработки изображений теперь поддерживает JPEG, TGA и BMP, распараллеливание, HDRI. В пакете линейной алгебры состоялся серьезный рефакторинг матриц, появилась поддержка инверсии через LU-разложение.
  • Было выпущено 6 номеров электронно-познавательного журнала “FPS” (№№ 28, 29, 30, 31, 32, 33). Появился новый сайт проекта (http://fps-magazine.cf). Также “FPS” теперь доступен в качестве мобильного приложения для Android и iOS. Кстати, в феврале 2015 года журналу исполняется уже 7 лет!
  • Вышла игра 2048х2 – клон 2048 для двух игроков.
  • Улучшен физический движок dmech: реализован новый кэш контактов, добавлена поддержка составных тел, улучшена поддержка ограничений, добавлены статические тримеши, поддержка raycast и игровой кинематики.
  • Графический движок Atrium теперь развивается как самостоятельный проект – DGL. Это объектно-ориентированная надстройка над OpenGL, SDL и Freetype с собственной системой событий, виртуальной файловой системой с поддержкой ZIP-архивов, своим форматом хранения сцен, поддержкой шейдеров, мультитекстурирования, скелетной анимации, выводом текста в UTF-8, а также встроенными средствами интернационализации.
  • Разработан скриптовый язык GScript – минималистичный императивный язык с динамической типизацией, идейно близкий к D, JavaScript и Python. GScript можно будет использовать в качестве скриптовой системы в игровых движках.
  • Вышла новая версия системы сборки проектов Cook 2.0.1 – с новой системой аргументов командной строки, обновленным парсером импортов, поддержкой внешних зависимостей (в том числе из Git-репозиториев), улучшенной системой конфигурации.
  • Обновилась страница проекта Atrium.

Поддержка JPEG в dlib

Коллекция библиотек dlib обзавелась начальной поддержкой декодирования формата JPEG (dlib.image.io.jpeg). Пока поддерживается только baseline-часть стандарта, декодер читает только изображения с прореживанием 4:2:0 и не загружает метаданные EXIF (эти ограничения постепенно будут исправлены). Как и другие декодеры графических форматов в dlib, модуль работает на основе абстрактных потоков ввода/вывода (dlib.core.stream).
Поддержка сохранения в JPEG в ближайшем будущем не планируется.

Поддержка IQM в DGL

Графический движок DGL обзавелся поддержкой Inter-Quake Model (IQM) – свободного формата для хранения 3D-моделей со скелетной анимацией.

IQM спроектирован в качестве замены MD5 известным разработчиком Ли Сальцманом, лидером проектов Sauerbraten, Tesseract и ENet. В настоящее время формат используется многими свободными играми и движками, в том числе Sauerbraten, DarkPlaces, Alien Arena, Xonotic и Warsow.

Формат бинарный, не привязан к какому-либо движку или графической технологии, легко читается и записывается. Существует полнофункциональный экспортер в IQM для Blender, что делает этот формат идеальным выбором для открытых игровых проектов.