Attention: Here be dragons

This is the latest (unstable) version of this documentation, which may document features not available in or compatible with released stable versions of Godot.

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

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

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

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

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

Дивись також

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

Примітка

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

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

У розширених налаштуваннях проекту в розділі Відтворення > Масштабування 3D ви можете знайти кілька параметрів масштабування роздільної здатності 3D:

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

  • Білінійна: Стандартна білінійна фільтрація (за замовчуванням). Використовується як резервний варіант, коли поточний рендерер не підтримує FSR 1.0 або FSR 2.2. Доступно у всіх рендерерах.

  • FSR 1.0: AMD FidelityFX Super Resolution 1.0. Повільніше, але з вищою якістю порівняно з білінійним масштабуванням. На дуже повільних графічних процесорах вартість FSR1 може бути занадто високою, щоб виправдати його використання замість білінійного масштабування. Доступно лише під час використання рендерера Forward+.

  • FSR 2.2: AMD FidelityFX Super Resolution 2.2 (починаючи з Godot 4.2). Найповільніша, але навіть вища якість порівняно з FSR1 та білінійним масштабуванням. На повільних графічних процесорах вартість FSR2 може бути занадто високою, щоб виправдати її використання замість білінійного масштабування або FSR1. Щоб продуктивність FSR2 відповідала FSR1, потрібно використовувати нижчий коефіцієнт масштабування роздільної здатності. Доступно лише під час використання рендерера Forward+.

Ось порівняльні зображення між вихідною роздільною здатністю, білінійним масштабуванням із 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 у вузлі class_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).

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