Пост-эффекты в мобильных играх
Большинство публикаций по графике для консолей и десктопов рассказывают о чем-то новом, а для мобильных платформ во главе угла всегда стоит оптимизация уже существующего.
Что касается пост-обработки — её волшебное действие на фотографии было открыто задолго до появления первых компьютеров, а её математический и алгоритмический базис, созданный для цифровой обработки изображений, удачно вписался в программируемый конвейер 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, перекрывают собой “солнце”.
struct appdata < float4 vertex : POSITION; half4 texcoord : TEXCOORD0; >; struct v2f < float4 pos : SV_POSITION; half4 screenPos : TEXCOORD0; half2 uv : TEXCOORD1; >;
#include “Unity.cginc” sampler2D _SunTex; sampler2D _WWROffscreenBuffer; half4 _SunColor; v2f vertSunShaftsPrepass(appdata v)
fixed4 fragSunShaftsPrepass(v2f i) : COLOR < // Тексели _WWROffscreenBuffer с альфа-компонентом == 1 // не спроецированы на геометрию сцены const half AlphaThreshold = 0.99607843137; // 1 - 1.0/255.0 fixed4 result = tex2D( _SunTex, i.uv ) * _SunColor; half shadowSample = tex2Dproj( _WWROffscreenBuffer, UNITY_PROJ_COORD(i.screenPos) ).a; return result * step( AlphaThreshold, shadowSample ); >
Сглаживание текстуры препасса также выполняется при помощи рендеринга 3D-модели.
struct appdata < float4 vertex : POSITION; >; struct v2f < float4 pos : SV_POSITION; half4 screenPos : TEXCOORD0; >;
#include “Unity.cginc” sampler2D _PrePassTex; half4 _PrePassTex_TexelSize; half4 _BlurDirection; v2f vertSunShaftsBlurPrepass(appdata v)
fixed4 fragSunShaftsBlurPrepass(v2f i) : COLOR < half2 uv = i.screenPos.xy / i.screenPos.w; half2 blurOffset1 = _BlurDirection * _PrePassTex_TexelSize.xy * 0.53805; half2 blurOffset2 = _BlurDirection * _PrePassTex_TexelSize.xy * 2.06278; half2 uv0 = uv + blurOffset1; half2 uv1 = uv – blurOffset1; half2 uv2 = uv + blurOffset2; half2 uv3 = uv – blurOffset2; return (tex2D(_PrePassTex, uv0) + tex2D(_PrePassTex, uv1)) * 0.44908 + (tex2D(_PrePassTex, uv2) + tex2D(_PrePassTex, uv3)) * 0.05092; >
Разумеется, мы пошли до конца: финальный проход тоже сделан с помощью рендеринга 3D-модели. И в отличие от предыдущих случаев, которые при желании можно заменить блиттингом во вьюпорт, здесь 3D-модель содержит дополнительные данные (цвет вертекса), которые используются в шейдере эффекта.
struct appdata < float4 vertex : POSITION; float4 color : COLOR; >; struct v2f < float4 pos : POSITION; float4 color : COLOR; float4 screenPos : TEXCOORD0; >;
#include “Unity.cginc” sampler2D _PrePassTex; float4 _SunScreenPos; int _NumSamples; int _NumSteps; float _Density; float _Weight; float _Decay; float _Exposure; v2f vertSunShaftsRadialBlur(appdata v)
float4 fragSunShaftsRadialBlur(v2f i) : COLOR < float4 color = i.color; float2 uv = i.screenPos.xy / i.screenPos.w; float2 deltaTextCoords = (uv - _SunScreenPos.xy) / float(_NumSamples) * _Density; float2 illuminationDecay = 1.0; float4 result = 0; float4 sample0 = tex2D(_PrePassTex, uv); for(int i=0; iresult *= _Exposure * color; return result; >
Оптимизация динамических теней
Не смотря на вычислительную сложность пост-эффектов, динамические тени зачастую ещё более ресурсозависимы. Связано это не только с вычислительной сложностью соответствующих шейдеров, но и с тем, что для получения сглаженных теней требуется дополнительный полноэкранный проход рендеринга.
Обычно, для расчета затенения для фрагмента изображения с использованием техники 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).
Данный трюк ведёт к небольшой деградации цветопередачи в затенённых местах, но хитрости вычислений того, что пишется в альфу позволили снизить это влияние до минимума.
// shadow = 0..1 // spec - specular lighting // diff - diffuse lighting fixed4 c = tex2D( _MainTex, i.uv ); fixed3 ambDiffuse = c.xyz * UNITY_LIGHTMODEL_AMBIENT; fixed3 diffuseColor = _LightColor0.rgb * diff + UNITY_LIGHTMODEL_AMBIENT; fixed3 specularColor = _LightColor0.rgb * spec * shadow; c.rgb = saturate( c.rgb * diffuseColor + specularColor ); c.a = Luminance( ambDiffuse / c.rgb );
В результате мы получили заметный прирост производительности (10-15%) на устройствах средней производительности (в основном на андроидах), и на ряде устройств уменьшилась теплоотдача. Данная техника — это промежуточное решение, до перехода на отложенное освещение.
Для съемки промо, мы по прежнему используем более качественный вариант, т.к. деградация цветопередачи там нежелательна, а ресурсов PС хватает. Для улучшения мягкости тени в этом случае мы применили следующее: при наложении тени используется формула, учитывающая LDotN, что позволяет добиться более плавного перехода в освещенных местах.
fixed shLDotN = lerp( clamp( shadow, 0, LDotN ), LDotN * shadow, 1 - LDotN);
Плата за неё — небольшое выгорание тени в местах, где она при блюре становится не абсолютно черной, но зато в результате получается более плавный переход полутени.
Ссылки
PS
Отдельную благодарность необходимо предоставить Игорю Полищуку, который, собственно и придумал все описанные здесь хитрости, связанные с тенями, и, кроме того, участвовал в написании этой статьи.
Что такое постобработка и как её используют в играх
Разбираем примеры и изучаем технику наложения фильтров в движке.
Скриншот: игра 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)
В реальной жизни резкое движение объектива или модели во время съёмки создаёт размытие, так как скорость движения превышает время выдержки камеры. В компьютерной графике этот реалистичный эффект усиливает динамику и ощущение скорости персонажа при быстрых перебежках и уворотах. Обычно размытие в движении распространяется на дальний план, но может и на всю сцену — например, при передвижении на скоростном транспортном средстве.
Свечение (Bloom)
Имитация оптического эффекта в ярких областях, когда излучаемый свет «размывается» на границах контрастных контуров.
Цветокоррекция (Color grading)
Используется для изменения или усиления цветовой гаммы сцены, что схоже с фильтрами для обработки фотографий в соцсетях. Цветокоррекцию используют, чтобы создать специфическую атмосферу — например, в сценах, связанных с воспоминаниями или видениями, — но чаще всего её можно встретить в фоторежимах.
Хроматическая аберрация (Chromatic Aberration)
Эффект искажения, в результате которого на краях объекта появляются красные и синие ореолы. Его часто используют в эпизодах, когда психика главного героя пошатывается и он видит галлюцинации.
Виньетирование (Vignette)
Создаётся фокус на центр кадра за счёт затемнения изображения по краям. В играх часто используется для привлечения внимания игрока, например в диалогах или при обнаружении предмета.
Зернистость (Grain)
Эффект шума, который может быть как цифровым (цветным), так и плёночным (монохромным). Часто встречается в хоррорах, иногда — в качестве детектора: когда враждебное существо рядом и персонажу грозит опасность, зернистость резко увеличивается.
Постобработка в игровом движке
Рассмотрим простой пример постобработки, используя шаблон Third Person в Unreal Engine 5.
Базовые настройки постобработки, которые движок устанавливает по умолчанию, можно найти в разделе рендеринга (Edit — Project Settings — Engine — Rendering — Postprocessing — Default Settings).
Помимо сглаживания, свечения, размытия в движении и остальных знакомых параметров, можно встретить Auto Exposure. Эта опция отвечает за автоматическую коррекцию света на светлых и тёмных участках. Именно из-за неё при резких переходах из тёмной среды в светлую возникают небольшие вспышки, так как в этот момент рассчитывается оптимальное освещение для локации. Подобные скачки света могут оказаться критичными, если речь идёт о съёмках кат-сцен.
В верхней панели инструментов выбираем быстрое добавление объекта (иконка с кубом и знаком плюс). В списке ищем Visual Effects — PostProcessVolume. В сцене появляется рамка-пустышка. Настраиваем её размер таким образом, чтобы она охватила всю постройку — эффекты будут действовать только в пределах этих границ.
Первым делом настраиваем экспозицию в параметре 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) галочкой.
Поэтому рецепт постобработки во многом зависит от специфики проекта. Качественного игрового опыта можно добиться, только если оптимально сбалансировать визуальную составляющую и производительность.
Визуальные ошибки, которые появляются на изображении после рендеринга.
Приём, при котором задний фон размыт, чтобы сфокусировать всё внимание зрителя на переднем плане; используется в фотографии.
Из официальной группы: О ‘Пост-эффектах’ (запись 1/4). Вс | ᵛⁱⁿˣʷⁱ
Всем доброе утро! Этой записью мы открываем серию постов о дополнительной настройке в игре под названием «пост-эффекты».
Примечание 1: Пост-эффекты лишь добавляют некоторые фильтры на изображение игры, являются настройкой «на любителя» и не влияют на историю или сложность анимаций в игре.
Примечание 2: По техническим причинам, опция «пост-эффектов» не поддерживается на всех устройствах и может отсутствовать в настройках на вашем телефоне.
Сегодня мы хотим вам объяснить, что такое «Блюм» эффект.
Эффект используется для создания ощущения размытости света на ярких гранях сцены, а также для добавления большей кинематографичности изображению. Эффект создает световые полосы (или перышки), выходящие за границы ярких областей изображения, способствуя иллюзии чрезвычайно яркого света.
– это канал с новостями по клубу романтики,полезными файлыми,красивыми обработками и манипами.
За что отвечают настройки графики в играх, и как они влияют на 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.
Здесь и далее: первая картинка — низкие значения, вторая — высокие.
Качество декалей (Decals Quality)
Декали — это дополнительные объекты или, скажем, текстуры, которые накладываются сверху на другие поверхности и текстуры. Дырки от пуль, следы крови, ржавчина на трубах, газетные вырезки на стене и так далее, — чаще всего разработчики используют декали, чтобы сделать поверхности в игре разнообразнее. Это быстрее и проще, чем рисовать текстуру целиком.
Соответственно, чем выше качество декалей, чем четче они будут выглядеть.
Влияние на производительность
Поле зрения (Field of View)
Простыми словами — то, сколько всего «влезает» в экран. Чаще всего регулируется в играх от первого лица. Чем выше этот параметр, тем больше видит ваш персонаж периферическим зрением. В консольных шутерах FoV довольно низкий, из-за чего иногда кажется, что герой смотрит на мир одним глазом (если вы играли в бету Fallout 76, вы понимаете, о чем я), поэтому, играя в них на ПК, есть смысл поднять в настройках ползунок на десять-пятнадцать позиций.
Но не переборщите — если выкрутить FoV на максимум, картинка по бокам начнет искажаться, словно вы снимаете все на «Фишай»-камеру.
Влияние на производительность
Как ни странно, оно есть, хоть и не особенно большое. Больше всего на экране — больше всего нужно отрисовывать, все просто.
Детализация и дальность прорисовки (Level of Detail)
Точное назначение этого параметра от игры к игре может отличаться. Чаще всего под этой настройкой подразумевается и количество, предскауземо, объектов на экране, и дальность прорисовки этих объектов. Скажем, если на параметре «низко» уже через 20 метров из вида будут исчезать камни, бревна (если вы, скажем, стоите в лесу) и другие небольшие предметы, то на «Ультра» вы будете видеть их и у самого горизонта.
Иногда вместо этого параметра в игре можно найти сразу несколько, для каждого типа объектов свой: дальность прорисовки травы, дальность прорисовки геометрии и так далее. На картинку это все влияет радикальным образом: именно поэтому, например, игры на PlayStation 4 Pro даже в Full HD смотрятся лучше, чем на обычной PS4 — там выше детализация.
Влияние на производительность
Высокое, причем, как на процессор, так и на видеокарту. По сути, первое, что нужно сделать, если игра тормозит на вашем ПК, — поиграться именно с этими настройками. Если в опциях есть и детализация, и дальность прорисовки, то первый параметр, скорее всего, отвечает за количество полигонов в мелких объектах — и тогда влияет на FPS уже не так сильно.
Постобработка (Post-processing)
Проще всего объяснить пост-обработку через мобильную фотографию. Когда ваш смартфон делает снимок, то затем уже на запечатленный кадр накладывается разнообразное количество эффектов, чтобы «подкрасить» его, сделать четче, замазать шумы в тенях, насытить цвета и так далее.
Так и в компьютерной графике: постобработка — это эффекты, накладываемые движком игры на уже просчитанную сцену, на двумерную картинку, которую вы видите.
Сюда могут входить: эффекты размытия экрана, эффект глубины резкости (Depth of Field), разнообразные фильтры «зерна» или старой магнитной пленки, блум, HDR и так далее. Иногда для каждого из этих эффектов в игре есть отдельная опция, но если нет — они «свалены» именно сюда. Постобработка помогает разработчикам передать настроение сцены, скажем, снизив насыщенность цветов в определенный момент, или скрыть недостатки игровой графики. Но иногда с ней перебарщивают, из-за чего кажется, что на изображение накинули сразу 5 Instagram-фильтров одновременно. Особенно беда с этим в азиатских MMO.
Влияние на производительность
Учитывая, что все эти эффекты накладываются и рендерятся в реальном времени, в большинстве игр пост-процессинг на «Ультрах» может неплохо просадить вам FPS.
Синий «ореол» вокруг противогаза, искажения, капли на экране — все это достигается с помощью постобработки.
Качество воды (Water Quality)
Все просто: выше этот параметр — круче и реалистичнее водичка.
Влияние на производительность
В подавляющем большинстве случаев — ничтожное.
Качество растительности / дальность прорисовки растительности (Foliage Quality/Grass Quality)
Многие недооценивают этот параметр: ну казалось бы, ну что такого, ну травка и травка. А вот и нет: растительность и, в особенности, дальность ее прорисовки часто требуют неслабых вычислительных мощностей от вашей системы, причем, как от CPU, так и от GPU, если, конечно, трава «живет» в игре по законам физики. Никогда не забуду тот счастливый день, когда в третьем «Ведьмаке» я выкрутил в настройках параметр Foliage Visibility Range на «низко» и получив стабильный фреймрейт на своей допотопной сборке FX4300 + 660 GTX.
Да и в ГТА5, как ни странно, трава — один из самых прожорливых параметров. Именно поэтому, кстати, у вас в городе игра может работать нормально, а стоит выехать в поле, начинать «спотыкаться», казалось бы, на ровном месте.
Влияние на производительность
В большинстве современных игр — очень высокое.