Crysis 2 v novém kabátě: co přináší podpora DirectX 11

1. 7. 2011

Sdílet

 Autor: Redakce

Crysis 2: konečně je tu podpora DirectX 11

Se stoupajícími nároky na připravované herní tituly a větší popularitou konzolí už se pomalu přestáváme divit, když vývojáři vypustí do prodeje verzi pro PC, která není dotažená, a ladí ji až za pochodu.

Při uvedení Crysis 2 se ale vášně vířily více než obvykle a ze strany příznivců hraní na PC létalo na konto konzolí i samotného tvůrce hry – Cryteku – hodně ne zrovna přívětivých komentářů. Crytek se totiž tři roky po prvním dílu, který uměl i DirectX 10, vytasil s Crysis 2, který kvůli primárnímu zaměření na konzole podporoval jen DirectX 9. V očích některých hráčů kvůli tomu pokračovatel jednoho z etalonů herní grafiky – prvního Crysis – klesl až na úplné dno. Početná obec pak dokonce Crysis 2 označila za vizuálně horší, než byl první díl (už ve verzi pro DX9 dost nesmyslně, jak jsme si ostatně ukázali v provokativně nazvaném článku Crysis 2 a CryEngine 3: nový etalon herní grafiky).

Asi by nebylo tak zlé, kdyby všichni automaticky nepočítali s podporou DX11, ke které se Crytek při vývoji nového CryEngine 3 hlásil. Už s uvedením hry se ale debatovalo o tom, že se vylepšená verze pro PC s podporou DX11 objeví později ve formě updatu. Jak dlouho to bude trvat, si ale nikdo netroufal říct.

Crytek se v doprovodném dokumentu přiznává, že Crysis 2 je prvním multiplatformním titulem, takže se při vývoji před uvedením soustředil především na to, aby zajistil hladký průběh uvedení na všech platformách. Bohužel to prý vývojářům znemožnilo dokončit přídavek pro PC v podobě podpory DX11 včas (vyznavači konspiračních teorií v tom měli jasno – podle nich mohla za všechno Nvidia, která nestihla optimalizace pro GeForce).

Velký přídavek zdarma, aneb co se už dnes jen tak nevidí

Podpory DX11 jsme se dočkali až teď a s křížkem po funuse, ale zase se vší parádou. Nový, zdarma dostupný balíček, kterým se Crytek pokouší napravit to, co se při uvedení Crysis nepovedlo, se skládá ze tří souborů.

Crysis DX11 patch 1.9-0022

Největším z nich je bezmála dvougigabajtový balík textur ve vysokém rozlišení, který napravuje jeden z největších a právem kritizovaných hříchů dvojky – poloviční rozlišení textur (viz příspěvek na VGHQ, kde autor narouboval soubory se „shodnými“ texturami z prvního dílu na druhý).

Další 370MB balíček dostal název Crysis 2 DX11 Pack a přidává podporu funkcí pro DirectX 11.

A konečně třetí samostatně vydanou položkou je patch na verzi 1.9. Ten můžete, ale nemusíte stahovat sami, launcher Crysis 2 jej umí stáhnout a nainstalovat i automaticky.

Crysis 2 a novinky, které se s balíčkem pro DX11 objevily, jsou pro příznivce počítačové grafiky opravdu hutný „materiál“. Proto musím chtě nechtě pokračování ságy Crysis 2 opět rozdělit na více částí. Dnes se podíváme na to, co je nového a v pokračování se podíváme, jaký vliv to má na vzezření hry i výkon a jak se s tím poperou jednotlivé karty.

Nové efekty jsou pěkně v pohybu vidět na doprovodném videu, které tvůrci s vypuštěním upgradu uvolnili. Dále se podíváme na to, co se za anglickými nadávkami ve videu ve skutečnosti ukrývá.

Teselace, lepší měkké stíny a propracovanější voda

S podporou DX11 se objevilo mnoho nových efektů a funkcí. A nový balíček napravuje i po texturách další velký hřích vývojářů – opět se objevila podpora parallax occlusion mapping, pokročilejší technologie simulace nerovností povrchu, která v jedničce nechyběla, ale do prvních verzí dvojky se z nějakého důvodu nedostala.

Vývojáři se konečně trochu více rozhovořili i o nových technikách, které se v Crysis 2 využívají. A já toho s radostí využiju, protože Crytek je jedním z mála studií, které programují vlastní herní engine, využívají při tom nejnovější techniky z oblasti 3D grafiky (s řadou z nich přicházejí jako první nebo jako jedni z prvních), pravidelně na konferencích grafiků referuje o nových a připravovaných technikách, výrazně posouvá kvalitu herní grafiky kupředu a ovlivňuje i další herní vývojáře, kteří nové techniky do svých titulů následně nasazují také.

Pokusím se vám převyprávět a okomentovat dokument, který při této příležitosti Crytek vypustil. Spolu s ním vydal i řadu vybraných snímků, na kterých je daná technika jasně předvedená a dobře viditelná.

Vzdělanějším v tomto oboru se musím předem omluvit za nepřesnosti a zjednodušení, která vznikají především kvůli tomu, že každá z používaných technik by většinou samotná vydala na několikahodinovou přednášku a elaborát o desítkách stran plný nákresů a pro většinu běžných smrtelníků (včetně mě) nestravitelných vzorců a také kvůli tomu, že je vše podáno lidovější formou. Nejsem od fochu, takže pokud něčemu rozumíte líp, nebo vidíte, že je něco špatně, klidně doplňte informace v diskuzi.

O něco komplikovanější je to i s překladem termínů do češtiny – profesionálové z oboru z pochopitelných důvodů používají i v češtině raději původní anglické termíny, ze kterých je na rozdíl od překladů do češtiny hned zřejmé, o čem je řeč, a tak česká terminologie v tomto oboru téměř neexistuje.

Obrázky

Rozdíly jsou nejlépe vidět, pokud se rychle přepínáte mezi obrázky. Obrázky jsou proto udělané tak, že se klepnutím na náhledy otevře obrázek v původním rozlišení. Pokud na něj klepnete (ve většině prohlížečů) kolečkem myši, otevře se na pozadí v nové záložce. Pak už stačí přepínat se mezi nimi klávesovými zkratkami ctrl+tab, resp. ctrl+shift+tab.

Pokud si je chcete proběhnout všechny najednou, nabízím vám i zobrazení ve formě klasické galerie.

Teselace a Displacement mapping

Přidanou podporu teselace považují vývojáři za jednu z nejdůležitějších novinek, které balík přináší. A věnovali jí většinu času vyhrazeného pro vývoj balíčku, protože jen málo současných her tuto novinku z DX11 smysluplně využívá a když už tomu tak je, jde pouze o jednodušší objekty. CryENGINE 3 podporuje teselaci u všech modelů.

Teselace je použitá hlavně tam, kde s jednoduššími technikami na obrysech dochází k nepěkným a nelogickým „artefaktům“ – typicky je to právě u parallax occlusion, kdy je zdánlivě členitý povrch na obrysu modelu rovně uťatý, protože kopíruje jinak tvarovanou polygonovou síť. Znát je to třeba na cihlových zdech, kde by třeba v místě spár měly být ve skutečnosti prohlubně a silueta hrany cihlové zdi by tomu měla odpovídat.

Crysis DX11 patch 1.9-0003

Crysis DX11 patch 1.9-0004

V Crysis má řada modelů malý počet polygonů. Ukázalo se, že to pro teselaci nemusí být vždy ideální, protože čím jsou výchozí modely jednodušší, tím náročnější je samotná teselace a o to horší je potom výkon. A ten byl podle všeho limitující – současný hardware neumožnil použít teselaci u celého prostředí a u jemných detailů se vývojáři raději vypomohli klasickým displacement mappingem.

Crysis DX11 patch 1.9-0001
Crysis DX11 patch 1.9-0002 Crysis DX11 patch 1.9-0005
Crysis DX11 patch 1.9-0006

Parallax Occlusion Mapping

U objektů se opět používá i simulace nerovností pomocí Parallax occlusion mappingu (POM) – důvodem je znovu výkon současných karet, který nedovolí pro větší a členité povrchy dopočítat jemnou polygonovou síť. Znovu připomenu, že původní Crysis tuto techniku zvládal, zatímco Crysis 2 bez Ultra upgradu ji neumí.

Crysis DX11 patch 1.9-0007

Crysis DX11 patch 1.9-0008

Realistické měkké stíny s proměnlivou intenzitou rozostření

Dalším vylepšením jsou měkké stíny (stíny s neostrým okrajem) s proměnlivou velikostí polostínu. Oproti klasickým měkkým stínům, u kterých je rozostření stínu po celém jeho okraji stejné, se v případě této techniky mění intenzita rozmazání v závislosti na tom, jak daleko je vržený stín od objektu a zdroje světla.

Nejblíž u objektu je tedy stín nejostřejší a s rostoucí vzdáleností se stále víc rozostřuje. Nejvíc je to znát, když je zdroj světla nízko nad horizontem, jako na následujících snímcích. Všimněte si rozdílu mezi stínem nosítek a vzálenými stromy.

Crysis DX11 patch 1.9-0010

Crysis DX11 patch 1.9-0009

 

Voda a oceán

Podpora teselace přibyla i u vodních „těles“ a oceánu. Složitost polygonové sítě se mění v závislosti na vzdálenosti od pozorovatele. Díky tomu může být voda poblíž pozorovatele detailnější, aniž by výrazně rostla složitost celého objektu. Při výpočtech animací oceánu se využívá Rychlých Fourierových Transformací. Na hřebenech převalujících se vln se nově tvoří pěna.

Crysis DX11 patch 1.9-0012

Crysis DX11 patch 1.9-0011

A zlepšila se i interakce s vodou, ale to je nejlépe vidět na úvodním videu.

Crysis DX11 patch 1.9-0013

Realističtější osvětlení a stíny, Depth of field s bokehem a kvalitní motion blur

HDR motion blur (pohybová neostrost) v plném rozlišení

S novou úrovní detailů se objevila i pokročilejší technologie pro simulaci pohybové neostrosti (rozostření rychle se pohybujících objektů). Oproti jednodušší variantě používané u DirectX 9 jsou rozmazané objekty ostřejší. Díky lepšímu maskování objektů, které rozostřené být nemají (např. zbraň, která se oproti kameře nepohybuje), nejsou tolik vidět nežádoucí artefakty – v případě prvního snímku je to třeba nesmyslný stín okolo zbraně.

Crysis DX11 patch 1.9-0015

Crysis DX11 patch 1.9-0014

 

Depth of field (hloubka neostrosti) s bokehem založená na spritech

V režimu DirectX 11 byla vylepšená i simulace efektu Depth of field simulujícím i bokeh. Namísto simulace tohoto efektu pomocí post-processingu se pro každý pixel počítá sprite (v tomto případě snad můžeme říci 2D ploška), která se pak zvětšuje nebo zmenšuje v závislosti na tom, jak moc má být daný pixel rozostřený. Výhodou je, že lze tímto způsobem dosáhnout i velkého rozostření, aniž by docházelo k velké degradaci obrazu a rozostřených objektů.

Na každý sprite je možné aplikovat masku (např. kruh nebo pětiúhelník), díky čemuž se lze více přiblížit efektu známému z fotoaparátů nebo kamer, který způsobuje clona a intenzita zaclonění – na třetím snímku je to třeba dobře vidět na dvou malých bílých pětiúhelnících v místě dvou světel přibližně uprostřed snímku.

Crysis DX11 patch 1.9-0021

Crysis DX11 patch 1.9-0019

Crysis DX11 patch 1.9-0020

Kvůli nedostatečnému výkonu hardwaru je efekt počítaný s polovičním rozlišením a zahrnuje i další optimalizace pro vyšší výkon.

Contact Shadows (SSDO)

Crysis 2 je první vydaný titul, který využívá pokročilejší techniky simulace globálního osvětlení nazývané Contact Shadows nebo jinak Screen Space Directional Occlusion (SSDO). Z fyzikálního hlediska se má chovat přesněji než starší SSAO (Screen Space Ambient Occlusion) zejména u scén využívajících deferred lightning (deferred shading), což je technika nasvícení scény s velkým počtem světel, u které se pro výpočet osvětlení scény využívá akumulační buffer (podrobněji je tato technika vysvětlená v článku HK2207 Mecha Rampage: Nejhorší techdemo od AMD?). Se SSDO lze také do výpočtu přidat zabarvení objektů způsobené odrážením světla od barevných ploch.

Se SSDO lze dosáhnout mnohem lepších výsledků zejména v rozsáhlejších interiérech s umělým osvětlením, ve kterých se používá právě deferred lightning. A tady už se dostáváme ke zmíněným „kontaktním“ stínům, tedy rozptýleným stínům, které vrhají objekty nasvícené z mnoha zdrojů na své nejbližší okolí.

Můžete si všimnout, že v případě využití SSAO je sice znát mnohem větší plastičnost scény, ale v některých místech vypadá obraz dost nepřirozeně (například pod rozbitými dlaždicemi v levé části obrazovky), kde pod dlažbou dost nelogicky prosvítá světlejší podklad.

Crysis DX11 patch 1.9-0016

Crysis DX11 patch 1.9-0017

Crysis DX11 patch 1.9-0018

Odlesky objektů v reálném čase, lepší částice a textury s vysokým rozlišením

Lokální odrazy počítané v reálném čase (RLR – Realtime Local Reflection)

Odrazy okolí u lesklých objektů jsou ve hrách už od nepaměti pro vývojáře velkou výzvou. Při technikách využívajících Raytracingu vznikají odrazy přirozenou cestou (což je jedna z jeho největších výhod). Zato v případě jednodušších metod výpočtů scény, které se v současnosti ve hrách používají, odrazy schází, pokud nevyužijete technik, které tento jev simulují.

Není si moc z čeho vybírat, pro simulaci a výpočty se většinou používají buď planární odrazy (je-li to možné, například u velkých vodních ploch, kde se nedá objekt obcházet), nebo cube mapy (mapa okolí objektu promítnutá na stěny krychle a následně promítnutá na objekt). Tyto mapy jsou ale statické a v případě, že je zapotřebí obnovovat je, aby odpovídaly scéně a změnám v reálném čase (tedy ideálně s každým snímkem), znamená to výrazný nárůst náročnosti výpočtu odrazů (zejména u krychlové mapy, kde se odraz na stěny musí počítat několikrát).

Technika RLR tedy vznikla kvůli efektivnějšímu výpočtu odrazů okolí v reálném čase zejména u scén využívajících deferred lightning. Výsledkem této techniky je simulovaný odraz blízkých objektů podobný raytracingu s vysokým dynamickým rozsahem (HDR) v reálném čase.

Výsledek není vždy dokonalý, ale je použitelný pro jakoukoliv zakřivenou plochu a na rozdíl od technik využívajících předpočítané mapy se na odrazu může objevit i samotný objekt, na který se pak odraz aplikuje.

Crysis DX11 patch 1.9-0023

Crysis DX11 patch 1.9-0024

Na snímcích jsou odrazy vidět především u objektů ležících či stojících na podlaze.

Crysis DX11 patch 1.9-0025

Crysis DX11 patch 1.9-0026

Částice: pohybová neostrost a stíny

Pod pojmem částice se v počítačové grafice rozumí techniky, které se využívají pro simulaci efektů, které by byly konvenčními metodami jen obtížně realizovatelné. Řadu jevů, se kterými se běžně setkáváme, je se stávajícími prostředky prakticky nemožné vymodelovat.

Typicky jsou to jevy, které vznikají pohybem miniaturních částeček, např. kouř, mlha, prach, mraky, oheň a jiskry, déšť či sníh, tekoucí voda (např. vodopády), výbuchy, vlasy či kožich, a nebo stopy pohybujících se světel. Pro ně se využívá systém částic, který tento jev zjednodušuje a simuluje pomocí větších jednodušších objektů.

V Crysis přibyla u částic podpora pohybové neostrosti a stínů. Co znamená podpora pohybové neostrosti, asi nebude těžké uhodnout – rychle se pohybující částice se rozmáznou ve směru pohybu.

Jaké stíny v souvislosti s částicemi mají vývojáři na mysli, je zřejmé z následujícího snímku. Na něm se zaměřte na bílý kouř zhruba uprostřed. Pak si všimnete, že i na něj se promítá stín, který vrhá strom nad ním.

Crysis DX11 patch 1.9-0027

 

Pokročilé mapování tónů (Advanced Tone Mapping)

V jednoduchosti se dá říct, že jde o úpravu barev, světel a stínů u vypočítané scény tak, aby byl výsledek podobnější filmu či přirozenému vnímání. Vypočítaná scéna je upravená S-křivkou, která zvětšuje dynamický rozsah scény a umožňuje lepší kontrolu výsledné expozice (zřejmě jde o tutéž křivku, kterou uživatelé grafických editorů jako je Photoshop, využívají pro zlepšení kontrastu scény, viz toto video).

Crysis DX11 patch 1.9-0028

Crysis DX11 patch 1.9-0029

Textury s vysokým rozlišením

Bylo to nakousnuto již v úvodu a snad není zapotřebí to nějak více vysvětlovat – vyšší rozlišení textur znamená (vedle větších nároků na paměť) i výrazně ostřejší textury namapované na objektech a méně zřetelné nežádoucí artefakty, jako jsou zubaté hrany.

Crysis DX11 patch 1.9-0030

Crysis DX11 patch 1.9-0031

Namísto závěru

V pokračování se podíváme na výkon samotných karet i na to, která nastavení mají největší vliv na výkon. Rovnou vám prozradím, že „v plné palbě" je Crysis 2 pro DX11 i přes veškeré optimalizace náročnou hrou a i GTX 580 s ní má co dělat. Ale jak už i z předchozích článků víme, s trochou sebezapření vypadá skvěle i při nižších detailech.

ICTS24

Crysis DX11 patch 1.9-0032

Zdroj: Crytek