TwojePC.pl © 2001 - 2024
|
|
RECENZJE | Nowa Generacja - II odsłona: MSI GeForce 6800 Ultra |
|
|
|
Nowa Generacja - II odsłona: MSI GeForce 6800 Ultra Autor: Kris | Data: 22/06/04
|
|
Jakość obrazu: FSAA
Jednym z wielu aspektów rozważań związanych z analizą jakości obrazu jest opis zastosowanych przez karty metod "pełnoekranowego" antyaliasingu (FSAA). W związku z szeregiem różnic związanych zarówno z wpływem efektu na framerate, jak i na generowany obraz, warto bliżej przyjrzeć się temu zagadnieniu. Wstępne informacje (w tym kwestia różnic pomiędzy maskami "Rotated" i "Ordered") podałem w rozdziale opisującym teorię budowy i działania układów, a teraz przyszedł czas na rozwinięcie niektórych zagadnień i konkretne przykłady.
Zacznę od "Temporal FSAA". Jest to nowa koncepcja antyaliasingu, zaproponowana przez ATI, przy okazji prezentacji układów R420. Na czym rzecz polega? Generujemy ramkę obrazu stosując klasyczny model multisamplingowy FSAA (w skrócie: MS FSAA). Kolor pikseli rantów obiektu wyznaczony jest na podstawie próbek pobranych z zestawu kilku innych pikseli, które go otaczają. Ich położenie zawsze określane jest względem obliczanego punktu. Koordynaty wyznacza tzw. maska, która jest stałą dla danej metody i trybu antyaliasingowego. Pomysł ATI jest niemal genialny w swojej prostocie, choć niestety ma kilka poważnych wad. Idea polega na tym, aby do obliczeń użyć dwie, odpowiednio dobrane maski, oparte na tej samej ilości punktów pomiarowych, i stosować je naprzemiennie, zmieniając po każdej wyświetlonej ramce obrazu 3D. Jeśli czas generowania jednej ramki jest wystarczająco krótki to, dzięki bezwładności oka, obraz uzyskany z dwóch masek nałoży się na siebie. Maski uzupełniają się tak, aby po złożeniu obrazów dwóch ramek dać efekt taki sam, jak przy użyciu dwukrotnie większej ilości punktów do obliczeń. Jeśli dla kogoś nie jest to zrozumiałe to może poniższy rysunek przybliży zasadę działania Temporal FSAA.
W podanym przykładzie, za pomocą multisamplingu 2x oraz zmiany ramek "w locie" uzyskujemy obraz taki sam, jak przy FSAA 4x. Inaczej mówiąc, mamy obraz wygładzony tak samo, jak w wyższym trybie, ze stratą framerate typową dla trybu niższego. Piękne, ale są pewne konkretne wady, o których nie należy zapominać. Po pierwsze, jeśli czas przygotowania ramki nie jest wystarczająco krótki, to zobaczymy nieprzyjemne migotanie rantów obiektów, czyli miejsc gdzie działa multisampling. Po drugie, rozważania zakładają nieruchomość obiektów. Jeśli jednocześnie ze zmianą maski nastąpi przesunięcie obiektu to nakładające się obrazy nie uzupełniają się i efekt jest mniej widoczny. W celu eliminacji zjawiska migotania sterownik wyłącza zmianę maski, jeśli ramka jest generowana zbyt długo. Doświadczalnie stwierdzono, że dopiero powyżej 60 fps można mieć pewność, że migotanie nie będzie widoczne.
Aktualne sterowniki są w stanie stosować efekt Temporal FSAA, natomiast wciąż nie jest on dostępny z poziomu zakładek opcji sterownika i aby go włączyć, trzeba posiłkować się tweakerami. Docelowo będzie można go wykorzystać w każdej karcie ATI wyposażonej w multisampling FSAA (praktycznie każda powyżej R9200). Mnie osobiście efekt specjalnie nie zainteresował. Można go stosować jedynie w przypadku mało wymagających gier (kwestia min. 60 fps) i jako element uzupełniający. Natomiast jeśli mamy łatwość w przygotowaniu ramek, to nie widzę przeciwwskazań, aby użyć klasyczny multisampling 4x lub nawet 6x. Niezależny od dynamiki ruchu obiektów, ani od framerate. Tym bardziej, że tryby powyżej 4x nie dają już istotnych zmian w obrazie.
Aktualne sterowniki udostępniają następujące tryby FSAA:
Nad odchodzącym do historii trybem 2xQ, polegającym na wykorzystaniu układu Ramdac w celu uzyskania większego filtrowania "schodków", kosztem ostrości obrazu, nie będę się rozpisywał. Pomysł opracowany jeszcze przez inżynierów firmy 3dfx.
Supersampling (SS FSAA) jest metodą antyalisingową polegającą na niejawnym renderowaniu ramki w rozdzielczości wyższej od wymaganej, dzięki czemu możliwe jest uzyskanie danych do obliczenia "wygładzonego" obrazu w trybie domyślnym. Jest to najstarsza znana metoda FSAA i praktycznie najprostsza do uzyskania. Sprzętowo można jedynie realizować część obliczeń przeliczających tryby, ale zdecydowanie największym kosztem jest sama rozdzielczość generowanych "próbek". Tryb ten, wbrew powszechnej opinii, ma szereg zalet, które są na tyle istotne dla niektórych użytkowników, że została przedstawiona ATI petycja o ponowne wprowadzenie go do aktualnych sterowników, dla układów Dx9. Podstawową zaletą SS FSAA jest fakt, że w odróżnieniu od MS FSAA działa on faktycznie pełnoekranowo. Oznacza to, że nie tylko filtruje ranty samych obiektów sceny 3D, ale również krawędzie, które pojawiają się w samych teksturach. Aby to zobrazować zastosowałem różne tryby FSAA do pojedynczej tekstury przedstawiającej klasyczną szachownicę:
Niezależnie jaki tryb multisamplingowy zastosujemy to różnicy w obrazie nie zobaczymy. Natomiast SS FSAA nie ma najmniejszych problemów z filtrowaniem schodków. Podstawową wadą tej metody jest bardzo poważny spadek framerate, związany z wyższym trybem generowania całej ramki obrazu. Dodatkowo, jak widać na powyższym obrazku, występuje efekt zmniejszenia poziomu detali samych tekstur.
nVidia udostępnia w sterownikach metodę mieszaną, polegającą na jednoczesnym połączeniu SS i MS FSAA. Efektem jest minimalna poprawa rantów obiektów (w stosunku do samego multisamplingu) wraz z możliwością wygładzania samych tekstur. W zależności od wielkości i zawartości tekstur różnica w obrazie, może być zarówno niewidoczna, jak i bardzo znacząca. Niestety poważne obciążenie układu graficznego jest w tej metodzie nieuniknione.
Spróbujmy porównać obraz w zależności od trybu:
Oczywiście zdaje sobie sprawę z tego, że takie zrzuty wywołują u wielu raczej uśmiech politowania. No cóż. Nic innego nie wymyślę. Sądzę, że nieco lepiej ściągnąć wszystkie obrazki na dysk lokalny i przewijać je kolejno w tym samym oknie. Nic jednak nie zastąpi obserwacji efektu w ruchu.
Jako, że obrazki nie są specjalnie czytelne to niezbędny jest dodatkowy komentarz. FSAA 2x wygląda podobnie na wszystkich kartach. Różnice ujawniają się w wyższych trybach. W przypadku Radeonów i GF6 można pisać o zbliżeniu obrazu FSAA 4x natomiast to, co prezentuje GFFX, w nieznacznym tylko stopniu różni się od FSAA 2x. Porównywalną z FSAA 4x jakość filtrowania rantów GFFX osiąga w trybie 6xS. Dodatkowo, w niektórych przypadkach skorzysta na wygładzeniu zawartości tekstur dzięki SS FSAA. Najlepsze filtrowanie brzegów obiektów występuje w trybie 6x ATI oraz 8xS NV40. Z dodatkową korzyścią płynącą z SS FSAA w przypadku układu nVidia. Co do trybu 8xS GFFX to, proszę nie "regulować odbiorników". I nie korzystać z niego.
Skoro wiemy już, jak wygląda obraz to sprawdźmy, jaki jest koszt uzyskania wyższych trybów filtrowania (stosowanie FSAA 2x w kartach tej klasy jest co najmniej nietaktem):
Mam nadzieję, że dane są wystarczająco "czytelne". Włączenie FSAA 4x to, w tym teście, spadek framerate rzędu 50% na starszych kartach i ok. 40% na nowszych. Wyższe tryby już ściśle zależą od użytej metody antyaliasingu. W przypadku nVidia (SS FSAA) jest to 75-80% natomiast ATI (MS FSAA) 50-60%. Oczywiście większy spadek odnotowują karty starszej generacji.
Biorąc pod uwagę zarówno jakość obrazu, jak i spadek framerate najciekawszymi trybami są (jak dla mnie): dla GFFX - 2x, 6xS; dla ATI - 4x, 6x; dla GF6 - 4x, 8xS. Pozostałe nie są specjalnie interesujące z punktu widzenia użytkownika. W przypadku układów nVidia, SS FSAA ma zastosowanie raczej do niższych trybów lub mniej wymagających gier. Przy okazji tego zestawienia mam nadzieję, że niektórzy zrozumieli dlaczego, z pewnym niesmakiem, odnosiłem się do bezpośredniego porównania framerate Radeonów Dx9 i GFFX w trybie 4x. W przypadku testów ATI i GF6 obraz jest już na tyle zbliżony, że ich wyniki są jak najbardziej "kompatybilne".
|
|
|
|
|
|
|
|
|
|