Jak poprawić wygląd gier? Antyaliasing w pigułce


Poszarpane krawędzie wirtualnych obiektów to zmora graczy. Istnieje kilka metod ich eliminacji, ale czy któraś z nich jest definitywnie najlepsza?

Zjawisko aliasingu jest najbardziej dokuczliwe, gdy linia krzywa jest widoczna na tle o sporym kontraście. W dużym uproszczeniu powstaje ono z powodu zbyt niedokładnych danych dotyczących danej linii, a więc najczęściej zbyt niskiej rozdzielczości. Aby zlikwidować nieprzyjemne dla oka „schodki”, najprościej jest zwiększyć rozdzielczość, w jakiej renderowana jest cała gra. Niesie to jednak ze sobą spore zwiększenie wymagań sprzętowych, a ponadto wymóg posiadania monitora zdolnego wyświetlić odpowiednio wysoką rozdzielczość.

Battlefield 4 – w tle wyraźnie widoczne „poszarpane” przewody linii napowietrznej

By móc przeciwdziałać zjawisku aliasingu (anti-aliasing, bądź antyaliasing), opracowano algorytmy, które powodują, że staje się ono mniej widoczne, a zarazem nie wpływają na wydajność tak mocno jak zwiększenie rozdzielczości.

SSAA (SuperSampling Anti-Aliasing)

To najstarsza i zarazem najmniej skomplikowana metoda, znana też pod nazwą FSAA (Full-Scene Anti-Aliasing). Polega na wyrenderowaniu obrazu w wyższej rozdzielczości, a następnie zeskalowaniu go do niższej rozdzielczości, w której działa gra. Podczas tego procesu położenie każdego piksela widocznego na ekranie jest obliczane na podstawie kilku próbek.

Skalowanie do niższej rozdzielczości może przebiegać na kilka sposobów. Najpopularniejsze z nich to grid oraz rotated grid.

  • Grid dzieli piksel na kilka sub-pikseli i używa próbek z centrum każdego sub-pikseli, by opracować wynik.
  • Rotated grid jest nieco bardziej zaawansowanym algorytmem. Siatka próbek jest obrócona, by próbki nie zachodziły na siebie. Takie rozwiązanie zazwyczaj potrafi dodatkowo polepszyć jakość anti-aliasingu.

SSAA zapewnia wysoką jakość obrazu i skuteczną redukcję schodków, jednak jest to okupione znaczącym spadkiem wydajności.

MSAA (Multisample anti-aliasing)

Pod kątem wydajności MSAA jest znaczącym usprawnieniem względem SSAA. Mniejsze obciążenie sprzętu zostało osiągnięte poprzez próbkowanie dwóch albo większej ilości sąsiadujących ze sobą pikseli, zamiast każdego z nich indywidualnie w wyższej rozdzielczości. Dzięki temu mogą zostać zastosowane kolejne optymalizacje. Np. jeśli występuje zgrupowanie pikseli o tym samym kolorze, nie wszystkie muszą być całkowicie analizowane – co zdecydowanie zwiększa wydajność.

SSAAx4 oznacza, że każdy piksel potrzebuje czterech próbek. Natomiast w przypadku MSAAx4 niektóre próbki mogą być rozdzielone między sąsiadujące piksele. Niestety zabiegi pozwalające na zmniejszenie zapotrzebowania na moc obliczeniową powodują, że algorytm MSAA bardzo źle radzi sobie z powierzchniami przezroczystymi, które są często stosowane w nowych grach. Dzieje się tak dlatego, że w podwyższonej rozdzielczości odbywa się jedynie rasteryzacja siatek, a cieniowanie i wypełnianie teksturami przeprowadzane są już w rozdzielczości natywnej.

Anti aliasing postprocesowy

Osobnym typem anti-aliasingu są algorytmy działające po zakończeniu renderowania, na poziomie postprocesingu. Ich główną zaletą jest bardzo niewielki wpływ na wydajność.

Tego typu algorytmy występują w kilku odmianach:

  • FXAA (Fast Approximate Anti-aliasing) – powoduje lekkie rozmycie obrazu, co dla niektórych graczy jest nie do przyjęcia;
  • SMAA (Enhanced Subpixel Morphological Antialiasing) – nie rozmywa obrazu aż tak bardzo.

Producenci gier czasami na własną rękę opracowują algorytmy anty-aliasingu. Wartymi odnotowania są CMAA z Grid Autosport, AAA z Metro Last Light, czy TAA (Temporal Anti-Aliasing) z Rainbow Six: Siege.

Osoby lubiące eksperymenty mogą skorzystać ze specjalnych programów, które umożliwiają zastosowanie postprocesowych metod wygładzania krawędzi w tytułach, które ich natywnie nie wspierają.

Wpływ na wydajność

Platforma testowa:

  • Intel Core i5-6600K @ 4,7 GHz
  • 2 x 8 GB DDR4 @ 2800 MHz
  • Sapphire NITRO Radeon RX 470 8 GB
  • Radeon Software Crimson Edition 16.10.1

SSAA mocno obniża wydajność i wymaga bardzo mocnej konfiguracji. Aczkolwiek może być dobrym rozwiązaniem w przypadku starszych gier.

Wpływ na jakość obrazu

Na zrzutach ekranu przezroczystości roślinności w Battlefield, Call of Duty, Splinter Cell czy Rainbow Six nie wyglądają zbyt dobrze przy zastosowaniu MSAA. Stan faktyczny podczas gry prezentuje się niestety jeszcze gorzej. Wyjątkiem jest GRID, który po zastosowaniu tej technologii wygładzania krawędzi prezentuje się prawidłowo.

Podsumowując

  • W przypadku słabszych komputerów lepiej postawić na metody postprocesowe, które nie wpływają znacząco na wydajność.
  • Połączenie SSAA / MSAA z metodą postprocesową może okazać się dobrym kompromisem pomiędzy jakością wygładzania krawędzi, a szybkością działania gry.
  • SSAA jest świetną metodą na polepszenie wyglądu starszych, mniej wymagających gier.
  • Jeśli gra nie obsługuje wygładzania postprocesowego, warto spróbować zewnętrznych programów to umożliwiających.
  • W niektórych tytułach wygładzanie postprocesowe wygląda lepiej niż MSAA.

Podziel się ze znajomymi!