Теневая карта

Трехмерная сцена с наложенной теневой картой
Трехмерная сцена без теней

Метод теневых карт (англ. Shadow mapping) или карт теней — способ моделирования теней в трёхмерной компьютерной графике. Этот способ используется при создании как пререндеренных, так и анимируемых в реальном времени трехмерных сцен и широко применяется в киноиндустрии и компьютерных играх. Концепция теневых карт была введена американским специалистом по компьютерной графике Лэнсом Уильямсом[англ.] в 1978 году в статье под названием «Отбрасывание изогнутых теней на изогнутые поверхности» (англ. «Casting curved shadows on curved surfaces»)[1].

Традиционный способ создания теневых карт основан на использовании Z-буфера (буфера глубины). Сначала происходит построение сцены в Z-буфер с точки зрения источника света, чтобы установить видимые из этой точки пикселы и расстояния до них — таким образом формируется теневая карта, представляющая собой двухмерную текстуру. После этого сцена перестраивается уже с точки зрения наблюдателя со сравнением текстурных координат с теневой картой; если такое сравнение говорит, что соответствующий пиксел невидим с точки зрения источника света и, следовательно, должен быть затенен, он закрашивается темным цветом[2].

Для однонаправленного источника света достаточно одной такой текстуры с информацией из буфера глубины ортографической или перспективной камеры; для точечных источников света, распространяющих свет во всех направлениях, нужны более сложные алгоритмы, предусматривающие построение нескольких текстур. Недостатком теневых карт является алиасинг, эффект грубой «ступенчатой» границы изображения на сценах большого размера[3].

Примечания

  1. Williams, Lance. Casting curved shadows on curved surfaces // ACM Siggraph Computer Graphics. — 1978. — Т. 12, № 3.
  2. Tomas Akenine-Möller, Eric Haines, Naty Hoffman. Real-Time Rendering, Third Edition. — CRC Press, 2008. — ISBN 978-1568814247.
  3. Мальцев А.В. Моделирование теней в 3D сценах с помощью каскадных теневых карт в режиме реального времени : [арх. 5 января 2018] // Информационные технологии и вычислительные системы. — 2014. — № 1. — ISSN 2071-8632.