Ist das Anzeigen einer Kollision in Zeitlupe rechnerisch entspannend?

11

In vielen Rennspielen ( z. B. Burnout Paradise ), wenn eine Kollision bevorsteht, wechselt das Spiel automatisch in Zeitlupe und wird in langsamer Reihenfolge fortgesetzt, bis die Kollision abgeschlossen ist.

Ich dachte immer, das sei für die Effekte. Sie möchten keinen Teil der Kollision verpassen! Aber einer meiner Freunde hat kürzlich vorgeschlagen, dies zu tun, um sicherzustellen, dass bei einer Kollision keine überwältigende Verarbeitungsrate erforderlich ist.

Jetzt denke ich, dass es tatsächlich umgekehrt ist. Wenn eine Kollision auftritt und so viele Details in Zeitlupe angezeigt werden, ist die Rechen- und Rendering-Pipeline mit Sicherheit ein Overhead.

Was ist korrekt?

Erhöht oder verringert eine Zeitlupenszene die CPU- / GPU-Auslastung?

Laser
quelle

Antworten:

4

Wenn Sie Ihre Physiksimulation mit einem festen Zeitschritt ausführen (wie Sie sollten), wird die Physiksimulation durch eine Zeitlupe weniger belastet, da weniger Berechnungen pro Frame durchgeführt werden müssen.

Nehmen wir an, Sie führen Ihre Physik mit 200 Updates pro Sekunde aus. Z.B. ein Update alle 0.005Sekunden der Simulationszeit. Wenn Sie das Spiel mit 50 Updates pro Sekunde ausführen, würde dies zu 4 Physik-Updates pro Render-Update führen. Jetzt würden Sie das Spiel in Zeitlupe ausführen, was bedeutet, dass Sie die Simulationszeit verlangsamen. Wenn das Spiel also immer noch mit 50 Updates pro Sekunde ( 0.02Sekunden Simulationszeit) ausgeführt wird, Sie aber die Welt in Zeitlupe zeigen (sagen wir die halbe Geschwindigkeit), entspricht ein Frame 0.01Sekunden Simulationszeit. Also nur 2 Physik-Updates pro gerendertem Frame. Das bedeutet weniger Physikberechnungen pro gerendertem Frame.

Wenn Sie es also aus der Perspektive der CPU-Auslastung pro gerendertem Frame betrachten, ist Zeitlupe weniger CPU-schwer (es sei denn, Sie erhöhen Ihre Physik-Simulationsrate während der Zeitlupe). Die GPU-Last pro Frame ist natürlich ziemlich konstant.

Wenn Sie nach der kumulativen CPU- / GPU-Last für die Dauer einer Kollision fragen , ist die Physiksimulation offensichtlich dieselbe, sei es in Zeitlupe oder mit normaler Geschwindigkeit. Die GPU-Last ist höher, da Sie mehr Frames rendern.

bummzack
quelle
In Ihrem ersten Absatz wird davon gesprochen, dass die GPU-Last höher ist. Ich würde erwarten, dass die Belastung der GPU relativ konstant ist oder besser gesagt direkt mit der Framerate zusammenhängt (vorausgesetzt, der Inhalt der Szene ändert sich nicht).
Notlesh
Er sagte, es sei pro Kollision höher , aber das liegt nur daran, dass die Kollision länger dauert. Wie der letzte Satz des ersten Absatzes sagt.
MichaelHouse
Ich denke, im Durchschnitt sollten die Lasten alle ungefähr gleich bleiben - der Code wird in beiden Richtungen durch dieselben Passagen laufen und somit ungefähr die gleiche Last haben. In besonderen Fällen würde ich denken, dass die Belastung der CPU im Zeitlupenfall tatsächlich höher ist, wenn sie über die Dauer der gesamten Kollision beobachtet wird, da ihre Kollisionsauflösung wahrscheinlich mit einer Art Zeitschrittfaktor funktioniert wird in Zeitlupe viel kleiner sein (wodurch die resultierenden Übersetzungen kleiner werden), was die Wahrscheinlichkeit erhöht, dass Kollisionen pro Frame erkannt werden, was zu einer Auflösung führt
TravisG
Ich füge das nicht als Antwort hinzu, weil ich mir das gerade vorstellen kann und keine Daten oder tatsächlichen Erfahrungen mit Zeitlupensystemen habe, um es zu
sichern
2
@ Byte56 Die Frage lautet: "Erhöht eine Zeitlupenszene die CPU- / GPU-Auslastung?" Dies impliziert [fast] sicher eine Nutzung pro Zeit, nicht pro Kollision. Ich denke, die Antwort für die GPU ist, dass sie unverändert bleibt. Ich spreche das nur an, weil unklar ist, was der erste Absatz zu vermitteln versucht.
Notlesh
3

Es ist möglich , dass dies der Fall sein könnte. Wenn Sie für die Kollision auf der GPU keine Physik betreiben, bedeutet dies, dass Sie in die Hocke gehen. Aber in Bezug auf die Physik selbst ... ist es möglich.

Wenn Sie die Bewegung einer Reihe von Körpern simulieren, neigen diese dazu, sich auf sehr vorhersehbare Weise zu bewegen. Kräfte und Kraftfelder (dh Schwerkraft) sind leicht vorhersehbar. Wo sich die Dinge bewegen, wird schnell berechnet.

Bis eine Sache die andere trifft. Sehen Sie, in der Physik haben Sie eine sogenannte Zeitscheibe; Dies ist die Zeitspanne, die die Ausführung des Physiksystems abdeckt. Wenn Ihre Zeitscheibe 1/30 Sekunde abdeckt (30 fps für das Physik-Update), verschiebt jedes Physik-Update Objekte 33,3 Millisekunden in die Zukunft.

Wenn Objekte nicht kollidieren, können Sie sie einfach vom Anfang dieser 33,3 ms bis zum Ende verschieben. Die Physik dafür ist einfach und seit Jahrhunderten bekannt. Sie bestimmen einfach die Beschleunigung aus den Nettokräften, wenden diese Beschleunigung für die Zeitscheibe auf das Objekt an und bewegen es mit seiner neuen Geschwindigkeit (Hinweis: Dies kann komplexer sein, wenn Sie eine höhere Genauigkeit wünschen).

Das Problem ist, wenn Objekte kollidieren. Plötzlich müssen Sie jetzt die physikalischen Kräfte innerhalb einer Zeitscheibe verarbeiten und nicht nur einmal am Anfang. Wenn ein Objekt innerhalb eines Physikrahmens zwei- oder dreimal kollidiert , müssen Sie mehr Physikberechnungen wiederholen.

Wenn Sie innerhalb einer Zeitscheibe viele Kollisionen haben, können Sie Ihre Framerate wirklich töten. Die Wahrscheinlichkeit mehrerer Kollisionen innerhalb einer Zeitscheibe nimmt jedoch mit abnehmender Größe der Zeitscheibe ab. High-End-Rennsimulationen wie Forza und Gran Turismo betreiben ihre Physiksysteme mit unglaublichen Frameraten. Ich denke, einer von ihnen erreicht bei seinem Physik-Update bis zu 300 + fps.

Zeitlupe ist das effektive Äquivalent dazu. Durch Verringern der Physik-Zeitscheibe, ohne auch die Rendering- Framerate zu erhöhen , um dies zu kompensieren, erscheint die Welt langsamer. Und deshalb machen Sie es viel weniger wahrscheinlich, dass Sie innerhalb einer Zeitscheibe mehrere Kollisionen bekommen.

Abgesehen davon bezweifle ich, dass Spiele wie dieses deshalb in Zeitlupe laufen. Im Allgemeinen ist es eher für visuelles Flair und dramatische Präsentation. Diese Physiksysteme können im Allgemeinen leistungsmäßig damit umgehen.

Nicol Bolas
quelle
1

Dies geschieht zunächst für den visuellen Effekt, nicht aus Leistungsgründen.

Die Standardmethode für den Umgang mit der Leistung in physikintensiven Spielen besteht darin, die Anzahl der Objekte zu skalieren, die Objektkomplexität zu skalieren und mit den Engine-Einstellungen zu experimentieren, um zwischen Simulationsgenauigkeit und Leistung zu skalieren. Wenn es Probleme gibt, würden Sie das fallen lassen, was Sie als die am wenigsten signifikanten Merkmale ansehen.

Denken Sie jedoch daran, dass die Branche in den letzten 15 Jahren ziemlich realistische Autospiele entwickelt hat. Bei modernen Computern ist es nicht so, dass sie auf drei Räder zurückgesetzt werden müssen, um die Dinge zum Laufen zu bringen.

Das Problem:
Es ist wahr, dass eine Kollision zusätzliche Arbeit verursachen kann. Wie viel hängt stark von den Besonderheiten des Spiels ab. Eine detailliertere Physik-Engine weist viele kleine Kollisionen zwischen verschiedenen Teilen auf, die eine erhebliche Erhöhung der erforderlichen Berechnung bedeuten können . Dies sollte jedoch bei der Skalierung der Physik berücksichtigt werden. Es ist kein Problem, eine gute Physik zu erhalten, die noch einige Kollisionen bewältigen kann.

Wenn Sie die Physiksimulation einfach langsamer ausführen, um Zeitlupe zu erhalten, fällt die Last proportional ab. Man sollte jedoch beachten, dass die Anforderungen an Zeitlupe und Echtzeitphysik unterschiedlich sind. Sie können es sich leisten, eine geringere Präzision zu haben, wenn Dinge mit Renngeschwindigkeit passieren. Solange der Spieler nicht bemerkt, dass die Physik-Engine falsch ist, ist dies kein großes Problem. Die Zeitlupe erleichtert das Auffangen der Ausrutscher erheblich, sodass die Zeitlupe höhere Anforderungen an die Präzision stellt.

Man kann sich dafür entscheiden, dieselbe Physik zu verwenden, die skaliert ist, um beide Anforderungen zu erfüllen. Diese Lösung erfordert zusätzliche Rechenleistung, ist jedoch einfach zu implementieren und bei modernen Computern perfekt funktionsfähig.

Das Umschalten der Physikeinstellungen ist komplizierter, kann jedoch zu einigen großartigen Kollisionen führen. Man kann nicht nur die Präzision erhöhen, sondern auch die Physikmodelle der Autos gegen detailliertere austauschen, die realistischer brechen. Dieser Modus sollte ungefähr die gleiche CPU-Zeit für die Physik benötigen wie der normale Modus, einfach weil beide so skaliert sind, dass sie mit derselben Minspec-Konfiguration ausgeführt werden.

Ein mittlerer Weg ist die Verwendung einer Physik mit variablen Schritten. Diese erhöhen im Allgemeinen die Präzision, wenn Sie die Simulation verlangsamen, wodurch zumindest ein Teil des Problems gelöst wird. Es gibt andere Gründe, die Physik mit variablen Schritten nicht zu verwenden, aber variable Schritte sind in der Branche immer noch weit verbreitet.

aaaaaaaaaaaa
quelle