Цветоведение и инженерия

OKLCH против HSL:
почему пиксель-арту нужен перцептуальный цвет

Десятилетиями программы для цифрового рисования использовали HSL и HSV. Несмотря на математическую простоту, HSL не учитывает особенности человеческого зрения, создавая несбалансированные тени и неравномерный контраст.

1. Фундаментальный изъян светлоты в HSL

В пространстве HSL чистый жёлтый (#FFFF00) и чистый синий (#0000FF) имеют абсолютно одинаковое значение светлоты: L = 50%.

Однако человеческий глаз воспринимает жёлтый значительно ярче синего. В пространстве OKLCH (разработанном Бьёрном Оттоссоном в 2020 году) это исправлено:

#FFFF00 (Жёлтый)
Светлота HSL: 50%
Светлота OKLCH: 96.8% (воспринимаемая)
#0000FF (Синий)
Светлота HSL: 50%
Светлота OKLCH: 45.2% (воспринимаемая)

2. Рампы затенения и грязные переходы

При создании цветового рампа в HSL линейный шаг светлоты даёт разный контраст для разных тонов. Синий рамп выглядит тёмным и сплюснутым, а жёлтый моментально выгорает в белый.

OKLCH моделирует светлоту (L) по перцептуально равномерной шкале. Шаг +10% ощущается глазом одинаково ярко в бирюзовом, фиолетовом или янтарном диапазоне.

Попробуйте сами

Создайте палитру с перцептуальным балансом в генераторе.