VRChat(VRモード)に必要なCPUパワーの考察

2022年追記
2020年ごろに調べたものが残ってたのでとりあえず公開するだけします。
基本的に負荷の傾向自体は変化してないので、2023年以降も一応参考になると思います。

この記事では「コア」「スレッド」という言葉が何度か登場するが説明は
ちもろぐさんに丸投げしたほうがわかりやすいのでそちらに。



VRChatは、高いPCスペックを要求するゲームである。
特にGPUは「いくらあっても十分ではない」と言え、
複数のGPUによる動作の向上は期待できないため、
10万円以上するRTX2080Tiを使っている人も少なくない。というかお金に余裕が見込める人は基本的にRTX2080Tiを使っている。

だがCPUはどうだろうか。
実際のところ、こちらに関しては「ワールド、もといインスタンスに存在する人数やVR環境次第」というのが実情である。
それでも、4コア4スレッドのCPUでは性能不足なのは明らかである
(一応15人程度までのインスタンスならば動作する事を確認している)

しかしながら、VRChatは一定の検証ができる環境を構築するのが不可能であるため、経験や個人的な情報収集をもとに要求性能の水準を推測していこうと思う。

1.ハード環境による負荷の差

ハードウェア環境によってCPU負荷が異なるという推測が存在する。
これは主に座標処理をどのように行っているかという点で差が出る。
CPUに対する負荷は概ね次のような順番で大きい。

RiftS>Rift CV1>Quest(VirtualDesktop)>Quest(Oculus Link)
>Windows MR≧Vive系(index等を含むLighthouse系)

Oculus RiftS
RiftSの処理が最も重いと思われるのは、カメラ(センサー)の台数が多く、更に分解記事を見る限り、内部に処理用のハードウェアを持たずCPUにそれらを丸投げしていインサイドアウトであることも処理内容が増える原因になる。

RIftCV1
CV1も同様に固定センサーの画像、座標処理はPC側で行っているものと推測している。

Oculus Quest(VD/Link)
RiftSに近い構成を持つOculus Questだが、こちらは座標処理をHMD内臓のCPUで行っており、PC側ではGPUエンコード関連処理のみCPUで行われるため相対的に低め。

WindowsMR
RiftSに近いシステムを持つWindowsMRにCPU負荷があまりないのはHMD自体に座標処理用のチップを搭載しているためだ。
(逆に言えばこれはWindowsMRはチップを新規に設計、製造しないとコントローラーのトラッキング範囲が拡大できないことを意味する)

Vive系Lighthouse
「赤外線を放つベースステーション」と「センサーのあるHMD、コントローラ、トラッカー」の組み合わせであり、Ifixitの分解においてはコントローラ、HMD共にARMのCortex-M0搭載のCPUが発見されており、
これで座標を計算してからPC側に転送する仕組みになっているらしい。

2.ソフトウェア構成

これに加えてVRCにはソフトウェア構成によるCPU負荷の差が存在する。

1.Vive系ハードにSteamVR版のVRCを使う方法。
おそらくCPU負荷が一番小さいのがこの構成である。

2.OculusハードでOculus版VRCを使う。
ハード側の都合でCPU負荷は1よりも高い。
だが安定性も高く、「何かしらの事情」が無い限りOculusハードではOculus版VRCを使うべきである

3.OculusハードでSteamVR版のVRCを使う
地味に利用者が多い構成。2に比べて明らかにCPU処理に負荷がかかる。
実際、i5-4670K(4.4GhzOC)とRiftCV1にSteamVR版のVRCという構成で30人規模のインスタンスに入った時、音声処理が間に合わず音声が途切れまくっていたのに対し、Oculus版で入り直すと特に問題なかった。

この構成はOculusハードでフルトラをする際に使われるが、逆にそうでない
場合は使うべきではない。利点があまりなく不安定だ。

3.プレイスタイルによる負荷

VRChatの要求スペックを評価する時に、一定の条件が揃えられない原因の一つが、このプレイスタイルの多様さである。

VRChatは、当然だがインスタンス内にいる人数が多ければ多いほどCPUにかかる負荷は大きい。
特に30人を超えるとGPUよりもCPUが足を引っ張る事が増え始めるが、
これはシングルスレッドでの処理性能の上限などの単純な理由ではなく、
別の原因で処理能力上限が存在する可能性が高い。理由は後述。


プレイスタイルによってはこのような人が多い環境に行くことがほぼない人もおり、
イベント系に行かず、publicにも行かず、フレンドの居る数人から多くても20人以下のインスタンスに入り浸るプレイスタイルであればCPU負荷はさほど大きくならない。


4.経験からの推測、OculusRiftCV1の場合

筆者はOculusRiftCV1を所有し、Viveのベースステーション1.0とトラッカーでフルトラッキングを行っている。
おそらく、RiftSのフルトラッキングに次いで負荷の大きい環境である。

現在VRCをプレイしているPCの構成は
CPU:Ryzen5 3600
RAM:DDR4-2400 8×4 32GB
GPU:Geforce GTX1070
という構成である。

プレイスタイルとしては人の多いところに行くことがそこそこあるため、
CPU負荷に関しては高くなりがち。
例えば、カストラートなどは1つのインスタンスで同じ部屋に比較的密集して30人が存在するため、かなり重い。
非定期イベントになるとそれ以上の負荷がかかる。
その状況であっても、CPUパワーを使い切っているという印象はない。

これは、unityが使うことが出来るスレッド数に限りがあることに原因がある。
それでも、システム的には「VRChat本体(unity)」「Oculusソフトウェア」「SteamVR」は別々のプロセスとして動くため、マルチスレッド非対応であっても多数のコアを持つCPUを有効に使ってくれる。
更にボイスチェンジャーなどソフトを同時に使っているとCPUの処理はそちらも要求してくる。

つまり、VRCにおいてコアとスレッド数の多さというのは重要である。

それでも、余裕を見ても過剰な性能だったりすることもある。
これを大まかにCPUのベンチマークスコアを基準に考察しようと思う。


この記事が気に入ったらサポートをしてみませんか?