Aktuality  |  Články  |  Recenze
Doporučení  |  Diskuze
Grafické karty a hry  |  Procesory
Storage a RAM
Monitory  |  Ostatní
Akumulátory, EV
Robotika, AI
Průzkum vesmíru
Digimanie  |  TV Freak  |  Svět mobilně

Moderní grafické technologie: Unreal Engine 3

18.5.2004, Zdeněk Kabát, článek
Moderní grafické technologie: Unreal Engine 3
Abychom se také trochu odtrhli od běžných témat, která Svět Hardware nabízí, přinášíme i popis něčeho jiného – moderních grafických technologií v praxi. Jedním z hlavních živitelů grafických novinek bude Unreal Engine 3, který nabízí plné využití nové generace GPU. A je opravdu o co stát!
V minulých pěti týdnech spatřily světlo světa oba GPU (nebo chcete-li VPU) nové generace od ATi a nVidie – Radeon X800 a GeForce 6800. Zatímco Radeon je spíše evolučním skokem, GeForce přichází s kompletně přeorganizovanou pipeline a novými technologiemi, které zahrnují i Shader Model 3.0. Ovšem mnoho lidí se ptá, zda lze tyto technologie reálně využít. Odpověď nám může dát následujících pár odstavců popisujících moderní herní „motor“ – Unreal Engine 3.

Společnost Epic Games, která za celým projektem Unreal stojí, zveřejnila nedávno na těchto stránkách kompletní popis Unreal Enginu 3, který navazuje na předchozí verze licencované mnoha vývojáři. Unreal Engine 2 využívaly např. hry Splinter Cell, Rainbow Six 3, Deux Ex: Invisible War, XIII a další. Proto je nový engine velmi očekáván.

Nejdříve se podívejme na několik efektů, které Unreal Engine 3 přinese:
  • Podpora 64-bit HDR (High Dynamic Range) s pokročilými světelnými efekty. HDR je obecné označení pro zpracování dat s vysokou přesností umožňující libovolné manipulace s barvami bez ztráty dat. V Unreal Enginu bude použit 64-bitový HDR, tedy 16 bitů pro každou barevnou složku, což stačí pro zachování většiny informací o jasu a barvě.


Obr. 1 – Příklad efektu zvaného Light bloom s použitím 64-bit HDR
Klikněte pro zvětšení
  • Podpora moderních technik pro renderování a per-pixel osvětlení. Tato část enginu zahrnuje např. normálové mapy (popisované níže), parametrické osvětlení Phong či virtuální displacement mapping. Displacement mapping je označení pro pokročilou funkci vertex shaderu, kdy je povrch upraven podle zvláštní černobílé textury, která určuje jakési vrstevnice. Podle nich je pak povrch přepočítán a upraven, takže na rozdíl od bump-mappingu se mění i silueta, vrhané stíny apod. Dále jsou podporovány techniky pro útlum barev, self-shadowing apod.


Obr. 2, 3 – Příklad použití různých efektů s per-pixel osvětlením, stínováním, normálovými mapami apod.
Klikněte pro zvětšení
  • Pokročilé dynamické stíny. Podle dokumentace podporuje Unreal Engine 3 tři techniky stínů, které mohou být libovolně kombinovány. Navíc je možné je spojit s útlumem barev (snížení sytosti a jasu barev) a různým typem osvětlení. Zde jsou příklady:
      o Dynamické stencil stíny s podporou dynamických světelných zdrojů. Jinými slovy, renderování stínů při pohybujícím se světle v reálném čase.
      o Dynamické postavy vrhající měkké a rozptýlené stíny. To znamená, že kromě klasických tvrdých stínů jsou podporovány i nové typy, které více odpovídají realitě, nehomogennímu osvětlení apod.


Obr. 4, 5 – Rozptýlené a měkké dynamické stíny od pohyblivých zdrojů světla
Klikněte pro zvětšení
  • Vysoká podpora shaderů a materiálů. Unreal Engine 3 nabízí široké možnosti práce s materiály, je možné libovolně za běhu vytvářet shadery a kontrolovat je v grafickém rozhraní o rychlosti renderovacích programů jako 3DStudio MAX či Maya. Je také možné nejen přidávat shadery, ale i jejich komponenty, vše on-the-fly, tedy za běhu kompilátoru.
  • Modelování terénu s podporou moderních technologií. Možnost dynamického modelování s použitím displacement mappingu, normálových map, libovolných materiálů, dynamického LOD mozaikování apod. Engine také pomáhá programátorům s vytvářením krajiny, po vyhodnocení profilu terénu může přidat trávu a různé rostliny (rovina), skály (vysoké svahy) či sníh (vrcholky). Podporovány jsou také různé typy mlhy (u velkých vzdáleností či výšek).




Obr. 6, 7 – Aplikace různých typů stínů a mlhových efektů (mlha ve velkých vzdáleností, přízemní mlha)
Klikněte pro zvětšení

Normálové mapování

Způsob normálového mapování jsem již podrobněji popisoval v preview na Radeon X800, ale neuškodí si jeho princip zopakovat. Při vytváření modelů jednotlivých postav, nestvůr, scén apod. programátor vytvoří dva modely – jeden jednoduchý, který bude použit přímo ve hře a jeden vysoko-polygonový, skládající se až z několika milionů trojúhelníků. Následně jsou tyto dva modely porovnány a z rozdílů je vytvořena normálová mapa.

Normálová mapa je de facto textura, která ale místo jednotlivých barevných složek obsahuje jednotlivé souřadnice normál, čili směrnic (při 32-bitové hloubce je použito 8 bitů pro x, y a z). Ve hře je pak tato normálová mapa aplikována zpět na model a podle ní jsou pak jednotlivé pixely osvětleny tak, aby byl výsledek realističtější a více připomínal původní model. Zde jsou názorné obrázky použití v Unreal Enginu 3:


Obr. 8, 9 – Model nestvůry ze hry (8000 polygonů) a čistě geometrický model z 3D Studia Max (3 miliony polygonů)
Klikněte pro zvětšení

A zde vidíte výsledek:


Obr. 10 – Výsledný model ve hře osvětlený podle normálové mapy
Klikněte pro zvětšení

Podobným způsobem může být mapován i terén. Zde je model téže scény, která je ve skutečnosti složena z 500 tisíc polygonů, zatímco model sloužící k vytvoření normálové mapy obsahoval kolem 100 milionů polygonů:




Obr. 11, 12 – Modelování venkovních scén pomocí normálových map
Klikněte pro zvětšení

Pokud Vás zajímá ohledně Unreal Enginu 3 více, podívejte se na tuto jeho homepage. Mimo jiné je na ní řečeno, že se ve scénách počítá současně s 5-20 postavami o 3-12 tisících polygonech, že v typické scéně se bude nacházet 300-1000 viditelných objektů a počet trojúhelníků se bude v jednu chvíli pohybovat mezi 200 000 a 1 200 000. Počet světel bude něco mezi dvěma a pěti. Prostě a jednoduše, paráda pohledět.

Pozn.: Těm, kteří dočetli až sem, bychom chtěli položit jednu otázku – zajímaly by Vás podobné články i v budoucnu? Tento text se již blíží pomyslné hranici záběru našeho serveru, ale pokud se ukáže jako úspěšný, budeme se podobnou problematikou v rámci možností zabývat. Diskuse je otevřená.