Je mehr fps, desto flüssiger das Spiel (logische Erklärung bitte)?

Wenn Du diese Anzeige nicht sehen willst, registriere Dich und/oder logge Dich ein.
Ich weiß nicht ob das stimmt, klingt aber logisch wie du das erklärst ( interresiert mich im übrigen auch)...

Wenn das aber stimmt, würde das nicht bedeuten, dass ein Frame Lock auf zB die exakte, (oder doppelte oder n-fache) Anzahl an FPS (zB 60, 120, 180 etc bei einem 60Hz Screen)die den Hertz des Bildschirms entspricht das genauest Bild liefern würde, weil dann die Abstände zwischen errechnetem und dargestellten immer konstant wären?
 
Also ich hab es mittlerweile schon mehr oder weniger rausgefunden. Ich hatte einfach nen fetten Denkfehler. Wenn man nun von 120fps@60Hertz ausgeht:
Nach jeden 16,6ms hat die Grafikkarte 2 Bilder fertig gestellt. Nach 8,33ms schickt die Grafikkarte das Bild dem Monitor. Dieser Monitor braucht ja nun 16,6ms um das Bild darzustellen. Nach wiederum 8,33ms hat die Grafikkarte aber das zweite Bild fertiggestellt und der Monitor ist mit dem ersten Bild zur Hälfte fertig. Also stellt der Monitor die untere Hälfte mit der unteren Hälfte des zweiten Bildes dar, weil es aktueller ist. Das bedeutet: Es entsteht Tearing in der Mitte des Monitors. Wieso erscheint das Bild aber nun flüssiger mit mehr fps? Wenn man das gleiche mit 180fps macht, entstehen 2 Tearingstreifen. Das heißt 3 verschiedene Bilder innerhalb eines Refreshs die jeweils um 33% zeitversetzt sind. Bei 240fps: 3 Tearingstreifen und 4 Bilder die jeweils um 25% zeitversetzt sind. Ist ja logisch dass das Auge die 240fps als flüssigsten wahrnimmt, kann man sich ja als Daumenkino forstellen. Und somit sieht man die Gegner logischerweise mit möglichst viel fps auch am ehesten, weil man mit mehr fps, mehr aktuelle Teilbilder angezeigt bekommt.

Nun kann man sich ja fragen, ob Tearing auch unter 60fps entsteht?
Wenn man nun von 46,15fps ausgeht:
Die Grafikkarte braucht also 21ms um ein Bild zu berechnen. Das bedeutet nachdem sie ein Bild berechnet hat, wird dieses Bild 16ms + 5ms dargestellt. Das bedeutet ein ganzer Monitorrefresh + 5ms wird das alte dargestellt, und ab dann wird ein neues Bild dargestellt. Das heißt es gibt wieder Tearing.

Bei 30fps wird einfach das Bild vom Monitor zweimal hintereinander dargestellt, bis die Grafikkarte das zweite Bild fertig berechnet hat. Ist ja logisch.

Das heißt, wann entsteht Tearing:
1.) wenn man mehr fps als Hertz hat. Aber je mehr fps desto weniger fällt Tearing auf. Bei einem schnellen Shooter wie Counterstrike würde ich sagen das Tearing bei 180fps + nicht mehr wirklich auffällt.
2.) wenn man unter 60fps hat, ABER:
Wenn man ein gerades Vielfaches unter der Hertz Zahl an Fps hat, hat man kein Tearing. Bei 60 Hertz wäre das also:
60, 30, 20, 15, 12, 10, 6, 5, 4, 3, 2 und 1
Wenn es hingegen ungerade ist, also alles andere unter 60, dann bekommt man Tearing.

Nebenbei erwähnt haben 120Hertz und 144Hertz Monitore mehr Vielfache, deswegen gibt es dort weniger Tearing als bei 60 Hertz Monitoren.

Das müsste nun alles so stimmen, oder?
 
Zuletzt bearbeitet:
deine theorie bedient sich der annahme, das die gpu alle 8.33 ms ein bild fertig hat. das ist nur bedingt richtig, den dieser wert schwankt. mal dauerts länger, mal weniger lang etc.

trearing wird begünstigt, wenn man mehr fps hat, als der monitor hz hat. kann aber auch mit 50fps bei 60hz monitor auftreten, weils eben zufällig is. je nachdem wann ein bild fertig ist (siehe oben, das schwankt halt) wird es direkt ausgegeben, überschlägt sich das mit einem refresh gibts tearing. selbst bei 2 bilder und 2hz kann es zu tearing kommen. auch 60fps und 60 hz können trearen.

tearing ist, wenn der monitor sich noch aktualisiert, aber von der gpu bereits ein neues bild bekommt. der refresh wird dann irgendwann mit den neuen informationen (die nicht in festen zyklen kommen ohne vsync) vollendet und somit sieht man 2 bilder.

ausgabe und fps von der gpu sind asynchron ohne vsync, weshalb tearing entsteht.
 
Zuletzt bearbeitet:
deine theorie bedient sich der annahme, das die gpu alle 8.33 ms ein bild fertig hat. das ist nur bedingt richtig, den dieser wert schwankt. mal dauerts länger, mal weniger lang etc.

Na ja aber wenn man davon ausgeht das die GPU niemals länger braucht als 8,33ms (d.h. die fps niemals unter 120 fallen, was ja bei z.b. Counterstrike auch nicht schwer zu bewerkstelligen ist) und man die fps auf 120 limitiert, sodass die GPU auch einen Frame nicht schneller als 8,33ms fertig stellen kann, stimmt doch meine Theorie? In der Praxis gibts natürlich (meistens) Schwankungen, aber wir sind ja hier in der Theorie.
 
Zuletzt bearbeitet:
Natürlich kann die GPU selbst bei 120FPS länger wie 8.33ms brauchen für ein Frame. Wir reden hier als Sekunde für als Maßstab welcher übelst ungenau ist.
Du kannst haben das ein frame nur 2ms braucht und der Nächste braucht dann 14,33ms. Schon bist du wieder bei den durchschnittlichen 120FPS am ende.
Oder in 0-800ms hast du 3 Bilder und die Restlichen 117 Bilder pumpt er in der Zeit von 801-1000ms Raus, was hast du am ende? Genau! 120FPS
 
Achso stimmt. Deswegen ist auf 60fps begrenzen auch nicht gleich Vsync, weil man bei 60fps ohne Vsync lediglich durschnittlich in der Sekunde 60fps hat, aber die Grafikkarte jeweils unterschiedlich viel lang für einen Frame brauchen kann, bzw braucht, weil es unwahrscheinlich ist das die gpu für jeden frame gleich lang braucht. Ich glaub wenn man das ein bisschen weiterdenkt kommt man auch auf den inputlag durch vsync.
 
Zuletzt bearbeitet:
Interessantes Thema das mich auch immer wieder beschäftigt.
Möchte noch hinzufügen:

Durch Triple Buffering hat man bei Vsync noch mehr kleinere Teiler von 60 als die von dir genannten ...

Also z.B.: 60 - 52,5 - 45 - 37,5 - 30 - etc ....
Bringt also ne Menge ...

Bei mir hat sich bei Nvidia das Adaptive Sync als ganz passabel erwiesen.
 
Ich glaub wenn man das ein bisschen weiterdenkt kommt man auch auf den inputlag durch vsync.

das bei vsync verwendete buffering ist für den inputlag durch vsync verantwortlich. wenn die gpu ein bild fertig hat, gibt sie es nicht direkt aus, wie ohne vsync, sondern legt es zunächst in einen buffer. dann rechnet die gpu das nächste bild. jetzt kommt alle 16 oder 8 ms der zyklus des monitors und "nimmt" sich das bild aus dem buffer, während die gpu erst das "aktuelle" bild wieder berechnet in den buffer legt. du bist mit vsync durch buffering immer mindest ein bilder hinterher. bei einem 60hz monitor also inputlag von +16ms nur durch vsync. bei 120hz monitor nur 8ms. mit triplebuffering sogar 2 bilder, also 32 bzw 16ms. das was du eingegeben hast und die gpu berechnet, wird immer erst einen refreshzyklus lang im buffer gehalten. deshalb hast du inputlag bei vsync. schaft es die gpu btw nicht 60fps bei 60hz monitor bzw 120fps bei 120hz monitor zu halten, erhöht sich der inputlag um einen weiteren zyklus, also weitere 16 bzw 8 ms inputlag, zusätzlich zu den bereits vorhandenen 16 bzw 8 ms.

das buffering ist btw auch für den "teiler" bei vsync verantwortlihc.
 
Zuletzt bearbeitet:
Ja Input Lag ist definitiv vorhanden. Da hilft es z.B. im Nvidia Treiber vorgerenderte Bilder auf 1 oder 0 zu setzten.

Mich interessiert ja besonders das neue Nvidia G-sync (braucht man leider nen neuen Monitor)
Der Monitor gibt nur noch aus was die Graka gerade so schafft.
Dürfte Tearing ausschalten wenn ich das richtig verstanden habe.
 
haben das ganze thema im g-sync thread bereits ausfürhlich diskutiert.

jedenfalls ist es bei g-sync so, das die gpu dem monitor so lange kein weiteres bild sendet, bis er zurückmeldet, er hat das letzte ausgegeben. somit kommt es zu keinen überschneidungen aka tearing, weil der monitor nie informationen von 2 verschiendenen bildern auszugeben hat.

kein vsync = alles was die gpu vorliegen hat, geht sofort raus. tearing ist sehr wahrscheinlihc
vsync = in festen zyklen geht ein bild raus, in der hoffnung der monitor hat das bild ausgegeben bis zum nächsten zyklus
g-sync = bild geht nur dann raus, wenn monitor das alte asugegeben hat. monitor und gpu stimmen ausgabe miteinander ab
 
Zuletzt bearbeitet:
Interessantes Thema das mich auch immer wieder beschäftigt.
Möchte noch hinzufügen:

Durch Triple Buffering hat man bei Vsync noch mehr kleinere Teiler von 60 als die von dir genannten ...

Also z.B.: 60 - 52,5 - 45 - 37,5 - 30 - etc ....
Bringt also ne Menge ...

Bei mir hat sich bei Nvidia das Adaptive Sync als ganz passabel erwiesen.

Öhm also ganz so weit bin ich noch nicht^^

Also zum Thema Vsync. Damit Vsync funktioniert, also Spielen ohne Tearing, müsste ja z.b. bei 60 Hertz gewährleistet werden, dass die Grafikkarte jeden Frame, also alle 1000 Frames in der Sekunde in (höchstens) 16,67ms bearbeitet. Das heißt wenn man nun davon ausgeht das die Grafikkarte wirklich für jeden Frame, egal wie kompliziert und rechenintensiv er auch sein mag, höchstens 16,67ms braucht, funktioniert Vsync. Wenn die Grafikkarte also nun aber mal für ein Bild weniger als 16,67ms braucht, ist es denke uneffektiv die GPU einfach in der Zeit zu drosseln. Deswegen würd ich sagen wenn die GPU für ein Bild mal nur die Hälfte an Zeit braucht, also 8,33ms, das sie dann dieses Bild in einen Speicher verschiebt, und schon anfängt mit dem nächsten anzufangen, und es dem Monitor das Bild aus dem Speicher zusendet, sobald der Monitor ready ist. Dadurch kann die GPU in milden Umständen (also wenn wenig passiert) dem Monitor immer ein paar Bilder vorraus sein. Durch so einen Speicher könnte theoretisch verhindert werden das wenn die GPU auf einmal nen richtig fettes Bild zu berechnen hat, was sie in den 16,67ms nicht packt, mehr Zeit hat dieses fette Bild zu berechnen, um zu verhindern das die fps auf 30 abfallen, beziehungsweise das nächst niedrige Vielfache der Hertz Zahl. Stimmt das so vielleicht?

- - - Updated - - -

Ok nicht wundern, ich hab mein Beitrag grad fertig geschrieben, deswegen konnt ich die obigen 3 Beiträge nicht lesen.
 
Zuletzt bearbeitet:
hehe, lies mal was ich geschreiben hab. genau so, mit dem sog. buffer funktioniert das vsync ja, weswegen die gpu dem monitor nicht nur mind. ein bild voraus ist, sonder der monitor der gpu halt eben auch mindest ein bild hinterher ist, was den inputlag durch vsync beschreibt.
 
Achso alles klar, das hab ich soweit.

ABER ich höre ja immer Double Buffering und tripple Buffering. Doublepuffering heißt doch das zwei Bilder im Puffer sind, oder? Aber du hast ja geschrieben das nur ein Bild im Puffer liegt. Aber nehmen mir mal den Fall an das nur ein Bild im Puffer liegt: Also die GPU hat ein Bild fertig berechnet und legt es in den Buffer, und fängt dann mit dem nächsten an. Sobald der Monitor ready ist, nimmt er sich das Bild aus dem Puffer und fängt an es darzustellen. Das heißt man ist nun um die Zeit die die GPU das neue Bild angefangen hat im Delay (also z.b. 5ms). Und nachdem der Monitor mit dem ersten Bild fertig ist, liegt schon das nächste Bild im Puffer und die GPU hat kurz Zeit mit dem nächsten Bild anzufangen. Aber so kommt man doch nicht auf einen Delay von 16ms+?

Wenn man nun den Fall annimmt das zwei Bilder im Puffer liegen:
Zwei Bilder liegen im Puffer, das eine ist älter, das andere ist jünger. Sobald der Monitor ready ist, nimmt er das ältere Bild aus dem Puffer und fängt an es darzustellen, während die GPU schon mit dem aktuellsten Bild anfängt. Nachdem der Monitor das älteste Bild fertig gemacht hat, fängt er mit dem nächst älteren Bild an darzustellen, während im Puffer das Bild reinkommt das die GPU jüngst fertig berechnet hat. Damit hätte man ja einen Delay von 16ms? Und bei Dreifachpufferung wäre man dann um 32ms im Delay, während der Delay bei einem 120 Hertz Monitor dann ja jeweils die Hälfte wäre. Oder hab ich da grad einen Denkfehler? Oder ist man bei 60 Hertz beim Double Puffering um 32ms im Delay, und beim Tribble Buffering um 48ms. Na ja ist schon spät ich merks.
 
Zuletzt bearbeitet:
Neja nicht ganz.
Du hast quasi immer zwei Pufferspeicher. Bzw. eigentlich nur einen Puffer mit zwei Bereichen.
Du hast einen sogenannten Frontbuffer und einen Backbuffer. Der Frontbuffer ist der, wo das Bild bereit liegt, das sich der Monitor im nächsten Refresh Interval abholen kann. Der Backbuffer ist der, in welcher die Grafikkarte aktiv! das Bild kommende Bild berechnet.

Das heist, beim double buffering hast du nicht zwei fertige Bilder im Pufferbereich, sondern nur eins -> denn am zweiten wird ja gerade aktiv gerechnet. ;)
- double buffering ohne VSync heist -> Frame 1 liegt im Frontbuffer und die GPU berechnet gerade Frame 2 im Backbuffer. Ist sie damit fertig, wandert das Bild aus dem Backbuffer in den Frontbuffer (völlig unabhängig davon, was der Monitor macht) -> es kann zu Tearing kommen, einfach weil der Refreshzyklus des Monitors nicht mit dem Updatezyklus zwischen Back und Frontbuffer übereinstimmt.
- double buffering mit VSync heist -> Frame 1 liegt im Frontbuffer und die GPU berechnet abermals Frame 2 im Backbuffer. Ist sie damit fertig, wartet sie so lange, bis der Monitor das Bild aus dem Frontbuffer fertig dargestellt hat -> erst dann wird das Frame 2 aus dem Backbuffer in den Frontbuffer umgeschaufelt und das Frame 3 kann berechnet werden. Somit wird die FPS Rate auf die Hz Zahl gelockt (oder auf eine Teilmenge ala Hälfte, Drittel usw.) -> der Monitor stellt immer genau ein Frame dar und bekommt das neue genau dann, wenn die Grafikkarte fertig ist. -> sinkt die FPS Rate unter die Hz Zahl, rutscht die Leistung somit auf die Hälfte bzw. ein Drittel der Hz Zahl (oder andere Teilmengen davon) was ein hoher Performanceverlust ist.
- tripple buffering mit VSync heist -> Frame 1 liegt im Frontbuffer, Frame 2 lieg im Backbuffer A und die GPU berechnet gerade Frame 3 im Backbuffer B. -> ist sie damit eher fertig, als der Monitor das Bild aus dem Frontbuffer geholt hat, wird Backbuffer A und B vertauscht. -> der Monitor selbst nimmt dann aber im nächsten Intervall das Bild aus dem Frontbuffer A (also das, was vorher in B war), denn er greift jeweils immer auf das neueste! zu. Ist die FPS Rate allerdings höher als die Hz Zahl, wird analog zum double buffering die FPS nach oben hin auf die Hz Rate gefixt.
- tripple buffering ohne VSync macht imho keinen Sinn :fresse:

Mit dem tripple buffering und VSync hast du also minimum immer ein Bild im Frontbuffer und eins im Backbuffer (A oder B) -> wärend die GPU ein drittes im anderen Backbuffer berechnet. Der Vorteil liegt klar auf der Hand, man hat zumindest in der Theorie nicht die Performancenachteile wie beim double buffering, wo eben die FPS halbiert werden, wenn die GPU es nicht schafft. Sondern die GPU rechnet genau so schnell, wie sie kann -> ist sie langsamer als die Hz Zahl mit ihren FPS, werden einzelne Bilder eben mehrfach dargestellt. Beispielsweise bei 60 Hz und 50 FPS hast du 60 Monitor Refreshs, wovon 50 ein aktuelles Bild sind und 10 eben eine Dopplung des gerade schon dargestellten.

Tripple buffering scheint aber wenn ich das richtig in Erinnerung habe nicht immer und überall zu funkionieren -> sprich nicht immer zu wirken oder gar einstellbar zu sein (erzwingbar zu sein).

PS: das Thema Inputlag ist auch so ne geschichte. Im Grunde hast du mit diesem Wissen über die Buffer auch die Erkenntnis, das der Inputlag immer vorhanden ist.
Das Problem ist, der Mensch ist ein Gewohnheitstiert -> er gewöhnt sich schlicht an gewisse Umstände. So fallen hohe Latenzen bei vielen gar nicht ins Gewicht, wenn sie nicht wissen, wie es sich anfühlt, wenn es schneller ist ;)
Fakt ist aber, der Tripplebuffer benötigt mehr "Zeit". Wie viel das in Summe in der ganzen Kette der Inputlag relevanten Teile ausmacht, hängt von den anderen Faktoren ab -> aber es ist maximal! ein Frame, was man einbüßt in der Latenz. Zumindest gegenüber dem double buffering mit VSync. Nämlich genau dann, wenn der Monitor ein Bild notgedrungen doppelt darstellt. Double buffering ohne VSync ist natürlich da noch schneller, birgt aber halt auch die Gefahr, dass durch Tearing und nur die Teildarstellung des Bildes ebenso der Lag vorhanden ist... (kann, muss aber nicht)

EDIT: ich vergaß übrigens zu erwähnen, das das Übertragen der Bilder zwischen den Puffern kein wirkliches übertragen ist. Sondern es werden nur Speicheradressen umgeschrieben, -> spart den transfer des Inhaltes und geht dabei noch rasend schnell. -> kost auch effektiv sogut wie keine Bandbreite.

EDIT2:
wenn du es ganz verrückt haben willst, machst du VSync mit tripple buffering und aktiviertem Framelimiter auf 1-2 Frames unter deiner Hz Zahl vom Monitor :fresse:
Dann hast du ein von hier im Forum mehrfach bestätigtes Ereignis, was technisch scheinbar nicht 100% sauber erklärbar ist. Aber es funktioniert :fresse:
Denn du hast kein nennenswert gesteigerten Lag, hast aber trotzdem ein Tearingfreies Bild.
Das kommt quasi G-Sync ansatzweise gleich -> setzt aber vorraus, das die Grafikhardware so stark ist, den eingestellten Framelimiter auch zu erreichen bzw. wenigstens IMMER flächendeckend minimal zu übertreffen.
 
Zuletzt bearbeitet:
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