PhysX - reálnější virtuální svět

<p>&#160;</p>
<p>&#160;</p>
Hodně se změnilo od té doby, kdy se malá firma Ageia dostala na 3D grafický trh. Především pak ve fyzikálním enginu, který vám umožňuje vidět virtuální svět mnohem realističtěji. Tehdy se totiž objevil PhysX.
Martin Zachar 9. 1. 2009

Sdílet

Něco z počátků 

Když vyhodíte do povětří cisternu či barely s naftou, můžete vidět plno malých rozptýlených částic namísto jedné velké textury, která se většinou chová opravdu nerealisticky. Představte si, jak by vypadal perfektně nasimulovaný vodopád nebo dívka, jejíž oblečení by nebylo statické, ale dynamicky by se pohybovalo přesně podle jejího těla. To je přesně to, co pro vás může udělat fyzika ve hrách.

Nápad firmy Ageia byl opravdu zajímavý, ale jakožto průkopník v oboru měla i tato idea několik nedostatků. Hlavní nevýhodou byla cena, se kterou se karty dostaly na trh, ale také malá průmyslová podpora. Dokonce jejich reklamní kampaně nebyly zdaleka takového charakteru, jaký by si tato nová technologie zasluhovala. A tak Ageia dopadla opravdu špatně.

Pokud chcete rozšířit podobný vynález mezi široký okruh lidí, určitě se to nestane během jedné noci, dokonce ani během jednoho měsíce. Potřebujete přilákat programátory a herní vývojáře, kteří by začali používat vaši technologii v jejich hrách a tím pádem přinutili i koncové uživatele (hráče) kupovat právě karty firmy Ageia. Ale nestačí vývojáře jen přitáhnout na svou stranu, musíte pak dlouho čekat, než se dokončí první, druhá či pátá hra, kterou by si hráči chtěli zahrát a kvůli které by byli ochotni si připlatit za nový kus hardwaru.

 

Fluid tech demo

 

Pak ale do onoho divadla vstoupil nový velký hráč. Byla to firma NVIDIA, která řekla:  "A dost." Tehdy začala tato společnost investovat velké peníze do "open standardu" zvaného CUDA. Zjistila si totiž, že by nemělo být těžké implementovat PhysX API na jejich grafické karty s podporou CUDy. A to byl hlavní krok, který rozpohyboval ta správná kola. NVIDIA tedy investovala 30 milionů dolarů do neznámého, čímž i odkoupila firmu Ageia. Najala jejich nejlepší lidi, kteří měli za úkol předělat PhysX API tak, aby fungovalo i na CUDě.

Takže jakákoliv grafická karta GeForce s podporou CUDy (čti GeForce ředy 8 a novější) mohla využívat PhysX, aniž by bylo nutné nainstalovat pro to určenou PhysX kartu. Tedy již v polovině srpna roku 2008 s vydáním nových PhysX ovladačů mohlo začít využívat tuto technologii něco přes 70 milionů hráčů.

 

   

Nurien

 

Co je to Fyzikální engine? 

Podle slovníků je PhysiEics věda, která se zabývá hmotou, energií, pohybem a silou. Teď se možná ptáte, jak souvisí fyzika (kterou na střední škole možná nesnášíte nebo jste nesnášeli) s hrami (které si mimo jiné rádi zahrajete)? Fyzika ve hrách je především o tom, jak se zde budou všechny objekty pohybovat a reagovat na své okolí. Bylo známo, že GPU vykresluje scénu, zatímco CPU počítá všechny pohyby a reakce, což také způsobovalo omezování herních výpočtů při velkém spotřebovávání CPU taktů. Teď, abyste tomu správně rozuměli, možná není od věci zmínit, že PhysX nevykresluje scénu. PhysX patří v pipelině o stupínek níže. Takže na co je? Pomáhá počítat pohyby objektů, elementárních částic, tekutin a dalších. To je vše založeno na gravitační síle, hustotě, větru a jim podobných vlivech.

Takže je vám určitě jasné, že i před Ageiou existovaly fyzikální enginy. Avšak ty byly počítány na CPU, což bylo omezováno určitým maximálním povoleným počtem taktů. Dalším známým enginem je například Havok, který také využíval CPU.

 

Warmonger

 

Takže obvyklé fyzikální enginy dnešní doby jsou zpracovávány na CPU, které je přehlceno výpočty pro zvyšující se nároky herní logiky a umělých inteligencí. Takže PhysX je první engine, který je zodpovědný za ty krásné dynamicky generované efekty, které jsou zpracovány pomocí GPU. Ale nespotřebovává to zase takty GPU? Ano, spotřebovává. Ale na GPU se dokážou provádět některé výpočty mnohem rychleji než na CPU (někdy i 10x rychleji).

PhysX je tedy používán pro takové efekty, jako jsou:

  • Exploze, které vytvoří prach či poletující částice.
  • Postavy s mnohem realističtějšími pohyby.
  • Senzační nové zbraně s novými efekty.
  • Oblečení, které se vlní či roztrhává tak, jak byste čekali v reálném světě.
  • Hustý kouř a mlha, které se rozvlní, pokud se v nich pohybuje nějaký objekt.

Takže o čem to všem vlastně je? Určitě ihned uvidíte rozdíl ve hře, kde je podobný fyzikální engine povolen či zakázán. Avšak stojí vám za to vidět při střelení do cihly o několik odletujících kousků víc než normálně?

 

    

Metal knight zero

 

Výkon 

Možná jste již někde četli článek o PhysX a dozvěděli jste se, že vám zvýší například počet snímků za sekundu. Pokud v to doufáte, pak vás musím zřejmě zklamat, protože PhysX nebyl vyvíjen pro zrychlení hry, ale pro zlepšení vzhledu hry. Avšak trochu to vašemu CPU může ulehčit a tím pádem i zrychlit framerate, takže nemusíte zoufat úplně.

Můžeme srovnat dva případy:

  1. Použijeme PhysX na hře, která je ještě ze starých časů a tak je počítáno s fyzikálním enginem zpracovávaným na CPU. Pokud tedy provedete tyto výpočty na GPU, CPU tím ulehčíte a hru zrychlíte (tím samozřejmě i framerate).
  2. Druhý případ je však novější hra, která je již připravena na výpočty pomocí grafické karty. Tím se dostanete do situace, kdy vaše grafická karta musí vykreslovat mnohem více objektů (nejrůznější částice či prach a kouř), které by normálně nevykreslovala a nepočítala. Takže GPU tím zatížíte, zatímco CPU se bude flákat tak jako tak. Z toho plyne, že framerate jenom snížíte.

Můžete tedy vidět, že PhysX jenom počítá pohyby či transformace sady vrcholů objektů či sady částic (voda, dým apod.). Takže když střelíte do obyčejného barelu s podporou PhysX, který se poté roztříští na několik tisíc malých kousků, znamená to pro GPU jediné: Více malých objektů, u kterých se musí vypočítat vrcholy, zaplnit jimi scéna, potexturovat, vystínovat a poté vykreslit. Rozhodně tedy stojí za promyšlenou, zda se PhysX vyplatí právě pro vás.

 

The great Kulu

 

Používání PhysX 

Pro používání PhysX je hned několik možných cest.

  1. Standardní mód, znamená jednu grafickou kartu, která se stará jak o vykreslování grafiky, tak i o počítání PhysX (to už potřebuje opravdu koňskou sílu).
  2. SLI mód, kdy máte dvě grafické karty. Obě pak používáte opět pro vykreslování scény i počítání PhysX.
  3. Mód je Multi-GPU, kdy máte zase dvě grafické karty, avšak jedna je používána pro renderování a druhá pro výpočty PhysX.

 

  

Multi-GPU mód.

 

Závěrečné přemýšlení 

Hodně dnešních her začíná využívat PhysX, proto určitě stojí za chvíli přemýšlení, zda koupit či nekoupit. Osobní názor je, že jedna karta pro vykreslování a zároveň počítání PhysX nemá cenu, proto rozhodně stojí za zvážení pořízení další grafické karty. Časem se možná právě tento fyzikální engine tak zevšední, že se bude používat automaticky, dokud nepřijde další, ještě lepší.
 

A jako bonus ještě dvě videa:

Autor článku