Почему линейность нужна арифметике

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

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

Интерфейс / граф узловColor Management: историческая панель FilmicВ этой исторической панели отдельно показаны устройство отображения, View Transform Filmic, Look, Exposure и Gamma. Настройки помогают проследить путь от линейных данных рендера к экранному изображению.Blender Documentation Team · CC BY-SA 4.0 · Blender Manual 3.5
Версия и обработка изображения

Blender Manual 3.5 — архив документации от 23.02.2023; точная версия интерфейса отдельных кадров не указана. Преобразование в WebP без потерь; исходные размеры сохранены; без кадрирования, дорисовки и удаления подписей. Все авторы и источники.

Цветовые карты и карты данных

Base Color или фотографический фон обычно имеют определённое цветовое пространство и нуждаются в корректном преобразовании. Roughness, normals, masks и displacement хранят параметры, а не световой цвет. Их нежелательное декодирование меняет саму поверхность.

Практическая рекомендация: классифицируйте каждую текстуру по назначению. Не назначайте одинаковую gamma всему каталогу. HDRI также требует известной интерпретации; наличие float-формата не освобождает от понимания его цветовых координат.

ПОПРОБУЙТЕ САМИ · МАТЕМАТИЧЕСКАЯ МОДЕЛЬ

Экспозиция: от линейного значения к sRGB

Каждая плашка начинает с указанного линейного уровня. Экспокоррекция применяется до отсечения и кодирования для экрана.

−1 EV — вдвое меньше · +1 EV — вдвое больше
Линейный уровень L → экспокоррекция → отсечение → sRGB0,005160,01250,02390,04560,09850,181180,361620,722211,442552,88255Числа снизу — код серого в sRGB 0…255. Оранжевая метка — отсечение.0,18 × 2^(0) ≈ 0,18 → sRGB 0,4614 → 118/255
Линейный множитель×1
Уровень 0,18 после экспозиции0,18
Отсечено плашек2 из 10

Формула: L′ = L · 2^ΔEV; x = clamp(L′, 0, 1); sRGB = 12,92x при x ≤ 0,0031308, иначе 1,055x^(1/2,4) − 0,055

Показаны нейтральные серые значения. Оранжевая метка означает L′ > 1: после отсечения детали теряются. Здесь нет tone mapper, AgX, Filmic или ACES. ΔEV обозначает экспокоррекцию, а не абсолютное фотографическое EV.

Источники: Blender: экспокоррекция · W3C: линейный RGB и sRGB

sRGB и «гамма 2.2»

sRGB — определённая система с primaries и передаточной функцией, которая не является просто одной степенью на всём диапазоне. Упрощение gamma 2.2 полезно для знакомства с темой, но не заменяет точные преобразования. Разные линейные RGB-пространства тоже не тождественны.

Когда проект использует ACEScg или другое рабочее пространство, входной sRGB-цвет должен быть переведён с учётом не только кривой, но и координат цвета. Простое отключение gamma оставляет часть задачи нерешённой.

Интерфейс / граф узловМатериал glTF: цвет, нормаль, ORM и emissionПолная связка из руководства glTF: цветовые карты используют sRGB, карты параметров и нормали — Non-Color. Все соединения и исходные имена узлов сохранены.Blender Documentation Team · CC BY-SA 4.0 · Blender Manual 3.5
Версия и обработка изображения

Blender Manual 3.5 — архив документации от 23.02.2023; точная версия интерфейса отдельных кадров не указана. Преобразование в WebP без потерь; исходные размеры сохранены; без кадрирования, дорисовки и удаления подписей. Все авторы и источники.

Логика процессаОригинальная схема процесса. Не является интерфейсом, скриншотом или измерением конкретного продукта.

Scene-referred и display-referred

Линейный рендер хранит отношения яркости сцены. Экранное изображение уже подготовлено для конкретного способа просмотра. Tone mapping, look и display encoding связывают эти области. Работа со световыми AOV обычно требует первого представления, а публикация JPEG — второго.

Если повторно применить view transform к уже готовому изображению, цвета изменятся. Если не применить его к линейному EXR при просмотре, картинка тоже выглядит неверно. Оба случая часто ошибочно принимают за проблему рендерера.

Согласование команды

Зафиксируйте рабочее пространство, OCIO-конфигурацию, display/view и правила экспорта. Один контрольный кадр должен одинаково интерпретироваться в DCC и композиторе. Названия «linear» без уточнения пространства недостаточно для надёжного обмена между командами.

Сохраняйте мастер с широким диапазоном и отдельные версии для конкретной публикации. Встроенный look не должен случайно становиться частью текстуры материала при обратном использовании изображения в сцене.

Практический тест

Соберите сцену с серой шкалой, цветными образцами, прозрачным объектом и ярким бликом. Откройте её EXR в целевом приложении и сравните через одинаковый view. Проверьте также alpha и края на контрастном фоне. Если различия сохраняются, ищите конкретное преобразование в цепочке, вместо общей коррекции насыщенности «на глаз».

Отдельно проверьте границы полупрозрачных объектов на контрастном фоне. Ошибки смешивания и premultiplication часто остаются незаметными на сером preview, но проявляются белыми или тёмными ореолами при вставке в другой кадр. Согласование alpha является частью цветового обмена. Если разные приложения дают разные края, сравните порядок преобразований и трактовку прозрачности до ручного подкрашивания контура, которое только скрывает техническую причину.