Dagon 0.16.0

Выпустил новую версию Dagon. Главная особенность релиза — поддержка подповерхностного рассеивания (subsurface scattering) методом, аналогичным тому, который используется в Disney BRDF. Добавлено новое свойство материала subsurfaceScattering — это значение от 0 до 1, обозначающее долю излучения, которое рассеивается в толще материала: чем больше это значение, тем больше света проникает вглубь и меньше отражается от поверхности.

Также появилась поддержка зондов локального освещения среды (environment light probes). Это отложенный эффект наподобие точечных источников света, но для освещения среды: параллелепипед, внутри которого все объекты используют индивидуально заданную карту окружения вместо глобальной. Это позволяет, например, отделить освещение интерьера комнаты от уличного.

Добавлена ноддержка тональной компрессии AgX — и, соответственно, новые константы Tonemapper.AgX_Base и Tonemapper.AgX_Punchy.

Добавлена функция снятия скриншотов игры — метод Application.takeScreenshot.

Исправлен баг с некорректной передачей параметров в шейдер цветокоррекции (LUT). Исправлен прыжок в контроллере персонажа в расширении dagon:newton — прыжок плохо срабатывал на плоских поверхностях.

Dagon теперь использует dlib 1.3.0. Расширение dagon:imgui теперь использует bindbc-imgui 0.7.0.

Обновления

dlib 1.3.0

Вышла новая версия dlib. В библиотеке появился новый пакет dlib.math.random с реализацией генератора псевдослучайных чисел на основе C-функции rand. Проделан ряд улучшений в математическом пакете: добавлена поддержка компилятора GDC в модуль dlib.math.sse, появилась новая функция интерполяции bezierQuadratic.

Количество скачиваний dlib в реестре DUB достигло 1400 в месяц — рекордный показатель за все время существования проекта!

Подготовка к релизу Dagon 0.16

Новая версия Dagon планируется к выпуску совсем скоро — на днях внес ряд багфиксов и улучшений в физику Newton (в частности, исправлен прыжок контроллера персонажа на плоских поверхностях), а также добавил встроенную функцию создания скриншотов — Application.takeScreenshot.

AgX в Dagon

Добавил в Dagon поддержку AgX — это новая функция tonemapping’а, намного превосходящая ACES и Filmic по качеству результата. В частности, AgX более адекватно отображает засвеченные области — например, поверхности, освещенные яркими цветными источниками света или самостоятельно светящиеся поверхности, как показано на скриншотах ниже. При этом картинка в целом становится менее контрастной и насыщенной — для решения этой проблемы есть режим Punchy, который дает эффектный кинематографичный контраст.

Для сохранения обратной совместимости функцией по умолчанию пока останется ACES.

Обратил внимание, что многие в сообществе компьютерной графики не совсем понимают суть AgX и вообще тональной компрессии. Иногда AgX неверно называют «цветовым пространством» — пространство там BT.2020 RGB, предложенное для стандартизации изображения в устройствах UHDTV, а AgX — это цветовое преобразование (color transform) в этом пространстве. Перед тем, как применять AgX, нужно перевести цвет из линейного RGB в линейный BT.2020 RGB (а после применения — обратно). Тональная компрессия — это не какой-то волшебный фильтр, который «делает красиво», а просто функция, которая нелинейно сжимает яркость в ограниченный диапазон значений, сохраняя как можно больше информации с учетом особенностей человеческого зрения: в идеале должна сохраняться детализация и в темных, и в светлых участках картинки (не должно быть засветов и черных теней), а все цвета должны выглядеть правдоподобно на всем диапазоне яркости. Тема, опять-таки, довольно сложная, очень интересная и заслуживающая отдельной подробной статьи.