autor: Michał Kułakowski
FXAA i MLAA - szybkie i wydajne wygładzanie krawędzi w starszych jak i najnowszych grach
Antyaliasing czyli inaczej wygładzanie krawędzi, pozwala nam pozbyć się z trójwymiarowego obrazu “ząbków” psujących odbiór gry. Niestety, standardowe techniki wygładzania skutecznie obciążają nasze komputery, dlatego też ciekawą alternatywą może być technologia opracowana przez firmy AMD i Nvidia. Pozwala ona cieszyć się antyalisaingiem bez widocznego spadku wydajności.
Antyaliasing to technologia znana zapewne większości osób, które choć trochę interesowały się wydajnością i poprawą oprawy graficznej gier komputerowych. Ma ona oczywiście zastosowanie w innych dziedzinach związanych z informatyką, ale z perspektywy fana wirtualnej rozrywki nie mają one większego znaczenia. Dzięki antyaliasingowym algorytmom komputer potrafi skutecznie wygładzać krawędzie generowanych trójwymiarowych obiektów, pozbywając się tym samym charakterystycznych „ząbków”, negatywnie wpływających na odbiór nawet najbardziej zaawansowanych technicznie tytułów. Cel ten osiąga między innymi przy pomocy modyfikowania jasności pikseli obrazu sąsiadujących z brzegami brył.
![FXAA i MLAA - szybkie i wydajne wygładzanie krawędzi w starszych jak i najnowszych grach - ilustracja #1](/Galeria/Html/Wiadomosci/280288062.png)
Obecnie najpopularniejszym modelem antyaliasingu jest MultiSampling (MSAA), który zastąpił używany wcześniej i o wiele bardziej zasobożerny algorytm SuperSampling (SSAA). Dodatkowo, przez ostatnie lata, zarówno Nvidia jak i AMD zdążyły stworzyć własne i udoskonalone standardy wygładzania, dopasowane do produkowanych przez nie chipsetów graficznych. Niestety, bez względu na to, z której metody skorzystamy, proces ten niesie ze sobą negatywne konsekwencje. Włączenie antyaliasingu wpływa dość poważnie na wydajność komputera i szybkość wyświetlania grafiki. Jest to dotkliwe, zwłaszcza dla użytkowników słabszych komputerów lub osób odczuwających boleśnie stratę nawet kilku klatek obrazu.
Odpowiedzią na te problemy mogą być dwie względnie nowe metody wygładzania krawędzi, które niezależnie od siebie opracowane zostały w laboratoriach AMD oraz Nvidia. Działają one w zbliżony sposób, ale nie obciążają praktycznie komputera. Co więcej, przy użyciu odpowiednich narzędzi możemy zastosować je w starszych tytułach, w których twórcy nie przewidzieli takiej możliwości.
Zalety i wady obu rozwiązań:
Plusy:- Osiągają zbliżone efekty do tego co oferuje standardowy antyaliasing
- Są szybkie i nie wpływają negatywnie na wydajność
- Działają w starszych grach, które nie obsługują wygładzania krawędzi
- Wywołują pewne problemy z obrazem i rozmazują czcionkę
- Nie współpracują z każdym tytułem
FXAA (Fast Approximate Anti-Aliasing)
Algorytm FXAA został opracowany przez programistę Timothy`ego Lottes`a, pracującego dla Nvidia. Działa on na zupełnie innej zasadzie niż standardowy antyaliasing, co pokrótce zostało opisane w dostępnej dokumentacji. Najprościej rzecz ujmując, zamiast na bieżąco skanować brzegi figur i modyfikować pojedyncze piksele, algorytm traktuje każdą już wygenerowaną klatkę obrazu jako pojedynczą dwuwymiarową grafikę i to ją poddaje odpowiedniej obróbce. Żeby nie wpłynąć na płynność rozgrywki musi ją oczywiście poprawiać z ogromną szybkością, która w tym przypadku zamyka się w przedziale od jednej do dwóch milisekund. Mimo tego zabójczego tempa, algorytm nie pochłania zbyt dużej ilości mocy chipsetu i nie spowalnia gry. Ponadto, praktycznie żadnego wpływu na jego działanie nie ma też liczba obiektów wyświetlanych na ekranie. Dużym pozytywem jest również fakt, że FXAA wygładza elementy pomijane przez standardowe metody, takie jak dwuwymiarowa trawa czy liście. Niestety, ma to też swoje minusy i obraz jest czasami zbyt rozmyty, pojawiać mogą się drobne problemy z jasnością i kolorami. Wygładzeniu ulegają elementy interfejsu lub czcionka w napisach, co może dawać dość nieoczekiwane efekty.
Na razie, FXAA jest formalnie obsługiwane przez kilka produkcji, takich jak F.E.A.R. 3 czy Skyrim, gdzie możemy go włączyć z poziomu ustawień gry. Już wkrótce, ma być to także jedna z opcji dostępnych w programie konfiguracyjnym Nvidia. Warto dodać, że ten sposób obróbki współpracuje w pełni ze standardowymi modelami wygładzania i można równocześnie korzystać z obu, co ostatecznie daje lepsze efekty.
FXAA w grach nie wspierających tej technologii
Wykorzystując mody, FXAA możemy zaimplementować do starszych gier opartych o DirectX 9 i 10, a także tych, które nie tylko nie pozwalają na jego używanie, ale nigdy nie obsługiwały żadnej formy antyaliasingu. Co ważne, poprawki współpracują z większością współczesnych kart graficznych, bez względu na ich producenta. Pierwszą modyfikacją, która umożliwiała zabawę z FXAA, był FXAA Injector opublikowany na forum 3D-center.org. Instalacja poprawki jest wyjątkowo prosta i polega jedynie na przekopiowaniu kilku plików (w dwóch wersjach dostępnych dla tytułów pracujących z DirectX 9 i 10) do głównego folderu z grą.
Na modzie tym oparto doskonalszą wersję łatki – SMAA, której instalację znajdziemy tutaj. Przyśpiesza ona pracę algorytmu i wprowadza nieco nowych rozwiązań, poprawiających działanie oraz wydajność. Jej implementacja jest równie bezproblemowa i ogranicza się do przeniesienia czterech plików do katalogu gry, w której chcemy włączyć tę opcję. Poza wygładzaniem ostrych brzegów, oba mody pozwalają na zmianę jasności i kontrastu, a także kolorów wyświetlanego obrazu, jednak ustawienia te zmieniamy ręcznie w pliku konfiguracyjnym, co jest już wyższą szkołą jazdy.
Korzystając z modyfikacji, niestety nie uruchomimy wszystkich teoretycznie dostępnych produkcji. Czasami możemy napotkać problemy uniemożliwiające normalną rozgrywkę, ale jak udowadniają użytkownicy moda, działa on z większością hitów. Poprawimy więc w ten sposób wygląd obu części Mass Effect, Half-Life`a 2, GTA IV czy Battlefield 3. Warto ostrzec, że podmiana plików gier może być wykryta jako próba oszustwa przez programy monitorujące, takie jak Steam i przynieść ze sobą niezbyt przyjemne konsekwencje. Należy więc uważać.
GTA IV - bez FXAA i AA
GTA IV - z FXAA
MLAA (Morphological Anti-Aliasing)
MLAA działa właściwie na tej samej zasadzie co FXAA. W przeciwieństwie do odwiecznego konkurenta, AMD wprowadziło już nawet możliwość jego uruchomienia z poziomu standardowego programu kontrolującego kartę graficzną. Znajdziemy go tam w opcjach pod polską nazwą „filtrowanie morfologiczne”. Włączyć mogą ją właściciele modeli Radeonów z serii 5xxx i późniejszych. Podobnie jak w przypadku modów, filtrowanie działa również w starszych tytułach, ale też...w czasie zwykłej pracy z system operacyjnym. Pamiętać musimy więc o jego wyłączaniu, bo może wpływać na wyświetlanie tekstu i grafiki np. w przeglądarkach internetowych. Tak jak FXAA, MLAA współpracuje bez problemu ze standardowymi metodami antyaliasingu i w tym tandemie zapewni najlepszą jakość grafiki.