kvalita-obrazu-nvidia-geforce-fx-5950-52-16-vs-ati-radeon-9800-3-8
Hardware Článek Kvalita obrazu - nVIDIA GeForce FX 5950 (52.16) vs ATi Radeon 9800 (3.8)

Kvalita obrazu - nVIDIA GeForce FX 5950 (52.16) vs ATi Radeon 9800 (3.8)

Jahoda Miroslav

Jahoda Miroslav

10. 11. 2003 00:00 42

Seznam kapitol

1. Optimalizace versus cheatování 2. Trilineární a brilineární filtrování 3. Anisotropní filtrování 4. Anisotropní filtrování ve hrách 5. Full Scene Anti-Aliasing 6. Závěr

Ovladače firmy nVIDIA měly udělat veliký skok ve výkonu, ale také v použití různých optimalizací, které se viditelně projevily především ve snížené kvalitě u řady beta 51.75. Teprve verze 52.16 dostala certitifikaci WHQL a tak můžeme začít směle porovnávat kvalitu obrazu nejsilnější řady firem ATi i nVIDIA (série Radeon 9800 a GeForce FX 59x0). Podíváme se, co je pravdy na jednotlivých narčením o horší kvalitě a větším "cheatovaní" ať už u ATi nebo nVIDIE.

Reklama

 

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
Kvalita obrazu - nVIDIA GeForce FX 5950 (52.16) vs ATi Radeon 9800 (3.8)
i Zdroj: PCTuning.cz
Radeon 9800 Pro, Cat 3.8
Kvalita obrazu - nVIDIA GeForce FX 5950 (52.16) vs ATi Radeon 9800 (3.8)
i Zdroj: PCTuning.cz

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.

Předchozí
Další
Reklama
Reklama

Komentáře naleznete na konci poslední kapitoly.

Reklama
Reklama