Silverlight 5でGPUを使用して高速フーリエ変換を行う


7

遅いマシンで加速が必要なSilverlightのオーディオライブラリがあります。具体的には、このライブラリは、音響エコーキャンセレーションおよびノイズリダクションアルゴリズムの一部としてFFT変換を広範かつ繰り返し使用します。このためにGPUを使用するのが理にかなっているか疑問に思います(たとえば、ここ:http : //www.inf.fu-berlin.de/lehre/SS10/SP-Par/download/fft1.pdf)。

Silverlight 5がMicrosoftのXNAフレームワークのかなり単純なポートを提供していることは知っていますが、残念ながら、私は3Dコーディング全般、特にXNAの完全な初心者です。理論的には頂点および/またはピクセルシェーダーの組み合わせを使用してこの魔法を働かせることが可能であるように思えますが、この道を進む前に、いくつかの質問について専門家の意見を聞きたかったのです。

(1)SL5のXNA実装は、そのパイプラインの出力を単一の "DrawingSurface"にスローします。私はこれが計算の結果を読み取ることができるかもしれないと思っていました(WriteableBitmapを使用して、SL4のピクセルシェーダー計算の結果を読み取る方法の一種)。しかし、どうすればよいのかわかりません。「GetPixels()」メソッドなどはありません。通常のXNA 4.0では、VertexBufferにGetData()メソッドがあり、Texture2DおよびTexture3Dクラスと同じですが、これらのメソッドはSL5バージョンにはありません。シェーダー出力の結果を実際に読み取る方法を知っている人はいますか?または、GPUはSL5の書き込み専用デバイスですか?

(2)GPU計算の本当の問題は、結果をすばやく読み取ることです。私が問題1を解決できると仮定すると、FFTがこの種のソリューションに適しているかどうか誰かが知っていますか?

(3)Silverlight 5はHLSLレベル2に制限されています。HLSLレベル2には、命令、レジスター、使用可能な関数などに関して、いくつかの重大な制限があります。FFTまたはその一部をこれに移植できると期待することはまったく理にかなっていますか?

前もって感謝します。


1
あなたがしなければならない数学演算を説明できますか?リアルタイム効果が必要ですか?遅れることはありますか?レンダーターゲットを使用して計算を描画し、GetDataを使用してそれらを取得する必要があります。テクスチャにgetdataがないことを確認しますか?
ブラウ

私は、GoogleのWebRTCスタック(C#に移植したもの)を使用して、リアルタイムのオーディオ拡張を行っています。これには、アコースティックエコーキャンセレーション、ノイズリダクション、自動ゲインコントロールなどが含まれます。多くの浮動小数点演算が関係しており、そのほとんどは、信号を時間領域から周波数領域に変換することに関係しています。これは高速フーリエ変換を使用して行われます。獣の性質上、それはリアルタイムである必要があります。そしてMSDN(msdn.microsoft.com/en-us/library/…)によれば、Texture.GetData()メソッドはありません。
ケン・スミス

Uupps ... silverlightでテクスチャにGetDataがありません...回避策を探していましたが、成功しません... xnaとsilverlightに関するShawnの投稿に投稿することをお勧めします... blogs.msdn.com/b/ shawnhar / archive / 2011/10/05 /…彼はいくつかの解決策を与えるかもしれない
Blau

1
これはあなたの質問の答えにはなりませんが、D3D11にはID3DX11FFTインターフェイスがあり、実行する必要がある作業の量を大幅に簡素化します
bobobobo

@bobobobo-まあ、そうです、それは助けにはなりません。しかし、それは私を嫉妬させます。Silverlightでアクセスできれば、コードが大幅に高速化されると思います。まあ...
ケン・スミス

回答:


3

Shawn Hargreaves(MSによる)によると、これはSilverlight 5ではサポートされていません。理由についての彼の非公式な推測は、(a)すべてのGPUドライバーで一貫して機能させることが難しい、および(b)すべてのドライバーでデモウェア形式の問題のごく一部なので、意味がありません。

しかたがない。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.