Vysvětlení počtu snímků za sekundu

Dnes se budeme zabývat jednou z nejčastěji kladených otázek ohledně počítačových her: kolik snímků za sekundu potřebujete? Měli byste hrát se stejnou snímkovou frekvencí, jaká je maximální obnovovací frekvence vašeho monitoru, například 60 FPS na monitoru s frekvencí 60 Hz, nebo je výhodné spouštět hry s mnohem vyšší snímkovou frekvencí, než jakou dokáže zobrazit váš monitor, například 500 FPS?

Chceme-li odpovědět na tuto otázku, musíme si trochu popovídat o tom, jak grafický procesor a displej spolupracují při odesílání snímků do vašich očí a jak fungují technologie, jako je Vsync.

Ale v zásadě platí, že spouštění her s extrémně vysokou snímkovou frekvencí, výrazně vyšší, než je obnovovací frekvence vašeho monitoru, vede k citlivějšímu hernímu zážitku s nižší vnímanou vstupní latencí. To je odpověď na otázku pro ty, kteří nechtějí čekat až do konce. Nyní si povíme proč.

Poznámka redakce: Tento článek byl původně zveřejněn 2. srpna 2018. Dnes je stejně relevantní a aktuální jako tehdy, proto jsme jej v rámci naší iniciativy #ThrowbackThursday nahodili.

Předpokládejme, že máme monitor s pevnou obnovovací frekvencí 60 Hz. Jinými slovy, monitor aktualizuje své zobrazení každou 1/60 sekundy, tedy každých 16,7 ms. Při spuštění hry není zaručeno, že GPU dokáže vykreslit každý snímek přesně za 16,7 milisekundy. Někdy to může trvat 20 ms, někdy 15 ms, někdy 8 ms. To je proměnlivá povaha vykreslování hry na GPU.

Při této proměnlivé rychlosti vykreslování existuje možnost volby, jakým způsobem bude každý vykreslený snímek předán monitoru. Může předat nový snímek na monitor ihned po jeho úplném vykreslení, což je běžně známo jako spuštění hry s „Vsync“ neboli vypnutou vertikální synchronizací, nebo může počkat, až bude displej připraven k obnovení, a teprve poté odeslat nový snímek, což je známo jako „Vsync on“.

Vsync off

Použití první metody, tedy Vsync off, způsobuje trhání. Je to proto, že displej nemůže aktualizovat celý obraz okamžitě, místo toho se aktualizuje po řádcích, obvykle od horního okraje displeje k dolnímu. Během tohoto procesu může být z GPU připraven nový snímek, a protože nepoužíváme Vsync, je tento snímek okamžitě odeslán na displej. Výsledkem je, že v polovině obnovení monitor přijímá nová data a aktualizuje zbytek řádků na displeji těmito novými daty. Zůstane vám pak obraz, kde horní polovina obrazovky je z předchozího snímku a spodní polovina z nového, čerstvě dostupného snímku.

Tearing

V závislosti na zobrazovaném obsahu se toto rozdělení mezi novými a starými snímky při jednom obnovení projeví jako trhání nebo viditelná čára mezi starým a novým snímkem. Obvykle je to nejvíce patrné u rychle se pohybujících scén, kde je velký rozdíl mezi jedním a dalším snímkem.

Vypnutá funkce Vsync sice vede k trhání, ale má tu výhodu, že se snímek odešle na displej ihned po dokončení vykreslování, čímž se dosáhne nízké latence mezi GPU a displejem. Mějte to na paměti pro pozdější dobu.

Vsync on

Alternativní způsob zobrazení obrazu je se zapnutým Vsync. Zde namísto toho, aby GPU okamžitě odeslal nový snímek na displej, zamíchá každý vykreslený snímek do vyrovnávací paměti. Do první vyrovnávací paměti se ukládá snímek, se kterým se právě pracuje, a do druhé vyrovnávací paměti se ukládá snímek, který se právě zobrazuje na displeji. V žádném okamžiku během obnovení se druhá vyrovnávací paměť neaktualizuje, takže displej zobrazuje data pouze z jednoho plně vykresleného snímku a v důsledku toho nedochází k trhání při aktualizaci v polovině obnovení.

Vsync zapnut, bližší pohled

Jediný okamžik, kdy se druhá vyrovnávací paměť aktualizuje, je mezi obnoveními. Aby k tomu došlo, čeká GPU po dokončení vykreslování snímku, dokud se displej nechystá obnovit. Pak zamíchá vyrovnávací paměti, začne vykreslovat nový snímek a proces se opakuje. Někdy může tento proces zahrnovat více vyrovnávacích pamětí, než se snímek dostane na displej, ale toto je obecná podstata fungování Vsync.

Když je váš GPU příliš pomalý na vykreslení snímku… dochází ke koktání

S Vsync jsou dva problémy. Za prvé, pokud je rychlost vykreslování vašeho GPU příliš pomalá na to, aby držela krok s obnovovací frekvencí displeje – řekněme, že je schopna vykreslovat pouze rychlostí 40 FPS na displeji s frekvencí 60 Hz – pak GPU nestihne vykreslit celý snímek včas, aby stihl začátek obnovování displeje, takže se snímek opakuje. To způsobuje zadrhávání, protože některé snímky se zobrazí pouze jednou, zatímco jiné dvakrát.

Vsync zapnuto: 60Hz displej, 200 FPS

Druhý problém nastává, když je váš grafický procesor velmi rychlý a snadno dokáže vykreslit snímek v intervalu obnovovací frekvence. Řekněme, že dokáže vykreslovat rychlostí 200 FPS a vytvářet nový snímek každých 5 ms, jenže vy používáte 60Hz displej s obnovovacím oknem 16,7 ms.

Se zapnutou funkcí Vsync váš GPU dokončí další snímek, který se má zobrazit za 5 ms, pak počká 11,7 ms, než snímek odešle do druhé vyrovnávací paměti, aby se zobrazil na monitoru, a začne s dalším snímkem. Proto se zapnutou funkcí Vsync odpovídá nejvyšší snímková frekvence obnovovací frekvenci monitoru, protože GPU je v podstatě „uzamčen“, aby vykresloval maximálně tak rychle, jak je obnovovací frekvence.

V tomto bodě dochází k mnoha nejasnostem.

Často slýcháme věci jako „uzamčení GPU na obnovovací frekvenci mého monitoru pomocí Vsync je skvělé, protože pokud vykresluje rychleji, než je obnovovací frekvence, jsou tyto snímky zbytečné, protože je monitor nemůže zobrazit, a já dostanu jen trhání“. Spousta lidí poukazuje na úsporu energie při použití Vsync; váš GPU nemusí pracovat tak tvrdě, není žádný přínos z běhu při snímkové frekvenci vyšší, než je obnovovací frekvence monitoru, takže běžte se zamčeným FPS a ušetřete trochu energie.

Dá se pochopit, proč lidé dospěli k tomuto závěru, a jsou na tom kousky pravdy, ale obecně to není přesné. A to z toho důvodu, že nezohledňujete čas, ve kterém jsou vstupy zpracovávány, a jak dlouho trvá, než se tyto vstupy zhmotní na displeji.

Vsync na včetně vstupu

Abychom si vysvětlili, proč tomu tak je, podívejme se na diagram Vsync na, ale překryjme jej vstupem z myši a klávesnice, který se obvykle sbírá každou 1 ms. Použijme také stejný příklad, kde máme GPU schopné vykreslovat rychlostí 200 FPS s displejem o frekvenci 60 Hz.

Při použití Vsync a jednoduchého systému vyrovnávací paměti začne v tomto zjednodušeném vysvětlení GPU vykreslovat snímek odpovídající vstupu myši, jakmile tento vstup obdrží, tedy v čase 0. Poté trvá 5 ms, než snímek vykreslí, a čeká dalších 11,7 ms, než jej odešle do vyrovnávací paměti displeje.

Zobrazení pak nějakou dobu trvá, než přijme snímek, který má být vykreslen, a fyzicky aktualizuje displej řádek po řádku s touto informací.

Vsync při zahrnutí vstupu

I v nejlepším případě se setkáváme s prodlevou nejméně 16,7 ms mezi vaším vstupem a okamžikem, kdy vám displej může začít zobrazovat výsledky tohoto vstupu.

Při započtení zpoždění vstupu na displej, doby zpracování procesorem atd. může být zpoždění mezi vstupem a obnovením displeje klidně více než 50 ms.

Vsync off včetně vstupu, 60Hz displej, 200 FPS

Nyní se podívejme na diagram Vsync off. Grafický procesor nepřetržitě vykresluje bez ohledu na to, kdy se displej obnovuje, přičemž trvá 5 ms, než se váš vstup promění v kompletní snímek. Displej pak může začít okamžitě zobrazovat tento nový snímek, i když to může být jen jeho část. Výsledkem je, že latence mezi vaším vstupem do hry a okamžikem, kdy displej může začít zobrazovat výsledky tohoto vstupu, se sníží z 16,7 ms na pouhých 5 ms. A v reálných implementacích nebudou žádné další vyrovnávací paměti; je to stejně rychlé jako toto plus vstupní zpoždění vašeho monitoru.

A právě v tom je výhoda. V tomto příkladu se při běhu na 200 FPS s vypnutým Vsync na 60 Hz monitoru sníží vstupní latence na 5 ms, zatímco se zapnutým Vsync je tato latence nejméně 16,7 ms, ne-li více.

Přestože displej není schopen zobrazit celých 200 snímků za sekundu, to, co zobrazuje každou 1/60 sekundy, je vytvořeno ze vstupu, který je časově mnohem blíže tomuto snímku.

Tento jev samozřejmě platí i u monitorů s vysokou obnovovací frekvencí. Například při 144 Hz se vám každou sekundu zobrazí mnohem více snímků, takže celkový zážitek bude plynulejší a svižnější. Ale při běhu na 200 FPS s vypnutým Vsync namísto 144 FPS se zapnutým Vsync budete mít stále rozdíl mezi 5 ms a až 7 ms vstupní latence.

Když už mluvíme o milisekundových rozdílech, asi vás zajímá, jestli si tohoto rozdílu ve hrách skutečně všimnete.

V závislosti na druhu hry, kterou hrajete, může být rozdíl od velmi znatelného až po žádný. Rychlá hra jako CS: GO, která běží rychlostí 400 FPS na monitoru s frekvencí 60 Hz a vstupní latencí v nejlepším případě kolem 2,5 ms, bude výrazně citlivěji reagovat na pohyby myši, než kdybyste stejnou hru spustili s frekvencí 60 FPS a latencí 16,7 ms (nebo více).

V obou případech vám displej zobrazí nový snímek pouze 60krát za sekundu, takže to nebude tak plynulé jako na 144 Hz nebo 240 Hz displeji. Rozdíl ve vstupní latenci je však obrovský; běh při 400 FPS vám umožní dostat vstupy na displej téměř 7krát rychleji, ne-li více. Vyzkoušejte si to sami a určitě pocítíte rozdíl v odezvě.

A toto vysvětlení jsme nevytáhli jen tak odnikud, ve skutečnosti Nvidia zná omezení Vsync z hlediska vstupní latence, a proto poskytuje alternativu nazvanou Fast Sync (alternativa AMD se nazývá Enhanced Sync). Tato technika synchronizace zobrazení je jako kombinace Vsync on a Vsync off, čímž vzniká to nejlepší z obou světů.

Fast Sync funguje tak, že do pipeline Vsync on zavádí další vyrovnávací paměť, která se nazývá poslední vykreslená vyrovnávací paměť. To umožňuje GPU pokračovat ve vykreslování nových snímků do zadní vyrovnávací paměti a po dokončení přejít do poslední vykreslené vyrovnávací paměti. Při obnovení displeje se pak poslední vykreslená vyrovnávací paměť přesune do přední vyrovnávací paměti, ke které přistupuje displej.

Fast Sync / Enhanced Sync

Výhodou, která tím vzniká, je, že GPU již nečeká po dokončení snímku na obnovení displeje, jako je tomu v případě zapnutého Vsync. Místo toho GPU pokračuje ve vykreslování snímků, takže když displej přejde k přístupu ke snímku na začátku doby obnovení, byl tento snímek vykreslen blíže k obnovovacímu oknu. Tím se sníží vstupní zpoždění. Na rozdíl od vypnuté funkce Vsync však funkce Fast Sync dodává dokončený snímek na displej na začátku každého obnovovacího okna, místo aby snímek na displej prostě ihned vytlačila, a právě tato technika eliminuje trhání.

Fast Sync je funkční pouze tehdy, když je snímková frekvence vyšší než obnovovací frekvence displeje, ale daří se jí poskytovat svižnější herní zážitek bez trhání. A společnost AMD má samozřejmě ekvivalent nazvaný Enhanced Sync.

Doufejme, že tento vysvětlující článek objasnil některé z vašich otázek ohledně toho, proč spuštění hry nad maximální obnovovací frekvencí monitoru přináší svižnější herní zážitek a proč je možnost spouštět hry s vyšší snímkovou frekvencí vždy výhodou, i když se může zdát, že ji váš monitor nedokáže využít.

Ještě poslední poznámka: o technologiích adaptivní synchronizace, jako jsou G-Sync a FreeSync, jsme zde zatím nehovořili, a to proto, že jsme se většinou bavili o spouštění her nad maximální obnovovací frekvencí, kde se adaptivní synchronizace neuplatňuje. Existuje mnoho různých metod synchronizace, ale adaptivní synchronizace se velmi liší od Vsync a Fast Sync, o kterých jsme mluvili, a přinejmenším pro tuto diskusi není relevantní.

Další čtení
  • Nejlepší herní monitory
  • Vysvětlení funkce FreeSync 2
  • Nejlepší grafické karty 2018
Nákupní zkratky
  • Radeon RX 570 na Amazonu, Newegg
  • Radeon RX 580 na Amazonu, Newegg
  • GeForce GTX 1060 6GB na Amazonu
  • GeForce GTX 1070 Ti na Amazonu, Newegg
  • GeForce RTX 2070 na Amazonu, Newegg
  • GeForce RTX 2080 na Amazonu, Newegg
  • GeForce RTX 2080 Ti na Amazonu, Newegg

Masthead kredit: Foto: Jakob Owens

Articles

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.