Эффекты

Дизеринг

Картинка ниже крупными пикселями и в нескольких цветах: матрица Байера, синий шум или градиентный шум превращают полутона в узор из точек.

  • эффект
  • бесшовный тайл
Открыть в редакторе →

Когда цветов мало — два у первого «Макинтоша», четыре оттенка у Game Boy, — полутон приходится изображать узором: часть пикселей светлее, часть темнее, и глаз их усредняет. Это и есть дизеринг. Им жили игры 8- и 16-битной эпохи и GIF с палитрой в 256 цветов, а сегодня он прячет полосы в градиентах видеоигр.

Как это устроено

Картинка разбивается на крупные пиксели («Пикселей» по короткой стороне), и для каждого выбираются два ближайших цвета, A и B. Какой показать, решает порог t из маски: если тон продвинулся от A к B дальше t — берётся B. Весь характер узора — в том, как разложены пороги.

Матрица Байера строится рекурсивно: каждая следующая вписывает предыдущую в четыре четверти в порядке 0, 2, 3, 1. Получается ровная «вышивка», а тон 50 % — идеальная шахматка. Синий шум — маска 32×32, которую слой строит при загрузке методом «пустот и скоплений»: на торе раз за разом ищутся самое тесное скопление точек и самая большая пустота, а порядок, в котором точки снимаются и добавляются, становится порогом. В таком шуме нет низких частот — зерно без комков и без сетки.

В режиме «палитра» слой подбирает для пикселя пару цветов документа, чья смесь в OKLab ближе всего к нужному, со штрафом за смешение далёких цветов. Диффузии ошибки здесь нет сознательно: она последовательна, пиксель за пикселем, и в анимации «кипит», а маска даёт узор, который не дрожит от кадра к кадру.

B₁ = 0, B₂ₙ = ⎡ 4Bₙ 4Bₙ + 2 ⎤ ⎣ 4Bₙ + 3 4Bₙ + 1 ⎦ t = (B + ½) / n², t′ = ½ + (t − ½)·«Сила» пиксель = B, если доля B в смеси > t′, иначе A

Немного истории

Брайс Байер из Kodak опубликовал свою матрицу в 1973 году — тот самый Байер, чей цветной фильтр стоит почти в каждой цифровой камере. В 1976 году Роберт Флойд и Луис Стейнберг предложили диффузию ошибки: пиксель округляется, а ошибка раздаётся соседям с весами 7/16, 3/16, 5/16 и 1/16. Роберт Улични (Robert Ulichney) в 1987 году показал, что лучший узор — «синий», без низких частот, а в 1993-м придумал метод пустот и скоплений. Градиентный шум описал Хорхе Хименес в 2014 году для Call of Duty: Advanced Warfare. А 1-битная игра «Return of the Obra Dinn» Лукаса Поупа (2018) доказала, что дизеринг — это ещё и стиль.

Что покрутить

  • «Порог»: «Байер 4×4» и «Байер 8×8» — узор старых игр, «синий шум» — зерно, похожее на печать, «градиентный шум» — мелкая диагональная рябь.
  • «Цвета» → «1 бит» и «Пикселей» около 300 — ранний «Макинтош»; «уровни RGB» с «Уровнями» 2 дают восемь цветов первых домашних компьютеров.
  • «Сила» 0 отключает узор и оставляет чистую постеризацию — сравните, сколько полутонов дизеринг возвращает при тех же цветах.
  • Лучше всего видно, как узор передаёт тон, на плавных «Градиентной сетке» и «Фрактальном шуме»; поверх «Странных аттракторов» 1 бит превращает облако точек в гравюру.

Параметры

Цвета
палитра · 1 бит · уровни RGB
Порог
Байер — ровная сетка, как в старых играх; синий шум и градиентный шум — зернистее и живее Байер 2×2 · Байер 4×4 · Байер 8×8 · синий шум · градиентный шум
Пикселей
Сколько пикселей укладывается по короткой стороне — от крупного пиксель-арта до тонкой печати
Сила
Ноль — просто ближайший цвет без узора
Контраст
Уровни
Сколько ступеней в каждом канале в режиме RGB
Краска
Для режима «1 бит»
Бумага
Для режима «1 бит»