Дитерпанк
Дитерпанк или Дизерпанк (от англ. dithering — дизеринг и punk) — это термин, обозначающий стиль и технику создания изображений, основанную на намеренном добавлении шума и использовании ограниченной палитры цветов, как в старых видеоиграх (8-бит, 16-бит) и графике ранних компьютеров, имитируя зернистость, текстуры и создавая иллюзию большего количества оттенков там, где их нет, при этом сохраняя эстетику "лоу-фай" и "ретро". Это искусство "хака" ограниченных возможностей графики, где вместо плавных переходов используются точки и узоры из доступных цветов.
Ключевые аспекты дизерпанка:
- Дизеринг (Dithering): Техника размещения пикселей разных цветов рядом, чтобы мозг воспринимал это как промежуточный тон, обманывая квантование цвета и создавая иллюзию градиентов.
- Ограниченная палитра: Использование малого количества цветов (как в ретро-играх, например, 16 или 256 цветов) для создания изображений.
- Эстетика: Возвращение к артефактам старой цифровой графики — зернистости, пикселизации, полосам, "шуму" — как к художественному приему, а не как к недостатку.
- Применение: Часто встречается в цифровом искусстве, дизайне, видеоиграх (для стилизации) и даже в музыке (лоу-фай, чиптюн).
- Философия: Это "панк"-подход, где из недостатков (ограничения палитры) рождается новый, узнаваемый стиль, своего рода "шумная" эстетика.
Термин не имеет строгого научного определения, он скорее описывает культурное и стилистическое явление в цифровом искусстве, тесно связанное с техниками обработки изображений, такими как дизеринг.
Что такое дитеринг?
Дитеринг (или размытие ступеней, от англ. dithering) — это техника, используемая в компьютерной графике для обмана человеческого зрения. Представьте, что у вас есть только черная и белая краски, но нужно нарисовать серый цвет. Если вы смешаете их в одну сплошную грязную массу — получится некрасиво. Но если вы нарисуете множество мелких черно-белых точек в шахматном порядке, то с расстояния наш глаз сам смешает их и увидит серый цвет.
Дитеринг делает то же самое: он добавляет в области плавных переходов случайный шум или упорядоченный узор из пикселей разных цветов. Этот шум "разбивает" четкие границы между полосами при бандинге, заставляя наш мозг воспринимать изображение, как более плавное и цельное.
https://visualrambling.space/dithering-part-1/
Как это работает технически в контексте бандинга?
Бандинг (от англ. banding — образование полос)
— это артефакт в компьютерной графике, который проявляется в виде видимых ступенчатых полос или градиентов на участках, которые должны быть гладкими и непрерывными.
Представьте, что вам нужно нарисовать переход от черного цвета к белому, но у вас есть только 5 оттенков серого. Вы не сможете сделать это плавно — переход будет состоять из 5 четких полос. Это и есть бандинг.
Проблема возникает из-за ограниченной глубины цвета (битности). Когда для хранения цвета пикселя выделяется недостаточно бит информации (чаще всего 8 бит на канал, что дает 256 оттенков на цвет), графическому процессу не хватает промежуточных значений, чтобы точно отобразить плавный переход. В результате близкие, но разные оттенки "склеиваются" в один, и мы видим резкий скачок — полосу.
- Есть проблема: У вас есть градиент с бандингом — 3 крупные полосы (например, темно-серый, серый, светло-серый).
- Применяется дитеринг: Графический процессор добавляет к каждому пикселю небольшую случайную погрешность (шум). Пиксели на границе полос начинают "перемешиваться".
- Результат для мозга: Вместо четкой линии глаз видит шумную, зернистую границу. Мозг интерпретирует эту область не как резкий скачок, а как более плавный переход, потому что шум маскирует идеальную геометрию полос.
Какие алгоритмы дитеринга существуют?
Алгоритмы дитеринга делятся на две большие группы: упорядоченные (Ordered Dithering) и диффузионные (Error-Diffusion Dithering).
Упорядоченный дитеринг (Ordered Dithering)
Принцип: Используется заранее заданная матрица (паттерн) для определения порога, с которым сравнивается яркость пикселя. Это быстро, детерминировано и не зависит от соседних пикселей, что идеально для параллельных вычислений в шейдерах.
Основные алгоритмы:
a) Dither Patterns (Байеровский дитеринг / Bayer Matrix)
Самый популярный метод в реальном времени.
- Как работает: Используется матрица NxN (чаще всего 2x2, 4x4, 8x8), которая содержит пороговые значения. Эта матрица тайлится (повторяется) по всему экрану. Текущий пиксель сравнивается с значением в матрице, и на основе этого решается, округлять его яркость вверх или вниз.
- Паттерны: Чем больше матрица (например, 8x8), тем более качественный и менее заметный узор она создает.
- Где используется: Практически во всех современных играх и движках. Именно этот метод встроен в шейдеры для борьбы с бандингом, для alpha-clipping (траву, листья) и для дешевой симуляции прозрачности.
Например: Нода Dither в Shader Graph в Unity по умолчанию использует упорядоченный Bayer Matrix (8x8).
b) Blue Noise Dithering (Синий шум)
Более современный и качественный метод.
- Как работает: Используется текстура, содержащая "синий шум" — особый тип шума, где спектральная энергия сосредоточена на высоких частотах, а низкочастотные компоненты минимальны. Это делает паттерн дитеринга менее заметным и более приятным глазу, чем байеровская сетка.
- Преимущество: Узор выглядит как однородное, мелкое "зерно", а не как повторяющаяся структура. Он лучше маскирует артефакты.
- Недостаток: Требует заранее сгенерированной текстусы (предрасчет), а не простой матрицы.
- Где используется: В продвинутых рендерерах и в тех случаях, когда качество визуала критически важно. Становится все популярнее в играх.
Диффузионный дитеринг (Error-Diffusion Dithering)
Принцип: При квантовании пикселя (округлении его цвета) возникает ошибка. Эта ошибка "распределяется" (диффундируется) на соседние, еще не обработанные пиксели. Это дает более высокое качество, но является последовательным алгоритмом.
Основные алгоритмы:
a) Floyd–Steinberg Dithering (Флойда-Стейнберга)
Самый известный алгоритм этой группы.
- Как работает: Ошибка от текущего пикселя распределяется на 4 соседних пикселя с определенными весами (7/16, 3/16, 5/16, 1/16).
- Преимущество: Дает очень качественный результат, похожий на газетную печать.
- Недостаток: Алгоритм последовательный, его нельзя эффективно распараллелить для шейдеров, так как обработка каждого следующего пикселя зависит от предыдущего.
- Где используется: В основном в статичной обработке изображений (Photoshop, при печати, конвертации цветов). В реальном времени не используется из-за неприемлемой производительности.
b) Другие алгоритмы Error-Diffusion
- Jarvis-Judice-Ninke: Распределяет ошибку на большее количество пикселей, результат еще качественнее, но медленнее.
- Sierra, Atkinson: Вариации с разными матрицами распределения ошибки.
Примеры Дизайн-решений с приминением дитеринг обработки
Где можно попробовать эффекты дитеринга?
Прилагаю к статье ряд ссылок с серисами где можно обработать изображение с применением эффектов дитеринга.