hrafnagaldr schrieb:
bei Project Cars zusätzlich zur AMD-Karübernimmt Phys grundlegende Physik-Berechnungen, die ein Rennspiel natürlich braucht.
Ja und obwohl die Entwickler gerade genau das Gegenteil behauptet haben weißt du das woher? Quelle bitte.
Dazu müssten nVidia-Karten als Addon wieder erlaubt sein oder CPU-PhysX zumindest SSE2-Instructions nutzen können.
1. nVidia muss gar nichts, wenn sie nicht wollen.
2. PhysX supportet ab Version 3.0 sogar SSE4.1 und AVX
Abgesehen davon. Erhoffe dir mal nicht all zu viel von den Erweiterten Befehlsätzen. Wunder vollbringen die auch keine.
Von daher gebe ich SMS die Schuld an dem Debakel, da einige PhysX-Effekte schlichtweg ein nicht deaktivierbarer Part ihrer Engine sind, und man mit AMD-Karte immer der Depp ist.
*Kopfklatsch*
Was erstehst du denn unter "ihre Engine"? Die haben keine eigene Physik-Engine. Die nutzen 100% die PhysX Engine. Welche Teile würdest du deiner Meinung denn dort deaktivieren um eine bessere Performance auf AMD Karten zu erzielen?
Da hättest auch mal den ganzen Anandtech-Thread verlinkt und nicht nur einen ausgewählten Benchmark.
Das wäre natürlich hilfreich gewesen. Ich verweise auf 150 Postings und ihr könnt euch dann den raussuchen den ich meine.
Eine SSE2 Compileroption heißt nicht, dass diese auch genutzt wird.
Haha. Ja genau. Ist alles nur Fake.
Code:
variables_map vm;
if (vm.count("arch"))
{
if (vm["arch"].as<std::string>() == "sse2")
{
// Haha. Those fools actually think we are optimizing our code at this point.
// Instead, why don't we just take a little nap?
this_thread::sleep(posix_time::seconds(5));
}
}
Oder sprichst du davon, dass der Entwickler sie nicht benutzt?
Warum sollte er? Wenn er sich von Leuten wie dir so blöde Vorwürfe anhören muss, dass er nicht kompetent genug sei um ein anständiges Spiel zu entwickeln, dann wird er doch wohl auch darum bemüht sein so einen Parameter richtig zu setzen, meinst du nicht? Außerdem glaube ich, dass der enabled by default ist und man ihn per Parameter deaktivieren muss.
Auf jeden Fall vermute ich, dass auch bei deaktiviertem GPU-PhysX ein offload stattfindet, sobald eine nVidia GPU erkannt wird.
Was man leicht mit einem Klick im Treiber deaktivieren kann und trotzdem sinkt die Performance auf nVidia Karten nicht um 80% sobald man das tut.
Yuuri schrieb:
Wenn das Spiel um PhysX gebaut worden ist [1], dann wartet jegliche parallele Ausführung von irgendwas darauf, dass Thread x fertig mit den Daten ist. Nur weil wir heutzutage x Cores haben und hunderte von Threads, heißt es nicht, dass alles parallel abläuft und ablaufen kann. Fließbandarbeiter sind auch nur maximal so schnell, wie das Fließband läuft. Und die langsamen Berechnungen im Physik-Thread können sehr wohl jeden anderen Thread aufhalten, da dieser Thread nun mal nicht schnell genug die Daten liefern kann, weil der Code einfach Bockmist ist bzw. unoptimiert.
Es ist aber nicht so, als ob die parallele Ausführung nur dafür genutzt wird um die Arbeit besser zu verteilen. Die Engines laufen auch asynchron zueinander. Parallel und asynchron sind zwei unterschiedliche Dinge. Die Physikengine führt deutlich mehr Simulationsschritte durch als die Grafikengine Bilder darstellt. 600 fps soweit ich das gelesen habe. Weiß nicht ob das stimmt. Auf jeden Fall wird es mehr sein als die Bildwiederholrate der Grafikengine.
Ob das jetzt mal etwas mehr oder weniger sind ist gar nicht so wichtig. Das beeinflusst auch die Grafik-Engine wenig. Auswirkungen hat das vielmehr auf Penetrations- oder Jittereffekte von Objekten und in speziell diesem Fall natürlich auf die Fahreigenschaften.
Die Engines sind ansich jedenfalls fast völlig voneinander entkoppelt und nur wenn die Grafikengine neue Positionsdaten benötigt, dann kann sie diese bei der Physikengine anfragen. Dazu muss auch nicht auf die nächste Berechnung gewartet werden, sondern können de Daten der letzten Berechnung genutzt werden da diese aufgrund der 600 Hz ja nur sehr kurze Zeit zurück liegen.