WikiDer > Карта освещения

Lightmap
Сложная сцена с соответствующей картой освещения (показано справа).
Куб с простой картой освещения (показан справа).

А карта освещения это структура данных используется в световая карта, форма поверхностное кэширование в котором яркость поверхностей в виртуальной сцене равна предварительно рассчитанный и сохраненный в карты текстур для дальнейшего использования. Карты освещения чаще всего применяются к статическим объектам в приложениях, которые используют в реальном времени 3D компьютерная графика, Такие как видеоигры, чтобы обеспечить световые эффекты, такие как глобальное освещение при относительно низких вычислительных затратах.

История

Джон Кармакс Землетрясение была первой компьютерной игрой, в которой карты освещения использовались для увеличения рендеринг.[1] До изобретения карт освещения приложения реального времени полагались исключительно на Затенение по Гуро для интерполяции вершинного освещения поверхностей. Это позволяло получать информацию только о низкочастотном освещении и могло создавать артефакты отсечения вблизи камеры без интерполяции с коррекцией перспективы. Разрывная сетка иногда использовался особенно с лучезарность решения для адаптивного улучшения разрешения информации о вершинном освещении, однако дополнительные затраты на примитивную настройку для растеризации в реальном времени в целом были непомерно высокими. Землетрясениеиспользуемый программный растеризатор поверхностное кэширование для однократного применения расчетов освещения в пространстве текстуры, когда полигоны изначально появляются внутри просмотр усеченной пирамиды (фактически создавая временные «освещенные» версии видимых в данный момент текстур, когда зритель согласовывает сцену).

Как потребительское оборудование для 3D-графики, способное мультитекстурирование, световое картирование стало более популярным, и движки начали объединять световые карты в реальном времени в качестве второстепенных многократно смешивать текстурный слой.

Ограничения

Карты освещения состоят из люмели[2] (Элементы освещения), аналог текселей в Отображение текстуры. Люмели меньшего размера дают более высокие разрешающая способность карта освещения, обеспечивающая более мелкую детализацию освещения за счет снижения производительности и увеличения использования памяти. Например, масштаб карты освещения 4 люмеля на мировую единицу даст более низкое качество, чем масштаб 16 люмелей на мировую единицу. Таким образом, используя технику, дизайнеры уровней и 3d художники часто приходится идти на компромисс между производительностью и качеством; если карты освещения с высоким разрешением используются слишком часто, приложение может потреблять чрезмерные системные ресурсы, что отрицательно сказывается на производительности. Разрешение и масштабирование карты освещения также могут быть ограничены объемом дискового пространства для хранения, пропускной способностью / временем загрузки или памятью текстур, доступной приложению. Некоторые реализации пытаются объединить несколько карт освещения в процессе, известном как атласинг[3] чтобы помочь обойти эти ограничения.

Разрешение и масштаб карты освещения - это разные вещи. Разрешение - это область в пикселях, доступная для хранения одной или нескольких карт освещения поверхности. Количество отдельных поверхностей, которые могут поместиться на карте освещения, определяется масштабом. Меньшие значения масштаба означают более высокое качество и больше места на карте освещения. Более высокие значения шкалы означают более низкое качество и меньше занимаемого места. Поверхность может иметь карту освещения с такой же площадью, поэтому соотношение 1: 1 или меньше, поэтому карта освещения растягивается по размеру.

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

Творчество

При создании световых карт может использоваться любая модель освещения, потому что освещение полностью предварительно вычислено и работа в реальном времени не всегда является необходимостью. Разнообразные техники, включая окружающая окклюзия, прямое освещение с дискретными краями теней и полное лучезарность[4] Обычно используются решения с отраженным светом. Современные 3D-пакеты включают специальные плагины для применения UV-координат карты освещения, атласирования нескольких поверхностей в отдельные текстурные листы и рендеринга самих карт. В качестве альтернативы конвейеры игрового движка могут включать в себя настраиваемые инструменты создания карты освещения. Дополнительным соображением является использование сжатых DXT текстуры, которые подвержены блокирующим артефактам - отдельные поверхности не должны сталкиваться на фрагментах текселей 4x4 для достижения наилучших результатов.

Во всех случаях, мягкие тени для статической геометрии возможны, если простые тесты окклюзии (например, базовые трассировка лучей) используются, чтобы определить, какие люмели видны свету. Однако фактическая мягкость теней определяется тем, как механизм интерполирует данные просвета по поверхности, и может привести к пиксельный посмотрите, не слишком ли велики просветы. Видеть Фильтрация текстур.

Карты освещения также можно рассчитывать в реальном времени.[5] для создания цветных световых эффектов хорошего качества, которые не подвержены дефектам затенения по Гуро, хотя создание тени все же должно выполняться с использованием другого метода, такого как трафарет теневых объемов или же отображение теней, поскольку трассировка лучей в реальном времени все еще слишком медленная, чтобы работать на современном оборудовании в большинстве 3D-движков.

Фотонное отображение может использоваться для расчета глобального освещения для карт освещения.

Альтернативы

Вершинное освещение

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

Отображение разрывов

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

Смотрите также

Рекомендации

  1. ^ Абраш, Майкл. "Модель освещения Quake: кэширование поверхности". www.bluesnews.com. Получено 2015-09-07.
  2. ^ Чанна, Кешав (21 июля 2003 г.). «флипкод - Отображение света - Теория и реализация». www.flipcode.com. Получено 2015-09-07.
  3. ^ "Техническая документация по атласной текстуре" (PDF). nvidia.com. NVIDIA. 2004-07-07. Получено 2015-09-07.
  4. ^ Джейсон Митчелл, Гэри МакТаггарт, Крис Грин, Затенение в исходном движке Valve. (PDFПроверено 7 июня 2019 года.
  5. ^ 16 ноября 2003 г. Динамические карты освещения в OpenGL. Joshbeam.com Проверено 7 июля, 2014.