次の方法で共有


バイリニア テクスチャ フィルタリング

バイリニア フィルタリングは、サンプリング ポイントに最も近い 4 つのテクセルの加重平均を計算します。 このフィルタリング手法は、最近点フィルタリングよりも正確で一般的です。 このアプローチは最新のグラフィックス ハードウェアに実装されているため、効率的です。

テクスチャは常に、左上隅の (0.0, 0.0) から右下隅の (1.0, 1.0) へと線形的に座標が割り当てられます。 次の図は、テクスチャの線形のアドレス指定を示しています。

カラーのソリッド ブロックの 4 x 4 テクスチャを示す図

テクスチャは通常、単色のカラー ブロックで構成されているように表されますが、実際には、ラスター表示の概念と同様にテクスチャについても考えるとより正確です。各テクセルは、下の図のように、グリッド セルのちょうど中心で定義されます。

グリッド セルの中心にテクセルが定義された 4 x 4 テクスチャを示す図

UV 座標 (0.375, 0.375) におけるこのテクスチャのカラーをテクスチャ サンプラーに要求すると、単色の赤 (255, 0, 0) を受け取ります。 赤のテクセルのセルのちょうど中心は UV (0.375, 0.375) にあるので、これは問題ありません。 UV (0.25, 0.25) におけるテクスチャのカラーをサンプラーに要求した場合はどうでしょうか。 UV (0.25, 0.25) のポイントは 4 つのテクセルのちょうど隅にあるので、これはそれほど容易ではありません。

最も単純な方法は、最も近いテクセルのカラーをサンプラーが返すようにする方法です。これは点フィルタリング (最近点サンプリング をご覧ください) と呼ばれ、結果が粗くなったり、むらができたりするので、一般には望ましくありません。 UV (0.25, 0.25) におけるテクスチャの点サンプリングによって、最近点フィルタリングに関する別の微妙な問題が明らかになります。サンプリング ポイントから等距離のテクセルが 4 つあるので、最も近いテクセルが 1 つあるわけではありません。 この 4 つのテクセルのいずれかが、返されるカラーとして選択されますが、選択されるテクセルは座標の丸め方によって異なり、不自然なテアリングが生じる可能性があります (SDK の最近点サンプリングに関する記事を参照してください)。

もう少し正確で一般的なフィルタリング方法は、サンプリング ポイントに最も近い 4 つのテクセルの加重平均を計算する方法です。これはバイリニア フィルタリングと呼ばれます。 このルーチンは最近のグラフィック ハードウェアに実装されているので、通常、増加する計算コストはごくわずかです。 バイリニア フィルタリングを使用して、さまざまなサンプル ポイントで取得するカラーを次に示します。

UV: (0.5, 0.5)

このポイントは、赤、緑、青、および白の各テクセル間のちょうど境界にあります。 サンプラーが返すカラーは灰色です。

  0.25 * (255, 0, 0)
  0.25 * (0, 255, 0) 
  0.25 * (0, 0, 255) 
## + 0.25 * (255, 255, 255) 
------------------------
= (128, 128, 128)
UV: (0.5, 0.375)

このポイントは、赤と緑のテクセル間の境界の中点にあります。 サンプラーが返すカラーは黄灰色です (青と白のテクセルのコントリビューションのスケールは 0 に設定されています)。

  0.5 * (255, 0, 0)
  0.5 * (0, 255, 0) 
  0.0 * (0, 0, 255) 
## + 0.0 * (255, 255, 255) 
------------------------
= (128, 128, 0)
UV: (0.375, 0.375)

これは、返されたカラーである赤のテクセルのアドレスです (フィルタリング計算における他のすべてのテクセルの重みは 0 に設定されています)。

  1.0 * (255, 0, 0)
  0.0 * (0, 255, 0) 
  0.0 * (0, 0, 255) 
## + 0.0 * (255, 255, 255) 
------------------------
= (255, 0, 0)

これらの計算を次の図と比較してみましょう。この図では、4 × 4 テクスチャ内の各テクスチャ アドレスでバイリニア フィルタリング計算を実行した場合に表示されるカラーを示しています。

すべてのテクスチャ アドレスでバイリニア フィルタリングが実行された 4 × 4 テクスチャを示す図

テクスチャ フィルタリング