2009-09-06 19 views

答えて

0

私はSilverlightシェーダについて実際にはわかりませんが、私はPixelBenderについて話すことができます。

ピクセルベンダーシェーダは、ビットマップデータを取得し、各32ビットピクセル(実際には4つの浮動小数点数の塊)を一度に1つずつ評価し、計算を実行します。シェーダへの入力は、1つ以上のイメージとオプションのパラメータであり、出力は常に単一のイメージです。計算はイメージ内のすべてのピクセルで並列に行われ、ピクセル間では「ステートレス」です。つまり、1つのピクセルを評価して別のピクセルで値を保存することはできません。実際、ピクセル評価の点では、この関数は無限に大きな画像上で動作するように設計されているため、画像のサイズと形状には無知です。

シェーダ用のFlash Playerで使用できる機能は、ピクセルベンダー言語全体のサブセットです。再利用可能なライブラリ関数や地域関数などの言語機能は除外されています。

ピクセルベンダーシェーダは、Flash Playerとは別のスレッドでGPU上で実行することができ、基本的にFlashでスレッドプロセスを実行できます。実際には、これは、ステートレスで、ピクセルベンダーの機能が限られているため、大量バッチ処理でのみ便利です。ビットマップデータとして偽装されたShaderにBytearrayの数値を渡し、ShaderJobを使用して非同期に(または同期して)実行することができます。

構文上、HLSLとPBJはどちらもCに似ており、GLSLに基づいています。私の推測では、HLSLはおそらく、グラフィックのハードウェアに関するMicrosoftの経験から、より優れたパフォーマンスとより多くの機能を備えているということです。しかし、FlashとSilverlightの違いはシェーダーをはるかに超えており、Flashはほとんどすべての領域でSilverlightを超えていると考えています。

+1

詳細情報をお寄せいただきありがとうございます。しかし、FlashのPBはGPUで動作しません。 2つの間でより多くの比較があることを願っています:) –

+0

それを指摘してくれてありがとう。私の悪い! –

+0

@Andy:Flash Playerの(最終版)10.1リリースには、Pixel BenderのGPU実装が必要と思われるGPUラスタライザが必要です。 –

1

プログラマビリティについてはわかりませんが、ランタイムパフォーマンスに関しては、pixelbenderが優れています。現在のところ、Silverlight 3ではこの処理をバックグラウンドでは行えませんが、PixelBenderを使用すると可能です。これは、計算的に強いフィルタを使用する場合にUIの影響をあまり受けないため、良好です。

このフォーラムには、Silverlight 3のプロフェッショナルがあります: Pros and Cons 私はこのトピックが古いことを知っていますが、少し不完全なように見えるので、私はそれを追加しています。

関連する問題