Войти
ПрограммированиеТермины

ShadowMapping

Один из наиболее современных способов генерации теней.

Под термином Shadow Mapping скрываются несколько разных подходов к их получению:

  • 1. Подход, который называют ShadowMap(карта теней)
  • Подход, при котором для некоторого объекта сцены создается текстура, в которую рисуется объект, отбрасывающий тень - черным цветом, из положения источника света.
    Затем требуеться проективно наложить полученную текстуру на приёмники теней(shadow receivers)

    Плюсы данного подхода:
    1) Полученную текстуру можно размывать, и применять к ней любую фильтрацию
    Минусы:
    1) Отсутствует самозатенение
    2) Ограничено кол-во затеняющих объектов(shadow casters)
    3) Для большого кол-ва затеняющих объектов требуеться много текстур

  • 2. Индексированные карты теней
  • В этом подходе для одного источника света(направленного) создаёться одна текстура.
    В эту текстуру рисуються объекты сцены, каждый - своим уникальным цветом.

    При наложении теней, сравниваеться цвет, который находится в текстуре(текстура накладываеться проективно), и собственный цвет объекта. Если они не равны, значит объект затенён.

    Плюсы:
    1) Проблема ограниченного кол-ва shadow casters решена, каждый объект может отбрасывать тень
    2) Требуеться только одна текстура(для направлнного источника света)
    Минусы:
    1) Такую карту теней нельзя размывать, это не имеет смысла для хранимой в  ней информации.
    2) Остаёться проблема отсутствия самозатенения
    3) Чёткие тени, альязинг

  • 3. Shadow mapping
  • В этом подходе для одного источника света(направленного) создаёться одна текстура глубины.
    В эту текстуру рисуються сцена.

    Потом, при отрисовке сцены, сравниваеться глубина точки относительно источника света, и значение, которое находиться в текстуре(текстура накладываеться проективно). Если глубина точки больше, чем глубина в текстуре, то делаеться вывод, что объект затенён.
    Это самый популярный метод создания теней. Для него производители видеокарт создают различные инструменты, например проективную выборку из карты теней, которая сравнит глубину с текущей, и может даже применить 2x2 PCF фильтр(на картах НВидии).

    Плюсы метода:
    1) Все объекты в текстуре отбрасывают тени
    2) Самозатенение
    3) Для напрвленного источника света требуеться только одна текстура
    Минусы:
    1) Сильный альязинг
    2) Отсутствие мягких теней в оригинальном методе.

    Для решения этих минусов были придуманы различные улучшения:

    Для улучшения ситуации с альязингом, используються методы, которые выделяют больше площади текстуры под близкие видимые объекты, и меньше под дальние.
    1) PSM - Perspective Shadow Mapping
    2) LiSPSM - Light Space Perspective Shadow Mapping
    3) TSM - Trapezoidal Shadow Mapping

    Методы, разделяющие видимый объём на части, и использующие несколько текстур.
    1) PSSM - Parallel Split Shadow Mapping
    2) CSM - Cascaded Shadow Mapping

    Методы, позволяющие добиться мягких теней.
    1) VSM - Variance Shadow Map
    2) Smoothies
    3) PCF - Percentage Closer Filtering

    Термин очень обширный, и требует исправления и дополнения

    Что такое ShadowMapping?

    6 декабря 2006 (Обновление: 17 мая 2007)