Динамические тени в реальном времени в дополнение к отложенному затенению?

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


person meds    schedule 31.07.2009    source источник


Ответы (1)


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

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

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

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

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

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

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

person mattnewport    schedule 31.07.2009