ニュース
西川善司連載 / 完全理解「3DMark Vantage」(3)Graphics Test
第1回と第2回でグラフィックスエンジンの技術的な解説を終えたところで,今回は「3DMark Vantage」に用意された「Graphics Test」と,テスト設定オプション「Options」各項目について解説していこうと思う。
Graphics Testには
- Graphics Test 1: Jane Nash
- Graphics Test 2: New Calico
が用意されている。3DMark06では4シーンあったので,それと比べるとちょっと寂しくなってしまったが,3Dグラフィックスエンジンは第1〜2回で説明したものを共通で利用している。本稿に登場する“技術キーワード”の詳細はそちらを参照するような構成にした。単語レベルの疑問を感じたら,ぜひ第1回と第2回を併せてチェックしてみてほしい。
Jane Nashは,Tomb Raiderシリーズ然とした,「大きな屋内ステージで展開する三人称視点の3Dゲーム」を想定したテストシーンになっている。
登場人物はあまり多くないが,いずれのキャラクターも動的に内部ボーンが動き,これに合わせて表皮ポリゴンが引き伸ばされて頂点ブレンディングされる,スキニング処理が生じることになる。ちなみに,後述するNew Calicoにおいて,ボーンスキニングされるキャラクターは一体もない。
テストの本質とは無関係だが,Jane Nashに登場するキャラクタのアニメーションは,最近の実際のゲームと比較すると,カクカクしたマペットみたいで,あまり人間ぽくない。Game Test系が半分に減ったことといい,開発元のFuturemarkにもいろいろと苦労があるようだ。
Jane Nashで最も目を引くのは水面の表現である。冒頭,戦闘員の乗った水上バイクが登場するが,これの描く航跡が新たな波を起こし,シーン中の水面に伝わっていくさまが描かれる。これは「GPUを用いた波動シミュレーションをテクスチャ上で行い,そのテクスチャを頂点シェーダから参照して水面上のポリゴンを摂動させる」ような実装になっている。
水面のライティングはフレネル反射に配慮した屈折処理が行われており,周囲の情景の映り込みと水底の様子は,視線ベクトルの角度に応じて見え方が変化する。
また,静止画では分かりにくいが,水面からの照り返しである火線(Caustics)が水上近くの通路などに投射されているのも芸が細かい。もっとも,3DMark Vantageの火線はおそらく,ただのテクスチャアニメーションだろう。Crytekの「Crysis」では,太陽の方向と水面の波の状態に配慮して集光状態を計算し,火線をプロシージャル生成していたが,さすがにあれとは異なると思われる。
影生成技法は3DMark06から継承し,カスケードシャドウマップ(Cascaded Shadow Maps)に近傍フィルタ処理(Percent Closer Filtering)を組み合わせたものを採用。新搭載となるバリアンス・シャドウマップ(Variance Shadow Map,VSM)技法は,Jane Nashでは用いられていない。
一方,シェーダ関係は,金属や衣服,人の肌など,異方性あるいは適応型の反射モデルを実装した負荷の高いプログラムが各種動いている。とくに,Jane Nashがアップになるシーンでは,そうした特殊シェーダが多用されていると見受けられる。
ポストプロセスは,演出上,あまり目立ってはいないが,HDR効果のブルームやフレアなど,第2回で紹介したものがちゃんと使われている。ただし,フォグは奥行き方向のデプスフォグ(Depth Fog)のみが使われており,立体的なフォグ(Volumetric Fog)はなし。
Jane Nashが水陸両用機を発進させるシーンでは,カバーがずり落ちていくさまが描かれるが,このカバーはGPUを用いた布のシミュレーションを行い,その結果でカバーのポリゴンを摂動させている。
水しぶきなどのパーティクル制御にもGPUベースの物理シミュレーションを適用しているが,こちらは衝突などを無視し,重力と空気抵抗などに配慮したベルレ積分で処理されたシンプルなもの。パーティクルシステムは,管理情報としては1頂点とし,ジオメトリシェーダを使ってスプライトに変換して表示する仕組みだ。そのため,水しぶきが多量発生するシーケンスは,ジオメトリシェーダの負荷テスト的な要素があるといえなくもない。
Futuremark Game Studioが開発中のFPS「Codename: Pwnage」。ゲームの舞台は,「New Calico」と名付けられた小惑星の周囲になるが,まさにその小惑星の名を冠したテストが,Game Test 2だ。小惑星の周囲ということで,宇宙空間が大きく描かれるシークエンスになる。
Jane Nashの項で軽く触れたように,New Calicoには,形状が固定されたメカしか登場しない。人間や動物といった,ボーンが変形するようなアクションキャラクターがいっさい登場しないので,当然のことながら,ボーンスキニングの仕組みは活用されない。
その代わり……といってはなんだが,New Calicoでは,「同一形状の3Dモデルを大量表示する」仕組みが採用されている。
同一形状の3Dモデルを大量表示する技法としては,DirectX 9のプログラマブルシェーダ3.0(Shader Model 3.0)で,ジオメトリインスタンシング(Geometry Instancing)が導入された。これは「3Dオブジェクトが同形状のとき,3Dモデルの形状情報などを先にGPU側に転送しておき,あとは座標,向き,テクスチャアドレスなどといった付帯情報を表示したい数だけ転送すれば,実際の描画プロセスを実行できる」という技術だ。従来は,描画するためのデータを,描画のたびにまるまるGPUへ転送していたのが,ジオメトリインスタンシングではこれが不要になるため,バス帯域幅の消費とレイテンシをいずれも低減できるというメリットがある。RTS(リアルタイムストラテジー)で大量のユニットを表示させたり,3D世界で植物など環境オブジェクトを反復的に描画させ(て,鬱蒼としたさまを表現し)たりするときに,効果を発揮する。
いうまでもないことだが,DirectX 10でもジオメトリインスタンシングの仕組みは実装されており,New Calicoでは戦闘機と岩の表示にこの技術を使用している。
また影生成に,3DMark Vantageで新採用となったVSM技法が利用されているのもトピックだ。VSM技法は,デプスシャドウ技法の弊害である,影輪郭のエイリアシング(=ジャギー)をソフトシャドウ的に柔らかくグラデーション描画してくれる特徴がある。テストシーンでは巨大な母艦の突起部のセルフシャドウや岩同士が落とす相互投射影,戦闘機の翼や凹凸部のセルフシャドウなどでその効果を見て取れよう。
本テストシークエンスでユニークなのは,視差遮蔽マッピング(Parallax Occlusion Mapping)が利用されている点だ。視差遮蔽マッピングは,法線マップを活用したバンプマッピング,俗称「法線マッピング」を改良したもので,ジオメトリ上は存在しない凹凸に関し,その視線方向からや光源からの相互遮蔽にまで配慮して陰影処理を行う技術。法線マップだけからでは再現できない,「手前にある凸部でその後ろが隠れる,凸部の影がセルフシャドウとしてきちんと同じオブジェクトに落ちる」といった表現が可能になる。
詳しくは「Feature Test」そのものの解説で触れるが,簡単に説明しておくと,視差遮蔽マッピングは,第2回で取り上げた立体的なフォグ(Volumetric Fog)の解説時に出てきた,局所的なレイトレーシング/レイキャスティング(Ray Tracing/Ray Casting)を用いることで実現しており,テクスチャユニットとピクセルシェーダへの負荷が高い処理となっている。視差遮蔽マッピングは,最近だとCrysisが岩肌や地面の凹凸に利用しており,ゲームの表現としても身近になりつつある。
シーンとしては地味な印象を受けるNew Calicoだが,実のところ,GPU負荷はかなり高いのだ。
3DMark Vantageには,3Dグラフィックスエンジンの描画設定を変更する「Test Options」(テストオプション)の機能が設けられている。
テスト対象のシステムに合わせて,4種類の「Preset」(以下,プリセット)が設けられているのも,3DMark Vantageの特徴だ。プリセットの詳細は下の表にまとめたとおりとなる。
※Entry,Performanceは想定される容量。一方,High,Extremeでは512MB以上が要求される
ご覧のとおり,設定される項目は非常に豊富だが,さすがにこれだけ見て,何のことだか理解できる人は少ないだろう。順を追って説明していきたい。
テスト解像度,もっといえば描画解像度を設定するオプションだ。数字は「横解像度×縦解像度」という見慣れた値の並びなのでとくに問題ないと思うが,その後ろに付記される(4:3)(16:10)(5:4)といった数値は画面アスペクト比(=画素数の横対縦比)を示している。
プリセットとの関係は以下のとおり。
- Entry:1024×768(4:3)
- Performance:1280×1024(5:4)
- High:1680×1050(16:10)
- Extreme:1920×1200(16:10)
マルチサンプルアンチエイリアシング(Multiple Sampled Anti-Aliasing,以下MSAA)における,サブピクセルの深度処理点数を設定するもの。オプションメニュー上の表記は「Multisample Count」だ。処理点数を多くすると,ポリゴンエッジにおけるエイリアシング(=ジャギー)はより低減されるが,その分GPU負荷は高くなる。「Entry」と「Performance」プリセットの設定値である「1」は,事実上,MSAA処理なしを意味する。MSAA処理が有効になるのは「High」の「2」,「Performance」の「4」のみとなる点に注意したい。
なお,MSAAの詳しいメカニズムについては,筆者の連載バックナンバー「『CrossFire』の秘密に迫る」で,「Super Anti-Aliasing」について解説したときに説明しているから,興味のある人はぜひ併せて参照してほしい。
テクスチャフィルタリングとは,テクスチャからテクセルを読み出すときに周辺のテクセル値を読んだり,縮小したMIPMAPテクスチャの内容を参照したりして,高品位なテクセル取り出しを実現するテクノロジーのこと。テクスチャフィルタリングの詳しいメカニズムについては,筆者の連載バックナンバー「『テクスチャの異方性フィルタリング』ってなに?」を参照してもらえれば幸いだ。
3DMark Vantageではテクスチャフィルタリングのメソッドとして「Anisotropy」(異方性)と「Optimal」(最適)を選択できるようになっており,言うまでもなく前者が,高品位な異方性フィルタリングを使用する設定になる。ドキュメントによると,「Optimal」はトライリニアフィルタリング(Tri-Linear Filtering)が選択される設定のようだ。なお,デフォルトではEntryとPerformanceプリセットでは「Optimal」(=トライリニア),HighとExtremeプリセットでは「Anisotropy」(異方性)のフィルタリングが選択される。
同時に紹介するMax Anisotropy(メニュー上の表記は「Maximum Anisotropy」)は,異方性フィルタリング適用時に「視線とテクスチャを適用するポリゴンの位置関係に配慮した追加テクセル」の参照位置を何点取るかの設定だ。値を大きくしたほうが品質は高くなるものの,GPU負荷は大きくなる。なお,トライリニアフィルタリングが採択されるEntry&Performanceプリセットだと,本オプションは意味を持たない。
テストを何回繰り返すかの設定。グラフィックス描画品質とは何の関係もない。
テクスチャの解像度を設定するオプションで,選択肢はプリセットと同じ4項目。「各テストモードの画面解像度に必要十分であるとFuturemarkが設定したテクスチャ解像度セット」を選択できるという意味合いになる。低いプリセット(=低いレンダリング解像度設定)時に,テクスチャ解像度だけを上げてもあまり意味はない。
PCF付きカスケードシャドウマップ技法におけるPCF処理時,シャドウマップから何点サンプルするかの設定を行うもの。これも選択肢は数値ではなく,テストプリセットと同名の設定セット4パターンから選択するようになっている。サンプル数はEntryが一番少なく低品位,Extremeが一番多く高品位になる。
PCF付きカスケードシャドウマップ技法とVSM技法に用いるシャドウマップの解像度を設定する。
こちらも設定項目は数値になっておらず,プリセットと同名の4パターンから選択する仕組み。シャドウマップ解像度はEntryが一番低く,Extremeが一番高い。解像度が高いほど投射元の形状ディテールを残した影になり,解像度が低いほど大ざっぱな形の影になる。
様々な特殊材質シェーダの活用を段階的に抑制するスイッチ。このオプションもテストモードと同名の設定セット4パターンから選択する仕組みになっている。ほとんどのシェーダを使用しないのがEntry設定,すべてのシェーダを実行させるのがExtreme設定だ。当然,Extreme設定が最も高品位だが負荷も最大となる。
3DMark Vantageにおけるポストプロセスに,縮小バッファ技法が広く活用されていることは前回解説したとおり。
このポストプロセス・スケールに関するオプションは,縮小バッファ技法を実行するに当たって,縮小バッファの解像度を表示画面解像度の何分の1にするかを設定するものになる。
設定値の範囲は1:2/3/4/5/6/7/8の7段階なっているが,最も高品位で高負荷なのが2分の1の意を表す「1:2」で,最も低品位で低負荷なのが8分の1の意になる「1:8」だ。
GPU処理能力が低いシステムで,高い負荷の設定を行うと,3DMark Vantageテストシークエンス中に,Windows Vistaが「GPUドライバがハングアップしている」と“勘違い”して,「タイムアウトの検出と回復エラー」(Timeout Detection and Recovery error,TDR)を出してしまうことがある(※参考:Microsoftによる日本語解説)。Flush On Low Fpsチェックボックスは,このエラーが発生するのを抑制するためのものである。
シリーズ第2回で3DMark Vantageに実装されているポストプロセスを解説したが,各ポストプロセスを個別に無効化できるスイッチが,Test Optionsメニューの右端に並ぶチェックボックス群になる。項目名に馴染みのないものがあったら,第2回の記事を参照してほしい。なお,トーンマッピング処理は,HDRのレンダーターゲットからディスプレイ表示可能なバッファに変換する必要がある都合上,無効化はできない。まあ,当たり前だ。
●Disable Bloom〜ブルーム効果を無効化する
●Disable Streaks〜光芒効果を無効化する
●Disable Anamorphics Flare〜歪形フレアを無効化する
●Disable Lens Flare〜レンズフレアを無効化する
●Disable Lenticular Halo〜レンズ形状光輪を無効化する
●Disable Motion Blur〜モーションブラーを無効化する
●Disable DOF〜被写界深度のシミュレーションを無効化する
●Disable Fog〜フォグを無効化する
深度フォグ(Depth Fog)と立体的なフォグ(Volumetric Fog)の双方がキャンセルされる。
●Disable Color Noise
ホワイトペーパーにも解説がなく,何の設定か不明。Futuremarkに問い合わせているのだが,2008年6月27日時点で回答は得られていない。
●Disable PPU〜PPUを無効化する
なぜかポストプロセスと関係ないオプションがここに紛れ込んでいる。PPUは「Physics Processing Unit」の略で,具体的には,旧AGEIA Technologies(現NVIDIA)のPhysXアクセラレーションを無効化するもの。3DMark VantageのCPU Test 2ではPhysXライブラリが活用されているため,CPU Testスコアに影響するオプションとなる。
●Disable GPU Simulations〜GPUシミュレーションを無効化する
GPUを使ったシミュレーションのすべてを省略する。注意したいのは,GPUシミュレーションを無効化しても,CPUが肩代わりはしないということ。そのため,GPUが行うはずだったシミュレーションは完全にキャンセルされる。例えばJane Nashのテストシーンだと,水面に波は立たなくなり,水陸両用機を覆うカバーも固まったまま,まったく動かなくなる。
3DMark06のオプションと比べると,3DMark Vantageはグラフィックスエンジンのチューニングオプションが非常に多い。下手なゲームソフトよりも充実している印象だ。もちろん,あまり変な設定にしても,算出されるスコアの意味がなくなるだけだが,GPUのボトルネックを確かめたり,あるいはグラフィックス効果の実際を視覚的に学ぶという意味では価値があるだろう。
なお,テストオプションの変更や,Performance以外のテストプリセットを利用するためには,19.95ドルの3DMark Vantage Advanced Edition(あるいは商業利用向けに495ドルで販売されるProfessional Edition)が必要になる。ダウンロードしてインストールしただけの無料体験版やBasic Edition(6.95ドル)では,Performanceプリセットモード以外を実行できない点に注意が必要だ。ベンチマークテスト好きなら,最低限,Advanced Editionは手に入れておきたい……といったところだろうか。
(4)CPU Testの詳細とスコア計算方法 に続く
- 関連タイトル:
3DMark Vantage
- この記事のURL:
COPYRIGHT(C)2008 FUTUREMARK CORPORATION