Gigabyte
Grafická pipeline III: Grafická karta
Další díl minisérie o grafické pipeline je věnován grafickým kartám. Dnes si ukážeme, co všechno se musí udát, aby grafická karta vyrenderovala jeden snímek počítačové hry. No a také se podívámen na to, k čemu jednotlivé hardwarové jednotky GPU vůbec jsou a k čemu slouží.
gpureport.cz  Pavel Šantrůček  12.07.2016

OBSAH:
1. Úvod          
4. Pipeline a grafická karta          
2. Pipeline - Geometrie          
5. Závěr (kam se podíváme příště)          
3. Pipeline - Resterizace          
 

V minulém díle naší minisérie jsme si popsali, jak příkazy na vykreslení (Draw Calls), které vytvořila počítačová hra, prošly DirectX. Jak byly tyto příkazy přeloženy do jazyka srozumitelného grafické kartě, vytvořeny Command Buffers a použité zdroje jako jsou třeba textury alokovány ve VRAM grafické karty. Jak byly dále tyto Command Buffers ukládány do zásobníku Context Queue, ze kterého byly následně odesílány pomocí příkazové fronty s názvem Command Queue ke zpracování na grafickou kartu. U DirectX 12 je pak těchto front hnedle několik (Graphics Queue, Compute Queue a Copy Queue), takže příkazy mohou být na GPU zasílány paralelně.

Dnes se tedy už konečně dostáváme k samotným grafickým kartám, které musejí všechny tyto příkazy zpracovat a ve finále zobrazit kompletní snímek scény z naší hry na monitoru počítače. Obdobně jako tomu bylo u API DirectX, tak také zpracování příkazů na grafické kartě má nějaký svůj řád, podle kterého bude grafická karta náš obraz postupně skládat, tedy opět nějakou grafickou pipeline s různými zastávkami (Stages), ve kterých se bude něco dít.

 

GPU pipeline

 

Předpokládejme, že grafická karta obdržela příkaz na vykreslení objektu. My už jsme si řekli, že každý 3D objekt je popsán v prostoru svou geometrií (vertexy primitiv) a svým vzhledem (textury a shadery). Všechny tyto informace (zdroje) byly na GPU zaslány společně s vykreslovacími příkazy. Předpokládejme tedy, že geometrii (vertexy primitiv) společně s údaji o mapování vertexů na textury, či barvou jsou uloženy v jakémsi zásobníku (Vertex Buffer), textury alokovány ve VRAM a shadery (programy manipulující s vertexy, nebo barvou pixelů) máme „uhnízděny“ na výpočetních jednotkách grafické karty a nic tedy nebrání tomu, aby práce na vykreslení mohly započít

V jádru je princip samotného postupu vykreslení jednoduchý. Nejdříve musíme z geometrických dat objekt v pomyslném 3D prostoru grafické karty poskládat, následně ho z tohoto 3D prostoru převést (promítnout) do 2D prostoru rastrové mřížky (aby mohl být později zobrazen na plochém monitoru počítače) a každému pixelu, který objekt v rastrové mřížce obsadil, přiřadit tu správnou hodnotu barvy. Takto jsou vykreslovány postupně jednotlivá primitiva 3D objektu a posledním vykresleným primitivem je pak vykreslen celý 3D objekt. Když jsou vykresleny všechny 3D objekty scény, je také hotovou celý obraz (Frame). Princip je tedy jasný, takže se pojďme podívat na jednotlivé zastávky (Stages) grafické pipeline a co se v nich vůbec děje.

         
  Další kapitola
         

SPONSORS & PARTNERS

Asus  Alza  MSI  Gigabyte
AMD  Sapphire  Gainward  Nvidia

Copyright (c) 2024 InfoTrade Powered by ASP.NET & MS SQL Server