Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

11

28.10.2013, 17:06

Ja PhysX ist lediglich für nicht spielrelevante Dinge da, und ja nur NVIDIA Karten haben den PhysX Chip, bei AMD müsste das laut unbestätigten Quellen via CPU berechnet werden, Physik via CPU => äußerst schlechte Performance.
Fazit: PhysX ist nicht geeignet.
Du ziehst einen falschen Schluss. Nur weil PhysX mit einer NVidia GPU vielleicht schneller ist also ohne eine, heißt das noch lange nicht, dass PhysX ohne Nvidia GPU langsamer ist als viele andere Physikengines (die meisten freien), die ganz ohne GPU Unterstützung laufen.

Wie Legend schon erwähnt hat: Normalerweise wird erst mit einer Axis Aligned Bounding Box / Sphere in der Broadphase getestet und dann noch mal in der Narrowphase mit nem Mesh oder detaillierteren Collidern.

Wenn es ohne nativen Code auskommen muss (XBox/Windows Phone) dann schau Dir mal http://code.google.com/p/bullet-xna/ an. Ansonsten würde ich PhysX nehmen oder evt. https://code.google.com/p/bulletsharp/.

12

28.10.2013, 21:41

Zitat

Die Website Realworldtech analysierte den PhysX-Code und prangert an, dass dieser in Verbindung mit Hauptprozessoren lediglich einen Kern zur Abarbeitung nutze. Wird aber der Grafikchip als „PhysX-Prozessor“ festgelegt, dann verpacke der GeForce-Treiber die Aufgaben automatisch in mehrere Threads, und die Bildrate schnelle in die Höhe. Außerdem nutze Nvidia lediglich veraltete x87-Befehle für Gleitkommaberechnungen, von denen Intel und AMD schon seit Anfang 2000 abraten. Effiziente SSE-Befehle, die ohne größeren Programmieraufwand eingebunden werden könnten und die Performance auf aktuellen CPUs deutlich steigern würden, nutze Nvidia bei PhysX nicht.

Daraus leitete Realworldtech den Verdacht ab, Nvidia bremse die Berechnung von PhysX-Effekten auf CPUs künstlich aus, um den GeForce-Grafikkarten ein weiteres Verkaufsargument angedeihen zu lassen.

Nvidias Senior-PR-Manager Bryan Del Rizzo wies einerseits die Vorwürfe der absichtlichen Ausbremsung der CPUs zurück, versprach aber anderseits in der PhysX-Version 3.0 automatisches Multithreading und SSE-Unterstützung.

AMDs Senior Manager of Developer Relations, Richard Huddy, sprach sich in diesem Zusammenhang dafür aus, dass PhysX hoffentlich bald zusammen mit Glide und A3D im proprietären-API-Museum landet und von offenen Implementationen wie OpenCL und DirectCompute ersetzt wird.


Quelle: http://de.wikipedia.org/wiki/PhysX

Und außerdem hatte mich die Tatsache das PhysX in den meisten Spielen nicht aktivierbar ist, wenn man eine AMD-Karte hat auch dazu verleitet das zu schreiben.
PhysX ist daher wirklich nur für schöne Effekte wie im Wind wehende Blätter geeignet, die bei AMD-Nutzern dann zwar fehlen aber das Gameplay auch nicht ändern.

Aber danke für die beiden Library´s die bringen mich n großes Stück weiter!

13

28.10.2013, 22:06

Das ist aber nur die Entanwendersicht auf PhysX. Das was du unter PhysX-Effekten verstehst, sind Partikeleffekte und Stoffsimulationen und so weiter. Dinge die hübsch aussehen, aufwändig zu berechnen sind, aber eigentlich nichts mit der Spiellogik zu tun haben. Das was du willst, ist Physik für Spiellogik, also Kollisionsabfrage oder Objekte die durch diverse Kräfte bewegt werden und miteinander interagieren und so weiter.
Aus Programmierersicht passiert aber beide male exakt das selbe.Du simulierst physikalische Objekte. Ob es jetzt 5 Autos sind oder tausend kleine Scherben ist total irrelevant. Natürlich kann PhysX auch Kollisionsabfrage zwischen Raumschiffen. Und das ist überhaupt nicht langsam, sondern sehr schnell, einfach weil es kein sehr schwieriges Problem ist (naja, schwierig ist relativ).

Langsam wird es nur, wenn du tausende oder Millionen Objekte hast. Dann wird jede Physikengine langsam. Die Frage ist nie, wie schnell etwas ist, sondern wie schnell etwas für eine bestimmte Aufgabe ist.
Übrigens kann Bullet auch die Grafikkarte benutzen. Damit erreichen die auch Beeindruckendes. Ich persönlich benutze auch Bullet und alleine weil es Open Source und weniger kommerziell ist, finde ich es besser als PhysX. Aber ich mag es auch nicht, wenn jemand behauptet, PhysX wäre langsam, ohne dafür Argumente zu haben.
Lieber dumm fragen, als dumm bleiben!

14

28.10.2013, 22:29

Zitat

...
Quelle: http://de.wikipedia.org/wiki/PhysX

Und außerdem hatte mich die Tatsache das PhysX in den meisten Spielen nicht aktivierbar ist, wenn man eine AMD-Karte hat auch dazu verleitet das zu schreiben.
PhysX ist daher wirklich nur für schöne Effekte wie im Wind wehende Blätter geeignet, die bei AMD-Nutzern dann zwar fehlen aber das Gameplay auch nicht ändern.

Aber danke für die beiden Library´s die bringen mich n großes Stück weiter!
Gerne. Aber sei Dir bewusst, dass Du immer noch einen falschen Schluss ziehst, nur weil etwas nicht so schnell läuft wie es kann, heißt es nicht, dass es etwas schnelleres gibt. Die Unreal Engine nutzt bspw. auch PhysX. Schau zum Beispiel mal hier: http://www.codercorner.com/blog/?p=748 (von einem PhysX Entwickler) hier die Kritik dazu im Bullet Forum http://bulletphysics.org/Bullet/phpBB3/viewtopic.php?t=9095. So wie Du da ran gehst, ist das nicht sehr objektiv. Wenn Du Dir sicher sein willst, probiere beide Engines aus.

PhysX wird bei Dir wahrscheinlich schneller als Bullet sein, auf jeden Fall wird es schneller als der Bullet-C#-Port sein (falls Du auf XBox und WP nicht verzichten kannst spielt das natürlich keine Rolle) und außerdem wahrscheinlich schneller als alles was Du so in einem Jahr selbst entwickeln kannst (mal abgesehen von Spezialfällen).

Ich stimme allerdings Jonathan absolut zu. Der Open Source Faktor spielt eine große Rolle! Je nach Vorhaben macht Bullet für Dich vielleicht wirklich mehr Sinn. Ich habe bisher nur über den UDK mit PhysX kurz gearbeitet und sonst immer nur JBullet benutzt und war sehr zufrieden. Allerdings erfordert meiner Erfahrung nach Bullet recht hohen Einarbeitungsaufwand, den ich bei dem C# PhysX Wrapper geringer einschätze.

Nachtrag: Nur so als Tipp, Wikipedia ist als Quelle für technische Vergleiche und Beurteilungen von Bibliotheken und Frameworks insbesondere kommerzieller Natur eine sehr sehr schlechte Quelle. Ich hab da schon so viel Unsinn gelesen, dass ich Wikipedia da niemandem empfehlen würde. Ganz allgemein strotzt Wikipedia bei allem wozu auch gerne mal leidenschaftliche Hobbyisten schreiben vor Fehlinformationen.

Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von »Chromanoid« (28.10.2013, 23:03)


David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

15

28.10.2013, 22:35

PhysX ist keinesfalls nur für Effekte da.
Unity3D benutzt z.B. PhysX als Physik-Engine "für alles".

16

29.10.2013, 00:54

Gut, nehme ich nun doch mal lieber zurück, ihr scheint mich da wohl ein wenig überzeugt zu haben.
Ich versuche dann mal Bullet, dass hörte sich doch sehr gut an was ihr so darüber berichtet.

//EDIT: Ich hab mir das ganze jetzt schonmal gedownloaded, allerdings finde ich da keine gescheite Dokumentation zu.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »LaT3St« (29.10.2013, 01:13)


David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

17

29.10.2013, 06:50

//EDIT: Ich hab mir das ganze jetzt schonmal gedownloaded, allerdings finde ich da keine gescheite Dokumentation zu.


So als Hinweis am Rande: PhysX ist gut dokumentiert.
@D13_Dreinig

18

29.10.2013, 09:18

Die Doku von Bullet finde ich auch in Ordnung (liegt der Distribution bei https://code.google.com/p/bullet/downloads/list), aber Wrapper und Ports sind meist schlechter dokumentiert daher musst Du Dich am besten an die offiziellle C++ Doku halten. Und sowieso sind Open Source Projekte bzgl. Support und Dokumentation so eine Sache. Das kommt sehr auf das Geschäftsmodell an, falls überhaupt eines existiert. Hier übrigens mal eine beeindruckende Liste mit PhysX Kunden/Projekten: http://physxinfo.com/index.php?p=gam&f=all

Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von »Chromanoid« (29.10.2013, 09:26)


Werbeanzeige