Интересный альтернативный подход к рендерингу реалистичных материалов заключается в использовании простых сферических карт окружения с предрассчитанной освещенностью (в ZBrush их называют matcap). Получается очень эффектно – а главное дешево!
dgl
Новый формат сцен
Оказалось, что нынешний формат, в котором хранятся модели для DGL, крайне неэффективен – меши хранятся в виде списка треугольников, и большие модели (1000 полигонов и более) загружаются движком неприлично долго. Сейчас экспериментирую с новым форматом, в котором данные хранятся в виде традиционных буферов вершин и индексов – как и следовало ожидать, любые модели теперь грузятся практически мгновенно.
Средства для загрузки нового формата в DGL и экспорта из Blender уже доступны в репозитории движка. Правда, я еще не определился с форматом хранения материалов – есть идея хранить вместе с моделью только базовые характеристики материала, которые можно получить из Blender (текстуры, цвета), а расширенные настройки, специфичные для DGL, загружать из отдельных внешних файлов с текстовым описанием.
Средства для загрузки нового формата в DGL и экспорта из Blender уже доступны в репозитории движка. Правда, я еще не определился с форматом хранения материалов – есть идея хранить вместе с моделью только базовые характеристики материала, которые можно получить из Blender (текстуры, цвета), а расширенные настройки, специфичные для DGL, загружать из отдельных внешних файлов с текстовым описанием.
Улучшенные тени
Удалось практически свести на нет пикселизацию мягких теней:
Все изменения в DGL, связанные с тенями, кстати, уже доступны в репозитории проекта.
Игровые движки на D
Ситуация с игровыми движками для D на сегодняшний день, к сожалению, далека от удовлетворительной. Проект Dash, гремевший год-два назад, сегодня практически не развивается, и это подтверждается не только отсутствием значимых коммитов в репозитории, но и словами самих авторов: “Unfortunately we aren’t doing much active development on Dash at this point, but we are still relatively quick at doing PRs and providing support”. Попытки портировать на D такие движки, как OGRE и Irrlicht, заглохли еще раньше – так же, как и проект по переписыванию на D2 движка Yage, который был достаточно популярен в эпоху D1.
Вот еще парочка проектов, которые проявляли активность в течение последних лет, но нынешняя актуальность которых вызывает сомнения:
- EncoXD – кроссплатформенный движок на основе SDL2 и OpenGL 3.2 со скриптингом на Lua и начальной поддержкой сети
- ZuzuStudio Game Engine – курсовая работа студентов из Минска. Курсачи редко перерастают во что-то более серьезное, так что особых надежд питать не стоит.
А что же актуальные проекты? Тут выбор невелик:
- Unecht – очень любопытный 3D-фреймворк. Работает на GLFW и OpenGL 3.3, поддерживает физику (ODE), OpenAssimp, FreeImage, FMOD, включает собственный редактор сцен
- DGL – моя скромная разработка, графический движок под Windows, Linux и OSX. Работает на SDL и OpenGL 1.2 (но большая часть функциональности основана на шейдерах и расширениях OpenGL). Нет встроенного редактора, зато есть экспортер сцен для Blender. DGL все еще находится на стадии рефакторинга: есть стабильная версия и экспериментальная ветка DGL/GC-free с ручным управлением памятью, шейдерной системой материалов и многими другими фичами, но некоторые возможности основной ветки до сих пор в нее не портированы – например, скелетная анимация.
Если вы разрабатываете свой игровой движок на D, сообщите в комментариях, и я дополню список.