2008-09-24 15 views
7

Ich bin auf der Suche nach einem Einblick in XNA auf Xbox 360, vor allem, wenn es möglich ist, Vektor-basierte Float-Mathematik auf seiner GPU zu betreiben?GPU-Programmierung auf der Xbox 360

Wenn es einen Weg gibt, können Sie mir in die richtige Richtung zeigen?

Antwort

6

Ich behaupte nicht, ein Experte auf diesem zu sein, aber hoffentlich kann das Sie in eine hilfreiche Richtung weisen.

Ist es möglich? Ja. Sie wissen wahrscheinlich bereits, dass die GPU bei solchen Berechnungen gut ist (daher die Frage) und Sie können die GPU tatsächlich mit XNA steuern. Ob es Ihren Bedürfnissen entspricht oder nicht, ist eine andere Sache.

Um die GPU nutzen zu können, werden Sie vermutlich Shader mit HLSL schreiben wollen. Es gibt eine anständige Einführung in HLSL im Kontext von XNA unter Reimers, die Sie vielleicht durchlaufen möchten. Bemerkenswerterweise konzentriert sich dieses Tutorial darauf, dass die GPU Grafik-bezogenes Knirschen ausführt, aber was Sie in den Shadern schreiben, liegt ganz bei Ihnen. Wenn Ihre vektorbasierte Gleitkomma-Mathematik zum Rendern dient (und somit in der GPU-Domäne bleiben kann), haben Sie Glück und können hier aufhören.

Wahrscheinliches Rendering auf dem Bildschirm ist nicht das, wonach Sie suchen. Nun, Sie haben eine Menge Flexibilität in HLSL, soweit es Ihre Mathematik geht. Die Ergebnisse wurden jedoch nicht an die CPU ausgegeben. Dies wird für mich unscharf, aber Shawn Hargreaves (ein XNA-Entwickler) gibt unter more als one occasion an, dass die Ausgabe von der GPU (außer auf dem Bildschirm gerendert) nicht trivial ist und Auswirkungen auf die Leistung hat. Das Abrufen von Daten beinhaltet einen Aufruf von GetData, der cause a pipeline stall lautet.

So kann es gemacht werden. Das XNA-Framework lässt Sie Shader für die 360 ​​schreiben (die Shader Model 3.0 plus ein paar Erweiterungen unterstützt) und ist möglich, um diese Ergebnisse zu erhalten, obwohl es möglicherweise nicht effizient genug für Ihre Bedürfnisse ist.

2

Wie bereits erwähnt - XBox360 ist vollständig in der Lage, jede HLSL-Berechnung und insbesondere kann Vertex und Pixel Shader Model 3 Anweisungen und verfügt über eine erweiterte Reihe von Anweisungen, die für die Plattform spezifisch sind.

Da HLSL vektorbasiert ist, haben Sie alle Werkzeuge, die Sie benötigen - Punkt-, Kreuz-, Vektoroperationen und Matrixberechnungen. Wenn Sie Berechnungen an die GPU senden und die Ergebnisse auf der CPU bearbeiten/verwenden möchten, können Sie in die Textur schreiben und sie dann auf der CPU-Seite holen und entschlüsseln - für Partikel oder physikalische Interaktionen (wie Wasser) sind es nur wenige von den Gelegenheiten, wenn Sie das vielleicht möchten.