Мои Уведомления
Привет, !
Мой Аккаунт Мои Финансы Мои Подписки Мои Настройки Выход
Руководство API скрипты

Карты освещения: техническая информация

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

Схемы кодирования

В проектах Unity можно использовать два метода для кодирования запеченных диапазонов интенсивности света в текстуры с низким динамическим диапазоном, когда это необходимо:

  • Кодировка RGBM. Кодировка RGBM сохраняет цвет в каналах RGB и множитель (M) в альфа-канале. Диапазон карт освещения RGBM составляет от 0 до 34,49 (52,2) в линейном пространстве и от 0 до 5 в гамма-пространстве.

  • Кодирование с двойным низким динамическим диапазоном (dLDR). Кодирование dLDR используется на мобильных платформах путем простого сопоставления диапазона от [0, 2] до [0, 1]. Интенсивность запеченного света, превышающая значение 2, будет зафиксирована. Значение декодирования вычисляется путем умножения значения текстуры карты освещения на 2, если используется гамма-пространство, или на 4,59482(22,2), если используется линейное пространство. Некоторые платформы сохраняют карты освещения как dLDR, потому что их аппаратное сжатие создает некрасивые артефакты при использовании RGBM.

При использовании линейного цветового пространства текстура карты освещения помечается как sRGB, а окончательное значение используется шейдерамипрограммой. который работает на графическом процессоре. Подробнее
См. в Словарь
(после выборки и декодирования) будет в линейном цветовом пространстве. При использовании цветового пространства «Гамма» окончательное значение будет в цветовом пространстве «Гамма».

Примечание. При использовании кодирования значения, хранящиеся в картах освещения (памяти текстур графического процессора), всегда находятся в цветовом пространстве гаммы.

Функция шейдера Decode Lightmap из включаемого файла шейдера UnityCG.cginc обрабатывает декодирование значений карты освещения после того, как значение считывается из текстуры карты освещения в шейдере.

Поддержка карты освещения HDR

Вы можете использовать карты освещения HDR в Windows, Mac, Linux, iOS, tvOS и Android. Чтобы управлять кодированием/сжатием карт освещения для этих платформ, перейдите в раздел Редактировать > Настройки проекта > Проигрыватель > Другие настройки > Кодирование карты освещения.

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

Когда карта освещения СжатиеМетод хранения данных, уменьшающий объем требуемого места для хранения. См. Сжатие текстур, Сжатие анимации, Сжатие звука, Сжатие компоновки.
See in Словарь
включен в окне освещения, карты освещения будут сжаты с использованием формат сжатия BC6H на настольных и консольных платформах. Для мобильных платформ Unity выбирает формат HDR в соответствии с таблицей ниже.

Преимущества карт освещения высокого качества (BC6H)

  • Карты освещения HDR не используют какую-либо схему кодирования для кодирования значений карты освещения, поэтому поддерживаемый диапазон ограничен только 16-битным текстурным форматом с плавающей запятойФормат файла для обработки текстур во время рендеринга в реальном времени аппаратным обеспечением для трехмерной графики, таким как видеокарта или мобильное устройство. Подробнее
    См. в Словаре
    значение от 0 до 65504.

  • Качество в формате BC6H выше, чем при кодировании в формате DXT5 + RGBM, и оно не создает никаких артефактов цветовых полос, характерных для кодирования RGBM.

  • Шейдеры, которым необходимо сэмплировать карты освещения HDR, на несколько инструкций ALU короче, потому что нет необходимости декодировать семплированные значения.

  • Формат BC6H имеет те же требования к памяти графического процессора, что и DXT5.

Вот список схем кодирования и их сжатие текстурОборудование для 3D-графики требует, чтобы текстуры были сжаты в специализированных форматах, оптимизирован для быстрой выборки текстур. Подробнее
См. в форматах Словарь
для каждой целевой платформы:

Целевая платформа Кодировка Сжатие — размер (бит на пиксель)
Standalone(PC, Mac, Linux) RGBM / HDR DXT5 / BC6H - 8 bpp
Xbox One RGBM / HDR DXT5 / BC6H - 8 bpp
PlayStation4 RGBM / HDR DXT5 / BC6H - 8 bpp
WebGLAPI JavaScript, который отображает 2D- и 3D-графику в веб-браузере. Вариант сборки Unity WebGL позволяет Unity публиковать контент в виде программ JavaScript, использующих технологии HTML5 и API рендеринга WebGL для запуска контента Unity в веб-браузере. More info
See in Словарь
1.0 / 2.0
RGBM DXT5 - 8 bpp
iOSApple’s mobile operating system. More info
See in Словарь
dLDR / RGBM / HDR PVRTC RGB - 4 bpp / ETC2 RGBA - 8 bpp / RGB9E5 - 32 bpp
tvOS dLDR / RGBM / HDR ASTC - 3.56 bpp / ASTC - 3.56 bpp / RGB9E5 - 32 bpp
Android* dLDR / RGBM / HDR ETC1 RGB - 4 bpp / ETC2 RGBA - 8 bpp / ASTC HDR - 3.56 bpp

*Если целевым устройством является Android, вы можете переопределить формат сжатия текстур по умолчанию из Настройки сборки на один из следующих форматов: DXT1, PVRTC, ETC2, ASTC. . Формат по умолчанию: ETC для текстур RGB и ETC2 для текстур RGBA.

Предварительно рассчитанное глобальное освещение (GI) в реальном времени

Входные данные для системы GI имеют другой диапазон и кодировку для вывода. Альбедо поверхности представляет собой 8-битное целое число RGB без знака в гамма-пространстве, а излучение представляет собой 16-битное RGB с плавающей запятой в линейном пространстве. Рекомендации по предоставлению настраиваемых входных данных с помощью метапрохода см. в документации по сопоставлению освещения и шейдерам.

Выходная текстура освещенности сохраняется с использованием формата с плавающей запятой общего экспонента RGB9E5, если графическое оборудование поддерживает его, или RGBM с диапазоном 5 в качестве запасного варианта. Диапазон карт освещения RGB9E5 — [0, 65408]. Подробнее о формате RGB9E5 см. на Khronos.org: EXT_texture_shared_exponent. .

См. также:


  • Запеченные карты освещения добавлены в Unity 2017.2
  • Поддержка карты освещения HDR добавлена в Unity 2017.3
  • Настройки кодирования карты освещения для мобильной платформы добавлены в Unity 2019.1
Вы можете отблагодарить автора, за перевод документации на русский язык. ₽ Спасибо
Руководство Unity 2021.3