Page.3
実はNVIDIAも,GeForce6800からは"手抜き"していた |
まず,この処理系を実装しはじめたのはATI RADEON系だといわれ,NVIDIAはGeForceFX系までは「まじめに(?)」処理していた。
今回,ATIに噛み付いたNVIDIAだが,実は,NVIDIAも,最新GeForce 6800系では,そうしたトリッキーな処理系を実装している。
どうしてそんなことが分かるのか。
Georg Kolling氏制作の「Filter Test」を使うと一目瞭然なのだ。
このテストプログラムは,各縮小レベルを"あえて"異なる単色で塗りつぶしてしまったMIPMAPを用いて異方性フィルタリングを行うというもの(MIPMAPの意味や構造についての詳細は前回を参照のこと)。これを奥に伸びるトンネルの壁に対してマッピングしていく。
視点はトンネルの中心にあって出口方向を見据えているので,色分けされたMIPMAPが同心円状にトンネルに現れなければならない。
実際にGeForce FX 5600で実行してみたのが下の画面だ。ドライバのバージョンはForceWare 61.34で,設定はデフォルトのままだ。
|
|
|
2X |
4X |
8X |
2X〜8Xまでの異方性フィルタリングを色分けされたMIPMAPテクスチャで実行してみた結果。GeForce FXの異方性フィルタリングは「8X」までの対応となるので2X,4X,8Xの3つの結果を示している |
ほぼ同心円状に色分けMIPMAPが適用されていることが見て取れる。
それでは,続いて,RADEON X800PROで実行してみたのが下の画面だ。ドライバのバージョンはCatalyst 4.7で,設定はデフォルトのまま。
|
|
|
|
2X |
4X |
8X |
16X |
同様の実験をRADEON X800PROで行った結果。RADEON X800系は16Xまでの異方性フィルタリングに対応しているので,そのすべてを示す |
ご覧のように,花型のような形状になってしまっている。これは角度や距離に応じてMIPMAPの参照法が違っていることの証になる。条件が揃うと,テクセルサンプル数を減らしたり,あるいはバイリニア型異方性フィルタリングに切り換えたりしていると思われるが,具体的な処理内容まではこの図からは読み取れない。
続いて,GeForce 6800 Ultraの結果を示そう。ドライバのバージョンと設定は,GeForce FX 5600のときと同じだ。
|
|
|
|
2X |
4X |
8X |
16X |
GeForce 6800Ultraによる結果。GeForce FX系の結果よりはRADEON X800系の結果に近い |
同じNVIDIA系でありながら,GeForce 5600の結果とは全然異なっており,むしろ,RADEON X800PROのほうに近いといえるほどだ。
なお,前項で解説した異方性フィルタリングの手法に影響するドライバ設定画面の「システムパフォーマンス」の項目だが,解説を保留した「高画質」設定は,この動的な"手抜き"の仕組みをある程度抑制する働きをすると見られる。
スペースの都合上ここでは示さないが,この"花形"の輪郭がややぼやけたような感じになる。
参考までに,GeForce3 Ti200やRADEON 8500LEの結果も示しておく。GeForce3系は,GeForceFX系の祖先だけあって同心円状になっている。一方,RADEON
8500LEはRADEON X800とは形状は違うものの花形となり,視線角度や視点からの距離に応じて動的な処理系が実行されているのが見て取れる。
|
|
|
2X |
4X |
8X |
GeForce3 Ti200の結果 |
|
|
|
|
2X |
4X |
8X |
16X |
RADEON 8500LEの結果 |
似たような異方性フィルタリング手法を切り回すGeForce 6800とRADEON X800。しかしパフォーマンスはRADEON X800のほうが高いらしい。
それでは,視覚的にどう違ってくるのだろうか。
3DMark03の「Texture Filtering」テストの結果と,MAXPAYNE2のスクリーンショットをに示そう。
|
|
GeForce 6800 Ultraにてトライリニア型異方性フィルタリング設定を適用して,「MAXPAYNE2」を実行したときの画面 |
RADEON X800PROでトライリニア型異方性フィルタリング設定を適用して「MAXPAYNE2」を実行したときの画面 |
|
|
GeForce 6800 Ultraでトライリニア型異方性フィルタリング設定を適用して,3DMark03の「Texture Filtering」テストを実行したときの画面 |
RADEON X800PROでトライリニア型異方性フィルタリング設定を適用して,3DMark03の「Texture Filtering」テストを実行したときの画面 |
これらを見る限り,確かに描画結果は互いに異なるのだが,画質に優劣は付けがたい。いずれも,最奥付近のディテール感は立派なものだし,実際に視点を動かしてみてもMIPMAPの切り替えポイントが可視化されてしまっている様子もない。そして視線軸に対して回転するような動きを行っても,大きくテクスチャのディテール感がざわつく感じもない。
両者の結果にはそれぞれ,どの程度の差異が生じているのだろうか。先ほどのMAXPAYNE2と3DMark03の画面について,GeForce 6800 UltraとRADEON
X800 PROとでどの程度描画結果に差異があるのかを調べてみた。
下の二つの画面は,GeForce 6800 Ultraの結果とRADEON X800 PROの結果同士の差分を抽出し,その値を可視化するためにバイアスをかけて出力したものだ。
|
|
MAXPAYNE2のショットの差分。主人公のMAX PAYNEは常に多少動いているので,彼の体の形状はほぼ,そのまま差異として出力されてしまう。よって,この部分は無視 |
3Dmark03のショットの差分 |
なおこの図は,色が濃けれは濃い箇所ほど差異が大きかったことを表している。
こうして見てみると,見た目では分からなかったが,最奥付近での差異が大きいことが分かる。そう,異方性フィルタリング処理において最も工夫(手抜き?)の余地がある部分で,双方で異なる,大胆な処理が行われていることを予想させる。
参考までに,GeForce 6800 UltraとRADEON X800 PROでバイリニアフィルタリング適用時のMAXPAYNE2の画面ショットと,その差分も以下に示しておく。
|
|
|
GeForce 6800 Ultraでバイリニアフィルタリングを適用した状態での,MAX PAYNE2の画面 |
RADEON X800 PROでバイリニアフィルタリングを適用した状態での,MAX PAYNE2の画面 |
なにやら境界線のようなものが見えるが,これはズバリ,MIPMAPの境界線だ。それ以外はほとんど差がない……つまり,両者の処理内容にほとんど差がないことを表している
|
NVIDIAは「RADEON X800の異方性フィルタリング適用時のパフォーマンス低下は少なすぎる」と訴えたわけだが,「画質劣化がユーザーに分からないレベル」での"手抜き"は,アプローチとしてはありだろう。
そもそも,異方性フィルタリングの処理を状況に合わせてインタラクティブに手を抜くという手法はGeForce 6800系から採用されるようになったのだから,その"手抜き"のアイデア自体をNVIDIAに責める権利はないはずだ。
では,今回の件の問題点はどこにあるのか。
一つは,これが3DMark03に代表されるメジャー級ベンチマークテストの結果に効果として表れてしまった点にある。そして多くのメディアが「RADEON X800系は異方性フィルタリング適用時のパフォーマンス低下が小さい」などと報じてしまったことにある。
ベンチマークソフトは同じ条件で同じ処理内容を実行して然るべき……これが一つの考え方ではある。だから,いわゆるソフトウェア的なアプローチの最適化は邪道だという意見。
しかし,GPUメーカーが提供するPC用グラフィックシステムとはハードウェアとソフトウェアの双方から成るものであり,そのトータルパフォーマンスこそがGPUの性能なのだ。そんな考え方もある。この見地に立てばビジュアル的に大差ない範囲で描画処理の"手抜き"を行うことは"あり"ということになる。
今回の問題の本質は,RADEON X800とGeForce 6800で同じような最適化のアプローチをしていて描画結果に大差がないのに,NVIDIAが噛み付きたくなるほどRADEON
X800のほうがパフォーマンスが良かったという点,ここにあると思われる。
どうしてこんなにパフォーマンスに差が現れるのかについては謎が残ったままだが,単純に想像すれば,ATIのほうが大胆な「最適化≒手抜き」を行っているから,ということになるだろうか。
前で示したRADEON 8500LEの結果を見ても分かるように,ATIはかなり初期から異方性フィルタリングについては視線角度や距離に応じたそうした"動的な手抜き"処理系を盛り込んでおり,結局,この手のノウハウはNVIDIAよりもATIのほうに一日の長があったということだろうか。
いずれにせよ,これからは3Dベンチマークを異方性フィルタリングを適用した状態で実行しても,その優劣が単純にそのGPUの優劣に結びつくとは限らない,あるいはそうした判断はあてにならない……ということを,情報の受け手として身構えておかなければならない。
▲ 上に戻る
|