[PCVR] VR Performance Toolkitを使ってパフォーマンスを向上させよう
Edit (2022-03-27): v0.3に加わったオプション「favorHorizontal」について補足。
★★★ VR Performance Toolkitとは ★★★
前にお伝えしたOpenVR FSRのアップグレード版のツールです。現在開発中ですが、試しに使ってみたところ、既に非常に良かったので紹介したいと思います。まずその前に、VR Performance Toolkitとは、AMDのFidelityFX SuperResolution(FSR)もしくは、NVIDIAのImage Scaling(NIS)を使用してPCVRのパフォーマンスを向上させるプログラムです。じゃあ一体FSR、NISとはなんぞやというと、簡単に説明すると、ゲーム画像を本来設定してある解像度より低い解像度でレンダリングした後で、出来上がった画像を拡大して本来の解像度にする技術。これによってGPUへの負担が減り、パフォーマンス(FPS)が上がるという訳です。NVIDAのDLSSに似ていますがちょっと違います。
ここまではOpenVR FSRと同じです。ではVR Performance Toolkitに新たに加わった機能はというと、Fixed foveated rendering (FFR)、つまり画面の中心は高解像度でレンダリングし、中心から離れれば離れるほど低解像度でレンダリングする事で、GPUの負担を減らす機能の事です。
★★★ インストールする前に ★★★
- D3D11 (Direct3D 11のゲームのみ対応) Skyrim、Fallout 4、VRChat等。
- 対応APIは、OpenVR、Oculusは開発途中。
- Fixed foveated renderingは、NVIDIA RTXとGTX 16xxシリーズに限ります。
★★★ インストールの方法 ★★★
詳しい説明はこのリンクにありますが、英語です。- ダウンロードVR Performance Toolkit。
-
圧縮ファイル内にある、「dxgi.dll」と「vrperfkit.yml」をゲームのメインexecutableファイル(拡張子が「.exe」のやつ)を探し、それと同じ場所にコピーする。ゲームが32bitの場合は「x86」フォルダ内にあるdxgi.dllを使用してください。通常下記の場所にexeファイルはあります。またこれはVR Toolkitという別のツールですが、このツールの互換性が確認されているリストを参考にするのも良いかとおもいます。
- Unityで作成されているゲーム: <ゲームフォルダー>\<ゲーム名>.exe
- Unrealで作成されているゲーム: <ゲームフォルダー>\Game\Binaries\Win64\<ゲーム名>-Win64-Shipping.exe
-
vrperfkit.ymlをメモ帳で開くと、設定を変更することができます。
- 「upscaling」→「enabled」true=オン、false=オフ
- 「upscaling」→「method」
fsr=AMD FidelityFX Super Resolution
nis=NVIDIA Image Scaling
cas=AMD FidelityFX Contrast Adaptive Sharpening - 「upscaling」→「renderScale」推薦値は0.5~0.77。値の低いほうがパフォーマンスが上がるが、値が高いほうが画質が良くなる。
- 「upscaling」→「sharpness」数値の範囲は0~1。値が高いほうが画像がシャープに。
- 「upscaling」→「radius」画面中心には画質が保たれる画像拡張方法。画面外側にはパフォーマンス重視の画像拡張方法を使用。ここにはその範囲の割合を決める値を設定。
- 「upscaling」→「applyMipBias」画質が多少よくなるが、誤表示が起こる可能性もある。true=オン、false=オフ
- 「fixedFoveated」→「enabled」true=オン、false=オフ
- 「fixedFoveated」→「innerRadius」画面中心で、本来の解像度でレンダリングするエリアの境界線を割合で設定。
- 「fixedFoveated」→「midRadius」一回り外で、本来の解像度の1/2でレンダリングするエリアの境界線を割合で設定。
- 「fixedFoveated」→「outerRadius」二回り外で、本来の解像度の1/4でレンダリングするエリアの境界線を割合で設定。これより外は1/16でレンダリングされる。
- 「fixedFoveated」→「favorHorizontal」
true=画面上下を重点にFFRを施す。
false=画面左右を重点にFFRを施す。
★★★ VRChatで試した結果 ★★★
吾輩の宇宙最強マシーンRyzen 3700x、GTX 1660ti、16GBメモリーで実際に試してみました。Quest 2を使用して、Oculus PCソフト側の設定は全て自動。VRChatはピクセルのギザギザが激しいのであまり解像度を下げずにrenderScale=0.9、その代わり、fixedFoveatedを0.6、0.7、0.8とちょっと多めに設定してみました。左から順に、Performance Toolkitなしの状態、Upscalingのみオンの状態、UpscalingとFoveated renderingオンの状態です。一目瞭然で遅延、FPS、GPUの負担が改善していくのがわかります。