Что такое постобработка и как её используют в играх
Разбираем примеры и изучаем технику наложения фильтров в движке.
Скриншот: игра Control / Remedy Entertainment
Сейчас сложно найти визуальный контент без постобработки — к ней относятся не только визуальные эффекты в голливудских фильмах и на красочных разворотах журналов, но и простые фильтры в камере смартфона. В игровой индустрии без этой технологии не обходится ни один современный проект. В нашем материале вы узнаете о самых распространённых техниках постобработки и как её настроить для проекта в UE4 и UE5.
Общее определение
В контексте игр постобработка, или постпроцессинг, — это техника наложения различных визуальных эффектов. После того как игровой движок обработал исходные кадры и готов вывести их на экран, следует ещё одна стадия рендеринга, во время которой на изображение накладываются дополнительные шейдеры и фильтры.
Чем их больше, тем больше требуется времени и ресурсов на обработку финального изображения — поэтому, когда железо слабое, игрокам приходится сводить постобработку к минимуму, чтобы избежать падения частоты кадров в секунду.
Для чего нужна постобработка?
Основная цель постобработки — улучшить графику, подчеркнуть атмосферу и сформировать уникальный визуальный стиль, чтобы сделать игру более привлекательной и самобытной.
Постобработку также используют для скрытия артефактов или текстур с низким разрешением. Некоторые техники снижают видимость объектов дальнего плана, что «облегчает» сцену, уменьшая объём вычислений на этапе рендеринга.
В современных играх постобработка даёт дополнительный простор для творчества. Почти в каждом AAA-проекте есть функция фоторежима, в котором можно не только настроить ракурс камеры, но и самостоятельно отрегулировать яркость, контрастность, глубину фокуса, цветовую гамму. Иногда разработчики добавляют уникальные настройки шейдинга.
примечание
Если настроек, предоставленных разработчиками, недостаточно, на помощь приходят сторонние инструменты постобработки с готовыми фильтрами. Можно легко интегрировать их в игру и самостоятельно экспериментировать с сочетаниями эффектов. Самая известная из таких программ — 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.
Сейчас во многих современных играх существует поддержка трассировки лучей (Ray Tracing). Эта технология симулирует физически корректное распространение света в реальном времени, что даёт максимально достоверные результаты. Но так как трассировка лучей требует мощного железа и видеокарты с поддержкой RTX, то SSAO и SSLR остаются актуальными.
Эффект тумана (Fog)
Наложение цвета (не системы частиц) на объекты дальнего плана. Создаёт имитацию дымки на открытом воздухе, а также скрывает объекты, расположенные далеко от игрока, что помогает лучше оптимизировать уровень.
Размытие в движении (Motion Blur)
В реальной жизни резкое движение объектива или модели во время съёмки создаёт размытие, так как скорость движения превышает время выдержки камеры. В компьютерной графике этот реалистичный эффект усиливает динамику и ощущение скорости персонажа при быстрых перебежках и уворотах. Обычно размытие в движении распространяется на дальний план, но может и на всю сцену — например, при передвижении на скоростном транспортном средстве.
Ситуативные техники постобработки
Глубина резкости (Depth of Field)
При нужных настройках камера может сфокусироваться только на определённых объектах, а остальные детали в кадре будут размыты по аналогии с эффектом боке. Технику часто используют в кат-сценах, чтобы сделать кадры более кинематографичными или акцентировать внимание игрока на конкретных деталях.
Свечение (Bloom)
Имитация оптического эффекта в ярких областях, когда излучаемый свет «размывается» на границах контрастных контуров.
Цветокоррекция (Color grading)
Используется для изменения или усиления цветовой гаммы сцены, что схоже с фильтрами для обработки фотографий в соцсетях. Цветокоррекцию используют, чтобы создать специфическую атмосферу — например, в сценах, связанных с воспоминаниями или видениями, — но чаще всего её можно встретить в фоторежимах.
Хроматическая аберрация (Chromatic Aberration)
Эффект искажения, в результате которого на краях объекта появляются красные и синие ореолы. Его часто используют в эпизодах, когда психика главного героя пошатывается и он видит галлюцинации.
Виньетирование (Vignette)
Создаётся фокус на центр кадра за счёт затемнения изображения по краям. В играх часто используется для привлечения внимания игрока, например в диалогах или при обнаружении предмета.
Зернистость (Grain)
Эффект шума, который может быть как цифровым (цветным), так и плёночным (монохромным). Часто встречается в хоррорах, иногда — в качестве детектора: когда враждебное существо рядом и персонажу грозит опасность, зернистость резко увеличивается.
Постобработка в игровом движке
Рассмотрим простой пример постобработки, используя шаблон Third Person в Unreal Engine 5.
Базовые настройки постобработки, которые движок устанавливает по умолчанию, можно найти в разделе рендеринга: Правка (Edit) — Настройки проекта (Project Settings) — Движок (Engine) — Rendering — Default Settings.
Помимо сглаживания, свечения, размытия в движении и остальных знакомых параметров, можно встретить Автоматическую экспозицию (Auto Exposure). Эта опция отвечает за автоматическую коррекцию света на светлых и тёмных участках. Именно из-за неё при резких переходах из тёмной среды в светлую возникают небольшие вспышки, так как в этот момент рассчитывается оптимальное освещение для локации. Подобные скачки света могут оказаться критичными, если речь идёт о съёмках кат-сцен.
Как и в четвёртой версии движка, в Unreal Engine 5 художественная постобработка создается за счёт Post Process Volume — специальных зон, в рамках которых действуют выбранные эффекты. Эти зоны могут охватывать как всю сцену, так и её отдельные части, что позволяет делить сцену на несколько невидимых участков и задавать уникальные настройки для каждого.
По умолчанию в шаблоне Third Person уже есть небесный свет (SkyLight), отвечающий за основное освещение сцены. Для наглядности мы отключили автоэкспозицию и построили небольшое подобие комнаты. Вход в неё расположен так, что свет практически не проникает внутрь, поэтому в помещении очень темно.
В верхней панели инструментов выбираем быстрое добавление объекта (иконка с кубом и знаком плюс). В списке ищем Визуальные эффекты (Visual Effects) — PostProcessVolume. В сцене появляется рамка-пустышка. Настраиваем её размер таким образом, чтобы она охватила всю постройку — эффекты будут действовать только в пределах этих границ.
Открываем свойства Post Process Volume в панели Сведения (Details) и нажимаем кнопку Все (All) — после этого в меню появятся все настройки постобработки.
Первым делом настраиваем экспозицию в параметре Exposure — Компенсация экспозиции (Exposure Compensation). За счёт этого в тёмном пространстве станет намного светлее. А дальше экспериментируем с другими эффектами, которые были описаны ранее. В нашем примере помимо локальной экспозиции задействованы Depth of Field — Фокусное расстояние (Focal Distance), Bloom — Интенсивность (Intensity) и Цветокоррекции (Color Grading) — общая Global, Midtones для полутонов и Highlights для ярких участков.
Ниже в списке есть дополнительные настройки освещения для каждой зоны Post Process Volume. В них можно выбрать метод Глобального освещения (Global Illumination) — Lumen, Screen Space или Plugin (использовать плагин для глобального освещения); увеличить интенсивность и радиус Ambient Occlusion; отредактировать параметры трассировки лучей в Ray Tracing Ambient Occlusion и их свойства Ray Tracing Transfluency.
примечание
Если постобработка должна применяться ко всей сцене, то границы Post Process Volume не нужно растягивать на всю площадь. Достаточно найти в Сведениях (Details) параметр Post Process Volume Settings и отметить пункт Infinite Extent (Unbound) галочкой.
Зоны постобработки в Unreal Engine работают как стандартные акторы: их можно дублировать, размещать на разных участках сцены и индивидуально настраивать. А ещё Post Process Volume с разными свойствами можно накладывать друг на друга и получать комбинированный эффект.
примечание
Возможности Post Process Volume в Unreal Engine не ограничиваются стандартными косметическими эффектами и технологиями освещения. В постобработку можно подключать материалы для дополнительных эффектов, начиная от цветокоррекции и фильтров до полноценного сел-шейдинга. Их можно найти в Сведениях (Details) — Особенности отрисовки (Rendering Features) — Post Process Materials — Array.
В версии 5.4 данная функция в настоящий момент отсутствует. Для получения стилизованных эффектов в ней придётся либо пользоваться уже существующими настройками в Особенностях отрисовки (Rendering Features), либо настраивать материалы по отдельности в графе или через блюпринты.
Подведём итоги
С помощью постобработки можно улучшить визуальный стиль проекта, добавить ему зрелищности и атмосферности. Поэтому её активно используют в компьютерной графике не только в рамках видеоигр, но и для статичных рендеров и анимационных фильмов.
Важно помнить, что наложение эффектов происходит уже после рендеринга исходных кадров и наличие постобработки может негативно повлиять на общую производительность, особенно на максимальных настройках. «Тяжёлые» эффекты вроде трассировки лучей потребуют серьёзных затрат ресурсов.
Несмотря на то, что современные системы успешно справляются с вызовами новых технологий, многие игроки до сих пор выставляют средние настройки, чтобы лишний раз не нагружать видеокарту. А если речь идёт о соревновательных играх, то визуальные эффекты стараются свести к минимуму или вовсе отключить, так как даже несколько лишних кадров в секунду могут стать залогом победы. К тому же некоторые эффекты могут отвлекать от игрового процесса.
Поэтому рецепт постобработки во многом зависит от специфики проекта. Качественного игрового опыта можно добиться, только если оптимально сбалансировать визуальную составляющую и производительность.