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.

2D згладжування

Дивись також

Godot також підтримує згладжування в 3D-візуалізації. Це описано на сторінці 3D згладжування.

Вступ

Через обмежену роздільну здатність сцени, відтворені у 2D, можуть мати артефакти накладення. Ці артефакти зазвичай проявляються у вигляді ефекту «сходів» на краях геометрії та найбільш помітні при використанні таких вузлів, як Line2D, class_Polygon2D або class_TextureProgressBar. Власне малювання в 2D також може мати артефакти згладжування для методів, які не підтримують згладжування.

У наведеному нижче прикладі ви можете помітити, як краї мають блоковий вигляд:

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

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

Щоб боротися з цим, Godot підтримує кілька методів увімкнення згладжування у 2D-рендерінгу.

Властивість згладжування в Line2D і настроюване малювання

Це рекомендований метод, оскільки в більшості випадків він має менший вплив на продуктивність.

Line2D має властивість Antialiased, яку можна ввімкнути в інспекторі. Крім того, кілька методів для Власне малювання в 2D підтримують додатковий параметр antialiased, який можна встановити на true під час виклику функції.

Ці методи не вимагають увімкнення MSAA, що робить їх базову вартість продуктивності низькою. Іншими словами, немає жодних постійних додаткових витрат, якщо ви не малюєте геометрію зі згладженням у якийсь момент.

Недоліком цих методів згладжування є те, що вони працюють шляхом створення додаткової геометрії. Якщо ви створюєте складну 2D-геометрію, яка оновлюється кожен кадр, це може бути вузьким місцем. Крім того, Polygon2D, TextureProgressBar і кілька спеціальних методів малювання не мають властивості згладжування. Для цих вузлів замість цього можна використовувати двовимірне багатовибіркове згладжування.

Багатовибіркове згладжування (MSAA)

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

Перш ніж увімкнути MSAA у 2D, важливо зрозуміти, на чому працюватиме MSAA. MSAA у 2D має такі ж обмеження, як і в 3D. Хоча він не створює розмитості, сфера його застосування обмежена. Основні програми 2D MSAA:

  • Геометричні ребра, наприклад лінії та багатокутники.

  • Краї спрайтів лише для пікселів, які торкаються одного з країв текстури. Це працює як для лінійної фільтрації, так і для фільтрації найближчих сусідів. MSAA не впливає на краї спрайтів, створені за допомогою прозорості зображення.

Недоліком MSAA є те, що він працює лише на краях. Це тому, що MSAA збільшує кількість зразків покриття, але не кількість зразків кольору. Однак, оскільки кількість зразків кольорів не збільшилася, фрагментні шейдери все ще запускаються для кожного пікселя лише один раз. Як наслідок, MSAA жодним чином не вплине на наступні види псевдонімів:

  • Псевдоніми в межах відфільтрованих текстур найближчих сусідів (піксельне мистецтво).

  • Псевдоніми, спричинені спеціальними 2D-шейдерами.

  • Дзеркальне накладання при використанні Light2D.

  • Псевдоніми під час відтворення шрифтів.

MSAA можна ввімкнути в налаштуваннях проекту, змінивши значення параметра Rendering > Anti Aliasing > Quality > MSAA 2D. Важливо змінити значення параметра MSAA 2D, а не MSAA 3D, оскільки це абсолютно окремі налаштування.

Порівняння між відсутністю згладжування (ліворуч) і різними рівнями MSAA (праворуч). Верхній лівий кут містить вузол Line2D, верхній правий кут містить 2 вузли TextureProgressBar. Унизу міститься 8 спрайтів піксельного мистецтва, 4 з яких торкаються країв (зелений фон), а 4 з них не торкаються країв (логотип Godot):

../../_images/antialiasing_msaa_2x.webp ../../_images/antialiasing_msaa_4x.webp ../../_images/antialiasing_msaa_8x.webp