Освещение интерьера в Dagon

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

Некорректные отражения на стенах внутри комнаты + в целом, слишком яркий интерьер
Световой зонд заменяет освещение среды в комнате на более тусклое

По сути, это простейшая аппроксимация GI. Зонд может освещать интерьер однородным излучением заданного цвета, либо использовать собственную HDR-карту окружения. Единственная нерешенная на данный момент проблема – видимая граница двух сред освещения в тех местах, где отсутствует геометрия здания (т.е. в дверных проемах). Поэтому при использовании данной фичи необходимо как-то маскировать эту границу – например, сделать в этом месте порог или переход текстуры пола.

Volumetric light scattering

Работаю над экспериментальной поддержкой рассеяния света в воздухе:

Tube area lights

Tube area lights

Добавил в Dagon поддержку трубчатых источников света (tube area lights) по методу, описанному тут. На скриншотах показаны блики от трубок на поверхностях с разной шероховатостью, а также рельефом.

Освещение частиц

Работаю над освещением частиц:

Используется процедурная сферическая карта нормалей – то есть, каждый биллборд системы частиц интерпретируется пиксельным шейдером как виртуальная сфера. Планируются и пользовательские карты нормалей.

Объемные источники света в Dagon/gl33

Добавил в стандартный шейдер поддержку spherical area lights – сферических объемных источников света: