Frame Limiter, V-Sync und Input Lag

BenGun_

Enthusiast
Thread Starter
Mitglied seit
24.01.2005
Beiträge
2.917
Hallo,
da ich zum Ersten mal eine potentere Grafikkarte als die x60 Reihe von Nvidia besitze und gestern mal testeweise gemessen habe wieviel Strom / Wärme etc sich bei Diablo 3 durch den internen Frame Limiter sparen läßt, wollte ich diesen per Treiber überall erzwingen.

Bei Diablo 3 sind es von 200Max FPS auf 80max FPS runtergerelgt 65 Watt weniger Leistungsaufnahme aus der Steckdose.
Natürlich wird das gesamte System auch weniger warm weil weniger zu tun.
Nun habe ich gestern Stundenlang im Internet gelesen bezüglich Frame Limiter per Nvidia Inspector.
Dort gab es dann sachen wie auftretende Input Lags bei Shootern, man solle Vsync benutzen wegen Tearing und so weiter.

Mitlerweile weiß ich nichtmehr was stimmt und was nicht.

Mein Monitor läuft mit 60Hz.
Den Frame Limiter würde ich auf 80Fps stellen.
Vsync habe ich bisher nie gebraucht und würde ich auch weiterhin aus laßen.

Da ich auch BF3 / 4 und auch andere Shooter Spiele wäre ein Input Lag sehr unschön.

Tritt bei solch einer Einstellung ein Input Lag auf?
Kann mir jemand Tipps geben?
Ich befürchte ich hätte es einfach einstellen sollen und nicht stundenlang irgendwas nach zu lesen.

Bei Diablo 3 ist ein Input Lag natürlich unerheblich weil man dort nicht wie ein Weltmeister mit der Maus rumhantiert.
 
Wenn Du diese Anzeige nicht sehen willst, registriere Dich und/oder logge Dich ein.
Warum stellst du denn den Frame Limiter auf 80 wenn du einen 60 Hz Monitor hast?!?
Das gibt doch Tearing ohne Ende.... Frame Limiter auf 59 stellen und Vsync an, dann hast
du kein Tearing und kein Input Lag durch Vsync.
Input Lag tritt erst auf wenn bei Vsync Frames in den Buffer laufen. Limitierst du die Frames
auf einen Wert unter deiner Wiederholrate kann auch nichts vorgebuffert werden, sprich kein
Input Lag. So zocke ich alle meine Games....
Hab nie Probleme.

Edit: Die Frames im Treiber zu limitieren halte ich allerdings auch nicht für die beste Idee.
Das gibt bestimmt Komplikationen bei manchen Engines...
Aber viele neue Spiele bieten auch extra so eine Option.
Bei Far Cry 3 bspw. Kann man bei Vsync zusätzlich noch einstellen wie viele Frames in den Buffer laufen
dürfen. Stellt man das auf 0 hat man auch kein Input Lag.
Bei Far Cry 4 verursacht Vsync auch kein Input Lag.
Bei allen Source Games von Valve kann man beispielsweise mit dem Befehl "fps_max 59" die Frames
limitieren. Dann noch Vsync an und kein Input Lag....
Wie gesagt das Problem kann man gut umschiffen....
 
Zuletzt bearbeitet:
oder mit dem msi afterburner
 
Also Engine intere Limiter sollten alle eigentlich kein inputlag verursachen. Alles über externe Programme schon
Es gibt im Treiber die Option "Maximale Anzahl der vorgerenderten Einzelbilder", diese sollte man auf 1 stellen.

In einem recht aktuellen Video habe ich gehört, dass man gerade bei der Source Engine die Frames nicht limitieren sollte.
Und wenn vsync aktiv ist, wird doch automatisch gebuffert -> lag (?)
 
Zuletzt bearbeitet:
Gerade bei der Source Engine funktionierts eigtl am Besten !
Wenn man limitiert kann Vsync auch nichts buffern.
 
Um das Tearing abzustellen. Wenn man nur limitiert bekommt man trotzdem noch Tearing.
Selbst bei einem Wert von 59 laufen die Frames nicht Snychron mit der Wiederholrate des Monitors.
Das geht nur mit Vsync. Oder halt bald Freesync etc...
 
Ahh, nun bin ich ja total viel schlauer als vorher...nicht.
 
Also dann nochmal Schritt für Schritt.
Wenn die Grafikkarte mehr Frames erzeugt als der Bildschirm maximal pro Sekunde wiederholen kann entsteht Tearing.
Um das abzustellen gibts Vsync das Grafikkarte und Bildschirm Synchron Frames ausgeben.
Nur Buffert (speichert) Vsync Frames vor um Framedrops zu vermeiden falls eine Grafikkarte nicht so potent ist um
permanent 60 Frames zu halten. Sondern eher so 40 ~ 70. Dann speichert Vsync bis zu 3 Frames vor in den Phasen
wo die Grafikkarte mehr Bilder rendert als 60. Diese werden dann nach und nach ausgegeben.

Da diese Frames aus dem Speicher ja aber schon etwas "älter" sind entsteht Input lag. Da wird ja dann ne Mausbewegung
von dir Zeitversetzt ausgegeben.
Weil du bewegst die Maus, der Frame mit der Bewegung wandert erstmal in den Buffer und verweilt da kurz bis er ausgegeben
wird. Dann entsteht ja ne Zeitdifferenz.
Deshalb muss man zu Vsync noch die Frames limitieren. Immer auf einen Wert knapp unter der Wiederholrate des Monitors.
In deinem Fall also 59. Dann kann nichts in den Buffer laufen weil alles sofort ausgegeben wird. Der Monitor kommt mit seinen
60 Hz dann ja mit.....
So hat man kein Tearing und kein Input Lag. Die Grafikkarte sollte halt potent genug sein um diese 59 permanent zu halten.
Sonst gibts halt Framedrops.....
 
Wenn die Grafikkarte mehr Frames erzeugt als der Bildschirm maximal pro Sekunde wiederholen kann entsteht Tearing.
Um das abzustellen gibts Vsync das Grafikkarte und Bildschirm Synchron Frames ausgeben.
Tearing tritt dann auf, wenn der Monitor gerade ein neues Bild von der Grafikkarte aufbaut, und sich in dem Moment das Bild im Buffer ändert. Der Monitor muss dann mit dem neuen Bild weitermachen, wodurch der obere Teil des angezeigten Bilds dann ein älteres ist und der untere Teil das aktuelle. Das ganze funktioniert auch mit mehr als zwei Bildern.
Vertikale Synchronisation sorgt dafür, dass der Display Buffer erst neu geschrieben wird, wenn der Monitor mit dem Bildaufbau fertig ist. Dadurch tritt kein Tearing mehr auf.

Dann speichert Vsync bis zu 3 Frames vor in den Phasen
wo die Grafikkarte mehr Bilder rendert als 60. Diese werden dann nach und nach ausgegeben.
Diese Option hat nichts mit Vsync zutun, sondern mit einem plötzlichen CPU Flaschenhals. Das ist nämlich die Zahl der Frames, die der Prozessor im voraus berechnet. Sollte also ein Frame mal etwas zu lange dauern, hat die Grafikkarte noch X weitere, um weiterhin ein flüssiges Bild darzustellen. Von dem ganzen ist aber generell abzuraten, da es im Normalfall in heftigem Input-Lag resultiert. Definitiv auch nicht nötig für Vsync.

Deshalb muss man zu Vsync noch die Frames limitieren. Immer auf einen Wert knapp unter der Wiederholrate des Monitors.
In deinem Fall also 59. Dann kann nichts in den Buffer laufen weil alles sofort ausgegeben wird. Der Monitor kommt mit seinen
60 Hz dann ja mit.....
Vsync geht automatisch mit limitierten FPS einher, da die Grafikkarte auf den Monitor warten muss. Ein seperater Frame-Limiter kann das ganze nur schlimmer machen. Frame-Limiter sind eine Alternative zu Vsync, wodurch sich Tearing minimieren lässt (jedoch nicht komplett verhindern), bei gleichzeitig niedrigem Input-Lag. Das ist dann also eine pseudo synchronisation der Frame-Rates. Die 59 kommt daher, dass viele Frame-Limiter kleine Timingfehler haben, wodurch die tatsächlichen FPS höher ausfallen, als man eingestellt hat. In einer perfekten Welt sollte das aber eine 60 sein (Und sollte auch immer als erstes probiert werden). Gibt die Grafikkarte jedoch 59 FPS aus, kriegst du Tearing, das einfach in die entgegengesetzte Richtung läuft.

Wenn du bei Vsync Input-Lag minimieren willst, brauchst du Tripple-Buffering. Ist sicher bei Wikipedia besser erklärt, als ich das jetzt hinkriege :coffee:
 
Zuletzt bearbeitet:
Hä gerade bei Triple Buffering werden doch bis zu 3 Frames in den Buffer geschoben.
Das ist doch das was Input lag auslöst. Schön zu sehen bei CS:GO.
Da kann man zwischen Triple & Double Buffering wählen bei der VSync Option und mit
Double Buffering ist der Input Lag geringer. Ganz weg gehts da halt nur noch zusätzlich mit
dem Frame Limiter da die Source Engine kein Vsync ohne Buffern macht....
 
Tearing ist bei fps=hz am höchsten, wenn kein vsync benutzt wird.

Denn ohne vsync hat man keine Synchronisation der Frames und das Tearing passiert dann immer auf der gleichen Höhe auf dem Monitor, was extrem nervig ist.

Fps limiter 1-3Fps unter dem refresh des Monitors lässt die Tearingstelle "wandern" und macht sie dadurch weniger auffällig.
 
Hä gerade bei Triple Buffering werden doch bis zu 3 Frames in den Buffer geschoben.
Das ist doch das was Input lag auslöst. Schön zu sehen bei CS:GO.
Da kann man zwischen Triple & Double Buffering wählen bei der VSync Option und mit
Double Buffering ist der Input Lag geringer. Ganz weg gehts da halt nur noch zusätzlich mit
dem Frame Limiter da die Source Engine kein Vsync ohne Buffern macht....

Das ist so nicht ganz richtig.
Bei Double Buffering (Standarteinstellung) gibt es einen Front und einen Backbuffer. Der Front Buffer ist der, der Dargestellt wird und der Backbuffer ist der in dem geschrieben wird. Wenn die Grafikkarte fertig mit Rendern ist, gibt es 2 Möglichkeiten:
  • Ohne VSync: Die Speicheradressen von BackBuffer und FrontBuffer werden sofort getauscht
    -> Wenn der Monitor grade mitten im Darstellen ist, dann werden jetzt die neuen Daten gelesen (von der aktuellen Position an, bereits dargestellte Bereiche werden natürlich nicht neu gezeichnet). Es entsteht Tearing, Bsp.: Zeichnet man ein grünes Bild und dann ein Rotes, dann würde der erste Teil des Bildschirms grün, während der zweite Teil des Bildschirms rot wäre.
  • Mit VSync: Die Grafikkarte macht nichts und wartet bis der Bildschirm fertig mit darstellen ist. Dann wird der Speicher geswappt. (die Speicher Adressen)
    -> Energie Ersparnis, da die Grafikkarte idlet, aber kein Tearing.
Der Input-Lag ist kleiner als 17ms, da das Bild ja nicht älter als (1/(60Hz) sein kann [Annahme: mehr Fps als Bilder pro Sekunde auf dem Monitor])
Er steigt bei VSync um die idle Zeit an: 1/Bildwiederholfrequenz - 1/VorherigeFPS

Um dieses Problem zu umgehen, gibt es Tribble-Buffering. Ohne VSync ergibt Tribble-Buffering keinen Sinn. Es ist nur Speicherplatz Verschwendung ohne Vorteile (Es gibt keinen Unterschied zu Double-Buffering).
Hier gibt es zwei Backbuffer. Es wird immer in Buffer 2 gerendert und wenn die Graka fertig ist, tauscht er die Adressen (Buffer 2 wird zu Buffer 1). Ohne VSync würde er jetzt sofort den Front-Buffer und den Back-Buffer tauschen. (Wie gesagt es ergibt keinen Sinn, ohne VSync Trible Buffering zu benutzen)

Wenn VSync aber aktiv ist, dann kann jetzt wieder in Buffer 2 geschrieben werden. Die Graka muss nicht warten, bis der Monitor fertig ist, da es ja immer ein fertiges Bild gibt.
Dein Input-Delay der dazu kommt, entspricht wieder dem alter des letzten Bildes. Nur diesmal ist das letzte Bild maximal 1/FPS alt. Im Schnitt ist es 1/(2*FPS) .
Beide Input-Delays sind allerdings im vergleich zum Gesamten sehr gering, (Alleine der Bildschirm sorgt ja schon für 1/(60Hz) rund 17ms)

Bei eine FPS Zahl von 200 beträgt der Delay durch VSync also: 12ms (Double Buffer) ||| 5ms Maximal, 2.5ms im Schnitt (Tribble Buffer)
Bei 80 FPS max.: 4ms (Double Buffering) ||| 12.5 ms Maximal, 6.25 ms (Tribble Buffer)
Wie man sieht: bei einer langsamen GraKa ist der Input-Delay größer.
Ich weiß wie aktuelle GraKa dieses Problem handhaben. Das Verwerfen des aktuellen Rendervorgangs, wenn der Monitor fertig ist, könnte eine Lösung sein. Das Problem entsteht nämlich, weil die Bilder die angezeigt werden, bereits im VORletzten Frame begonnen wurden zu zeichnen. Ab einer FPS-Rate von 1.5*60Hz = 90Hz ist der man durchschnittlich besser. Ab einer FPS Rate von 2*60Hz = 120Hz, ist man immer besser mit Tribble-Buffering als bei Double-Buffering.

da-killa schrieb:
Tearing ist bei fps=hz am höchsten, wenn kein vsync benutzt wird.

Denn ohne vsync hat man keine Synchronisation der Frames und das Tearing passiert dann immer auf der gleichen Höhe auf dem Monitor, was extrem nervig ist.

Fps limiter 1-3Fps unter dem refresh des Monitors lässt die Tearingstelle "wandern" und macht sie dadurch weniger auffällig.

Tearing ist am höchsten je mehr Fps man hat. Ist die FPS Zahl ein Vielfaches der Bildwiederholfrequenz, dann befinden sich die Tearingkanten immer am gleichen Ort, was nervig ist.
Ist die GraKa ist zu langsam - bei unter 60Fps (60Hz-Monitor) - sollte man kein VSync benutzen, da das die FPS droppen lassen kann, (auch hier idled die GraKa, wenn sie fertig ist, aber der Monitor grad ein neues Bild aufbaut, -> noch weniger FPS)

Einen FPS-Limiter sollte man aber selten verwenden, es gibt aber ein paar Gründe, warum man das tun kann.
FPS-Limiter unter 60Hz, auf beispielsweise 30Hz (hier kann VSync unterstützend wirken, wenn der FPS-Limiter zuverlessig arbeitet)
Dadurch nicht nur Energie gespart werden. Bei schlecht gekühlten GraKa (z.B. durch total verstopfte Lüfter) regeln die meisten Grakas runter. Bei 30Hz ist die Temperatur niedriger als bei 60Hz. Kommt jetzt (eine kurze) detailreiche Szene muss die GraKa nicht runterregeln, weil sie noch nicht so heiß ist.
[Eher selten der Effekt]
Ansonsten kann ein FPS-Limiter bei Tribble-Buffering (natürlich nur mit VSync ;)) benutzt werden, um die Energie zu sparen. 80Fps-Limiter mit Trible-Buffering (und VSync ;)) hat einen kleineren durchschnitts Input-Delay als Double-Buffering (nur VSync) und spart Strom ohne Tearing ;)



Wem der minimale Input-Delay aber egal ist, sollte also nur VSync aktivieren. Das spart Strom und man hat kein Tearing.
 
Hardwareluxx setzt keine externen Werbe- und Tracking-Cookies ein. Auf unserer Webseite finden Sie nur noch Cookies nach berechtigtem Interesse (Art. 6 Abs. 1 Satz 1 lit. f DSGVO) oder eigene funktionelle Cookies. Durch die Nutzung unserer Webseite erklären Sie sich damit einverstanden, dass wir diese Cookies setzen. Mehr Informationen und Möglichkeiten zur Einstellung unserer Cookies finden Sie in unserer Datenschutzerklärung.


Zurück
Oben Unten refresh