Zitat Zitat von jodob
und noch ne frage: die direct x 10 effekte, werden die von der cpu oder von der grafikkarte ausgeführt? doch eigentlich von der graka, wozu bräuchte man sonst ne neue mit direct x10... andrerseits... volumetrische wolken, der rauch usw ist doch bestandteil der physik, welche doch die cpu übernehmen soll...
Mal etwas Grundsätzliches zu DirectX:

DirectX-Effekte oder so etwas gibt es nicht. Dummerweise rede ich auch immer von DX10 Effekten. Damit meine ich aber lediglich die Effekte, die unter Verwendung von DX10 hinzukommen.

DirectX selbst ist nur eine genormte Schnittstelle von MS auf die Programmierer zurückgreifen können um auf alle möglichen Arten von Komponenten zugreifen zu können, die im PC stecken. Eine sogenannte API (Application Program Interface)

DirectX ist aber nicht nur für Grafikkarten zuständig. DirectX besteht aus einer Vielzahl von Komponenten. Zum Beispiel Direct Draw für 2D-Grafik (Windows Oberfläche), Direct 3D für 3D-Grafikkarten (Spiele, u.s.w.), Direct Audio für Soundkarten und in Zukunft auch Direct Physics für Physik-Karten, aber auch Grafikkarten auf denen Physikberechnet wird.

Somit braucht sich der Programmierer in Zukunft nicht mehr darum zu kümmern, ob die Physik vom PhysX Chip berechnet wird oder von der Grafikkarte. In seinem Programm verwendet er die gleichen Kommandos um diese Geräte anzusteuern. Natürlich kann dahinter auch eine Software-Engine stecken und trotzdem verwendet er die gleichen Kommandos.

Vereinfacht gesagt, sagt er der DirectX Schnittstelle nur, dass hier der Baum abknicken soll und wie das letztendlich realisisert wird, ob per Chip, Graka oder per Software ist dem Programmierer herzlich egal.

Damit das funktioniert müssen die Karten und die Software-Engine aber auch DirectX kompatibel sein und genau das ist es, was eine DirectX10 Graka definiert.
Das bedeutet lediglich, dass sie alle Funktionen, die DirectX10 dem Programmierer zur Verfügung stellt auch umsetzen kann.

Wie sie das macht ist dem Programmierer dabei völlig egal. Hauptsache sie tut es. Bestes Beispiel werden die kommenden DX10 Chips sein. Es ist laut DirectX 10 Vorschrift, dass diese Karten unified Shader besitzen müssen. Was das genau ist, ist hier eher unwichtig.

Jetzt ist es aber so, dass nVidias kommender Grafikchip immer noch keine unified Shader beherscht, aber trotzdem DirectX10 kompatibel ist. Nun. Wie macht er das? Ganz einfach. nVidia simuliert ganz einfach unified Shader, verwendet aber im Endeffekt immer noch Vertex, Pixel und Geometry-Shader. Nach außen hin erscheint es aber so, als ob die Karte auch unified Shader verarbeiten kann.

Programmierer können also unified Shader in ihren Programmen verwenden ohne darauf achten zu müssen, ob eine nVidia Karte oder eine ATi Karte im System steckt. Solange sie DX10 kompatibel ist sollte das Programm funktionieren. (In der Realität sieht's natürlich etwas anders aus)

Wie die Grakahersteller ihre DirectX 10 Features realisieren ist dem Programierer also egal. nVidia wandelt diese unified Shader Programme zum Beispiel wieder in die herkömmlichen Vertex- und Pixelshaderprogramme um während ATis neuer R600 tatsächlich echte unified Shader verarbeiten kann.

Heraus kommt aber das selbe Ergebniss. Das was der Programmierer geschrieben hat wird auch auf dem bildschirm angezeigt. Auf der ATi Karte wird es alledings aller vorraussicht nach schneller gelaufen sein, als bei den simulierten Shadern von nVidia.

Wenn man es also ganz genau nimmt ist nVidias neuer G80 noch gar kein richtiger DX10 Chip.



Jetzt noch kurz was zur Physikberechnung auf der Graka. Das ist grundsätzlich auf allen Grafikkarten möglich. Anstatt ShaderProgramme zu schrieben, die Grafiken berechnen schreibt man Programme die physikalische Berechnungen durchführen. Man kann auch Soundverarbeitung auf den Grafikkarten durchführen. Da sind einem eigentich keine Grenzen gesetzt.

Der vorteil der neuen DX10 Karte sind diese unified Shader. Bisher waren Shaderprogramme immer stark limitiert. Sie konnten nur eine bestimmte Anzahl von Kommandos enthalten, nur eine bestimmte anzahl von Sprungbefehlen enthalten und und und. Hinzu kam, dass verschiedene Aufgaben auf unterschiedliche Shadertypen verteilt werden mussten.

Wie das Wort "unified" bei den unified Shadern schon sagt wurde bei DX10 beschlossen die unterschiedlichen Shadertypen zusammenzufassen und alles nur noch mit einem Shaderprogramm zu bearbeiten. Es gibt auch keine Längenbegrenzung mehr und jede Menge anderer Limitierungen sind weggefallen. Somit lassen sich auf den neuen Karten viel komplexere und anspruchsvollere Programme schrieben, als bisher. Das macht es einem auch so einfach Physikberechnungen auf der Graka durchzuführen. Man ist jetz einfach viel flexiebler.

Puh. Jetzt habe ich aber erst einmal genug getippert. Hab gleich Feierabend. Dann geht's ab nach Hause.