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 поддерживает оба варианта прямо в браузере.

Начать бесплатно