8

HSLS ピクセル シェーダーを使用して、画像内のすべてのピクセルの合計を効率的に計算するにはどうすればよいですか? WPF シェーダー効果として呼び出すことができる Pixel Shader 2.0 に興味があります。

4

3 に答える 3

7

シェーダーを使用しないはるかに単純なソリューションがあります。画像をテクスチャとしてロードし、ミップマップチェーンを作成して、最後のミップマップの値(1x1ピクセル)を読み戻します。このトリックは、ゲームで広く使用されており、たとえば、シーンの平均の明るさを計算します(HDRトーンマッピングを適用するため)。正確さよりも単純さと効率を重視するなら、それは素晴らしいトリックです。

于 2010-07-15T14:21:14.137 に答える
3

画像のr/g / bチャネル値を合計したいと仮定します(そして元のピクセルを破壊できると仮定します)-これが私の部分的な解決策です:

  1. 10番目のピクセルごとに、隣接する10ピクセルの平均色が計算され、この平均色が画像に表示されます。
  2. 次にCPU側の合計で
    Pix_Value * 10
    各10番目のピクセルの。

この場合、CPU側でのみピクセル値を合計する場合と比較して、約10倍の速度が得られます。

于 2010-09-01T08:36:06.183 に答える
-1

WPF の効果は、視覚的な結果を生成するのにより適しています。それらを別のタイプの計算に使用したいようです。これを行うには、画像の結果をデータとして扱う必要があり、とにかくソフトウェアで行われる RenderTargetBitmap が必要です。GPGPU 用に設計されたこれらのプロジェクトを参照することをお勧めします。

アクセル

梵天

OpenTK OpenTKの OpenCL バインディングの状態がわかりません。DirectCompute や CUDA などの他のテクノロジも一見の価値があるかもしれません。

于 2010-06-02T17:56:12.870 に答える