Radeon HD 2900XT - DirectX 10 v podání AMD / ATi
autor: Petr Štefek a Jiří Souček , publikováno 18.5.2007
Radeon HD 2900XT - DirectX 10 v podání AMD / ATi

Po letech a s několikaměsíčním zpožděním firma ATi (pardon, vlastně AMD) konečně vydává dlouho očekávaný čip R600 v podobě grafické karty Radeon HD 2900 XT. Pokud váš zajímá historický vývoj, architektura čipu, technologické novinky, souvislost se zmíněným projektem R400 a také samozřejmě testy výkonu, stačí pokračovat ve čtení dnešního článku...


FSAA se s vydáním nVidia G80 dočkalo po letech konečně pořádné změny a tím myslím podporu pro plnohodnotný multi-sampling 8x. Stejně jako G80, tak i R600 nabízí stejnou úroveň FSAA (mluvíme-li stále o klasickém multi-samplingu). Jeden rozdíl tu ale je. Ačkoli vše původně ukazovalo na fakt, že nVidia s G80 přinesla možnost programovatelných AA vzorků, ukázalo se nakonec, že tomu tak není. Podle oficiálního vyjádření nVidie je rozložení vzorků fixní. Ne tak pro R600 - ta (podobně jako R300 a novější) nabízí programovatelné rozložení.

Další rozdíly už jsou ale výraznější. Pro dosažení vyšších režimů než 8x používá nVidia metodu nazvanou CSAA (coverage-sampling). Krom plnohodnotných MSAA vzorků (které mají přiřazenou Z-hodnotu a barvu) jsou použity ještě coverage vzorky, které mají přiřazenou pouze hodnotu Z. Nepřináší tak vyšší barevnou přesnost, ale přesnější detekci hrany. Tento systém je poměrně důmyslný, ale není příliš kompatibilní -v závislosti na 3D enginu a použitých efektech nemusí fungovat plnohodnotně a výsledná kvalita může odpovídat úrovni FSAA bez použití coverage vzorků.

Radeon HD 2900XT - DirectX 10 v podání AMD / ATi

R600 jde trochu jinou cestou. Také vychází z maxima 8 MSAA vzorků, ale může navíc používat i vzorky z okolních pixelů. Čím je ale větší vzdálenost mezi použitým vzorkem a centrem pixelu, pro který bude použit, tím větší je riziko možné barevné chyby (která se může projevovat jako rozostření). Tento nedostatek byl kompenzován použitím tzv. tent-filtru, tedy tak, že vzorkům, které jsou centru pixelu blíž, je přiřazena větší "váha", než těm, které jsou dál.

Radeon HD 2900XT - DirectX 10 v podání AMD / ATi

Tent-filtr zatím nebyl v konzumní 3D grafice používán - je hardwarově náročnější, než tradiční box filtr (tedy situace, kdy vycházíme pouze ze vzorků, které plošně spadají na pomyslnou čtvercovou plochu pixelu, přičemž jejich barevné hodnoty jsou započteny stejnou vahou).

Radeon HD 2900XT - DirectX 10 v podání AMD / ATi

Výhoda tradičního box filtru spočívá ve snadné hardwarové implementaci a jistotě, že si nevneseme do pixelu barevnou chybu, která by mohla způsobit rozostření. Ale jsou tu i nevýhody - pixel není čtvereček, ale bod a ani plocha zobrazovacího zařízení, které je barva pixelu přiřazena, nebývá čtvercová. Z těchto a několika dalších faktů vyplývá další nedostatek - pokud budeme zvyšovat počet AA vzorků na pixel, tak s box filtrem brzy narazíme - nárůst kvality nebude odpovídat nárůstu počtu vzorků. A přestože sice poklesne zubatost hran, stále se budeme potýkat s vysokofrekvenčním šumem, moire a dalšími projevy aliasu, na které hrubá síla v podobě navyšování kvantity vzorků příliš nezabírá.

Jedním z možných způsobů řešení je tent-filtr. Podobně jako terč vymezuje vzdálenost od středu a namísto čtverce jsou používány vzorky takto vymezeným kruhem (jak jsem již zmínil, čím vzdálenější vzorek, tím menší váha v průměru). Tent-filtr není nic nového. Zmiňován je již ve studii o anti-aliasingu společnosti Hewlett-Packard Laboratories z roku 2000, kde vychází jako filtr s nejlepším poměrem kvalita ku implementovatelnosti. V této studii bylo použito až 256 vzorků na pixel s efektivním rozložením jittered grid (tuto efektivní formu rozložení vzorků používá v současné době ATi i nVidia) a i přes takto gigantické množství vzorků a jejich kvalitní rozložení se ve výsledném obraze stále objevoval moire. Na vině byl právě tradiční box-filtr. Doslova je uvedeno: "The differences between the Tent Filter and The Gaussian 1/2 filter are nearly imperceptible. However, the Box Filter image still shows some noticeable increase  in moire patterns int the middle distance in spite of the high sampling rate"

Radeon HD 2900XT - DirectX 10 v podání AMD / ATi

FSAA s 256 vzorky + box filtr
(HP laboratories)

Ačkoli tedy tent-filter nemusí být teoreticky tak přesný jako box filter (může vnést určitou barevnou chybu), jeví se lidskému oku jako účinnější, protože dokáže odstranit i nepříjemné vysokofrekvenční artefakty, se kterými si box neporadí.

ATi na R600 umožňuje použít jak klasický box-filter (2, 4 či 8 vzorků), tak tent-filter (až 16 vzorků). Každý si tedy může vybrat, který režim je jeho oku příjemnější.

Radeon HD 2900XT - DirectX 10 v podání AMD / ATi

FSAA s 256 vzorky + tent filter
(HP laboratories)

Společnost nVidia se ještě před vydáním R600 vrhla na ATi s ostrou kritikou tent-filtru a připomněla vlastní režim FSAA zvaný quincunx, který prvně implementovala na GeForce 3. Quincunx taktéž používal vzorky z okolních pixelů a jeho problémem bylo výrazné rozostření obrazu, díky kterému Quincunx nesklidil valný úspěch.

Na tuto situaci se můžeme podívat detailněji:

Radeon HD 2900XT - DirectX 10 v podání AMD / ATi

Na schématu je znázorněno rozložení vzorků režimu Quincunx: Dva vzorky na pixel, RG, ale posunuté tak, že vždy jeden vzorek spadá zhruba do centra pixelu a druhý na rozhraní 4 sousedních pixelů. Barva výsledného pixelu je pak dána průměrem barev pro vyznačenou pětici vzorků. Tzn. primární vzorek (z centra pixelu) má stejnou barvu, jakou by měl pixel bez FSAA a zbylé čtyři vzorky pocházejí každý z rozhraní dalších 4 pixelů, což znamená, že se do centrálního pixelu dostane z 80% barva z až osmi okolních pixelů a jen 20% barevné hodnoty může pocházet z původního pixelu.

Kdežto při CFAA 16x pochází ze samotného pixelu 8 vzorků a ze sousedících pixelů (ale s tím rozdílem, že jsou vybrány v kruhu, ne čtvercem, takže příliš vzdálené vzorky, které by způsobovaly příliš vysokou barevnou chybu = blur, jsou eliminovány), konkrétně 4 nejbližších (tedy nikoli osmi jako u quincux) je vybráno 8 dalších vzorků, jejichž barva se na barvě výsledného pixelu podílí.

  • quincunx na GF3 používal 1 vzorek z pixelu a 4 vzorky "zvenku", naproti tomu CFAA 16x používá 8 vzorků z pixelu a 8 vzorků "zvenku". To znamená, že pravděpodobnost barevné chyby je v případě quincunxu až 80%, v případě CFAA maximálně 50%
  • quincunx používal barvu až z 8 okolních pixelů, kdežto CFAA 16x jen ze 4 nejbližších, tzn. že množství barevných chyb je o polovinu nižší
  • quincux používal box filter (čtverec), kdežto CFAA používá tent filter (kruh), tzn. že do výsledku jsou započteny jen barvy nejbližších vzorků, takže výše barevné chyby je oproti quincunxu ještě zredukována
  • vzdáleným vzorkům přičítá tent-filtr nižší váhu, čímž je opět výše barevné chyby redukována

Pro uživatele, kteří chtějí vyšší FSAA než 8x a zmíněný tent-filtr jim nepřipadá dostatečně přesný, přináší ATi ještě tzv. režimy edge-detect (12x a 24x), které na základě určité obrazové analýzy pro jednotlivé pixely používá různé typy filtrace a odlišné rozložení vzorků, takže maximalizuje kvalitu vyhlazení s minimalizací možného rozostření obrazu.

Radeon HD 2900XT - DirectX 10 v podání AMD / ATi

Je tu ale jedna nepříjemnost, kterou tent-filtr v současných hrách přináší a to je rozostření textu atp. Hrany 3D objektů (polygony) je možné zpracovávat na úrovni sub-pixelů, ale text je do obrazu dodán již "hotový", takže s ním je možné pracovat jen jako s jednotlivými (celými) pixely. To vede k tomu, že místo průměrování barevných hodnot subpixelů dochází k průměrování barevných hodnot celých pixelů a výsledkem je toto rozostření textu. Je sice možné, že v konkrétních hrách by tento problém mohl být vyřešen ovladači nebo patchem na hru, ale celistvého řešení se nedočkám dříve, než s příchodem DX10.1, který by měl umožnit vývojářům hry lépe ovládat FSAA, takže by nemusel být problém onen text vykreslit dodatečně až po provedení FSAA.

Bohužel pro marketingové oddělení ATi je největším přínosem tent-filtru redukce vysokofrekvenčního šumu - tedy projevu aliasingu v pohybu. To bohužel není možné, stejně např., jako shimmering, zachytit na screenshotu, protože jde o artefakty, které vznikají kvůli příliš velkým  rozdílům v navzorkování mezi jednotlivými obrazovými snímky. Pokud byste tedy o novém Radeonu uvažovali, doporučuji navštívit kamaráda*, který ho již má a zkusit si tent-filtr a box filtr porovnat v pohybu. Pokles vysokofrekvenčního šumu (neklid na hranách objektů v pohybu) myslím zaregistrujete ihned - především uživatelům silně kontrastních LCD panelů přinese ten-filtr "klidnější" obraz.

* Nemáte-li kamaráda, máte smůlu

 



 
Komentáře naleznete na konci poslední kapitoly.
588 čtenářů navrhlo autorovi prémii: 278.8Kč Prémie tohoto článku jsou již uzavřené, děkujeme za váš zájem.
Tento web používá k poskytování služeb soubory cookie.