Warum nutzt FlightGear nicht mehr Rechenleistung?

2258
Magix

Ich habe kürzlich FlightGear heruntergeladen, weil ich Lust hatte, ein Flugsimulationsspiel zu spielen. Ich verwende Windows 10 und habe ein Problem mit der Framerate.

Das Spiel erreicht nie mehr als 25 Bilder pro Sekunde und hat manchmal eine Frame-Verzögerung von 80 ms. Wie Sie dem folgenden Bild entnehmen können, das meine CPU-, GPU- und Speicherauslastung beschreibt (dies sind Process Hacker-Daten, daher bin ich ziemlich zuversichtlich). Ich habe immer noch mehr als 5 GB RAM und die CPU / GPU-Nutzung geht kaum über 20% ...

http://hpics.li/763d92d

Außerdem läuft mein PC alle aktuellen Spiele mit 60 FPS sehr gut und ist mit einem Intel Core I7 3770K und einem schönen Nvidia GTX780TI mit 16 GB RAM ausgestattet. Meine Grafiktreiber (und im Wesentlichen alle Treiber) sind auf dem neuesten Stand.

Ich gebe zu, dass ich jede einzelne Einstellung auf dem Simulator ausgereizt habe. Ich werde in einem Kommentar einen Link posten, in dem Sie meine preferences.xml-Datei herunterladen können (ich bin eigentlich durch rep eingeschränkt). Die einzige Änderung, die ich manuell vorgenommen habe, ist das Erlauben von Multithreading (durch das Auskommentieren einer Zeile, und dies hat keine Auswirkungen auf die Leistung). Alles andere wurde im Spiel selbst voll ausgeschöpft. Ich habe auch überprüft, dass ich die Framerate nicht auf etwas weniger als 60FPS, meine Bildschirm-Framerate, beschränkte.

Warum benötigt das Spiel nicht mehr Rechenleistung, um ein reibungsloses Spielerlebnis zu ermöglichen, da mein Computer dazu in der Lage ist?

Ich habe auch überprüft, ob meine Grafikkarte vom Spiel unterstützt wird. Nun, es ist: Es steht "NVIDIA Corporation GeForce GTX 780 TI / PCIe / SSE2" auf der Registerkarte "Hilfe" und wird in den "Problematic-Videokarten" nicht erwähnt "Seite des Spiel-Wikis. Da ich das Spiel unter Windows spiele, kann ich es nicht kompilieren, um den integrierten Profiler zu verwenden, der die Google-Perf-Tools verwendet. Leider :-(

Lassen Sie mich wissen, ob ich weitere Informationen geben kann, um dieses Problem zu beheben. Dies kann vielen Menschen helfen, das gleiche Problem zu lösen. Vielen Dank.

Zweiter Bildschirm mit detaillierten OSG-Statistiken enter image description here

1
Sie können meine `preferences.xml`-Datei herunterladen [hier] (http://www.filedropper.com/preferences) Magix vor 8 Jahren 0
Wie @Richard_Harisson vorschlug, [hier ist ein weiterer Debug-Screenshot mit farbigen Balken] (http://imgur.com/tfX7u8x) Magix vor 8 Jahren 0
Sie finden den FlightGear-Forumsthread, der sich auf diese Frage bezieht [hier] (http://forum.flightgear.org/viewtopic.php?f=25&t=28559&p=273384#p273384). Magix vor 8 Jahren 0

1 Antwort auf die Frage

0
Richard Harrison

Wenn FlightGear anscheinend nicht alle Ressourcen nutzt, liegt dies wahrscheinlich an einem Ungleichgewicht zwischen CPU und GPU. Bestimmte Vorgänge können zu einer begrenzten CPU und andere zu einer GPU führen.

Aus dem Screenshot ist die erste Beobachtung, dass die interne Prozessüberwachung aktiv ist. Dies hat erhebliche Auswirkungen auf die Framerate.

Die grafische Benutzeroberfläche in FlightGear wurde mit der PUI erstellt. Diese wirkt sich auf die Bildfrequenz aus, wenn Dialoge angezeigt werden. Besonders Dialoge, die häufig aktualisiert werden, da die PUI nicht so effizient ist. Es besteht Einigkeit darüber, dass die PUI ersetzt werden muss, aber bis jetzt glaube ich nicht, dass irgendjemand daran arbeitet.

Verwenden Sie Debug-> Cycle on screen statistics, um den Frameratezähler von OpenSceneGraph zu aktivieren. Sie müssen möglicherweise F10 verwenden, um die Menüleiste auszublenden, sodass sie sichtbar ist, wenn sie oben links angezeigt wird. Dies ist wesentlich effizienter als der auf PUI basierende Monitor im Bildausschnitt.

FlightGear verfügt über 3 Rendering-Engines. basic, ALS und Rembrendt.

Ich finde, dass ALS (Atmosphärische Lichtstreuung aus den Ansichts-> Rendering-Optionen) die beste Balance zwischen einer gut aussehenden Szene und einer angemessenen Bildfrequenz bietet.

Wenn Sie den Schieberegler für Zufallsvegetation auf das Maximum eingestellt haben, führt dies wahrscheinlich zu viel Geometrie zum Rendern. Halten Sie sich hierfür bei Werten um 3,5 und stimmen Sie diese schrittweise nach oben, bis ein Gleichgewicht zwischen den Bäumen und eine gute Framerate besteht.

Wenn Sie Rembrandt verwenden (verzögertes Rendern, das immer noch offiziell experimentell ist), erhalten Sie eine emittierende Beleuchtung und die Option, Schatten zu erzeugen, um Lichtpunkte zu blühen. Dies erfordert jedoch mehrere Durchläufe über der Geometrie und ist langsamer als ALS - aber das Sonnenlicht Das Modell ist eher simpel und ALS ist im Allgemeinen besser IMO.

Sie erhalten auch bessere Wolken, wenn Sie detailliertes Wetter verwenden, das jedes Mal eingeschaltet werden muss.

Es mag zwar ansprechend erscheinen, alle Schieberegler einfach auszulasten, weil Sie ein High-End-System haben - mit allem Respekt ist das nicht der Grund, warum sie da sind. Mit den Schiebereglern können Sie die verfügbaren Rendering-Optionen anpassen, um eine Balance zwischen Bildfrequenz und Funktionen zu erhalten.

Auch 3.6RC und das kommende Release 3.8 oder 2016 haben den Speicherbedarf reduziert, was zu einer besseren Leistung führt.

Es ist eine Schande, dass 3.6 im August nicht veröffentlicht wurde (aufgrund fehlender Arbeitskräfte), da dies vor allem beim ALS-Cockpit und den Glaseffekten eine deutliche Verbesserung darstellt.

Der derzeit nächtliche Build kann stabil sein; Es lohnt sich, diese herunterzuladen und auszuprobieren, bis Sie einen bekommen, der gut ist. Wenn es nicht gut ist, ist der 3.6RC einen Versuch wert.

Also oftmals zuerst herausfinden, was der Engpass (CPU / GPU) ist und entsprechend einstellen. Die OSG-Bildschirmstatistiken können hilfreich sein, um dies zusammen mit Systemüberwachungs-Tools zu diagnostizieren, um die GPU- und CPU-Auslastung zu verstehen.

FlightGear nutzt derzeit einige Vorteile von Multicore-Systemen. Die Arbeit ist im Gange, um dies zu verbessern - aber das wird nicht wirklich den Fall regeln, in dem ein einzelner Kern die GPU maximal gespeist hat. oder wenn die GPU mit Geometrie so ziemlich ausgereizt wird, wie dies bei OpenGL so ziemlich der Fall ist, kann durch Multithreading nur so viel erreicht werden.

Wenn Sie das Bild unten betrachten, können Sie sehen, dass die Cyan-Balken gleichzeitig ablaufen. Dies ist OSG-Multithreading. FlightGear (mit nicht verzögertem Rendering) verwendet zwei Kameras (nah und fern) - so hat OSG Multithreading einen Vorteil. Sie werden jedoch auch feststellen, dass meine Bildrate (i7 2600, R9 290) nur etwas 30 beträgt.

FlightGear OSG Stats

Wenn ich bei KLSV im Cockpit mit angemessenen Rendering-Einstellungen sitze, bin ich bei 30 bis 35 FPS. Wenn ich in den Himmel schaue (wo es viel weniger Geometrie gibt) bekomme ich 80 FPS.

FlightGear geometry comparison

Verweisen Sie auf Ihren Screenshot der detaillierten Statistiken. Die zwei parallelen Culls zeigen uns, dass OSG Multithreading ist. Die GPU-Zeiten sind jedoch mit 104 Millionen Ecken sehr lang. Es sieht also so aus, als würde die GPU die Dinge hochhalten - was mit Ihren Karten seltsam erscheint. Vielleicht überprüfen Sie die NVidia-Einstellungen und stellen Sie sicher, dass alle vernünftig aussehen.

OSG Statistics

An Orten mit hoher Szenendichte wird die zufällige Vegetation eine beträchtliche zusätzliche Belastung verursachen. Trotzdem sollte eine anständige CPU / GPU-Kombination 3.5 beherrschen können.

Versuchen Sie es mit anderen Flughäfen. Es gibt die ganze Welt zu besuchen. ZUBD macht richtig Spaß.

Ich verstehe es, aber wenn mein Computer zu viel Geometrie oder Shader zum Rendern hatte, sollte die CPU / GPU-Nutzung nicht ständig 100% betragen?! Magix vor 8 Jahren 0
Auf einen Blick ist dies nur eine schlechte / keine Multicore-Unterstützung. Es ist verdächtig, dass es die ganze Zeit genau bei 16% liegt, als ob es keine Aufgaben ausfädelt. Lesen Sie hier http://wiki.flightgear.org/Howto:Activate_multi_core_and_multi_GPU_support @Magix Linef4ult vor 8 Jahren 0
Ich habe Multithreading bereits in meiner `preferences.xml`-Datei aktiviert, indem ich` `AutomatischeAuswahl"... Magix vor 8 Jahren 0
Schließen Sie zunächst die PUI-Dialoge. Zweitens: Wenn Sie mit OSG zu viel Geometrie haben, kann die CPU die GPU nicht schnell genug einspeisen. Dies wird auf einem einzigen Kern ausgeführt (der Durchquerung des Szenegraphs). Das Multi-Threading in OSG kann ein wenig helfen - aber Sie müssen wissen, wo Engpässe liegen und wie die Multi-Threading-Optionen von OSG basierend auf der OSG-Rendering-Phase hilfreich sind. Hier ist die zweite Ebene der OSG-Zyklusstatistik hilfreich - aber Sie müssen zuerst den PUI-Überwachungsdialog deaktivieren und die zufällige Vegetation reduzieren, bevor dies sinnvoll ist Richard Harrison vor 8 Jahren 0
Nun, ich habe den PUI-Dialog deaktiviert (nur geschlossen, reicht es aus?) Und die zufällige Vegetation auf etwa 3,5 reduziert. Die Leistung ist genau wie zuvor. Wenn die CPU zu viel Geometrie für die Berechnung hätte, wäre das nicht wieder 100% ige Arbeitslast? Magix vor 8 Jahren 0
Solange der PUI-Dialog nicht auf dem Bildschirm angezeigt wird, ist das in Ordnung. Führen Sie dreimal Debug-> Cycle on screen statistics aus, und laden Sie ein Bild mit den Balken und den Geometriewerten aus der ausgewählten Ansicht hoch. 3.6 ist schneller als 3.4 Richard Harrison vor 8 Jahren 0
Kommentierte meine Frage mit dem Link zum Screenshot :) Danke für Ihre Zeit Magix vor 8 Jahren 0