2te NVidia GraKa für Physikberechnung auf Intel Boards möglich ?

Sturmwind80

Commodore Pro
Registriert
Jan. 2006
Beiträge
4.521
Moin,

soweit ich das verstanden habe, geht auf den Intel Boards nur Crossfire und keine SLI.
Wie schaut es denn aber aus, wenn ich eine Grafikkarte zur Physikberechnung mit auf das Board setzen möchte.

Wäre das grundsätzlich möglich oder kann man das noch nicht sagen, da es noch keine Spiele gibt, welche das Unterstützen?

Wenn dann wollte ich mir in ein paar Monaten ein Intel Board für 45nm Prozis mit einem aktuellen Core 2 Duo holen.
So habe ich dann den Vorteil, nächstes Jahr nochmal den Prozi aufzurüsten, ohne schon wieder das Board wechseln zu müssen.

Nun ist die Frage ob ich ein Board mit 2 x PCIe 16x Anschlüssen nehme um eventuell nächstes Jahr eine 2te GraKa zur Physikberechnung einzusetzen.
SLI brauche ich auf keinen Fall, da ich eh nicht höher als 1280*1024 spiele.

MfG
Sturmwind80
 
Gute Frage. Technisch spricht garnichts dagegen, es kommt auf Nvidia und deren Treiber draufan, und ob die Physikfähigkeit mit SLI verbandelt wird.

Man wird aber wohl erst dann etwas zu dem Thema sagen können, wenn zur Physikberechnung beorderte Grafikkarten wirklich Realität sind. Von Seiten ATIs scheint das noch eher möglich zu sein, ich meine vor einiger Zeit die Absicht vernommen zu haben, Crossfire aus strategischen Gründen für alle Plattformen öffnen zu wollen.
 
Also ich weiß nicht, ob sich das mit den separaten Karten durchsetzen wird.

Auf DX10 Karten lässt sich ja die Physik auch wunderbar über die Unified Shader verteilen. Da braucht man keine zwei Karten, sondern macht alles auf einer Karte. Ich denke, dass sich das eher durchsetzen wird. Eine Karte hat schließlich jeder. :)
 
Das schon, aber eine Karte wird durch DX10-Grafik schon derart ausgereizt, dass meiner Meinung nach nicht unbedingt auch noch Kapazität für Physik-Berechnungen verfügbar ist.

Man sieht ja, dass Physik, wenn man sie richtig implementiert anstatt nur für Eyecandy zu sorgen (mittels Ageia-Chip), die Grafikkarte sogar noch mehr belastet weil in den Szenen auf einmal mehr zu berechnen ist. Lustigerweise wird das dann von allen missverstanden und geklagt, "bäh der Ageia-Chip ist langsam", obwohl es hier um vieles, aber nicht ausgerechnet um eine Beschleunigung der Grafik geht, sondern anhand der Auswirkungen eher um das Gegenteil.
 
Das wäre wirklich mal interessant zu wissen. Besitze ein p5b Deluxe und daher ist kein SLI möglich. War allerdings auch nie geplant, da ich nur in 1280 spiele. gegen eine 2. 8800 gts zur Physikbeschleunigung würd allerdings nix sprechen. Hoffe wir mal das es nicht an SLI gebunden sein wird. interesse hätte ich auf jedenfall.

Teile im übrigen die Meinung, dass zwar theoretisch alles auf einer Karte möglich ist, aber selbst mit aktuellem Highend schlicht von einer karte nicht zu berechnen ist.
 
Na dann heißt es wohl wirklich erstmal abwarten wie sich das alles entwickelt und vor allem wie stark eine Grafikkarte für die Physikberechnung beansprucht wird.

Habe es bisher immer so verstanden, dass eine Grafikkarte komplett für die Physikberechnung benutzt wird, aber da kann natürlich noch viel passieren.

Kann ja aber nicht Schaden einfach ein Board mit 2 x PCIe 16x Anschlüssen zu nehmen und dann schaut man einfach mal was in Zukunft passiert. Ist ja auch die Frage wie das überhaupt alles aufgeteilt wird. Physik komplett in der GraKa oder aufgeteilt in GPU und CPU. Muß man die ersten Spiele abwarten.

Hellgate London soll das z.B. haben. Glaube ich.

Trotzdem vielen Danke für die Antworten ;-)
 
ich glaube ein pcie 16 platz ist dafür auf keinen fall nötig! die daten zu berechnen ist zwar viel rechnerei aber die daten die ausgetauscht werden müssen sind mit sicherheit weitaus geringer als riesige texturen die grakas ansonsten so verwalten müssen!

hier dürfte ein pcie 8 platz auf jeden fall mehr als ausreichend sein, wahrscheinlic würde sogar ein pcie 1 platz reichen.

die ageia karte ist doch sogar nur pci oder?
 
Sturmwind80 schrieb:
Na dann heißt es wohl wirklich erstmal abwarten wie sich das alles entwickelt und vor allem wie stark eine Grafikkarte für die Physikberechnung beansprucht wird.
Genau. Laut Herstelleraussagen soll sie das quasi nebenbei erledigen.

Ich habe auch mal die reine MADD Rechenleistung der 8800 GTX mit der Ageia Karte verglichen. Der G80 besitzt theoretisch eine über 38 mal so hohe Rechenleistung wie der PhysX-Chip.

Natürlich ist der PhysX an vielen Stellen optimiert und die Graka hat auch noch die Grafik zu berechnen, aber ich denke, dass eine Graka immer noch jede Menge Reserven übrig hat um ein paar billige Physikberechnungen zusätzlich zu berechnen.

Von daher denke ich, dass sich keine zusätzlichen Physik-Karten durchsetzen werden. Weder eine extra Graka noch die PhysX-Karte.

Dazu hat die Physik auf der GPU einfach zu viele Vorteile.



//EDIT:

Hier ist noch einmal meine Überlegung dazu.


Der PhysX hat 16 MADD Einheiten und schaft pro Takt 16 MADD Operationen. Die Karte ist nur mit 250 MHz getaktet.

Eine 8800 GTX Karte ist schon mit ~600 MHz getaktet. Dazu kommt, dass ihr 128 Shader zur Verfügung stehen, die jeweils eine MADD Operation durchführen können.

Es steht also 128 * 600 MHz gegenüber 16 * 250 MHz an reiner MADD Leistung. Dies sind die Hauptoperationen, die man zur Physikberechnung, als auch zur Grafikberechnung benötigt. Grob gesagt, es ist für alle Berechnungen, die im 3-Dimensionalen Raum stattfinden verwendbar.

Des Weiteren muss man noch beachten, dass die Graka nur halb so viele Berechnungen duchführen muss, wie der PhysX Chip um das gleiche Ergebnis zu erzielen. Die Graka muss die Physikberehnungen jeweils nur mit der Framerate durchfühen in der das Bild gerendert wird.

Beim PhysX hingegen wird dem Entwickler empfohlen die Physik-Engine mit doppelter Framerate laufen zu lassen, um die Latenzen zu minimieren, die beim Transport zwischen PhysX -> CPU -> Graka auftreten.


Aus diesen Überlegungen heraus, bin ich auf die 38-fache Leistung gekommen. Ich weiß. Sie ist rein theoretisch, aber sie zeigt, dass sie mit einem Bruchteil ihrer Leistung locker mit dem PhysX Chip mithalten kann.

Man braucht keine komplette Graka um aufwendige Simulationen laufen zu lassen. Es reicht wenn man ein paar Shader dafür abkommandiert.
 
Zuletzt bearbeitet:
@noxon

Das hört sich in der Theorie alles schon nicht schlecht an. Bin ich mal gespannt wie es nachher in der Praxis aussieht. Ist ja auch wieder die Frage in wie weit die Physikberechnung geht. Kommen nur neue Effekte dazu, oder wird die CPU entlastet.

Bei Hellgate London habe ich z.B. gelesen, dass sich der Rauch mit Physikberechnung korrekt verhält wenn Schüsse durchgehen, oder man durchspringt. Das werden erstmal sicher nur Kleinigkeiten sein, welche Berechnet werden, wobei ich da nicht weiß wie hoch der Aufwand für die Berechnung ist. Da muß man einfach mal abwarten.

Wäre natürlich super wenn man nicht zwingend eine 2te Grafikkarte braucht, sondern dass die einzelne die Physik mit berechnet, wenn sie denn dafür Recourcen über hat.
 
noxon, du rechnest dir da nen Wolf und das völlig umsonst. Es geht überhaupt nicht darum, wieviel Rechenleistung ein Physikbeschleuniger ggü. einer Grafikkarte hat. Das ist nicht mehr als ein klassischer Äpfel mit Birnen Vergleich. Es geht eher um die Harmonie zwischen Flixibilität und Rechenleistung des Chips und da wird der PhysX jede Grafikkarte schlagen. Ganz einfach, weil er direkt für diese Komplexität, die die Festigkeit von Stoffen und die Kinetik ausmachen, designt ist. Zudem darf man die Software nicht vergessen. Der PhysX hat eine klasse API, die jetzt schon relativ gut verbreitet ist. Diese API ermöglicht es Physik direkt ins Spiel einzubinden und da sind sie meilenweit vor der Konkurrenz.
 
Zuletzt bearbeitet:
Ich habe ja gesagt, dass es eine Milchmädchenrechnung ist und nicht viel zu sagen hat, aber sie zeigt zumindest ein ungefähres Kräfteverhältnis auf.

Ich weiß natürlich auch, dass der PhysX speziell optimiert ist und zum Beispiel ein besseres Speicherzugriffsverfahren besitzt, was ihm bei zufällig verteilten und kleinen Zugriffen zu Gute kommt, aber was die reinen Rechenoperationen anbelangt die zur Kollisionserkennung benötigt werden unterscheidet sich der Chip kaum von einer Graka. Man darf von der Spezialisierung des PhysX keine Wunder erwarten. Die Graka ist auch schon sehr stark spezialisiert. Das ist ein richtiges Fließkomma-Monster.


Die Graka hat aber auch noch weitere Vorteile gegenüber dem PhysX-Chip.

Einer der Größten ist, dass es keine Latenzzeiten gibt. Beim PhysX ist die physikalische Berechnung dem dargestellten Bild immer etwas vorraus, da die PhysX-Karte erst alle Daten von der CPU bekommen muss, diese berechnen muss, die Ergebnisse wieder zurück an die CPU schicken muss, welche es wiederum an die Graka schicken muss. Das ist schon ein ziemlich langer Weg.

Wenn die Simulationsfrequenz der PhysX-Engine zu gering ist, dann hat man bei der Engine nachher ein Lag, wie beim Multiplayer-Game mit hohen Pings. Da kollidiert etwas in der Engine und du bekommst es erst einen Moment später auf dem Schirm zu sehen.
Bei der Graka wird das aktuell berechnete auch sofort genau so angezeigt.

Des Weiteren reduziert sich bei der Graka auch die ganze Objekt hin und herschieberei, wodurch die CPU abermals stark entlastet wird. Es entsteht viel weniger Verwaltungsaufwand.


Natürlich lassen sich die physikalischen Berechnungen auch direkt auf der Graka weiterverarbeiten ohne Latenzen in Kauf nehmen zu müssen. Ein Beispiel wären Bewegungsanimationen. Die kann man von der CPU auf die GPU verlagern und dann auch von den physikalischen Parametern direkt beeinflussen lassen.

Die CPU muss man mit diesen Dingen gar nicht mehr behelligen. Das regelt die Graka ganz alleine und die CPU schaltet sich nur ein, wenn irgend eine Interaktion mit dem Gameplay stattfindet.


Und über die API kann man sich streiten.
Ich glaube nicht, dass die PhysX-Engine irgendwie besser ist als andere Engines, wie zum Beispiel die Havok-Engine. Besonders nicht, wenn es um spezielle Anwendungsgebiete geht, wie zum Beispiel in Crysis. Dort lohnt es sich für die Entwickler lieber eine eigene spezialisierte Engine zu schreiben, anstatt eine All-Round Engine zu verwenden.
Beim PhysX bist du aber leider drauf angewiesen die PhysX-Engine zu verwenden. Die Graka hingegen kann jeder selbst programmieren.
 
Zuletzt bearbeitet:
noxon schrieb:
Ich habe ja gesagt, dass es eine Milchmädchenrechnung ist und nicht viel zu sagen hat, aber sie zeigt zumindest ein ungefähres Kräfteverhältnis auf.

Ich weiß natürlich auch, dass der PhysX speziell optimiert ist und zum Beispiel ein besseres Speicherzugriffsverfahren besitzt, was ihm bei zufällig verteilten und kleinen Zugriffen zu Gute kommt, aber was die reinen Rechenoperationen anbelangt die zur Kollisionserkennung benötigt werden unterscheidet sich der Chip kaum von einer Graka. Man darf von der Spezialisierung des PhysX keine Wunder erwarten. Die Graka ist auch schon sehr stark spezialisiert. Das ist ein richtiges Fließkomma-Monster.
Die GraKa kann vllt. gut Transformationen, was ja ein Teil der Berechnungen ist und ist da sicher mächtiger. Das ist aber nur Optik und das ist genau das, worauf NV aus ist. PhysX geht das sehr viel weiter. Eine PhysX Karte kann durch die API ins Spielgeschehen direkt eingreifen und Materialverformungen, die sich im Spiel auch auswirken, berechnen. Es geht auch viel um trigonometrische Funktionen, Krafteinwirkungen u.Ä., da ist ein Grafikchip überhaupt nicht spezialisiert. Zudem ist das, was du da geschrieben ist schlicht falsch. Der Speichercontroller der PhysX unterscheidet sich kaum von dem eines Grafikchips, auch die Chips sind gleich (GDDR3).
Die Graka hat aber auch noch weitere Vorteile gegenüber dem PhysX-Chip.

Einer der Größten ist, dass es keine Latenzzeiten gibt. Beim PhysX ist die physikalische Berechnung dem dargestellten Bild immer etwas vorraus, da die PhysX-Karte erst alle Daten von der CPU bekommen muss, diese berechnen muss, die Ergebnisse wieder zurück an die CPU schicken muss, welche es wiederum an die Graka schicken muss. Das ist schon ein ziemlich langer Weg.
Die Latenz ist beim PhysX genausohoch wie auf einer GraKa, nämlich die Latenz des PCIe. Ich weiss nicht, wie du auf so einen Unfug kommst.
Wenn die Simulationsfrequenz der PhysX-Engine zu gering ist, dann hat man bei der Engine nachher ein Lag, wie beim Multiplayer-Game mit hohen Pings. Da kollidiert etwas in der Engine und du bekommst es erst einen Moment später auf dem Schirm zu sehen.
Bei der Graka wird das aktuell berechnete auch sofort genau so angezeigt.
Das ist genauso ein Unfug. Das ist eine Sache der Optimierung. Man muss viel Vorausberechnen, wenn man externe Hardware nutzt, auch da gibt es keinen Unterschied zur Grafikkarte. Im Moment gibt es ja leider nur PCI PhysX Karten, die sind etwas in der Bandbreite begrenzt, aber die PCIe 4x Version kommt diesen Sommer. Nochmals: Die Latenz ist für PhysX und GraKa absolut gleich, nämlich die Latenz des PCI/PCIe.
Des Weiteren reduziert sich bei der Graka auch die ganze Objekt hin und herschieberei, wodurch die CPU abermals stark entlastet wird. Es entsteht viel weniger Verwaltungsaufwand.
Nein, das ist schlicht falsch. Die Ergebnisse der Berechnungen der externen Karte müssen immer wieder im RAM landen und erfordert somit zwangsläufig CPU Zugriffe. Auch hier würde sich ein Grafikchip in keinster Weise von einer PhysX unterscheiden. Das gilt auch für die rein optischen Physikeffekte. Beim PhysX ist diese Vorgehensweise essenziell, da ja die PhysX Berechnungen auch ins Spielgeschehen eingreifen, während die NV Lösung das erstmal nicht tun wird.
Natürlich lassen sich die physikalischen Berechnungen auch direkt auf der Graka weiterverarbeiten ohne Latenzen in Kauf nehmen zu müssen. Ein Beispiel wären Bewegungsanimationen. Die kann man von der CPU auf die GPU verlagern und dann auch von den physikalischen Parametern direkt beeinflussen lassen.
Nein, die fertigen Berechnungen müssen zurück in den RAM, nochmals. Eine Grafikkarte kann nur Physik oder Grafik, beides geht nicht. Bei einer externen Grafikkarte muss die Berechnung genauso in den RAM.
Die CPU muss man mit diesen Dingen gar nicht mehr behelligen. Das regelt die Graka ganz alleine und die CPU schaltet sich nur ein, wenn irgend eine Interaktion mit dem Gameplay stattfindet.
Die CPU berechnet die Engine. Somit ist die CPU zwangsläufig als Koordinator involviert, genauso wie bei der Grafik. Du kannst in einem Rechner nichts ohne die CPU koordinieren. einzige Ausnahme ist allerdings der RAM-Direktzugriff (DMA), der in der PCI/PCIe Spec spezifiziert ist. Es gibt hier keinen Unterschied zwischen PhysX und GraKa.
Und über die API kann man sich streiten.
Ich glaube nicht, dass die PhysX-Engine irgendwie besser ist als andere Engines, wie zum Beispiel die Havok-Engine. Besonders nicht, wenn es um spezielle Anwendungsgebiete geht, wie zum Beispiel in Crysis. Dort lohnt es sich für die Entwickler lieber eine eigene spezialisierte Engine zu schreiben, anstatt eine All-Round Engine zu verwenden.
Beim PhysX bist du aber leider drauf angewiesen die PhysX-Engine zu verwenden. Die Graka hingegen kann jeder selbst programmieren.
Havok kann in den bisherigen Versionen nur nach sepzieller Eigenimplementation ins Spielgeschehen eingreifen (siehe HalfLife2). Die Havok Engine alleine dient z.Z. ausschließlich der Optik. PhysX geht sehr viel weiter und wird direkt in die Spielmechanik eingebunden. Die Spielmechanik basiert auf der PhysX Engine.

ein Schlussatz dazu: Die Hardware wird bei der Physiktechnik in Spielen überhaupt garkeine Rolle spielen, das ist ein reiner Kampf der APIs. Es ist in Zukuft evtl. sinnvoll, eine 2. kleinere Grafikkarte und eine PhysX Karte im Rechner zu haben, da die eine Hälfte der Spiele die erste Variante unterstützt und die andere Hälfte PhysX.
 
Zuletzt bearbeitet:
HOT schrieb:
Das ist aber nur Optik und das ist genau das, worauf NV aus ist. PhysX geht das sehr viel weiter. Eine PhysX Karte kann durch die API ins Spielgeschehen direkt eingreifen und Materialverformungen, die sich im Spiel auch auswirken, berechnen.
Das geht seit DX10 auch bei Grakas. Grafikkarten haben nun die Möglichkeit auf den Hauptspeicher des Rechners zuzugrifen. Sie können also ihre Ergebnisse der CPU zur Verfügung stellen.
Das war bei DX9 noch nicht der Fall, da hast du recht. Dort war lediglich Eye-Candy Physik möglich und dort habe ich Ageia auch noch eine Chance eingeräumt, aber seit dem das auch mit Grakas funktioniert hat der PhysX-Chip meiner Meinung nach keinen Vorteil mehr.


Es geht auch viel um trigonometrische Funktionen, Krafteinwirkungen u.Ä., da ist ein Grafikchip überhaupt nicht spezialisiert.
Die neuen DX10 Karten können mehr als nur Grafikfunktionen. Mittlerweile sind sogar Integer-Operationen möglich, die zur Grafik ja eigentlich überhaupt nicht benötigt werden.

Außerdem denke ich, dass trigonometrische Funktionen bei der Graka schon eine große Rolle spielen. Schließlich rechnet die mit Polygonen. Die wird in dem Bereich also auch sehr effizient arbeiten.


Zudem ist das, was du da geschrieben ist schlicht falsch. Der Speichercontroller der PhysX unterscheidet sich kaum von dem eines Grafikchips, auch die Chips sind gleich (GDDR3).
Leider habe ich die Quelle jetzt nicht mehr, aber der PhysX soll ein spezielles Zugriffsverfahren haben, dass es ihm ermöglicht kleinere Bereiche möglichst schnell, zufällig aus dem Speicher zu lesen. Eine Graka ist darauf spezialisiert große Bereiche am Stück auszulesen, wie es ja bei Texturen auch sinnvoll ist.

Der PhysX hingegen muss während einer Simulation auf zig tausende Objektdaten zugreifen, die nur wenige Daten beinhalten und quer verteilt im Speicher liegen.

Das steht irgendwo in der Patentschrift zum PhysX.



Die Latenz ist beim PhysX genausohoch wie auf einer GraKa, nämlich die Latenz des PCIe. Ich weiss nicht, wie du auf so einen Unfug kommst.
Es steht aber so im SDK der PhysX-Engine. Deswegen wird ja auch empfohlen die Physik-Simulation mit doppelter Framerate ablaufen zu lassen.

Es geht hier nicht um die Latenzen auf den Bus-Systemen, wenn du das meinst, sondern um die des Spielablaufs. Es geht einfach darum, dass die Berechnung des PhysX-Chip nicht direkt in das Bild mit einfließt, sondern immer erst über die CPU wandern und verarbeitet werden muss.


Nein, das ist schlicht falsch. Die Ergebnisse der Berechnungen der externen Karte müssen immer wieder im RAM landen und erfordert somit zwangsläufig CPU Zugriffe.
Ist schon klar. Aber bei der Graka tauschen sich lediglich GPU und CPU miteinander aus. Beim PhysX Chip kommt noch die PPU hinzu, die durch die CPU verwaltet werden muss.


Eine Grafikkarte kann nur Physik oder Grafik, beides geht nicht.
Dann guck dir mal ein paar der Entwicklerpräsentationen von Microsot zum Thema DX10 an. Dort werden Beispiele zur Unified Shader Programmierung gezeigt und wofür sie sich nutzen lassen.

Natürlich lässen sich da auch Physik und Grafik gemeinsam berechnen. Der Graka ist es doch egal, wofür es genutzt wird. Das können natürlich auch KI oder Soundberechnungen sein.


Die CPU berechnet die Engine. Somit ist die CPU zwangsläufig als Koordinator involviert, genauso wie bei der Grafik.
Wer sagt, dass die Engine auf der CPU laufen muss. Es können doch alle physikalischen Berechnungen auf der Graka durchgeführt werden und wenn es Ereignisse gibt, die das Spielgeschehen beeinflussen (z.B.: Kollisionen mit dem Spieler), dann werden die der CPU mitgeteilt und die kann einem dann die Healthpoints abziehen. Ansonsten weiß lediglich die Graka über die Objekte und ihren
Zustand bescheid.

Ich wüsste jetzt keinen Grund, warum das so nicht machbar sein soll.


Havok kann in den bisherigen Versionen nur nach sepzieller Eigenimplementation ins Spielgeschehen eingreifen (siehe HalfLife2).
Stimmt. Zu Zeit gibt es soweit ich weiß nur die Physikimplementation für DX9 Karten. Ich bin mir aber sicher, dass sie auch schon an einer Engine arbeiten die sich die Vorteile von DX10 zu nutze machen wird.

Außerdem braucht man die Engine ja auch nicht unbedingt einkaufen, sondern kann sie auch selber schreiben. Dort ist man dann wenigstens total frei und nicht auf eine Engine angewiesen, die eventuell einige Funktionen nicht enthält, die man benötigt.


Es ist in Zukuft evtl. sinnvoll, eine 2. kleinere Grafikkarte und eine PhysX Karte im Rechner zu haben, da die eine Hälfte der Spiele die erste Variante unterstützt und die andere Hälfte PhysX.
Und aus genau diesem Grund denke ich, dass die Zukunft darin liegt nur eine DX10 Graka zur Physikberechnung zur verwenden. Die hat wirklich jeder (in ein paar Jahren).

Letztendlich können wir nur abwarten und sehen, worauf sich die Entwickler einlassen.
Ich weiß nur so viel, dass Crytek schon Physikberechnungen auf der Gaka durchführt, auch wenn es momentan nur Effekt-Physik ist, wie sich der im Wind bewegende Qualm, das Feuer oder das Bewegen der Blätter.
 
noxon schrieb:
Das geht seit DX10 auch bei Grakas. Grafikkarten haben nun die Möglichkeit auf den Hauptspeicher des Rechners zuzugrifen. Sie können also ihre Ergebnisse der CPU zur Verfügung stellen.
Das war bei DX9 noch nicht der Fall, da hast du recht. Dort war lediglich Eye-Candy Physik möglich und dort habe ich Ageia auch noch eine Chance eingeräumt, aber seit dem das auch mit Grakas funktioniert hat der PhysX-Chip meiner Meinung nach keinen Vorteil mehr.
Direktzugriffe auf den RAM von der GraKa aus geht, seit dem es DMA gibt. Jedes PCI Gerät kann auf den RAM zugreifen. Das hat rein garnichts mit DX zu tun. Aber Chips ab SM2.0 sind aber erstmals so flexibel, dass sie für andere Berechnungen genutzt werden können als Grafik. Ein gutes Beispiel hierfür ist der Folding@Home Client für R580 Chips.
Die neuen DX10 Karten können mehr als nur Grafikfunktionen. Mittlerweile sind sogar Integer-Operationen möglich, die zur Grafik ja eigentlich überhaupt nicht benötigt werden.
Alle Grafikchips vor SM1.0 rechenen im Integer Format, danach werden auch noch viel Integer und Fixpunkt Formate eingesetzt. Erst ab SM2.0 werden Fliesspunktformate genutzt. Was willst du damit aussagen? Auch ein heutiger Grafikchip kann problemlos Integer rechnen. Die Schwierigkeit liegt jedoch in der Genauigkeit, die ist mit FP deutlich höher. Auf die Qualität dieser Aussage gehe ich lieber nicht weiter ein...
Außerdem denke ich, dass trigonometrische Funktionen bei der Graka schon eine große Rolle spielen. Schließlich rechnet die mit Polygonen. Die wird in dem Bereich also auch sehr effizient arbeiten.
Seit DX10 sind die Recheneinheiten der Grafikchips deutlich flexibler, aber das sie an die Effizienz einer PhysX rankommen müssen sie erst noch beweisen. Du solltest bedenken, dass es hier nicht um Rechenleistung geht. Physik, die jetzt oder in naher Zukuft in Spielen eingesetzt wird, braucht schlicht und ergreifend nicht die Rechenleistung einer G8. Du musst bedenken, dass Physik den Detailgrad der Grafik übel erhöht, was dann wieder die Grafik belastet. Die Physik ist nicht der Flaschenhals, kann aber indirekt beim Rendern zu einem werden. Bei ATI wurde mal gesagt, es würde reichen, einen R580 Grafikchip mit einem RV520 als Physikbeschleuniger zu kombinieren.
Leider habe ich die Quelle jetzt nicht mehr, aber der PhysX soll ein spezielles Zugriffsverfahren haben, dass es ihm ermöglicht kleinere Bereiche möglichst schnell, zufällig aus dem Speicher zu lesen. Eine Graka ist darauf spezialisiert große Bereiche am Stück auszulesen, wie es ja bei Texturen auch sinnvoll ist.
Grafikchips müssen auch auf Teile des Framebuffers zugreifen, eben da müssen sie besonders schnell sein. Texturen streamen erfordert keine grossartige Leistung, nur ausreichend Bandbreite.
Der PhysX hingegen muss während einer Simulation auf zig tausende Objektdaten zugreifen, die nur wenige Daten beinhalten und quer verteilt im Speicher liegen.

Das steht irgendwo in der Patentschrift zum PhysX.
Kann ja sein, dass der PhysX spezielle Zugrifssverfahren besitzt. Das spräche aber eher für die bessere Eignung des Chips.
Es steht aber so im SDK der PhysX-Engine. Deswegen wird ja auch empfohlen die Physik-Simulation mit doppelter Framerate ablaufen zu lassen.

Es geht hier nicht um die Latenzen auf den Bus-Systemen, wenn du das meinst, sondern um die des Spielablaufs. Es geht einfach darum, dass die Berechnung des PhysX-Chip nicht direkt in das Bild mit einfließt, sondern immer erst über die CPU wandern und verarbeitet werden muss.
Das ist aber nicht zu verhindern. Die CPU verteilt die Daten an externe Geräte, um sie dort berechenen zu lassen. AMDs Torenza ist im Prinzip auch nichts anderes. Wenn ein Grafikchip Physikdaten ausrechnet, muss die CPU das zu rechnende an den Grafikchip genauso verteilen und die Ergebnisse entgegennehmen wie bei jedem anderen Gerät. Du könntest auch einen CELL in einem HTX Port als Physikhardware nutzen. Denkbar wären auch solche Zugriffe auf externe Crypto Prozessoren. Das hat zwar jetzt nichts mit Physik zu tun, zeigt aber wo das Problem liegt.
Ist schon klar. Aber bei der Graka tauschen sich lediglich GPU und CPU miteinander aus. Beim PhysX Chip kommt noch die PPU hinzu, die durch die CPU verwaltet werden muss.
Bei einer weiteren Grafikkarte würde ebenfalls ein weiteres Gerät hinzukommen. Die CPU verwaltet auch Sound usw., das ist mal kein Problem. Ob die CPU jetzt Physikberechnungen an einen Grafikchip oder einen Physikchip weitergibt und die Ergebnisse erhält, spielt keine Rolle.
Dann guck dir mal ein paar der Entwicklerpräsentationen von Microsot zum Thema DX10 an. Dort werden Beispiele zur Unified Shader Programmierung gezeigt und wofür sie sich nutzen lassen.
Ich weiss, dass sie dafür eingesetzt werden kann. Das ist vollkommen unstrittig.
Natürlich lässen sich da auch Physik und Grafik gemeinsam berechnen. Der Graka ist es doch egal, wofür es genutzt wird. Das können natürlich auch KI oder Soundberechnungen sein.
Nein, so wie du dir das vorstellst geht das eben nicht! Wo sollen deiner Meinung nach die fertig berechneten Physikdaten denn hin? An den Monitor oder was? Die werden wieder zurück an die CPU gegeben was denkst du denn. Es ist sogar absolut nicht empfehlenswert, Physik und Grafik auf einem Chip zu rechnen, weil Physik den Detailgrad erhöht und somit automatisch mehr Grafikleistung benötigt, die sowieso schon in vielen Fällen knapp ist. Ich verzichte nicht auf Bildqualität wegen Physik. Wenn man Physik auf externen Prozessoren rechnen möchte, muss der schon dediziert sein. Ob das jetzt auf einem RV520, einem G84 oder einem PhysX rechnet soll mir egal sein.
Wer sagt, dass die Engine auf der CPU laufen muss. Es können doch alle physikalischen Berechnungen auf der Graka durchgeführt werden und wenn es Ereignisse gibt, die das Spielgeschehen beeinflussen (z.B.: Kollisionen mit dem Spieler), dann werden die der CPU mitgeteilt und die kann einem dann die Healthpoints abziehen. Ansonsten weiß lediglich die Graka über die Objekte und ihren
Zustand bescheid.

Ich wüsste jetzt keinen Grund, warum das so nicht machbar sein soll.
Dass du da keinen Grund siehst, bedeutet nur, dass du da was Grundsätzliches in der PC Architektur nicht verstanden hast. Die CPU koordiniert alles. Wenn du einen Befehl abgibst, landet der bei der CPU, bei sonst niemandem. Du kannst der CPU sagen, sie soll dem Grafikchip sagen, dass er was rechnen soll, einen anderen Weg gibt es nicht. Die Engine läuft auf der CPU, nirgendwo sonst! Die CPU gibt Daten, die sie nicht rechnen soll, an den Grafik/Physikchip weiter und nimmt die fertigen Berechnungen wieder entgegen. Die Engine muss schließlich wissen wo was ist, und sei es nur, um die Daten an die Grafik zur Ausgabe weiterzugeben (wie im Falle von Havok). Egal was du auch für ein Programm schreibst, es läuft in einem PC auf der CPU. Ich glaube du solltest dich mal mit Rechnerarchitekturen auseinandersetzen.
[...]

Außerdem braucht man die Engine ja auch nicht unbedingt einkaufen, sondern kann sie auch selber schreiben. Dort ist man dann wenigstens total frei und nicht auf eine Engine angewiesen, die eventuell einige Funktionen nicht enthält, die man benötigt.
Es kommt darauf an, was einem der Grafikchipentwickler für Möglichkeiten an die Hand gibt. Die schreiben an sowas rum. M$ schreibt an sowas als DX Standard rum. AGEIA ist da schon sehr viel weiter.
Und aus genau diesem Grund denke ich, dass die Zukunft darin liegt nur eine DX10 Graka zur Physikberechnung zur verwenden. Die hat wirklich jeder (in ein paar Jahren).
Nicht empfehlenswert aus dem o.g. Grund. In meinen Augen einfach nur Blödsinn, da der Grafikchip bei nahezu jedem Spiel die zeitkritischste Komponente ist.
Letztendlich können wir nur abwarten und sehen, worauf sich die Entwickler einlassen.
Ich weiß nur so viel, dass Crytek schon Physikberechnungen auf der Gaka durchführt, auch wenn es momentan nur Effekt-Physik ist, wie sich der im Wind bewegende Qualm, das Feuer oder das Bewegen der Blätter.
Was Crytek da letztendlich nutzt wird sich zeigen. Im Moment sind die technischen Details von Crysis eher undurchsichtig und die Infos dazu basieren mehr auf Gerüchten und Halbwahrheiten von Leuten, die nicht verstandan haben, was sie da aufgeschnappt haben.
 
Zuletzt bearbeitet:
HOT schrieb:
Direktzugriffe auf den RAM von der GraKa aus geht, seit dem es DMA gibt. Jedes PCI Gerät kann auf den RAM zugreifen.
Stimmt. Du hast recht.
Seit DX10 ist es dank Stream-Out Funktion aber erstmals möglich per Shader berechnete Daten abzugreifen. Bei DX9 war das nur bedingt der Fall. Dort waren die Shader nur unidirektional und es konnten keine großen Datenmengen zurück an die CPU übermittelt werden.


Auch ein heutiger Grafikchip kann problemlos Integer rechnen.
Verwenden die dafür aber nicht Fließkommazahlen? Ich war immer der Meinung, dass sie keine reinen Ganzzahlberechnungen durchführen können. Ich wollte damit aber auch eigentlich nur sagen, das DX10 Chips in ihrem Umfang deutlich erweitert wurden um auch Aufgaben abseits der Grafik erledigen zu können.


Du musst bedenken, dass Physik den Detailgrad der Grafik übel erhöht, was dann wieder die Grafik belastet. Die Physik ist nicht der Flaschenhals, kann aber indirekt beim Rendern zu einem werden.
Das kommt natürlich auf die Physik an. Wenn man tausende kleine simple Rigit Bodies simuliert und anschließend rendern will, dann hat die Graka natürlich jede Menge zu tun.

Simuliert man aber Softbodies, Wasser oder aber auch komplexe Rigid Bodies, dann liegt die Hauptbelastung bei der Physikberechnung und die Graka kann sich entspannt zurück lehnen.


Kann ja sein, dass der PhysX spezielle Zugrifssverfahren besitzt. Das spräche aber eher für die bessere Eignung des Chips.
Jo. Das soll ja auch ein Pro-Argument für den PhysX sein. Ich will ja nicht alles schlecht machen. ;)


Wenn ein Grafikchip Physikdaten ausrechnet, muss die CPU das zu rechnende an den Grafikchip genauso verteilen und die Ergebnisse entgegennehmen
Jep. Aber dort sind nur zwei Partner beteiligt, zwischen denen vermittelt werden muss. Bei der PPU, Torenza oder sonstigen CoProzessoren entsteht immer ein erhöhter Aufwand für die CPU, da sie die Koordination aller drei Komponenten übernehmen muss.


Ob die CPU jetzt Physikberechnungen an einen Grafikchip oder einen Physikchip weitergibt und die Ergebnisse erhält, spielt keine Rolle.
Die Sache ist nur die, dass die Graka ihre Berechnungen direkt verwenden kann ohne sie noch einmal an die CPU liefern zu müssen.

Es ist ja nicht so, als ob die CPU die Physikberechnungen der GPU übergibt, diese die Berechnungen durchführt, die Daten an die CPU zurück liefert und die CPU dann erneut die aktuelle Szene an die GPU zum Rendern überträgt.

Stattdessen übergibt die CPU die zu berechnenden Daten an die GPU und diese bindet die auch sofort in die Szene ein, wie das auch jetzt schon bei DX9 der Fall ist. Die CPU muss davon noch nicht einmal etwas mitbekommen.

Lediglich, wenn etwas interaktives geschieht bekommt die CPU eine Rückmeldung von der GPU, damit diese darauf reagieren kann. So lange die Objekte in der Szene das Spielgeschehen nicht beeinflussen braucht die CPU auch nichts darüber zu wissen.


Nein, so wie du dir das vorstellst geht das eben nicht! Wo sollen deiner Meinung nach die fertig berechneten Physikdaten denn hin? An den Monitor oder was?
Wieso denn nicht? Die Informationen über die Objekte liegen ganz allein auf der Grafikkarte. Warum sollte die CPU darüber bescheid wissen?

Solange es das Spielgeschehen nicht beeinflusst, sondern nur die Grafik kann die CPU sowieso nichts mit den Daten anfangen.



Die Engine läuft auf der CPU, nirgendwo sonst! Die CPU gibt Daten, die sie nicht rechnen soll, an den Grafik/Physikchip weiter und nimmt die fertigen Berechnungen wieder entgegen.
Ich verstehe immer noch nicht, warum die Physik-Engine nicht völlig losgelöst von der CPU laufen soll.
Die CPU sagt der GPU lediglich, was für Objekte die Szene enthalten soll und wo sie sich beim Start befinden und von da an übernimmt die GPU alle weiteren Berechnungen und zeichnet sie auch sofort.

Wozu muss die CPU wissen, was die Graka da gerade berechnet und darstellt? Sie weiß ja auch nicht, welche Farbe der Pixel x,y hat. Das weiß nur die Graka.



Es kommt darauf an, was einem der Grafikchipentwickler für Möglichkeiten an die Hand gibt. Die schreiben an sowas rum. M$ schreibt an sowas als DX Standard rum. AGEIA ist da schon sehr viel weiter.
Man braucht ja nicht unbedingt eine Schnittstelle von den Grafikchip-Herstellern oder von MS. Das bekommt man selbst auch ganz normal per HLSL sehr gut hin. Obwohl eine Art DirectPhysics natürlich komfortabler wäre. So weit ich weiß arbeitet MS auch schon daran.


Was Crytek da letztendlich nutzt wird sich zeigen. Im Moment sind die technischen Details von Crysis eher undurchsichtig und die Infos dazu basieren mehr auf Gerüchten und Halbwahrheiten von Leuten, die nicht verstandan haben, was sie da aufgeschnappt haben.
Die Physikengine wurde einmal in einem Interview von einem Mitarbeiter etwas genauer erläutert. Leider finde ich die Quelle nicht mehr.

Die arbeiten mit ein paar interessanten Tricks. Wenn sich die Blätter zum Beispiel im Wind bewegen, dann tun die Modelle das nicht wirklich. Die sind absolut starr. Stattdessen werden alle Objekte noch mit einer Art Krümmungstextur belegt. Der Grünanteil der Textur definiert, wie stark das Blatt hoch oder runter gebogen sein soll, rot legt fest, wie stark das Blatt zu den Seiten gebogen sein soll und blau hat auch noch irgend etwas festgelegt, was ich jetzt vergessen habe.

Um jetzt die Blätter biegen zu könne müssen lediglich die Farben der Texturen, je nach Windrichtung und anderen Einflüssen geändert werden und der Shader rendert es nachher so, als ob die Objekte gekrümmt wären.

Die CPU interessiert es letztendlich wenig, wie die Blätter im Wind hin und her schwingen. Für sie stehen die Bäume still.
 
noxon schrieb:
Stimmt. Du hast recht.
Seit DX10 ist es dank Stream-Out Funktion aber erstmals möglich per Shader berechnete Daten abzugreifen. Bei DX9 war das nur bedingt der Fall. Dort waren die Shader nur unidirektional und es konnten keine großen Datenmengen zurück an die CPU übermittelt werden.
Das stimmt wohl. Jedoch ist das eine D3D Spec und hat nicht direkt was mit Physik zu tun. Es ist in Sachen Physik nach wie vor eine Sache des Treibers der Grafikchiphersteller. Vielleicht ist es möglich, vllt aber auch net, solche Konstruktionen sind lediglich Krücken, die garantiert nicht effizient laufen können.
Verwenden die dafür aber nicht Fließkommazahlen? Ich war immer der Meinung, dass sie keine reinen Ganzzahlberechnungen durchführen können. Ich wollte damit aber auch eigentlich nur sagen, das DX10 Chips in ihrem Umfang deutlich erweitert wurden um auch Aufgaben abseits der Grafik erledigen zu können.
Grafikchips können alle Formate, rechnen aber natürlich mit Fließkomma Genauigkeit, ich glaube dass das oft verwechselt wird.
Das kommt natürlich auf die Physik an. Wenn man tausende kleine simple Rigit Bodies simuliert und anschließend rendern will, dann hat die Graka natürlich jede Menge zu tun.

Simuliert man aber Softbodies, Wasser oder aber auch komplexe Rigid Bodies, dann liegt die Hauptbelastung bei der Physikberechnung und die Graka kann sich entspannt zurück lehnen.
Wie Renderst du sowas? Jetzt bin ich gespannt ;). Oder meinst du einen reinen Grafikeffekt? Das hat nichts mit Physik zu tun und solche Tricksereien gibt es schon lange.
[...]

Jep. Aber dort sind nur zwei Partner beteiligt, zwischen denen vermittelt werden muss. Bei der PPU, Torenza oder sonstigen CoProzessoren entsteht immer ein erhöhter Aufwand für die CPU, da sie die Koordination aller drei Komponenten übernehmen muss.
Die CPU vermittelt immer. Völlig egal, ob das ein Grafikchip, 2 Grafikchips oder eine PPU ist. Es gibt da schlicht keinen Unterschied. Zudem vermittelt die CPU zwischen Grafik, Sound, LAN usw., das sind alles Geräte, die die CPU unterbrechen können. Das funktioniert schon seit dem 8086 ohne Probleme und frisst keine Leistung. Zur Softwareseite: hier gibt es schonmal überhaupt keinen Unterschied. Die xPU, die irgendwas berechnen soll, muss so oder so mit Daten und Programmen gefüttert werden, das geschieht immer gleich, egal, ob bei einer GPU, PPU oder CELL oder sonstwas. du sagst der CPU, dass sie diese Daten und dieses Programm an die xPU weitergeben soll und diese erhält dann die Ergebnisse durch Unterbrechung. Ein ganz einfaches Prinzip.
Die Sache ist nur die, dass die Graka ihre Berechnungen direkt verwenden kann ohne sie noch einmal an die CPU liefern zu müssen.
Ich wiederhole mich ungern, aber das geht nicht! Die Programmierer gibt der CPU Arbeitsaufträge, die sie wiederum an die dedizierte Hardware verteilt (z.B. Shaderprogramme mit dazugehörigen Daten). Wenn du Physikdaten/-Programme an die GPU gibst, muss diese die Ergebnisdaten des Programms irgendwo hinschreiben und das landet dann zwangsläufig im Hauptspeicher, worauf eh wieder nur die CPU zugreifen kann. An den Grafikspiecher kommst du über die CPU, von wo ja die Engine läuft, nicht oder nur über Umwege (also zurück in den RAM schreiben) ran.
Es ist ja nicht so, als ob die CPU die Physikberechnungen der GPU übergibt, diese die Berechnungen durchführt, die Daten an die CPU zurück liefert und die CPU dann erneut die aktuelle Szene an die GPU zum Rendern überträgt.
Im Prinzip, deutlich simplifiziert, passiert das doch genau so.
Stattdessen übergibt die CPU die zu berechnenden Daten an die GPU und diese bindet die auch sofort in die Szene ein, wie das auch jetzt schon bei DX9 der Fall ist. Die CPU muss davon noch nicht einmal etwas mitbekommen.
Nein, das ist garnicht möglich, es sei denn es handelt sich im rein optische Effekte (physiknahe, reine Grafikberechnungen, z.B. ein Ast fliegt halbwegs in die richtige Richtung und verschwindet dann). An Physikberechnungen (Der Ast fliegt in die richtige Richtung im richtigen Bogen im richtigen Winkel und hinterlässt an der Stelle an der er auftrifft eine Krafteinwirkung und bleibt evtl. verformt oder zersplittert liegen) muss die Engine wieder ran, das kann sie nicht, wenn es rein auf der GPU läuft. Selbst die Berechnung von getöteten und wegrollenden Wölfe bei Oblivion z.B. muss von der Engine wieder übernommen werden, weil diese da liegenbleiben und in der Spielwelt ein Objekt bilden.
Lediglich, wenn etwas interaktives geschieht bekommt die CPU eine Rückmeldung von der GPU, damit diese darauf reagieren kann. So lange die Objekte in der Szene das Spielgeschehen nicht beeinflussen braucht die CPU auch nichts darüber zu wissen.
Es geschieht immer was interaktives bei Physikberechnungen, dazu sind diese da.
Wieso denn nicht? Die Informationen über die Objekte liegen ganz allein auf der Grafikkarte. Warum sollte die CPU darüber bescheid wissen?

Solange es das Spielgeschehen nicht beeinflusst, sondern nur die Grafik kann die CPU sowieso nichts mit den Daten anfangen.
Das Spielgeschehen wird zwar nicht durch herumliegende Objekte beeinflusst, dennoch sind diese da und die Engine muss das ganz einfach wissen, um diese immer wieder darstellen zu können, wenn sie wieder ins Bild kommen.

Ich verstehe immer noch nicht, warum die Physik-Engine nicht völlig losgelöst von der CPU laufen soll.
Die CPU sagt der GPU lediglich, was für Objekte die Szene enthalten soll und wo sie sich beim Start befinden und von da an übernimmt die GPU alle weiteren Berechnungen und zeichnet sie auch sofort.

Wozu muss die CPU wissen, was die Graka da gerade berechnet und darstellt? Sie weiß ja auch nicht, welche Farbe der Pixel x,y hat. Das weiß nur die Graka.
Weil die Engine das wissen muss! Explosionen mit korrekt wegfliegenden Trümmern gibt es doch schon lange, mehr bekommst du damit aber nicht hin! Zumal die Trümmer auchnoch als Objekte in der Welt auftauchen sollen. All das muss die Engine und somit die CPU wissen.

Man braucht ja nicht unbedingt eine Schnittstelle von den Grafikchip-Herstellern oder von MS. Das bekommt man selbst auch ganz normal per HLSL sehr gut hin. Obwohl eine Art DirectPhysics natürlich komfortabler wäre. So weit ich weiß arbeitet MS auch schon daran.
Dann bin ich mal gespannt, wie du das anstellst ;). Sowas zu behaupten, nur weil es schätzungsweise vielleicht oder gerüchtehalber Möglich wäre, ist immer leicht. Vllt. gehts auch garnicht. Es kommt immer darauf an, ob das Ergebnis brauchbar ist.
Die Physikengine wurde einmal in einem Interview von einem Mitarbeiter etwas genauer erläutert. Leider finde ich die Quelle nicht mehr.

Die arbeiten mit ein paar interessanten Tricks. Wenn sich die Blätter zum Beispiel im Wind bewegen, dann tun die Modelle das nicht wirklich. Die sind absolut starr. Stattdessen werden alle Objekte noch mit einer Art Krümmungstextur belegt. Der Grünanteil der Textur definiert, wie stark das Blatt hoch oder runter gebogen sein soll, rot legt fest, wie stark das Blatt zu den Seiten gebogen sein soll und blau hat auch noch irgend etwas festgelegt, was ich jetzt vergessen habe.

Um jetzt die Blätter biegen zu könne müssen lediglich die Farben der Texturen, je nach Windrichtung und anderen Einflüssen geändert werden und der Shader rendert es nachher so, als ob die Objekte gekrümmt wären.

Die CPU interessiert es letztendlich wenig, wie die Blätter im Wind hin und her schwingen. Für sie stehen die Bäume still.

Das hat rein garnichts mit Physik zu tun, das ist pures Rendering. Solche Tricksereien gibt es seit dem es SM1.0 (1.1) gibt, für solche Fälle haben die Grafikhersteller überhaupt programmierbare Hardware entwickelt. Schmeiss nicht dauernd Grafik und Physik durcheinander!
 
Zuletzt bearbeitet:
Oh man.
Wir erzeugen hier noch nen Buffer-Overflow. ;)

Ich antworte jetzt mal etwas kürzer

Ich verstehe schon, dein Argmument, dass die CPU für eine "echte" Physik über alle Objekte in der Szene bescheid wissen muss, aber ich denke da eher an eine Art grafische Physik, die trotzdem Einfluss auf das Spielgeschehen haben kann.

Es ist also im Grunde genommen nur ein grafischer Effekt, den lediglich die Graka berechnet und verwaltet. Die Graka ist zum Beispiel in der Lage Kollisionen der Objekte mit dem Spieler zu erkennen und dann müsste sie der CPU doch nur miteilen, dass jetzt 10% von den Healthpoints abgezogen werden müssen.

Somit wirkt sich die Physik auf das Spielgeschehen aus ohne, dass die CPU überhaupt weiß, was sich auf dem Bildschirm abgespielt hat.


Nehmen wir mal dieses Beispiel hier: Havok FX Video.

Von diesen Objeken bekommt die CPU doch gar nichts mit, da sie rein von der Graka verwaltet werden. Das ist ja auch der Grund, warum diese Physik auch keine Auswirkungen auf's Spielgeschehen haben kann.

Mit DX10 hingegen könnte die Graka der CPU jetzt Informationen über die Berechnungen übergeben. Zumindest würde die Physik so schon etwas in das Gameplay mit einfließen. Beispiel Healthpoint abziehen.

Was auf die Art aber nicht eledigt werden kann, dass ist das gezielte Interagieren des Spielers mit den Objekten. Zum Beispiel wenn man Objekte aufheben und aufeinander stapeln möchte. Da gebe ich dir recht. Für so etwas muss die Engine auf der CPU für die Verwaltung sorgen.

So langsam versehe ich wohl auch was du meinst. :)

Für Physik, bei der der Spieler die Objekte beeinflussen soll kommt man um die CPU wohl nicht herum. Hast mich überzeugt. :)
 
Zuletzt bearbeitet:
...und das ist ja auch die Idealvorstellung einer perfekt implementierten Physik, die viel für ein Spiel tun kann, und zwar in allen möglichen Bereichen, nicht nur bei Ego-Spielen. Schon vor knapp zwei Jahrzehnten hat man über die realistische Implementation der Physik diskutiert, wenn man sich z.b. an Pinball Dreams für den Amiga500 erinnert. :)
 
Die Spiel-Engine und damit auch die CPU muss wissen wo Objekte auch nur rumliegen, selbst wenn sie keinen Einfluss auf das Spiel haben und nichtmal geclipt sind. DX10 hin oder her, tolle Schnittstellen können nichts daran ändern, dass Objekte in der Spielwelt der Engine bekannt sein müssen, selbst in deinem tollen Video. Du kannst mit der GPU die phsikalische Lage und Position der Objekte berechnen und die Kraftbeeinflussung auf diese, jedoch müssen die Informationen zurück an die Engine, damit die diese weiter an die Grafik geben kann zur Ausgabe (zusammen mit dem restlichen Bild).

@sturme das stimmt schon. Nur heute ist die Hard- und Software so weit, dass zumindest eine grobe Implementation von echter Physik durchaus möglich ist, was sie damals definitiv noch nicht war. Wie immer ist es eine Sache der Präzision. In wie kleine Polygone kann ich eine Wand zerlegen um Krafteinwirkungen auf diese zu berechnen?

Nehmen wir an, wir haben einen aufrecht stehenden, texturierten Quader. Wenn du einen Einschlag einer Granate auf diesen simulieren möchtest, musst du zuerst die Wucht der Explosion berechnen und diese Krafteinwirkungen auf die Stellen des Quaders "strahlen" lassen, die von der Krafteinwirkung betroffen sind. Jetzt kommt es darauf an, in wieviele Einzelpolygone du den Quader transformieren möchtest. Je mehr, desto realistischer ist das Bild aber desto höher ist der Rechenaufwand. Jedenfalls übt die Exploion eine Krafte auf die einzelnen Polygone aus und diese wiederum auf die Polygone dahinter, bis die ersten keinen Widerstand mehr haben und "rausbrechen". So entsteht ein Loch in der Wand und die restliche Geometrie kann wieder zurücktransformiert werden, um den Renderaufwand niedrig zu halten. Genau diese Simulation berechnet die Physik und während dessen gehen pausenlos Positions- und Lagedaten (keine fertige Geometrie) der neu entstandenen Objekte zurück an die Engine (und damit die CPU), die diese Daten an die Grafik weitergibt, um daraus wieder Geometrie zu transformieren, die gerendert und mit weiteren optischen Effekten versehen werden kann. Dabei kann man sicherlich wieder einiges tricksen, um das Ganze besser aussehen zu lassen, aber das Prinzip ist klar und es wird auch klar, warum es sinnlos ist Grafik und Physik auf einem Chip zu berechnen, da genau zu dem Zeitpunkt, an dem eine Physiklast eintritt auch ein höherer Rechenaufwand an die Grafik eintritt und das den Chip unverhältnismässig belasten würde. Es gibt einen grossen Unterschied zwischen Optikschmankerln, die nur auf der Grafik berechnet werden können und "Objekte" erzeugen, die für das Spiel eigentlich garnicht existent sind und sofort wieder verschwinden und wirklichen Objektänderungen im Spiel, die neue Objekte erzeugen und den Detailgrad erhöhen. Der limitierende Faktor bei der Physik ist nicht unbedingt die Physik selber, sondern viel mehr die Datenmenge an Koordinaten und Lageinformationen, die die CPU unverhältnismässig belasten können und der Grafik, die plötzlich mit viel mehr Objekten rechnen muss als es bisher der Fall war. Da es in bisherigen Spielen keine Physik gibt, kann eine PhysX da auch nichts beschleunigen, dort wo es aber PhysX beschleunigte Physik gibt, wird aber die Datenlast und die Grafiklast höher, weswegen physikbeschleunigte Games natürlich langsamer werden.
 
Zuletzt bearbeitet:
HOT schrieb:
Du kannst mit der GPU die phsikalische Lage und Position der Objekte berechnen und die Kraftbeeinflussung auf diese, jedoch müssen die Informationen zurück an die Engine, damit die diese weiter an die Grafik geben kann zur Ausgabe (zusammen mit dem restlichen Bild).
Das Bild wird doch nicht von der CPU zusammengesetzt. Das macht die GPU. Die Grafikengine auf der CPU muss nicht wissen, wo sich die Objekte befinden, die auf der GPU physikalisch simuliert werden.

So steht's auch bei Havok
By performing simulation, collision detection and rendering directly on the GPU, Havok FX avoids the transfer of large amounts of data between the CPU and GPU, enabling a level of performance of object collisions in the 1000’s occurring in real-time, without putting any additional burden on the CPU or otherwise slowing down the game.
Once generated by the CPU, Debris Primitives can be dispatched fully to the GPU for physical simulation and final rendering

Die Objekte werden also nur einmal an die GPU übergeben und von da an läuft die Physiksimulation völlig unabhängig von der CPU. Erst das ermöglicht es ja überhaupt so eine hohe Anzahl von Objekten darzustellen. Bei 1000 und mehr Objekten wäre ansonsten selbst der beste Dual-Core mit dem Objektmanagement völlig ausgelastet.



PS:
Auf der Havok Seite wurde auch noch eine Sache erwähnt, an die ich gar nicht gedacht hatte und zwar, dass es mittlerweile ja immer häufiger Boards mit OnBoard Grafik und demnächst ja auch CPU mit integrierter GPU geben soll. Bisher waren diese Dinge für echte Gamer ja immer ziemlich nutzlos, aber die Idee diese Komponenten für die Physiksimulationen zu nutzen ist natürlich super. Dann erfüllen diese GPUs wenigstens noch einen Zweck.
 
Zuletzt bearbeitet:
Zurück
Oben