
Temat jakości obrazu i związane z nim wątpliwości wracają za każdym razem, gdy NVIDIA lub AMD wydają nowe sterowniki i twierdzą, że ich zainstalowanie znacząco poprawia wydajność kart graficznych w pewnych grach. Zawsze powstaje pytanie, czy producent nie oszukuje w jakiś sposób i czy te dodatkowe klatki na sekundę wynikają jedynie z wytężonej pracy inżynierów. Postanowiliśmy sprawdzić, jak to wygląda, i porównać jakość obrazu oraz ilość optymalizacji w kilkunastu popularnych grach. Poza tym przyjrzeliśmy się dodatkom oferowanym w sterownikach.
- 1.Dodatkowe tryby wygładzania krawędzi
- 2.Zestaw testowy i opis testów
- 3.Assassin's Creed
- 4.Call of Duty: World at War
- 5.Call of Juarez DX9
- 6.Call of Juarez DX10
- 7.Crysis DX9
- 8.Crysis DX10
- 9.Crysis: Warhead DX9
- 10.Crysis: Warhead DX10
- 11.Enemy Territory: Quake Wars
- 12.Fallout 3
- 13.Far Cry 2 DX9
- 14.Far Cry 2 DX10
- 15.Grand Theft Auto 4
- 16.Mirror's Edge
- 17.Race Driver: GRID
- 18.S.T.A.L.K.E.R.: Clear Sky DX9
- 19.S.T.A.L.K.E.R.: Clear Sky DX10
- 20.Unreal Tournament 3
- 21.Ambient occlusion w sterownikach NVIDI-i
- 22.Podsumowanie
Wygładzanie krawędzi na dobre zagościło w grach i sercach graczy. Na początku było wiele obaw: czy karty podołają tak skomplikowanemu zadaniu? Teraz nikt się nad tym nie zastanawia i często ta opcja jest włączana „odruchowo”. Okazuje się jednak, że to wcale nie jest taka oczywistość. Producenci prześcigają się w udostępnianiu w sterownikach trybów wygładzania krawędzi. O ile kiedyś wybór był prosty: były dostępne dwie opcje, dwu- i czterokrotne wygładzanie, to teraz jest to wiele bardziej skomplikowane.
Zanim jednak omówimy wariacje na temat wygładzania krawędzi, powiemy krótko, co to jest aliasing i w jaki sposób na ogół się go zwalcza.
Obiekty w scenie 3D są zbudowane z połączonych ze sobą wielokątów (na ogół są to trójkąty). Wielokąty te są opisywane za pomocą współrzędnych ich wierzchołków, a wszystko, co znajduje się pomiędzy wierzchołkami, to czysta matematyka. Problem z tą matematyką polega na tym, że ekran monitora potrafi wyświetlić tylko określoną liczbę pikseli, czyli ma ograniczoną dokładność, a żeby wyświetlić krawędź jakiegokolwiek przedmiotu, potrzeba prawie że nieskończonej dokładności. Aby zrozumieć problem, wystarczy spojrzeć na poniższe rysunki.
Pierwsza ilustracja przedstawia krawędź trójkąta, którą trzeba zrzutować na konkretne piksele. Oczywiście nie jest możliwe, aby monitor wyświetlił połowę piksela na biało, a połowę na żółto. Gdy nie ma żadnych mechanizmów wygładzania krawędzi, za końcową wartość koloru piksela przyjmuje się to, co znajduje się w jego centrum (co oznaczyliśmy jako kropki w centrum kwadratów). Rezultat jest taki, że zamiast linii prostej na ekranie wyświetlają się schodki – zjawisko tak dobrze znane wszystkim, którzy kiedykolwiek grali w jakąkolwiek grę wideo.
Widzimy więc, że aliasing wynika z tego, iż monitor ma ograniczoną rozdzielczość, natomiast świat, który jest na nim wyświetlany, w pewnym sensie ma rozdzielczość... nieskończoną. Wystarczyłoby zwiększyć rozdzielczość monitorów milion razy, stworzyć odpowiednio mocne karty graficzne, zdolne obsłużyć tak wysokie rozdzielczości, i problem aliasingu zniknąłby bezpowrotnie. Prawda, że proste?
Zanim to nastąpi, minie jeszcze trochę czasu, dlatego producenci sprzętu zaczęli kombinować, jak rozwiązać ten problem w inny sposób. Okazuje się, że oko ludzkie jest bardzo łatwo oszukać, i zaczęto to wykorzystywać do tworzenia metod wygładzania krawędzi.
Najprostszą metodą jest supersampling. Idea jego działania jest prosta. Dla każdego piksela na ekranie wybieramy na przykład cztery subpiksele, przetwarzamy je na nowo i na koniec wyliczamy średnią wartość ich kolorów, która będzie wartością koloru piksela wyświetlanego na ekranie. W praktyce oznacza to tyle, że przy supersamplingu czterokrotnym (czyli gdy chcemy mieć cztery próbki na pojedynczy piksel) obraz jest renderowany, jakby miał cztery razy większą rozdzielczość (dwa razy wyższy i dwa razy szerszy obraz), a na końcu „ściskany” do rozmiarów docelowych. Czyli jeśli przy rozdzielczości 1280×800 włączy się supersampling czterokrotny, to karta graficzna renderuje obraz o rozdzielczości 2560×1600 i tuż przed wysłaniem do monitora zmniejsza go do 1280×800 przez policzenie średniej z kolorów czterech sąsiadujących ze sobą pikseli.
Cały proces przedstawia powyższa ilustracja. Proces ten można bardzo łatwo zasymulować. Wystarczy zrobić zrzut ekranu w grze w rozdzielczości na przykład 800×600, następnie powtórzyć to w rozdzielczości 1600×1200 i zmniejszyć obraz do rozdzielczości 800×600. Przeprowadziliśmy taki eksperyment w grze Prince of Persia. Jest to duże uogólnienie, ale w dużej mierze pokazuje, o co w tym wszystkim chodzi.
Widzimy, że krawędzie zostały wygładzone. Problemem jest jednak to, że cały proces jest bardzo „kosztowny” – karta wykonuje praktycznie cztery razy więcej pracy, bo każdy subpiksel jest traktowany jak oddzielny piksel, który przechodzi przez wszystkie etapy renderowania, dla każdego z subpikseli jest pobierana próbka tekstury, zostaje też użytych znacznie więcej zasobów, bo trzeba przechowywać cztery razy więcej pikseli.
Na szczęście jest możliwe osiągnięcie bardzo zbliżonego efektu znacznie niższym kosztem. Wystarczy użyć multisamplingu – podstawowej metody wygładzania krawędzi w dzisiejszych grach. Na pierwszy rzut oka ta metoda jest bardzo podobna do supersamplingu. Także tu są pobierane dodatkowe próbki wewnątrz piksela. Różnica polega jednak na tym, że wszystkie z analizowanych subpikseli mają ten sam kolor co centrum bazowego piksela. Po co więc są pobierane dodatkowe próbki, skoro wszystkie subpiksele mają ten sam kolor, i w jaki sposób jest podejmowana decyzja o ostatecznym kolorze danego piksela?
Z każdym pikselem oprócz informacji o jego kolorze są powiązane informacje o jego wartości Z. Wartość Z określa „głębokość” danego piksela na ekranie – czyli mówi, co jest przed, a co za (na przykład że piksel odpowiedzialny za kolor krzesła jest bliżej postaci niż piksele składające się na ścianę za tym krzesłem). Wybierane przy multisamplingu subpiksele mają swoją własną wartość Z liczoną oddzielnie dla każdej próbki – czyli wszystkie subpiksele mają ten sam kolor, ale inną wartość Z. Na podstawie wartości Z tych subpikseli jest sprawdzane, czy należą one do tego samego trójkąta, czy nie, i ile subpikseli znajduje się na krawędzi wielokąta.
Przypuśćmy, że są pobierane cztery próbki na piksel (włączamy w grze czterokrotne wygładzanie krawędzi). Gdy używamy multisamplingu, to wszystkie cztery subpiksele mają wartość koloru obliczoną dla środka piksela, ale liczy się dla nich wartości Z i okazuje się, że w naszym testowym pikselu trzy próbki znajdują się na krawędzi trójkąta, a jedna poza nią, co daje współczynnik 3:1. Jest to informacja, że kolor bazowy powinien otrzymać 75% swojej intensywności, i w ten sposób po odpowiednim mieszaniu kolorów osiągana jest ostateczna barwa piksela. Jest to duże uproszczenie, bo ten proces może być przeprowadzany na setki sposobów, różniących się efektywnością. W każdym razie zalety są spore. Co prawda nadal trzeba przechowywać cztery razy więcej informacji o pikselach i zwiększa się ilość przesyłanych danych, jednak zamiast liczyć za każdym razem obraz o cztery razy większej rozdzielczości i dla każdego subpiksela liczyć od początku wartość jego koloru, sprawdza się tylko wartość Z subpikseli, co da się zrobić bardzo szybko. Na dodatek, gdy wszystkie cztery subpiksele leżą w obrębie tego samego trójkąta, nie są wykonywane nadmiarowe obliczenia. W przypadku supersamplingu, nawet gdy subpiksele są tego samego koloru, za każdym razem ich kolor jest liczony na nowo. To spore marnotrawstwo mocy obliczeniowej, szczególnie gdy patrzymy się na ścianę, która przeważnie składa się z dwóch dużych trójkątów pokrytych tą samą teksturą. Jednak wadą multisamplingu jest to, że nie rozwiązuje on problemu aliasingu tekstur. W końcu nie tylko na granicach wielokątów występują krawędzie, które mogą ulec aliasingowi – bardzo często również tekstury mają krawędzie czy linie, które mogą zostać „poschodkowane”. Na szczęście różne metody filtrowania tekstur radzą sobie z tym znakomicie. Coraz bardziej zaawansowane sposoby wykonywania multisamplingu sprawiają, że jesteśmy coraz bliżej „darmowego” wygładzania krawędzi. Przy supersamplingu, który jest metodą czysto „siłową”, spadek wydajności jest stały, i do tego bardzo duży.
Tutaj pojawiają się różnice w sposobie uzyskiwania wygładzania krawędzi przez różnych producentów. Jedną z podstawowych jest miejsce, z którego są pobierane próbki – a ma to bardzo duży wpływ na skuteczność wygładzania krawędzi, co demonstrują poniższe obrazki.
Pierwsze dwie ilustracje pokazują, co się dzieje, gdy użyje się standardowej metody wyboru miejsc pobierania próbek, a dwie następne – jak można to łatwo rozwiązać. Przy użyciu standardowej metody dobierania próbek (OGAA – ang. Ordered Grid Anti-aliasing), w której próbki są umiejscawiane na siatce, często dochodzi do sytuacji, gdy ostateczny kolor piksela zostaje określony bardzo nieprecyzyjnie. Wystarczy jednak tę siatkę obrócić, aby poprawić skuteczność wygładzania krawędzi (RGAA – ang. Rotated Grid Anti-aliasing). Oczywiście nie zastąpi to zwiększenia liczby próbek i subpikseli, ale okazuje się, że w praktyce pozwala to znacznie poprawić jakość czterokrotnego wygładzania krawędzi. W wyższych trybach często stosuje się losowe punkty pobierania próbek. Różni producenci przyjmują trochę inne założenia przy wyborze miejsc pobierania próbek, co prezentują poniższe ilustracje, pochodzące z programu DX9FSAAViewer.
Poza tym AMD i NVIDIA starają się przekonać do siebie za pomocą różnych dodatkowych rodzajów wygładzania krawędzi. Na przykład obaj producenci oferują specjalny tryb poprawiający jakość wygładzania przy przezroczystych teksturach. AMD nazywa to Adaptive Anti-aliasing, a NVIDIA – Transparency Anti-aliasing. Problem z przezroczystymi teksturami i multisamplingiem wynika z tego, że przy multisamplingu pobierana jest w danym pikselu tylko jedna próbka tekstury dla danego wielokąta. Przeważnie jest to zaleta multisamplingu, jednak przy przezroczystych teksturach okazuje się to wadą, ponieważ subpiksele nie „wiedzą”, czy wskazują na przezroczystą część tekstury, czy nie. Jeśli w środku piksela akurat znajduje się nieprzezroczysta część tekstury, to wszystkie subpiksele będą miały wynikający z tego kolor, nawet jeśli cała reszta piksela jest przezroczysta. W skrajnym przypadku z kropki może się zrobić kwadrat. Obaj producenci stosują podobnie działające rozwiązanie: jeśli w danym pikselu mamy do czynienia z wielokątem pokrytym przezroczystą teksturą, to jest do niego stosowany supersampling. Dzięki temu każdy subpiksel ma właściwą wartość koloru i „wie”, czy znajduje się na przezroczystej czy nieprzezroczystej części tekstury, ale jak powiedzieliśmy, nie przychodzi to za darmo.
Do omówienia pozostały techniki CFAA (ang. Custom Filter Anti-aliasing) oraz CSAA (ang. Coverage Sample Anti-aliasing). Pierwsza jest tworem AMD, druga – NVIDI-i.
AMD wpadło wymyśliło CFAA przy projektowaniu Radeonów HD 2900 XT. Firma uznała wtedy, że wygładzanie krawędzi nie powinno być wykonywane przez wyspecjalizowane jednostki, a raczej przez jednostki cieniowania, dzięki czemu twórcy gier mogliby dostosować sposób wygładzania krawędzi do swoich potrzeb. Filtry miały posłużyć jako demonstracja słuszności takiego podejścia. Użytkownicy kart AMD mają teraz dostęp do dwóch podstawowych filtrów: Narrow Tent i Wide Tent. Główna różnica pomiędzy wygładzaniem z filtrami i bez nich polega na tym, że w przypadku zwykłego wygładzania subpiksele są wybierane jedynie wewnątrz pojedynczego piksela. Gdy w grę wchodzą filtry, to przy określaniu ostatecznej barwy piksela liczą się również subpiksele pochodzące z sąsiednich pikseli.
Poza tym możemy wybrać tryb Edge Detect. Polega on na tym, że specjalny algorytm wykrywa, czy w obrębie danego piksela znajduje się krawędź – jeśli tak, to pobierane są dodatkowe próbki, aby lepiej określić wyjściowy kolor piksela. Wpływ tych wszystkich dodatkowych funkcji omawiamy w dalszej części artykułu.
Trochę więcej uwagi należy poświęcić wynalazkowi NVIDI-i, ponieważ jest on wykorzystywany w sposób, który może niezorientowanych użytkowników wprowadzać w błąd. Najpierw powiemy krótko, czym jest Coverage Sample Anti-aliasing.
Na początek dwa fragmenty slajdów:
Jeśli uważnie śledziliście wcześniejsze wywody, to powinniście rozumieć, o co chodzi na tych slajdach. ;) Ale wyjaśnimy to. Multisampling umożliwił to, że dla pojedynczego piksela pobierana jest tylko jedna próbka tekstury i wynik obliczeń jednostki cieniowania, zamiast liczenia wszystkiego od nowa dla każdego subpiksela. Mimo to każdy subpiksel nadal ma własną wartość Z, własne informacje związane z buforem znaczeń (ang. stencil) i przechowuje informacje o kolorze. NVIDIA w CSAA poszła jeszcze dalej: stworzyła tryb wygładzania krawędzi, w którym tylko niektóre próbki zawierają informacje związane z buforami Z i znaczeń i mają kolor, a część próbek jest „oszukana”. „Oszukane” próbki mają za zadanie jedynie informować o tym, czy są przykryte fragmentem jakiegoś trójkąta, czy nie, i wskazywać na odpowiedni kolor „prawdziwego” subpiksela z listy. Te dodatkowe subpiksele pomagają w dokładniejszym określeniu, ile procent piksela jest pokryte przez fragment jednego trójkąta, a ile przez fragment drugiego. Dzięki temu jest możliwe osiągnięcie efektu 16-krotnego multisamplingu za pomocą czterech subpikseli zawierających informacje o kolorze i zawartości buforów Z i znaczeń oraz 12 próbek pokrycia (ang. coverage samples). Końcowa jakość obrazu różni się niewiele od tego, co zapewniłby typowy 16-krotny multisampling, natomiast jest zużywana zacznie mniejsza ilość pamięci i w związku z tym przesyłana jest znacznie mniejsza ilość danych.
A gdzie to całe zamieszanie i wprowadzanie w błąd?
A tutaj:
NVIDIA umożliwia w sterownikach włączenie trybów CSAA zaraz obok normalnych trybów MSAA. Pytanie: które z trybów widocznych na liście to tryby MSAA, a które to CSAA? Otóż tryby MSAA są oznaczone jako 2x, 4x i... 8xQ. Wszystkie inne pozycje to tryby CSAA. Tryb oznaczony jako 8x to tak naprawdę czterokrotny multisampling z dodatkowymi czterema próbkami pokrycia. Tryb 16x to czterokrotny multisampling z 12 próbkami pokrycia, a tryb 16xQ to ośmiokrotny multisampling z dodatkowymi ośmioma próbkami pokrycia. Ilu z Was myślało, że pozycja oznaczona jako 8x to multisampling taki sam jak tryb 8x wybierany w ustawieniach gier albo sterownikach AMD? Widać, że NVIDIA jest pewna swego i uważa, że jej własne tryby wygładzania krawędzi zapewniają na tyle wysoką jakość, że można je oznaczyć tak jak zwykłe tryby wykorzystujące multisampling. Czy słusznie, czy nie – o tym w dalszej części artykułu.
- 1.Dodatkowe tryby wygładzania krawędzi
- 2.Zestaw testowy i opis testów
- 3.Assassin's Creed
- 4.Call of Duty: World at War
- 5.Call of Juarez DX9
- 6.Call of Juarez DX10
- 7.Crysis DX9
- 8.Crysis DX10
- 9.Crysis: Warhead DX9
- 10.Crysis: Warhead DX10
- 11.Enemy Territory: Quake Wars
- 12.Fallout 3
- 13.Far Cry 2 DX9
- 14.Far Cry 2 DX10
- 15.Grand Theft Auto 4
- Test kart graficznych w Diablo III 102
- GeForce GTX 670 – mocarny karzełek oparty na Keplerze 198
- GeForce GTX 690- nieprzyzwoicie kosztowny, dwugłowy Kepler 227
- 16:10 kontra 16:9 – porównanie walorów użytkowych wyświetlaczy 125
- PowerVR SGX 9000 – Warlord niespodziewanie atakuje rynek kart graficznych dla desktopów (Prima Aprilis) 192
- GeForce GTX 680 – umarł król, niech żyje król! 441
- Radeon HD 7850 i HD 7870 – trzeci rzut w ofensywie Graphics Core Next 192
- Radeon HD 7770 i 7750 – Graphics Core Next w masowym segmencie rynku 171
- Pogłębiony test Radeona HD 7970 – multi-GPU, GPGPU, kodowanie wideo, karty różnych firm, podkręcanie ekstremalne 168
- Test 104 kart graficznych DirectX 11 170
- Radeon HD 7970 – „bombowe” wejście Graphics Core Next 303
- GeForce GTX 680 – umarł król, niech żyje król! 441
- 16:10 kontra 16:9 – porównanie walorów użytkowych wyświetlaczy 125
- Radeon HD 6770 i HD 6750 – AMD gra na bis 100
- Radeon HD 7850 i HD 7870 – trzeci rzut w ofensywie Graphics Core Next 192
- PowerVR SGX 9000 – Warlord niespodziewanie atakuje rynek kart graficznych dla desktopów (Prima Aprilis) 192
- Asus GTX580 DirectCU II i MSI N580GTX Lightning – pojedynek kart dla entuzjastów wydajności 108
- MSI R6970 Lightning kontra Asus Matrix GTX 580 – starcie kart graficznych dla entuzjastów 194
- Asus GTX580 DirectCU II i MSI N580GTX Lightning – pojedynek kart dla entuzjastów wydajności 108
- Pogłębiony test Radeona HD 7970 – multi-GPU, GPGPU, kodowanie wideo, karty różnych firm, podkręcanie ekstremalne 168
- Radeon HD 7970 – „bombowe” wejście Graphics Core Next 303
- MSI R6970 Lightning kontra Asus Matrix GTX 580 – starcie kart graficznych dla entuzjastów 194
- Test 104 kart graficznych DirectX 11 170
- OC School – podkręcanie kart graficznych, materiał wideo 47
- PowerVR SGX 9000 – Warlord niespodziewanie atakuje rynek kart graficznych dla desktopów (Prima Aprilis) 192
- 16:10 kontra 16:9 – porównanie walorów użytkowych wyświetlaczy 125
- Radeon HD 7850 i HD 7870 – trzeci rzut w ofensywie Graphics Core Next 192
- Sapphire i Radeon HD 7950 w wersji Flex 15
- Koniec z wydawaniem sterowników AMD Catalyst co miesiąc? 34
- Tańszy GTX 550 Ti w wydaniu MSI 14
- GeForce GTX 690 ustanawia nowy rekord w teście 3DMark 11 9
- Ponad 0,5 kW tylko dla karty graficznej! 35
- Nie tylko Radeon HD 7990. HD 7970 X2 też będzie 11
- GeForce GTX 680 w wersji UltraCharged 11
- Nvidia wydała sterowniki w wersji 301.42 WHQL 21
- V-Sync w Keplerze powoduje mikroprzycięcia. Poprawka w przyszłym miesiącu 43
- Nowy firmware do aparatu Fujifilm FinePix XP150
- Olympus VR-340 - aparat kompaktowy dla oszczędnych
- Sharp zaprezentował 13,5-calowy ekran QFHD
- Odtwarzacze Blu-ray BDP5500 i BDP7700 marki Philips
- Gorenje ma niższe przychody, ale wyższe zyski
- AData oferuje nowe karty pamięci SDHC, SDXC i microSDHC
- Sony pokazało pierwszy projektor kina domowego z 4K
- Hannspree wprowadza na polski rynek dwa nowe telewizory
- Odtwarzacz Blu-ray Samsung BD-E8300 z tunerem DVB-T
- Uchwyt samochodowy do iPada CarGo - rozrywkowe podróże 0
- Jonathan 'Fatal1ty' Wendel prezentuje płyty ASRock w Polsce 2
- Bez słuchawek trudno wyjść z domu 0
- Manta prezentuje odswieżony tablet PowerTab MID05S 0
- Akcesoria poszerzają możliwości fotografa 0
- LilyJade – nowy robak atakuje przez Facebooka 0
- Rok na jednym paluszku 0
- Philips PicoPix 2480, czyli przenośne kino w kieszeni 1
- Otwarta obudowa AeroCool Strike-X AIR 4
- Czy potrzebujemy nowej wersji Androida? 1
- Dobry uchwyt to podstawa 0
- Razer BlackShark Battlefield 3 - nadchodzi prawdziwie drapieżny zestaw słuchawkowy! 2
- Kolekcjonerskie słuchawki dla fanów Battlefield 3 - Razer BlackShark 1
- Firma Manta Multimedia została oficjalnym partnerem Reprezentacji Polski w Piłce Nożnej! 1
- Zasil swoją sieć z AirLive dzięki PoE-FSH8PW 0
- 7solidna buda z oknem na świat06:16 | darek.p
- 72Prekariat05:47 | Return of Gordon Lameman
- 17Uwaga Oszust Krętacz Zagato_V12 aka xDave705:36 | toomek77
- 115panie przodem05:36 | ŚLEDŹ
- 3nalepszy ale i nie za drogi xD papier do brother dcp-j12505:27 | grongor
- 7377World of Tanks04:52 | Master_Chief
- 4463NVIDIA GeForce 6xx - Oficjalny temat04:32 | eloszki
- 8Hard Reset benchmark04:11 | rolandwally83
- 19System nie uruchamia się po dodaniu ramu03:57 | dr Bliss
- 31161Battlefield 303:11 | Tonic
- 115panie przodem05:36 | ŚLEDŹ
- 7377World of Tanks04:52 | Master_Chief
- 4463NVIDIA GeForce 6xx - Oficjalny temat04:32 | eloszki
- 31161Battlefield 303:11 | Tonic
- 25614Anime - temat ogólny03:08 | misticzx
- 1323Max Payne 302:41 | Moonglow
- 6160League of Legends [LoL]02:39 | YasiuSpacerowicz
- 11590Diablo 3 - oficjalny temat01:25 | aY227
- 1319Lista polecanych kart dźwiękowych01:18 | Ven
- 28936Prezentujemy swoje maszynki.01:16 | MaxForces










0%
0%
0%
0%
ale wysyp artow ostatnio
0%
0%
0%
rodziny nie ucierpiały przy tym?
mam to samo, ale już się przyzwyczaiłem, mimo wszystko czekam na rozwiązanie tego problemu
0%
0%
Jak nie zawraca jak zawraca
0%
Czy ktoś może mi to wytłumaczyć, przecież było mówione że GTA IV nie ma jakiego kol wiek wygładzania krawędzi a tu jest do 16 ???