ORM map: объяснение (упаковка каналов)
ORM map — это прием для экономии памяти: вместо трех отдельных черно-белых текстур для ambient occlusion, roughness и metallic, вы упаковываете каждую в один цветовой канал одного изображения. ORM расшифровывается как Occlusion, Roughness, Metallic — именно в таком порядке каналов.
Краткий ответ
Каждая из карт AO, roughness и metallic является монохромной (одноканальной), поэтому хранение трех отдельных RGB-изображений тратит две трети данных впустую. Текстура ORM упаковывает Occlusion в красный канал, Roughness — в зеленый, а Metallic — в синий: одна текстура, один семплер, треть памяти. Это те же данные, просто объединенные.
Зачем нужна упаковка каналов
Черно-белым картам нужен только один канал, но файлы изображений содержат три или четыре. Упаковка трех черно-белых карт в одну RGB-текстуру сокращает объем памяти текстур и количество сэмплов текстур, выполняемых GPU для каждого пикселя.
Это реальный выигрыш в производительности, особенно в играх и в вебе, где память и пропускная способность ограничены.
Что находится в каждом канале
Согласно конвенции ORM, Occlusion находится в красном канале, Roughness — в зеленом, Metallic — в синем. Некоторые пайплайны помещают карту высот или дополнительную маску в альфа-канал.
Unreal Engine обычно использует упаковку в стиле ORM, а Godot 4 напрямую считывает упакованную ORM текстуру в StandardMaterial3D. Всегда подтверждайте точный порядок каналов, который ожидает ваш целевой движок — конвенции иногда различаются.
Создание ORM map
Вы создаете AO, roughness и metallic как обычные черно-белые каналы, а затем упаковываете их во время экспорта. Обычно ORM текстуру не рисуют напрямую.
Инструмент вроде Mixos позволяет редактировать каждый канал и может экспортировать их по отдельности или собирать ORM-пакет для движков, которым он нужен — так что вам никогда не придется вручную перетасовывать каналы в графическом редакторе.
Часто задаваемые вопросы
Что означает аббревиатура ORM?
Occlusion (окклюзия), Roughness (шероховатость), Metallic (металличность) — упакованные соответственно в красный, зеленый и синий каналы одной текстуры.
Зачем использовать ORM map вместо трех отдельных текстур?
Память и производительность. Три черно-белые карты, хранящиеся как одна RGB-текстура, используют треть памяти и меньше сэмплов GPU, без потери данных.
Какие движки используют ORM map?
Unreal Engine обычно использует упаковку в стиле ORM, а StandardMaterial3D в Godot 4 напрямую считывает упакованную ORM текстуру. Всегда проверяйте точный порядок каналов, который ожидает ваш целевой движок.
Экспортируйте отдельные каналы или упакованную ORM map для вашего движка — Mixos поддерживает оба варианта прямо в браузере.