Екранне згладжування
Згла́джування (англ. anti-aliasing) — технологія, що використовується в обробці зображень з метою зробити межі кривих ліній більш гладкими, прибираючи «зубці», що виникають на краях об'єктів. Вперше згладжування було застосовано в 1972 році в Массачусетському технологічному інституті в групі Architecture Machine Group, яка пізніше стала основною частиною MIT Media Lab.
Основний принцип згладжування — використання можливостей пристрою виведення для показу відтінків кольору, яким намальована крива. У цьому випадку пікселі, сусідні з граничним пікселями зображення, беруть проміжне значення між кольором зображення і кольором фону, створюючи градієнт і розмиваючи межі.
Застосовується два варіанти згладжування:
- Загальне згладжування відмальовкою надмірно великого незгладженого зображення з подальшим зменшенням роздільної здатності.
- Спеціалізовані алгоритми згладжування, що працюють на зображеннях певного типу (наприклад, Алгоритм Ву для відмальовки відрізків).
Слід зауважити, що згладжування залежить від гамми монітору. Зокрема, середнє між 0,2 і 0,8 — це не обов'язково 0,5, а . Особливо це помітно на тонких візерунках і тексті. Тому згладжування найкращої якості виходить лише тоді, коли відома.
Примітка: згладжування впливає на фреймрейт (кількість кадрів у секунду) залежно від ПЗВ (пропускної здатності відеопам'яті) відеокарти.
Super-Sampling Anti-Aliasing — надмірна вибірка згладжування, також звана повноцінним або повноекранним згладжуванням, використовується для виправлення аліасингу «зубців» на повноекранних зображеннях. SSAA було доступно на ранніх відеокартах, аж до DirectX 7. У модельному ряді AMD HD6ХХХ вона включена як особливість (тільки для ігор на DirectX 9), також вона була включена до драйверів NVIDIA Fermi для всіх комп'ютерних ігор, починаючи з ігор на DirectX 9 і закінчуючи іграми на DirectX 11 з використанням будь-яких відеокарт NVIDIA, з підтримкою DirectX 10 та вище.
У результаті зображення з SSAA виглядає більш м'яким та реалістичним. Однак у фотографічних зображень із простим згладжуванням (наприклад, суперсемплінг, а потім усереднення) може погіршитися зовнішній вигляд деяких типів лінійних малюнків або діаграм (зображення виглядатиме розмито), особливо там, де лінії найбільш горизонтальні або вертикальні. У цих випадках може бути використаний хінтинг.
Повноекранне згладжування дозволяє усунути характерні «зубці» на межах полігонів. Однак слід враховувати, що повноекранне згладжування сильно навантажує відеокарту, що призводить до падіння частоти кадрів.
Якість згладжування обмежена пропускною здатністю відеопам'яті, тому відеокарта з швидкою пам'яттю зможе прорахувати повноекранне згладжування з меншою шкодою для продуктивності, ніж слабка відеокарта. Згладжування можна включати у різних режимах. Наприклад, згладжування x4 дасть якісніше зображення, ніж згладжування x2, але значно знизить продуктивність. Згладжування SSAAx2 подвоює роздільну здатність, тоді як SSAAx4 його вчетверяє.
Multi-Sample Anti-Aliasing — алгоритм, що прийшов на зміну SSAA, працюючій тільки з геометрією, завдяки цьому дає схожий ефект згладжування з SSAA, але при меншому навантаженні.
Coverage Sampling Anti-Aliasing — продовження "еволюції" SSAA➟MSAA➟CSAA. Поліпшення досягнуто за рахунок того, що в буфер кадру передається ще й інформація про вибірку з сусіднього пікселя. Що в результаті допомагає розрахувати точніше згладжування. При рівних рівнях згладжування (x2, x4, x8...) CSAA і MSAA, якість завжди буде вищою у CSAA, а за навантаженням вони рівні.
Quality Coverage Sampling Anti-Aliasing — покращена версія CSAA, за рахунок використання вдвічі більшої кількості вибірок для аналізу.
Adaptive Anti-Aliasing — в MSAA є проблема при згладжуванні країв на прозорих об'єктах. Цей алгоритм покликаний усунути цю проблему. Є об'єднанням MSAA та SSAA. Цей вид рекомендується власникам потужних відеокарт. Використовується лише у AMD.
Transparency Anti-Aliasing — аналог AAA, але від NVIDIA.
Custom Filter Anti-Aliasing — алгоритм, що включає 4 фільтри: box, narrow-tent, wide-tent та edge-detect. Кожен фільтр це різний підхід до реалізації MSAA. Використовується лише у AMD.
- box: стандартний MSAA.
- narrow-tent: аналог CSAA.
- wide-tent: аналог QCSAA.
- edge-detect: при проході фільтра по обробленим зображенням, для певних ним пікселів, які визначаються як межі полігонів або різкі колірні переходи, використовується більш якісний метод згладжування з великою кількістю вибірок, а для решти пікселів з меншим.
Temporal approXimate Anti-Aliasing — аналог ТАА від NVIDIA, який використовує основу MSAA. У формулі розрахунку використовується час, дані з пікселів та попередніх кадрів і дані з сцени, що обробляється. Після чого відбувається усереднення за кольором. Це дозволяє позбутися мерехтіння та посмикування об'єктів у грі. Вдалині дає якісну картинку, проте трохи милить близькі об'єкти і навантаження майже як у MSAA, хоча якість при тих же значеннях краща. За словами розробника: TXAAx2 можна порівняти за якістю з MSAAx8, але за навантаженням можна порівняти з MSAAx2, а TXAAx4 вище за якістю ніж MSAAx8, але за навантаженням можна порівняти з MSAAx4. Відмінно підходить для згладжування динаміки.
Temporal Anti-Aliasing — загальний термін для різних часових алгоритмів згладжування. Не обмежений конкретним виробником. Працює на основі шейдеру, який об'єднує два кадри з використанням векторів руху для визначення місця вибірки попереднього кадру.
Temporal Super-Sampling Anti-Aliasing — алгоритм, у якому згладжування застосовується не тільки до поточного кадру, але й до деяких кадрів, які були оброблені раніше, відновлюючи старі положення пікселів та використовуючи їх швидкість. Це створює більш плавні та кінематографічні сцени у грі, лише трохи збільшуючи навантаження на відеокарту.
Fast approXimate Anti-Aliasing — алгоритм від NVIDIA, є однопрохідним піксельним шейдером, який обраховує результуючий кадр на етапі постобробки. Є більш продуктивним рішенням порівняно з традиційним MSAA, що дається взнак на точності та якості зображення.
Morphological Anti-Aliasing — аналог FXAA від компанії Intel. Шукає «зубчасті» межі на кожному кадрі, схожі на літери Z, L або U, і змішує кольори сусідніх пікселів, що входять до кожної такої частини. Алгоритм переведено на використання процесора, а не відеокарти. Звідси його можна рекомендувати власникам слабких відеокарт із більш-менш продуктивним процесором. Через складніший алгоритм зображення виходить більш якісним, ніж у FXAA. Є реалізація AMD, але технічно може використовувати і NVIDIA. Має проблему: згладжування не працює на прозорих текстурах. Тому на додачу цієї постобробки потрібно підключати ще й TrAA або AAA для покращення зображення. Час обробки займає 0,9 мс. Також є алгоритми MLAA реалізовані на відеокартах.
Directionally Localized Anti-Aliasing — аналог MLAA, але з кращою стабільністю за часом кадру. Не від компанії Intel.
Multiframe Sampled Anti-Aliasing — алгоритм від NVIDIA, ексклюзивний для відеокарт покоління Maxwell. Завдяки чергуванню позицій вибірок, MFAAx4 так само впливає на продуктивність як і MSAAx2, проте забезпечує якість зображення на рівні MSAAx4.
Subpixel Reconstruction Anti-Aliasing — двопрохідний алгоритм від NVIDIA. Дуже схожий з MLAA, але працює з буферами глибини та картами нормалей, через що краще визначає межі для згладжування та затінені краї. Час виконання загалом дуже низький, основний час у алгоритмі йде на обробку затінювання. На виході можуть бути артефакти. Для порівняння, на згладжування зображення з роздільною здатністю 1280x720 (HDV 720p) методом SSAA йде близько 5-10 мс, а SRAA 1,8 мс.
Subpixel Morphological Anti-Aliasing — комбінація з MSAA, SSAA та MLAA. Взагалі, це покращений MLAA з додаванням локального контрасту, пошуком патернів та використанням більшої кількості вибірок. Іноді може додаватись ще й тимчасова надлишкова вибірка. Ресурсів споживає більше ніж MLAA, але використовує при цьому відеокарту, а не процесор.
Можна зустріти різновиди:
- SMAAx1: класичний алгоритм SMAA, що включає точний пошук відстаней, робота з локальним контрастом для визначення країв, геометричних об'єктів та пошук діагональних ліній. Час обробки займає 1,02 мс.
- SMAATx2: SMAA x1 + алгоритми з TSSAA. Час обробки займає: 1,32 мс.
- SMAASx2: SMAA x1 + алгоритми з MSAA. Час обробки займає: 2,04 мс.
- SMAAx4: SMAA x1 + алгоритми з SSAA, MSAA, TSSAA та TMSAA. Час обробки займає: 2,34 мс.
Conservative Morphological Anti-Aliasing — комбінація з FXAA та SMAAx1. Ідеально підходить для слабких та середніх відеокарт. На відміну від FXAA, відбувається разрахунок обробки ліній та країв довжиною до 64 пікселів. Використовується алгоритм з обробкою лише симетричних розривів кольорів, щоб уникнути непотрібного розмиття. Відмінність від SMAAx1 відбувається за рахунок менш повного згладжування об'єктів, тому що обробляється менше типів фігур і має підвищену тимчасову стабільність, тобто менше мерехтіння об'єктів.
Dynamic Super Resolution — алгоритм від NVIDIA, обробляє зображення у високій роздільній здатності (до формату 4K), після чого зображення масштабується до роздільної здатності дисплея. Це дозволяє підвищити якість зображення, але продуктивність у такому режимі знижується, тому що обробка відбувається у вищій роздільній здатності.
Virtual Super Resolution — аналог DSR, але від AMD.
Hybrid-Sampling Anti-Aliasing — комбінація з SSAA та MSAA. Від NVIDIA.
- Данило Гридасов. Під мікроскопом. GeForce CSAA vs. Radeon CFAA. i3D-Quality. iXBT (23 жовтня 2008).
- Kristof Beets, Dave Barron. Аналіз методів згладжування на основі super-sampling. iXBT (7 червня 2000).
- Technical Report CSAA (30 жовтня 2006).