Что значит постобработка в играх
Что значит постобработка в играх
Это вторая часть нашего гайда. Первая, где собраны основные настройки вроде разрешения, качества текстур и теней, вы можете прочитать по ссылке.
Качество освещения (Lightning Quality)
То, насколько правдоподобно симулируется освещение в игре. Если это единственный подобный параметр в игре, то именно в эту настройку заложили уйму других, будь-то и объемный свет, и рассеивание лучей, и отражения, а иногда даже глобальное затенение. Освещение — это, пожалуй, вообще едва ли не самое основное из всего, что влияет на красоту картинки: оно делает ее объемной, натуралистичной, правдоподобной. Но и ресурсов все это дело «кушает» тоже немало. Именно поэтому, например, Nvidia так расхваливает свои новые RTX-видеокарты — они изначально разработаны под Ray Tracing — метод рендеринга, предполагающий правдоподобную симуляцию каждого луча.
Влияние на производительность
Зависит от движка, но почти во всех современных играх — очень сильное. Симулировать свет — это очень непросто, так что врубайте «ультра» только если у вас действительно мощная видеокарта.
Качество эффектов (Effects Quality)
Влияние на производительность
Тоже зависит от игры, чаще всего не особенно высокое. Но чем выше этот параметр, тем сильнее будет нагружаться ваша видеокарта в загруженных сценах, например, при масштабных перестрелках. Так что если игра начинает «подлагивать» в особо динамичные моменты, можно попробовать поиграться с этим ползунком, прежде чем снижать, например.
…Качество шейдеров (Shader Quality)
Шейдеры — это специальные программы для вашей видеокарты, исполняемые ее процессором. Грубо говоря, это такие «инструкции» от игры вашей GPU, по которым та понимает, как именно нужно отрисовывать тот или иной эффект. Чаще всего шейдеры используются для улучшения освещения, затенения, создания эффектов преломления лучей в воде (помните, как взрывала мозг та самая «шейдерная водичка из Half-Life 2: Lost Coast?), отражений, рассеиваний и так далее. Так что да, эта опция работает в тандеме с другими параметрами: качеством освещения и качеством теней. Существует три вида шейдеров: вершинные, геометрические и пиксельные, но игры, где можно отрегулировать качество каждого из них отдельно, встречаются невероятно редко.
Соответственно, чем выше качество шейдеров, тем лучше описанные выше эффекты, красивее тени и свет, реалистичнее геометрия — и тем сильнее нагрузка на видеокарту. Именно на видеокарту — потому что шейдеры считаются только GPU.
Влияние на производительность
Чаще всего — высокое. Например, в GTA V это один из самых «тяжелых» параметров в игре — снизив качество шейдеров с «Ультра» на средниее значение, вы получите прирост больше, чем в 15 FPS. Но бывает и так, что снижение этого параметра почти ничего не дает, как, например, в Mass Effect Anromeda.
За что отвечают настройки графики в играх, и как они влияют на FPS. Часть 2
Это вторая часть нашего гайда. Первая, где собраны основные настройки вроде разрешения, качества текстур и теней, вы можете прочитать по ссылке.
Качество освещения (Lightning Quality)
То, насколько правдоподобно симулируется освещение в игре. Если это единственный подобный параметр в игре, то именно в эту настройку заложили уйму других, будь-то и объемный свет, и рассеивание лучей, и отражения, а иногда даже глобальное затенение. Освещение — это, пожалуй, вообще едва ли не самое основное из всего, что влияет на красоту картинки: оно делает ее объемной, натуралистичной, правдоподобной. Но и ресурсов все это дело «кушает» тоже немало. Именно поэтому, например, Nvidia так расхваливает свои новые RTX-видеокарты — они изначально разработаны под Ray Tracing — метод рендеринга, предполагающий правдоподобную симуляцию каждого луча.
Влияние на производительность
Зависит от движка, но почти во всех современных играх — очень сильное. Симулировать свет — это очень непросто, так что врубайте «ультра» только если у вас действительно мощная видеокарта.
Качество эффектов (Effects Quality)
Влияние на производительность
Тоже зависит от игры, чаще всего не особенно высокое. Но чем выше этот параметр, тем сильнее будет нагружаться ваша видеокарта в загруженных сценах, например, при масштабных перестрелках. Так что если игра начинает «подлагивать» в особо динамичные моменты, можно попробовать поиграться с этим ползунком, прежде чем снижать, например.
…Качество шейдеров (Shader Quality)
Шейдеры — это специальные программы для вашей видеокарты, исполняемые ее процессором. Грубо говоря, это такие «инструкции» от игры вашей GPU, по которым та понимает, как именно нужно отрисовывать тот или иной эффект. Чаще всего шейдеры используются для улучшения освещения, затенения, создания эффектов преломления лучей в воде (помните, как взрывала мозг та самая «шейдерная водичка из Half-Life 2: Lost Coast?), отражений, рассеиваний и так далее. Так что да, эта опция работает в тандеме с другими параметрами: качеством освещения и качеством теней. Существует три вида шейдеров: вершинные, геометрические и пиксельные, но игры, где можно отрегулировать качество каждого из них отдельно, встречаются невероятно редко.
Соответственно, чем выше качество шейдеров, тем лучше описанные выше эффекты, красивее тени и свет, реалистичнее геометрия — и тем сильнее нагрузка на видеокарту. Именно на видеокарту — потому что шейдеры считаются только GPU.
Влияние на производительность
Чаще всего — высокое. Например, в GTA V это один из самых «тяжелых» параметров в игре — снизив качество шейдеров с «Ультра» на средниее значение, вы получите прирост больше, чем в 15 FPS. Но бывает и так, что снижение этого параметра почти ничего не дает, как, например, в Mass Effect Anromeda.
Пост-эффекты в мобильных играх
Большинство публикаций по графике для консолей и десктопов рассказывают о чем-то новом, а для мобильных платформ во главе угла всегда стоит оптимизация уже существующего.
Что касается пост-обработки — её волшебное действие на фотографии было открыто задолго до появления первых компьютеров, а её математический и алгоритмический базис, созданный для цифровой обработки изображений, удачно вписался в программируемый конвейер GPU.
Помимо того, что пост-эффекты (точнее — их не очень грамотное использование) являются предметом ненависти среди игроков, они также едва ли не единственный способ быстро и дешево «оживить» и «освежить» картинку. Насколько качественным получится это «оживление» и не обернется ли оно в результате «свежеванием», зависит по большей части от художников.
Слегка «освежеванный» скриншот War Robots.
Как уже было сказано выше, эта статья будет посвящена в основном оптимизации. Для тех кто не в теме — отличным вводным курсом будут книги из серии GPU Gems, первые три из которых доступны на сайте NVidia [1].
Рассматриваемые примеры реализованы на Unity, тем не менее методы оптимизации, описанные здесь, применимы к любой среде разработки.
Оптимальная архитектура пост-обработки
Существует два способа рендеринга пост-эффектов:
В то же время пакетный рендеринг заметно эффективнее, поскольку он экономит общее число обращений к памяти. Последнее наиболее актуально для мобильных платформ, на которых повышенная вычислительная нагрузка сопровождается повышенной же теплоотдачей (кто бы мог подумать). И даже если устройство сумеет выдать требуемую частоту кадров, вряд ли игроку будет комфортно играть, держа в руках горячий «кирпич».
Для наглядности приведу последовательную и пакетную схемы рендеринга пост-эффектов, используемых в War Robots.
Последовательный рендеринг: 8 чтений, 6 записей.
Пакетный рендеринг: 7 чтений, 5 записей.
Пакетный рендеринг для Unity реализован в модуле Post Processing Stack [2].
Последовательность применения пост-эффектов без изменения кода изменить невозможно (но и не нужно), а вот отдельные пост-эффекты отключить можно. Кроме того, в модуле интенсивно используется встроенный в Unity кэш ресурсов RenderTexture [3], так что в коде конкретного пост-эффекта, как правило, содержатся только инструкции по рендерингу.
Ресурсы же пост-эффект запрашивает непосредственно во время рендеринга, и освобождает их по его завершению. Это позволяет организовать повторное использование ресурсов в последующих пост-эффектах, поскольку кэш удаляет только те ресурсы, которые не были востребованы в течении последних нескольких кадров.
Финальный этап в пакетном рендеринге — композиционный эффект, который комбинирует результаты всех предшествующих шагов и рендерит их при помощи мультивариантного «убер-шейдера». В Unity3D такой шейдер можно сделать при помощи директив препроцессора #pragma multi_compile или #pragma shader_feature.
В целом, Post Processing Stack нам понравился, но все же без доработки напильником дело не обошлось. Нам требовался масштабируемый модуль с возможностью добавлять или заменять пост-эффекты (включая препассы), а также модифицировать захардкоженный пайплайн, задающий последовательность рендеринга, и композиционный «убер-шейдер». Плюс ко всему в эффектах были разнесены настройки качества эффекта и его параметры на конкретной сцене.
Оптимизация fillrate
Основной метод рендеринга в пост-процессинге — это блиттинг: заданный шейдер применяется ко всем фрагментам текстуры, используемой в качестве render target. Таким образом, производительность рендеринга зависит от размера текстуры и вычислительной сложности шейдера. Простейший способ повысить производительность (а именно — уменьшение размера текстуры) сказывается на качестве пост-процессинга.
Но если заранее известно, что рендеринг необходим только в определенной области текстуры, можно оптимизировать процесс, к примеру, заменив блиттинг на рендеринг 3D-модели. Разумеется, никто не запрещает вместо этого использовать настройки viewport’а, но 3D-модель отличается от блиттинга увеличенным объемом per-vertex данных, которые в свою очередь позволяют задействовать более «продвинутые» вертексные шейдеры.
Именно так мы поступили с пост-эффектом рассеивания света от солнца [4]. Мы упростили оригинальный препасс, заменив его на рендеринг биллбоарда с текстурой «солнца». Фрагменты биллбоарда, скрытые за объектами сцены, выделялись с использованием полноэкранной маски, которая по совместительству служит нам буфером теней (подробнее о рендеринге теней я расскажу чуть позже).
Справа: буфер теней и маска, которая получается, если применить к нему степ-функцию. Все тексели, альфа которых меньше 1, перекрывают собой “солнце”.
Сглаживание текстуры препасса также выполняется при помощи рендеринга 3D-модели.
Разумеется, мы пошли до конца: финальный проход тоже сделан с помощью рендеринга 3D-модели. И в отличие от предыдущих случаев, которые при желании можно заменить блиттингом во вьюпорт, здесь 3D-модель содержит дополнительные данные (цвет вертекса), которые используются в шейдере эффекта.
Оптимизация динамических теней
Не смотря на вычислительную сложность пост-эффектов, динамические тени зачастую ещё более ресурсозависимы. Связано это не только с вычислительной сложностью соответствующих шейдеров, но и с тем, что для получения сглаженных теней требуется дополнительный полноэкранный проход рендеринга.
Обычно, для расчета затенения для фрагмента изображения с использованием техники Shadow Mapping’а используется фильтр PCF [5]. Однако результат без дополнительного сглаживания дает только PCF с очень большим размером ядра, что неприемлемо для мобильных платформ. Более продвинутый метод Variance Shadow Mapping требует поддержки инструкций аппроксимации частных производных и билинейной фильтрации для floating-point текстур [6].
Для получения мягких теней рендер всей видимой сцены выполняется дважды — в первый раз в offscreen-буфер рендерятся только тени, затем к offscreen-буферу применяется фильтр сглаживания, и после этого на экран рендерится цвет объектов, с учетом влияния тени из offscreen-буфера. Что приводит к двойной загрузке как CPU (отсечение, сортировка, обращение к драйверу) так и GPU.
Как один из вариантов решения проблемы — мы решили избавиться от двойного рендера сцены, не переходя на технику отложенного освещения.
Для начала рендерим изображение в промежуточный буфер в формате RGBA (1). Значение альфы — отношение яркости цвета фрагмента если бы он был в тени, к яркости без тени (2). Затем, используя command buffer, перехватываем управление в момент завершения рендера непрозрачной геометрии, чтобы забрать альфу из буфера. Далее сглаживаем (3), и модулируем сглаженные тени с цветовыми каналами промежуточного буфера (4). После этого возобновляется работа пайплайна Unity: рендерятся прозрачные объекты и скайбокс (5).
Данный трюк ведёт к небольшой деградации цветопередачи в затенённых местах, но хитрости вычислений того, что пишется в альфу позволили снизить это влияние до минимума.
В результате мы получили заметный прирост производительности (10-15%) на устройствах средней производительности (в основном на андроидах), и на ряде устройств уменьшилась теплоотдача. Данная техника — это промежуточное решение, до перехода на отложенное освещение.
Для съемки промо, мы по прежнему используем более качественный вариант, т.к. деградация цветопередачи там нежелательна, а ресурсов PС хватает. Для улучшения мягкости тени в этом случае мы применили следующее: при наложении тени используется формула, учитывающая LDotN, что позволяет добиться более плавного перехода в освещенных местах.
Плата за неё — небольшое выгорание тени в местах, где она при блюре становится не абсолютно черной, но зато в результате получается более плавный переход полутени.
Хроматическая аберрация – эффект, который вы наверняка отключаете в настройках игр. Зачем он вообще нужен?
Объясняем тренд.
Одна из самых часто встречающихся графических настроек в современных играх – хроматическая аберрация. По умолчанию эффект обычно включен, хотя многие геймеры отключают его при первой же возможности. Причина проста: без хроматической аберрации картинка выглядит «чище».
Так почему разработчики тратят силы, чтобы добавить в игры «лишнюю» постобработку, и кто ее придумал?
Хроматическая аберрация пришла в игры из кино
Происхождение у аберрации общее с другими неоднозначными эффектами постобработки: lens flare, motion blur, глубиной резкости, виньетированием и так далее. Изначально они появились в кинематографе.
Реальная хроматическая аберрация возникает при использовании фотоаппаратов и видеокамер. Из-за того, что лучи света разных цветов отличаются длиной волн, они преломляются в линзе камеры по-разному. Когда объективу не удается собрать все лучи в одну точку, цвета на полученных фото и видео искажаются. Сильнее всего это заметно по краям объектов: они размываются и расслаиваются на красный, зеленый и синий цветовые каналы.
Долгое время операторам и фотографам приходилось мириться с хроматической аберрацией – ее можно было только минимизировать, используя более дорогостоящие и качественные объективы. Со временем от нежелательного побочного эффекта научились избавляться на этапе постобработки: многие современные камеры компенсируют цветовые искажения с помощью встроенного процессора, также аберрацию можно убрать в графических редакторах при работе с RAW-форматами.
В то же время хроматическая аберрация стала настолько распространенным и привычным явлением, что ее начали относить к ретро-эстетике и оставлять (или даже добавлять) намеренно, добиваясь более «винтажного» вида фотографий или фильмов. Произошло то же, что и с lens flare, только в меньших масштабах: признак непрофессионализма превратился в осознанный стилистический прием.
(Здание на одном и том же кадре без хроматической аберрации и с ее сильным проявлением)
Аберрация в играх – попытка сделать их кинематографичнее
Хотя сами геймеры часто определяют крутость игровой графики, сравнивая ее с реальной жизнью, сами разработчики ориентируются в первую очередь на кинематограф. Логика простая: сделать картинку ближе кинематографичнее проще, чем приблизить ее к «чистой» реальности.
Эффекты вроде хроматической аберрации позволяют замаскировать технические недостатки игры и стилизовать ее простым приемом, который к тому же практически не сказывается на производительности. Нет смысла отключать аберрацию, чтобы игра работала лучше – из этого получится выжать примерно один дополнительный кадр в секунду, да и то не всегда.
(В Resident Evil 7 аберрация заметна, только если присмотреться, например, к раме)
Цель у хроматической аберрации в играх простая: «смягчить» контуры объектов, чтобы они подсознательно больше напоминали фильмы (и показанную в них реальность), а не компьютерную графику.
Понятное дело, в играх физической камеры нет, поэтому хроматическая аберрация симулируется: эффект просто добавляет сине-красные края объектам в кадре. Конкретная реализация, конечно, зависит от игры: где-то эффект бросается в глаза, в других случаях он едва заметен – примерно так же отличаются дешевые и дорогостоящие объективы.
Иногда эффект лучше оставлять включенным
Хроматическая аберрация набрала популярность в прошлом поколении консолей, когда игры повсеместно стали выглядеть (или пытаться выглядеть) «как кино». Аберрацию нельзя назвать объективным улучшением или ухудшением: ей нужно уметь пользоваться, а ее восприятие – исключительно субъективно. Часть игроков совершенно не терпит эффект, поскольку из-за него картинка становится менее четкой, другим дополнительная «киношность» по душе.
Правда, в зависимости от визуального стиля самой игры аберрация чаще может просто загрязнять кадр, чем дополнять его. Например, если игра в целом выглядит не очень хорошо или стилизована под мультяшный стиль – значит, на «киношный фотореализм» она претендовать не может. Тем не менее разработчики все равно добавляют постобработку – в таком случае эффект вызовет раздражение с большей вероятностью.
Куда уместнее использовать хроматическую аберрацию в проектах с реалистичным визуальным стилем: в The Last of Us: Part II, Red Dead Redemption 2 или, скажем, в «Сталкере 2». В них частичная нечеткость краев скорее сойдет за кинематографичность, чем за чужеродный визуальный эффект.
(Ползунок хроматической аберрации все чаще встречается в фоторежимах)
Другой вариант – применять хроматическую аберрацию там, где физическая (не игровая) камера используется по сюжету. Вот первая Life is Strange, например, выглядит слишком стилизованно, чтобы быть фильмом, но главная героиня увлекается фотографией, да и винтажные снимки играют ключевую роль в развитии сюжета. Поэтому здесь аберрация имеет хотя бы нарративный смысл.
Также, конечно, аберрацию стоит отключать в случаях, если из-за нее у вас сильнее устают глаза – такой побочный эффект тоже встречается.
У разработчиков нет объективных причин отказываться от хроматической аберрации в будущем: эффект очень просто реализовать, он не сказывается на оптимизации и зачастую делает игру визуально дороже (по крайней мере в глазах казуальных игроков, не вникающих в технологии). Главное, чтобы ее всегда можно было отключить в настройках – это логичное правило игровые студии обычно соблюдают.
Как улучшить графику в старых играх: HD-текстуры, разрешение и постобработка
Разрешение экрана
Универсального инструмента для «расширения» изображения нет. Если хорошо поискать, можно найти подходящий фикс для нужной игры.
Улучшенные текстуры
Есть разные типы модов на текстуры, каждый из них отличается своим уровнем проработки. Одни пакеты заменяют их во всей игре, другие лишь на некоторых локациях. В любом случае если поискать, вы найдете ту сборку HD-текстур, которая сделает нужную игру несколько симпатичнее.
Главное, строго следуйте инструкции к моду, так как отклонение от нее может сломать игру, и вам придется заново ее устанавливать.
Постобработка с помощью ReShade
ReShade — это бесплатный набор фильтров для постобработки. Инструмент настолько полезен, что при желании можно применить его и к современным релизам, если вам кажется, что эффекты выглядят не так, как должны были.
Для начала бесплатно скачайте ReShade с официального сайта. Советуем сохранить файл где-нибудь под рукой, так как он применяет эффекты только к одной указанной вами игре. Запустите файл и выберите игру, после чего отметьте нужные настройки рендеринга.
После выполнения вышеописанных действий в игре появится масса новых настроек графики, но не спешите делать вашу игру лучше. Во избежание ухудшения картинки, советуем поискать в сети пресеты, которые другие пользователи уже создали и опробовали.
Некоторые шаблоны есть на сайте ReShade, но лучше прогуляться по форумам и специализированным ресурсам. Когда найдете нужный шаблон, сохраните его на своем PC и снова запустите ReShade. После выбора игры и установки нужных настроек нажмите на Edit ReShade Settings, в первом поле открывшегося окошка укажите путь к сохраненному ранее файлу с пресетами.
Помните, что некоторым пресетам ReShade может потребоваться версия утилиты постарше. Все версии программы лежат в репозитории ReShade Mediafire. Учитывая эти факторы, еще раз настоятельно советуем не игнорировать файл readme, который неспроста так называется и порой действительно может вам помочь.
Запустив игру после работы с ReShade, она предложит вам нажать клавишу Home для доступа ко всем добавленным параметрам. Не бойтесь, если у вас начнет рябить в глазах от огромного количества настроек. Благодаря пресетам мы избавились от часов проб и ошибок. У нас уже все установлено. Разумеется, никто вам не запрещает всячески экспериментировать с настройками, но старайтесь делать это как можно аккуратнее.
Фильтры SweetFX
Для того, чтобы установить SweetFX вам необходимо сделать несколько несложных шагов:
Скачать уже готовый пресет просто, но иногда хочется полностью настроить все под себя, а делать это в текстовом файле не самый удобный процесс. Небезразличные моддеры сделали специальную утилиту SweetFX Configurator, которая позволяет из удобного меню включить или выключить необходимые эффекты.
В SweetFX Configurator достаточно просто нажать «Add New Game» и выбрать нужную игру. После этого утилита сама создаст и скопирует в папку все нужные файлы. Теперь вы можете через окно конфигуратора настроить все, как душе угодно. Однако и у такого удобного решения есть свои недостатки.
Сетевые игры могут распознать SweetFX Configurator как чит. Поэтому стоит быть крайне осторожным с настройками в онлайн-проектах.
Реалистичное освещение с помощью ENBSeries
Все, ENBSeries установлена. Осталось лишь ее настроить. Раньше делать это в ENB приходилось с помощью редактирования файла ini., но теперь появилась возможность менять настройки непосредственно в игре. Просто нажмите сочетание клавиш Shift+Enter и поставьте галочки у тех параметров, которые вы бы хотели активировать.
Если вы боитесь своими руками настраивать ENB из-за страха что-то поломать, можете поискать в сети уже готовые пресеты. Готовых сборок много, но внимательно читайте инструкции по их установке, так как они могут отличаться.
Совместная работа ENBSeries и SweetFX
Все, теперь SweetFX и ENBSeries работают вместе.
Улучшение графики с помощью «Панели управления Nvidia»
Если вы обладатель видеокарты от Nvidia, можно обратиться к настройкам в программе «Панель управления Nvidia»:
По большей части тут различные варианты сглаживания и фильтрации текстур, но они действительно способны изменить внешний вид игры, пусть и не сильно.