VSync, FreeSync, FastSync, CPU/GPU Sync, Engine-Lag, Reaktionszeit, …

30 min

24.8.2017

sync

Frage an einen Hobby-CS:GO-Spieler: »Aktivierst du eigentlich VSync?« – »#NeverSync!«

Bei ver­mut­lich kei­ner an­de­ren Gra­fik­op­ti­on gibt es so vie­le Strei­tig­kei­ten und Fehl­in­for­ma­ti­on­en. Dies­be­züg­lich sind in letz­ter Zeit fri­sche Va­ri­an­ten und über­zeu­gen­de Al­ter­na­ti­ven auf­ge­taucht. Doch wo­zu braucht man das über­haupt al­les und wie funk­tio­niert es? Wo ent­steht In­put-Lag und wel­che Op­ti­on passt am bes­ten zu den je­wei­li­gen An­for­de­run­gen? Ge­nau hier­über soll es in den nächs­ten Ab­schnit­ten mög­lichst de­tail­liert und be­bil­dert ge­hen.

Inhaltsverzeichnis

Warum VSync?

»Na we­gen Tearing!« dürf­te sich der ein oder an­de­re schon den­ken. Dies be­deu­tet, dass das Bild förm­lich »zer­reißt«, da meh­re­re Stü­cke ver­schie­de­ner Frames in­ner­halb ei­nes Mo­ni­tor-Re­fresh-Zy­klus ge­zeich­net wer­den.

jc3tears
Ohne VSync treten hier an vier Stellen des Bildes »Risse« auf (nachgestellte Szene).

»Doch wie­so ent­steht dies über­haupt erst? Wer zer­schnip­selt da un­se­re Bild­chen?« ist ei­ne sehr gu­te Fra­ge. Hier­zu soll­ten wir uns zu­nächst ein­mal et­was ver­ein­facht an­se­hen wie GPU und Dis­play zu­sam­men­ar­bei­ten – oder eher wie sie dies nicht tun. Sei der Puf­fer im Vi­deo­spei­cher in zwei Stü­cke auf­ge­teilt, so nen­nen wir ei­nen den Front- und den an­de­ren den Back­buf­fer. Im vor­de­ren wird das Bild für den Mo­ni­tor ge­le­sen, dies ge­schieht Zei­le für Zei­le (und dar­in Pi­xel für Pi­xel), und im hin­te­ren kann die Gra­fik­kar­te das nächs­te Bild be­rech­nen. Doch die bei­den ha­ben kei­ne fes­te Po­si­ti­on, viel­mehr wird durch Adres­sum­be­nen­nun­gen aufs Neue fest­ge­legt wer wer ist. Die­ses »Swap­pen« fin­det oh­ne VSync je­doch so­fort statt, al­so wenn die GPU ei­nen Frame voll­stän­dig be­rech­net hat, so­dass sie di­rekt an ei­nem neu­en Bild wei­ter­rech­nen kann. Dies hat jetzt aber zur Fol­ge, dass der Bild­schirm mit­ten wäh­rend der Dar­stel­lung ei­nen neu­en, an­de­ren Frame er­hält und die­ser ge­ge­be­nen­falls völ­lig un­ter­schied­lich zum vor­he­ri­gen aus­se­hen kann. Die­sen har­ten Über­gang nimmt man letzt­lich als Screen-Tearing war.

Links der Monitor, rechts die beiden Buffer im VRAM (Frontbuffer markiert). Zum Animationsstart die Maus hinüberfahren.

Man kann die­se Ar­te­fak­te auch nicht eli­mi­nie­ren, wenn man die Gra­fik­kar­te mit ei­nem FPS-Li­mit dros­selt und nun nicht im­mer di­rekt die Puf­fer um­be­nannt wer­den. Denn selbst wenn sie ge­nau­so schnell wie eu­er Dis­play ope­riert weiß die GPU nicht wann ein Re­fresh be­en­det ist und ihr er­hal­tet je­weils ei­nen un­schö­nen Riss. Die­se sind nun ver­mut­lich so­gar noch häss­li­cher als vor­her, da sie im­mer an un­ge­fähr der glei­chen Stel­le auf­tau­chen wer­den.

Erst wenn die Frames pro Se­kun­de un­ter die Bild­schirm­fre­quenz fal­len wird es Mo­men­te oh­ne Zer­rei­ßen ge­ben, ein­fach da­durch, dass ein Frame jetzt län­ger ge­zeigt wird als der Mo­ni­tor für ei­nen Re­fresh be­nö­tigt. Da nun pro Zeit­in­ter­vall deut­lich we­ni­ger un­ter­schied­li­che Bil­der an­ge­zeigt wer­den, sinkt zu­dem die Ge­samt­zahl der Dar­stel­lungs­feh­ler. Das trägt na­tür­lich nicht ge­ra­de zu flüs­si­gem Spie­len bei.

Die FPS sind links identisch zum Hertzwert des Displays und niedriger auf der rechten Seite.

Oh­ne VSync er­hofft man sich das di­rek­tes­te Spiel­ge­fühl, al­so wie sieht es jetzt mit der La­tenz aus? Da das Bild so­fort den hin­te­ren Puf­fer »ver­lässt«, al­tert es bei der GPU nur um sei­ne Frame­time, al­so die Zeit, wel­che für das Ren­dern be­nö­tigt wird. Bei 50 fps mit äqui­di­stan­ten Bil­dern hat je­des ei­ne Be­rech­nungs­dau­er von ei­ner fünf­zigs­tel Se­kun­de, al­so 20 ms. In der Rea­li­tät dau­ern je­doch kei­ne zwei Frames gleich lan­ge, wes­halb man oft­mals statt den FPS (von zum Bei­spiel FRAPS nur über den Durch­schnitt meh­re­rer Frames re­prä­sen­ta­tiv) eben je­ne Frame­times (pro Bild ein Wert) be­vor­zugt be­trach­ten will, um da­mit ein­schät­zen zu kön­nen, ob be­stimm­te Hard­ware zu­frie­den­stel­lend kon­sis­tent ar­bei­tet. Letzt­lich kann man die­se Va­ri­anz aber kaum be­ein­flus­sen. Als Al­ter­na­ti­ve re­du­zie­ren man­che E-Sport­ler ein­fach die Auf­lö­sung oder den De­tail­grad des Spiels, um so letzt­lich mehr Bil­der her­aus­quet­schen zu kön­nen, was wie­der­um die Frame­times – al­so die Ver­zö­ge­rung – im Ge­ne­rel­len ver­rin­gert.

Al­ler­dings spielt hier auch der Mo­ni­tor ei­ne ent­schei­den­de Rol­le. Ein Bild­schirm mit 50 Hz er­neu­ert ei­nen Pi­xel nur je­weils al­le 20 ms, al­so kann ein Frame noch­mals rund 20ms al­tern, bis er über­zeich­net wird. Denn selbst bei Frame­times von ei­ner Mil­li­sek­un­de wer­den die nächs­ten Bild­schnip­sel erst an 19 an­de­re Po­si­tio­nen des Dis­plays plat­ziert. Die­se sind dann bei er­schei­nen na­tür­lich brand­neu, durch die lang­sa­men 50 Hz da­für we­ni­ger groß prä­sent.

Der Monitor links ist doppelt so schnell wie der andere, somit bleiben rechts die älteren Frames zweimal länger zu sehen und man muss doppelt so lange auf neue Informationen in diesem Bildbereich warten.

VSync

Da­mit die (ver­ti­ka­le) Bildsynchro­ni­sa­ti­on über­haupt klap­pen kann, darf die Gra­fik­kar­te nie schnel­ler ar­bei­ten als das Dis­play. Zu­dem muss sie jetzt mit dem Buf­fer-Swap war­ten, bis der vor­de­re Puf­fer kom­plett ge­le­sen wur­de. Ist die GPU al­so po­tent ge­nug, be­rech­net sie den fol­gen­den Frame im Back­buf­fer und kann dann En­er­gie spa­ren so­lan­ge der Bild­schirm für den nächs­ten Re­fresh noch nicht be­reit ist. Nun wird ge­tauscht und der Gra­fik­pro­zes­sor kann den »neu­en« Back­buf­fer be­ar­bei­ten. So­mit wird Tearing kom­plett be­sei­tigt und man hat ein ge­schmei­di­ge­res Er­leb­nis. Dar­über hin­aus wird je­der ge­ren­der­te Pi­xel auch an­ge­zeigt und die Gra­fik­kar­te haut nicht mehr un­kon­trol­liert ih­re as­tro­no­misch ho­hen FPS-Wer­te raus.

An­de­rer­seits, was pas­siert denn wenn sie bei an­spruchs­vol­len Ti­teln in UHD und ma­xi­ma­len De­tails mal nicht mit­hal­ten kann? Dann sieht es mit VSync näm­lich nicht mehr so ro­sig aus. Soll­te der Mo­ni­tor mit ei­nem Dar­stel­lungs­zy­klus durch sein, der Back­buf­fer aber noch nicht fer­tig ge­füllt sein, so wird (um Bild­feh­ler zu ver­hin­dern) der GPU ein wei­te­rer Zeit­schlitz ge­ge­ben und ein­fach das­sel­be Bild ein wei­te­res Mal dar­ge­stellt. Hier­durch ver­dop­pelt sich die Frame­time (und der Lag) di­rekt, selbst wenn die Gra­fik­ein­heit nur ei­ne Mil­li­se­kun­de mehr ge­braucht hät­te. Zu­dem muss sie die rest­li­che Zeit des Re­fresh-Zy­klus ab­war­ten und kann nicht ein­fach das nächs­te (an­spruchs­vol­le) Bild »vor­be­rei­ten«. So fällt man im schlimms­ten Fall bei ei­nem 60-Hz-Mo­ni­tor dau­er­haft auf 30 fps zu­rück, ob­wohl die GPU pro Frame viel­leicht nur um die 20 ms Re­chen­zeit be­nö­tigt – al­so 50 Bil­der die Se­kun­de oh­ne VSync schaf­fen wür­de.

Mit VSync gibt es nur noch vollständige Bilder, da aber der #895762-farbige Frame in einem Durchgang nicht ganz fertiggestellt werden kann, sieht man den vorherigen der Farbe #6D0000 zwei Mal hintereinander. (Die dünne Linie zeigt auf die aktuell bearbeitete Zeile.)

VSync und die Swap Chain

Be­vor ihr jetzt die Op­tio­nen öff­net und VSync wie­der de­ak­ti­viert sei noch ge­sagt, dass dies bei den meis­ten Spie­len nicht so ab­lau­fen wird! Un­ter Di­rec­tX (was ja noch am häu­figs­ten ver­wen­det wird) kommt ei­ne so­ge­nann­te »Swap Chain« zum Ein­satz. Ist die­se nur zwei Buf­fer lang, ist das äqui­va­lent zur Dop­pel­puf­fe­rung oben. In der Mehr­heit der Ti­tel be­steht sie je­doch aus drei Glie­dern, man­che las­sen es euch so­gar ein­stel­len. Ei­ne Swap-Chain mit drei Puf­fern wird in den Op­ti­on meist Tri­ple­buf­fe­ring ge­nannt, al­ler­dings ist der Na­me ei­gent­lich schon in OpenGL be­legt. Lasst euch da­von al­so nicht ver­wir­ren.

Durch den zu­sätz­li­chen Platz er­öff­net sich jetzt end­lich die Mög­lich­keit an­statt des War­tens da­mit zu Be­gin­nen in den letz­ten Buf­fer zu schrei­ben. Soll­te die Gra­fik­kar­te al­so wie schon oben knapp län­ger be­nö­ti­gen als der Zy­klus ei­nes Bild­auf­baus, so kann im zwei­ten Durch­gang die über­schüs­si­ge Zeit mit »vor­be­rei­ten« ver­bracht wer­den. Da­mit wird nun in der nächs­ten Run­de ge­nü­gend Vor­ar­beit ge­leis­tet sein, um das Bild fer­tig­stel­len zu kön­nen und nicht wie­der auf die hal­ben FPS zu­rück­zu­fal­len. Bei 25 ms er­reicht man al­so bei­spiels­wei­se selbst 40 fps auf 60 Hz, um je­doch wei­ter­hin Screen Tearing zu ver­hin­dern, muss hier­bei je­des drit­te Bild dop­pelt an­ge­zeigt wer­den. Zwei Frames wer­den al­so für 1/60 Se­kun­de an­ge­zeigt und da­nach ein drit­ter für 2/60 = 1/30 Se­kun­de. Die­ses leich­te Stot­tern wird vie­le Leu­te ner­ven, die La­tenz liegt nun aber zwi­schen 1/30 s und 1/40 s statt den de­fi­ni­ti­ven 1/30 s bei dop­pel­ter Puf­fe­rung.

Zur besseren Übersicht ist nun der vordere Puffer immer ganz links und die Frames »rutschen« von rechts her durch. Keines der Bilder wird schneller gerendert als der Monitor für einen Refresh benötigt. Während jedoch das #ABDA5A-farbene ein weiteres Mal angezeigt werden muss, um den Frame der Farbe #6D0000 zu finalisieren, kann die Grafikeinheit in der restlichen Zeit am #895762-farbigen beginnen und braucht letztlich das #6D0000-Bild selbst nur einmal am Display ausgeben.

Aber Ach­tung Mä­dels, es kommt nicht nur auf die Län­ge an! Soll­te die GPU näm­lich wie­der mehr Bil­der pro Se­kun­de schaf­fen, so wer­den bei­de Back­buf­fer »zu schnell« ge­füllt und die Gra­fik­kar­te ruht er­neut. Da­bei bringt es zu­sätz­li­chen Lag der Län­ge ei­nes Re­freshs mit sich. Nichts­des­to­trotz, mit der voll­ge­la­de­nen, lan­gen Schlan­ge ist man be­reit für den Här­te­fall, soll­te un­ser gu­tes Stück al­so mal vor ei­ner An­ge­le­gen­heit ste­hen, die et­was mehr Saft ver­braucht, so hilft die Re­ser­ve. Und bei min­der an­spruchs­vol­len, fol­gen­den Auf­ga­ben wird wie­der we­ni­ger her­aus­ge­schos­sen als neu ent­steht und je­der kann oh­ne Aus­set­zer be­frie­digt wer­den.

Der #895762-Frame dauert fast zwei Bildwechsel zur Berechnung. Da die Puffer davor gefüllt sind und die nachfolgenden Frames wieder schneller rendern, bekommt man am Monitor hiervon nichts mit.

Adaptive VSync und Dynamic VSync Control

Was ist nun, wenn man die Mi­kro­ruck­ler von VSync über­haupt nicht aus­ste­hen kann, auf al­le Fäl­le bei mehr GPU-FPS als Dis­play-Hertz aber trotz­dem kein Tearing se­hen will. Ent­we­der man rennt heu­lend zu Mut­ti oder man schal­tet VSync dy­na­misch an und aus (emp­foh­le­ne Op­ti­on der bei­den Mög­lich­kei­ten). Bei NVIDIA kann man da­her im Trei­ber für VSync die Op­ti­on »Ad­ap­tiv« wäh­len und Ra­de­on­Pro für AMD-Kar­ten be­herrscht die »Dy­na­mic VSync Con­trol«. Bis auf den Na­men gibt es kei­nen Un­ter­schied. Bei ei­ner Bild­schirm­wie­der­hol­ra­te von zum Bei­spiel 60 Hz ak­ti­vie­ren bei­de V­Sync, so­lan­ge die Gra­fik­kar­te auch 60 fps pro­du­zie­ren kann. Soll­te dies nicht mehr mög­lich sein, wird VSync ein­fach so­lan­ge de­ak­ti­viert, bis es wie­der 60 fps wer­den.

Da der Frame der Farbe #895762 auch hier wieder mehr Zeit benötigt, wird #6D0000 länger angezeigt, diesmal tauschen die Buffer jedoch während des Lesens und so entsteht nahe dem oberen Rand ein Tear. Selbst der nächste Frame führt noch zu einem winzigen Tear, da er die »verlorene Zeit« nicht komplett wiedergutmachen kann.

Maximum Frame Latency

Nicht nur zwi­schen Gra­fik­kar­te und Dis­play wird ein Puf­fer be­nö­tigt, son­dern auch von der CPU zur GPU. Meist auch »Ma­xi­mum Pre-Ren­de­red Frames« (NVIDIA), »Flip Queue Si­ze« (AMD) oder »CPU/GPU Syn­chro« (zum Bei­spiel Track­Ma­nia) ge­nannt, be­schreibt es die An­zahl der in Di­rec­tX von der CPU vor­be­rei­te­ten Bil­der, be­vor die­se zum Ren­dern an die GPU wei­ter­ge­ge­ben wer­den. Mit ei­nem Wert von über eins kann hier nun der Pro­zes­sor (so­fern er schnell ge­nug ar­bei­tet) die Frames zu­rück­hal­ten und sich wie schon die GPU mit ih­rer Swap-Chain ei­nen wort­wört­li­chen Puf­fer ver­schaf­fen. Ty­pi­scher­wei­se liegt die­ser Wert bei drei, für die rei­ne Vi­deo­wie­der­ga­be lohnt sich aber auch ein hö­he­rer Wert, um noch stär­ke­re Schwan­kun­gen kom­pen­sie­ren zu kön­nen. Bei in­ter­ak­ti­ven Spie­len möch­te man das Er­hö­hen der La­tenz na­tür­lich ver­mei­den, um aber ei­nen Per­for­man­ce­ver­lust zu ver­hin­dern, ist die Funk­ti­on es­sen­ti­ell (be­son­ders auf Mul­ti-GPU-Sys­te­men).

Gleich­zei­tig könn­te solch ei­ne sehr mäch­ti­ge Ein­stel­lung miss­braucht wer­den, in­dem die­se in ei­nem Bench­mark­pro­gramm – bei je­nem man eben nicht ein­fach die Ka­me­ra schwen­ken kann, um den Lag zu spü­ren – zu grö­ße­rer Län­ge for­ciert wird. Bei ei­nem ein­zel­nen Gra­fik­chip wür­de ein noch hö­he­rer Wert ge­ne­rell nur et­was bes­se­re Mi­ni­mums lie­fern, hät­te aber NVIDIA bei Mul­ti-GPU-Sys­te­men über ih­re tol­len Trei­ber ei­nen ex­trem ho­hen Wert er­zwun­gen, um so die Leis­tungs-Ska­lie­rung zu ver­schö­nern, hät­te Mi­cro­soft das doch schnellst­mög­lich un­ter­bin­den müs­sen. Aber wir wol­len ja hier nie­man­den schlecht­re­den, das durch ei­nen si­gnier­ten Trei­ber mög­li­che Ma­xi­mum ist seit­her wohl ein­fach nur zu­fäl­lig auf vier Frames be­schränkt wor­den – von mir da­für 3 ½ von 4 voll­an­ge­bun­de­nen Ster­ne.

mafia
Mafia II – powered by NVIDIA.

In ih­rer Ge­samt­heit ist solch ei­ne Pipe­line recht um­fang­reich und seit DX 12 mit »Asyn­chro­nous Com­pu­te« scheint an man­chen Stel­len et­was an­ders ab­zu­lau­fen und OpenGL, be­zie­hungs­wei­se Vul­kan wer­den wie­der­um un­ter­schied­li­che Im­ple­men­tie­rung­en bie­ten. Letzt­lich wer­den die Ent­wick­ler in der Game-En­gi­ne ei­nen fes­ten Kom­pro­miss vor­ge­ben, zwi­schen der Ak­tua­li­tät der Maus- oder Tas­ta­tu­r­in­puts und ei­ner Ver­hin­de­rung von ver­ein­zel­ten Ruck­lern, wes­halb wir hier nicht zu tief ins De­tail ge­hen wer­den.

Es sei aber noch ge­sagt, dass das Puf­fern zur »In­ter­po­la­ti­on« nö­tig ist. Sprich, in ei­nem mo­der­nen Spiel muss ent­schie­den wer­den, mit wel­cher Ra­te es sich lohnt den spiel­in­ter­nen Zu­stand zu ak­tua­li­sie­ren und da­mit bei­spiels­wei­se die Häu­fig­keit der Phy­sik- und Ani­ma­ti­ons­be­rech­nun­gen zu li­mi­tie­ren. Will man aber nach­her nicht als schlam­pi­ger Ent­wick­ler da­ste­hen, soll­te man kei­nes­falls die ma­xi­ma­le Bild­ra­te hier­auf be­schrän­ken! Um den Spie­lern trotz­dem ho­he FPS zu er­mög­li­chen, wer­den so bei­spiels­wei­se Ani­ma­tio­nen in­ter­po­liert. Doch wie bei der Zwi­schenbild­be­rech­nung eu­res Fern­seh­ge­räts be­nö­tigt man da­für min­des­tens zwei Wer­te. Der Pro­zes­sor muss al­so schon ei­nen wei­te­ren Ani­ma­ti­ons­schritt be­rech­net ha­ben, be­vor In­ter­po­la­tio­nen für frü­he­re Frames statt­fin­den. Da­mit wer­den selbst tau­sen­de Bil­der pro Se­kun­de kei­ne Ver­rin­ge­rung des In­put-Lags be­wir­ken, so­fern die En­gi­ne nur mit bei­spiels­wei­se 60 Hz ar­bei­tet. Mo­ni­to­re mit über 60 Hz be­kom­men hier al­so le­dig­lich flüs­si­ge­re Ani­ma­tio­nen.

Des Wei­te­ren wird die feh­len­de Fle­xi­bi­li­tät ner­vig, soll­te die Frame­ra­te un­ter die Re­chen­fre­quenz der Game En­gi­ne fal­len. Zum Schutz der Ent­wick­ler möch­te ich hier kei­ne Na­men er­wäh­nen, es ist aber un­schön, die Ka­me­ra­be­we­gung an letz­te­re zu kop­peln. Da mei­ne HD 7870 an man­chen Stel­len in Fric­tio­nal Ga­mes‘ SO­MA nicht ganz 60 fps schafft, woll­te ich mit flüs­si­ge­ren 50 Hz @ 50 fps spie­len. Doch Pus­te­ku­chen, die Ka­me­ra wird hier mit fi­xen 60 Hz ge­up­datet. Sprich, selbst mit ex­akt 20 ms lan­gen Frames hat das Bild ge­stot­tert, da zehn Mal in der Se­kun­de ei­nes die­ser Ka­me­ra­po­si­ti­on­en über­sprun­gen wur­de. Sel­bi­ges dürf­te auch er­neut bei den Ani­ma­tio­nen pas­sie­ren, bis da­hin war ich aber schon wie­der bei 60 und auf hun­dert­acht­zig.

spintires
Sechzehn Mal dürft ihr raten, woran die Physik in SpinTires gekoppelt ist.

Enhanced Sync und FastSync

Die­se Tech­no­lo­gien sind die neus­ten Ein­fäl­le der hin­ter­häl­ti­gen Gra­fik­kar­ten­her­stel­ler, um euch zum Kauf ei­nes neu­en Pro­duk­tes zu ver­lo­cken. So funk­tio­nie­ren sie je­weils auch nur mit den bei­den neus­ten Ge­nera­tio­nen – Fast­Sync auf Max­well und Pas­cal, En­han­ced Sync bei Po­la­ris und Ve­ga. *Sar­kas­mus aus.*

Up­date: Seit dem Ad­re­na­lin-Trei­ber klappt „Er­wei­ter­te Syn­chro­ni­sie­rung“ auch auf mei­ner Stein­zeit­kar­te, da­mit gibt es al­so wohl die­ses Fea­ture auf al­len Ra­de­ons.

Auch wenn de­ren Funk­ti­ons­wei­se nicht ex­akt die­sel­be ist wie Open­GLs Trip­le-Buf­fer­ing, so ent­steht doch ein ver­gleich­ba­rer Ef­fekt. Noch­mal zur Er­in­ne­rung, Di­rec­tX nutzt die Drei­fach­puf­fe­rung mit VSync für das ge­schmei­digs­te Er­leb­nis und Frames be­hal­ten im­mer ih­re Rei­hen­fol­ge bei (First-In-First-Out). Mit OpenGL kön­nen die bei­den Back­buf­fer hin­ge­gen die Po­si­ti­on tau­schen. Wur­den nun bei­de ge­füllt, so wird das Bild des äl­te­ren ver­wor­fen und be­gon­nen den nächs­ten zu zeich­nen. Durch die­ses Weg­schmei­ßen ar­bei­tet die GPU wie­der un­un­ter­bro­chen, da aber trotz­dem im­mer in ei­nem Back­buf­fer noch ein voll­stän­di­ges Bild liegt, kann ein riss­frei­er Swap in den Front­buf­fer statt­fin­den.

Die beiden Backbuffer rechts rechnen bei einer schnellen Grafikeinheit viele Frames »umsonst«. (Das aktuellste Bild ist umrahmt.)​

Fast- und En­han­ced Sync »mo­di­fi­zie­ren« nun ein­fach die First-In-First-Out-Queue, um die­ses Er­geb­nis eben­falls in DX-Ti­teln im Voll­bild er­zie­len zu kön­nen. Ein­zi­ger Un­ter­schied bei AMDs Va­ri­an­te ist je­doch, dass un­ter der Bild­schirm­wie­der­hol­fre­quenz VSync aus­ge­schal­tet wird. Zu­sam­men mit der »Frame Ra­te Tar­get Con­trol« (AMDs Frame­time-Be­gren­zer) könn­te man sich im Trei­ber al­so selbst ei­ne Dy­na­mic VSync Con­trol zu­sam­men­bas­teln. Bei den an­de­ren bei­den Tech­ni­ken ver­hält es sich hier iden­tisch zum »an­de­ren« Trip­le-Buf­fe­ring.

Aber Mo­ment, wenn es bei Wer­ten un­ter der Re­fresh­ra­te mit VSync zu Bild­stot­tern kommt, pas­siert dann nicht auch das­sel­be beim Über­schrei­ten? Die kur­ze Ant­wort: Ja. Ein ak­tu­el­les AAA-Spiel wird kaum so wie oben in der ani­mier­ten Vek­tor­gra­fik mit der vier­fa­chen Ra­te eu­res Mo­ni­tors lau­fen. Sind die Frame­times hin­ge­gen kein ganz­zah­li­ger Tei­ler, so ent­steht ei­ne un­re­gel­mä­ßi­ge Bild­aus­ga­be. Be­son­ders ex­trem wird es je knap­per sich die FPS über der Wie­der­hol­fre­quenz be­fin­den.

Die Zeit ver­läuft von links nach rechts und die dün­nen, ver­ti­ka­len Li­ni­en in der Ab­bil­dung be­schrei­ben den Be­ginn ei­nes Re­fresh-Zy­klus, je­weils in der Far­be des letz­ten kom­plet­ten Frames der GPU (als Recht­eck dar­ge­stellt). Das … Eins, Zwei, … das fünf­te Bild wird nun lei­der et­was zu spät fer­tig­ge­stellt und so muss auf das vor­he­ri­ge, deut­lich äl­te­re zu­rück­ge­grif­fen wer­den – der ge­stri­chel­te, ho­ri­zon­ta­le Bal­ken zeigt das Al­ter an. Da zu­dem der nächs­te Frame in­ner­halb des ak­tu­el­len In­ter­valls ge­ren­dert wer­den kann, wird Num­mer 5 nicht mehr be­nö­tigt und ver­wor­fen. Des­sen Über­sprin­gen macht sich aber letzt­lich als klei­ner Ruck­ler be­merk­bar.

Bei VSync mit Dop­pel­puf­fe­rung, wel­ches ja oben­drein die FPS li­mi­tiert, wird die Aus­ga­be hin­ge­gen so­gar gleich­mä­ßi­ger, da die GPU nach »zu schnell be­rech­ne­ten« Bil­dern pau­siert und schließ­lich je­des äqui­va­lent alt wer­den lässt.

Zum Ab­schluss des Ab­schnit­tes möch­te ich noch er­wähnt ha­ben, dass En­han­ced Sync und Fast­Sync ei­gent­lich nichts be­son­de­res sind, da auf je­der Gra­fik­kar­te mit dem Wech­sel zum (rand­lo­sen) Fens­ter­mo­dus der iden­ti­sche Ef­fekt durch den »Desk­top Win­dow Ma­na­ger« in Win­dows er­zwun­gen wird.

Reaktionszeit vs Display-Lag

In mei­nen Ani­ma­tio­nen ha­be ich bis­her im­mer die Re­ak­ti­ons­zeit der Bild­schirm­pi­xel aus­ge­las­sen. Soll je­doch ein Pi­xel ei­nes LCD-Pa­nels (aus drei Sub­pi­xeln be­stehend – Rot, Grün, Blau) ei­nen neu­en Farb­wert an­zei­gen, so müs­sen hier­für die Kris­tal­le ge­dreht wer­den, um das Licht auf die ge­wünsch­te Hel­lig­keit ab­zu­schwä­chen. Dies dau­ert je­doch sei­ne Zeit und durch die un­ter­schied­li­che Art des Ro­tie­rens geht es mit TN ge­ne­rell schnel­ler als bei IPS. Könn­te man al­so ei­nen Mo­ni­tor ein­frie­ren, so se­he man an ei­ner Stel­le des Dis­plays ei­nen sanf­ten Über­gang zwi­schen zwei auf­ein­an­der­fol­gen­den Re­freshs.

Die­se Re­ak­ti­ons­zeit ist al­so letzt­lich ein In­di­ka­tor da­für, wie scharf der Bild­schirm in der Be­we­gung aus­sieht. Bei man­chen Mo­ni­tor­test wird so der Durch­schnitt der Wech­sel von tiefs­tem schwarz zu hells­tem weiß und um­ge­kehrt von weiß zu schwarz ge­mes­sen. Händ­ler be­wer­ben ih­re Dis­plays je­doch nicht mit die­ser Schwarz/Weiß-Schalt­zeit, son­dern mit der »GTG« (grey-to-grey Zeit). Bei je­ner wird der Über­gang zwi­schen zwei zehn Pro­zent ent­fern­ten Grau­tö­nen er­mit­telt, hier bleibt al­so ein ge­wis­ser Spiel­raum, um sich das Best-Ca­se-Sze­na­rio her­aus­pi­cken und schließ­lich auf die Ver­pa­ckung dru­cken zu kön­nen.

Es sein noch er­wähnt, dass Over­dri­ve und Back­light-Stro­bing exis­tie­ren, um die wahr­ge­nom­me­ne Un­schär­fe zu ver­rin­gern. Auf­grund des feh­len­den Be­zugs zum Rest des Ar­ti­kels wer­de ich je­doch nicht wei­ter dar­auf ein­ge­hen. »Per­sis­tence« spielt ei­ne wich­ti­ge Rol­le, da­zu fin­de ich aber hof­fent­lich in ei­nem spä­te­ren Bei­trag Zeit.

Viel wich­ti­ger dürf­te da schon der In­put-Lag des Bild­schirms sein. Hier er­gibt sich durch die in­ter­ne Lo­gik, wel­che bei­spiels­wei­se er­mög­licht das Bild zu ska­lie­ren oder die Far­ben an­zu­pas­sen, ei­ne Ver­zö­ge­rung. Zu­dem kann auch ein kom­plet­tes Bild zu­rück­ge­hal­ten wer­den, um da­für zum Bei­spiel ei­nen dy­na­mi­schen Kon­trast zu be­rech­nen (al­ter­na­tiv kann es auch ein­fach auf das fol­gen­de Bild­si­gnal an­ge­wen­det wer­den). Wie schon an­fangs er­wähnt, kann der In­halt des Front­buf­fers nicht so­fort kom­plett an­ge­zeigt wer­den. Statt­des­sen fin­det der Wech­sel von oben nach un­ten statt. Bei ei­ner syn­chro­ni­sier­ten Aus­ga­be mit 50 Hz wird der Pi­xel ganz rechts un­ten so­mit ei­ne zu­sätz­li­che La­tenz von 20 ms ha­ben.

deusex

Das obe­re Bild zeigt wie ein Ne­on-Schild in De­us Ex aus­sieht, wenn man still da­vor steht. Dar­un­ter (nach­ge­stell­te Sze­ne) be­wegt sich JC nach rechts, jetzt wirkt we­gen der Re­ak­ti­ons­zeit der Pi­xel al­les et­was un­scharf (nein, für die meis­te Un­schär­fe ist die Per­sis­tence of Vi­si­on ver­ant­wort­lich) und zu­dem ent­steht ei­ne Sche­rung durch die Dau­er des Bild­ab­tas­tung. Mit der dop­pel­ten Re­fresh-Ra­te wür­de sich letz­te­rer Ef­fekt hal­bie­ren, bei 60 Hz oder we­ni­ger ist es aber gut zu se­hen – ach­tet beim nächs­ten Spiel ein­mal dar­auf oder schaut euch bei­de Aus­wir­kun­gen auf TestU­FO.com an. Für das sta­ti­sche Fa­den­kreuz er­ge­ben sich die­se Feh­ler hin­ge­gen nicht.

Adaptive-Sync

G-Sync (NVIDIA) und Free­Sync (AMD) ver­ei­nen durch ih­re va­ria­ble Bild­wie­der­hol­fre­quenz end­lich das bes­te aus bei­den Wel­ten. Ei­ner­seits wer­den Bil­der un­ver­züg­lich an den Mo­ni­tor wei­ter­ge­ge­ben, auf der an­de­ren Sei­te wer­den sie oh­ne Tearing dar­ge­stellt. Kauft euch das au­gen­blick­lich und wir sind hier­mit fer­tig… oder doch nicht?

Be­trach­ten wir ein­mal wie die bei­den ar­bei­ten. Ha­ben wir ein Ge­rät mit 100 Hz, so be­nö­tigt es 10 ms für die kom­plet­te Ab­tas­tung. Dies ist nun un­ser obe­res Li­mit, je­der Frame schnel­ler als die 10 ms wird au­ßer­halb der G-/Free­Sync-Ran­ge lie­gen. Be­gut­ach­ten wir aber zu­erst das, wo­für sie ge­macht wur­den: zu nied­ri­ge FPS. Als Bei­spiel soll nun die GPU im­mer Frame­times ei­ner Län­ge von über 10 ms lie­fern, bis plötz­lich ein Bild erst nach 12,5 ms (1/80 s) fer­tig­ge­stellt wird, oh nein! Aus Angst vor die­sem Fall be­nö­tig­te man bis­her ein Glau­bens­be­kennt­nis ge­gen­über ent­we­der VSync an oder VSync aus. Hier ist dies aber nicht mehr nö­tig! Merkt jetzt die Ra­de­on-Gra­fik­kar­te (bei AMD), be­zie­hungs­wei­se das über­teu­er­te G-Sync-Mo­dul (bei NVIDIA), dass das Ren­dern des Frames nach ei­nem Hun­derts­tel noch nicht ab­ge­schlos­sen ist, wird der nächs­te Re­fresh hin­aus­ge­zö­gert (je­weils dar­ge­stellt durch den far­bi­gen Hin­ter­grund in der Gra­fik). So ruht der Schirm (Re­ak­ti­ons­zeit ver­nach­läs­sigt) und das vor­he­ri­ge Bild bleibt wei­ter­hin zu se­hen, in un­se­rem Fall für wei­te­re 2,5 ms. Da­nach kann der nächs­te Bild­auf­bau be­gin­nen. Ein Frame wird al­so so lan­ge an­ge­zeigt, wie der nach­fol­gen­de im Back­buf­fer ver­weilt.

Bei ei­ner Be­rech­nungs­dau­er von nun 20 ms (1/50 s) wür­de der Mo­ni­tor das vor­he­ri­ge Bild wie­der 10 ms ab­tas­ten und da­nach 10 ms ru­hen. Und bei 40 ms? 10 – 30? Hier spre­che erst mal nichts da­ge­gen, je­doch »ent­span­nen« sich die Kris­tal­le ei­nes LCDs so­lan­ge sie nicht re­fresht wer­den. Sie dre­hen sich da­her au­to­ma­tisch wie­der in ih­re Ur­sprungs­po­si­ti­on und las­sen mehr Licht hin­durch. Das Bild wird al­so lang­sam hel­ler, bis auf ein­mal der nächs­te Bild­wech­sel star­tet und al­les wie­der leicht dunk­ler wird. Die­se Hel­lig­keits­schwan­kun­gen re­gis­triert man bei zu nied­ri­gen Fre­quen­zen letzt­lich als Flim­mern. Es wird al­so auch ein un­te­res Li­mit be­nö­tigt.

Al­ler­dings schwan­ken die Ren­der­zei­ten von ei­nem Frame auf den nächs­ten (au­ßer­halb von Ear­ly-Ac­cess-Spie­len) ei­gent­lich nie so ein­fach um die dop­pel­te Län­ge, wie es in der Ab­bil­dung be­haup­tet wird. Auf der ei­nen Sei­te ist es da­her nicht schlimm, dass der fol­gen­de Frame die An­zei­ge­dau­er des ak­tu­el­len be­stimmt, an­de­rer­seits kön­nen so schon An­nah­men dar­über ge­macht wer­den, ob viel­leicht bald die FPS aus der Sync-Ran­ge fal­len wür­den. Über­de­cke die­se al­so 50 bis 144 Hz – sprich 20 bis 6,94 ms – soll­ten nicht die ma­xi­mal mög­li­chen 20 ms ab­ge­war­tet wer­den, wenn der vor­he­ri­ge Frame schon 19 ms Ren­der­zeit be­nö­tig­te. Statt­des­sen könn­te das Dis­plays oh­ne pau­sie­ren ein wei­te­res Mal re­fres­hen und das­sel­be Bild er­neut zei­gen, um so­mit das Ar­beits­fens­ter auf 26,94 bis 13,8 ms zu ver­schie­ben.

Dies sei aber nur ein Bei­spiel, we­der AMD noch NVIDIA ge­ben öf­fent­lich an, wie ent­schie­den wird, wann ein früh­zei­ti­ger Neu­auf­bau statt­fin­det und Bil­der auf zwei oder gar mehr Re­freshs auf­ge­teilt wer­den. Man­che der ers­ten G-Sync-Mo­del­le hat­ten bei­spiels­wei­se zu lan­ge Pau­sen zwi­schen den Re­freshs, so­dass sich vie­le Per­so­nen über das dar­aus re­sul­tie­ren­de Fli­ckern be­schwert ha­ben – die Mo­du­le neue­rer Mo­ni­tor be­sit­zen die­ses Pro­blem nicht mehr. Sei­tens AMD wur­de die Funk­ti­on un­ter dem Na­men »Low Frame­ra­te Com­pen­sa­ti­on« per Trei­ber­up­date nach­ge­patch und rea­li­sier­bar mit al­len schon er­schie­ne­nen Free­Sync-Bild­schir­men, so­fern die mi­ni­ma­le Hertz­zahl nicht mehr als die Hälf­te der ma­xi­ma­len be­trägt (ein Ver­hält­nis von 2,5 wird emp­foh­len). Ge­ne­rell wird ein mög­lichst gro­ßer Fre­quenz­be­reich das du­pli­zie­ren er­leich­tern, wäh­rend je­doch bei G-Sync das Dis­play vom Her­stel­ler ei­ne Über­tak­tungs­ein­stel­lung bie­ten muss (wel­ches aber letzt­lich auch nicht je­des Ex­em­plar un­be­dingt pro­blem­los schaf­fen wird), kann ein Free­Sync-Mo­ni­tor nor­mal über­tak­tet und die Ran­ge-Li­mits in bei­de Rich­tun­gen er­wei­tert wer­den.

Dar­über hin­aus funk­tio­niert Free­Sync ne­ben Dis­play­po­rt auch über HD­MI und ge­ne­rell bie­tet es meist mehr An­schlüs­se als das G-Sync-Mo­dul. Da sich auf ei­ner (mo­der­nen) Ra­de­on al­les nö­ti­ge be­fin­det, muss auch kei­ne la­tenz­erzeu­gen­de Kom­mu­ni­ka­ti­on zum Mo­ni­tor her­ge­stellt wer­den (bei NVIDIA ver­liert man le­dig­lich Per­for­mance im Be­reich von et­wa zwei bis drei Pro­zent) und der 200 Eu­ro Preis­vor­teil ist wohl der größ­te Plus­punkt – jetzt müss­te es nur ei­ne RX-Kar­te ge­ben, die sich lohnt zu kau­fen.

Ich könn­te noch über G-Sync HDR und Free­Sync 2 schrei­ben, wenn ich aber auf den Wort­zäh­ler schaue schreit mir die­ser ein lau­tes »NEIN« ent­ge­gen. Er­wäh­nens­wert sei jetzt bloß noch, dass die­se Dis­plays ab ih­rer Höchst­fre­quenz iden­tisch zu äqui­va­len­ten, ge­wöhn­li­chen Ge­rä­ten lau­fen. Das heißt so­mit, dass hier wei­ter­hin V-, Fast- oder En­han­ced Sync ganz un­ab­hän­gig ar­bei­ten. Mei­ne Ab­nei­gung ge­gen letz­te­re ha­be ich schon kund­ge­tan, aber was ist denn mit VSync und dem…

Lag, Laaag, Laaaaaaaaag

Bei ei­ner Um­fra­ge die ich vor über ei­nem Jahr im GS-Fo­rum ge­star­tet hat­te, war für über 56 Pro­zent der VSync-Aus­schal­ter der Haupt­grund die nied­ri­ge­re La­tenz. So be­grenzt auch die Hälf­te nicht die FPS aus ent­we­der Angst vor wie­der­keh­ren­dem Lag oder weil die GPU im­mer lang­sa­mer als der Mo­ni­tor ist oder ih­nen gar selbst im Som­mer so sehr kalt ist und die Strom­re­chung eh von den El­tern ge­zahlt wird

umfrage.webp
Die Gesamtverteilung der VSync-An- und Ausschalter seht ihr hier. Die Gegenfrage wurde hoffentlich schon zufriedenstellend beantwortet.

Ob­wohl ich an man­chen Stel­len schon die La­tenz ein­zel­ner Teil­ge­bie­te er­wähnt hat­te, stellt sich die Fra­ge, wie es im Zu­sam­men­spiel in der Pra­xis aus­sieht. Nach­fol­gend ha­be ich da­her den In­put-Lag aus min­des­tens fünf Durch­läu­fen je­weils ver­schie­de­ner Ein­stel­lun­gen in Coun­ter Strike: Glo­bal Of­fen­si­ve und Alan Wa­ke ge­mes­sen. Die­ser Um­fasst mei­ne Re­ak­ti­ons­zeit, die Maus­la­tenz, Ver­zö­ge­rung durch die CPU (samt GPU-Trei­ber, Gra­fik-API und Game-En­gi­ne) und Gra­fik­kar­te, so­wie die Aus­ga­be­la­tenz (und Pi­xel-Re­ak­ti­ons­zeit) des Bild­schirms. Da al­ler­dings mei­ne ei­ge­ne Re­ak­ti­ons­ge­schwin­dig­keit, die Maus­la­tenz, vie­le Schrit­te der CPU und der Dis­play-Lag (im Durch­schnitt) gleich blei­ben, wer­den die uns in­ter­es­sie­ren­den Stel­len nicht be­ein­flusst.

Be­gin­nen wir mit Coun­ter Strike, hier gibt es in Steams Work­shop ei­ne Map zum Tes­ten der Re­ak­ti­ons­zeit. Ei­ne wei­ße Wand wech­selt die Far­be zu grün und wäh­rend­des­sen star­tet ein Zäh­ler. Durch ei­nen Schuss stoppt man die­sen und die ver­stri­che­ne Zeit wird an­ge­zeigt. Al­so ge­nau das was wir su­chen… wenn es denn funk­tio­niert hät­te. Nach ein paar ko­mi­schen Re­sul­ta­ten ha­be ich mit OBS den Coun­ter auf­ge­nom­men und fest­ge­stellt, dass die­ser zu schnell zählt und als Aus­gleich manch­mal 70 ms hoch­springt. Statt­des­sen wer­de ich al­so im­mer OBS ver­wen­den und im Nach­hin­ein die An­zahl der ein­zel­nen Frames zäh­len.

shot

Als ers­tes wird VSync de­ak­ti­vie­ren und das in­ter­ne FPS-Li­mit ent­fernt. Der Mo­ni­tor läuft mit 60 Hz in Full HD, auf­ge­nom­men wer­den aber 250 fps (da CPU und GPU hier um die ein­tau­send Bil­der pro Se­kun­de schaf­fen) in her­un­ter­s­ka­lier­ten 480 x 270 Pi­xeln (um die CPU nicht zu be­las­ten wird selbst­ver­ständ­lich in »ul­tra­fast« en­co­diert). Als Er­geb­nis kom­men wir auf ei­nen Durch­schnitt von 202,38 ms (zum Ver­gleich, zwölf 60-Hz-Bil­der ent­spre­chen 0,2 s). Dar­aus kön­nen wir schlie­ßen, dass ich noch die Re­ak­ti­ons­schnel­lig­keit ei­nes Drei­zehn­jäh­ri­gen ha­be – na ja, den kin­di­schen Pi­pi-Ka­ka-Hu­mor hab ich ja auch be­hal­ten. Als ein­zi­ger Wert steht er aber recht zu­sam­men­hangs­los dar. Al­so VSync mit Dou­ble-Buf­fe­ring ak­ti­vie­ren (Auf­nah­me­fre­quenz in OBS wur­de auf 120 fps ge­senkt, 60 wä­re hier aber auch ge­nug), bäm, 266,6 ms. Mit Drei­fach­puf­fe­rung, bäm, 283,3 ms – oje. We­nigs­tens sind drei Buf­fer wie er­war­tet um 1/60 Se­kun­de lang­sa­mer, aber schon der Wert für zwei sieht lei­der über­haupt nicht gut aus. Soll­te VSync al­so doch auf den Schei­ter­hau­fen schlech­ter Gra­fik­op­ti­on zu­sam­men mit Tie­fen­un­schär­fe, Chro­ma­ti­scher Ab­erra­ti­on, Mo­ti­on-Blur und dem Vi­gnet­ten-Ef­fekt?

Nein! Der Wert der Ma­xi­mum-Frame-La­ten­cy dürf­te hier ei­ne Rol­le spie­len. Durch die FPS-Be­gren­zung sei­tens VSync wird die­ses Ma­xi­mum dau­er­haft er­reicht, wäh­rend ver­mut­lich an­sons­ten oh­ne Li­mit die CPU die GPU schnellst mög­lich ver­sor­gen will. Und das wer­de ich euch jetzt be­wei­sen. Da­zu muss im Spiel le­dig­lich die Kon­so­le ge­öff­net wer­den und »fps_­max« auf 59.9 ge­setzt wer­den. Wird nun er­neut ge­mes­sen, so sinkt die La­tenz auf un­glaub­li­che 200 ms. Doch wie ist das mög­lich? Durch obi­ges Kom­man­do legt man fest, dass die CPU nur rund al­le 16,694 ms ei­nen neu­en Frame lie­fert, die GPU aber na­tür­lich am liebs­ten schon nach 16,6 ms ein Bild ha­ben möch­te. So wird der Pro­zes­sor kei­ne Frames mehr zu­rück­hal­ten und auch die Gra­fik­kar­te nicht ih­ren drit­ten Buf­fer fül­len. Bei der Dop­pel­puf­fe­rung kann so­gar auf 60 fps li­mi­tiert wer­den und die Zeit bleibt wei­ter­hin nied­rig (203,3 ms). VSync mit Be­gren­zung und kein VSync oh­ne FPS-Cap sind so­mit (im Rah­men der Mess­un­ge­nau­ig­keit) iden­tisch schnell!

Mit neu­er En­er­gie wur­de dann das Cap­ping auch oh­ne VSync ge­tes­tet. Huch, 190 ms? Bes­ser als oh­ne Be­gren­zer? Gleich noch­mal pro­bie­ren… hmn, sel­bes Re­sul­tat. Dann viel­leicht fps_­max 300… ah, 184,8 ms. Hö­he­re Frame­ra­ten brin­gen al­so wei­ter­hin ei­nen (sehr mar­gi­na­len) Vor­teil, aber nur so­lan­ge die ei­ge­ne Hard­ware dau­er­haft mit­hal­ten kann. Ab­seits die­ser Map wür­den die 300 fps bei mir al­so schon nicht mehr er­reicht wer­den und ein nied­ri­ge­res Li­mit wä­re die schnel­le­re Op­ti­on.

Im nächs­ten Schritt soll nun VSync mit ei­nem ex­ter­nen FPS-Cap­per ar­bei­ten. Das im AMD-Trei­ber ent­hal­te­ne »Frame Ra­te Tar­get Con­trol« bei 59 fps, so­wie Ge­Do­Sa­To mit 59,9 fps ha­ben je­doch kei­ne Ver­bes­se­rung ge­gen­über VSync al­lei­ne ge­bracht. Das liegt dar­an, dass bei­de ihr Li­mit erst bei der GPU an­wen­den, die CPU al­so ih­ren Zip­fel trotz­dem be­fül­len wird. Coun­ter Strike woll­te aber eben­so kei­ne ein Frame gro­ße Flip Queue ak­zep­tie­ren (we­der über Ra­de­on­Pro, noch di­rekt per Re­gis­try-Än­de­rung). Erst Ri­vaT­uner brach­te bei 59 fps die er­hoff­te Er­lö­sung: 203,3 ms. Selbst oh­ne VSync ver­bes­ser­te sich der Wert nicht und bei 60 fps mit dop­pel­ge­puf­fer­tem VSync lag der Lag wie­der weit über 0,2 Se­kun­den. Der spiel­in­ter­ne Be­gren­zer bleibt al­so die ers­te Wahl.

Reaktionsvergleich in CS:GO bei 60 Hz

VSync (2 Puffer)267 msVSync (3 Puffer)283 msVSync (2) + fps_max 60203 msVSync (3) + fps_max 59.9200 msVSync aus + fps_max 0202 msVSync aus + fps_max 60190 msVSync aus + fps_max 300185 msVSync (2) + RTSS 59 fps203 msVSync aus + RTSS 59 fps203 msmeine »rohe« Reaktionszeit?165 ms

Üb­ri­gens, vsync­tes­ter.com mel­det mir ei­nen ge­naue­ren Wert mei­nes Dis­plays von rund 60,003 Hz, in den Ra­de­on Set­tings und im Cus­tom Re­so­lu­ti­on Uti­li­ty sind es je­doch glat­te 60,000 Hz, ko­misch.

Zu Be­ach­ten soll­te man al­ler­dings auch, dass bei ei­nem 240-Hz-Dis­play die Un­ter­schie­de in den Ab­stän­den vier­mal ge­rin­ger wer­den. Selbst wenn dort al­so die CPU drei Frames der Län­ge 4,16 ms (1/240 s) puf­fern wür­de, wä­re es kür­zer als ein ein­zel­ner 60-fps-Frame (12,5 ms vs 16,6 ms). Ein schnel­le­rer Mo­ni­tor ist al­so im­mer die bes­te Me­tho­de, um La­ten­zen zu ver­rin­gern.

Be­vor wir mit dem et­was all­täg­li­che­ren Ti­tel be­gin­nen (Kon­so­len­port, gra­fisch An­spruchs­voll [zu­min­dest für mei­ne Se­nio­ren-Gra­fik­ein­heit]), woll­te ich mei­ne Schnel­lig­keit noch in ei­nem On­line-Re­ak­ti­ons­test un­ter Be­weis stel­len; 203,4 ms. In der nor­ma­len Desk­topober­flä­che von Win­dows er­rei­chen wir al­so nicht die Höchst­wer­te von Coun­ter Strike: GO im Full­screen.

Bei Alan Wa­ke geht es ähn­lich zur Sa­che, dies­mal wird auf das Ein­schla­gen ei­nes Blit­zes im Caul­dron La­ke ge­war­tet (er­hellt das gan­ze Bild) und dar­auf­hin ge­sprun­gen (eben­falls über die lin­ke Maus­tas­te). Um dies­mal aber oh­ne Be­gren­zer un­ter 60 fps zu kom­men, wird ei­ne »Vir­tu­al Su­per Re­so­lu­ti­on« von 2560 auf 1440 Pi­xeln ver­wen­det (an der Bench­mark­stel­le herr­schen rund 53 fps). Mit aus­ge­schal­te­tem VSync er­ge­ben sich 223,2 ms und ist es ak­ti­viert, sind es 243,6 ms. Da VSync hier nicht die FPS capt und da­mit kei­nen »Stau« durch Fül­lung al­ler Puf­fer bei CPU und GPU »ver­ur­sacht«, sind die bei­den deut­lich nä­her bei­sam­men. Der Durch­schnitt von 243,6 ms zeigt je­doch nicht die gan­ze Wahr­heit der ver­ti­ka­len Syn­chro­ni­sa­ti­on. Es hat­ten näm­lich je fünf Mes­sun­gen ei­nen Durch­schnitt von 226,4 ms und 260,8 ms, Wer­te im Be­reich von 240 bis 250 Mil­li­se­kun­den wur­den aber nie er­reicht. Die­se Dif­fe­renz von 34,4 ms ver­rät uns jetzt, dass die En­gi­ne selbst wohl mit le­dig­lich 30 Hz ar­bei­tet (auf der Xbox 360 lief der Ti­tel auch nur ma­xi­mal mit 30 fps). Wä­re mei­ne Re­ak­ti­ons­ge­schwin­dig­keit et­was lang­sa­mer, wür­de dies auch oh­ne VSync pas­sie­ren und den Ef­fekt der sin­ken­den La­tenz bei hö­he­ren FPS soll­te man hier nicht er­war­ten. Im­mer­hin weist VSync bei fi­xen 50 fps @ 50 Hz und 18 fps @ 72 Hz ver­gli­chen mit SO­MA kei­ne Mi­kro­ruck­ler auf.

jump

Ge­hen wir ein letz­tes Mal zu 1080p. Oh­ne VSync er­ge­ben sich 197,6 ms bei rund 84 fps, die Vir­tu­al-Su­per-Re­so­lu­ti­on dürf­te vor­hin al­so für et­was La­tenz ge­sorgt ha­ben. An­sons­ten ist die Zeit aber äqui­va­lent zur Per­for­mance in CS:GO. Mit VSync (und da­durch 60 fps) er­ge­ben sich 250 ms. Ob­wohl hier al­so VSync zum »Stau« führt, ent­steht et­was we­ni­ger Lag als in CS. Alan Wa­ke dürf­te der CPU al­so kei­ne so lan­ge Schlan­ge er­lau­ben. Über­ra­schen­der­wei­se wird selbst nach dem Wech­sel in den Fens­ter­mo­dus die Ver­zö­ge­rung nicht grö­ßer (246,6 ms, prak­tisch iden­tisch). Erst wenn man VSync im Spiel de­ak­ti­viert, fal­len wir auf schlech­te 266,6 ms zu­rück (und nein, ich ha­be hier nicht ver­se­hent­lich die Wer­te ver­tauscht). Durch den Desk­top-Win­dow-Ma­na­ger wird je­doch wei­ter­hin Tearing ver­hin­dert. Da au­ßer­dem von den rund 84 pro Se­kun­de be­rech­ne­ten Bil­dern nur 60 an­ge­zeigt wer­den er­gibt sich (wie schon pro­phe­zeit) die schlech­tes­te Spiel­erfah­rung.

Un­ge­ach­tet der gan­zen La­tenz­un­ter­schie­de wer­den die­se hin­ge­gen meist kei­ne zu gro­ße Rol­le spie­len. Wie schon in ei­nem äl­te­ren Ein­trag er­zählt, könnt ihr mit ei­nem Ze­hen eu­re Stirn be­rüh­ren und es fühlt sich an, als hät­ten sich bei­de gleich­zei­tig ge­trof­fen (pro­biert es ger­ne selbst aus). Die Ner­ven­bah­nen vom Ge­hirn zur Stirn sind je­doch um ein viel­fa­ches kür­zer als je­ne zu den Fuß­spit­zen, so wird im­mer ei­ne zu­sätz­li­che Ver­zö­ge­rung an­ge­wen­det um al­les kor­rekt zu Syn­chro­ni­sie­ren. Das heißt aber auch, dass sich eu­er Kör­per auch an den Lag ei­nes Spiels ge­wöh­nen kann. Dies kann et­was dau­ern, al­so gebt nicht di­rekt auf, bald wird es sich na­tür­lich an­füh­len.

Des Wei­te­ren sind bei On­line-Matches die ei­ge­ne »Round Trip Time« (als Ping an­ge­ge­ben) und die Tick­ra­te des Ser­vers (ver­gleich­bar mit der Ar­beits­fre­quenz der Game-En­gi­ne) die li­mi­tie­ren­den Fak­to­ren. Sie ent­schei­den, wie prä­zi­se Be­we­gun­gen und Schüs­se letzt­lich sind, denn ob­wohl ver­sucht wird die­se Be­schrän­kun­gen durch den Um­weg über den Ser­ver zu kom­pen­sie­ren, er­gibt sich ei­ne ge­wis­se Un­ge­nau­ig­keit – die­se wird aber im Kampf ge­gen Chea­te­rei in Kauf ge­nom­men. Wen das ge­nau­er in­ter­es­siert, dem emp­feh­le ich das Mul­ti­play­er-Net­wor­king in Source ein­mal nä­her zu be­trach­ten.

dirt3

Als zu­sätz­li­cher Punkt sind au­ßer­dem nicht nur Re­ak­tio­nen auf vi­su­el­le Reiz von­nö­ten. Ob­wohl Au­dio na­tür­lich eben­falls ge­puf­fert wer­den muss, sind für den Men­schen die Re­ak­ti­ons­ge­schwin­dig­kei­ten auf Sounds et­was flot­ter und der Tast­sinn ist gar am schnells­ten. In ei­ner Ra­cing-Sim wird man al­so eher hö­ren oder dank For­ce-Feed­back füh­len, wenn man ge­ra­de den Grip ver­liert. Wür­de man zu­erst se­hen, dass ei­nen ge­ra­de das Heck über­holt, ist es nor­mal schon zu spät.

Man soll­te dar­über hin­aus auch er­wäh­nen, dass in wirk­lich we­ni­gen Si­tua­tio­nen solch »ein­fa­che Re­ak­ti­on« ge­fragt ist, wie ich sie oben ge­mes­sen ha­be. Statt dem simp­len Kli­cken muss oft­mals ei­ne Aus­wahl ge­trof­fen wer­den und zwi­schen meh­re­ren Mög­lich­kei­ten ent­schie­den wer­den. Da­mit mei­ne ich nicht di­rekt Tell­Ta­le Ga­mes, son­dern die Op­ti­on ver­schie­de­ne Geg­ner an­zu­vi­sie­ren; viel­leicht beim Un­ent­deckt­blei­ben nicht di­rekt schie­ßen son­dern mes­sern; meh­re­re mög­li­che Po­si­tio­nen ab­zu­su­chen, aus de­nen ein Feind auf­tau­chen kann; die Ent­schei­dung in ei­ne be­stimm­te Rich­tung aus­zu­wei­chen oder ei­nen spe­zi­el­len An­griff aus­zu­füh­ren. All je­ne re­sul­tie­ren in ei­ner lang­sa­me­ren Re­ak­ti­ons­schnel­lig­keit und ma­chen den Ein­fluss des rest­li­chen In­put-Lags ge­rin­ger. Man kann so­gar die­se Ent­schei­dungs­fin­dung durch Trai­ning gut ver­rin­gern und auch häu­fi­ge Arm­be­we­gun­gen im Mus­kel ver­in­ner­li­chen. Ver­mut­lich wird es eben­falls mehr brin­gen, wenn ihr die Mus­keln eu­rer Fin­ger oder der gan­zen Hand vor dem Zo­cken auf­wärmt (mit wel­cher Be­schäf­ti­gung auch im­mer), an­statt noch die letz­ten FPS aus eu­rer Hard­ware zu quet­schen.

coj
In den wenigsten Spielen wird die Einfachreaktionsgeschwindigkeit entscheidend sein.

Übersicht

Um ein­mal das Wich­tigs­te aus dem doch et­was lang ge­wor­de­nen Ar­ti­kel zu­sam­men­zu­fas­sen und ein paar Emp­feh­lun­gen aus­zu­spre­chen:

Kei­ne Syn­chro­ni­sa­ti­on: Die Gra­fik­kar­te ar­bei­tet un­ein­ge­schränkt, be­zie­hungs­wei­se so schnell es die CPU er­laubt. Buf­fer wer­den ges­wappt so­bald ein neu­er Frame ge­ren­dert wur­de. Dem Dis­play passt das lei­der über­haupt nicht und mit­ten im Bild­auf­bau ent­ste­hen Ris­sen. Mit je mehr Hertz der Mo­ni­tor ar­bei­tet, um­so kür­zer wer­den Tears zu se­hen sein und we­ni­ger stö­ren (so­fern sie nicht [künst­lich] an im­mer der­sel­ben Bild­po­si­ti­on auf­tau­chen).

Ver­ti­ka­le Syn­chro­ni­sa­ti­on: Die GPU muss mit dem Schrei­ben in den Front­buf­fer war­ten, bis der Bild­schirm den ak­tu­el­len Re­fresh be­en­det hat, Tearing wird hier ver­hin­dert. Pro­zes­sor so­wie Gra­fik­ein­heit puf­fern so vie­le Frames, wie es der Ent­wick­ler vor­ge­se­hen hat, um selbst in kurz­zei­tig an­spruchs­vol­len Mo­men­ten das flüs­sigs­te und kon­sis­ten­tes­te Spiel­ge­fühl zu er­mög­li­chen. Beim zu häu­fi­gen Fal­len un­ter die Bild­schirm­wie­der­hol­fre­quenz soll­te ent­we­der VSync dy­na­misch aus­ge­schal­tet wer­den (er­neut ent­ste­hen Ris­se) oder auf ei­ne min­des­tens drei Buf­fer lan­ge Swap-Chain ge­setzt wer­den (meist leicht un­re­gel­mä­ßi­ge Aus­ga­be durch den Zwang auf das Re­fresh-En­de war­ten zu müs­sen).

Ad­ap­ti­ve Syn­chro­ni­sa­ti­on: Vor­ge­se­hen für den ge­ra­de ge­nann­ten Pro­blem­fall von zu nied­ri­gen FPS, wird jetzt das er­neu­te Ab­tas­ten her­aus­ge­zö­gert, so­lan­ge bis die Be­rech­nung des nächs­ten Frames ab­ge­schlos­sen ist. Zu­sam­men mit VSync er­reicht man al­so das bes­te Spiel­erleb­nis. Spe­zi­el­le Hard­ware ist je­doch er­for­der­lich.

Nicht­blo­ckie­ren­de Syn­chro­ni­sa­ti­on: Bei ei­ner schnel­ler als das Dis­play ar­bei­ten­den GPU wird wei­ter­hin auf das rich­ti­ge Ti­ming zum Tau­schen ge­war­tet. Zu­sätz­lich mög­li­che Frames wer­den je­doch wei­ter­hin be­rech­net und er­setz­ten da­durch ge­ge­be­nen­falls äl­te­re, nie aus­ge­ge­be­ne Bil­der. Trotz­dem wird der nied­ri­ge Lag des syn­chro­ni­sa­ti­ons­lo­sen Out­puts nicht ganz er­reicht. Die Frames pro Se­kun­de soll­ten zu­sätz­lich deut­lich über der Mo­ni­tor­ra­te lie­gen, um das Stot­tern zu ver­min­dern. (Ach­tung, der [rand­lo­se Voll­bild-]Fens­ter­mo­dus er­zwingt die­se Syn­chro­ni­sa­ti­on und dürf­te für zu­sätz­li­che La­tenz durch den Desk­top-Win­dow-Ma­na­ger sor­gen.)

Frame­ra­te-Cap­ping: Auf­ge­passt, es gibt ver­schie­de­ne Ar­ten! Zum ei­nen kön­nen di­rekt im Spiel oder mit man­chen ex­ter­nen Pro­gram­men die FPS in ei­ner sehr frü­hen Pha­se li­mi­tiert wer­den. Da­durch kann die Ver­zö­ge­rung durch be­gren­zen­des VSync auf­ge­ho­ben wer­den. Dies heißt je­doch nicht, dass die ex­ak­ten Frame­times auch beim Mo­ni­tor an­kom­men. Ein Ma­xi­mum von hier 100 fps kann bei der Gra­fik­kar­te zum Bei­spiel in Frame­times von 10 ms – 10 ms – 13 ms – 8 ms – 9 ms – 10 ms – 10 ms re­sul­tie­ren, wenn Num­mer drei be­son­ders hart für die GPU sein soll­te. Al­ter­na­tiv kann aber auch bei der Gra­fik­kar­te be­grenzt wer­den und 100 fps be­deu­ten dann auch mi­ni­mal 10-Mil­li­se­kun­den-Frame­times. Es ent­steht le­dig­lich wie­der ei­ne ähn­li­che Fül­lung der Queu­es wie schon bei der Be­gren­zung durch ak­ti­vier­tes VSync.

Wie sich letzt­lich her­aus­ge­stellt hat, spiel­te un­ser Möch­te­gern-CS:GO-Pro­fi die gan­ze Zeit im Bor­der­less-Full­screen, al­so un­ter er­zwun­ge­nem VSync. ¯o¯