HDR glow

Добавил эффект свечения, рассчитываемый в HDR:

Тени с учетом карты высот

Обычные теневые карты ничего не знают о рельефе поверхности и ведут себя так, будто она гладкая. Но если у нас есть parallax mapping и, соответственно, данные о высоте фрагмента, можно улучшить картинку путем смещения не только текстурных координат, но и теневых:

vec4 shadowCoord = shadowMatrix * vec4(eyePosition + eyeNormal * height * 0.3, 1.0);

Таким образом, мы создаем фейковую точку, расположенную выше реальной поверхности, и тень для нее будет рассчитываться как если бы поверхность была действительно рельефной. Эффект особенно заметен на краях тени, углах и скруглениях – там, где при обычном расчете теневых координат была бы сплошная тень, появляются освещенные участки:

Главный недостаток метода – расчет теневых координат происходит пофрагментно, а не повершинно, но на современном железе это не слишком большая жертва.

Не знаю, использовалась ли такая техника раньше, и как она называется – может быть, что-то вроде height-corrected shadow mapping?

Улучшенный color grading

Мне удалось избавиться от эффекта бэндинга при цветокоррекции с использованием таблицы цветов – скоро все изменения будут доступны в репозитории.

Уроки по Dagon

Решил написать цикл вводных уроков по основным возможностям Dagon. Найти их можно тут. Конечно, по мере развития движка они неизбежно будут устаревать, но я постараюсь держать их в актуализированном состоянии.

Также недавно я получил в свое распоряжение руль, и, соответственно, добавил поддержку рулей в Dagon (вернее сказать, улучшил уже существовавшую обертку над API ввода SDL2). Пример Dagon с машиной уже работает с рулями – надеюсь скоро выложить видео.

Планы на будущее следующие: в ближайшее время собираюсь довести до ума поддержку PBR-материалов, после чего выпустить Dagon 0.7 с новым HDR-рендером. Дальше, скорее всего, буду смотреть в сторону deferred rendering, поскольку на прямом рендере стало уже сложно получать современную картинку.

HDR уже здесь

Все улучшения, которые я сделал в Dagon за последние месяцы, доступны в репозитории движка. Обновлено также и демонстрационное приложение. Изменения касаются, главным образом, рендера – Dagon теперь полностью основан на HDR. Используется автоматическая экспозиция (динамическая адаптация к освещению), поддерживаются операторы тональной компрессии Reinhard и Hable/Uncharted. Движок теперь понимает файлы Radiance HDR/RGBE, которые можно использовать в качестве карт окружения.

Также появилась поддержка motion blur (который делается все в том же широком диапазоне), а все доступные фильтры постобработки стали частью стандартной сцены (BaseScene3D). В будущем надеюсь сделать их более настраиваемыми, а также добавить новые фильтры.