СНАЧАЛА СВЕТ. ЗАТЕМ ЧИСЛА.
Три канала. Но не три «истинных цвета».
Соберите цвет из линейных вкладов R, G и B. Затем проследите, как свет становится кодом и почему 0.5 бывает разным.
Читайте числа. Замечайте допущения. Затем переносите принцип на свой материал.
Свет — не код.
188 / 188 / 188округлённый кодОсновные цвета sRGB, входные значения линейные и относительные. Плашки кодируются для sRGB-предпросмотра. Разрядность меняет округление, не режим экрана. Это не HDR, не абсолютная яркость и не прогноз субъективной светлоты.
ИЛЛЮСТРАЦИЯ ТЕМЫГЛАВНОЕ БЕЗ ЛИШНИХ ТЕРМИНОВ
RGB и цифровой цвет
RGB — это три координаты внутри заранее определённой системы. Пока не известны primaries, white point и способ кодирования сигнала, три числа RGB не говорят однозначно, какой свет должен излучить монитор.
- Различать свет и код
- Понимать разрядность без мифов
- Сохранять смысл чисел в цепочке
RGB — аддитивная модель света
Дисплей создаёт цвет, складывая свет трёх primaries. Ноль по всем каналам означает отсутствие их вклада, а увеличение каналов добавляет излучение. Это принципиально отличается от субтрактивных моделей печати, где красители удаляют части падающего спектра.
Что это означает на практике
В лаборатории R/G/B задают линейные вклады, а цвет для браузера кодируется в sRGB. Поэтому среднее значение ползунка не обязано давать CSS-код 128. Сложение световых вкладов и арифметика уже закодированных значений — разные операции.
R, G и B — не универсальные цвета природы
Каждая RGB-система сама определяет chromaticities своих red, green и blue primaries. Rec.709, Display P3 и Rec.2020 используют разные координаты, поэтому R=1, G=0, B=0 в этих пространствах задаёт разные красные. Буква R описывает канал системы, а не один физически фиксированный оттенок.
Что это означает на практике
Сравните красные primaries sRGB и Display P3 по координатам в следующем опыте. Подпись R одинакова, координаты различаются. Равные белые точки двух систем не заставляют совпасть их красные и зелёные основные цвета.
RGB-числа — координаты, а не абсолютный цвет
Тройке RGB нужна определённая система координат и кодирование. Но важно различать контексты: CSS-запись #FF0000 уже означает красный в sRGB — её пространство задано спецификацией. В видеобуфере или файле без надёжного описания одни числа не сообщают, sRGB это, camera RGB или другое представление. Различия устройств и управления цветом — отдельная причина несовпадения отображения.
Что это означает на практике
Снимок экрана не заменяет описание источника: приложение могло уже преобразовать изображение для дисплея. Пипетка на таком снимке читает результат этого тракта, а не обязательно значения оригинального camera RGB.
Linear RGB: когда числа пропорциональны свету
В linear-light RGB удвоение значения канала означает удвоение вклада этого primary в физическую интенсивность света. Именно в linear light корректно выполняются многие операции смешивания, blur, compositing и physically meaningful interpolation. Но хранить изображение напрямую в линейной форме при ограниченной bit depth не всегда эффективно.
Что это означает на практике
В простом примере усреднение чёрного и белого даёт 0.5 линейного света. После sRGB-кодирования это примерно 0.735, или код 188 из 255. Среднее кодов 0 и 255 — примерно 128, что соответствует лишь 0.216 линейного света. Это не утверждение о субъективной «половине яркости».
Почему обычный RGB-сигнал часто нелинейный
Transfer function перераспределяет code values относительно света. Исторически это было связано с поведением CRT, а сегодня также помогает эффективнее использовать кодовые уровни и строить согласованную систему camera → signal → display. sRGB, BT.709-style camera encoding, gamma 2.4 display response, PQ, HLG и log curves — разные вещи, хотя в интерфейсах их часто складывают в одно меню Gamma.
Что это означает на практике
sRGB использует линейный участок около чёрного и степенную часть выше порога. Gamma 2.2 — приближение, а не точная формула. В нашем калькуляторе используется составная функция; проверяйте и кодирование, и обратное преобразование, не применяя кривую дважды.
0–1, 0–255 и 64–940 — это разные способы записать похожую идею
Для full-range 8-bit кодов доступны 256 уровней на канал: 0–255. 10-bit даёт 1024 кода: 0–1023. Номинальные видеоуровни 64–940 относятся к 10-bit luma и соответствующему video-range RGB; у цветоразностных компонентов другой номинальный интервал, обычно 64–960 с нейтралью 512. Float может хранить значения вне 0–1. Разрядность, диапазон и охват описывают разные ограничения.
Что это означает на практике
Ползунок разрядности в опыте меняет шаг округления, а не спектры primaries. Больше кодов уменьшает ошибку квантования при тех же условиях, но не превращает sRGB в P3 и не гарантирует отсутствие полос после тяжёлой обработки или сжатия.
Как RGB переводится из одного пространства в другое
Если две RGB-системы описаны через CIE coordinates и white point, linear RGB можно преобразовать через матрицы, часто с промежуточным XYZ. Если white points различаются, может понадобиться chromatic adaptation. Если target gamut уже исходного, одного matrix transform недостаточно для красивого поведения out-of-gamut цветов — появляется задача gamut mapping.
Что это означает на практике
Сначала снимите передаточную функцию, затем преобразуйте линейные координаты, потом закодируйте выход. Для sRGB и Display P3 белый D65 общий, поэтому отдельная адаптация белого в нашем опыте не нужна. Случайная матрица поверх нелинейных кодов решает другую задачу.
Отрицательные и >1 значения не всегда ошибка
Отрицательная RGB-компонента после преобразования обычно означает, что цвет лежит вне положительных смесей выбранных primaries; это не «отрицательный свет». Значение выше 1 может означать превышение опорного уровня, а не обязательно ошибку файла. Float сохраняет такие числа для дальнейшей обработки, но не гарантирует, что каждый инструмент работает с ними корректно. Раннее отсечение уничтожает информацию, которую последующие преобразования могли бы использовать.
Что это означает на практике
Проверяйте значения до финального вывода, а не стирайте все отрицательные компоненты после каждой ноды. На границе ограниченного целевого пространства всё равно понадобится осознанная обработка. Сохранить float — значит сохранить возможность решения, а не уже решить задачу отображения.
Alpha — не четвёртый цветовой канал
Alpha обычно описывает transparency или coverage. В premultiplied representation RGB уже умножен на alpha, в straight/unpremultiplied — хранится отдельно. Для compositing это критично, но alpha не расширяет цветовой gamut и не является дополнительным primary.
Что это означает на практике
При straight RGB значение цвета может существовать даже при нулевой alpha; в premultiplied форме оно умножено на alpha. Деление на ноль не восстанавливает скрытый цвет. Для прозрачных краёв важно знать, в каком виде данные ожидает следующий инструмент.
Что RGB означает внутри Resolve
В Resolve один и тот же pixel может последовательно существовать как camera-space RGB, timeline/working RGB и output/display RGB. Поэтому вопрос «какие здесь RGB?» всегда должен продолжаться вопросом «в каком color space и gamma находится нода в этой точке pipeline?».
Что это означает на практике
Название рабочего пространства и кривая должны быть известны до настройки эффекта или LUT. Не добавляйте CST только потому, что он есть в чужом проекте: RCM или ACES могут уже выполнять нужное преобразование. Проверяйте состояние сигнала в выбранной точке.
МОДЕЛЬ, КОТОРУЮ МОЖНО ПРОВЕРИТЬ
Одно число в разных ролях
Держите рядом смысл, расчёт и границу применимости.
sRGB⁻¹(0.5) ≈ 0.214041; sRGB(0.5) ≈ 0.735357Слева: декодирование значения 0.5. Справа: кодирование половины линейного уровня. Это относительные числа, не ниты и не модель субъективной светлоты.
| Понятие | Что описывает | Какой вывод делать нельзя |
|---|---|---|
| 0.5 linear | Половина выбранного линейного вклада. | Не обязательно код 128 и не «вдвое темнее на глаз». |
| 0.5 sRGB | Нелинейный код; примерно 0.214 linear. | Не половина физического света. |
| 8 / 10 bit | 256 / 1024 дискретных кода на канал. | Не размер цветового охвата. |
| Alpha | Прозрачность или покрытие в композитинге. | Не четвёртый основной цвет. |
СДЕЛАТЬ. СРАВНИТЬ. ОБЪЯСНИТЬ.
Из света — в код, без подмены математики.
Все значения в лаборатории — относительные. Не выставляйте по ним яркость реального дисплея и не переносите их на Log без соответствующей функции.
- 01
Начните с нейтрали
Включите пресет половины линейного уровня. Сверьте три вклада и sRGB-коды.
ПРОВЕРКАВсе каналы равны, код примерно 188 при 8 bit.
- 02
Отделите один канал
Уберите два вклада, оставив R. Затем верните G и B.
ПРОВЕРКАМеняется смесь, а определения primaries остаются sRGB.
- 03
Смените разрядность
Выберите 10 bit и затем диагностический режим 3 bit.
ПРОВЕРКАШаг округления меняется; ступени 3 bit не выданы за обычное видео.
- 04
Сравните два усреднения
В режиме смешивания переместите долю между чёрным и белым. Сопоставьте код и линейный вклад.
ПРОВЕРКАМожете объяснить, почему одинаковая доля не гарантирует одинаковый результат двух методов.
Проверьте понимание
ПРОВЕРЬТЕ СВОЁ ОБЪЯСНЕНИЕ
Ситуация, а не вопрос с подвохом.
Сначала сформулируйте ответ. Затем откройте разбор.
01Почему ползунок 0.5 даёт 188, а не 128?+
Ползунок задаёт линейный вклад. Для показа он кодируется sRGB, где 0.5 linear превращается примерно в 0.735. После округления к 8-bit сетке это 188.
02Почему float не спас от обрезанных светов?+
Float хранит широкий диапазон значений, но не возвращает детали, уже потерянные на съёмке или ранее отсечённые. Проверьте, где именно произошло ограничение, вместо смены формата вслепую.
03Будет ли HEX разным в любом приложении?+
Нет: CSS определяет HEX через sRGB. Неопределённость относится к данным без известного контекста и к нарушенному воспроизведению, а не к отсутствию определения у самого CSS-формата.
Не сокращайте объяснение до этих ошибок
- Считать 255,0,0 одним универсальным красным.
- Путать linear RGB с gamma/log-encoded RGB.
- Считать alpha четвёртым primary.
- Клиповать отрицательные/>1 working values слишком рано.
От модели — к рабочему процессу.
Главное практическое правило: RGB без контекста — просто числа. Перед любым CST, LUT или ручным transform сначала установите, что эти числа означают на входе.
ПРОВЕРЯЙТЕ ПЕРВООСНОВУ
Источники и границы моделей.
Редакционная проверка: 30 сентября 2026. Ссылки указывают на определения и формулы; упражнения — самостоятельные учебные примеры.
- [5]ICC · sRGB ↗
Координаты основных цветов, D65 и составная передаточная функция.
- [7]W3C · CSS Color 4 ↗
Определения и численные преобразования. Candidate Recommendation Draft от 26.09.2026, не окончательная Recommendation.
- [8]ITU-R · BT.709-6 ↗
Параметры HDTV; не универсальный пресет для любого файла.
- [10]Blackmagic Design · Color ↗
Практическая связь с управлением цветом и инструментами Resolve.