Масштабування роздільної здатності

Навіщо використовувати масштабування роздільної здатності?

Зі постійно зростаючою складністю рендерингу в сучасних іграх рендеринг у рідній роздільній здатності більше не завжди життєздатний, особливо на графічних процесорах нижчого класу.

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

Незважаючи на те, що масштабування роздільної здатності є важливим інструментом, пам’ятайте, що масштабування роздільної здатності не призначене для заміни зменшення параметрів графіки на апаратному забезпеченні нижчого рівня. Розгляньте можливість показу масштабу роздільної здатності та параметрів графіки в ігрових меню.

Дивись також

Ви можете порівняти режими масштабування роздільної здатності та чинники, використовуючи демонстраційний проект 3D Antialiasing <https://github.com/godotengine/godot-demo-projects/tree/master/3d/antialiasing>`__.

Примітка

Масштабування роздільної здатності наразі недоступне для 2D-візуалізації, але його можна імітувати за допомогою режиму розтягування viewport. Перегляньте Кілька дозволів для отримання додаткової інформації.

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

У розширених налаштуваннях проекту в розділі Відтворення > Масштабування 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, оскільки він уже виконує тимчасове згладжування.

Масштаб візуалізації

Налаштування Відтворення > Масштабування 3D > Масштаб регулює масштаб роздільної здатності. 1.0 представляє повну шкалу роздільної здатності, при цьому роздільна здатність візуалізації 3D збігається з роздільною здатністю візуалізації 2D. Шкали роздільної здатності нижче 1.0 можна використовувати для пришвидшення візуалізації, ціною більш розмитого кінцевого зображення та більшого згладжування.

Масштаб візуалізації можна налаштувати під час виконання, змінивши властивість scaling_3d_scale у вузлі Viewport.

Шкали роздільної здатності вище 1.0 можна використовувати для згладжування супервибірки (SSAA). Це забезпечить згладжування за дуже високої продуктивності та не рекомендовано для більшості випадків використання. Перегляньте 3D згладжування для отримання додаткової інформації.

У наведених нижче таблицях наведено загальну роздільну здатність екрана, результуючу роздільну здатність 3D-візуалізації та кількість мегапікселів, яку необхідно відобразити в кожному кадрі, залежно від параметра масштабу візуалізації. Рядки в кожній таблиці сортуються від найшвидшого до найповільнішого.

Примітка

Шкала роздільної здатності визначається на основі кожної осі. Наприклад, це означає, що зменшення коефіцієнта масштабування роздільної здатності вдвічі зменшить кількість відтворених мегапікселів на кадр у 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 (Ultra 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+, а не для мобільних і сумісних рендерів.

Під час використання режимів масштабування FSR1 або FSR2 різкістю можна керувати за допомогою розширеного налаштування проекту Відтворення > Масштабування 3D > Чіткість FSR.

Інтенсивність інвертована порівняно з більшістю інших повзунків різкості: нижчі значення призведуть до чіткішого кінцевого зображення, тоді як вищі значення зменшать вплив фільтра підвищення різкості. 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 залишається функціональним у цьому випадку.

Зміщення Mipmap

Це доступно лише в програмах візуалізації Forward+ і Mobile, а не в системі візуалізації Compatibility.

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

Наразі зсув LOD текстури однаково впливає як на 2D, так і на 3D візуалізацію. Однак майте на увазі, що це впливає лише на текстури з увімкненими mipmaps. Текстури, які використовуються в 2D, не мають mipmaps, увімкнених за замовчуванням, що означає, що це впливає лише на 3D-візуалізацію, якщо ви не ввімкнули mipmaps на 2D текстурах у доку Import.

Формула, яка використовується для визначення зсуву текстури mipmap, така: log2f(min(scaling_3d_scale, 1.0)) + custom_texture_mipmap_bias

Щоб протидіяти розмиттю, доданому деякими методами згладжування, Godot також додає зміщення -0,25, коли ввімкнено FXAA, і -0,5 зміщення, коли ввімкнено TAA. Якщо обидва ввімкнені одночасно, використовується зміщення -0,75. Це зміщення міп-карти застосовується перед зміщенням масштабування роздільної здатності, тому воно не змінюється залежно від масштабу роздільної здатності.

Зміщення LOD текстури можна змінити вручну, налаштувавши розширені параметри проекту Відтворення > Текстури > Фільтри за замовчуванням > Зміщення Mipmap текстури. Його також можна змінити під час виконання на Viewports шляхом налаштування властивості texture_mipmap_bias.

Попередження

Налаштування зсуву LOD для MIP-карти вручну може бути корисним у певних сценаріях, але це слід робити обережно, щоб остаточне зображення не виглядало зернистим у русі.

Негативне зміщення LOD у mipmap також може знизити продуктивність через те, що Mip-карти з вищою роздільною здатністю повинні бути відібрані далі. Рекомендовані значення зміщення вручну знаходяться в діапазоні від -0,5 до 0,0.

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

Наведений нижче приклад показує екстремальний випадок із зміщенням LOD mipmap на -1.0 та вимкненою анізотропною фільтрацією, щоб зробити різницю більш помітною:

../../_images/resolution_scaling_texture_mipmap_bias_comparison.png

Вирішення проблем

При зменшенні масштабу роздільної здатності продуктивність не сильно зростає

Якщо продуктивність не підвищується значно при зменшенні масштабу роздільної здатності до значення, наприклад 0,5, це, ймовірно, означає, що вузьке місце продуктивності знаходиться в іншому місці вашої сцени. Наприклад, у вашій сцені може бути надто багато викликів малювання, що спричинить вузьке місце ЦП. Подібним чином у вас може бути ввімкнено забагато графічних ефектів, які ваш графічний процесор не зможе впоратися (наприклад, SDFGI, SSAO або SSR).

Для отримання додаткової інформації перегляньте навчальні посібники Швидкодія.