Unity 6.3
0 онлайн 104 гостей 3 в системе
Вход
Освещение Шаг 31 из 173

Формат данных Lightmap

Unity хранит lightmaps с различными сжатиями и схемами кодирования, в зависимости от целевой платформы и настройки сжатия в окне Lighting Window.

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

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

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

  • Кодирование Double Low Dynamic Range (dLDR). dLDR encoding используется на мобильных платформах путем простого отображения диапазона от [0, 2] до [0, 1]. Запеченные интенсивности света, превышающие значение 2, будут закреплены. Значение декодирования рассчитывается путем умножения значения текстуры lightmap на 2 при использовании гамма-пространства, или 4.59482(22.2) при использовании линейного пространства. Некоторые платформы хранят lightmaps как dLDR, потому что их аппаратное сжатие производит плохо выглядящие артефакты при использовании RGBM.

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

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

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

HDR поддержка lightmap

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

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

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

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

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

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

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

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

Вот список схем кодирования и их форматов сжатия текстуры для каждой целевой платформы:

Целевые платформы Кодирование Сжатие — размер (бит на пиксель)
Standalone(PC, Mac, Linux) RGBM / HDR DXT5/BC6H — 8 пунктов базовой ставки
WebGL 2.0 RGBM / RGBM / HDR DXT5 — 8 пунктов базовой ставки
iOS ASTC (1) dLDR / RGBM / HDR ASTC — 3.56 бпп/ASTC — 3.56 бпп/RGB9E5 — 32 бпп
tvOS dLDR / RGBM / HDR ASTC — 3.56 бпп/ASTC — 3.56 бпп/RGB9E5 — 32 бпп
Android ASTC (2) dLDR / RGBM / HDR ASTC — 3.56 тыс. тонн/ASTC — 3.56 тыс. тонн/ASTC HDR — 3.56 тыс. тонн
Android ETC2 dLDR / RGBM / HDR ETC2 RGB — 4 бпп/ETC2 RGBA — 8 бпп/ASTC HDR — 3.56 бпп
Android ETC dLDR / RGBM / HDR ETC1 RGB — 4 бпп/ETC2 RGBA — 8 бпп/ASTC HDR — 3.56 бпп

[1] Формат сжатия текстуры, используемый для lightmaps на iOS зависит от Формат сжатия текстуры в Настройки плеера.

[2] Формат сжатия текстуры, используемый для lightmaps на Android зависит от Настройки плеера и настройки сборки. См. Настройки сжатия текстур для более подробной информации о том, как эти настройки взаимодействуют.

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

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

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

Дополнительные ресурсы