NVIDIAがATIに噛み付いた「テクスチャの異方性フィルタリング」ってなに? 前編

Page.1

 前回(記事は「こちら」)まででテクスチャフィルタリングがなんのためにあるのか,どういった種類のものがあるのか,それぞれがどういった動作なのかといったことが分かったと思う。
 後編となる今回では,NVIDIAはATIの「異方性フィルタリング」のどこが問題だと指摘したのか,その指摘の内容が適切だったのか,といった話題について見ていきたい。

異方性フィルタリングの仕組み

 本題に入る前に,もう少し異方性フィルタリングへの理解を深める必要があるだろう。
 異方性フィルタリングとは,視線とポリゴンの角度関係に応じて,その都度適切なテクセルを取り出して線形補間を行うテクスチャフィルタリング技法だ。このことは前回にも述べたわけだが,パッとはイメージしにくかったかもしれない。
 ここをもうちょっと詳しく,順を追って説明しよう。
 下図を見ていただきたい。

異方性フィルタリングの動作概念図
異方性フィルタリングの動作概念図

 図は,あるテクスチャを,視線に対して傾いて描かれる1枚の正方形ポリゴンに対して貼り付けようとしている状況と思ってもらいたい。
 ジオメトリ上では正方形のポリゴンも,傾いているので変形した四角形に見える。このとき,左図,ポリゴン上の□部分に貼り付けるテクセルはどんなものになるかを考えてみる。
 ポリゴンが傾いていようが,描画画面は画素は縦横に直行する格子構成になっている。当たり前のことだ。つまり,つじつまを合わせるためには,逆にテクスチャに対して傾いたテクセル取り出しを行う必要があるわけだ。
 一方,右図は「ビデオメモリに格納されているテクスチャ」をイメージしたものだ。テクスチャは,ポリゴンにどんな形に変形されて適用されようが,ビデオメモリ上ではこのように,たとえば256×256ドット……みたいな構成で静的に格納されている。
 以上のことから,左図の□部分に適用すべきテクセルは,対応する右図の変形した四辺形領域内部のテクスチャ領域から取り出されることになるわけだ。この図からも,左図で見る□の範囲は狭いが,実際には右の四辺形のような広い範囲のテクスチャが対応していたことがよく分かるだろう。

 バイリニアでは,右図の変形した四辺形の中から代表される1点,4テクセルを平均化したテクセル色が左図の□に適用される(なぜ4テクセルかは前回のバイリニアフィルタリングの項を参照)。そしてトライリニアでは二つの異なるMIPMAPから1点ずつ(合計2点),合計8テクセルを取り出すことになる(なぜ8テクセルかは,同様に前回のトライリニアフィルタリングの項を参照)。
 本来,広い範囲を吟味しなければならないのに,代表1点からしかテクセル取り出しをやらないために,視線とポリゴンの角度関係がきつくなればなるほど,バイリニアやトライリニアではディテール感が乏しくなっていたのだ。
 これに対し異方性フィルタリングは,より多くの代表地点からテクセル取り出しを行う。この代表地点の個数が,ちょうど異方性フィルタリングの品質設定に相当し,一般的には比の数で表され,代表地点を2個まで取る異方性フィルタリングは「2:1の異方性フィルタリング」と呼んだりする。
 前出の右図には「2:1」の異方性フィルタリングのときの代表地点を●で示してある。4:1,8:1,16:1と品質を上げるにつれて●の数が増えていくと考えればいい。

実は異方性フィルタリングには2種類ある?

 GeForce系にしろRADEON系にしろ,「画面のプロパティ」の詳細から,異方性フィルタリングの品質を設定できることをご存じの方も多いだろう。そして,この異方性フィルタリングの品質はプロパティ画面では「サンプル数」とか「2X,4X,……」などと書かれている場合が多い。この2X,4Xという値が,前述した「2:1」「4:1」に相当する代表地点の個数と思ってもらっていい。

 さて,ここまでは異方性フィルタリングの基本的な考え方で,実戦的な部分では,各ハードウェアやその動作設定で処理内容が異なっている。
 まず第一に,ひと口に「異方性フィルタリング」とはいっても,実際には大別して2タイプがある。一つはバイリニアタイプ,もう一つはトライリニアタイプだ。
 混乱してしまう人もいそうなので補足しておこう。
 現在のGPUに内蔵される異方性フィルタリング機能では,異方性処理で求めた2/4/8/16個といった複数の代表地点から1テクセルをサンプリングするわけではない。
 実際にはその代表地点をもとに,複数テクセルを取り出してバイリニアフィルタリングやトライリニアフィルタリングを適用するのだ。

次のページへ

▲ 上に戻る