GPU kontra LCD: co je V-Sync, Buffering a jak to nastavit? | Kapitola 6
Seznam kapitol
V-Sync, fps, obnovovací frekvence, triple buffering nebo i G-Sync a Lightboost – řada technologií, které jsou různě provázány. Každý se alespoň s některými setkal, víme však, jak fungují? Máte příležitost nahlédnout do problematiky hlouběji a třeba i zjistit, že můžete své PC nastavit lépe! Dnes se podíváme na ty základní, které umí každé PC.
Triple buffering ale neznamená jen lepší kompenzaci propadů. Při správném využití (tzn. s aktivní vertikální synchronizací) může odstranit i problém roztrhání obrazu. To není ale poslední vychytávka, se kterou přichází. Ačkoli dochází k bufferování více snímků než u double bufferingu, při vysokých fps se triple buffering dokáže vyrovnat zpoždění, které má varianta pouze se dvěma buffery. Jak je to možné? Princip je jednoduchý: zatímco se ze čtecího bufferu vykresluje na monitor, tak do dvou zápisových se střídavě zapisuje. Při rychlém renderování (fps jsou vyšší než obnovovací frekvence) dojde k zaplnění obou bufferů a dalo by se předpokládat, že se renderování přeruší do doby, až dojde k přehození bufferů. To by samozřejmě vedlo k časové nekonzistenci a pocitu většího lagu.
Je to ale jinak – i když jsou už oba plné, střídavě se do nich renderuje dál. Přepisuje se vždy starší ze dvou snímků – díky tomu, že jsou buffery dva, je vždy alespoň v jednom je obraz celý a nepřerušený. Tím, že se za každou cenu nezobrazují ty staré (a již přepsané) snímky, ale zobrazí se nejnovější kompletně vykreslený snímek z právě nepřepisovaného bufferu, může systém poskytnout lepší odezvu a menší zpoždění.
![[Triple buffering s V-Sync] GPU je rychlé, nicméně nezahálí a neustále generuje další snímky i za cenu jejich zahození.](https://storage.googleapis.com/pctuning-cz/media/images/y2w4qh16muf8lsi6113d52a42c92859882430.png)
K této technice renderování bohužel nepřistupují všichni vývojáři jednotně. Někteří ji nepodporují vůbec, jiní částečně, jiní ji implementují odlišně. Nejvýznamnější platforma – Microsoft DirectX – používá triple buffering v odlehčené formě. Jde o to, že se nezahazují žádné snímky, ale používá se více snímků (více bufferů), někdo ji označuje jako render ahead (nepřesně). Zde pozor, existuje další proměnná v renderovacím procesu, která nese toto označení - render ahead limit slouží k omezení počtu připravených snímků na CPU ještě před vstupem do renderovací fáze GPU, ale tím se dnes nezabýváme.
Praktické dopady triple bufferingu tedy záleží na jeho implementaci a nasazení. Pokud jej budeme používat bez V-Sync, tak se nepodaří odstranit ani roztrhání obrazu, ani získat neplynulost (diskutováno v další kapitole). Nedává tedy moc smysl jej tímto způsobem používat. Přesto na internetu koluje několik článků a diskuzí, které rozšiřují informace o tom, že triple buffering se jakýmsi magickým způsobem dokáže synchronizovat s obnovovací frekvencí. Od toho je však V-Sync. Pokud tedy použijeme variantu V-Sync a triple buffering, získáme vykreslování snímků, které může v některých situacích dokonce vykazovat i nižší input lag než varianta s double bufferingem. Konktrétně jde o fps okolo 40 až 60, kde dvojitý buffer klesne na nepříjemných 30 fps.