Frames per seconde, uitgelegd

Vandaag gaan we in op een van de meest gestelde vragen die we zien over PC gaming: hoeveel frames per seconde heb je nodig? Moet je gamen met dezelfde framerate als de maximale refresh rate van je monitor, zeg 60 FPS op een 60 Hz monitor, of is er een voordeel om games te spelen met een veel hogere framerate dan je monitor kan weergeven, zeg, 500 FPS?

Om deze vraag te beantwoorden, moeten we een beetje praten over hoe een GPU en display samenwerken om frames naar je oogballen te sturen, en hoe technologieën zoals Vsync functioneren.

Maar het komt erop neer dat het uitvoeren van games met extreem hoge framesnelheden, ver boven de verversingssnelheid van je monitor, zal leiden tot een responsievere game-ervaring met een lagere waargenomen invoerlatentie. Dat is het antwoord op de vraag voor degenen die niet tot het einde willen wachten. Laten we het nu hebben over het waarom.

Editor’s Note: Deze functie werd oorspronkelijk gepubliceerd op 2 augustus 2018. Het is vandaag net zo relevant en actueel als toen, dus we hebben het gebumpt als onderdeel van ons #ThrowbackThursday-initiatief.

Laten we aannemen dat we een monitor hebben met een vaste verversingsfrequentie van 60 Hz. Met andere woorden, de monitor ververst zijn beeldscherm elke 1/60e van een seconde, of elke 16,7 ms. Wanneer we een spel spelen, is er geen garantie dat de GPU in staat is om elk frame in precies 16,7 milliseconden te renderen. Soms kan het 20 ms duren, soms 15 ms, soms 8 ms. Dat is de variërende aard van het renderen van een spel op een GPU.

Met deze variërende rendersnelheid, is er een keuze in hoe elk gerenderd frame wordt doorgegeven aan de monitor. Het kan het nieuwe frame aan het beeldscherm doorgeven zodra het volledig is gerenderd, beter bekend als het spel uitvoeren met “Vsync” of verticale sync uit, of het kan wachten tot het beeldscherm klaar is om te vernieuwen voordat het nieuwe frame wordt verzonden, beter bekend als “Vsync aan”.

Vsync uit

Het gebruik van de eerste methode, Vsync uit, veroorzaakt tearing. Dit komt omdat een beeldscherm niet het hele beeld onmiddellijk kan bijwerken, maar regel voor regel, meestal van de bovenkant van het beeldscherm naar de onderkant. Tijdens dit proces kan een nieuw frame klaarkomen van de GPU, en omdat we geen Vsync gebruiken, wordt het frame onmiddellijk naar het beeldscherm gestuurd. Het resultaat is dat halverwege een refresh, de monitor nieuwe gegevens ontvangt, en de rest van de lijnen op het scherm bijwerkt met deze nieuwe gegevens. U krijgt dan een beeld waarbij de bovenste helft van het scherm van het vorige frame is en de onderste helft van het nieuwe, vers beschikbare frame.

Tearing

Afhankelijk van de inhoud die wordt weergegeven, doet deze splitsing tussen nieuwe en oude frames in de ene refresh zich voor als een tear, oftewel een zichtbare lijn tussen de oude en nieuwe frames. Meestal is het het meest merkbaar in snel bewegende scènes waar er een groot verschil is tussen het ene frame en het volgende.

Hoewel Vsync uit leidt tot scheuren, heeft het het voordeel dat een frame naar het beeldscherm wordt gestuurd zodra het klaar is met renderen, voor een lage latency tussen de GPU en het beeldscherm. Houd dat in gedachten voor later.

Vsync aan

De alternatieve manier om een beeld weer te geven is met Vsync aan. In plaats van dat de GPU het nieuwe frame direct naar het beeldscherm stuurt, wordt elk gerendered frame in een buffer geschud. De eerste buffer wordt gebruikt om het frame op te slaan waaraan momenteel wordt gewerkt, en de tweede buffer wordt gebruikt om het frame op te slaan dat het beeldscherm momenteel toont. Op geen enkel moment tijdens het verversen wordt de tweede buffer bijgewerkt, zodat het beeldscherm alleen de gegevens van één volledig gerenderd frame toont, en als gevolg daarvan krijg je geen scheuren door een update halverwege het verversen.

Vsync aan, een kijkje

Het enige moment waarop de tweede buffer wordt bijgewerkt, is tussen de verversingen in. Om ervoor te zorgen dat dit gebeurt, wacht de GPU nadat het renderen van een frame is voltooid, tot het scherm op het punt staat te worden vernieuwd. Dan worden de buffers door elkaar geschud, waarna een nieuw frame wordt gerenderd en het proces zich herhaalt. Soms zijn er meerdere buffers nodig voordat een frame het beeldscherm bereikt, maar dit is in grote lijnen hoe Vsync werkt.

Wanneer uw GPU te traag is om een frame te renderen… ontstaat er stottering

Er zijn twee problemen met Vsync. Ten eerste, als je GPU render rate te traag is om de refresh rate van het beeldscherm bij te houden – stel dat hij maar 40 FPS kan renderen op een 60 Hz beeldscherm – dan zal de GPU geen volledig frame renderen op tijd om het begin van de refresh van het beeldscherm te halen, dus wordt een frame herhaald. Dit veroorzaakt stottering omdat sommige frames maar één keer worden weergegeven, terwijl andere twee keer worden weergegeven.

Vsync aan: 60Hz beeldscherm, 200 FPS

Het tweede probleem treedt op wanneer uw GPU erg snel is en gemakkelijk een frame kan renderen binnen het interval van de verversingssnelheid. Laten we zeggen dat hij kan renderen met 200 FPS en elke 5 ms een nieuw frame produceert, maar dat u een 60 Hz-beeldscherm gebruikt met een verversingsinterval van 16,7 ms.

Met Vsync aan zal uw GPU het volgende weer te geven frame binnen 5 ms voltooien, waarna hij 11,7 ms wacht voordat hij het frame naar de tweede buffer stuurt om op de monitor weer te geven en met het volgende frame begint. Dit is de reden waarom met Vsync aan, de hoogste frame rate die je krijgt overeenkomt met de refresh rate van uw monitor, omdat de GPU is in wezen ‘vergrendeld’ in rendering niet sneller dan de refresh rate.

Nou het is op dit punt dat er veel verwarring is.

We horen vaak dingen als “de GPU vergrendelen op de refresh van mijn monitor met behulp van Vsync is geweldig, want als het sneller rendert dan de refresh rate, zijn die frames verspild omdat de monitor ze niet kan weergeven, en alles wat ik krijg is tearing”. Veel mensen wijzen op energiebesparing door het gebruik van Vsync; uw GPU hoeft niet zo hard te werken, er is geen voordeel aan het draaien op framerates hoger dan de verversingssnelheid van de monitor, dus draai op een vergrendelde FPS en bespaar wat energie.

We kunnen zien waarom mensen tot deze conclusie zouden komen en er zijn enkele stukjes waarheid daar, maar het is niet accuraat in het algemeen. En de reden hiervoor is dat u geen rekening houdt met de tijd waarop de invoer wordt verwerkt, en hoe lang het duurt voordat deze invoer op het scherm verschijnt.

Vsync op inclusief invoer

Om uit te leggen waarom dit het geval is, laten we eens kijken naar het Vsync op-diagram, maar leggen we het diagram over met de invoer van uw muis en toetsenbord, die gewoonlijk elke 1 ms wordt verzameld. Laten we hetzelfde voorbeeld gebruiken waarbij we een GPU hebben die in staat is om te renderen met 200 FPS met een 60 Hz scherm.

Met Vsync en een eenvoudig buffersysteem, begint in deze vereenvoudigde uitleg de GPU met het renderen van een frame dat overeenkomt met uw muisinvoer zodra het die invoer ontvangt, op tijdstip 0. Het duurt dan 5ms om het frame te renderen, en het wacht nog eens 11.7ms voordat het naar de display buffer wordt gestuurd.

Het display heeft dan enige tijd nodig om het te renderen frame te ontvangen en fysiek het display regel voor regel bij te werken met deze informatie.

Vsync bij invoer

Zelfs in het beste geval is er een vertraging van minstens 16,7 ms tussen uw invoer en het moment waarop het beeldscherm u de resultaten van die invoer kan laten zien.

Wanneer we rekening houden met vertraging bij de invoer, CPU-verwerkingstijd enzovoort, kan de vertraging tussen invoer en schermverversing gemakkelijk meer dan 50 ms bedragen.

Vsync uit inclusief invoer, 60Hz-scherm, 200 FPS

Laten we nu eens kijken naar het Vsync uit-diagram. De GPU rendert continu, ongeacht wanneer het beeldscherm wordt vernieuwd, en neemt 5 ms de tijd om uw invoer om te zetten in een volledig frame. Het beeldscherm kan dan onmiddellijk beginnen met het weergeven van dat nieuwe frame, ook al is het misschien maar een deel van dat frame. Het resultaat is dat de wachttijd tussen jouw invoer in het spel en het moment waarop het beeldscherm de resultaten van die invoer kan weergeven, wordt teruggebracht van 16,7 ms tot slechts 5 ms. En er zullen geen extra buffers zijn in echte wereld implementaties; het is zo snel als dat, plus de input lag van je monitor.

En dat is waar je het voordeel krijgt. In dit voorbeeld, draaien op 200 FPS met Vsync uit op een 60 Hz monitor vermindert de input latency tot 5ms, terwijl met Vsync aan, die latency ten minste 16,7ms is, zo niet meer.

Zelfs al is het beeldscherm niet in staat om alle 200 frames per seconde in zijn geheel te laten zien, wat het beeldscherm wel elke 1/60e van een seconde laat zien, is afkomstig van een invoer die veel dichter bij dat frame in de tijd ligt.

Dit fenomeen is natuurlijk ook van toepassing op monitoren met een hoge verversingsfrequentie. Bij 144 Hz, bijvoorbeeld, ziet u veel meer beelden per seconde, zodat u een vloeiender en responsiever beeld krijgt. Maar 200 FPS met Vsync uit in plaats van 144 FPS met Vsync aan, geeft je nog steeds een verschil van 5ms tot meer dan 7ms input latency.

Nu we het over millisecondeverschillen hebben, vraag je je waarschijnlijk af of je dit verschil in games ook echt kunt merken.

Afhankelijk van het soort game dat je speelt, kan het verschil variëren van zeer merkbaar tot helemaal geen verschil. Een snel spel zoals CS: GO met 400 FPS op een 60 Hz-monitor, met een invoerlatentie van hooguit 2,5 ms, zal beduidend sneller reageren op je muisbewegingen dan wanneer je hetzelfde spel zou spelen met 60 FPS en 16,7 ms latentie (of meer).

In beide gevallen toont het beeldscherm je slechts 60 keer per seconde een nieuw frame, dus het zal niet zo vloeiend aanvoelen als op een 144 Hz- of 240 Hz-beeldscherm. Maar het verschil in invoerlatentie is enorm; met 400 FPS krijg je je invoer bijna zeven keer zo snel op het scherm, zo niet meer.

En we hebben deze uitleg niet zomaar uit het niets gehaald, in feite kent Nvidia de beperkingen van Vsync in termen van input latency, dat is waarom ze een alternatief bieden genaamd Fast Sync (AMD’s alternatief wordt Enhanced Sync genoemd). Deze display synchronisatie techniek is als een combinatie van Vsync on en Vsync off, het produceren van het beste van beide werelden.

Fast Sync werkt door de invoering van een extra buffer in de Vsync on pijplijn genaamd de laatst gerenderde buffer. Hierdoor kan de GPU doorgaan met het renderen van nieuwe frames in de achterste buffer, overgaand in de laatst gerenderde buffer wanneer deze klaar is. Bij het verversen van het beeldscherm wordt de laatst gerenderde buffer dan naar de voorste buffer geduwd die door het beeldscherm wordt benaderd.

Snelle Synchronisatie / Verbeterde Synchronisatie

Het voordeel hiervan is dat de GPU na het voltooien van een frame niet langer wacht op het verversen van het beeldscherm, zoals het geval is bij Vsync aan. In plaats daarvan blijft de GPU frames renderen, zodat wanneer het beeldscherm een frame gaat openen aan het begin van de verversingsperiode, dat frame dichter bij het verversingsvenster is gerenderd. Dit vermindert de invoerlatentie. Maar in tegenstelling tot wanneer Vsync uit staat, levert Fast Sync een voltooid frame aan het begin van elke refresh, in plaats van het frame meteen naar het scherm te pushen, en het is deze techniek die tearing elimineert.

Fast Sync is alleen functioneel wanneer de framerate hoger is dan de refresh rate van het scherm, maar het slaagt er wel in om een meer responsieve spelervaring te bieden zonder tearing. En natuurlijk heeft AMD een equivalent genaamd Enhanced Sync.

Hopelijk heeft deze uitleg een aantal van uw vragen beantwoord over waarom het draaien van een spel boven de maximale verversingsfrequentie van uw monitor een meer responsieve spelervaring oplevert, en waarom de mogelijkheid om spellen met hogere framesnelheden te draaien altijd een voordeel is, zelfs als het lijkt dat uw monitor er geen voordeel uit kan halen.

Een laatste opmerking: we hebben het hier niet gehad over adaptieve synchronisatietechnologieën zoals G-Sync en FreeSync, en dat komt omdat we het meestal hebben gehad over het draaien van games boven de maximale verversing, waar adaptieve synchronisatie niet van toepassing is. Er zijn veel verschillende synchronisatie methoden, maar adaptieve sync is heel anders dan Vsync en Fast Sync waar we het over hebben gehad, en is, althans voor deze discussie, niet echt relevant.

Verder lezen
  • De beste gaming-monitoren
  • FreeSync 2 Uitgelegd
  • De beste grafische kaarten 2018
Shopping Shortcuts
  • Radeon RX 570 op Amazon, Newegg
  • Radeon RX 580 op Amazon, Newegg
  • GeForce GTX 1060 6GB op Amazon
  • GeForce GTX 1070 Ti op Amazon, Newegg
  • GeForce RTX 2070 op Amazon, Newegg
  • GeForce RTX 2080 op Amazon, Newegg
  • GeForce RTX 2080 Ti op Amazon, Newegg

Masthead credit: Foto door Jakob Owens

Articles

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.