MSI
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          
 

Geometrie

Geometry pipeline

 

Input Assembler (IA)

Input Assembler je fixní (neprogramovatelnou) jednotkou, která je odpovědna za načítání geometrických dat z paměti GPU (Vertex Buffer) a následné sestavování primitives (trojúhelníků) v pomyslném 3D prostoru grafické karty. Pokud Input Assembler náš trojúhelník v prostoru umístí, můžeme jít do další zastávky.

Input Assembler

 

Vertex Shader (VS)

Na rozdíl od Input Assembleru, je Vertex Shader plně programovatelný a jeho úlohou je nějaká manipulace (tranformace) s vertexy, které dodal Input Assembler. Každý vertex tedy prochází přes Vertex Shader a může s ním tak být nějakým způsobem programově manipulováno. Je-li manipulováno s vertexy, je také manipulováno s celými objekty (pohyb hladiny moře, či trávy). Vertex Shader s vertexy pouze manipuluje, ale neumí žádné nové vertexy přidat, nebo naopak odstranit. To je úlohou až dalších zastávek pipeline.

Tessellation (TS)

Ačkoliv teselace se skládá hnedle z několika zastávek (Hull shader, Tessellator, Domain shader), my se budeme pro zjednodušení bavit pouze o zastávce jediné - Tessellation. To, co neumí Vertex Shader, tedy přidávání nových vertexů, má na starosti právě teselace. Úkolem teselace je rozdělit jednoduchý geometrický tvar do menších částí (více primitiv), což má za následek celkové zvýšení detailu vykreslovaného objektu, protože se jeho model bude skládat z více vertexů a primitiv.

 

Teselace

 

Výhodou teselace na GPU je zejména to, že nové vertexy jsou vytvářeny až v pipeline grafické karty. Pokud by totiž takto detailní model (s velkým množstvím vertexů) vznikal již při návrhu hry, musel by se o všechny tyto vertexy navíc postarat také samotný procesor při přípravě snímku pro GPU (Setup) a mohl by se tak stát brzdou herní smyčky (CPU Bound). Více geometrických dat by také znamenalo více přenosů na GPU a v neposlední řadě také více práce pro Input Assembler a Vertex Shader.

Jak už to tak bývá, nic se ale nesmí přehánět. Teselace má svůj význam pouze v případě, pokud díky ní dosáhneme nějakého vizuálně kvalitnějšího vzhledu objektů. Vizuálně bezúčelná teselace do příliš velkého počtu titěrných primitiv nám totiž další zastávky grafické pipeline zahlcuje a hra se tak lehce může stát GPU Bound více, nežli je zdrávo.

Geometry Shader (GS)

Jak už samotný název napovídá, opět se jedná o zastávku plně programovatelnou. Geometry Shader pracuje s primitivy tak, že může nová primitiva programově přidávat, nebo také existující primitiva odstraňovat. Geometry shader je také poslední zastávkou v té části pipeline, která se stará o geometrická data.

Stream Output (SO)

Stream Output pro nás dnes není příliš důležitý. Nicméně, jedná se o fixní jednotku, za pomocí které mohou být finální vertexy primitiv přesměrovány zpět na začátek pipeline a prováděny na nich opětovně geometrické operace v dalším průchodu. Stream Output je tedy důležitý především pro částice (Particles), pomocí kterých jsou vytvářeny efekty jako je oheň, kouř atd. a které si žijí jakýmsi „vlastním životem“ uvnitř pipeline.

 

Tak, či onak, geometrická část pipeline je společně s výstupem Geometry Shaderu zakončena a náš trojúhelník (jeho vertexy) je konečně sestaven a finálně umístěn v pomyslném 3D prostoru grafické karty a jediné co zbývá, je dodání jeho vzhledu. Dříve ale, nežli můžeme začít aplikovat textury či barvy na povrch objektu, je nutné nějakým způsobem převést náš trojúhelník z prostorového světa 3D do světa 2D, který jako jediný může být zobrazen na plochém monitoru našeho počítače. Tomuto procesu převodu 3D-2D se říká rasterizace.

         
Předchozí kapitola   Další kapitola
         

SPONSORS & PARTNERS

Asus  Alza  MSI  Gigabyte
AMD  Sapphire  Asbis  EVGA  Nvidia

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