19. 10. 2009

Parný stroj vs preplňovaný osemválec

Fascinuje ma ten vylízaný idiot, čo vedie ten billov PR blog na eurolamer.net pod názvom Digital Foundry. S nemým úžasom som sledoval, ako sa snažil dokázať na dvoch stranách, že vďaka pidi malej eDram pobeží FF13ka na xcrape o toľko lepšie a kvalitnejšie, že to ani jeho snímacia technológia nedokáže zachytiť. Blbeček niekde vyčítal, že vďaka nej má každá xcrap hra antialiasing zadarmo a exceluje pri alfa kompozitných operáciach /hlavne výbuchy, všetko transparentné, alebo listy stromov, tráva atď./ Prasa stupídne bolo úplne vykoľajené, keď nameralo pri GeoW 2 alebo HALO3 ODST pády aj hlboko pod 20 fps, práve vtedy keď na scéne niečo .. buchlo, a bez stopy po 4xMSAA vyhladzovaní hrán. Na príklade pripravovanej hry Split/Second plnej skôr tých modernejších postupov si ukážeme, kde je problém zakopaný.



Spit/Second je arcade racing v štýle starých Rollcage. Ako každá dnešná hra, ktorá nechce vyzerať ako tie sterilné zastaralé Unreal sračky sa spolieha na deferred renderer. Oddeľuje teda nasvietenia od geometrie a zadržiava ho až do fázy postefektov. Pri klasickom postupe /HALO3/, pri zmene počtu svetiel na scéne, alebo ich pohybe musíte znovu a znovu celú geometriu opäť a opakovane prehnať skrze render pipeline. Pri deferred to môžte urobiť jedným vrzom až "na konci". Veľmi zjednodušene povedané. Výhodou deferred modelu je teda možnosť pracovať s obrovským počtom svetiel, rádovo stovky svetelných zdrojov /tisíce pri iných variantách/, aj pri veľmi komplexnej scéne vo veľmi slušnej rýchlosti /Killzone2, Resist2, Ratchet/. Aby tie svetlá vedali, kde sa majú vo finále prilepiť používajú informáciu uložený v G-bufferi /geometric buffer/.

Problém. Xcrap nemá, kde tento značne veľký buffer /24-36 mega/ uložiť bez toho, aby ho nemusel deliť-tilling z dôvodu malej eDram. Žiaden problém pre PS3, a jeho GDR3. Plus pri použití viacerých "tiles" je tu penalizácii pri spracovaní geometrie pri istých limitných, ale bohužiaľ častých situáciach. A nielen to. Hárdverová akcelerácia AA je vyradená z činnosti, G-buffer sa príliš nekamaratí s MSAA rendertargetmi a interpoláciou. Musíte to teda urobiť "sofvérovo-ručne". Opäť problém, ktorý je pri KZ2-Resistance2-Ratchet dávno vyriešený a už sa len piluje /napríklad SPE sampling/.

Shadow mapy. Dobré známy problém s GTA4 a hnusnými tieňami v xcrap verzii. Radi by chlapci použili aspoň štandardné PCF /percentage closer filtering/ vyhladzovanie zubatých tieňov, ale iba RSX má jeho HW podporu. A xcrap to neutiahne v celom viditeľnom rozsahu, takže je treba generovaním pomocnej tieňovej masky určiť, kde je PCF skutočne nutná a potom to tam v značne degradovanej forme /1:16 skutočného pixel-texel ratio/ hodíme. Cca 250% urýchlenie oproti referenčnej a kvalitnejšej verzii.

Globálna iluminácia. Prostredie sa bude dynamicky meniť, kopa objektov v pohybe. Musí sa teda najsť riešenie, ktoré to zvládne. Preskočim teraz všetku tu hatmatilku o SH /Spherical Harmonics/ via forward renderer - eDRAM a IEM /Irradiance environment maps/. Sú to bežné postupy ako aproximovať indirektné nasvietenie a sekundárne odrazy. Xcrap GPU však opäť kľaklo na kolená, nedostatočná priepustnosť, framerate padá opäť na polovicu. Takže ďalšia "optimalizácia". Realisticky a dynamicky sa bude osvetlovať iba nabližšie relevantné okolie, vzdialenú budúcnosť, cestu a objekty chčije pes. Plus sa znovu použije degradované rozlíšenie na 1/4 veľkosti referenčného buffera.



referenčný 1/1 buffer a 25% muž - zväčšiť, porovnať

Vizuálna kvalita zaplače, ale snáď si to v tej rýchlosti nevšimnete. Eurolamer opäť napíše, že to vyzerá a hýbe sa o TOĽKO lepšie na xcrape, neb kód bol tak skvelé optimalizovaný. Medzi tým Uncharted 2 priam bľuje efekty nadpozemsky nekompromisnej kvality /hodnotené oproti xcrapu/, či už ide o motion blur /objektový, screen space/, DOF, SSAO, GI, trasparentné efekty /aj s interakciou so svetlom, teda na dym môže padnúť tieň .. polopate pre blbcov/ vďaka zastarelej RSX a SPE koprocesorom o výkone 486 s nepotrebným hardiskom a s BD, kde sa celá kapacita zapĺňa fake súbormi a "nulami", aby potom SONY mohlo povedať, že DVD nestačí. Xcrap je prašivé, zastaralé, smradľavé lajno.