5

トランスフォーム フィードバックを使用して (またはテクスチャにレンダリングすることにより) 、高次関数のマップフィルターを OpenGL コードに変換する方法を理解しました。foldも使用できるようにしたいのですが、これがどのように機能するかわかりません。操作が連想的であると仮定してみましょう。したがって、それが左折か右折か、非決定的な混合かどうかは気にしません。

折り操作の例:

  • ポイントのセットを含む最小の AABB を計算します (頂点配列を折り畳みます)。
  • テクスチャの最も明るい値を計算します (テクスチャを折り畳みます)。

それとも、OpenCL や CUDA がないと実現できないのでしょうか?

4

1 に答える 1

5

操作が連想的である場合は、より小さいテクスチャに繰り返しレンダリングすることで、データを削減/折りたたむことができます。各パスでは、前のパスからの多数のテクセルを結合します。フラグメント シェーダーのテクスチャとしてバインドすることで、前のパスからデータを読み取ります。

たとえば、128x128 値の画像の平均を計算したい場合は、最初に 64x64 のテクスチャにレンダリングして、ターゲット テクスチャの各テクセルに対して入力テクスチャの 4 テクセルを平均します。

典型的な例は、画像のぼかしです。

于 2012-12-29T13:18:03.077 に答える