0

シェーダーモデル5/D3D11/HLSLを使用します。

テクセルの2D配列をベクトルの2D行列として扱いたいのですが。

      u
v (1,4,3,9)   (7, 5.5, 4.9, 2.1)

(各テクセルは4成分ベクトルです)。さまざまなシェーダーについて、テクスチャ内の特定の範囲のデータにアクセスする必要があります。したがって、テクスチャでアクセスする範囲は、当然、u、vコンポーネントとしてインデックス付けする必要があります。

HLSLでそれをどのように行いますか?私は次のことを考えています:

  • 通常どおりテクスチャを作成します
  • ベクトル値をテクスチャにロードします(テクセルごとに1つのベクトル)
  • テクスチャサンプリングのすべての線形補間をオフにします(「最近傍」)
  • シェーダーで、テクスチャ座標を使用して必要なベクトルを検索します

私が不安定だと感じるのは、浮動小数点uとvを使用してテクスチャにインデックスを付けるときに奇妙なエラーが発生するかどうかだけです。

テクスチャが1024x1024テクセルで、(3,2)->(3,7)にインデックスを付けようとしている場合、u =(3 / 1024,2 / 1024)->(3 / 1024,7 / 1024)少し不安定に感じます。おそらく、intコンポーネントによってテクスチャにインデックスを付ける方法はありますか?それともうまくいくでしょうか?

Texture2DArray

このためだけにGPGPUフレームワークを使用することを望まない(したがって、CUDAの提案はありません:)。

4

1 に答える 1

0

hlsl5.0ではoperator[]を使用してこれを行うことができます

こちらをご覧ください

于 2011-12-15T04:59:20.247 に答える