Ich muss meine Einschätzung nochmal korrigieren: Das kürzglich Gesagte gilt nur, wenn man eine 0-Reaktionszeit seitens des Spielers annimmt und der erste Frame einfach schon fertig ist, weil der Redakteur nur den weiteren Verlauf betrachtet.
Geht man von einem fortlaufenden Renderloop und einer gewissen Reaktionszeit aus, ändert sich bei Triple-Buffering als Bezugspunkt erstmal wenig – der Input folgt einen Zyklus später auf den Game-Loop (=>
Output-Lag knapp vier statt knapp drei Zyklen), aber da die Grafikkarte unter meinen ursprünglichen Annahmen ohnehin einen weiteren Zyklus brauchte, ehe sie die das Bild dazu berechnen konnte, ändert bei der Ausgabe nichts (=>
Input-Lag drei statt vier Zyklen).
Bei Double-Buffering dagegen verdoppelt sich der Input-Lag realistischerweise um einen Frame = zwei Zyklen, denn man kann unmöglich während der Anzeige eines Bilds so schnell reagieren, dass die Eingabe schon im folgenden, bereits in Berechnung befindlichen Bild berücksichtigt wird. Und für die Berechnung des ersten Bildes sollte man fairerweise auch zwei Zyklen statt einem einplanen.
Bei DLSS 3.0 hat die Berücksichtigung der Reaktionszeit ähnlich drastische Auswirkungen wie bei Double Buffering: Da die Ausgabe des ersten Frames verzögert erfolgt und wir keine Zauberer sind, kann die Reaktion des Spielers nicht mehr rechtzeitig für den übernächsten Frame erfolgen, sondern erst für den über-übernächsten. Das heißt Frame Generation erzeugt gegenüber Triple-Bffering nicht nur einen weiteren Zyklen mehr Output-Lag, sondern zusätzliche zwei Zyklen Input-Lag gegenüber meiner ursprünglichen Schätzung und somit auch gegenüber Triple-Buffering. Das ist genauso mieß wie der Worst-Case bei Double-Buffering mit einem Drittel der (interpolierten) Framerate. Dazu verschlimmert sich auch noch die Zeit, bis man überhaupt reagieren kann, gegenüber Triple-Buffering genauso stark, wie vom Double-Buffer-Best-Case zu Triple-Buffering.
Im Anhang habe ich das mal mit den benötigten Puffern in der GPU darzustellen versucht.
Anmerkung:
Die Begriffswahl ist dem gängigen Gebrauch angepasst, der aber irgendwie reichlich bescheuert ist. Warum nutzen wir eigentlich "
Input-Lag" für den Zeitraum von einer Spielereingabe (z.B. Mausbewegung) bis zu deren Darstellung, obwohl es sich um das
Warten auf eine Ausgabe handelt? Der oben beschrieben
Output-Lag wiederum gibt die Zeit an, bis der Spieler endlich eine
Eingabe auf ein Ingame-Ereignis tätigt.