Масштабирование разрешения
Зачем использовать масштабирование разрешения?
В связи с постоянно растущей сложностью рендеринга современных игр рендеринг в нативном разрешении уже не всегда возможен, особенно на слабых графических процессорах.
Масштабирование разрешения — один из самых прямых способов повлиять на требования сцены к графическому процессору. В сценах, где узким местом является графический процессор (а не центральный процессор), уменьшение масштаба разрешения может значительно повысить производительность. Масштабирование разрешения особенно важно для мобильных графических процессоров, где производительность и бюджеты мощности ограничены.
Хотя масштабирование разрешения является важным инструментом, помните, что масштабирование разрешения не предназначено для замены уменьшения графических настроек на слабом оборудовании. Рассмотрите возможность выставления как масштаба разрешения, так и графических настроек в игровых меню.
См. также
Вы можете сравнить режимы и факторы масштабирования разрешения в действии, используя 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%-ным масштабом разрешения:
Масштабирование FSR1 лучше всего работает в сочетании с другой формой сглаживания. В этом случае предпочтительно использовать временное сглаживание (TAA) или многовыборочное сглаживание (MSAA), поскольку FXAA не добавляет временную информацию и вносит больше размытия в изображение.
С другой стороны, FSR2 обеспечивает собственное временное сглаживание. Это означает, что вам не нужно включать другие методы сглаживания, чтобы полученное изображение выглядело гладким. Настройка проекта Использовать TAA игнорируется, когда FSR2 используется как метод 3D-масштабирования, поскольку временное сглаживание FSR2 имеет приоритет.
Вот то же сравнение, но с включенным 4-кратным MSAA на всех изображениях:
Обратите внимание, как масштабирование границ 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-рендеринга |
Мегапикселей, отображаемых на кадр |
|---|---|---|
|
960×540 |
0.52 МПикс |
|
1286×723 |
0.93 МПикс |
|
1440×810 |
1.17 МПикс |
|
1632×918 |
1.50 МПикс |
|
1920×1080 |
2.07 МПикс |
|
2553×1436 |
3.67 МПикс |
|
2880×1620 |
4.67 МПикс |
|
3840×2160 |
8.29 МПикс |
2560×1440 (QHD)
Коэффициент масштабирования разрешения |
Разрешение 3D-рендеринга |
Мегапикселей, отображаемых на кадр |
|---|---|---|
|
1280×720 |
0.92 МПикс |
|
1715×964 |
1.65 МПикс |
|
1920×1080 |
2.07 МПикс |
|
2176×1224 |
2.66 МПикс |
|
2560×1440 |
3.69 МПикс |
|
3404×1915 |
6.52 МПикс |
|
3840×2160 |
8.29 МПикс |
|
5120×2880 |
14.75 МПикс |
3840×2160 (Ультра HD "4K")
Коэффициент масштабирования разрешения |
Разрешение 3D-рендеринга |
Мегапикселей, отображаемых на кадр |
|---|---|---|
|
1920×1080 |
2.07 МПикс |
|
2572×1447 |
3.72 МПикс |
|
2880×1620 |
4.67 МПикс |
|
3264×1836 |
5.99 МПикс |
|
3840×2160 |
8.29 МПикс |
|
5107×2872 |
14.67 МПикс |
|
5760×3240 |
18.66 МПикс |
|
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 и отключенной анизотропной фильтрацией, чтобы сделать разницу более заметной:
Устранение неполадок
Производительность не сильно увеличивается при уменьшении масштаба разрешения
Если производительность не сильно увеличивается при уменьшении масштаба разрешения до значения типа 0.5, это, скорее всего, означает, что узкое место производительности находится в другом месте вашей сцены. Например, в вашей сцене может быть слишком много вызовов отрисовки, что приводит к возникновению узкого места CPU. Аналогично, у вас может быть включено слишком много графических эффектов для обработки вашим GPU (например, SDFGI, SSAO или SSR).
Более подробную информацию см. в руководствах Производительность.