www.svethardware.cz
>
>

Grafická pipeline: jak se vytváří obraz

Grafická pipeline: jak se vytváří obraz
, , článek
Dnes se podíváme na grafickou pipeline tak, aby souvislosti byly co nejvíce srozumitelné i pro čtenáře, kteří se o tuto problematiku dosud nezajímali. Půjde o předzvěst dalších článků o grafických kartách včetně recenzí zajímavých modelů.
K oblíbeným
Kapitoly článku:
  1. Grafická pipeline: jak se vytváří obraz
  2. Fáze Draw
  3. DirectX
reklama
Nad problematikou grafické pipeline se budeme kvůli zjednodušení vznášet tak vysoko, že se nám některé detaily ztratí z dohledu úplně. Cílem je především populárnější formou seznámit zvídavé čtenáře s tím, jak fungují počítačové hry, grafická pipeline a samozřejmě i samotná grafická karta.

Další důvod pro přečtení tohoto článku je ten, že u dalších plánovaných článků s podobnou tématikou, třeba o grafických kartách a jejich měření, nebo o vadách plynulosti pohybu v počítačových hrách, bude počítáno s tím, že jste tento článek četli a máte tedy alespoň minimální přehled o této problematice. Pojďme se tedy kouknout na náš letový plán a vůbec nad čím to vlastně poletíme.



Naše první přeletová oblast je samotná počítačová hra, kde naše grafické potrubí vzniká a opravdu hodně se tam toho mele. Snížíme tedy výšku a začneme se rozhlížet.


Počítačová hra


Grafickou pipeline nevyužívají pouze počítačové hry, mohou to být i další a profesionální aplikace, které ji pro svůj běh vyloženě potřebují. Mohou to být různé 3D konstrukční aplikace založené na CAD systémech a podobně. My se ale budeme věnovat výhradně počítačovým hrám, a to pouze v rozsahu, který je pro naše téma důležitý. Určitě nečekejte, že po přečtení této kapitoly se z vás stane herní vývojář, ale některé informace by pro vás mohly být nové, zajímavé a celkově užitečné.



Každá hra je vlastně aplikace (program), která běží v nějaké nekonečné smyčce. Ta nejzákladnější a nejjednodušší herní smyčka (loop) vypadá asi nějak takto:



Po spuštění hry a načtení všech zdrojů (resources) se kód hry dostává do nekonečné smyčky Update – Draw. Je to naprosto triviální smyčka, v které aplikace zůstává po celou dobu až do okamžiku, kdy ve hře nějakým příkazem Stop, tuto smyčku opustíme a aplikaci ukončíme.

Ve fázi Update se zjišťuje interakce hráče, tedy jestli byla stisknuta nějaká klávesa, či pohnuto myší. Pokud ano, pak u všech objektů, které tvoří 3D scénu, musí být přepočtena jejich nová pozice (transformace). Ve fázi Draw je pak tato nově zkomponovaná scéna odeslána k zobrazení na monitor. Pokud ve fázi Update žádná interakce hráče nebyla zjištěna, kompozice scény se nemění, žádná transformace se počítat nemusí a je hned zavolána procedura Draw, která opět odešle, tentokrát ale nezměněnou, scénu k zobrazení na monitoru.

Existuje celá řada herních smyček, které berou v potaz i časování, nebo omezení snímkové frekvence hry. Těmi se ale zde zabývat nebudeme, nám pro další výklad bohatě postačí tato základní herní smyčka.

Nyní si všimněte jedné věci. Pokud nebyla žádná interakce a transformace objektů ve scéně tak nemusela být počítána, snímková frekvence (počet průchodů smyčkou) musí být jiná (vyšší), než kdyby interakce byla a transformace objektů se tak musela počítat. Je to samozřejmě tím, že procesor při výpočtu transformace objektů trávil ve fázi Update delší dobu (musel něco počítat) a průchod smyčkou tak zdržel.

Z pohledu výkonu (snímkové frekvence) platí tedy úměra, že čím delší čas tráví procesor v průchodu herní smyčkou na různých výpočtech scény, tím nižší bude snímková frekvence hry.

Dalším aspektem je plynulost smyčky. V průběhu hry se počet objektů ve scéně může lišit. Nejde pouze o počet, ale i o složitost jejich tvarů (model s různým počtem vertexů a polygonů). Je jasné, že procesor tráví na výpočtech transformace více času, když je objektů na scéně více a mají komplexnější model, než když jich tam je méně a jejich model je jednodušší. Snímková frekvence se tedy v čase může měnit, a to někdy opravdu výrazně.

Vývoj her jde neustále kupředu a je počítáno stále více a více komplexnějších objektů. Dnes už také nestačí počítat jednoduché transformace objektů, ale je nutné do těchto transformací započítat i jejich fyzikální chování (gravitace, tření...). Dále pak částicové efekty, prostorové zvuky atd. Prostě výpočty jsou opravdu masivní a vývojáři se s tím musí nějak poprat. Pokud by totiž všechny tyto výpočty byly prováděny v herní smyčce pouze procesorem (a nedej bože pouze pomocí jednoho vlákna), věřte, že by se snímkové frekvence dnešních her držely hodně při zemi.

Hry se tedy musí již v samotné herní smyčce nějakým způsobem optimalizovat. Jde především o rozložení zátěže CPU do více vláken (nebo jader), kde se část procesoru věnuje výpočtům jednoho druhu, další část zase výpočtům druhu jiného, zvukům, umělé inteligenci atd. Další a velmi významná optimalizace spočívá v přenesení některých masivně paralelních výpočtů na bedra grafické karty. Grafická karta je totiž (už z principu její architektury) na výpočty tohoto typu lépe navržena a procesor se s ní výkonnostně nemůže (a to ani náznakem) srovnávat.

Zkrátka a dobře, všechny tyto optimalizace mají jediný cíl, a to zkrátit čas výpočtů v herní smyčce, čímž je dosažena vyšší snímková frekvence hry. Pokud hra není takto optimalizována a počet průchodů herní smyčkou klesne třeba na 30 průchodů za sekundu (Hz), můžete vlastnit i tu nejvýkonnější grafickou kartu na světě, ale více jak těch 30 fps (snímků za sekundu) vám prostě v takové hře nedá.
reklama
Nejnovější články
PS5 byla otestována s běžným Samsungem 980 Pro vedle původního SSD PS5 byla otestována s běžným Samsungem 980 Pro vedle původního SSD
Sony minulý týden konečně zveřejnila dlouho očekávaný software, který uživatelům umožní využít běžně dostupná SSD pro rozšíření kapacity konzolí PlayStation 5. Prozatím jde o betaverzi, ale už tu máme slibné výsledky. 
Včera, aktualita, Jan Vítek2 komentáře
Australskou megabaterii Tesly a Neoenu zachvátil požár, hasili ji 3 dny Australskou megabaterii Tesly a Neoenu zachvátil požár, hasili ji 3 dny
Nová megabaterie Victoria Big Battery v Austrálii koncem minulého týdne zachvátil požár. Jde o jedno z největších akumulátorových úložišť na světě, které zde pomáhá vykrývat špičky a řešit zásahy FCAS.
Včera, aktualita, Milan Šurkala4 komentáře
AMD s Valve vyvíjí lepší linuxové ovladače pro konzole Steam Deck AMD s Valve vyvíjí lepší linuxové ovladače pro konzole Steam Deck
AMD nebylo nikdy úspěšnějším výrobcem konzolového hardwaru, než je dnes. Za to aktuálně platí uživatelé PC, kteří nemají k dispozici tolik hardwaru od AMD, kolik by si mohli přát, ale s tím se nedá nic dělat. 
Včera, aktualita, Jan Vítek
Ceny pamětí GDDR: jak je ovlivňuje Ethereum a výprodeje grafik? Ceny pamětí GDDR: jak je ovlivňuje Ethereum a výprodeje grafik?
Těžba Etherea dnes už pro mnohé není výdělečný podnik kvůli nepříznivému mixu nákladů na energie, výši odměn a hodnoty samotného Etherea. To má svůj vliv i na cenu pamětí GDDR5 či především GDDR6 na trhu. 
Včera, aktualita, Jan Vítek3 komentáře
CATL uvede na trh sodíkové akumulátory s vyšší odolností vůči chladu CATL uvede na trh sodíkové akumulátory s vyšší odolností vůči chladu
Společnost CATL dosáhla dalšího významného milníku. Sodíkové akumulátory se jí podařilo vyvinout do takové podoby, že by se už brzy měly dostat na trh. Zajímavé mají být např. vyšší odolností vůči chladu.
Včera, aktualita, Milan Šurkala3 komentáře