Direct3Dでピクセルシェーダーを実行する場合、MaxTextureRepeatによって課されるテクスチャ座標の制限は、Tex2D()などのテクスチャルックアップ関数の呼び出し中にのみ問題になりますか、それともシェーダー内でテクスチャ座標にアクセスするたびに機能しますか?
テクスチャルックアップ関数に渡す前に、テクスチャ座標でfrac()のようなものを呼び出すことによって、MaxTextureRepeatの制限を回避できるかどうかを知りたいです。
テクスチャ座標はネイティブ補間精度です。ピクセル シェーダー 2.0 対応のハードウェアでは、これは少なくとも 24 ビットの浮動小数点 (または、おそらく 32 ビット、不明) です。内部的には、ピクセル シェーダーでの計算は少なくとも 24 ビットの浮動小数点である必要があります。最新の GPU のほとんどは、32 ビットの浮動小数点精度で実行されます。
MaxTextureRepeat は、テクスチャ サンプリング ハードウェアの機能です。
そうです、浮動小数点の精度制限に遭遇しないのであれば、サンプリングの前に範囲を制限することは、テクスチャの繰り返し制限を回避する 1 つの方法です。
ただし、frac が 0 から 1 に変化する場所では大きな勾配が得られるため、これらの場所では GPU は非常に低い解像度のミップ レベルを使用する必要があります。もちろん、これは状況によっては問題になりません。しかし、それは潜在的な問題の 1 つのポイントです。