2003年世代に引き続き2004年世代のGPUでも、プログラマブルピクセルシェーダの演算精度がATIとNVIDIAでは異なっている。ATIのRADEON X800シリーズは先代RADEON 9800シリーズ同様24ビット浮動小数点実数(FP)精度で、対するGeForce 6800シリーズは先代これもGeForce FXシリーズ同様の32ビットFP精度を採用している。
ATIは、「今のリアルタイム3Dグラフィックスでは、ピクセル陰影処理の演算精度に24ビットで必要十分」という見解を示している。この演算精度にまつわる、両社の考えの相違点についての意見を聞いてみた。
タマシ氏 前回同様のGPUデザイントレードオフにまつわる問題です。内部レジスタをFP24でデザインできれば内部レジスタ容量を小規模に出来るし、積和算器を初めとしたいろいろな演算器も小規模に出来ます。ただ、確実にいえることは、FP24精度はFP32精度よりも精度的に劣ると言うことです。
RADEON X800においてもFP24精度を採択したのは、もちろんベースアーキテクチャがRADEON 9800系であることも大きいと思うが、それ以外にも、シェーダ 2.0仕様に留まったことで、FP32精度への移行の必要性が少なかったとも考えられる。
シェーダ 3.0仕様では、頂点シェーダによるテクスチャへのアクセスが可能となっており、テクスチャデータとしてテーブルに記録されたベクトルデータを使って頂点を変位させる「ディスプレースメントマッピング」(D-MAP)が可能となっている(ただし、シェーダ 3.0仕様のD-MAPは、Matrox Parhelia系のそれとは異なり、頂点数の増減はないシンプルなもの)。
頂点シェーダ自身は、このベクトルデータ・テクスチャからデータが読み出せるだけで、内容を書き換えたりする能力は持たない。よって、このテクスチャの内容を変化させて、動的、かつインタラクティヴなD-MAPを行うためにはピクセルシェーダの力を借りる必要がある。つまり、シェーダ 3.0仕様では「ピクセルシェーダでテクスチャを更新して、これを頂点シェーダで利用する」といったパイプラインが構成できるのだ。
頂点シェーダの演算精度はRADEON X800もGeForce 6800もFP32精度(FP32×4=FP128精度という書き方をする場合もある)だ。一方、ピクセルシェーダの演算精度は、前述したようにFP24(ATI)とFP32(NVIDIA)の違いがある。ピクセルシェーダ→頂点シェーダという処理系が起こりうるシェーダ3.0仕様では、演算精度が異なっていてはまずい。
シェーダ 2.0仕様に留まったRADEON X800シリーズはこの問題に直面しないからこそ「リアルタイム3DグラフィックスにおいてはFP24精度で十分」と言い切れるのだろう。
タマシ氏 この頂点シェーダとピクセルシェーダの演算精度の相違は、Direct X 9世代GPU、それこそシェーダ2.0仕様GPUでも問題になりうるのです。
──頂点バッファレンダリング(Render-to-Vertex Buffer)テクノロジですね。FPフォーマットのフレームバッファに頂点情報に相当する内容をレンダリングし、これを頂点シェーダに戻す処理系で、セミ頂点シェーダ3.0仕様みたいな感じですですよね。OpenGLでもARB Superbuffersテクノロジ(www.ati.com/developer/gdc/SuperBuffers.pdf)の一つとして定義されていると、去年のSIGGRAPHのセッションで聞いてきました。
タマシ氏 RADEON 9700/9800系でもこの機能が使えますが、これらATIのGPUでは、ピクセルシェーダがFP24精度で生成した頂点バッファを頂点シェーダがFP32精度で処理することになりますから、上記の演算精度の違いの問題が生じることになります。
とにかく、いまのGPU世代でFP24精度の優位性を語るのは無理がある私は思います。
頂点バッファレンダリングは、メインメモリとビデオメモリの区別がないXboxでは効果的に活用されている例もあるそうだが、PCでこれを効果的に活用した例はあまり多くない。よって、RADEON系のピクセルシェーダのFP24演算精度が、それほど大きな問題を引き起こすことはめったにないとは思うのだが、一つの可能性としては確かに「その通り」である。
RADEON X800系とGeForce 6800系とでは、ある最新フィーチャーに対するスタンスが決定的に異なっている部分がある。
それはPCI-EXPRESSへの対応スタンスだ。
先行して発表されたRADEON X800系は、GPUコア内部にAGP 8Xインタフェースを内蔵したAGP 8X版だが、先日COMPUTEX TAIPEI 2004でGPUコア内部にPCI-Expressインタフェースを内蔵したPCI-Express版が発表された。
これに対し、GeForce 6800系は内部バスをAGP 16Xとし、これをPCI-Expressインタフェースへの変換ブリッジチップを組み合わせてPCI-Expressに対応する予定になっている。
というわけで、2004年世代は、いわゆるPCI-Expressへの「ネイティヴ対応」(ATI) vs.ブリッジ対応」(NVIDIA)という戦いが繰り広げられるのである。
Copyright © ITmedia, Inc. All Rights Reserved.