Shader Particles Test(SM3.0)
頂点シェーダユニットによるテクスチャアクセス機能である「VTF」(Vertex Texture Fetching)機能を活用するテストだ。VTFはプログラマブルシェーダ3.0(Shader Model 3.0,以下SM3.0)特有の機能で,当然のことながらSM3.0対応グラフィックスカード専用のテストとなる。また,SM3.0対応であっても,VTF機能を持たないRadeon X1000シリーズでは実行できない。
このテストでは,40万9600個のパーティクルの3D座標情報と3Dの運動ベクトル情報をテクスチャに格納しておき,ピクセルシェーダユニットで重力,空気抵抗,さらには地面の凹凸との衝突までに配慮したシミュレーションを実行,その結果を平均フレームレートで求める。なお,シミュレーション自体は,1フレームごとに少しずつ挙動が変化していく物体の運動シミュレーションを解く一般技法である「オイラー法」が用いられている。
あるシミュレーションプログラムにおいて,「大量のデータに対して個別のパラメータを与え,同時進行のシミュレーションを実行する」場合には,順番にデータ列を取り出して逐次処理していく必要のあるCPUより,一気にデータを取り出して並列処理し,結果を出力するグラフィックスチップのほうが,ハードウェアの構造的に適している。まさにこの「大量パーティクルの挙動計算」は,グラフィックスチップで計算するのにもってこいのテーマなのだ。
このテストでは,パーティクルが“地面”に落ちる処理も行われており,“落ちきって地面に当たった”かどうかを判定するようなインタラクティブなシミュレーションが行われている。これは高度な動的条件分岐命令などがサポートされているSM3.0のピクセルシェーダで可能になったものである。
Shader Particles Testでは,(1)テクスチャに記録された座標データや運動ベクトルデータをピクセルシェーダユニットで物理シミュレーション処理し,その結果をテクスチャに出力する。さらに,(2)次のパスで今度は頂点シェーダユニットでこのテクスチャを読み出して,テクスチャに書かれた三次元座標を取り出す。そして,(3)三次元座標を頂点データとして処理し,パーティクルを表示する(≒3Dグラフィックスとして描画する)。ある意味,(1)〜(3)という流れのマルチパスレンダリングといえるが,このとき(2)の工程で,VTFが利用されるというわけだ。
このテストで何が分かるかを一言でまとめるのはなかなか難しいのだが,あえていえば,「GPGPU」(General Purpose GPU)と呼ばれる,「グラフィックスチップでグラフィックス以外の処理をさせたときの性能を計測するもの」ということになる。ハードウェア的な見地からいえば,「VTF機能の性能測定」の側面が少々,「ピクセルシェーダ性能×グラフィックスメモリ性能測定」のニュアンスが強め,といったところだろうか。ちなみに結果は平均フレームレートで算出される。
Perlin Noise(SM3.0)
ただ雲が表示されているようにしか見えないPerlin Noiseのテスト画面。測定結果はフレームレートで算出される
「Perlin Noise」と呼ばれる算術合成ノイズをピクセルシェーダユニットで生成し,このノイズを“タネ”に,雲のようなテクスチャを合成するというテストだ。見た目はちっとも面白くないが,ノイズ生成からテクスチャ合成に至るまでのピクセルシェーダプログラムは,SM3.0におけるピクセルシェーダ命令スロットの上限である512命令に迫る,495命令から成っているという。全495命令のうち48個がテクスチャ参照系,うち447個が算術命令系とのことなので,テクスチャ命令と算術命令の比は実に1:9。非常に算術命令の割合が大きい。
前述したように,テクスチャ読み出しはグラフィックスメモリ読み出しであり,これは算術命令の数十倍から100倍近く時間のかかる処理だ。そこで最新グラフィックスチップでは,テクスチャアクセスが発生すると,この遅延時間を隠蔽するために,(ピクセルシェーダを休ませない意味合いから)ピクセルシェーダユニットのタスクを別のピクセルのための処理に切り換える仕組みを取り入れている。GeForceシリーズだととくに名前はないが,Radeonシリーズでは「Ultra Threading」と呼ばれているものがこれに当たる。
あえてこのテストのコンセプトをいうならば「SM3.0の長いシェーダプログラムがどれだけ速く動くか」のテストといった感じになるだろうか。
Batch Size Tests
3Dグラフィックスの描画に当たっては,CPU側からグラフィックスチップにポリゴンデータの受け渡しを行うことになるが,DirectX(Direct3D)では,この受け渡すポリゴン数のひとかたまりを「Batch」(バッチ)と呼んでいる。
基本的には,多くのポリゴンをまとめて送ったほうがドライバやグラフィックスチップ側での処理オーバーヘッドが少なくて済み,パフォーマンス的には有利になる。とはいえ,ゲームエンジン側の3Dキャラクタ管理手段や,そのほかのゲーム処理的な要因で,理想どおりには行かない場合もある。
このとき,グラフィックスドライバやグラフィックスコアは,そうしたバッチサイズの小さな“ワーストケース”にも対応できる素地のあるほうが望ましい。Batch Size Testsは,この能力を計測するために用意されたテストだ。なお,厳密にいうと,Batch Size TestsはFeature Testsに含まれない。
テストは四角形ポリゴンを縦128×横128個列べただけの簡素な3Dモデル(実質的にはただの平面)を128個描画するだけの単純なシーンで行われる。このとき,バッチサイズは8,32,128,512,2048,32768と変えて実行されていく。同じシーンなのに,バッチサイズが小さくなればなるほど,パフォーマンスが低くなるのを確認できるだろう。
Filtering & AntiAliasing Tool
3DMark06はありやなしや?
全4回にわたってお送りしてきた3DMark06解説だが,いかがだったろうか。
今回の3DMark06でキーポイントとなるのは「SM2.0世代グラフィックスチップの実質的な足切り」(第2回で「SM2.0でもハイスコアが望める」と書いたが,それはあくまで可能性の話であり,現実問題として逆転は不可能)だ。もっとも,SM3.0世代グラフィックスチップが2004年には登場していたことを考えれば遅すぎるといえなくもない。このあたりには,グラフィックスチップ二巨頭の一つ,ATI Technologies(以下)がSM3.0世代グラフィックスチップを投入してこなかった(これなかった?)ことへの配慮があったのではなかろうか。
Futuremarkのイメージカラーはオレンジ。オレンジは,緑と,強めの赤を混ぜて作る色だが,赤の影響力が強いということか!?
3DMark03時代,「Radeon 9700/9800対GeForce FX」で3DMarkスコアの向上に苦戦したNVIDIAは「3DMark03のレンダリングエンジン設計そのものに問題がある」というネガティブキャンペーン,いわば“逆ギレ”を起こしてFuturemarkに圧力をかけたことがあった。その後,NVIDIAとFuturemarkは和解したと報じられたが,3DMark06のリリースがRadeon X1900の登場を待っていた節があったり,3DMark06が最初からRadeon X1000シリーズのFetch4に対応していたりといったあたりを見るに,Futuremarkはあれ以来なんだかんだいってもATI寄りなのかなぁと思ったりもする。
SM3.0のVTFは3DMark換算に関わってくるテストには活用されていないので,ATIとNVIDIAのそれぞれのSM3.0の最大公約数的なフィーチャーのみの活用に留まっているのかと思いきや,NVIDIAのGeForce 6/7では対応していないFPバッファへのアンチエイリアシング処理をあっさり活用してきたりもする。このあたりは,3DMark03にイチャモンをつけてきたNVIDIAへの意趣返しなのかもしれないが。
もっとも,ああいった事件があってからFuturemarkからは唯我独尊的なスピリットが抜け落ちて,業界への協調性(?)が身についていったのも事実。最近はその協調性がやや強すぎて,業界の操り人形的になってきてはいないかと心配する部分もあるほどだ。
3DMark06のエンドクレジットより。グラフィックスチップメーカーのほかに,CPUメーカーの名があることに気づく
例えばそれは,CPU Testsが3DMark Score算出に絡んできているところなどから窺える。CPU Testsの地位が上がったのは,FuturemarkのスポンサーでもあるAMDやIntelといったCPUメーカーの意向を反映してのものと考えるのは,邪推が過ぎるだろうか?
CPU Testsは,CPUコアが多いシステムほどスレッド数を増やすという設計で,マルチコアCPUが優勢になるようにできており,Futuremarkは「マルチスレッドベースのゲームエンジンこそが未来の3Dゲームの形態」と説明する。しかし,はじめからマルチスレッドに最適化したエンジン設計を行っているゲームはLionhead Studiosの「Black & White 2」など,まだごく一部。しかも,そう説明しているFuturemark自体が,総合スコアの3DMark Scoreスコア算出において,CPU Testsの影響が小さくなるよう調整していたりする。
ここには,AMDやIntelが,マルチコアCPU使用時の3DMark Scoreが高くなることを強調し,「3Dゲーム向けPCにはマルチコアCPUが最適!」と言いやすくするための配慮と,現実を見据えた対応とが,同時にあるように見える。
振り返れば,2005年に公開されたFuturemarkの「Mechanoids」が登場し,結局未だに一般向け公開されていないのは,そんなムーブメントの序章だったのかもしれない。
いずれにせよ,3DMark06はあくまで「Futuremarkが考える」近未来の3Dゲームの性能指標を算出するもの。なので,3DMark06が“アリ”かどうかは,SM3.0に積極対応したタイトルがもう少し出てこないと判断が難しい。3DMark05と比較すれば,3DMark06は負荷レベルも上がり,SM3.0への対応も行われているので,最新現行グラフィックスチップに対する負荷テストという意味では十分意義のあるものといえるが,近未来のゲームパフォーマンスを推測する指標として信用できるものなのかという点については,今の段階ではなんともいえない。
DirectX 10で3DMarkは再び返ってくるが それまではDirectX 9&SM3.0がスタンダードに
3DMark06のエンドクレジットより,「3DMarkは帰ってくる」という次期バージョンの登場予告宣言
さて,エンドクレジットには「3DMARK WILL RETURN」の文字があり,Futuremarkは続編の登場を公式に予告しているわけだが,ではそのときはいつになるのだろうか。
いきなり結論めいたことを書くと,次の3DMarkはおそらくWindows Vistaの発売以降,DirectX 10世代(=プログラマブルシェーダ4.0対応)のグラフィックスチップを動作ターゲットにしたものになるだろう。
2007年初頭にはWindows Vistaが登場し,DirectX 10時代を迎えることになる予定だ。しかし同時に,Windows VistaとDirectX 10の要求事項を満たすグラフィックスチップの同時発売は,想定されるグラフィックスチップのロジック規模と製造プロセスルールの関係を考えると,タイミング的に難しいとも言われている。モノがない状態で発表だけするというパターンは十分に考えられるが……。
2005年末に行ったATIへのインタビューでも言及されているように,DirectX 10世代,SM4.0対応グラフィックスチップの登場は早くても2007年初旬から第2四半期とされている。新3DMarkの登場もそのくらいになるのではないだろうか。
逆に言えば,Windows Vistaの登場とはあまり関係なく,向こう1年にわたって,DirectX 9が現役であり続ける見通しが立った。そして,SM3.0はしばらく3Dゲームグラフィックスのスタンダードとして生きながらえることになる。(トライゼット 西川善司)
|