Текстурная компрессия в Вердж3Д — Софт Эйт Софт
Description: Вердж3Д позволяет использовать текстуры, сжатые с помощью высокоэффективного алгоритма KTX-2/BasisU. Узнайте как использовать его в ваших приложениях.

# Текстурная компрессия

«Вердж3Д» позволяет использовать текстуры, сжатые с помощью высокоэффективного алгоритма KTX-2/BasisU, что существенно снижает потребление видеопамяти и ускоряет рендеринг приложений.

Сравнение тестовой модели использующей текстуры в разных форматах (изображение от консорциума «Кронос»).

- Включение текстурной компрессии
- Проверка файлов
- Настройки компрессии
- Специальный случай — HDR текстуры
- Ограничения

#

## Включение текстурной компрессии

Чтобы включить автоматическую конверсию всех текстур при экспорте, активируйте соответствующую опцию в настройках экспорта:

Блендер
3дс Макс
Майя

Также убедитесь что Texture Decompressor была включена при создании нового приложения (включена по умолчанию):

Если вы забыли включить параметр Texture Decompressor, просто скопируйте файлы basis_transcoder.js и basis_transcoder.wasm из папки build установочной папки «Вердж3Д» (например C:\Program Files\Verge3D_for_Blender\build) в папку с приложением.

#

## Проверка файлов

Чтобы проверить, что приложение загружает текстуры с компрессией, запустите его (из диспетчера приложений или сайта где оно развёрнуто). Далее откройте консоль браузера и переключитесь на вкладку Network.

Перезагрузите приложение, чтобы консоль начала показывать загрузку файлов с самого начала. Найдите в списке ваши текстуры — если всё нормально он будут иметь расширение .ktx2.

Другой способ проверки компрессии — посмотреть в профиле производительности.

#

## Настройки компрессии

Вы можете переключить используемый алгоритм компрессии для каждой текстуры, для чего предусмотрена соответствующая настройка:

Блендер
3дс Макс
Майя

Auto
  Выбрать алгоритм автоматически. В данный момент эта опция просто включает UASTC.
UASTC
  Самый совершенный алгоритм, обеспечивающий максимальное качество. Он подходит для любых текстур включая карты нормалей, ОРМ-карты и др.
ETC1S
  Предлагает максимальную степень компрессии и генерирует файлы минимального размера. Тем не менее, он может вызывать артефакты компрессии, поэтому рекомендуется только для текстур с невысокой контрастностью (трава, дерево, кирпичи и т.д.).
Disable
  Отключить текстурную компрессию для данной текстуры.

#

## Специальный случай — HDR текстуры

В силу своих особенностей, компрессия не работает для HDR-изображений. Вместо этого мы используем алгоритм LZMA для сжатия текстур без потерь (аналогичный метод мы используем для компрессии glTF-файлов). Использование LZMA уменьшает размер файлов текстур в 4-6 раз, однако это никак не сказывается на количестве потребляемой видеопамяти. Если вы не хотите использовать такой вид сжатия, переключите настройку алгоритма в Disabled.

#

## Ограничения

И хотя в целом мы рекомендуем включать компрессию для всех сцен, в ряде случаев вам следует иметь в виду некоторые ограничения, которые связаны с использованием этой функции.

### Компрессия увеличивает размер загружаемых данных

Как заявлено в начале этого раздела, компрессия текстур существенно сокращает количество видеопамяти требуемое вашим приложениям. Однако это не всегда справедливо для файлов текстур, загружаемых по сети. При использовании алгоритма компрессии UASTC (или Auto), текстуры могут стать значительно больше чем исходные изображения. Если вам важнее именно скорость загрузки (или трафик), отключите компрессию полностью, либо переключитесь на более продвинутый алгоритм ETC1S.

Начиная с «Вердж3Д» версии 4.2, мы реализовали дополнительную защиту, чтобы размер текстур не увеличивался слишком сильно. Если сжатое изображение становится больше чем в 3 раза больше оригинального, экспортер автоматически отключает компрессию для данного изображения.

### Замедление экспорта

Компрессия требует времени, что может замедлить экспорт. Чтобы ускорить процесс создания приложения, включайте компрессию только в самом конце.

### Работает только для JPEG и PNG изображений

Компрессия работает только с JPEG/PNG текстурами. Другие форматы, такие как WebP, BMP и др. не поддерживаются.

### Не поддерживается для размеров текстур не являющихся степенью двойки

Если экспортер установит, что размеры текстуры не являются степенью двойки (мы не рекомендуем создавать такие текстуры даже если компрессия не нужна), компрессии не произойдёт и в сцене окажется оригинальное изображение. В консоли пакета моделирования будет выведено соответствующее уведомление.

### Не поддерживается для PNG текстур со встроенным ICC-профилем

PNG изображения со встроенным цветовым профилем (ICC или iCCP) не поддерживаются. Если экспортер обнаружит такой профиль, он будет удалён из изображения перед компрессией. Данная операция может исказить цвета текстуры, особенно если используется нестандартный цветовой профиль (не sRGB).

Если удаление профиля не приемлемо, откажитесь от компрессии или примените этот профиль к изображению в каком-нибудь инструменте редактирования («Фотошоп», «ГИМП» и др.).

## Остались вопросы?

Задайте их на нашем форуме!