主に自分用備忘録。どう設定するのが快適か、適当に試行錯誤するやつです。VRゴーグル被ってるのはなかなか大変なので雑検証です。
検証ではVketのワールドを利用していますが、ちょうど開催時期だったからであって他に理由は無いです。(再現性のなくなるようなところで検証するなって?個人的なメモなのでいいの。)
あとRadeon RX6800はVRAMが16GBあり、複数人でも安定することが期待できますが、ぼっちなのでひとりで遊んだ場合の内容となっております。
動作環境
- Ryzen 7 5800X3D
- DDR4-3200 32GB(16GBx2)
- Radeon RX6800 16GB(電力制限 -5%)
- Meta Quest 2
- ALVR v21.0.0 Nightly.2023.06.02
- Windows 11 Pro 22H2
- AMD Software:Adrenalin Edition 23.7.1
ALVRはもうStable v20が出ており、多分RadeonのHEVCエンコードも大丈夫なはずですが、更新をほったらかして6月のNightlyビルドのまま利用しています。ちなみにStable版リリースにコントローラーが動かないバグがあったようで、どハマりして悩んでました。9月の修正でもう直ってるようです。
Radeon RX6800ってどんな性能?
DLSSなどのスーパーサンプリング技術を考慮しない、純粋な4Kゲーミング性能はRTX3070を超えることもある……という感じのスペックです。
VRChat用途では、VRAMが16GBあるという点や、256bitのメモリバス幅で512GB/sのメモリ帯域幅を持つことから、それなりな性能が期待できます。
AMD Software:Adrenalin Edition設定
初期設定でヨシッ!VRChat用に弄る必要なし!でも、パフォーマンス設定でのファン速度や電源周りはお好みで。
ALVR設定
- リフレッシュレート:120Hz
- エンコードプリセット:Balanced
- 片目エンコード解像度:2144x2336px(ALVR初期設定 Medium)
- 片目レンダリング解像度:2144x2336px(ALVR初期設定 Medium)
- ビットレート:最小50~最大250Mbps
- コーデック:HEVC
- AMFクオリティプリセット:Balanced
- VBAQ:有効
- Preproc:有効
- Foveated rendering:有効
細かな設定はほぼ初期設定にしてあります。Quest 2のパネル解像度は1834x1920pxなので、2144x2336pxだと1.17倍x1.22倍ぐらいの設定になります。HMDのレンズ越しに表示する事を考慮しての解像度設定だと思うのですが、具体的にどういう設定なんでしょうか……?
VRChatでテスト、クオリティ設定による違い
Graphics QualityはUltraを選択しました。Shadow QualityやLOD Qualityはパフォーマンスに変化が見られなかったので、それぞれVery HighとHighを選択しています。
パラリアルラスベガス
スタート地点で検証しました。常に40FPS前後で場所によっては60FPSといったところで、かなり重たいワールドです。メッチャ酔う。
クオリティ設定をUltraからHighやMediumに変更すると、負荷が増大して40FPSから30FPSにフレームレートが低下しました。LowにしてもUltraと負荷の違いはありませんでしたので、基本的にUltraで測定します。
クオリティ設定 Ultra | |
---|---|
アンチエイリアス なし | 40FPS |
アンチエイリアス 2X | 40FPS |
アンチエイリアス 4X | 30FPS |
アンチエイリアス 8X | 17FPS |
アンチエイリアスなしと2XとでFPSに変化はありませんが、フレームタイミングは12.5msから21msに増えていました。非同期再投影などが動作してるのかはよく分かっていません。というのも、SteamVR側に設定項目が表示されないんですよね。
バーチャル博多駅
こちらもスタート地点で検証しました。非常に軽いので、120FPSが出せます。(博多駅写真撮ってないや)
クオリティ設定に関しては、Mediumにしたときだけ65FPSにパフォーマンスが低下しました。4X以降のアンチエイリアスの負荷がなかなか高いですね。
クオリティ設定 Ultra | |
---|---|
アンチエイリアス なし | 120FPS |
アンチエイリアス 2X | 100FPS |
アンチエイリアス 4X | 65FPS |
アンチエイリアス 8X | 35FPS |
解像度別の検証
エンコード解像度について
Quest 2へストリーミングする映像の解像度です。ALVR初期設定の2144x2336pxだと、Quest 2の1834x1920pxを超えています。ちゃんとレンズ越しに見ることを想定しているのかもしれません。
ALVRの解像度プリセットは以下のようになっていました。
Very Low | 横幅3072px(片目1536px) |
---|---|
Low | 横幅3712px(片目1856px) |
Medium(初期設定) | 横幅4288px(片目2144px) |
High | 横幅5184px(片目2592px) |
Ultra | 横幅5632px(片目2816px) |
Extreme | 横幅6080px(片目3040px) |
知らず知らずのうちに変に弄っていなければこれが初期設定なんですが、Quest 2向けかどうかはなんとも分かりません。Medium設定で不足はないと思いますので、こちらは弄らない事にします。下げるとしてもLow設定あたりでしょうか。
見え方の比較が大変なのでこちらの検証はしません。
レンダリング解像度について
SteamVRの設定から即時反映かつ自由にスケーリングが変更できるので、大雑把な比較をしました。
SteamVRの解像度スライダーはピッタリと合わせづらいので、良い感じにスライダーが合ったスケーリングで比較をしています。変動するフレームタイミングはそれとなくチョイスし、VRAM使用量もタスクマネージャーの値を参考にしています。GPUの消費電力はAMD Softwareのチューニング画面で確認した物となります。
ちゃんとしたスクリーンショットの用意が難しそうだったので、見え方は個人の感想だけです。ホームに設定しているワールド内にあった、猫のぬいぐるみと近くに書いてある文字をざっと見比べて判断しています。
そう、全てが適当。
レンダリング解像度 | フレームタイミング | VRAM使用量 | GPU消費電力 | 見え方・個人的な感想 |
---|---|---|---|---|
2624×2860 @150% | 17.5msぐらい | 12.7GB | 170Wぐらい | 文字の形がしっかり判別できる、GPUのファンがうるさい |
2444×2660 @130% | 15msぐらい | 12.1GB | 170Wぐらい | 僅かに文字が読みやすくなる、物の見え方はそんなに変わらない |
2144×2336 @100% | 11.5msぐらい | 11.2GB | 120~150Wぐらい | 全体的に良好で問題はないが、微妙に見えない文字がある |
1916×2088 @80% | 9.0msぐらい | 10.4GB | 120~130Wぐらい | 100%よりも少し悪くなった気がする |
1768×1924 @68% | 7.5msぐらい | 9.7GB | 110Wぐらい | 流石に文字は見辛い、物のディテールぼやける |
レンダリング解像度を上げるとVRAMの使用量も増えてしまいます。ワールドの状態やアバターの人数によってフレームタイミングやVRAM使用量は変動しますが、解像度の違いだけで1GB前後の差があるのは大きそうです。
その他
OBSで録画しながらALVR経由でVRChatを実行してみました。VR側の解像度は2144×2336 @100%です。
まずALVRでQuest 2へストリーミングするためにHEVCエンコードを行っている状態ですが、Radeon RX6800のハードウェアエンコード負荷は30%程度とかなり低めです。ここでOBSを起動し、解像度FHD ビットレート5Mbps フレームレート60FPSの設定で録画を開始しました。H.264のハードウェアエンコードが同時に実行されていますが、負荷は70%台で収まっており、カクつくような事もありませんでした。(タスクマネージャー Video Codec 1の項目を参照)
RX6800は最大で8K24FPSのリアルタイムエンコードが出来る(HEVCの場合)そうなので、4288x2336px 72FPSのエンコードと1920x1080px 60FPSのエンコードを同時にこなすぐらいなら余裕のようです。
単なる録画ではなく動画配信だと、ネットワークの状態であるとか他にも関わる要素が出てくると思いますが、性能が足りないという事はなさそうでした。録画したデータもノイズ等は見られず、画質も問題なさそうです。RadeonのH.264ハードウェアエンコードは品質が悪い(HEVCは普通)と言われていましたが、最近はBフレームに対応し、品質を大幅に改善したと聞いています。
設定の落とし所は?
とりあえずQuest 2の120Hz設定を有効にして試してみましたが、ワールドにひとりで居ても60FPSぐらいになる場面が多く、多人数で遊ぶことを考慮すると72Hz設定のままで十分ではないかと思いました。
アンチエイリアスについては、なしと2Xとで見た目の差が大きくなります。4Xと8Xは、2Xとの差が感じられない上に負荷があまりにも高いです。ギザギザしてチラつく代わりに最軽量のアンチエイリアスなし設定を選ぶか、チラつきが抑えられるものの少し重いアンチエイリアス2X設定にするかは悩みどころです。尚、アンチエイリアスなしでもカメラでの撮影時はアンチエイリアスが掛かるので、カメラ品質の心配はありません。
エンコード及びレンダリング解像度設定は、ALVRのMediumプリセットである横4288px(片目2144px)のままでも悪くないと感じています。設定を上げるとしてもレンダリング解像度側なのですが、負荷が掛かってVRAMの使用量も増加するので1.3倍ぐらいまでかなと考えています。
これがVIVEやindexのようなHMDの場合は結果が異なってくると思うのですが、我が家は様々な要因でベースステーションの設置が不可能なのでインサイドアウトかつワイヤレス一択となっております。試す機会は恐らく無いでしょう。
間違いに気が付いたり、新たに試したりしたことがあれば加筆・修正をする予定です。