Один бит в Unity: процедурный дизеринг для эстетики туши

30.05.2026 Опубликовано | Переведено с испанского

Проект My Work Is Not Yet Done демонстрирует, что ужасу не нужен цвет. Используя палитру только из чистого белого и черного, его создатель применяет Unity и постобработку на C# для реализации дизеринга (сглаживания) в реальном времени. Результатом является гнетущая атмосфера, напоминающая рисунок тушью, доказывающая, что технические ограничения могут стать величайшим выразительным активом в разработке инди-игр.

Скриншот игры в черно-белых тонах с дизерингом, гнетущими тенями и текстурой туши в реальном времени

Техническая реализация дизеринга на C# для Unity 🎮

Для достижения этого эффекта необходимо создать скрипт постобработки, который перебирает каждый пиксель отрендеренного изображения. Ключевыми алгоритмами являются дизеринг Байера или Флойда-Стейнберга. Вместо простого порогового преобразования изображения (которое теряет детали), эти алгоритмы сравнивают значение серого каждого пикселя с матрицей порогов (в случае Байера) или распределяют ошибку квантования на соседние пиксели (Флойд-Стейнберг). В Unity это реализуется в шейдере или в скрипте, обрабатывающем камеру через OnRenderImage. Крайне важно отключить билинейную фильтрацию выходной текстуры и принудительно установить низкое разрешение для усиления эффекта пиксель-арта. Такие игры, как Return of the Obra Dinn, используют аналогичный подход, но с палитрой из 3 цветов, в то время как World of Horror применяет более статичный дизеринг. Для вашего проекта рекомендую начать с матрицы Байера 4x4, которая обеспечивает хороший баланс между производительностью и визуальным качеством.

Нарратив монохрома: почему черно-белое работает 🖤

Помимо техники, эстетический выбор обусловлен нарративной необходимостью. Радикальный черно-белый цвет устраняет отвлекающий фактор цвета, заставляя игрока сосредоточиться на формах, тенях и движении. Дизеринг, создавая зернистые текстуры, вызывает тревогу нервного наброска или потревоженной архивной фотографии. My Work Is Not Yet Done использует этот экстремальный контраст, чтобы скрывать детали в визуальном шуме, создавая ощущение паранойи. Если вы стремитесь к такому эффекту в своей игре, помните, что освещение должно быть очень контрастным; сильный направленный свет с жесткими тенями — идеальная основа для того, чтобы дизеринг проявил свою магию.

Для хоррор-игры, использующей палитру только из чистого белого и черного, как My Work Is Not Yet Done, как можно реализовать процедурный дизеринг в Unity для генерации 1-битных текстур, которые сохраняют визуальную читаемость и гнетущую атмосферу, не прибегая к оттенкам серого?

(P.S.: Оптимизация для мобильных устройств — это как пытаться запихнуть слона в Mini Cooper)