OpenGLのtexelFetchとテクスチャの違いは何ですか?


18

私はとの主な違いを理解texelFetchしてtexture、その詳細についていくつか質問があります:

  • texelFetchパフォーマンスの低下が関与?キャッシュなどを使用しないなど?
  • 使用時に互換性がtexelFetchありますか?textureGL_NEAREST

1
テストケースを作成して確認できます
...-ThorinII

1
回答を承認済みとしてマークするのを忘れましたか、それとも未解決の問題ですか?
アンコ

回答:


23

texelFetchとはまったく異なりtextureます。

textureは、フィルタリングと正規化([0,1])テクスチャ座標を処理する通常のテクスチャアクセス関数です。 texelFetch非正規化座標を使用して、テクスチャ内のテクセルに直接アクセスします(フィルタリングなし)((64,64)128x128テクスチャ(.5,.5)と正規化座標の中間のテクセルなど)。


4
+1テキセルを画像として使用する場合にテクセルにアクセスするテクスチャとは異なり、テクスチャを画像として表示することを特に意図していない場合、texelFetchはデータアクセス用であるが、他のタイプのデータを追加したいそれがフィルタリングなどを使用する理由です
。–

パフォーマンスに違いはありますか?
レナーホイト14

1
@mcb:たぶん、しかし、私はそれが非常に大きくなるとは思わないでしょう、そしてそれはおそらくハードウェアベンダーによって大きく変わるでしょう。パフォーマンスは、これらの関数のどれを呼び出すかを決定するときに使用する絶対に間違ったメトリックです:状況に合ったものを使用します(ハードウェアのフィルタリングtextureが必要であるため使用する必要がありますtexelFetch)。
ショーンミドルディッチ

3
@SeanMiddleditchこの場合、パフォーマンスはどのように間違ったメトリックですか?場合はtexelFetch高速で、かつ足りるをフィルタリング最も近い隣人は、あなたが何らかの理由でフィルタリングNNにコンテキストを変更することはできません、それを超える好むのが妥当だろうtexture
レナーホイト

@mcb:texelFetchtextureの基本的な方法では異なる動作をします。入力も参照してください:テクスチャ座標と正規化座標。それらは異なる目的に役立ちます。一方は他方の最適化だけではありません。
ショーンミドルディッチ

6

受け入れられた答えがないので、いくつかの情報を追加します。ショーンがまだ答えていないことを追加したかっただけです。

TexelFetchはテクスチャを画像として扱うため、ピクセルのコンテンツに正確にアクセスできます。あなたは通常、そのコンテンツを正確に必要とするときにそれを行います。

  • 特定の後処理フィルター(ガシアンぼかしはテクスチャサンプルの補間を利用するため、TexelFetchを使用できません)
  • 頂点がテクスチャからデータを読み取る必要があり、それが2つの座標に依存する操作である場合

Tex2Dは、テクスチャをテクスチャとして扱います。ピクセルの正確なコンテンツは必要ありませんが、最も現実的な結果が必要です。標準のテクスチャ読み取りは非常に複雑な操作であり、1つまたは複数のミップマップレベルから補間されたデータを読み取り、再度補間します。これらの高価な操作はすべて、視覚的なアーティファクトを回避することです。

GL_NEARESTは同じようには機能しません。最も遠いポリゴンでは、より小さなミップマップレベルでデータを読み取っているので、テクセルフェッチから読み取ったデータとまったく同じではありません。

Tex2D(ほぼ)がTexelFetchと同じように機能する場合が1つあります。

  1. フィルターはGL_NEARESTです
  2. 1レベルの不完全なミップマップピラミッドを使用している
  3. UVは正規化された頂点コンポーネントではありません(ただし、シェーダーで正規化する必要があります)
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.