■まずは使用ツールの紹介から
まず今回使うツールだが,ベンチマークテストがどのようなものであるかを調べるために,NVIDIAが配布している開発ツールから,NVPerfHUDを使用した。これは,DirectX使用プログラムでのドライバの動きからプログラムの動作状態を調べるツールだ。具体的には,fps(フレーム/秒),シーン内の使用ポリゴン数,シーン内でDrawPrimitiveコールが使用された回数,描画にかかった時間,ドライバ処理にかかった時間,CPUのGPU待ち時間,GPUのアイドル時間,使用テクスチャ量などがゲーム画面に重ねて表示される。「ベンチマーク用に使ってはいけません」と画面にも明記されているのだが,今回はあえてベンチマークの調査用に使用することにした。
ちなみに,今回使ったのはNVPerfHUDの2.0βだ。原稿を書いている間に2.0正式版も発表されたのだが,アプリケーション側でNVPerfHUDを有効にするAPIを呼んでないと動かない仕様になってしまっていたので,今回のような用途には使えなくなってしまった。もともと開発ツールなのでしかたないといえばしかたないのだが,作りのよくないゲームなどが一目瞭然になるのでまずかったのかもしれない(その一目瞭然な部分を見ながらチューンナップするためのツールだ)。
また,このツールは,シェーダの使用状況をチェックすることもできる。プログラマブルシェーダの基本となる1.x系の部分,2.x系が使われている部分,プログラマブルシェーダが使われていない固定機能による描画部分を明示できる。今回使用したのはそういった機能である。
このツールで分かる情報は多いが,チューニングのポイントは単純だ。
CPU待ち時間が多い → ビデオ処理を簡潔に。ゲーム処理の追加OK
GPU待ち時間が多い → もっと負荷の高い表現も可能
という感じで,開発側はこれを見ながらバランスの取れたゲーム開発が可能になるのだが,すでに発売されているゲームについては対処しようがない。
ここでユーザー側の立場で考えてみよう。うまく使えば,自分がやりたい特定のゲームに対しての指標を得ることもできるのではないだろうか。
CPU待ち時間が多い → ビデオ性能を上げると全体性能アップの可能性
GPU待ち時間が多い → CPUをアップグレードすべし
CPU待ち時間が多いゲームしかやらない人が新しく高性能CPUに入れ替えたりしても無駄でしかないことは簡単に理解できるだろう。ただし,正式版ではほぼ一般ユーザーには使えないツールになったので使い方などは割愛する。これ以上に詳しいことはNVIDIAのNVSDKドキュメントなどを参照のこと。β版を入手できそうな人は独自にがんばってほしい。
なお,DrawPrimitiveコール数をカウントしているのは,これがゲームのパフォーマンスに多大な影響を与えるからだ。複雑なシーンや大量のポリゴンでも,DrawPrimitiveコール回数が少なければさほど重い処理にはならないという。もともと,コマンドバッファに1画面分の処理を叩き込んで,一気に描画させるのがDirect3Dの流儀だったのだが,それでは使いにくいということで導入されたのがDrawPrimitiveだ。これによってオブジェクト単位などで随時処理していくことができるようになった。とはいうものの,元が一括処理だけあってか,細々と呼ばれるのはよくないらしい。まあ参考までに。
さらに,DirectX以外や素直にDirectXのAPIを使っていないものに対しても有効なFRAPSというツールも使った。これはゲーム画面をビデオファイルにするのが主目的のツールだが,フレームレートの表示やスクリーンキャプチャなどの機能も持っている面白いツールだ。詳しくはのちほど。
|
|
forGamer.net
|