48
Nvidia FCAT VR: 現実世界のゲームにおけるパフォーマンスのベンチマーク

残念ながら、グラフィックカードのテストに通常使用するツール(Fraps、PresentMon、OCATなど)は、HTC ViveやOculus Riftを介した仮想現実(VR)におけるパフォーマンスデータの収集には適していません。これらのツールはゲームエンジンが生成するフレームを測定できますが、それらのフレームがHMDに表示されるまでのVRランタイム内でのその後の動作はすべて測定できません。VRMarkとVRScoreは合成測定である程度は役立ちますが、私たちは通常、現実世界での比較を行うことにより重点を置いています。

そこで登場するのがFCAT VRです。これは、私たちが「Challenging FPS: Testing SLI And CrossFire Using Video Capture(FPSに挑戦:ビデオキャプチャを使ったSLIとCrossFireのテスト)」で紹介したオリジナルバージョンと概念的に似ています。しかし今回、Nvidiaは、VR愛好家が現実世界のVRアプリでハードウェアをテストし、有益な情報を収集し、Perlの知識を必要とせずにそれを提示できるようにすることを目指しています。

ここで一体何を探しているのでしょうか?NvidiaはVRパイプラインと、どこで問題が発生する可能性があるかを非常にわかりやすく説明しているので、同社の説明を引用します。

現在主流のハイエンドVRヘッドセットであるOculus RiftとHTC Viveはどちらも、画面を90Hzの固定間隔でリフレッシュします。これは、約11.1ミリ秒ごとに1フレームに相当します。V-syncは、ユーザーに大きな不快感を与える可能性のあるティアリングを防ぐために有効になっています。

  1. VRゲームは、現在のヘッドセットの位置センサーをサンプリングし、カメラの位置を更新して、ユーザーの頭の位置を正しく追跡します。
  2. 次に、ゲームはグラフィック フレームを確立し、GPU は新しいフレームをテクスチャ (最終的なディスプレイではない) にレンダリングします。
  3. VRランタイムは新しいテクスチャを読み取り、修正し、ヘッドセットのディスプレイに表示される最終画像を生成します。興味深い修正としては、色補正とレンズ補正がありますが、VRランタイムによる処理はより複雑なものになることもあります。

次の図は、タイミング チャートでこれがどのように見えるかを示しています。

フレーム生成時間がリフレッシュ間隔を超えると、ランタイムの処理は著しく複雑になります。その場合、VRゲームとVRランタイムを合わせた合計経過時間が長くなりすぎて、次のスキャン開始時にフレームを表示できる状態にならない可能性があります。

Tom's Hardware の最高のニュースと詳細なレビューをあなたの受信箱に直接お届けします。

この場合、HMD は通常、ランタイムから以前にレンダリングされたフレームを再表示しますが、VR では、ヘッドセット ディスプレイで古いフレームを繰り返すと頭の動きが無視され、ユーザー エクスペリエンスが低下するため、このエクスペリエンスは受け入れられません。

ランタイムは、古いフレームを繰り返すのではなく、新しいフレームを合成するアルゴリズムなど、様々な技術を用いてこれを改善します。これらの技術の多くは、最新のヘッドセンサー位置入力を用いて古いフレームを現在のヘッドポジションに合わせて調整する「再投影」という概念に基づいています。これにより、フレームに埋め込まれたアニメーションは改善されません(フレームレートの低下やジャダーが発生します)。しかし、ヘッドモーションの滑らかな体験は向上します。

FCAT VR は、Rift と Vive の 4 つの主要なパフォーマンス メトリックを取得します。

  1. フレーム落ち(アプリミス/アプリドロップ)
  2. ワープミス
  3. FCATのソフトウェアバージョンでは、フレーム時間データ
  4. 非同期スペースワープによって合成されたフレーム

VRゲームでレンダリングされたフレームが現在のリフレッシュ間隔では表示しきれないほど遅れて到着すると、フレームドロップが発生し、ゲームがカクツキます。こうしたドロップを理解し、測定することで、VRのパフォーマンスに関する洞察が得られます。

VR体験において、ワープミスはより重大な問題です。ワープミスは、ランタイムが現在のリフレッシュ間隔内に新しいフレーム(または再投影されたフレーム)を生成できなかった場合に発生します。上の図では、GPUによって以前にワープされたフレームが再表示されています。ユーザーはこのフリーズした時間を、大きなカクツキとして体感します。

FCAT VR: ローカルGUIでテストを簡素化

FCAT VRは、Oculusランタイムから提供されるWindowsイベントトレーシング(ETW)に記録されたパフォーマンス情報にアクセスします。FCATのドキュメントによると、以下の項目はミリ秒単位で測定されます。

  1. ゲーム開始:ゲームがフレームの準備を開始した時のタイムスタンプ
  2. ゲーム完了 CPU/GPU:ゲームがフレームを準備したとき(CPU 側の作業がすべて完了したとき)のタイムスタンプ、そして GPU でフレームが終了したときの別のタイムスタンプ
  3. キュー先行: フレームに許可されたキュー先行の量
  4. 実行時サンプル:ワープ開始のタイムスタンプ。通常は垂直同期までの固定時間
  5. ランタイム完了: GPU でワープが終了しました
  6. V-sync : HMD の V-sync 割り込み (Nvidia のみ)

Nvidia の出力ファイルには、アプリとワープのミスを報告するための整数カウンターもあります。

Viveでのテストも同様ですが、FCATはSteamVRが公開するAPIと連携してタイムスタンプを生成します。キャプチャされたイベントのリストは異なります(実際、より長くなります)。しかし、得られるパフォーマンス統計は同じです。

NVIDIAのソフトウェアツールの特に優れた点は、ETWとSteamVRから詳細なタイミング情報を取得できるため、NVIDIAが「制約なしのフレームレート」と呼ぶもの、つまり90Hzのリフレッシュレートを使わなかった場合のパフォーマンスを計算できることです。レンダリングにかかる​​時間に基づいてヘッドルームを推定できるという点で、これは非常に強力です。

VRキャプチャユーティリティのご紹介

Nvidiaのツールは、ログファイルの保存先とベンチマークホットキーを指定できるシンプルなUIで構成されています。キャプチャユーティリティを起動し、VRアプリケーションを起動します。HMDの右側に赤いバーが表示されている場合は、FCATキャプチャが実行中だがアイドル状態であることを示します。Scroll Lockキー(サポートされている唯一のホットキー)を押すと、バーが緑色に変わり、もう一度押すと実行が終了します。Nvidiaはキャプチャ遅延とキャプチャ継続時間のオプションも追加しており、テストの開始と終了を簡単に制御できます。

FCAT VR のより広範な採用を促進するため、Nvidia は Python ベースの GUI を作成しました。これにより、ログ ファイルをドラッグしてチャートをより簡単に作成できるようになります。

この VR アナライザーは次のことを伝えます:

  • 実際に画面に表示されるフレームレートです。完璧な動作であれば90fpsになります。もしグラフィックカードが動作時間の半分を90fps、残りの半分を45fpsで動作させる場合、このフィールドの平均は67.5fpsになります。
  • 制約のないフレーム レート、または 90 Hz の表示間隔がない場合に表示されるもの。
  • 更新間隔、またはベンチマークの期間の 90 倍。
  • 新しいフレーム
  • フレーム落ち(アプリのミス)
  • 非同期スペースワープによって合成されたフレーム
  • ワープミス
  • 平均フレーム時間

これらのデータはすべて、画面上で何が起こっているかを興味深い形で描き出し、これまでVRテストで頼りにしてきた主観的な観察結果を補完するものです。今後数週間でFCAT VRを使った作業をさらに進めていく予定ですので、具体的な実験をご希望でしたらお知らせください。

クリス・アンジェリーニは、Tom's Hardware USの名誉編集者です。ハードウェアレビューの編集を担当し、注目度の高いCPUやGPUの発表を取り上げています。