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ě

Grafická pipeline: jak se tvoří obraz III

4.3.2015, Pavel Šantrůček, článek
Grafická pipeline: jak se tvoří obraz III
Máme za sebou dva kontrolní lety nad naším grafickým potrubím. Dnes nás čeká let závěrečný, na jehož konci bychom už konečně rádi viděli nějaký ten obrázek z naší hry na samotném monitoru počítače.
Kapitoly článku:

Screen Tearing


U Swap Chain je to už naše třetí zastávka, takže bychom to měli mít v malíčku. Já to ale pro jistotu zopakuji. Grafická karta vytváří snímek v Back Bufferu. Když je snímek hotový, pomocí změny adresy ukazatele (Pointer) provede Swap a z Back Buffer se stává Front Buffer (samozřejmě také naopak). Mezi tím Video Controller (VC) skenuje a kopíruje data snímku z Front Bufferu do monitoru.

Při naši „monitorové“ exkurzi jsme zjistili, že monitor pracuje s konstantní snímkovou frekvencí, která je dána schopností jeho elektroniky. V našem případě monitor zvládne zobrazit 60 snímků za sekundu ve Full HD rozlišení. Pokud tedy monitor musí pracovat s konstantní snímkovou frekvencí, tak i VC (který monitor zásobuje daty a řídí signál) musí nutně používat stejnou frekvenci.

Video kontrolér tedy snímá (skenuje) Front Buffer pixel po pixelu (zleva doprava), řádek po řádku (odshora dolů), 60 krát za sekundu a tedy i doba jednoho skenování Frame Bufferu je 16.66 ms. Během této doby musí samozřejmě video kontrolér také vytvářet (námi už známou) oblast s názvem Blanking Area tak, aby byl výsledný signál pro monitor kompletní.

Na rozdíl od monitoru grafická karta a její Swap Chain nepracuje s konstantní snímkovou frekvencí. Grafická karta vytváří snímek, jak nejrychleji to jen jde a pokud má hotovo, provede Swap a okamžitě se pouští do snímku dalšího. Ani doba, po kterou grafická karta vytváří jeden snímek, není stejná, ale mění se s náročností vykreslované scény. Prostě a jednoduše, grafická karta pracuje s variabilní snímkovou frekvencí. Pro lepší pochopení zaneseme práci variabilní snímkové frekvence grafické karty a konstantního skenování video kontroléru do jediného diagramu. Výsledek by měl vypadat asi nějak takto:





Při pohledu na obrázek je myslím patrné, oč tu běží. Hned při prvním skenování Front Bufferu video kontrolérem se v průběhu kopírování provedl Swap Front/Back Bufferu, o kterém VC nemá ani zdání, takže prvních 11 ms kopíroval data z jednoho úložiště (starého Front Bufferu) a zbylých 5,66 ms kopíroval data z druhého úložiště (nového Front Bufferu alias bývalého Back Bufferu).

Výsledný snímek, který je zaslán k zobrazení na monitor, se tedy skládá ze snímků dvou, které mezitím stihla vygenerovat grafická karta. Tomuto jevu se tedy říká Screen Tearing a vysvětluje také, proč můžeme ve hře dosahovat vyšších snímkových frekvencí, než je konstantní snímková frekvence monitoru schopna. Jeden snímek monitoru totiž může být složen z více fragmentů snímků grafické karty.

Pokud jste ještě neusnuli, pak gratuluji, protože vím, že to příliš zábavné není. Pro odreagování si sami zkuste spočítat, z kolika fragmentů snímků se bude skládat obraz na 60Hz monitoru v případě, že grafická karta generuje snímky rychlostí přibližně 5 ms. Máte-li v duchu spočteno a trochu vás to nakoplo, poletíme dál.
Doporučujeme náš velký přehled desktopových grafických čipů.