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

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

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

Содержание
  • 1 История
  • 2 Ограничения
  • 3 Создание
  • 4 Альтернативы
    • 4.1 Освещение вершин
    • 4.2 Отображение разрывов
  • 5 См. Также
  • 6 Ссылки
История

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

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

Ограничения

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

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

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

Создание

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

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

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

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

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

Освещение вершин

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

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

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

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