― 連載 ―

3DMark06の秘密 第4回「3DMark06の立ち位置」

前へ

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

 最後に,これも厳密な意味ではFeature Testsに含まれないが,「Filtering & AntiAliasing Tool」についても説明しておきたい。
 このツールは,スコアを求めるものではなく,テスト対象のグラフィックスチップがどのようなテクスチャフィルタリングを行っているかを見るためのものだ。3Dグラフィックスは主にフレームレートでその性能が判断される傾向にあるが,最終的に出力されるものが映像である以上,その描画クオリティにも気を配る必要がある。JPEGやMPEGのように,人間の目で気にならないレベルでの画質劣化ならいいが,パフォーマンス最優先で,見た目に響くような過度の手抜き描画を行ったりしているとすれば困りものだ。

 

 というのも,テクスチャフィルタリングの分野は,数ある“3Dグラフィックスにおける手抜き要素”のなかで,各グラフィックスチップメーカーが最新技術(≒トリック)投入合戦を繰り広げている,地味ながらも熱い戦場だったりするからである。

 

 テクスチャフィルタリングの原理や処理系についての詳しい話は本連載のバックナンバーを参照してほしいが,簡単にいうと,テクスチャからテクセルを読み出すときに行われる補完処理のことだ。例えばディスプレイ解像度とテクスチャ解像度は違う場合がほとんどで,しかも,ポリゴンに傾きがあった場合,これに適用するテクスチャは変形せねばならない。こうした状況に対応するため,グラフィックスチップは実際にテクセルを取り出すとき,取り出す対象となるテクセルの周辺にあるテクセルの値も読み出して,それに独自理論の計算を行って最終的なテクセル値を決定している。よって,「どのテクセルを」「何個取り出して」「どういう計算を行うか」,もっというと,どうやって見た目に変化を感じないレベルで処理の手を抜いて高速化するかが,各グラフィックスチップメーカーの腕の見せどころになるのだ。
 要するにFiltering & AntiAliasing Toolは,グラフィックスチップやグラフィックスドライバの“手抜き具合”を見るもの,ということができる。

 

 一つの目安としては,最も高画質な設定となるトライリニア型異方性フィルタリング適用時に,奥から均等に柔らかく色が変化するようであればそれなりの品質が得られているといっていい。Filtering & AntiAliasing Toolで表示したときに,極端な花柄状となり,さらにそれがかなりカクついた形になっていたり,二次輪郭が強く出て見えたりするときは,視点からの距離によるテクセルの取り出しや演算手法に,偏りがあるということになる。
 下にGeForce 7800 GTXとRadeon X1900 XTで,設定の違いによる画面の変わりようを並べてみた。3DMark06側の基本設定は,MipMapの色づけを設定する「MipMap Coloring」が「On」,拡大フィルタの「Magnification Filter」が「Linear」,縮小フィルタの「Minification Filter」が「Anisotropic」,「MipMapping」が「Linear」。この状態で,異方性フィルタリングのレベルを指定する「Anisotropy Level」を5段階に変更し,その違いを見ている。

 

GeForce 7800 GTX:トライリニア型異方性フィルタリング,アンチエリアスレベル4(最高設定),角度0度
  1X 2X
4X 8X 16X

 

Radeon X1900 XT:トライリニア型異方性フィルタリング,アンチエリアスレベル6(最高設定),角度0度
  1X 2X
4X 8X 16X

 

GeForce 7800 GTX:トライリニア型異方性フィルタリング,アンチエリアスレベル4(最高設定),角度45度
  1X 2X
4X 8X 16X

 

Radeon X1900 XT:トライリニア型異方性フィルタリング,アンチエリアスレベル6(最高設定),角度45度
  1X 2X
4X 8X 16X

 

 1X,2Xだとクオリティにそれほど差はないが,4X以上だとRadeon X1900 XTのほうが色の推移は滑らかに見える。サンプル数が多いときには,Radeonシリーズのほうが精度の高いフィルタリングを行えているようだ。

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ゲームグラフィックスのスタンダードとして生きながらえることになる。(トライゼット 西川善司)

 

前へ

 

タイトル 3DMark06
開発元 Futuremark 発売元 Futuremark
発売日 2006/01/18 価格 19.95ドル(Advanced版)
 
動作環境 OS:Windows XP(+DirectX 9.0c December 2005 Update),CPU:Pentium 4/2.50GHzまたはAthlon XP 2500+以上,メインメモリ:1GB以上,グラフィックスチップ:シェーダモデル2.0対応以上,グラフィックスメモリ:256MB以上,HDD空き容量:1.5GB以上

COPTRIGHT(C)2006 FUTUREMARK CORPORATION

【この記事へのリンクはこちら】

http://www.4gamer.net/specials/3de/3dmark06/004/3dmark06_04_02.shtml