Масштабирование разрешения

Зачем использовать масштабирование разрешения?

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

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

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

См. также

Вы можете сравнить режимы и факторы масштабирования разрешения в действии, используя 3D Antialiasing demo project.

Примечание

Масштабирование разрешения в настоящее время недоступно для 2D-рендеринга, но его можно смоделировать с помощью режима растяжения viewport. Для получения дополнительной информации см. Multiple resolutions.

Параметры масштабирования разрешения

В разделе расширенных настроек проекта Rendering > Scaling 3D вы найдете несколько параметров масштабирования разрешения 3D:

Режим масштабирования

  • Bilinear: Standard bilinear filtering (default). This is used as a fallback when the current renderer doesn't support FSR 1.0 or FSR 2.2. Available in all renderers.

  • FSR 1.0: AMD FidelityFX Super Resolution 1.0. Slower, but higher quality compared to bilinear scaling. On very slow GPUs, the cost of FSR1 may be too expensive to be worth using it over bilinear scaling. Only available when using the Forward+ renderer.

  • FSR 2.2: AMD FidelityFX Super Resolution 2.2 (since Godot 4.2). Slowest, but even higher quality compared to FSR1 and bilinear scaling. On slow GPUs, the cost of FSR2 may be too expensive to be worth using it over bilinear scaling or FSR1. To match FSR2 performance with FSR1, you need to use a lower resolution scale factor. Only available when using the Forward+ renderer.

Ниже приведены сравнительные изображения между собственным разрешением, билинейным масштабированием с 50%-ным масштабом разрешения, масштабированием FSR1 и FSR2 с 50%-ным масштабом разрешения:

../../_images/resolution_scaling_bilinear_0.5.png ../../_images/resolution_scaling_fsr1_0.5.png ../../_images/resolution_scaling_fsr2_0.5.webp

Масштабирование FSR1 лучше всего работает в сочетании с другой формой сглаживания. В этом случае предпочтительно использовать временное сглаживание (TAA) или многовыборочное сглаживание (MSAA), поскольку FXAA не добавляет временную информацию и вносит больше размытия в изображение.

С другой стороны, FSR2 обеспечивает собственное временное сглаживание. Это означает, что вам не нужно включать другие методы сглаживания, чтобы полученное изображение выглядело гладким. Настройка проекта Использовать TAA игнорируется, когда FSR2 используется как метод 3D-масштабирования, поскольку временное сглаживание FSR2 имеет приоритет.

Вот то же сравнение, но с включенным 4-кратным MSAA на всех изображениях:

../../_images/resolution_scaling_bilinear_msaa_4x_0.5.png ../../_images/resolution_scaling_fsr1_msaa_4x_0.5.png ../../_images/resolution_scaling_fsr2_msaa_4x_0.5.webp

Обратите внимание, как масштабирование границ FSR1 становится гораздо более убедительным после включения 4× MSAA. Однако FSR2 не получает большой выгоды от включения MSAA, поскольку он уже выполняет временное сглаживание.

Масштаб рендеринга

Параметр Rendering > Scaling 3D > Scale регулирует масштаб разрешения. 1.0 представляет полный масштаб разрешения, при этом разрешение 3D-рендеринга соответствует разрешению 2D-рендеринга. Масштабы разрешения ниже 1.0 можно использовать для ускорения рендеринга за счет более размытого конечного изображения и большего количества алиасингов.

Масштаб рендеринга можно настроить во время выполнения, изменив свойство scaling_3d_scale в узле Viewport.

Масштабы разрешения выше 1.0 могут использоваться для суперсэмплового сглаживания (SSAA). Это обеспечит сглаживание при очень высокой стоимости производительности и не рекомендуется для большинства случаев использования. Для получения дополнительной информации см. 3D сглаживание.

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

Примечание

Масштаб разрешения определяется на основе per-axis (на ось). Например, это означает, что уменьшение масштабного коэффициента разрешения вдвое уменьшит количество визуализируемых мегапикселей на кадр в 4 раза, а не в 2. Поэтому очень низкие или очень высокие масштабные коэффициенты разрешения могут иметь большее влияние на производительность, чем ожидалось.

1920×1080 (Full HD)

Коэффициент масштабирования разрешения

Разрешение 3D-рендеринга

Мегапикселей, отображаемых на кадр

0.50

960×540

0.52 МПикс

0.67

1286×723

0.93 МПикс

0.75

1440×810

1.17 МПикс

0.85

1632×918

1.50 МПикс

1.00 (нативное)

1920×1080

2.07 МПикс

1.33 (суперсэмплинг)

2553×1436

3.67 МПикс

1.50 (суперсэмплинг)

2880×1620

4.67 МПикс

2.00 (суперсэмплинг)

3840×2160

8.29 МПикс

2560×1440 (QHD)

Коэффициент масштабирования разрешения

Разрешение 3D-рендеринга

Мегапикселей, отображаемых на кадр

0.50

1280×720

0.92 МПикс

0.67

1715×964

1.65 МПикс

0.75

1920×1080

2.07 МПикс

0.85

2176×1224

2.66 МПикс

1.00 (нативное)

2560×1440

3.69 МПикс

1.33 (суперсэмплинг)

3404×1915

6.52 МПикс

1.50 (суперсэмплинг)

3840×2160

8.29 МПикс

2.00 (суперсэмплинг)

5120×2880

14.75 МПикс

3840×2160 (Ультра HD "4K")

Коэффициент масштабирования разрешения

Разрешение 3D-рендеринга

Мегапикселей, отображаемых на кадр

0.50

1920×1080

2.07 МПикс

0.67

2572×1447

3.72 МПикс

0.75

2880×1620

4.67 МПикс

0.85

3264×1836

5.99 МПикс

1.00 (нативное)

3840×2160

8.29 МПикс

1.33 (суперсэмплинг)

5107×2872

14.67 МПикс

1.50 (суперсэмплинг)

5760×3240

18.66 МПикс

2.00 (суперсэмплинг)

7680×4320

33.18 МПикс

FSR Резкость

Доступно только в рендерере Forward+, но не в Mobile или Compatibility.

При использовании режимов масштабирования FSR1 или FSR2 резкость можно контролировать с помощью расширенных настроек проекта Rendering > Scaling 3D > FSR Sharpness.

Интенсивность инвертирована по сравнению с большинством других ползунков резкости: более низкие значения приведут к более резкому конечному изображению, в то время как более высокие значения уменьшат воздействие фильтра резкости. 0.0 - самая резкая, а 2.0 - наименее резкая. Значение по умолчанию 0.2 обеспечивает баланс между сохранением резкости исходного изображения и избежанием дополнительного сглаживания из-за чрезмерной резкости.

Примечание

Если вы хотите использовать повышение резкости при рендеринге в собственном разрешении, Godot в настоящее время не позволяет использовать компонент повышения резкости FSR1 (RCAS) независимо от компонента масштабирования (EASU).

В качестве обходного пути вы можете установить масштаб 3D-рендеринга на 0.99, установить режим масштабирования на FSR 1.0, а затем отрегулировать резкость FSR по мере необходимости. Это позволяет использовать FSR1 при рендеринге с разрешением, близким к родному.

В качестве альтернативы вы можете установить режим масштабирования на FSR 2.2 с масштабом 3D-рендеринга на 1.0, если у вас достаточно возможностей GPU. Это также обеспечивает высококачественное временное сглаживание. Настройка FSR Sharpness остается функциональной в этом случае.

Смещение MIP-карты

Это доступно только в Forward+ и Mobile renderers, а не в Compatibility renderer.

Godot автоматически использует отрицательное смещение текстуры mipmap, когда масштаб 3D-разрешения установлен ниже 1.0. Это позволяет лучше сохранять детали текстуры за счет зернистого вида на детализированных текстурах.

Смещение LOD текстуры в настоящее время влияет на 2D- и 3D-рендеринг одинаково. Однако имейте в виду, что оно влияет только на текстуры с включенными mip-картами. Текстуры, используемые в 2D, по умолчанию не имеют включенных mip-карт, что означает, что влияет только на 3D-рендеринг, если только вы не включили mip-карты для 2D-текстур в доке импорта.

Формула, используемая для определения смещения текстуры MIP-карты, следующая: log2f(min(scaling_3d_scale, 1.0)) + custom_texture_mipmap_bias

Чтобы противодействовать размытости, добавляемой некоторыми методами сглаживания, Godot также добавляет смещение -0.25 при включении FXAA и смещение -0.5 при включении TAA. Если оба включены одновременно, используется смещение -0.75. Это смещение смещения mipmap применяется до смещения масштабирования разрешения, поэтому оно не меняется в зависимости от масштаба разрешения.

Смещение уровня детализации текстуры можно вручную изменить, настроив расширенную настройку проекта Rendering > Textures > Default Filters > Texture Mipmap Bias. Его также можно изменить во время выполнения на Viewports, настроив свойство texture_mipmap_bias.

Предупреждение

Ручная настройка смещения уровня детализации (Level of Detail) MIP-карты может быть полезна в определенных сценариях, но делать это следует осторожно, чтобы не допустить зернистости конечного изображения в движении.

Отрицательное смещение LOD mipmap также может снизить производительность из-за того, что mips с более высоким разрешением приходится сэмплировать дальше. Рекомендуемые значения для ручного смещения находятся в диапазоне от -0.5 до 0.0.

Положительное смещение LOD mipmap приведет к тому, что текстуры mipmap будут выглядеть более размытыми, чем предполагалось. Это может немного улучшить производительность, но в противном случае не рекомендуется, поскольку потеря визуального качества обычно не стоит прироста производительности.

В примере ниже показан экстремальный случай со смещением LOD mipmap -1.0 и отключенной анизотропной фильтрацией, чтобы сделать разницу более заметной:

../../_images/resolution_scaling_texture_mipmap_bias_comparison.png

Устранение неполадок

Производительность не сильно увеличивается при уменьшении масштаба разрешения

Если производительность не сильно увеличивается при уменьшении масштаба разрешения до значения типа 0.5, это, скорее всего, означает, что узкое место производительности находится в другом месте вашей сцены. Например, в вашей сцене может быть слишком много вызовов отрисовки, что приводит к возникновению узкого места CPU. Аналогично, у вас может быть включено слишком много графических эффектов для обработки вашим GPU (например, SDFGI, SSAO или SSR).

Более подробную информацию см. в руководствах Производительность.