元麻布春男の週刊PCホットライン

3DMark03に異議を唱えるNVIDIA



●3DMark03ついに公開

 米国太平洋時間の2月11日午前10時、Futuremark(旧称MadOnion.com)は、DirectX 9に対応した3Dグラフィックスベンチマークプログラム、「3DMark03」をリリースした。

 3DMarkシリーズはこの分野の定番とでもいえるものだけに、最新版のリリースと同時にダウンロードサイトにはアクセスが集中、ちょっとした騒ぎになったほどだ。筆者も、3DMark03を早速ダウンロードしたが、サーバの高負荷により176MBに及ぶプログラムの平均データ転送レートは7KB/secそこそこに過ぎず、ADSLもFTTHも関係ない有様だった。

 苦労してダウンロードした3DMark03だが、今回はメジャーバージョンアップということで、大きな変更が加えられている。最終スコア(3DMark Score)を構成するのはGame Test 1〜Game Test 4の4つのゲームを模した3Dグラフィックスシーンのフレームレートだが、そのほかにも(最終スコアに影響しない)様々なフィーチャーテストが盛り込まれている。


●3DMark03にみるテクノロジ

 Wings of Furyと名づけられたGT1(Game Test 1)は、コンバット系のフライトシミュレーションゲームを模したもの。ドイツ上空に侵攻したB-17爆撃機をMe109が迎撃する、といったシナリオだ。このテストは、DirectX 7対応のハードウェアと、それをサポートしたDirectX 8.x互換のドライバがあれば基本的に動作する。

 ドライバがDirectX 8.x互換でなければならないのは、ジオメトリの計算にDirectX 8.1のVertex Shader 1.1を利用しているためで、Vertex ShaderをハードウェアでサポートしていないDirectX 7互換のハードウェアではCPUによるエミュレーションとなる。

 本来、DirectX 7世代のハードウェアを評価するのであれば、DirectX 7互換のHardware T&Lを用いるべきだろうが、それは過去のバージョンの3DMarkを使えば済む、という判断のようだ。むしろ、DirectX 7互換のハードウェアが、2003年にどのような性能を期待できるのか、という観点から見て、Vertex Shader 1.1を採用したのだとも考えられる。

 次のGT2は、Battle of Proxyconと名づけられた、宇宙空間を舞台にしたFPS(ファーストパーソンシューティング)を模したもの。このテストの実行にはDirectX 8.x世代のハードウェア、つまりVertex ShaderとPixel Shaderをサポートしたグラフィックスチップが必要になる。対応するシェーダのバージョンはVetex Shaderが1.1、Pixel Shaderが1.4で、もしPixel Shader 1.4に対応していないハードウェアの場合はPixel Shader 1.1を用いることになっている。

 Pixel Shader 1.4なら1パスで処理可能な処理がPixel Shader 1.1では4パスとなるため、DirectX 8.1がサポートするシェーダの中で最も高いバージョン(1.4)をサポートしたハードウェアの利点が数値として現れることになる。加えて、このテストの実行中にテクスチャデータのスワッピングが生じることを防ぐには、カード上に128MBのビデオメモリが必要となるため、同じグラフィックスチップでもメモリ搭載量が64MBのカードと128MBのカードの差を見ることができるハズだ。

Game Test1のWings of Fury。基本的にはDirectX 7世代のアプリケーション。NVIDIAはフライトシミュレーションの市場シェアが著しく低い(1%)ことも、このテストが不適切な理由の1つして挙げている 宇宙空間を舞台にしたFPSのBattle of Prxycon

 Troll's Lairという名前のGT3は、技術的なレベルはGT2とほぼ同じ。ただアートワークが、ファンタジー世界を舞台にしたRPGを模したものになっている点が大きく異なる。また、シーンあたりのポリゴン数が、GT2より増えている点も違いとなっている。

 最後のGT4は、Mother Natureと名づけられたもの。3DMark 2001 SEにあったNature(Game 4)の発展型とでもいえるテストだ(ただし3DMark 2001 SEではNatureは最終スコアに含まれていない)。このテストではDirectX 9に含まれるVertex Shader 2.0およびPixel Shader 2.0の機能が用いられている。

 ただし、すべてがVertex Shader 2.0とPixel Shader 2.0で記述されているわけではなく、木の葉のさざめきを記述しているのがVetex Shader 2.0であるのに対し、地上の芝生の動きはVetex Shader 1.4、川や湖などの水面の表現に用いられているのがPixel Shader 2.0、地上のハイライト部のライティングの表現にはPixel Shader 1.4が使われている、という具合だ。これら4つのゲームテストの応用編として、GT1とGT3を低解像度(640×480ドット)でソフトウェアにより実行することで、CPUの性能を計測するCPUテストも実行される。

ファンタジーRPGを題材にしたGame Test 3 DirectX 9対応のGame Test 4。ここでもPixel Shader 1.4が併用されていることが問題となっている

3DMark03 Proでは結果をExcelにエクスポートすることが可能。これは、筆者が行なったテスト結果(Pentium 4 3.06GHz/512MB PC1066 RDRAM/RADEON 9700 PRO)だが、3DMark03はマルチスレッドに対応しない

 さらにフィーチャーテストとして、これまでもおなじみのFill Rateテスト(シングルテクスチャならびにマルチテクスチャ)、Vertex Shaderテスト(Vertex Shader 1.1)、Pixel Shader 2.0テスト、CPUとグラフィックスハードウェアのバランスをみるRagtrollテスト、初めてインプリメントされた3Dサウンドテスト(ハードウェアアクセラレーションのないAC'97ベースのサウンドではスキップされる)などがサポートされている。さらに、DirectX 9 SDKのリファレンスラスタライザ(ソフトウェアラスタライザ)との比較で、イメージ品質を確認したり、テクスチャのフィルタリング品質を確認するツールも付属する。

 3DMark03は、FutureMarkのダウンロードサイトから無償で入手することが可能だ。が、上述した3DMark03の全機能を利用するには、有償のPro版を入手する必要がある。Pro版はCD-ROMで購入することができるほか、Webサイトでレジストレーションキーを購入することで、ダウンロードした無償版をPro版に変更することができる(追加のダウンロードは不要)。

 なお、従来のPro版では、Result Browser(3DMarkの結果を表示するプログラム)がローカルで実行可能だったが、3DMark03では省略されてしまった。代わりにPro版には、3DMark03の結果をExcelにエクスポートする機能が加えられた。データの活用を考えるとこちらの方が便利ではあるのだが、単純にXLSファイルを吐くのではなく、3DMark03の中からExcelを呼び出し、そこにデータを貼り付けていく。そのため、事前にExcelをインストールしておかねばならないのが玉に瑕ではある(日本語版Excelにも対応)。

 以上、簡単に紹介したように、3DMark03はDirectX 9に対応した3Dグラフィックスベンチマークだ。が、DirectX 9専用というわけではなく、古いハードウェアでも動作可能な内容となっている。むしろ、中心と考えられているのははDirectX 8.1レベルのハードウェアとも思われる。これは現時点において市販されているDirectX 9対応ハードウェアが極めて限られており(本稿執筆時点においてGeForce FXは店頭に並んでおらず、事実上ATIのRADEON 9700/9500シリーズしか存在しない)、DirectX 9専用プログラムには市場性がないことと無縁ではないだろう。

 そもそも本プログラムの名前は「3DMark03」であって、「3DMark DX9」では決してない。2003年に(ゲーム)ユーザーが求めるであろうハードウェアと、そのハードウェアで期待される性能を測る目安となることが目的なのである。したがって、ある程度古いハードウェア(DirectX 8.x世代のもの)、ある程度古いAPI(DirectX 8/8.1)のサポートも必要だと思う。そういう意味でも、3DMark03は有意義なプログラムだと考える。


●3DMark03に対するNVIDIAの主張

 ところが、これに異議を唱えた会社がある。現在、デスクトップ向けグラフィックス市場でトップシェアを誇るNVIDIAだ。彼らの主張を要約すると、次のようになる。

 3DMark03は、Gamer's Benchmarkというが、3DMark03が示す性能指標は、ユーザーが現実のゲームから得られる性能と乖離している。その主要な理由は、

1. 3DMark03が採用しているグラフィックスエンジンは、現実のゲームに使われているゲームエンジンではない。

2. 3DMark03におけるPixel ShaderやVertex Shaderの使用法は現実のゲームを反映したものとは言いがたい。

の2点である。

 まず1だが、事実としては、これはその通りである。3DMark 2001で使われていたグラフィックスエンジンが、ゲームMax Payneに使われたもの(MAX-FX)であったのに対し、3DMark03に使われているグラフィックスエンジンは現実のゲームとは直接関係しない。これはベンチマークの妥当性の裏づけという点でマイナスではあることは間違いない。3DMark03は、実アプリケーション(ゲーム)によるベンチマークではなく、作られたベンチマーク(Synthetic Benchmark)であるのは確かだ。

 しかし、この世界では昔からSythetic Benchnarkとアプリケーションベンチマークの両方が存在してきた。前者の代表はWinBenchや3D WinBench、後者の代表はWinStoneやSYSMarkなどである。このように2つが並存してきたのは、どちらか片方だけでは、システムの性能のすべての側面を判断できないからだ。たとえば、あるアプリケーションを用いたベンチマークテストで性能が良かったからといって、他の(APIの使い方が異なる)アプリケーションでの性能まで良いとは限らない。

 たとえば3DMark 2001で用いられていたMAX-FXについても、Max Payneというゲームをしないユーザーには、リアリティがないことになる。これを克服するには膨大な数のアプリケーションでベンチマークテストを行なわなければならないが、それでは多数のハードウェアの比較は難しくなる。また、アプリケーションのバージョンアップという厄介な問題もある。

 Synthetic Benchmarkの良いところは、APIを網羅的にテストできることだ。ユーセージモデルさえ適切であれば、Synthetic Benchmarkが示す性能は、現実のアプリケーションで示される性能に酷似する上、普遍的なものとなる。問題は、ユーセージモデルの設定が適切であるとのコンセンサスを得ることが極めて難しいこと、すなわち2の問題である。


●Pixel Shader 1.4を多用する3DMark03

 NVIDIAは3DMark03におけるVertex ShaderとPixel Shaderの使い方に多くの異議を唱えている。が、その中核は、現時点でリリースされているゲームでほとんど使われていないPixel Shader 1.4を多用している点だ。NVIDIAは、「Tiger Woods」や「Unreal Tournament 2003」といった具体的なゲームタイトルを挙げ、これらがPixel Shader 1.4ではなく、Pixel Shader 1.3を用いていることを指摘している。

Pixel Shader 1.4に対応するRADEON 9700PRO

 この指摘はある意味で正しいが、ある意味では不十分ではないかと思う。まずベンチマークソフトは、現在のアプリケーション(Pixel Shader 1.1/1.3を用いたアプリケーション)における性能を測るだけでよいとは思えないからだ。現在、ハイエンドのグラフィックスカードは5万円近くする。同じ価格でOSのライセンスがついた新品のPCが丸ごと買える時代、グラフィックスカードに5万円を投じるには、現在のアプリケーションだけでなく、将来のアプリケーションについても高い性能が約束される必要がある。

 現実のゲームを用いたベンチマークは、現実のゲームにおける性能を測るという点では望ましいが、将来のゲームにおける性能を示唆してくれるわけではない。3DMark03はDirectX 9に対応した初のベンチマークであると同時に、DirectX 9に対応した初めてのアプリケーションでもある。将来登場してくるであろうDirectX 9対応ゲームでの性能を予測する上で、すでにリリースされているDirectX 8.x対応ゲームでのベンチマークと、どちらが参考になるかは明らかだ。

 今回NVIDIAが強硬に異議を唱えている最大の理由は、3DMark03がPixel Shader 1.4を多用していることだが、Pixel Shader 1.4を使うことをこれだけ声高に批判するのは、単に現行のゲームがPixel Shader 1.4を使っていないからだけではないだろう。おそらくNVIDIAの製品の特徴と関連するハズだ。

 現在NVIDIAの主力であるGeForce 4 Tiシリーズは、DirectX 8.1に完全対応したものではない。DirectX 8.1におけるPixel Shaderの最上位バージョンである1.4への対応が欠けている。

 Pixel ShaderとVertex Shaderによるプログラマブルシェーダの考えがDirectXに取り入れられたのはDirectX 8.0の時であり(いずれのバージョンも1.0)、NVIDIAのアイデアがMicrosoftに取り入れられたものと考えられている。

 DirectX 8.1ではVertex Shaderが1.1になり、Pixel Shaderは1.1、1.2、1.3、1.4の4バージョンが加わった。Vertex Shader 1.1とPixel Shader 1.1は、いずれも1.0のバグフィックスを含むマイナーチェンジであり、ハードウェア的にはほとんど同一で済む。Pixel Shader 1.2〜1.4は新たな拡張が加えられているが、1.2と1.3が1.1の発展形、すなわちNVIDIAのアイデアの延長線上にある(あるいはNVIDIAによる拡張)のに対し、1.4はATIのアイデアが取り入れられたものだと言われており、サポートしているのはATIのチップにほぼ限定されている。だからこそ、NVIDIAは3DMark03がPixel Shader 1.4を多用することが不満なのである。

 Pixel Shader 2.0に対応したハードウェアはPixel Shader 1.4もサポートすることになっているが、DirectX 8.0世代のGeForce4 Tiシリーズはサポートしていない。したがって、3DMark03でPixel Shader 1.4の代わりにPixel Shader 1.1を使うことになるが、これは上述した通り、1パスに対して4パスとなるため、スコア的に不利になる(逆にATIには有利に働く)。


●Microsoftの思惑も影響?

 では、3DMark03がPixel Shader 1.4を採用したことは間違いだったのか。これは結論を出すのが難しい問いだ。Pixel Shader 1.4をプログラムが使うこと自体は、DirectX 8.1が定めている以上、何の問題もない。ベンチマークプログラムとしては、Pixel Shader 1.4を使ったゲームがないということは現時点で大きなマイナスだが、今後Pixel Shader 1.4を使ったゲームが登場しないとの保証もない。ベンチマークプログラムが将来をも睨んだものでなければならない以上、Pixel Shader 1.4を使ったことが間違いだとは言えないハズだ。ただ、その使い方(テストに占める割合)が適正だったかというと、やり過ぎだったかもしれない。

3DMark 2001 SEの画面

 とはいえ、Pixel Shader 1.4が利用できない時はPixel Shader 1.1を使う、という使用法自体は、3DMark 2001 SEのAdvanced Pixel Shaderテストでも用いられている(もちろんスコアにはカウントされないわけだが)。いまさら異議を唱えるのもおかしな話ではある。NVIDIAは、同社がFutureMarkのベータプログラムに参加しておらず(同社によると参加するにはFutureMarkに参加料を払わねばならないという)、Pixel Shader 1.4の多用はそれが影響していることを匂わせているが、これが事実なのかどうか、筆者は判断することはできない。

 もう1つPixel Shaderで考えねばならないのは、Microsoftの影響だ。MicrosoftはなぜDirectX 8.1でATIのアイデアをPixel Shader 1.4として取り入れたのか。もちろん、Microsoftは優秀なアイデアがあれば、誰のアイデアであろうと取り入れる、と答えるだろう。それはそうに違いないが、単純にそうと思えない面もある。つい先日、和解するに至ったが、MicrosoftとNVIDIAはXbox用チップセットの価格でもめていた。NVIDIAはMicrosoftの値引きの求めに簡単に応じなかったのである。Microsoftが、NVIDIAだけが突出することを望まなかった(ATIに対抗勢力になることを望んだ)としても、不思議ではない(もちろん、これは筆者の邪推に過ぎないが)。

 また、Xbox関連では、XboxがPixel Shader 1.1相当だからPCゲームを手がけるISVはPixel Shader 1.1〜1.3を使うのだということも言われている。だが、もしそれが理由でISVがPixel Shader 1.4以降を使わないというのなら、Pixel Shader 2.0に対応したDirectX 9の存在意義そのものが失われるし、それに対応したハードウェア(ATIのRADEON 9700/9500だけでなくGeForce FXも含む)もナンセンスということになってしまう。


●NVIDIAのあせり

 今回、NVIDIAはかなり強硬に3DMark03に異議を唱えているが、筆者はこれはNVIDIAのあせりの表れではないか、という気がしている。NVIDIAのDirectX 9世代のGPUであるGeForce FXは、本稿執筆時点においても店頭に並んでおらず、予定から1カ月ほど遅れている。そもそもGeForce FXの発表自体が、製品のリリースより3カ月も早いCOMDEXということも異例なら、発表時点でGeForce FXには1グレードしかない、と述べていたことも異例だ。

 実際にはGPUのコアクロック、メモリバスクロックともに500MHzのUltra(当初発表されたもの)と、400MHzに落とした非Ultraの2バージョンがリリースされることになったが、Ultra版はかなり入手性が悪いようだ。BFG Techは、米国の量販店BestBuy等でGeForce FX搭載カードを販売するカードベンダだが、これ以上Ultra版の予約を受け付けられないこと、現時点でカードの出荷が3月9日になることを明らかにしている。

 異例ということでは、2月5日に発表された同じコアを用いたワークステーション向けのQuadro FXが、コンシューマー向けのGeForce FXより低いクロック設定になっている(Quadro FX 2000が400MHz、Quadro FX 1000が300MHz)のも奇妙だ。NVIDIAは公式にはTSMCの0.13μmプロセスに満足していると述べているが、実際には歩留まりがあまり良くないのではないかと思われる。これが同社にプレッシャーとなっていても不思議ではない。

ElsaのQuadro FX 2000搭載カード ElsaのQuadro FX 1000搭載カード

 もう1つ筆者が印象として感じているのは、NV30コアが本領を発揮するには、シェーダプログラム(DirectX)やフラグメントプログラム(OpenGL)が、同社のコンパイラであるCgを用いている必要があるのではないか、ということだ。Cgそのものは、DirectXとOpenGLの両方に対応したオープンソースのコンパイラだが、Cgで生成されたコードでしか性能が発揮できないというのは、現時点では行き過ぎではないかという気がする。

 もちろん、どんなコンパイラを使うのか、どのようなコードを書くのかはISVの自由であり、どれが主流になるかはデファクトスタンダードの問題である。ISVがみなCgを使うというのであれば、NVIDIAに最適化されたコードを用いていないベンチマークテストの結果は、現実と乖離している、と言うことさえ可能だ。そしてこれを成り立たせるためにも、NVIDIAは必死で現在のシェアを守りにいく。今回の異議表明はその表れではないかと思う。

 ただ、筆者は標準ベンチマークとなるものが、そこまで特定のベンダに依存すること、デファクトスタンダードに依存することは望ましくないと考えている。ベンチマークテストの内容がシェアに連動することは、正常な競争を損なうからだ。そういう意味で現在の大きな問題は、FutureMark以外にアップトゥデイトな3Dグラフィックスベンチマークを提供できないことにあるのかもしれない。

□関連記事
【2月12日】FutureMark、初のDirectX 9対応3Dベンチマーク「3DMark03」公開
http://pc.watch.impress.co.jp/docs/2003/0212/3dmark.htm
【2月7日】NVIDIA、MicrosoftとのXbox用GPU/MCPの価格問題解決
http://pc.watch.impress.co.jp/docs/2003/0207/nvidia.htm
【2月5日】NVIDIA、ワークステーション向けGPU「Quadro FX」を国内初公開
http://pc.watch.impress.co.jp/docs/2003/0205/nvidia.htm

バックナンバー

(2003年2月18日)

[Text by 元麻布春男]


【PC Watchホームページ】


PC Watch編集部 pc-watch-info@impress.co.jp 個別にご回答することはいたしかねます。

Copyright (c) 2003 Impress Corporation All rights reserved.