Тени от частиц

Добавил поддержку теней от частиц:

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

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

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

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

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

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

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

Шейдерные эффекты в Dagon

Работаю над убер-шейдером и тенями, а также сделал постобработку, добавил FXAA, SSAO и хроматическую аберрацию:

Dagon 0.2.0

Выпустил новую версию Dagon – 0.2.0. Релиз включает изменения, сделанные в рамках демы с автомобильной физикой и различных других примеров, а именно:

  • Система частиц с поддержкой векторных полей
  • Шейдерный бэкенд для материалов
  • Экспериментальная поддержка теневых карт
  • Демонстрационный пример Dagon также обновлен – в сцену с механикой от первого лица добавлены тени.
Также скоро в основную ветку будет внесена система постобработки и поддержка сглаживания FXAA. Следующим шагом будет реализация PBR-бэкенда и поддержки формата DGL3, а затем на Dagon можно будет портировать Atrium.
Скачать демку Dagon 0.2.0 для Windows и Linux можно тут.

Улучшенные тени

Удалось практически свести на нет пикселизацию мягких теней:

Все изменения в DGL, связанные с тенями, кстати, уже доступны в репозитории проекта.