ForceWare: optimalizace pro Crysis za hranicí slušnosti?
Úvodem
Historie podvádění výrobců grafik, přesněji jejich softwarových divizí zodpovědných za vývoj ovladačů, sahá hluboko do minulosti. Podvádělo se a podvádí, ať již přímo či nepřímo, ve spoustě benchmarků (nejznámější je asi 3D Mark), podvádělo se v Quake 3, na němž se lámal chleba na přelomu tisíciletí (a přistižena byla tehdy právě kanadská ATI) a podvádět, řekněme to politicky korektně: „optimalizovat“ se bude i v Crysis. Tato hra totiž svou náročností na grafický výkon má velkou šanci ovlivnit nákupní preference zákazníků v poměrně slušné míře.
Aby nás někdo neměl potřebu v diskusi ihned označit za fanATIky, dovolte mi úvodem konstatovat následující:
Ano, dnes si popovídáme o zjištění, které v Crysis provedli kolegové z Elite Bastards v souvislosti s grafikami nVidia a ovladači Forceware. To neznamená, že tím automaticky tvrdíme, že ATI je svatá jako matka Tereza, znamená to jen a pouze informování vás, našich čtenářů, o aspektu, který nelze opomenout. Ostatně sami jsme provedli srovnávací studii kvality renderingu na generacích GeForce 7 a Radeon X1000, jejíž výsledky jsme vám představili ve speciálním článku. Tehdy jsme si na Half-Life 2 a 3D Marku ukázali okaté optimalizace kvality renderingu. Možná kdybychom se tehdy zaměřili i na skryté aspekty, byly by výsledky o to zajímavější, nicméně i takto byly více než slušně vypovídající. Dnes si tedy pohovoříme pouze o nVidii s dodatkem, že doufáme, že podobné analýze někdo v dohledné době podrobí i grafiky ATI, zejména Radeony HD 3800, které příští týden jdou do prodeje.
Analýza
Celé povídání se týká bety ovladačů ForceWare 169.04, které jsou u nVidie označeny jako doporučená verze pro testování Crysis SinglePlayer dema a hry TimeShift. Vykazují oproti dřívějším verzím výrazný nárůst výkonu, který se právě „elitním bastardům“ nepozdával. Testy probíhaly v rozlišení 1280×1024 se všemi nastaveními na „High Quality“ a s filtrací textur ve Forceware taktéž na „High Quality“. Grafickou kartou byla GeForce 8800 GTS 640MB.
Nejprve se redaktoři zaměřili na chyby renderingu v GPU benchmarku hry. Zaměřte se na odrazy hor na vodní hladině, které jsou poměrně protažené, deformované a vypadají vůbec nepřirozeně. Takhle na statickém obrázku se to těžko vysvětluje, to je ideální vidět v běhu, bohužel dle Elite Bastards se tento jev nevyskytuje ve chvíli, kdy zachytávají video ze hry pomocí Fraps.
Slovní vysvětlení říká, že Crytek v engine pro Crysis aktualizuje zobrazení odlesků na hladině každých několik snímků. Aktualizace se neprovádí při každém snímku prostě proto, že by konzumovalo příliš výkonu GPU, takže odrazy se aktualizují každé zhruba 3 snímky (tedy při ~30 fps 10× za vteřinu). Nicméně s Forceware 169.04 beta to vypadá spíše tak, že jsou odrazy aktualizovány pouze jednou za 10 snímků (tedy modelově 3× za vteřinu), což je prostě nedostatečné. Důsledkem je možnost pozorovat jev, kdy vy změníte svou polohu ve hře, zatímco odrazy zůstávají jistou dobu na původním místě (modelově místo 0,1 rovnou 0,33 sec), což kvůli změně pozice kamery (pohledu postavy ve hře) vede k onomu efektu deformace odrazů na hladině).
Toto by možná šlo označit za bug v beta verzi, ale již řadu let známe jednoduchou kontrolu, zdali tomu tak je. Přejmenujme spouštěcí soubor hry na například driverbug.exe. Touto metodou vyřadíme veškeré optimalizace v ovladačích pro danou hru, neboť ty prostě bez spuštění správného exe souboru nedetekují, jaké optimalizace zapnout.
A vida, najednou je po problému. Selský rozum tak konstatuje tento závěr: pokud jsme přejmenováním souborů a s tím souvisejícím vypnutím optimalizací v ovladačích docílili spravení chyb v renderingu, je zjevně „cosi v nepořádku“ s těmito optimalizacemi. A protože nVidia o této verzi hovoří jako o doporučené pro testování přesně tohoto Single Player dema Crysis, nelze než opět logicky vyvodit, že jsou si tohoto chování plně vědomi. Nicméně i tak se může jednat o nevědomou chybu, přeci jen jsme všichni jen lidé, ty z nVidie nevyjímaje. Ale pokud by tyt optimalizace měly pozitivní dopad na dosahovaný framerate…
Elitní bastardi tedy pro co největší objektivnost provedli výkonové testy s přejmenováním exe souboru jak na inkriminovaných ForceWare 169.04, tak na tehdy posledních WHQL 163.69.
Zatímco s verzí 163.69 nedochází po přejmenování exe souboru na jiný název k žádnému propadu výkonu…
…u 169.04 je tomu právě naopak. Nárůst výkonu při běžících optimalizacích deformujících odrazy na hladině vinou zjednodušení výpočtů stojí za zrychlením hry v průměru o ~7,5 % na GeForce 8800 GTS a na ostře sledované GeForce 8800 GT v rozlišení 1600×1200 se 4×AA dokonce o více než 50 %.
Závěr
Je tedy zjevné, že s výsledky na této verzi ovladačů bez přejmenování exe souboru lze udělat pouze jediné: zmuchlat a hodit do popelnice.
Optimalizace pro konkrétní herní tituly v ovladačích jsou principielně dobrá věc. Umožňují dosáhnout většího výkonu, ale zároveň nesmí mít, a znovu to zdůrazním, nesmí mít, žádný dopad na kvalitu renderované scény. Jakmile se toto stane, jedná se o neférovou praktiku vůči konkurenci (pokud tato nepoužívá stejnou techniku) a nepěkné chování vůči zákazníkovi.
Pokud se navrátím k našemu poslednímu přehledu testů GeForce 8800 GT po uvedení na trh, musím bohužel konstatovat, že prezentované výsledky pro Crysis tímto podle všeho můžeme prohlásit za zavrženíhodné, neboť kolegové z [H]ard|OCP testovali na ForceWare 169.01 beta, tedy stejné vývojové řadě, které se týká dnešní článek. Při pohledu na další výsledky se principielně totéž může týkat Far Cry, STALKER, x3, Call of Duty 4, Quake Wars, Tiger Woods 08, Company of Heroes, Half-Life 2: Episode 2, Unreal Tournament 3, Oblivion, Prey, Serious Sam 2, BattleField 2, PT Boat, Call of Juarez, Team Fortress 2, Lost Planet, tedy drtivé většiny testovaných her! Samozřejmě nelze bez důkazů říci, že u všech těchto her provádí ForceWare řady 169 nějaké rendering poškozující optimalizace, ale současně to nelze vyloučit. Minimálně u dalších ostře sledovaných DirectX 9/10 titulů (UT3, STALKER, Company of Heroes, Call of Juarez, Lost Planet), lze toto předpokládat. Článek kolegů z Elite Bastards totiž bezesporu opět otřásl s „presumpcí neviny“ kalifornské společnosti, ostatně Crysis je jednou z her, jejíž vývoj probíhal v rámci programu The Way It's Meant To Be Played společnosti nVidia.