Fxaa - що це? Метод згладжування. Згладжування в іграх
Уже минув той час, коли гри вражали виключно своїм геймплеєм: гравець давним-давно став вимогливим і, зокрема, вимогливим до якості представленої на екрані картинки. При цьому мало хто знає, що для забезпечення високого ступеня якості сьогодні багатьма розробниками ігор використовується згладжування FXAA. Що це таке - сьогодні відомо далеко не всім геймерам, тому багато і замислюються, чи варто взагалі включати цю функцію.
Переважна більшість гравців прекрасно знає про те, що являють собою так звані драбинки по краях об`єктів, а також про те, як можна вирішити дану проблему, використавши «anti-aliansing» або просто «згладжування».
Що таке згладжування?
Згладжування - це непогане явище, так як значно збільшується сприйняття картинки, а в сучасних реаліях ті ігри, в яких воно не використано, в кінцевому підсумку найчастіше виявляються освистали. При цьому незадовільним залишається те, яким чином реалізується згладжування FXAA. Що це таке, багатьох користувачів може навіть не цікавити, однак насправді саме реалізація впливає на якість кінцевої картинки.
Погана реалізація часто виявляється причиною того, що цільове обладнання має недостатню обчислювальну потужність. Звичайно, в вигідних умовах тут виявляються ті люди, які вважають за краще грати на ПК, так як в даному випадку потужність обладнання безпосередньо залежить від матеріальних можливостей його власника, однак консольщікі найчастіше задовольняються саме геймплеєм, так як якість графіки в переважній більшості випадків на комп`ютерах набагато краще в порівнянні з тим, яку графіку мають консольні ігри. Однак кожна людина самостійно вибирає, де і на чому йому грати.
Що таке FXAA?
Відразу варто відзначити, що вже досить давно ігроробів використовується технологія згладжування FXAA. Що це таке, тоді ще не знали, але перше його використання зустрічається в ММО Age of Conan, а також у відомому по всьому світу шутере F.E.A.R. У цих іграх, правда, використовувалася тільки первинна версія даного згладжування, яка на той момент була не саме продуктивне рішення.
У наш час в іграх використовується дещо інший формат FXAA. Що це таке? розшифровується як Fast approximate Anti-Aliasing, що представляє собою більш ефективне рішення в порівнянні з традиційною технологією MSAA. Це однопрохідний піксельний шейдер, за допомогою якого обрахування результуючого кадру здійснюється ще на етапі постобробки. Даний шейдер створювався як більш швидкого вирішення, яке є менш вимогливим до пам`яті в порівнянні з вищевказаними, проте за свої переваги технологія розплачується точністю роботи, а також якістю. Побачивши це, багато хто може порахувати, що технологія неактуальна. Насправді це не зовсім так.
У чому переваги цього методу?
Згладжування FXAA відрізняється цілим рядом переваг, включаючи поліпшене згладжування так званих субпикселей і спекулярит. В офіційному документі розробник даної технології Тімоті Лоттс говорить про те, що його продукт з настройками середньої якості здійснює постобработку кадрів роздільною здатністю 1920х1200 на основі GTX 480 зі швидкістю менше однієї мілісекунди.
Основні переваги, які має згладжування FXAA, полягають в тому, який саме тут використовується алгоритм згладжування субпикселей, який працює більш ефективно в порівнянні з алгоритмом MLAA, що є цілком достатнім для роботи обладнання, яке працює на рівні DirectX9. Тобто в даному випадку здійснюється постобработка в один прохід, і найцікавішим є повна незалежність від того, який використовується GPU Compute API. Однак тут є і один мінус - розробники повинні цю технологію в обов`язковому порядку вбудовувати в різні ігри. У той же час традиційні технології згладжування працюють або ж, навпаки, не можуть працювати на рівні драйверів. Таким чином, поки програмісти будуть використовувати в своїх двигунах метод експоненціального згладжування і при цьому не будуть застосовувати в своїх двигунах код FXAA, неможливо буде добитися необхідного ефекту, так як включити код ззовні до недавнього часу було неможливо.
Як була вирішена проблема?
Відео: Згладжування У ГРІ
З плином часу було прийнято рішення спочатку ввести код FXAA в бібліотеку d3d.dl, внаслідок чого з`явилася можливість гнучкого налаштування результату через різні конфігураційні файли, а також включення або ж виключення FXAA за допомогою кнопки [Pause]. Даний набір файлів спочатку копіюється в директорію, де присутня виконуваний файл програми DX9, а це додаток при запуску буде підхоплювати бібліотеку, в якій присутній потрібний код. При цьому, так як розробник технології впровадження даного коду в бібліотеку спочатку подбав про те, щоб результати роботи були поміщені в лог, користувачі активно почали визначати баги в роботі цієї технології, які досить швидко виправлялися. З плином часу з`явилися також «ін`єкції» з кодом для форматів DirectX 10 і 11.
Як перевірити?
Найбільш очевидно визначити ефект від того, що використовується метод експоненціального згладжування і FXAA, можна в грі World of Tanks.
Якщо згладжування FXAA не використовується, починають проявлятися явні «ескалатори», і не дивлячись на те, що моделі танків можуть бути досить великими, а також будуть відрізнятися пристойною деталізацією, артефакти проявляються дуже помітно, і особливо це стосується різних тонких об`єктів. Технологія вбудованого згладжування намагається певним чином змащувати краю об`єктів, але робить це досить посередньо, не кажучи вже про те, що місцями картинка може бути розмитою.
У чому проявляються зміни?
Після того як включається FXAA tool, результат стає очевидний: артефакти повністю зникають, проте з`являється деяка розмитість картинки. Крім цього, є також унікальний варіант FXAA Sharpen. Розробник технології в одній з версій додав фільтр різкості, який був узятий з MPC-HC, при цьому кінцевий результат виявився цілком пристойним: розмитості повністю зникають, текстури отримують ще більш різкий вигляд у порівнянні з оригіналом, а «драбинки», незважаючи на використання даного фільтра, практично повністю відсутні. Тепер ви знаєте, що таке FXAA в іграх типу World of Tanks. Через те що автори спочатку не планували таку різкість текстури, могло трохи «вибивати» вежі, але в ігровому процесі це є практично непомітним.
Продуктивність тут практично не зменшується. Звичайно, движок World of Tanks працює кілька дивним чином, тому сплески або ж, навпаки, падіння продуктивності в кінцевому підсумку можуть проявлятися буквально з нічого.
Відео: Що таке згладжування? (FXAA і інші)
NoAA, SMAA або FXAA
Якщо порівнювати режими «noAA» або SMAA і «FXAA Sharpen», то картинка значно змінюється в кращу сторону в останньому випадку. Єдиним винятком тут є використовуваний фільтр різкості, який надмірно тонкі лінії звужує ще більше, зокрема, це особливо помітно в навісному прицілі артилерії. При цьому кількість кадрів в секунду в варіанті FXAA значно перевищує попередній варіант.
В процесі проведення тривалих тестів було визначено, що при використанні FXAA продуктивність падає приблизно на 10-12%, в той час як у випадку, якщо використовується метод згладжування MSAA 4x, якість якого конкурує на сьогоднішній день з технологією FXAA, і зовсім виявляється падіння продуктивності на 50% і більше.
Update
У 2011 році з`явилася також настроюється версія ін`єкції, в яку були включені всі перераховані вище варіанти FXAA і їх переваги. У даній збірці присутня чимала кількість фільтрів, серед яких варто виділити:
- Розумієте.
- Виньетирование.
- Насичення кольором.
- Сепію.
- І безліч інших.
Все це досить просто налаштовується через один файл, і найкорисніше в даному випадку: настройки без зусиль можна змінити навіть під час гри, досить просто згорнути програму, відкрити редактор налаштувань, розгорнути додаток і насолоджуватися новими настройками без необхідності перезапуску цікавить вас програми. Таким чином, вийшло повністю виключити бляклість згодом активації фільтра різкості, забезпечуючи більш чітку картину, в якій відсутні «драбинки» розмиття і досягнуто високу якість текстур.