News FreeSync bei Nvidia ist „sehr unwahrscheinlich“

Vblank können alle PC-Monitore. Die Frage ist ob es ein VBlank Signal gibt das direkt an den Frame gehängt wird von der GPU oder ob der VBlank mit der Frequenz des Monitor mit taktet. VBlank ist nichts weiter als der Befehl das Bild zu refreshen.
 
Nun ja die Frage ist doch ob der Monitor mit einer dynamischen Frequenz betrieben werden kann. Wenn der Monitor stur seine 60 Hz flimmert ist ihm schön wurscht wie die Bilder der Grafikkarte daher kommen... Es geht ja darum, dass er bei 53,5 fps mit 53,5 Hz flimmert bzw. Immer das Bild direkt nach dem erstellen ausgibt und solange kein neues Bild da ist auch keinen refresh durchführt.
 
Daedal schrieb:
@noxon
Und zudem hast du die Funktionsweise dir aus der Nase gezogen, denn das GSyn Modul kann max. 3 frames puffern und das ist auch nichts anders als ein herkömmlicher triple-buffer. Du redest davon 120 Frames vorzuhalten wenn nur 60Hz beim Bildschirm anliegen...und wenn jeder dritte ausgegeben wird ist das ja die größte Ruckelorgie die man haben kann, zusätzlich zu 2 ganzen Frames Inputlag!
Wo habe ich denn gesagt, dass dort 120 Frames vorgehalten werden?
Und seit wann sind 60 fps ruckelig? 2 Frames Input Lag kommen auch nicht dazu. Im Gegenteil es verschwinden 2 Frames vom Input Lag. Du hast überhaupt nicht verstanden worum es hier geht.
 
Ein G-Sync Monitor akzeptiert von der Grafikkarte so viele Bilder wie möglich und speichert sie immer wieder in dem Puffer des G-Sync Moduls. Das Spiel läuft also mit vollen 180 fps und liefert auch 180 Bilder pro Sekunde an das G-Sync Modul.
Allerdings holt sich der Monitor immer nur jedes dritte Bild aus dem G-Sync Puffer da der Monitor eben nur mit 60 Hz aktualisiert.
So verhindert G-Sync auch Tearing und trotzdem läuft das Spiel immer noch mit Frameraten über der Refreshrate des Monitors.
Ja wie soll sich denn sonst der Monitor jedes dritte Bild aus dem Buffer holen? 180 minus 60 dann bleiben jede Sekunde 120 Bilder irgendwo rum liegen. Und 60fps ruckeln sehr wohl wenn man jedes dritte gerenderte Bild nur ausgibt. Es fehlen ja 2 Bilder die übersprungen werden...das passiert bei Framedrops mit einem Bild und dafür ruckelt es...hier dropt laut deiner Beschreibung Gsync gleich 2 Bilder.

Und es verschwinden 2 Bilder vom input lag? Und was ist mit dem Input der mit den zwei verschwundenen Bildern gleich mit verschwindet? Alle Eingaben sind weg...und nur jede dritte wird angezeigt...das sieht dann aus wie mit Stroboskop...eine Videoszene geht ja weiter auch wenn du dir nur jedes dritte Bild anschaust.
 
Zuletzt bearbeitet:
Sorry, aber du scheinst das was ich beschrieben habe absolut nicht so zu verstehen wie ich es meine. Muss an meiner Beschreibung der Dinge liegen. Habe jetzt aber echt keinen Bock das noch ausführlicher oder genauer für dich zu beschreiben.

Vielleicht kannst du dir es aber auch selbst herleiten, wenn du dir dieses Bild mal genauer betrachtest.

Gsync3-850x504.jpg


Überleg mal was passiert, wenn die GPU innerhalb eines Monitor-Scans drei komplette Draws vollziehen könnte (180 fps) und dann guck mal wie sich der Input Lag dabei verhält.
Der letzte Draw wird dargestellt und der Input Lag liegt nur bei einem drittel des Scans (5 ms). Die nächsten zwei Draws werden verworfen (eventuell auch im Puffer überschrieben) und dann beginnt es wieder von neuem.

FreeSync hingegen limitiert die Framerate des Spiels auf 60 fps und erhöht somit den Input Lag auf die vollen 16 ms.
 
Zuletzt bearbeitet:
Bitte denkt doch mal nach. Der Monitor soll ja immer das zuletzt erzeugte Bild ausgeben nachdem er das vorherige ganz gezeichnet hat. Selbst bei Verwendung von Tripple buffering kann es sein, dass das Bild gerade erst fertig wird wenn der Monitor gerade den refresh startet... Der Monitor zeigt in dem Fall noch mal einen ganzen Zyklus (1/60 Sekunde bei 60 Hz) das alte Bild an und das neue kommt mit einer Verzögerung von etwas unter 1/60 Sekunde (schlimmsten falls) erst am die Reihe.
Bei freesync / gsync würde der Monitor mit dem refresh warten bis das neue Bild der Grafikkarte fertig ist und dieses dann sofort anzeigen.
Ergänzung ()

Wie kommst du darauf, dass freesync auf 60 Hz limitiert? Der Monitor buffert genau gar nichts.

Es gibt 2 bzw. 3 Buffer:

Double Buffering:
1. Front buffer: Von diesem Buffer zeichnet der Monitor das Bild (der Buffer ist meines wissens aber physikalisch in der Grafikkarte)
2. Back buffer: Hier zeichnet die Grafikkarte ihr Bild rein. Wenn es fertig gezeichnet ist wird entweder getauscht (es kommt zu tearing) oder die Grafikkarte wartet bis der Monitor fertig vom front buffer gezeichnet hat und fängt erst danach wieder an das nächste bild zu berechnen (vsync) Hier werden die fps auf 60 begrenzt.

Tripple Buffering:
1. Front buffer: Von diesem Buffer zeichnet der Monitor das Bild (der Buffer ist meines wissens aber physikalisch in der Grafikkarte)
2. Back buffer 1: Hier wird das fertig gerechnete Bild der Grafikkarte abgelegt.
3. Back buffer 2: Hier zeichnet die Grafikkarte das Bild rein.
Wenn die Grafikkarte fertig ist mit dem Zeichnen dann tauscht sie Back buffer 1 und 2. Das heißt die Graka rechnet so schnell sie kann. Der Monitor Gibt so schnell wie möglich immer das neueste fertig berechnete Bild (vom Back buffer 1) aus sobald er das aktuelle Bild fertig hat.

Tripple buffering ist schön und gut bei fps > Hz, hier kann weder gsync noch freesync was besser machen.

Wenn jedoch die fps unter die anzeigbaren Hz des Monitors fallen, braucht man gsync bzw. freesync. Sie verhindern, dass der Monitor noch einmal für ganze 1/60 oder 1/120 Sekunden ein altes Bild anzeigt. Der Monitor zeigt nur so lange das alte Bild an (aber mindestens 1/60 bzw. 1/120 Sekunde) bis das neue fertig ist und ist nicht an einen bestimmten Takt gebunden.

Freesync und Gsync sind sowieso nur aktiv wenn fps < hz... Bei fps > hz braucht man kein sync sondern nur den dritten Buffer.

Was der Unerschied zwischen Gsync und Freesync sein soll weiß ich noch nicht.

Ob man jetzt wirklich jeden DP 1.2 Monitor syncen lassen kann weiß ich auch nicht. Ich war der Meinung, dass vblank ein optionales Feature ist welches einfach kein Monitorhersteller unterstützt hat/verbaut hat.
 
Zuletzt bearbeitet:
paul1508 schrieb:
Ergänzung ()

Wie kommst du darauf, dass freesync auf 60 Hz limitiert? Der Monitor buffert genau gar nichts.
Ganz genau. Der Monitor synchronisiert seine Refreshrate mit der Grafikkarte. Mehr macht Freesync nicht. Wenn die Grafikkarte aber mehr als 60 fps liefern würde gäb's nichts mehr zu synchronisieren und deswegen schaltet Freesync in den VSync Modus, wenn die Framerate der Grafikkarte die Refreshrate des Monitors übersteigt.


Freesync und Gsync sind sowieso nur aktiv wenn fps < hz... Bei fps > hz braucht man kein sync sondern nur den dritten Buffer.

Das ist eben nciht der Fall. GSync bleibt auch weiterhin aktiv, wenn die Framrate der Grafikkarte die Refreshrate des Monitors überschreitet und man hat weiterhin die Vorteile des reduzierten Input Lags. Darum geht es hier ja die ganze Zeit.

Was der Unerschied zwischen Gsync und Freesync sein soll weiß ich noch nicht.
Freesync schaltet wie gesagt in den VSync Modus und Spiele können daher auf einem 60 Hz Monitor maximal mit 60 fps laufen (ohne tearing). Auf einem 60 Hz G-Sync Monitor kannst du Spiele allerdings auch mit 180 fps und reduziertem Input Lag laufen lassen wenn du willst und trotzdem entsteht kein Tearing. Das ist der Unterschied.


Daedal schrieb:
Ich versteh sehr gut was du meinst - daher sage ich dass du die Technik nicht verstehst.
OK
 
noxon schrieb:
Das ist eben nciht der Fall. GSync bleibt auch weiterhin aktiv, wenn die Framrate der Grafikkarte die Refreshrate des Monitors überschreitet und man hat weiterhin die Vorteile des reduzierten Input Lags. Darum geht es hier ja die ganze Zeit.

Wie kann der Inputlag reduziert werden indem man den Frame nicht anzeigt? Bei dir scheint der Input vom angezeigten Bild getrennt zu sein - wie geht das? Denkst du die Mausbewegung wir abgespeichert und dann auf das vom GSync ausgewählten Bild drauf projiziert? Mit jedem nicht angezeigten Bild wird auch eine komplette Bewegung am Monitor nicht angezeigt.
 
Wenn ich von Input Lag rede meine ich den Lag der Input Devices wie Maus und Keyboard. die Game-Engine läuft drei mal so schnell und nimmt Eingabebefehle auch drei mal so häufig entgegen.
Der Lag zum Monitor bleibt natürlich identisch und kann aufgrund seiner 60 Hz Limitierung nicht geändert werden
Wenn ich etwas auf dem Monitor sehe und reagiere dauert es im schlimmsten Fall nicht 16 ms bis etwas passiert sondern nur 5 ms. Ansonsten ist es auch so immer besser das Spiel mit einer höhren Framerate laufen zu lassen. Die Physikengine eines Spiels läuft für gewöhnlich immer mit der doppelten Framerate der Grafikengine ab und wird somit also auch genauere Ergebnisse liefern als wenn die Simulation nur mit ein paar fps abläuft.
 
noxon schrieb:
Wenn ich etwas auf dem Monitor sehe und reagiere dauert es im schlimmsten Fall nicht 16 ms bis etwas passiert sondern nur 5 ms.
Und wie willst du nach 5 ms etwas auf dem Monitor sehen wenn genau dieser Frame gar nicht angezeigt wird? Und der nächste ebenfalls nicht....Input kommt immer zeitgleich mit dem Bild beim User an. Kommen bei einem 60Hz Monitor nur alle 16ms Bilder an (da ändert ja auch GSync nichts daran) siehst du deine Keyboard und Maus eingaben auch erst nach 16 ms - und eben ein Stroboskop wenn GSync so funktionieren würde wie du das falsch beschrieben hast.

Gsync und AdaptiveSync funktionieren auf diese Weise, dass der Monitor auf Befehl der GPU das nächste Bild darstellt und eben KEINE Bilder mehr dropt. Die GPU und der Monitor handeln die Spezifiaktionen und max. Hz per Abfrage aus, während dies ohne nicht geschieht und die GPU einfach drauf los rendert mit max. möglichen Frames. Warum sollten 180 Frames gerendert werden wenn nur 144 Hz Monitor angeschlossen ist? Hier reduziert sich der Stomverbrauch, da die GPU dann eben max 144 FPS berechnet (VSync) wo das Limit des Monitors ist.
 
Zuletzt bearbeitet:
Also sollte freesync wirklich keinen tripple buffer vewenden wie noxon behautet (wahrscheinlich ohne es zu wissen) sondern nur einen double buffer, dann ist es in der Tat ein Problem.

So wie noxon es beschreibt ist wenn fps > hz:

gsync = tripple buffering
freesync = double buffering

Vsync verwenden beide, sonst würde ja tearing passieren bei gsync wie auch freesync.

Ob das stimmt was noxon erzählt weiß ich nicht.
 
paul1508 schrieb:
Also sollte freesync wirklich keinen tripple buffer vewenden wie noxon behautet (wahrscheinlich ohne es zu wissen) sondern nur einen double buffer, dann ist es in der Tat ein Problem.
Ich hatte es hier ja bereits mal verlinkt. Klick mich

What happens below that limit and above it differs from what NVIDIA has decided to do. For FreeSync (and the Adaptive Sync standard as a whole), when a game renders at a frame rate above or below this VRR window, the V-Sync setting is enforced. That means on a 60 Hz panel, if your game runs at 70 FPS, then you will have the option to enable or disable V-Sync; you can either force a 60 FPS top limit or allow 70 FPS with screen tearing. If your game runs under the 40 Hz bottom limit, say at 30 FPS, you get the same option: V-Sync on or V-Sync off. With it off, you would get tearing but optimal input/display latency but with it off you would reintroduce frame judder when you cross between V-Sync steps.
Du kannst die automatische VSync-Umschaltung deaktivieren, aber dann hast du wieder einen Tearing Effekt. Also kein Tripple buffering.


Daedal schrieb:
Und wie willst du nach 5 ms etwas auf dem Monitor sehen wenn genau dieser Frame gar nicht angezeigt wird? Und der nächste ebenfalls nicht....Input kommt immer zeitgleich mit dem Bild beim User an. Kommen bei einem 60Hz Monitor nur alle 16ms Bilder an (da ändert ja auch GSync nichts daran) siehst du deine Keyboard und Maus eingaben auch erst nach 16 ms - und eben ein Stroboskop wenn GSync so funktionieren würde wie du das falsch beschrieben hast.
Natürlich siehst du die Ergebnisse deiner Eingaben nicht zu einem früheren Zeitpunkt, aber umgeht kehrt hast du Vorteile. Auf die Anzeige des Monitors kannst du schneller reagieren. Die Eingaben werden eher akzeptiert. Im Durchschnitt nach 2,5 ms anstatt nach 8 ms.
 
Zuletzt bearbeitet:
noxon beschreibt weder triple, noch doublebuffering. Bei Triplebuffering steigt die Latenz um bis zu einem ganzen Frame. Das ist weder bei Gsync noch bei ASync der Fall.
http://de.wikipedia.org/wiki/Dreifachpufferung

Tripplebuffering wird nur benötigt wenn die FPS ausser Sync sind mit den Monitor Frequenzen um dann nicht einen vollen Takt noch warten zu müssen. Doch da der Monitor die Hz immer exakt dem FPS anpasst macht das keinen Sinn noch einen Frame vorzuhalten, da der ja nie angezeigt wird. Der fertig gerenderte frame wird sofort dargestellt und initiiert bei Auslieferung den Refresh des Monitors selber.
Ergänzung ()

noxon schrieb:
Natürlich siehst du die Ergebnisse deiner Eingaben nicht zu einem früheren Zeitpunkt, aber umgeht kehrt hast du Vorteile. Auf die Anzeige des Monitors kannst du schneller reagieren. Die Eingaben werden eher akzeptiert. Im Durchschnitt nach 2,5 ms anstatt nach 8 ms.
Denk das in Ruhe nochmal durch...was nützt es dir deine schnellen Eingaben im nächsten Frame nicht dargestellt zu bekommen auf dem Monitor? Im Gegenteil deine Eingabe wird sogar verworfen und deine nächste Eingabe auch noch...so kommt nur jede dritte deiner Eingaben für dich sichtbar auf den Monitor... also nachdem du die Maus bewegt hast wartest du 3 frames um zu sehen wo sie gelandet ist? Das nennst du dann weniger Input Lag?
 
Zuletzt bearbeitet:
Daedal schrieb:
noxon beschreibt weder triple, noch doublebuffering. Bei Triplebuffering steigt die Latenz um bis zu einem ganzen Frame. Das ist weder bei Gsync noch bei ASync der Fall.
http://de.wikipedia.org/wiki/Dreifachpufferung
http://de.wikipedia.org/wiki/Dreifachpufferung

Dreifachbufferung ist nur von Nöten bzw. passiert nur wenn fps > Hz. Wenn du einen 120 hz Monitor hast brauchst du den dritten Buffer nicht! Dreifachbufferung und gsync/freesync schließen sich nicht aus sonder ergänzen sich!
fps < Hz dann bestenfalls gsync/freesync
fps > Hz dann bestenfalls tripple buffering

Wenn du beispielsweise 183 fps hast kann dir gsync/freesync auch nicht mehr helfen. Dein Monitor refresht so schnell er kann. Er wird alle 60/120/144 fps ausnutzen. Bestenfalls zeigt er das aktuellste Bild an --> Tripplebuffering


Daedal schrieb:
Tripplebuffering wird nur benötigt wenn die FPS ausser Sync sind mit den Monitor Frequenzen um dann nicht einen vollen Takt noch warten zu müssen. Doch da der Monitor die Hz immer exakt dem FPS anpasst macht das keinen Sinn noch einen Frame vorzuhalten, da der ja nie angezeigt wird. Der fertig gerenderte frame wird sofort dargestellt und initiiert bei Auslieferung den Refresh des Monitors selber.

Also für fps > Hz

Daedal schrieb:
Ergänzung ()

Denk das in Ruhe nochmal durch...was nützt es dir deine schnellen Eingaben im nächsten Frame nicht dargestellt zu bekommen auf dem Monitor? Im Gegenteil deine Eingabe wird sogar verworfen und deine nächste Eingabe auch noch...so kommt nur jede dritte deiner Eingaben für dich sichtbar auf den Monitor... also nachdem du die Maus bewegt hast wartest du 3 frames um zu sehen wo sie gelandet ist? Das nennst du dann weniger Input Lag?

Es hat sehr wohl Sinn Tripplebuffering zu verwenden. Spiel mal Dead Space 1 mit vsync! Da wird nämlich Double statt Tripplebuffering verwendet... das ist unglaublich....
 
Nvidia hält sich ein Hintertürchen offen, falls Gsync sich nicht durchsetzt, wird halt der Standard unterstützt...schon verwunderlich? Man möchte meinen, sie wären absolut von ihrem Produkt überzeugt...sehr unwahrscheinlich, bedeut kein Nein.
 
paul1508 schrieb:
Es hat sehr wohl Sinn Tripplebuffering zu verwenden. Spiel mal Dead Space 1 mit vsync! Da wird nämlich Double statt Tripplebuffering verwendet... das ist unglaublich....
Das was dort beschrieben ist in meinem Zitat ist aber kein Triple-Buffering. Das ist die obskure Idee die so nicht funktioniert!
Die Behauptung es würden 180 Frames gerendert und dann jeder dritte nur dargestellt und auf diese Weise ein inputlag verkleinert ist einfach Humbug.
 
Daedal schrieb:
Das was dort beschrieben ist in meinem Zitat ist aber kein Triple-Buffering. Das ist die obskure Idee die so nicht funktioniert!
Die Behauptung es würden 180 Frames gerendert und dann jeder dritte nur dargestellt und auf diese Weise ein inputlag verkleinert ist einfach Humbug.

Er meint Tripple Buffering, ich glaube ihr wisst nicht recht von was wir hier reden.

Gsync + freesync BRINGEN NUR WAS BEI WENIGER ALS 60 bzw. 120 bzw. 144 FPS!!!

Bei mehr fps gehts um Tripple Buffering... da kann man nichts mehr synchen da der Monitor das Signal immer so schnell wie möglich ausgibt!. Ein Gsync/freesync Monitor läuft bei 180 fps genauso wie ein normaler Monitor! ---> Mit seiner maximalen Bildrate punkt aus.


Es ist leider so.... Wichtig ist immer, dass Zeitnahe das letzte Dargestellt wird... Wenn du kein Tripple-Buffering hast, wird nachdem das Frame fertig gerendert ist gewartet bis der sync kommt. Bei einem 60 Hz Monitor und theoretisch 181 fps wäre das so:

1. Es passiert etwas im Spiel, die Grafikkarte rendert diesen Moment
2. Bei 181 fps wäre das Bild nach 5,5 ms fertig. Diese Bild wird nun im Speicher gehalten bis der nächste Refresh kommt.
3. Nach 16,6 ms (bei 60 Hz) kommt nun der refresh und es wird das Bild von Zeitpunkt 0 ms angezeigt.

Bis der Moment der im Spiel passiert angezeigt wird dauert es also 16,6 ms!

Bei tripple buffering gehts so:

1. Es passiert etwas im Spiel, die Grafikkarte rendert diesen Moment
2. Bei 181 fps wäre das Bild nach 5,5 ms fertig. Die Grafikkarte fängt sofort an (in den dritten buffer) den jetzt aktuellen Moment von 5,5 ms zu rendern.
3. Das zweite Bild wird fertig nach insgesamt 11,0 ms, mit dem ersten getauscht, das erste wird gelöscht und nun wieder für den aktuellen Zeitpunkt die Frame Berechnung gestartet.
4. Das dritte Bild wird fertig nach insgesamt 16,5 ms, mit dem zweiten getauscht, das zweite wird gelöscht und nun wieder für den aktuellen Zeitpunkt die Frame Berechnung gestartet.
5. Bevor das vierte Frame fertig wird macht der Monitor einen Refresh nach 16,6 ms.... Das dritte Bild welches zum Zeitpunkt 16,5 ms fertig wurde und ein Geschehen vom Zeitpunkt 11 ms zeigt wird ausgegeben.

Der lag zwischen Geschehen in der Spielwelt und Bildausgabe liegt bei 5,6 ms.

5,6 ms < 16,6 ms lag...

Das Spürt man sehr wohl.

Ein sehr guter Tip ist übrigens die Bildwiederholfrequenz knapp über einem vielfachen zu begrenzen! Also 181 fps ist beispielsweise bei einem 60 Hz Monitor das beste was passieren kann. 179 fps wäre schon wieder Blöd, weil da würde das dritte Frame nicht mehr fertig werden und er würde das zweite Frame ausgeben. Wenn man sowieso keine 180 fps schafft sonder eher so bei 160 fps herum dümpelt sollte man die fps bei 121 fps cappen. In dem Fall würde er den zweiten Frame später zum berechnen anfangen aber gerade rechtzeitig damit er kurz vor dem refresh noch fertig wird --> möglichst niedriger lag.
 
Zuletzt bearbeitet:
Schön. dass du mir erklärst wie Triple-Buffering funktioniert, während ich dir versuche zu erklären, dass der Herr eben dies nicht meinte. Lies einfach mal von vorne.

Denkst du das hier beschreibt Triplebuffering?
noxon schrieb:
FreeSync kann nichts anderes machen als die Engine des Spiels auf die Geschwindigkeit des Monitors zu drosseln, damit nicht wieder ein Tearing Effekt entsteht. Deswegen wird VSync aktiviert. Das Spiel läuft also maximal mit 60 fps und damit erhöht sich auch der Input Lag für Maus und Keyboard Eingaben im Vergleich zu den theoretisch möglichen 180 fps. Die Input Devices können eben immer nur alle 16 ms abgefragt werden anstatt alle 5 ms.

Wo liegt nun der Unterschied zu G-Sync?
Ein G-Sync Monitor akzeptiert von der Grafikkarte so viele Bilder wie möglich und speichert sie immer wieder in dem Puffer des G-Sync Moduls. Das Spiel läuft also mit vollen 180 fps und liefert auch 180 Bilder pro Sekunde an das G-Sync Modul.
Allerdings holt sich der Monitor immer nur jedes dritte Bild aus dem G-Sync Puffer da der Monitor eben nur mit 60 Hz aktualisiert.
So verhindert G-Sync auch Tearing und trotzdem läuft das Spiel immer noch mit Frameraten über der Refreshrate des Monitors.

So etwas geht eben nur mit zusätzlicher Hardware und nicht durch einfaches synchronisieren von Monitor und Grafikkarte.
1. Es passiert etwas im Spiel, die Grafikkarte rendert diesen Moment
2. Bei 181 fps wäre das Bild nach 5,5 ms fertig.Und hier ist dein Input deiner Maus enthalten Die Grafikkarte fängt sofort an (in den dritten buffer) den jetzt aktuellen Moment von 5,5 ms zu rendern.
3. Das zweite Bild wird fertig nach insgesamt 11,0 ms, mit dem ersten getauscht, das erste wird gelöscht Was passiert mit den Inputinfos? Auch gelöscht?und nun wieder für den aktuellen Zeitpunkt die Frame Berechnung gestartet.
4. Das dritte Bild wird fertig nach insgesamt 16,5 ms, mit dem zweiten getauscht, das zweite wird gelöscht Was passiert mit den Inputinfos? Auch gelöscht? und nun wieder für den aktuellen Zeitpunkt die Frame Berechnung gestartet.
5. Bevor das vierte Frame fertig wird macht der Monitor einen Refresh nach 16,6 ms.... Das dritte Bild welches zum Zeitpunkt 16,5 ms fertig wurde und ein Geschehen vom Zeitpunkt 11 ms zeigt wird ausgegeben. Und wo soll die Maus nun platziert werden? Die Info aus dem ersten Bild ist ja weg. Und wie kam die Maus da hin? Es fehlen zwei Bilder welche die Bewegung dorthin darstellen sollten

Der lag zwischen Geschehen in der Spielwelt und Bildausgabe liegt bei 5,6 ms.
Ergänzung ()

Tripple Buffering nutzt 2 Puffer für die Bildausgabe als Cache (Backbufer) und einen der das aktuelle Bild darstellt (Frontbuffer),
Der Backbuffer wechselt lediglich 2 Bilder: Ein fertig gerendertes das bereit steht sobald der Monitor refresht, und eines das gerade fertig gerendert wird von der GPU. Sobald der Monitor refresh kommt das Bild aus dem Backbuffer 1 in den Frontbuffer und das aus Backbuffer 2 wird in Backbuffer 1 verschoben, damit die GPU wieder an einem neuen Bild zu arbeiten anfängt. Da werden keine Bilder gelöscht ohne zuvor angezeigt worden zu sein im Frontbuffer und somit ist die Latenz leicht zu berechnen - was dabei witzig ist, dass eben genau die selben Zahlen dabei raus kommen können. Nur funktioniert das eben weder mit ASync noch mit GSync, da es keinen Backbuffer benötigt, sondern die GPU direkt mit dem fertigen Frame den Monitor refreshen kann. Der Monitor wartet schließlich mit dem Refresh auf das Vblank und somit kommt man auch nicht in Taktungleichheit.
http://www.tweakguides.com/Graphics_10.html
The graphics card uses the secondary buffer to compose a new frame while the primary buffer is sending an existing completed frame to the monitor. When these tasks are done, the buffers are essentially 'flipped' around so that the recently completed frame in the secondary buffer now becomes the primary buffer ready to send to the monitor, while a new frame begins composing in what was the primary buffer a moment ago. This is repeated over and over and thus the use of two buffers means that the graphics card is not constantly waiting for a single frame buffer to be cleared before getting on with rendering more frames to store there.
 
Zuletzt bearbeitet:
Zurück
Oben