私はこれまでに発見したことを投稿すると思いました。簡単な答えは、Silverlight 5の3Dパイプラインがこの種のものに利用できるとは思わないということです。一方では、パイプラインの一部であるピクセルシェーダと頂点シェーダは実際にGPUで実行されます(CPU上で実行されたSilverlight 4の2Dシェーダとは異なります) 。
しかし、それは言った:
(1)私が読んだすべてはGPU上にデータを取得することは非常に高速ですが、と言うそのGPUのうちデータが上で、非常に遅いことになっほとんどのマシンのためにミリ秒のオーダー。そのため、FFTを実行するために必要なデータをGPUにロードし、FFTを実行した後、CPU上で行うよりも速くデータを取り戻すことはできません。
(2)Silverlight 5には、GPUで実行できる命令セットが非常に限られています。具体的には、制限された命令数と使用可能なレジスタ数を持つHLSL Level 2に制限されています。制限された命令の中でFFTやDCTをモデル化することは、可能であれば、非常に困難で非常に遅いことになるとは思えません。
(3)しかし、私が知る限り、SilverlightはGPUが実行している計算結果を読み取る能力がありません。通常のXNA(Silverlightの3Dフィーチャが基づいているフレームワーク)には、さまざまなGetData()メソッドやGetTexture()メソッドがあり、計算セットの結果を読み取るために使用できると思います。しかし、Silverlight 5バージョンでは、これと同等のメソッドが欠けています。私が知る限り、Silverlight 5では、GPUは書き込み専用のデバイスです。シェーダーをロードし、データをロードし、トリガーを引いて、別れを振ります。あなたのコードはそれらのバイトを再び見ることはありません。
私がこれについて間違っていることが判明した場合は、ここに戻ってこの回答を更新します。しかし、少なくとも現時点では、これは行き詰まりのように見えます。
[10/10/11編集 - MSからのShawn Hargreavesによると、これはSilverlight 5ではサポートされていません。なぜそれが(a)すべてのGPUドライバで一貫して動作するのは難しいでしょうか、そして(b)デモウェアスタイルの問題の小さなクラスを除くすべての場合、それは意味をなさないでしょう。ああ。]