Könnte eine Frame-Interpolation, wie sie von SmoothVideo Project verwendet wird, eine Option sein, um die Framerate von Spielen ohne einen so großen Leistungseinbruch zu erhöhen?

11

Das SmoothVideo-Projekt verwendet die Frame-Interpolation, um die fps von Videos von 24 auf 60 zu erhöhen. Die Ergebnisse sind ziemlich beeindruckend . Ich habe mich gefragt, ob dies angewendet werden kann und ob es in Videospielen gut aussehen würde.

Es verbraucht viel weniger Ressourcen als das Rendern aller Frames, sodass Rigs am unteren Ende in der Qualität von viel besseren Rigs mit einem gewissen Kompromissniveau gerendert werden können. Ich weiß, dass es nicht so genau ist und die Eingangslatenz geringfügig erhöhen würde, da es am neuesten Frame festhalten muss, um den interpolierten Frame erzeugen und einfügen zu können. Es ist jedoch nicht so schlecht wie ein Vollbild. Nach meiner Überlegung wäre nur die Verzögerung die Interpolationszeit plus die Hälfte der ursprünglichen Aktualisierungszeit für fps. Für 30 fps wären es also 33 ms / 2 + Interpolationszeit.

Vielleicht würde diese Verzögerung es für schnelle First-Person-Spiele in der Vergangenheit ungeeignet machen, aber ich bezweifle, dass es ein Hindernis für langsamere Spiele wäre.

Die Verzögerung wird bei höheren Startraten geringer, daher würde ich denken, dass es sich sicherlich lohnt, von 60 fps auf über 100 fps zu wechseln, was die Erfahrung verbessert, wenn auch nur geringfügig, während das System extrem belastet wird.

Cybrbeast
quelle
In mancher Hinsicht geschieht dies bereits mit Bewegungsunschärfe. Das Fehlen abgeleiteter Bewegungsdaten (in einigen Antworten beschrieben) wird durch die Verwendung der Bewegungen bereits bekannter Objekte behoben . Der einzige Unterschied besteht darin, dass Renderer nicht reibungslos interpolieren, sondern mehrere Interpolationen durchführen und eine Mischung daraus erstellen. Die von Ihnen beschriebene Interpolation wird wahrscheinlich nicht verwendet, da sich die Okklusion ändert und ein unerwünschtes Ergebnis erzielt wird.
Transistor09

Antworten:

6

Ein System in dieser Richtung wurde in The Force Unleashed verwendet . Andere Titel, die es verwendet haben, sind mir jedoch nicht bekannt.

DMGregory
quelle
1
Danke für die Information. Es wurde eine Veröffentlichung darauf gefunden: dl.acm.org/citation.cfm?id=1837047 Es scheint erfolgreich zu sein. Warum wurde es nicht weiter verbreitet?
Cybrbeast
Meistens aus den in der Antwort von Byte56 dargelegten Gründen: Es ist nicht ohne Nachteile, und in vielen Fällen lohnen sich diese Nachteile nicht, da es auch andere Möglichkeiten gibt, höhere Bildraten zu erzielen.
1
Laut diesem Artikel kann diese Methode durch prädiktive Interpolation die Latenz reduzieren! eurogamer.net/articles/… Es scheint also in allen Metriken besser zu sein. Aber etwas muss fehlen, da man denken würde, es würde überall verwendet, wenn dies wahr wäre.
Cybrbeast
@David: Der Artikel bedeutet, dass die scheinbare Latenz für bestimmte Eingabetypen im Vergleich zur Ausführung mit 30 fps verringert wird . Nativ mit 60 fps zu arbeiten ist immer noch vorzuziehen, wenn dies möglich ist (bessere Latenz und keine Interpolationsartefakte), so dass viele Entwickler dies als ihr Ziel erster Wahl betrachten. Wenn Spiele nicht 60 fps erreichen, bleibt nicht immer genug Zeit oder Budget, um ein Interpolationssystem zu erstellen, um die Lücken zu schließen. Dieses System ist ziemlich kompliziert und wird im Fall von TFU durch einige Facetten ihrer Rendering-Pipeline unterstützt, die dies nicht tun universell von allen Spielen geteilt.
DMGregory
Ich habe versucht, in allen Metriken besser zu sagen als 30 fps ohne Verbesserung, nicht mit 60 fps gerendert
Cybrbeast
9

Ja, es ist möglich, aber nicht ohne Komplikationen.

Während die Frame-Interpolation bei Videos in Echtzeit funktionieren kann, ist dies bei Videospielen nicht unbedingt der Fall. Obwohl dies für Videos in Echtzeit verarbeitet wird, kann die Software auf das nächste Bild "vorausschauen". Dies ist eine ziemlich kritische Komponente der Interpolation. Hier kommt das Problem bei Spielen ins Spiel. Meistens wurde der nächste nächste Frame noch nicht gerendert! Die Software kennt also den nächsten Punkt in der Interpolation nicht.

Es besteht sicherlich die Möglichkeit, das Spiel ein oder zwei Frames hinter sich zu lassen, um Ihrer Interpolationssoftware die Frames zu geben, mit denen sie arbeiten muss. Dies funktioniert jedoch nicht so gut für interaktive Medien. Was jetzt auf dem Bildschirm angezeigt wird, wird von der empfangenen Eingabe verzögert. Dies macht die Verarbeitung von Eingaben schwieriger und bietet eine gute Reaktionsfähigkeit auf das Spiel. Es ist, als würde man eine künstliche Leistungsverzögerung einbauen. Darüber hinaus ist es unwahrscheinlich, dass native Unterstützung in einer der großen Spiel-Engines vorhanden ist, was bedeutet, dass Sie Ihre eigene schreiben.

MichaelHouse
quelle
Gibt es eine Reaktion auf diese intelligentere Interpolationsmethode, die behauptet, eine Erhöhung der Latenz zu verhindern? eurogamer.net/articles/…
Cybrbeast
In diesem Fall gilt in erster Linie der letzte Satz. Ich bin mir nicht sicher, wie sehr ihre Technologie diese Funktion abstrahiert hat. Es könnte erheblich mehr Arbeit gekostet haben, die Interpolation nicht zu unterbrechen, oder es hätte "einfach funktionieren" können. Ich stelle mir vor, wenn es das letztere wäre, könnten wir sehen, dass es in einigen der Hauptmotoren auftaucht (wenn es nicht patentiert ist). Ich bin mir nicht sicher, ob es sich lohnt, diese Funktion allein zu erstellen und zu warten.
MichaelHouse
Unsicher über die Behauptung, dass das Zurücklaufen eines Frames ein großes Hindernis für die Interaktivität darstellt. Alle Multiplayer-Spiele, die einen autorisierenden Server mit (Spielstatus-) Interpolation zwischen den letzten beiden Updates verwenden, weisen häufig eine größere Verzögerung auf. Dies schließt jedoch einige der schnellsten Shooter-Spiele ein. Wir brauchen auch nicht unbedingt den nächsten Frame, um Intermediate in Spielen zu konstruieren, da Spiele im Gegensatz zu Videos Boden-Wahrheits-Objektmasken und Informationen zur Geschwindigkeit des Bildschirmraums (ähnlich wie Bewegungsunschärfeeffekte) generieren können, die extrapoliert werden können.
DMGregory
2

Ja, dies ist nicht nur möglich, sondern jetzt verfügbar: Schließen Sie Ihren Spiel-PC / Ihre Spielekonsole an einen Fernseher an, der Bewegungsinterpolation verwendet . Die Meinungen variieren, und dies ist aufgrund der Interpolationsverzögerung weniger für zuckende Spiele wie FPS geeignet, aber für das Hochskalieren von Bildraten von 60 auf 120 Hz funktioniert es einwandfrei.

Ob dies im Spiel selbst möglich ist, gibt es noch nicht genug Impulse, da die meisten Monitore diese hohen Bildraten nicht ausgeben können. 120 + Hz-Monitore für Computer sind weniger verbreitet, obwohl dies nach dem Stand der Fernsehgeräte bald passieren kann. Ein Monitor mit hoher Bildwiederholfrequenz hat auch dann Vorteile, wenn das Spiel diese Bildraten nicht erreichen kann: Neben der oben genannten TV-basierten Bewegungsinterpolation kann es flüssigere Bilder bieten, wenn das Spiel Bilder ausgeben kann, wenn sie bereit sind, anstatt sie zu synchronisieren up ala v-sync. Sobald 120 + Hz-Monitore an der Tagesordnung sind, erwarte ich, dass Spieleentwickler aufholen und mehr Tricks anwenden, einschließlich Bewegungsinterpolation, um diese hohen Bildraten zu erreichen.

Congusbongus
quelle
3
Ich habe die Erfahrung gemacht, dass diese Systeme eine enorme Eingangslatenz haben, wie 200 + ms (12+ Frames bei 60fps). Dies ist der Grund, warum diese Fernseher normalerweise einen "Spielemodus" haben, der diese Funktion deaktiviert.
BlueRaja - Danny Pflughoeft
0

Die Verzögerung zwischen dem Zeitpunkt, zu dem der Benutzer etwas tut, und dem Zeitpunkt, zu dem das Ergebnis auf dem Bildschirm angezeigt wird, sollte niemals 100 ms überschreiten, da der Benutzer sonst möglicherweise die Verzögerung bemerkt.

Der Monitor des Benutzers benötigt möglicherweise etwa 30 ms, um das empfangene Bild anzuzeigen. Es sind viel schnellere Monitore verfügbar, aber viele durchschnittliche Benutzer haben diese nicht. Wenn die Grafikkarte 30 Bilder pro Sekunde berechnet, dauert die Berechnung eines Bilds 33 ms. Ich gehe von 30 fps aus, da wir keine Frame-Interpolation benötigen, wenn das Spiel bereits mit 60 fps läuft. Wenn wir dreifache Pufferung verwenden, wird diese auf 66 ms verdoppelt. Das sind 90 ms.

Ich denke, wir brauchen eine dreifache Pufferung, damit die Frame-Interpolation Sinn macht. Wenn wir also zusätzlich eine Frame-Interpolation verwenden, um 60 fps zu erhalten, erhöhen wir die Verzögerung um einen 60-Hz-Frame, was einer weiteren Interpolationszeit X von 17 ms + entspricht, was uns auf 107 ms + X bringt. Das Problem ist nicht die Interpolation als Dies ist jedoch die Tatsache, dass wir uns bereits dem Punkt nähern, an dem die Latenz spürbar ist, bevor wir die Interpolation einführen.

Es wäre wahrscheinlich in Ordnung für ein Spiel, das hauptsächlich ein virtueller Film ist, aber in einem FPS würden die Benutzer bemerken, dass etwas mit dem Zielen nicht stimmt.

Peter
quelle