Геймдев
#статьи

Что такое постобработка и как её используют в играх

Разбираем примеры и изучаем технику наложения фильтров в движке.

Скриншот: игра Control / Remedy Entertainment

Сейчас сложно найти визуальный контент без постобработки — к ней относятся не только визуальные эффекты в голливудских фильмах и на красочных разворотах журналов, но и простые фильтры в камере смартфона. В игровой индустрии без этой технологии не обходится ни один современный проект. В нашем материале вы узнаете о самых распространённых техниках постобработки и как её настроить для проекта в UE4 и UE5.

Общее определение

В контексте игр постобработка, или постпроцессинг, — это техника наложения различных визуальных эффектов. После того как игровой движок обработал исходные кадры и готов вывести их на экран, следует ещё одна стадия рендеринга, во время которой на изображение накладываются дополнительные шейдеры и фильтры.

Чем их больше, тем больше требуется времени и ресурсов на обработку финального изображения — поэтому, когда железо слабое, игрокам приходится сводить постобработку к минимуму, чтобы избежать падения частоты кадров в секунду.

Для чего нужна постобработка?

Основная цель постобработки — улучшить графику, подчеркнуть атмосферу и сформировать уникальный визуальный стиль, чтобы сделать игру более привлекательной и самобытной.

Постобработку также используют для скрытия артефактов или текстур с низким разрешением. Некоторые техники снижают видимость объектов дальнего плана, что «облегчает» сцену, уменьшая объём вычислений на этапе рендеринга.

В современных играх постобработка даёт дополнительный простор для творчества. Почти в каждом AAA-проекте есть функция фоторежима, в котором можно не только настроить ракурс камеры, но и самостоятельно отрегулировать яркость, контрастность, глубину фокуса, цветовую гамму. Иногда разработчики добавляют уникальные настройки шейдинга.

Модификатор сел-шейдинга в The Last of Us Part 2, добавленный в игру в обновлении 1.05
Скриншот: игра The Last of Us Part 2 / Naughty Dog

примечание

Если настроек, предоставленных разработчиками, недостаточно, на помощь приходят сторонние инструменты постобработки с готовыми фильтрами. Можно легко интегрировать их в игру и самостоятельно экспериментировать с сочетаниями эффектов. Самая известная из таких программ — ReShade.

Что входит в постобработку?

Набор визуальных эффектов достаточно ситуативен и зависит от общего стиля игры, а также от технических возможностей игрового движка или системы рендеринга.

Основные техники постобработки

Сглаживание (Anti-Aliasing)

Устраняет эффект зубчатых краёв объектов в реальном времени, делая их более гладкими. Существует несколько технологий сглаживания, но все они выполняют одну и ту же функцию: делают резкий пиксельный контур более плавным.

Ambient Occlusion (AO)

Создаёт естественные тени в сцене, имитируя затемнение внутренних углов, складок, отверстий и пересечений объектов. В совокупности это придаёт картинке дополнительную глубину. Screen Space Ambient Occlusion (SSAO) часто используют для генерации затенения объектов в помещении, куда не доходят лучи из внешней среды, то есть при статическом освещении. При динамическом освещении в Unreal Engine используют технологию Distance Field Ambient Occlusion (DFAO).

Screen Space Local Reflections (SSLR)

Обеспечивает более реалистичное отражение объектов на поверхностях вроде мокрого пола и асфальта, глянцевой плитки. Данная техника сказывается на производительности, но всегда вызывает вау-эффект.

Более подробно о реализации SSLR в AAA-играх можно ознакомиться в статье на Habr.

Скриншот: игра Cyberpunk 2077 / CD Projekt RED

Сейчас во многих современных играх существует поддержка трассировки лучей (Ray Tracing). Эта технология симулирует физически корректное распространение света в реальном времени, что даёт максимально достоверные результаты. Но так как трассировка лучей требует мощного железа и видеокарты с поддержкой RTX, то SSAO и SSLR остаются актуальными.

Эффект тумана (Fog)

Наложение цвета (не системы частиц) на объекты дальнего плана. Создаёт имитацию дымки на открытом воздухе, а также скрывает объекты, расположенные далеко от игрока, что помогает лучше оптимизировать уровень.

Скриншот: игра Assassin’s Creed Odyssey / Ubisoft Montreal

Размытие в движении (Motion Blur)

В реальной жизни резкое движение объектива или модели во время съёмки создаёт размытие, так как скорость движения превышает время выдержки камеры. В компьютерной графике этот реалистичный эффект усиливает динамику и ощущение скорости персонажа при быстрых перебежках и уворотах. Обычно размытие в движении распространяется на дальний план, но может и на всю сцену — например, при передвижении на скоростном транспортном средстве.

via GIPHY

GIF: The Witcher 3: Wild Hunt / CD Projekt RED

Ситуативные техники постобработки

Глубина резкости (Depth of Field)

При нужных настройках камера может сфокусироваться только на определённых объектах, а остальные детали в кадре будут размыты по аналогии с эффектом боке. Технику часто используют в кат-сценах, чтобы сделать кадры более кинематографичными или акцентировать внимание игрока на конкретных деталях.

Пример с увеличенной глубиной резкости при взаимодействии с NPC
Скриншот: игра Assassin’s Creed Valhalla / Ubisoft Montreal

Свечение (Bloom)

Имитация оптического эффекта в ярких областях, когда излучаемый свет «размывается» на границах контрастных контуров.

Цветокоррекция (Color grading)

Используется для изменения или усиления цветовой гаммы сцены, что схоже с фильтрами для обработки фотографий в соцсетях. Цветокоррекцию используют, чтобы создать специфическую атмосферу — например, в сценах, связанных с воспоминаниями или видениями, — но чаще всего её можно встретить в фоторежимах.

Цветокоррекция с эффектом сепии подчёркивает, что сцена происходит в прошлом
Скриншот: игра The Dark Pictures Anthology: Little Hope / Supermassive Games

Хроматическая аберрация (Chromatic Aberration)

Эффект искажения, в результате которого на краях объекта появляются красные и синие ореолы. Его часто используют в эпизодах, когда психика главного героя пошатывается и он видит галлюцинации.

Здесь эффект лучше всего заметен по краям изображения
Скриншот: игра Layers of Fear / Bloober Team

Виньетирование (Vignette)

Создаётся фокус на центр кадра за счёт затемнения изображения по краям. В играх часто используется для привлечения внимания игрока, например в диалогах или при обнаружении предмета.

Встречается и одностороннее виньетирование, которое не только акцентирует внимание на объекте, но и даёт игроку возможность комфортно прочитать текст на экране
Скриншот: игра Assassin’s Creed Valhalla / Ubisoft Montreal

Зернистость (Grain)

Эффект шума, который может быть как цифровым (цветным), так и плёночным (монохромным). Часто встречается в хоррорах, иногда — в качестве детектора: когда враждебное существо рядом и персонажу грозит опасность, зернистость резко увеличивается.

Скриншот: игра Blair Witch / Bloober Team

Постобработка в игровом движке

Рассмотрим простой пример постобработки, используя шаблон Third Person в Unreal Engine 5.

Базовые настройки постобработки, которые движок устанавливает по умолчанию, можно найти в разделе рендеринга (Edit — Project Settings — Engine — Rendering — Postprocessing — Default Settings).

Скриншот: Unreal Editor / Epic Games

Помимо сглаживания, свечения, размытия в движении и остальных знакомых параметров, можно встретить Auto Exposure. Эта опция отвечает за автоматическую коррекцию света на светлых и тёмных участках. Именно из-за неё при резких переходах из тёмной среды в светлую возникают небольшие вспышки, так как в этот момент рассчитывается оптимальное освещение для локации. Подобные скачки света могут оказаться критичными, если речь идёт о съёмках кат-сцен.

via GIPHY

Скачок света при переходе из закрытого помещения наружу с включённой автоэкспозицией
GIF: Unreal Editor / Epic Games

Как и в четвёртой версии движка, в Unreal Engine 5 художественная постобработка создается за счёт Post Process Volume — специальных зон, в рамках которых действуют выбранные эффекты. Эти зоны могут охватывать как всю сцену, так и её отдельные части, что позволяет делить сцену на несколько невидимых участков и задавать уникальные настройки для каждого.

По умолчанию в шаблоне Third Person уже есть небесный свет (SkyLight), отвечающий за основное освещение сцены. Для наглядности мы отключили автоэкспозицию и построили небольшое подобие комнаты. Вход в неё расположен так, что свет практически не проникает внутрь, поэтому в помещении очень темно.

В верхней панели инструментов выбираем быстрое добавление объекта (иконка с кубом и знаком плюс). В списке ищем Visual Effects — PostProcessVolume. В сцене появляется рамка-пустышка. Настраиваем её размер таким образом, чтобы она охватила всю постройку — эффекты будут действовать только в пределах этих границ.

via GIPHY

Создание Post Process Volume для отдельной зоны
GIF: Unreal Editor / Epic Games

Открываем свойства Post Process Volume (панель Details) и нажимаем кнопку All — после этого в меню появятся все настройки постобработки.

Меню с настройками постобработки
Скриншот: Unreal Editor / Epic Games

Первым делом настраиваем экспозицию в параметре Exposure — Exposure Compensation. За счёт этого в тёмном пространстве станет намного светлее. А дальше экспериментируем с другими эффектами, которые были описаны ранее. В нашем примере помимо локальной экспозиции задействованы Depth of Field (Focal Distance), Bloom (Intensity) и Color Grading — общая (Global), для полутонов (Midtones) и ярких участков (Highlights).

Ниже в списке есть дополнительные настройки освещения для каждой зоны Post Process Volume. В них можно выбрать тип глобального освещения (Global Illumination) — SSAO, Lumen или Ray Tracing; увеличить интенсивность и радиус Ambient Occlusion; отредактировать параметры трассировки лучей (Ray Tracing Ambient Occlusion) и их свойства (Ray Tracing Transfluency).

примечание

Если постобработка должна применяться ко всей сцене, то границы Post Process Volume не нужно растягивать на всю площадь. Достаточно найти в Details параметр Post Process Volume Settings и отметить пункт Infinite Extent (Unbound) галочкой.

via GIPHY

Настройку можно найти быстрее, набрав название пункта в строке поиска
GIF: Unreal Editor / Epic Games

Зоны постобработки в Unreal Engine работают как стандартные акторы: их можно дублировать, размещать на разных участках сцены и индивидуально настраивать. А ещё Post Process Volume с разными свойствами можно накладывать друг на друга и получать комбинированный эффект.

via GIPHY

Пример нескольких зон Post Process Volume и их смешения
GIF: Unreal Editor / Epic Games

примечание

Возможности Post Process Volume в Unreal Engine не ограничиваются стандартными косметическими эффектами и технологиями освещения. В постобработку можно подключать материалы (Details — Rendering Features — Post Process Materials — Array) для дополнительных эффектов, начиная от цветокоррекции и фильтров до полноценного сел-шейдинга.

Видеоурок по настройке Post Process Materials

Подведём итоги

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

Важно помнить, что наложение эффектов происходит уже после рендеринга исходных кадров и наличие постобработки может негативно повлиять на общую производительность, особенно на максимальных настройках. «Тяжёлые» эффекты вроде трассировки лучей потребуют серьёзных затрат ресурсов.

Несмотря на то, что современные системы успешно справляются с вызовами новых технологий, многие игроки до сих пор выставляют средние настройки, чтобы лишний раз не нагружать видеокарту. А если речь идёт о соревновательных играх, то визуальные эффекты стараются свести к минимуму или вовсе отключить, так как даже несколько лишних кадров в секунду могут стать залогом победы. К тому же некоторые эффекты могут отвлекать от игрового процесса.

Кадр из фоторежима с настроенной цветокоррекцией и глубиной резкости
Скриншот: игра The Last of Us Part 2 / Naughty Dog

Поэтому рецепт постобработки во многом зависит от специфики проекта. Качественного игрового опыта можно добиться, только если оптимально сбалансировать визуальную составляющую и производительность.

Кто вы в мире геймдева? Узнайте на бесплатном курсе ➞
Вы на практике попробуете 3 профессии: геймдизайнера, 2D-художника и разработчика на Unity. Создадите свою первую игру в стиле Mario. Подробности — по клику.
Узнать больше
Понравилась статья?
Да

Пользуясь нашим сайтом, вы соглашаетесь с тем, что мы используем cookies 🍪

Ссылка скопирована