Kvalita obrazu - nVIDIA GeForce FX 5950 (52.16) vs ATi Radeon 9800 (3.8) |
autor: Jahoda Miroslav , publikováno 10.11.2003 |
Upozornění: Pokud si chcete otvírat a porovnávat zde použité screenshoty, u kterých jsem se musel vyhnout ztrátové kompresi JPEG, musíte mít slušně rychlé připojení, každý soubor PNG v rozlišení 1024x768 má přes 1MB.
Optimalizace versus cheatování
To jsou v poslední době, v souvislosti s kvalitou obrazu, dost často skloňovaná slova a také bohužel dost často i zaměňovaná slova. Optimalizace by měla zrychlit aplikaci bez ztráty kvality obrazu (oproti referenční rasterizaci), měla by se týkát celé aplikace, nejen případného benchmarku a hlavně by neměla stavět na předpočítaných hodnotách. Naopak cheatovaní znamená urychlení na úkor kvality obrazu, existuje tzv. cheatování ze znalosti aplikace, které se týká především benchmarků a vývojáři ovladačů v něm zneužívají například znalosti o tom, že v benchmarku či testovacím demu nemusí kalkulovat s celou krajinou a jednoduše kus odříznou rovinou, což lze odhalit až při jiném nastavení kamery.
3DMark 2003
nVIDIA byla dost nešťastná ze slabších výsledků v populárním 3DMarku 2003, hlavně v testu Mother Nature, způsobených hodně tím, že se jedná o DirectX 9 benchmark kde je použita barevná přesnost 24 bit float (tedy přesně taková jakou používají Radeony R300 a výše od ATi a jaká byla jako minimální Microsoftem doporučena v DirectX 9) - GeForce FX totiž umí přesnosti 12 bit integer, 16 bit float (což je příliš nízká přesnost) a 32 bit float, kde se musí počítat s osmi bity "navíc".
S vydáním ovladačů 43.51 prudce stouply výsledky v Mother Nature (3DMark2003 patch 320) a přitom vše vypadalo na zachování kvality obrazu. Jenže existuje i tzv. BETA program 3DMarku, ve kterém společnost Futuremark posílá společnostem vývojářskou verzi svého benchmarku a která obsahuje i možnost volného pohybu kamery po scéně. A v něm najednou bylo vidět úplně chybně renderované části, které byly zakryty ořezávací rovinou, čehož si všimli nejdříve na beyond3d.com a extremetech.com. Poté Futuremark nechal udělat audit 3DMarku 2003 a přišel na to, že ovladače detekují jednotlivé testy a provádějí ještě různé další cheaty, které znamenaly třeba sotva znatelně nižší kvality pixel shaderové vody apod. Po zabránění těmto cheatům (zamezilo se detekování běžícího benchmarku) se zjistilo, že výkon klesl v dotčených testech asi o čtvrtinu. V tomto "prádle" si přišla samozřejmě na své i firma ATI, cheatů však v tomto případě bylo méně - asi 2%. Část řešil patch 330, část cheatů - určitě na nátlak společnosti - firmy odstranily, nepředpokládám však, že by nějaké nezbyly. Byl to ale snad ilustrující příklad toho, co může znamenat cheatování. Pořídíl jsem screenshoty s posledními verzemi ovladačů a rozdíly jsou opravdu minimální, kvalita je srovnatelná (klikněte pro zvětšení, PNG v rozlišení 1024x768 má však okolo 1MB):
3DMark 2003 - Mother Nature, noFSAA, trilinear | |
GeForce FX 5950 Ultra, FW 52.16![]() |
Radeon 9800 Pro, Cat 3.8![]() |
John Carmack
Jistě každý z vás zná geniálního programátora firmy ID software, spolutvůrce Wolfensteina, DooMa, majitele několika patentů v oblasti 3D algoritmů a nyní hlavního vývojáře DooMa III. Ten se po excesu s cheaty 3DMarku k otázce optimalizací a cheatovaní vyjádřil na serveru slashdot.org také (volně a zkráceně přeloženo):
Přepisování shaderů za zády aplikace, které by měnilo jejich výstup bez přesně definovaných podmínek kdy tak bude činit je absolutně špatné a nezdůvodnitelné. "Přepsání shaderu tak, že dělá přesně tu samou věc, ale efektivněji, je obecně akceptovatelná optimalizace v překladači, ale musí se jednat o zcela elementární plánování instrukcí, které pomůže téměř všude a nejen v jedné specifické aplikaci. Významným problémem, který překáží v současnosti v porovnávání ATI a nVIDIE je přesnost shaderu. nVIDIA umí pracovat s 12 bit integer (celočíselně), 16 bit float a 32 bit float (plovoucí desetinné čárce). ATi pracuje pouze s 24 bity float. Neexistuje momentálně režim, ve kterém by mohly být přesně porovnány. Pro určitou danou množinu operací, karty nVIDIA pracující s 16 bit float budou rychlejší než ATi, zatímco karty nVIDIA pracující s 32 bit float budou pomalejší. Když DOOM použije shader specifický pro NV30, je pak rychlejší než na ATi, zatímco když u obou použijeme shader z ARB2, je rychlejší ATi. Když jde výstup do normálního 32 bitového framebufferu, tak jak to dělají všechny současné testy, je pro nVIDII možné analyzovat proud dat a rozlišit textury, konstanty a atributy, a změnit mnoho 32 bit operací na 16 nebo někdy 12 bitové operace bez absolutně jakékoliv ztráty kvality nebo funkcionality. To je zcela akceptovatelné, a profitují z toho všechny aplikace, ale bude to skoro určitě působit potíže při hledání chyb v překladači shader kódu. Můžete na to skutečně doplatit - jestliže chcete ušetřit přesnost, kde to jen jde, budete muset určit velikost textur a rozměry dat vertex bufferu pro každou sekvenci shader kódu. To se může stát skutečně mizerným rozhodnutím v době návrhu, ale tlak benchmarků na výrobce vynucuje takové postupy, jestliže se mají vyhnout cheatování. Jestliže budou implementovány opravdu agresivní optimalizace v překladači, doufám, že v něm bude zahrnut také ladící režim, v němž bude možné vypnout všechny optimaliace."
Originál:
"Rewriting shaders behind an application´s back in a way that changes the output under non-controlled circumstances is absolutely, positively wrong and indefensible.
Rewriting a shader so that it does exactly the same thing, but in a more efficient way, is generally acceptable compiler optimization, but there is a range of defensibility from completely generic instruction scheduling that helps almost everyone, to exact shader comparisons that only help one specific application. Full shader comparisons are morally grungy, but not deeply evil.
The significant issue that clouds current ATI / Nvidia comparisons is fragment shader precision. Nvidia can work at 12 bit integer, 16 bit float, and 32 bit float. ATI works only at 24 bit float. There isn´t actually a mode where they can be exactly compared. DX9 and ARB_fragment_program assume 32 bit float operation, and ATI just converts everything to 24 bit. For just about any given set of operations, the Nvidia card operating at 16 bit float will be faster than the ATI, while the Nvidia operating at 32 bit float will be slower. When DOOM runs the NV30 specific fragment shader, it is faster than the ATI, while if they both run the ARB2 shader, the ATI is faster.
When the output goes to a normal 32 bit framebuffer, as all current tests do, it is possible for Nvidia to analyze data flow from textures, constants, and attributes, and change many 32 bit operations to 16 or even 12 bit operations with absolutely no loss of quality or functionality. This is completely acceptable, and will benefit all applications, but will almost certainly induce hard to find bugs in the shader compiler. You can really go overboard with this -- if you wanted every last possible precision savings, you would need to examine texture dimensions and track vertex buffer data ranges for each shader binding. That would be a really poor architectural decision, but benchmark pressure pushes vendors to such lengths if they avoid outright cheating. If really aggressive compiler optimizations are implemented, I hope they include a hint or pragma for "debug mode" that skips all the optimizations."
Pokud vás zajímá další interview s Johnem Carmackem o NV30 a R300 v DooM III, tak ho najdete v originále na beyond3d.com.
Aquamark 3
Nedávno na serveru elitebastards.com zjistili výrazné rozdíly mezi mezi renderingem Radeonu 9800 a GeForce FX 5900. S jistotou byli schopni konstatovat, že ATi si zjednodušuje práci v renderování okolo framu 5100 (Massive Overdraw), kde dochází k výbuchu a fade-out efektu. Efekt je velice náročný na propustnost paměti, a tak došlo například k odřezání zpracování některých textur a dalším úpravám.
Unreal Tournament 2003
Zde především v nejčastěji používaném způsobu cheatují asi obě firmy. Některé servery se snaží situaci předejít používání vlastních testovacích dem. Každopádně Marc Rein z Epicu zjistil, že ovladač ATi samovolně místy používá textury s nižším rozlišením. Ze strany nVIDIE alespoň v ovladačích 5x.xx před 52.16 docházelo k cheatům filtrování textur.
Anti-Detect
Tedy pokud chcete, aby ovladač vaší grafické karty nedokázal detekovat aplikaci a použít nějaké cheatování, musíte ji spustit s RivaTuner Anti-Detect skriptem. Ten zamění části kódu tak, aby ovladač již nedokázal danou aplikaci pro niž má cheat rozeznat. Stejná možnost je i v novám 3D Analyze 2.26, jehož česká verze by se měla objevit v těchto dnech.
{mospagebreak title=Trilineární a brilineární filtrování}Co je to trilineární filtrování?
První a nejjednodušší metodou nanesení textury (barevné informace) na objekt byla metoda point sampling. Jistě si vzpomenete na starší hry, kde jakmile jste se příbližili třeba ke stěně viděli jste veliké jednobarevné bloky. Později přišlo bilineární filtrování, které pro každý pixel bralo v úvahu hodnoty sousedních čtyř texelů a výslednou barvou pixelu se stal vážený průměr barev těchto čtyř. Trilineární filtrování pak počítá se dvěma bilineárně zpracovanými texely, které interpoluje, tedy celkem s osmi texely.
nVIDIA Force Ware 5x.xx - "brilineární filtrování"
S novými ovladači nVIDIA se objevil hybrid mezi bilineárním a trilineárním filtrováním, který je k dispozici zatím jen v Direct3D a jen u GeForce FX a nahrazuje dosavadní trilineární filtrování. V OpenGL trilineární filtrování zůstává. K ilustraci toho, co je brilineární filtrovní použiji příklady z 3dcenter.de:
Bilineární filtrování vykresluje ostré hranice.
Trilineární filtrování vykreslí postupné přechody mezi různě barvami.
U "brilineárního filtrování" jsou přechody kratší, šírší části jsou filtrovány bilineárně.
Na 3dcenter věnovali brilineárnímu filtru a jeho budoucnosti celý článek. V současnosti je typické texturovací jednotka grafického akcelerátoru zpracovat jednen bilineární vzorek v jednom taktu. Pro trilineárně zpracovaný potřebujeme takty dva nebo dvě TMU (text. jednotky). Teoreticky je tak trilineární filtr. dvakrát náročnější. Brilinérní filtr. by mělo velké plochy zpracovat pouze bilineárně a ušetřit tak hodně výpočetního výkonu. nVIDIA počítá s tím, že při zapnutí anisotropního filtrování nebude kvalitativní ztráta příliš velká, ale jde tak trochu proti svému heslu "Cinematic Computing".
Podívejme se na porovnání kvality trilineárního filtrování programy D3D AF-Tester a pro OpenGL pak Texture Filter TestApp:
Joro: obrazec vychází z renderingu hypotetického tunelu, kdy aplikace je přepnutá do takového režimu, aby detekovala jednotlivé oblasti filtrování. Každá barva (červená, zelená, modrá...) naznačuje stupeň (stage) filtrování textury, čím vyšší, tím je na textuře detailů méně. Mezi stupni musí být plynulé přechody - pokud není, uvidíte na texturách výraznější hranu mezi ostrými a rozmazanými detaily (hodně to bylo vidět na dlažbě v 3DMarku 2000). Obecně lze říci, že barevný terčík má být co nejmenší a přechody mezi barvami mají být plynulé a rovnoměrné. Červený okraj první "stage" by měl být poloprůhledný.
Poté, co podobné screenshoty jako já pořídily před časem na beyond3d.com v recenzi FX 5700 Ultra, tak se jim ozvala nVIDIA, že se jedná o bug v ovladačích 52.16, že ve hrách ty přechody nejsou tak ostré, ať se přesvedčí. Sami se tedy přesvědčili, opravdu ve hrách jako UT2003 nebyla kvalita až tak malá jako v D3D AF-Tester, ale stále horší než s klasickým trilineárním filtrováním.
Sám jsem porovnával kvalitu v D3D hrách Max Payne, Morrowind a Unreal 2 a musím říct, že rozdíly byly opravdu minimální, prakticky neznatelně ostřejší přechody jsem našel na stěně zadního domečku v Morrowindu, ve vzdálenější části dlažby v Max Payne:
V předchozím popsané bilineární i trilineární filtrování bylo tzv. isotropní, tzn. nepočítá se ze změnou X a Y rozměrů vzhledem ke vzdálenosti. Textury v dálce jsou tedy rozmazané. Pro větší preciznost obrazu je nutno použít anisotropní filtrování (mnozí majitelé výkonných grafických karet dosud anizotropního filtrování nevyužívají a připravují se o detaily na vzdálenějších objektech).
Anisotropní bilineární filtrování (příklad ATi Radeon 7000-9200) dává lepší výsledky než trilineární filtrování. Nejlepších výsledků dosáhneme kombinací trilineárního a anisotropního filtru (řada GeForce, Radeon 9500 a výše).
Opět jsme nejprve porovnávali programy D3D AF-Tester a Texture Filter TestApp:
Joro: Neděste se tvaru testovacího terčíku - rozdílné tvary generují různé algoritmy filtrování, které renderují textury různě v závislosti na jejich sklonu. Známá "hvězdička" Detonatoru ATI ukazuje že textury skloněné vůči základně v určitých (méně používaných) úhlech jsou filtrovány více, než ostatní. Nejdůježitějšími úhly jsou násobky pravého úhlu (obvykle textury podlahy, stropu a stěn).
Závěry:
- módy 2:1 jsou porovnatelné, poprvé je vidět, že ATi má slabiny v násobcích úhlu 22.5 stupně
- od módu 4:1 dělá ATi více filtrování (viz poloměr), hluchá místa však zůstávají, anisotropní filtrování nVIDIE je zde kvalitnější
- anisotropní filtrování nVIDIE v OpenGL je lepší než v Direct3D (kombinace trilineární+anisotropní oproti brilineární+anisotropní v Direct3D)
The Elder Scrolls: Morrowind
The Elder Scrolls: Morrowind, noFSAA, Anisotropní filtrování 8:1 | |
GeForce FX 5950 Ultra, FW 52.16![]() |
Radeon 9800 Pro, Cat 3.8![]() |
Žádné výraznější rozdíly. Ještě jsem zkusil porovnat podobně Gun Metal, Max Payne a Unreal 2 a ve všech případech byly rozdíly absolutně minimální, jen v malých místečkách si člověk mohl všimnout drobných chybiček způsobených hluchými úhly u filtrování ATi.
Serious Sam: The Second Encounter
Screenshoty jsem pořizoval za pomocí následujících příkazů v konzoli:
Závěry:
- Velké rozdíly v bilineárním filtrování
- Mírně lepší trilineární filtrování nVIDIE
- Chyby horizontálních ploch v horní části obrazovky u anisotrp. filtr. nVIDIE
- Velké chyby anisotropního filtrování na podlaze u ATi, když se anisotropní filtr zapíná aplikací (část nezpracovaná, podobně slabá kvalita jako u R200) - všimněte si, že výsledek je horší než s Performance módem anis. filtru
- Vše vyřeší až vynucení anisotropního filtrování v ovladačích, pak je kvalita 8:1 obou rivalů srovnatelná, blíže u kamery lepší u nVIDIE, dále od kamery pak u ATi
Vyhlazování hran (FSAA) se stalo rychlostně dostupným pro většinu i nových her až s Radeonem 9700 Pro a později u nVIDIE s FX 5800 Ultra. Dnes již všechny na karty od Radeonu 9500 počínaje u ATi a FX5200 Ultra u nVIDIE zvládají anti-aliasing poměrně rychle. Obě firmy však používají mírně jiné algoritmy.
Zatímco nVIDIA používala od dob GeForce 256 Multi-Sampling a teprve u posledních GeForce FX se pro Direct3D objevil navíc Super-Sampling, tak ATi až do Radeonu 9200 včetně používala Super-Sampling a od Radeonu 9500 výše pak pouze Multi-Sampling. Přesněji řečeno Rotated ordered grid Multi-Sampling (Multi-Sampling s otáčením uspořádané mřížky). K dispozici jsou režimy 2x, 4x a 6x FSAA. nVIDIA u svých karet založených na GeForce FX používá Ordered grid Multi-Sampling. GeForce FX 5700 - 5950 je schopna módů s maximálním počtem až osmi vzorků: 2x, 2xQ (dříve Quincunx - hybrid mezi 2x a 4x, rychlý téměř jako 2x FSAA), 4x, 4xS, 6xS (tyto dva pouze v Direct3D) a 8x. Teorie anti-aliasingu a pojmy jako Super-Sampling nebo Ordered grid jsou dobře vysvětleny v tomto článku.
K prvnímu porovnání kvality FSAA jsem použil program FSAA Tester 2.3 ze stránek www.tommti-systems.com:
Je dobře vidět, že díky metodě Rotated ordered grid MSAA má ATi Radeon vyhlazování hran lepší a to především v rovinách blízkým vertikální či horizontální přímce. Prostě okolo 90 stupňů. V ostatních úhlech je situace celkem vyrovnaná, bez větších rozídlů.
The Elder Scrolls: Morrowind
Hned na první (vertikální) stěně domku vpravo je jasně vidět, že FSAA Radeonu je v úhlu tak blízkém 90 jasně lepší.
The Elder Scrolls: Morrowind - FSAA 4x | |
GeForce FX 5950 Ultra, FW 52.16![]() |
Radeon 9800 Pro, Cat 3.8![]() |
Max Payne
Především porovnejte rozdíly ve vyhlazení hran lavičky a také sloupu. V obou případech byl lepší Radeon.
Max Payne - FSAA 4x | |
GeForce FX 5950 Ultra, FW 52.16![]() |
Radeon 9800 Pro, Cat 3.8![]() |
Return to Castle Wolfenstein
Zde si všimněte rozdílů v anti-aliasingu plůtku kolem stromu. Opět jemnější hrany nabídne Radeon.
Return to Castle Wolfenstein - FSAA 4x | |
GeForce FX 5950 Ultra, FW 52.16![]() |
Radeon 9800 Pro, Cat 3.8![]() |
Serious Sam: Second Encounter
Na následujících screenshotech je vidět, že se hodí spíše na porovnávání kvality filtrování textur. Rozdíly mezi kartami můžete najít na hlavě sochy jaguára, Radeon tam opět potvrzuje mírně kvalitnější FSAA.
![]() serioussamse_fsaa4x_3.8_r9800pro.png 1.45 MB |
![]() serioussamse_fsaa4x_52.16_fx5950ultra.png 1.44 MB |
- Dalo by se říct, že teď díky bilineárnímu filtrování u GeForce FX má v Direct3D kvalitativně navrch Radeon R3x0
- V OpenGL je pak pro změnu mírně lepší GeForce FX především díky lepšímu anisotropnímu filtrování
- Full-Scene Anti-Aliasing je u ATi Radeonu R3x0 lepší než u nVIDIA NV3x
- Anisotropní filtrování je mírně kvalitnější u nVIDIA (v D3D se rozdíly díky brilineárnímu filtru mažou)
- Trilineární filtrování má v Direct3D jasně lepší ATi, protože nVIDIA už vlastně má jen hybrid bilineárního a trilineárního filtrování (brilineární)
- V OpenGL má trilineární filtrování mírně lepší nVIDIA
- Cheatují obě firmy, těžko posoudit, kdo více, DirectX 9 se svou minimální přesností shaderu 24 bit float zahnal nVIDII trošku do kouta.
- Kvalita 3D zobrazení ATi Radeonu R3x0 a nVIDIA GeForce FX je zhruba na stejné úrovni. Obě architektury mají své silné i slabší stránky.
Stažení uložených pozic pro vaše porovnání
Abyste si sami mohli porovnat kvalitu obrazu vaší karty s vašimi ovladači, dávám k dispozici ještě uložené pozice z her, ze kterých jsem típal obrázky. Stačí načíst staženou pozici a třeba pomocí FRAPS (www.fraps.com) típnout obrázek a porovnat s tím naším:
Redakce si vyhrazuje právo odstranit neslušné a nevhodné příspěvky. Případné vyhrady na diskuze(zavináč)pctuning.cz
Zatim to nechavam jen jako screenshoty, abych nemohl byt narcen, ze ukazuje jen to a to a fandim tak jedne strane.
"..porovnat kvalitu obrazu vaší karty s vašimi ovladačy,.."
Jediné co sem opravdu nepatří je tvoje ventylování osobníko života. To kam chodíš se svojí holkou tady fakt vůbec nikoho nezajímá ani ta tvoje realita (asi moc koukaš na matrix a nebo seš nějaký přírodní aktivista ???)
Výkonostně je ATi na špičce, kvalita obrazu se zase zlepší a nVidia skončí na 2. místě z obou hledisek. (Pokud je tu někdo, kdo stále nevěří, že 9800XT je nejrychlejší, tak je tu třeba ještě simFUSION 6000. Sice ji Evans & Sutherland běžně nedodávají, ale objednat se dá a je kompatibilní s běžnými počítači.)
Jinak pro no-Xe: Clovece, prave 52.16 maji nizsi kvalitu nez 45.23 (brilinearni filtrovani), tak tu prosim nepis nesmysly. 45.23 byly kvalitativne (filtrovani textur) zatim best. Kde beres informace o nepovedenosti Catalyst 3.8? Ja mam screenshoty i z predchozich a muzu porovnavat, zda se mi to jako nesmysl, dokonce u vetsiny ja kvalita stejna na Radeonu 9500 s Cat 2.3.
Tak bych prosil o konkretni kvalitni nastaveni pro dana rozliseni napr. 1024x768 FSAA4x Anis4x Trilinear
1600x1200 FSAA0x Anis4x Trilinear
Asi takhle nejak...
Při srovnánání kvality obrazu detonátorů (forceware) jsem měl na mysli 51.xx a podle mě maj 52.16 kvalitu obrazu vyšší (je to subjektivní názor, ale netvrdím to sám)
Catalyst 3.8: kvalita filtrací např. v UT2003 je horší, než s předchozími Catalysty (<3.7). Sám ses o tom zmínil ve článku o 9800XT, ale nazýval si to optimalizace. Máš pravdu, že 3.9 opravují jen chyby, ale pokud seznam projdeš podrobně, tak zjistíš, že i chyby v zobrazení (a zdaleka ne všechny jsou v seznamu uvedeny, jako např. i chybějící textury ve fůře her s DX8.1 komp. Radeonama - ale to už sem asi nepatří, jde tu o 9800).
Rozhodně to ale s 3.9 znova netestuj. Článek je moc pěknej. To co jsem napsal jsou moje názory, ne kritika článku. Nesmíš si podobnejma "názorama" nechat zkazit náladu. Přeju hodně dalších skvělých článků!!! :-)
http://www.3dcenter.de/artikel/2003/09-15_a.php
Pocti si a mej se hezky.
Za nejkvalitnější považuju 44.03, (1. odstavec).
51.xx maj samozřejmě obraz hnusnej, o tom není pochyb.
čus Pepus