テクスチャフィルタリングとは
コンピュータグラフィックスにおいて、テクスチャフィルタリングは、
テクスチャマッピング時に
テクセルの色を決定するために用いられる重要な技術です。簡単に言えば、テクスチャのピクセル(
テクセル)をより小さな単位に分割し、それらを混ぜ合わせることで、最終的なピクセルの色を決定します。テクスチャスムージングとも呼ばれます。
テクスチャフィルタリングの必要性
テクスチャマッピングの過程では、テクスチャ上の各
テクセルが、スクリーン上のピクセルにどのように対応するかを考慮する必要があります。テクスチャは視点からの距離や角度によって変形するため、必ずしも1つのピクセルが1つの
テクセルに対応するとは限りません。このため、適切なフィルタリング処理を適用し、ピクセルに最適な色を決定する必要があるのです。
不適切なフィルタリングを行うと、
ブロックノイズ、
ジャギー(ギザギザ)、ちらつきなどのアーティファクトが発生し、画質を大きく損ねてしまいます。テクスチャの拡大(
テクセルがピクセルより大きい場合)と縮小(
テクセルがピクセルより小さい場合)の両方で、適切なフィルタリングが必要です。グラフィックスAPIでは、拡大用と縮小用で異なるフィルタを設定できます。
また、ピクセルと
テクセルが正確に同じ大きさの場合でも、ピクセルが
テクセルと整列していない状況では、周辺の
テクセルを参照するフィルタリングが必要となります。
ミップマッピング
ミップマッピングは、テクスチャ縮小時のフィルタリング処理を効率化する標準的な技法です。テクスチャを段階的に縮小した複数のテクスチャ(ミップマップ)を事前に用意しておくことで、遠くのオブジェクトのテクスチャを高速に描画することができます。ミップマップはレベルで管理され、レベル0が最も大きく、距離が遠くなるほどより小さなレベルが使用されます。
フィルタリング手法の詳細
以下に、テクスチャフィルタリングでよく用いられる手法を、計算コストと画質の観点から解説します。
最近傍補間 (Nearest Neighbor Interpolation)
最も単純で高速な方法ですが、画質は最も低いです。ピクセルの中心に最も近い
テクセルの色をそのまま使用します。拡大時には
ブロックノイズ、縮小時にはエイリアシングが発生します。
ミップマップを用いた最近傍補間
最近傍補間をベースに、ミップマップを併用することで、エイリアシングとちらつきを軽減します。まず、距離に応じて最適なミップマップレベルを選択し、そのレベルで最も近い
テクセルの色を使用します。
バイリニアフィルタリング (Bilinear Filtering)
ピクセルの中心に最も近い4つの
テクセルを参照し、それらの色を距離で加重平均して合成します。最近傍補間よりも滑らかな画像が得られ、
ブロックノイズを軽減できます。ミップマッピングと併用されることが一般的です。
トライリニアフィルタリング (Trilinear Filtering)
バイリニアフィルタリングに加え、2つの隣接するミップマップレベル間で補間を行います。これにより、ミップマップレベルが切り替わる際に発生する画質の変化を滑らかにすることができます。より高品質な画像を提供しますが、計算コストはやや増加します。
異方性フィルタリング (Anisotropic Filtering)
斜めから見たテクスチャに対して、より高品質なフィルタリングを行う手法です。視点からの角度を考慮し、テクスチャを
台形としてサンプリングすることで、ぼやけを軽減します。現在のGPUで広くサポートされており、画質とパフォーマンスのバランスが良いです。
近傍比率フィルタリング (Percentage Closer Filtering)
深度ベースの
シャドウマッピングで使用される手法です。シャドウマップの解像度不足によるエイリアシングを軽減し、ソフトシャドウの効果を擬似的に実現できます。
応用分野
テクスチャフィルタリングは、コストの低いアンチエイリアシング手法として活用されています。特に、高さマップなどのソフトなテクスチャを補間することで、より自然な見た目を実現できます。
これらのフィルタリング手法を適切に使い分けることで、3Dグラフィックスの品質を大幅に向上させることができます。