Technologie 3D grafiky: Jakým kouzlem se tvoří obraz?

Současné hry by se neobešly bez sestavování trojrozměrné scény. Za tímto procesem je ale celá řada technologií a složitých výpočtů. Pronikněte do tajů prostoru.
Kapitoly článku

Celý proces renderování trojrozměrné scény není nic jiného, než převod matematicky popsaného prostorového útvaru do dvourozměrné podoby z pohledu kamery. Výstupní zařízení jsou stále dvourozměrná (a to i v případě 3D monitorů), takže nezbývá, než plochu rozdělit do jednotlivých bodů a každý z nich vyplnit požadovanou barvou. Tak snadné to však nebude.

Průchod potrubím

Proces renderování je ze softwarového hlediska možné označit termínem pipeline (doslova potrubí). Vstupem do pipeline jsou jednoduché matematické objekty (body, čáry, trojúhelníky), výstupem obrazová data. Tento softwarový proces popisují hojně využívané knihovny Direct3D nebo OpenGL. Pro pochopení funkce stavby 3D scény bude nutné pochopit průchod skrz pipeline, který přímo souvisí s hardwarem grafické karty.

pipeline.png
Data k zobrazení procházejí přes pipeline, která je zpracuje, obohatí o generované prvky a pošle k vykreslení na obrazovku

Fyzická pipeline GPU označuje samostatnou cestu, která na začátku přijme matematický popis a na konci vrátí sadu pixelů. V závislosti na architektuře daného procesoru je těchto cest několik, takže karta zpracovává v každém cyklu paralelně mnoho výpočetních úloh.

Bez modelu ani ránu

Základem 3D scény je model, který je nutno předat grafické kartě. Ta jej očekává v první fázi renderování, nazývané Input Assembly, sestavení vstupu. Do paměti karty je uložen objekt v podobě geometrického popisu tak, aby z něj bylo možno poskládat drátěný model (wireframe). Podstatné jsou tedy jen body, hrany a zlomy, kdy jednoduchým zkompletováním předaných dat získá karta základní představu o objektu.

Wireframe
Síťový model je základem každého renderování, sada vrcholů následně projde bouřlivou transformací, rasterizací ploch a obarvováním pixelů

Účelem přípravné fáze Input Assembly je rozdělení dat na vrcholy (vertex) a seznamy čar a trojúhelníků s dalšími doplňkovými informacemi, které budou následně využity při zpracování geometrickými shadery. Neméně důležité je obohacení vstupu o systémem generované hodnoty – data se rozdělí podle logické návaznosti a jsou jim přiřazeny identifikátory (primitive id, instance id, vertex id). Pak je možné snadno se odkazovat na objekty, které je nutno zpracovat a které už jsou zpracovány.

Vrchol po vrcholu

Procesory vykonávající jednotlivé grafické operace jsou nazývány shadery a jsou historicky děleny na vertex, geomery a pixel shadery. Označení shader můžeme chápat jako programovatelnou součást grafického čipu vyhrazenou pro výpočet dané úlohy, dnes už jde ale pouze o software, který je spouštěn na unifikovaných shaderech – stream procesorech. Stream procesor je obecnějším pojetím shaderu, jde o samostatnou paralelní výpočetní jednotku bez pevného určení. Dřívější rozdělení grafického jádra na bloky vyhrazených shaderů nevyužívalo optimálně zdroje. Data se během průchodu pipeline předávala mezi bloky GPU a velká část jádra byla v každou chvíli nevyužita. Technologie stream processingu odkazuje na instrukce SIMD (Single Instruction, Multiple Data), kdy je nad větším množstvím dat vykonáván totožný postup.

 
Polygony tvořené trojúhelníky optimalizují využití paměti, nový trojúhelník vznikne přidáním jediného vrcholu
 

Po načtení dat a jejich přípravou ve fázi Input Assembly následuje zpracování vertex shadery. Každý spoj v popsané drátové síti je označen jako vrchol, všechny tyto vrcholy pak procházejí transformacemi – je potřeba je umístit do správné polohy v prostoru, případně s nimi provést operace, jako je morfování, a už v této fázi je možno pracovat také s osvětlováním, které se však dnes častěji přenechává komplexnějším pixel shaderům. V průběhu pipeline má aplikace vertex shaderů své pevné místo, pokud není potřeba zpracovávat žádný z vrcholů, musí být na aplikační úrovni definován tzv. pass-through vertex shader. Vstupem i výstupem vertex shaderu je právě jeden vrchol.

Témata článku: , , , , , , , , , , , , , , , , , , , , , , , ,