Dagon 0.5.0

Портирование Dagon на OpenGL 3.3 наконец-то завершено — я решил ознаменовать это новым релизом. В данной версии, помимо общего рефакторинга многих компонентов движка, улучшены встроенные шейдеры, стабилизирован движок кластерного освещения, добавлены сферические источники света. Dagon все еще не вполне готов для перевода на него Atrium, но работа проведена колоссальная, и цель уже близка.

В ближайшее время ждите обновленную демку.

Ландшафт

Ландшафт с автоматическим мультитекстурированием и тенями:

Облака

Моделирую новую тестовую сцену для Dagon. Добавил простейшие облака — две плоскости со скроллящимися текстурами и динамически рассчитываемым цветом в зависимости от положения солнца:

Анимированные модели в Dagon/gl33

Портировал загрузчик формата IQM и реализовал рендеринг анимированных мешей:

Осталось только переписать систему частиц, и ветку gl33 можно будет сделать основной.

Прогресс по Dagon/gl33

В ветке gl33 реализован кластерный рендеринг и шейдер неба. Добавлена оптимизация кластерного рендеринга, заключающаяся в том, чтобы хранить позиции источников света в world-space и не обновлять буферы, если источники света на сцене не меняются.

Dagon 0.4.0 и прогресс по gl33

Выпустил новую версию Dagon — 0.4.0. Основное нововведение релиза — встроенные каскадные тени на основе массива текстур (поддержка обычных теневых карт удалена). Исправлен баг с parallax mapping, из-за которого сдвиг текстурных координат происходил для всех материалов, даже тех, которые не используют эту технику. Кроме того, появилась возможность отключать динамическии рассчитываемый цвет неба/фона. Движок теперь использует OpenGL 2.1.

Это последняя версия Dagon, использующая старый OpenGL — дальнейшая разработка будет сосредоточена на ветке gl33. Новый Dagon будет максимально совместим со старым, но будет несколько косметических изменений в некоторых интерфейсах. Картинка останется неизменной, все шейдеры напрямую портируются из старой кодовой базы.

В ветке gl33, между тем, реализованы вывод текста, постобработка, рендеринг теней, добавлен стандартный бэкенд материала BlinnPhongBackend, в котором реализованы normal mapping и parallax occlusion mapping. Демка ветки приближается по графике к сцене First Person из стандартного демонстрационного приложения Dagon.

Dagon + OpenGL 3.3

Рано или поздно я должен был перейти на современный OpenGL, и этот «час X» наступил. Поводом стали вскрывшиеся проблемы с расширением GL_EXT_gpu_shader4 для старых версий OpenGL на видеокартах AMD и Intel (плохо не иметь много разных конфигураций для тестов!). Решив больше не мучаться с расширениями в попытках сохранить совместимость с железом эпохи OpenGL 2.x, я начал портировать Dagon на OpenGL 3.3 core profile. Переход оказался не слишком сложным — движок почти не использует устаревшую функциональность и по архитектуре неплохо вписывается в современные версии стандарта. Разработка порта ведется в отдельной ветке — gl33. На данный момент готовы рендеринг статических мешей и загрузка текстур, а также заготовка для стандартных бэкендов материалов.