Frame Generation
Verfasst: 14.09.2025, 15:43
Moin,
wie funktioniert eigentlich Frame-Generation? Also jetzt insbesondere in Hinblick auf Latenz.
Also, das Generieren ansich scheint klar. Man könnte irgendein halbwegs effizientes Neuronales Netzwerk nehmen, gibt ihm 2 gerenderte Frames und vielleicht noch Zusatzinfos wie Kamerabewegung und Tiefenkarte und herauskommt eine temporale Interpolation beider Bilder - das Frame was gut dazwischen passen könnte.
Aber wie sieht dazu die Zeitachse aus? Ich habe mal eine professionelle Skizze angefertigt:
Man sieht zwei Zeitachse, oben ohne Frame-Generation, unten mit. A und B sind zwei Frames die gerendert werden, in Gelb ist der interpolierte Frame eingezeichnet.
Jetzt sieht man in der Mitte noch in Blau die Eingabe und in Hellblau die Eingabe Latenz. Man drückt eine Taste, die Spielwelt wird aktualisiert und ein neuer Frame gerendert und kurz darauf angezeigt. Das ist der Fall oben, die Latenz ist nett und kurz.
Ok, wenn jetzt Framegeneration 2 Bilder interpoliert, müssen dafür beide fertig sein. Zusätzlich benötigt das Generieren auch minimal Zeit, also kommt der gelbe Strich unten kurz nach dem grünen Strich oben. Man will vielleicht gleichmäßige Frame-unterschiede haben, also wird rot und grün entsprechend nach hinten geschoben, so dass die Framerate verdoppelt wird.
Jetzt hat man im Ergebnis zwar doppelt so viele Frames, aber die Eingabelatenz wurde auch mehr als verdoppelt. Ist das im Wesentlichen, was in echt so passiert? Als Alternative viele mir noch ein, dass man ja vielleicht statt Interpolation auch Extrapolation machen könnte, d.h. man schaut sich den letzten und vorletzten Frame an und rät, wie der nächste Aussehen könnte - allerdings ist das bei jeder Art von Richtungsänderung natürlich ein viel schwierigeres Problem für das Netzwerk, und wenn es falsch liegt wird man das in deutlichen Sprüngen sehen. Aber zumindest könnte man so ggf. die Latenz unverändert lassen, weil man Frame A und B zum selben Zeitpunkt wie zuvor anzeigen könnte.
wie funktioniert eigentlich Frame-Generation? Also jetzt insbesondere in Hinblick auf Latenz.
Also, das Generieren ansich scheint klar. Man könnte irgendein halbwegs effizientes Neuronales Netzwerk nehmen, gibt ihm 2 gerenderte Frames und vielleicht noch Zusatzinfos wie Kamerabewegung und Tiefenkarte und herauskommt eine temporale Interpolation beider Bilder - das Frame was gut dazwischen passen könnte.
Aber wie sieht dazu die Zeitachse aus? Ich habe mal eine professionelle Skizze angefertigt:
Man sieht zwei Zeitachse, oben ohne Frame-Generation, unten mit. A und B sind zwei Frames die gerendert werden, in Gelb ist der interpolierte Frame eingezeichnet.
Jetzt sieht man in der Mitte noch in Blau die Eingabe und in Hellblau die Eingabe Latenz. Man drückt eine Taste, die Spielwelt wird aktualisiert und ein neuer Frame gerendert und kurz darauf angezeigt. Das ist der Fall oben, die Latenz ist nett und kurz.
Ok, wenn jetzt Framegeneration 2 Bilder interpoliert, müssen dafür beide fertig sein. Zusätzlich benötigt das Generieren auch minimal Zeit, also kommt der gelbe Strich unten kurz nach dem grünen Strich oben. Man will vielleicht gleichmäßige Frame-unterschiede haben, also wird rot und grün entsprechend nach hinten geschoben, so dass die Framerate verdoppelt wird.
Jetzt hat man im Ergebnis zwar doppelt so viele Frames, aber die Eingabelatenz wurde auch mehr als verdoppelt. Ist das im Wesentlichen, was in echt so passiert? Als Alternative viele mir noch ein, dass man ja vielleicht statt Interpolation auch Extrapolation machen könnte, d.h. man schaut sich den letzten und vorletzten Frame an und rät, wie der nächste Aussehen könnte - allerdings ist das bei jeder Art von Richtungsänderung natürlich ein viel schwierigeres Problem für das Netzwerk, und wenn es falsch liegt wird man das in deutlichen Sprüngen sehen. Aber zumindest könnte man so ggf. die Latenz unverändert lassen, weil man Frame A und B zum selben Zeitpunkt wie zuvor anzeigen könnte.