Рендер в Dagon 2.0 и Blender 5.0 / Eevee. Как говорится, найдите десять отличий 😀

В дополнение к простому конвертеру из равнопромежуточных карт окружения в кубические карты, в Dagon появилась поддержка предварительной фильтрации (prefiltering) — то есть, свертки кубических карт с использованием GGX BRDF под различные значения шероховатости. Результаты свертки сохраняются в mip-уровнях. Этот процесс является одной из ключевых оптимизаций PBR, поскольку избавляет от необходимости вычислять интеграл облученности в реальном времени. Префильтрация осуществляется очень быстро на GPU, поэтому ее, в принципе, можно делать каждый раз при запуске приложения (но лучше, конечно, однократно с кэшированием в файл — скоро добавлю и такую возможность). Преимуществом является то, что теперь для этого необязательно использовать сторонние утилиты типа IBLBaker — движок все делает сам.

Реализация основана на классическом методе (выборка по последовательности ван дер Корпута-Хаммерсли), описанном в статье «Real Shading in Unreal Engine 4» (Брайан Карис, Epic Games, SIGGRAPH 2013).
Пролетел еще один год, и это значит, что наступило время для традиционного подведения итогов. С психологической стороны год для меня был непростой, но интересный, а с материальной — весьма успешный. К сожалению, времени на хобби-проекты выдалось меньше, чем хотелось бы.
Ну и, конечно, не могу не назвать самые значимые для меня события в мире IT:
В Dagon наконец-то появилась качественная аппроксимация подповерхностного рассеивания — фича, которую я в том или ином виде пытаюсь реализовать уже не первый год. Идею позаимствовал из Disney BRDF.




PBR (physically-based rendering) в последние годы стал стандартом фотореалистичной графики во всех мейнстримных игровых движках, пакетах моделирования, магазинах стоковых 3D-моделей и т.д. Любой моделлер сегодня обязан уметь работать с текстурами roughness и metallic, а любой GPU-программист — разбираться в азах оптики и понимать, что такое BRDF. Хорошо, если вы много лет работаете в сфере 3D-рендеринга, и все эти нововведения появились у вас на глазах — вы уже давно понимаете, что к чему — однако с нуля разобраться в этой теме очень непросто. Рендеринг превратился в целую науку на стыке оптики, векторной алгебры и вычислительной геометрии, а PBR уже можно считать фундаментальной теорией в рамках этой науки. Моя статья «PBR. Секреты фотореалистичной графики» для журнала «FPS» посвящена основным концепциям PBR — факторам, которые обязан учитывать любой рендер, претендующий на реалистичность.
https://fps.xtreme3d.ru/index.php?content=article&article=pbr
В следующей версии Dagon появится поддержка кубических карт в формате DDS. Чаще всего для кубических карт этот формат используется, если необходимо хранить предрассчитанные зеркальные лепестки (specular lobes) для разных уровней шероховатости — DDS позволяет хранить эти данные в mip-уровнях текстуры и быстро загружать их без промежуточного декодирования.

До этого единственным доступным вариантом была генерация mip-уровней в самом движке, но это делалось блочным фильтром, без учета BRDF. Теперь свертку карты окружения можно осуществлять при помощи внешних инструментов — я рекомендую, например, IBLBaker.

В следующей версии движка, 0.11, будут полностью переписаны рендер и система постобработки, а также изменена структура модулей. Как следствие, Dagon потеряет совместимость со старыми проектами, но зато появится возможность практически не ограниченного расширения движка путем создания пользовательских графических конвейеров. Новая версия Dagon разрабатывается в ветке dagon-ng.
Из уже реализованных возможностей можно отметить почти готовый отложенный рендер с оптимизациями производительности и расхода памяти (например, больше не используется буфер позиций, позиции вычисляются на основе буфера глубины). Стало возможным изменение разрешения окна/вьюпорта в процессе работы приложения. Кроме того, был улучшен сэмплинг карты окружения — используется нелинейная зависимость mip-уровня от шероховатости, реализованная по методу, предложенному Морганом Макгуайром, что повысило реалистичность материалов с низкой и средней шероховатостью:
Экранное затенение среды (SSAO) было вынесено в отдельный буфер, что позволяет использовать данные о затенении на разных этапах конвейера. Был добавлен денойзер, благодаря которому удается рендерить SSAO без шума с небольшим количеством сэмплов:
Демку новой ветки Dagon с функциями редактора можно найти тут.
Также добавлена поддержка HDR-текстур, чтение ввода с джойстика, улучшены многие графические и служебные компоненты.
https://github.com/gecko0307/dagon/releases/tag/v0.6.0
Одновременно обновлена и демка движка — добавлена физика автомобиля, все материалы переведены на PBR. Релиз с готовыми сборками будет в ближайшее время.