Aktuality  |  Články  |  Recenze
Doporučení  |  Diskuze
Grafické karty a hry  |  Procesory
Storage a RAM
Monitory  |  Ostatní
Akumulátory, EV
Robotika, AI
Průzkum vesmíru
Digimanie  |  TV Freak  |  Svět mobilně

3DMark: testujeme výkon DirectX 12

8.6.2015, Pavel Šantrůček, recenze
3DMark: testujeme výkon DirectX 12
3DMark je jedním z prvních nástrojů pro testování režie 3D API a ačkoliv se objevilo hned několik více či méně povedených článků o měření DirectX 12 pomocí 3DMarku, my si dnes provedeme měření svá vlastní a samozřejmě nezůstane pouze u nich. Aktualizováno.
3DMark a jeho API Overhead Feature Test testuje grafické karty pomocí vytváření velkého množství Draw Calls, které jsou následně zasílány ke zpracování grafické kartě. Abychom pochopili, co vůbec pomocí 3DMarku budeme měřit, musíme začít od samého počátku a podívat se, co že to vlastně ty Draw Calls jsou a jak s nimi 3D API zachází. Z tohoto důvodu důrazně doporučuji přečíst si náš starší článek o grafické pipeline, protože bez těchto alespoň základních znalostí o DirectX byste v dnešním článku zbytečně tápali.

Každá scéna (snímek) počítačové hry je složena z mnoha objektů, které jsou pomocí požadavků na vykreslení (Draw Calls) zasílány přes 3D API do grafické karty, která je pak zodpovědná za vlastní vykreslení objektu na monitoru počítače. Každý takovýto objekt scény může být vykreslen pomocí jednoho nebo více těchto požadavků (Draw Calls). Znamená to, že pouhopouhý jeden snímek nějaké scény s mnoha objekty musí být vykreslován pomocí několika stovek nebo i tisíců takovýchto požadavků.

Vše záleží na komplexnosti scény. Pokud scéna obsahuje malé množství objektů, počet Draw Calls je nízký, pokud však do scény přidáte objektů více, nebo třeba další reálná světla (taková, která u objektů generují stíny), počet Draw Calls se geometrickou řadou zvyšuje. Jednodušeji řečeno, chtějí-li vývojáři počítačových her mít ve svých hrách realističtější obraz nebo více objektů ve scéně, o čemž samozřejmě nikdo nepochybuje, je nutné tento obraz vykreslit pomocí většího počtu vykreslovacích požadavků, tedy Draw Calls.

Mnoho objektů, mnoho Draw Calls
Mnoho objektů, mnoho Draw Calls

A jak s tím souvisí 3D API a procesor? Obecně řečeno, všechna 3D API mají za úkol vytvářet a odesílat Command Buffers, což jsou vlastně příkazy grafické kartě, co má vůbec dělat, co jak nastavit, co a jak vykreslit a samozřejmě také co a jak k tomu použít. To vše v řeči, které daná grafická karta rozumí. Součástí Command Bufferu tedy jsou i samotné Draw Calls, které jsou do těchto příkazů zaznamenávány.

Aplikace (v našem případě hra) při tvorbě snímku musí volat 3D API kvůli tomu, aby byl vytvořen patřičný Command Buffer, který bude obsahovat (kromě jiných věcí) seznam požadavků na vykreslení objektů (Draw Calls) snímku. Jakmile 3D API Command Buffer vytvoří, odešle ho do fronty s názvem Command Queue, ze které si ho grafická karta vyzvedne a podle jeho instrukcí následně objekt vykreslí.

Z pohledu procesoru, kde je všechna tato činnost prováděna, to znamená, že čím více Draw Calls bude zapotřebí k vykreslení jednoho snímku, tím delší doba bude zapotřebí k vytvoření Command Bufferů, protože budou obsahovat větší množství požadavků na vykreslení.

Vše je sice hodně zjednodušeně řečeno, ale pro dnešek opravdu nic víc potřebovat nebudeme.
Doporučujeme náš velký přehled desktopových grafických čipů.