VRChat用ベンチマークワールド「VRCMark v2」を公開しました!【寄稿】

「VRChat用にPCを組みたいけど、どういう構成がいいの?」
「今乗り換えるならどのパーツ?」
「うちのPCは他と比べてどう?」

そういった疑問に応えるワールド「VRCMark v2」を公開しました!

解説動画:https://www.youtube.com/watch?v=U8G5N0CYJug
ワールドリンク:https://vrchat.com/home/world/wrld_f71988d7-11b9-46fe-b8e8-3bbc4a59bb2a/info

はじめに

このワールドは「129製作所」の協賛を得て制作されています。
この場を借りて感謝申し上げます。

VRCMarkとは?

VRCMarkは、VRChatにおけるパフォーマンスの計測を、より正確かつ容易にすることを目的としたワールドです。
複数のシーンを描画することでCPUとGPUに負荷をかけ、その性能を計測します。

用途としては

  • 複数ハード間での性能比較
  • 描画設定による影響の確認
  • パーツ載せ替え後に回してニヤニヤする(?)


などを想定しています。

実行時の流れ、注意

1. ワールドに入る

まずは記事冒頭のリンクからワールドに入ってください。正確な計測がしたい場合は、この際に”インバイト”または”インバイト+”でインスタンスを立てることをお勧めします。

2. 解説動画を見る(任意)

スポーン地点正面に動画プレイヤーを用意しています。
実行方法などについてより詳しく記載していますので、何か分からないことがあれば見てみてください。

3. ハードウェア構成を入力する

画面右下にある”Next”ボタンを押して次に進むと、以下のような表示になります。

お使いのPCについて、分かる範囲で構いませんので入力をお願いします。
ここの入力値はリザルトを表示する際に使われます。

4. 推奨設定に合わせる

最後のページまで進むと、以下のように推奨設定と実行画面が表示されます。

他のユーザーと比較したいという場合は、こちらの設定をご利用ください。
なお推奨設定に合わせずともベンチマーク自体は問題なく動作しますので、個人での利用に関しては自由にしていただいて構いません。

各項目の詳細に関しては、解説動画や先ほどのページに掲載されている参考記事をご覧ください。

5. 実行!

ここまで来ればあとは実行するだけです。
画面中央の”Run All”を押して実行しましょう。
4分半ほどでテストは終了します。

※注意
実行中は視界に直接別のカメラの映像を流すので、HMDを着けていると1億%酔います。
酔いにくい姿勢をとるなどして、”必ず”VR酔いへの対策をお願いします。
筆者のオススメはHMDの中央にティッシュ突っ込んで放置する方法です。

6. リザルトの記録

実行後はスポーン地点の部屋に戻されます。
リザルト画面左側に撮影用のギミックが置かれているので、そこにカメラを突っ込んで撮影してください。

撮影後、SNS等に投稿していただけると私が喜びます。

スコアの見方

次はスコアの見方についてです。
ここでは私のPCで取ったスコアを例に解説します。

スコアは大きく3つに分けられます。

  1. TOTAL SCORE
    左上に大きく出ている値がそれです。
    この数値はベンチマーク中に描画できた総フレーム数に相当します。
    後述するCPU SCOREとGPU SCOREの合計でもあります。
  2. CPU SCORE
    ベンチマーク中に描画される4つのシーンのうち、CPUに負荷が寄る
    「Room C1」と「Room C2」にて描画できた総フレーム数です。
    C1は中程度の負荷、C2は高い負荷がかかります。

    C1とC2の差が極端に小さい場合は、GPUボトルネックが発生していると考えられます。
  3. GPU SCORE
    ベンチマーク中に描画される4つのシーンのうち、GPUに負荷が寄る
    「Room G1」と「Room G2」にて描画できた総フレーム数です。
    それぞれの差異は先ほどと同じです。

    G1とG2の差が極端に小さい場合は、CPUボトルネックが発生していると考えられます。


またスコア以外に注目すべき指標として、フレームレートに関するものが
2つ存在します。

  1. Average FPS
    ベンチマーク実行中の平均FPSです。
    この値は結構ワーストケース寄りなので、実プレイ中の平均というよりは「普通のプレイならこれ以上は安定して出せる」という受け止め方をするといいです。
    言わばその構成での最低ラインに近い値になると思います。
  2. Low5% FPS
    実行中に計測したFPSのうち、下位5%の平均値を取ったものです。
    一時的にフレームレートが大きく落ち込んだ場面を反映するため、一般的には実際のプレイ中に感じる「カクつき」や「引っかかり」の指標として使われます。

    それぞれほかのベンチマークでも見たことがあると思います。
    ちなみにLow1%にしなかったのは仕組み上サンプル数が不足するためです。

内部的な話

ここからは少し仕組みについての話をさせて頂こうと思います。

1. 各シーンの詳細

先ほど述べたように、このベンチマークでは現在4つのシーンを描画することでCPU/GPUに負荷をかけています。
順を追って説明しましょう。

  • Room C1
    中程度のCPU負荷がかかるシーンです。
    数人がインスタンスにいる普通のワールドを想定しています。

発生するDraw Callsは約6500。
大量のオブジェクトとリアルタイムリフレクションプローブ(解像度16×16)、それからRigidbodyを用いることでCPU負荷を増大させています。

  • Room C2
    高いCPU負荷のかかるシーンです。
    オブジェクトが大量に配置されたワールドや、参加人数の多い集会イベントなどを想定しています。

発生するDraw Callsは約14000。
負荷の掛け方はC1とそこまで変わりませんが、オブジェクトの数を底上げすることでより負荷を高めています。

  • Room G1
    中程度のGPU負荷がかかるシーンです。
    Post Processingなど少しリッチな表現が組み込まれた景観系のワールドを想定しています。

発生するDraw Callsは約1600。
C1/C2と違いCPU負荷はある程度抑えられています。
Post Processingやシェーダーによる表現、リアルタイムリフレクションプローブ(解像度2048×2048)を用いてGPUに負荷を寄せています。

  • Room G2
    高いGPU負荷のかかるシーンです。
    景色を描画することに全力を注ぐ、比較的大規模なワールドを想定しています。

発生するDraw Callsは約4000。
先ほどよりは増えてしまっているものの、元のアセットがリッチなこともあって更にGPUに負荷が寄っています。
負荷の掛け方自体はG1と大差ありません。


以上がベンチマーク中に描画されるシーンの概要です。
それぞれ傾向の違った負荷を発生させることで、疑似的に普段のプレイ環境を再現しようといった試みになります。

誤解を招かぬよう申し上げておきますが、これらのシーンに使われているワールドアセットは、何も最初からここまで重いわけではありません。
説明にもある通り、私が意図的に負荷を増やしています。

2. CPU/GPUボトルネックについて

ご覧いただいたように、各シーンにはそれぞれ「CPU寄り(C1/C2)」「GPU寄り(G1/G2)」といった特性がありますが、これはあくまで相対的な傾向であり、構成によってはその前提が崩れる場合があります。

実際に Ryzen 9 9950X3D + GeForce RTX 5060Ti の構成で、Room C1にてGPUボトルネックの発生が確認されています。

もし仮にVRCMarkを複数のパーツの比較に使う場合、比較対象でない方のパーツに極力グレードの高いものを採用すると、より期待に沿った結果が得られるかと思います。

3. VRAMテストが存在しない理由

ここまでで疑問に思われた方もいるかもしれませんが、このベンチマークにはVRAM容量に関するテストが存在しません。
快適性に大きく影響する部分なのに何故、と思われるかもしれませんが、端的に言えば「実装できなかったから」というのが答えになります。

実のところVRAMを動的に占有する方法自体は見つかっており、それを利用したテストも仮実装まではされていました。
しかしながら、私の環境ではメインメモリへのスワップが発生した段階でもFPSになどに大きな変動が見られず…
色々と試行錯誤したものの、解決に至ることはできませんでした。

なおその方法というのは「RenderTextureの動的生成」になります。
他のアプローチを試そうにも私にはこれ以外の方法が思いつかず、最終的に実装を見送った次第です。

4. 設定とスコアの関連性について

ベンチ中の推奨設定に関しては先ほど述べた通りですが、一部これを遵守したとしてもスコアに多少の差が生まれるケースがあるようです。
参考までに記載しておきます。

  1. リフレッシュレート
    設定上の最大リフレッシュレートが上がるほど、CPUスコアが低下します。
    恐らくFixedUpdateなどの処理頻度が変わることによるものと思われます。
  2. リンクソフト側の解像度設定
    同じく設定を上げるほどCPUスコアが低下します。
    現時点ではエンコード負荷の上昇によるものと考えています。

最後に

ここまで読んでくださった方々へ、まずはお疲れさまでした。
以前公開したv1(無印)に比べて、正確性・信頼性が向上し、より実用的な指標として使えるものに仕上がったと思っています。
もしこの記事を読んで興味を持たれたようであれば、是非一度ワールドを訪れてみてください!

それと、私から一つだけお願いをさせてください。
このワールドを、PCパーツ宗教戦争のダシにすることはやめて頂きたいです。
特定のメーカーやパーツを叩くために使われるのは悲しいですし、そういった目的で制作したわけではありません。

私としては、こういった指標を用意することでそれぞれの魅力に焦点を当て、むしろ選択肢を増やすことに繋げられたらいいなと思っています。
その点ご理解いただけますと幸いです。

それでは今日はこの辺で終わりましょう。
ありがとうございました!

関連リンク

129製作所(Booth):https://129mfg.booth.pm/
作者X(Twitter):https://x.com/heruneko_vrc
ワールドリンク:https://vrchat.com/home/world/wrld_f71988d7-11b9-46fe-b8e8-3bbc4a59bb2a/info

寄稿者紹介

Hellcat

好きなものを好きなときに作る気まぐれな人間です。

投稿者プロフィール

バーチャルライフマガジン編集部
バーチャルライフマガジン編集部