Динамические тени в реальном времени для дополнения отложенного затенения? - PullRequest
4 голосов
/ 31 июля 2009

В настоящее время у меня настроена система отложенного рендеринга, и я могу рендерить точечные и направленные источники света. Мой вопрос заключается в том, каковы мои варианты для различных форм затенения, которые могут создавать тени на основе точечных источников и направленных источников света, которые могут, возможно, использовать установку отложенного затенения?

1 Ответ

7 голосов
/ 31 июля 2009

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

Shadow Mapping - наиболее распространенный алгоритм теневого копирования, используемый сегодня в приложениях реального времени, таких как игры. Трафаретные тени были популярны несколько лет назад, но немного потеряли популярность из-за различных ограничений. Shadow Mapping отлично работает с отложенным затенением. Основной алгоритм для теневого отображения достаточно прост:

  1. Глубина рендеринга в текстуру цели рендера с точки зрения источника света (для точечного источника света необходимо визуализировать 6 граней карты куба).
  2. Когда вы выполняете проход освещения для света, для каждого пикселя преобразуйте положение в мировом пространстве в пространство просмотра источника света и сравните глубину с глубиной, сохраненной в карте теней. Если она больше глубины карты теней, то точка находится в тени, в противном случае ее обычно освещают.

Как обычно при рендеринге, дьявол кроется в деталях. Для получения теней хорошего качества необходимо тщательно настроить проекцию карты теней, чтобы наилучшим образом использовать пиксели, доступные на карте теней (поиск перспективных карт теней, каскадных карт теней). Из-за проблем с точностью вы получите различные артефакты с самозатеняющимися поверхностями («угревая сыпь тени» является наиболее распространенным), и существуют различные стратегии для уменьшения частоты появления этих артефактов (смещение глубины, настройки матрицы проекции). Чтобы уменьшить блочный пиксельный вид карт теней с недостаточным разрешением, вы, вероятно, захотите выполнить некоторую фильтрацию карт теней. Процентная фильтрация является стандартным подходом, и существуют различные способы выполнения PCF.

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

В последнее время произошел ряд изменений в базовом алгоритме отображения теней, которые пытаются дать лучшие результаты для данного разрешения карты теней, подходя к проблеме фильтрации по-другому. Variance Shadow Maps и Exponential Shadow Maps - это две последние методики, которые имеют некоторые приятные преимущества, но имеют свои уникальные проблемы.

Сайт разработчика Nvidia является хорошим ресурсом для графического программирования в целом и содержит множество статей по теневанию. Взгляните на HTML-версии книг GPU Gems, доступных на сайте, и в них есть различные статьи по теневому копированию, включая исчерпывающую статью о Variance Shadow Maps в GPU Gems 3.

...