7

Xbox 360 での XNA についての洞察を探しています。主に GPU でベクトルベースの浮動小数点演算を実行できるかどうか?

方法があれば、正しい方向に向けてもらえますか?

4

2 に答える 2

6

私はこれについて専門家であるとは主張しませんが、うまくいけば、これが役立つ方向性を示すことができます.

出来ますか?はい。おそらく、GPU がそのような計算に優れていることは既にご存じでしょう (したがって、この問題が発生します)。実際に、XNA を使用して GPU を制御できます。それがあなたのニーズに合うかどうかは別の問題です。

GPU を利用するには、おそらく HLSL を使用してシェーダーを作成する必要があります。XNA のコンテキストでの HLSL の適切な紹介がReimersにあります。特に、そのチュートリアルは GPU にグラフィックス関連のクランチを行わせることに焦点を当てていますが、シェーダーに何を書くかはあなた次第です。ベクトルベースの float 演算がレンダリングを目的としている (したがって、GPU ドメインにとどまることができる) 場合は、運がいいのでここで終了できます。

画面上にレンダリングすることは、あなたが求めているものではない可能性があります。これで、数学を行う限り、HLSL にはかなりの柔軟性があります。ただし、結果を CPU に出力することは、システムの設計方法ではありません。これは私にはあいまいになってきていますが、Shawn Hargreaves (XNA 開発者) は、GPU からの出力 (画面上にレンダリングされる以外) を取得することは自明ではなく、パフォーマンスに影響を与えると複数回述べていますデータの取得には、パイプライン ストールを引き起こすGetData の呼び出しが含まれます。

だからそれはできる。XNA フレームワークを使用すると、360 (Shader Model 3.0 といくつかの拡張機能をサポートする) 用のシェーダーを作成できます。これらの結果を取得すること可能ですが、ニーズに対して十分に効率的ではない場合があります。

于 2008-09-24T05:28:07.487 に答える
2

上で述べたように、XBox360はすべてのHLSL計算に完全に対応しており、具体的には、頂点およびピクセルシェーダーモデル3の命令を処理でき、プラットフォームに固有の拡張された一連の命令を備えています。

HLSLは実際にはベクトルベースであるため、必要なすべてのツール(ドット、クロス、ベクトル演算、行列計算)があります。計算をGPUに送信し、CPUで結果を編集/使用する場合は、テクスチャに書き込み、CPU側でフェッチしてデコードできます。これをパーティクルや物理的相互作用(水など)に使用することはほとんどありません。あなたがそうしたいと思うかもしれない機会。

于 2008-09-26T21:20:10.963 に答える