Dagon 0.4.0 и прогресс по gl33
Это последняя версия 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. На данный момент готовы рендеринг статических мешей и загрузка текстур, а также заготовка для стандартных бэкендов материалов.
Dagon 0.3.0
Соответственно, обновлена демка — улучшен пример движка от первого лица, куда добавлены почти все фичи Dagon. Скачать ее можно тут.
Осталось реализовать PBR-материалы и поддержку формата DGL3 (хотя, скорее всего, я сделаю новый формат для хранения сцен, с учетом всех возможностей Dagon).
Сверточные фильтры в dlib с выводом в QtE
От автора:
«В этой статье мы попытаемся подружить QtE5 и dlib, сделав несложный и удобный интерфейс для накладывания фильтров на изображения, оставив при этом возможность для пользователя добавлять свои фильтры».
Кластерный рендеринг — обновленная демка
Скачать для Windows
Clustered Forward Shading
Метод очень перспективный — минимальная нагрузка на GPU, всего две дополнительные служебные текстуры (кластер и буфер источников света), хорошая масштабируемость и почти полная независимость от сложности сцены (есть лишь зависимость от ее размера — чем больше сцена, тем выше разрешение кластера).
Есть, впрочем, и недостатки — во-первых, небольшая дополнительная нагрузка на CPU при обновлении 3D-текстуры и буфера. Но обновлять их нужно только при движении источников света — если у вас статичный свет, то оверхед будет нулевой. Другое узкое место — передача буфера источников света в видеопамять. У меня это текстура GL_RGB32F шириной N * 8, где N — количество ячеек кластера, и высотой 4 — по одной строке на атрибут. N может достигать 1024 и выше — передавать такой буфер из системной памяти каждый кадр может показаться малоэффективным, но можно обновлять не весь буфер, а только те его части, где меняется список источников света (маловероятно, что в обычной игровой ситуации будут сотни движущихся ламп).
Надеюсь вскоре доделать и выложить демку с реализацией данного метода.