htc VIVEの内部解像度を向上させて表示を高精細・鮮明にする

00

htc viveのヘッドセットのパネル解像度は1080×1200ドットを2枚という構成だが、SteamVRのRendarTagetMultiplierの値を変更することで内部解像度を向上させ、パネル上での見た目を鮮明・高精細化する事ができる。本記事では概要と効果、最後に変更方法をメモしておく。

RendarTagetMultiplier値とは

RendarTagetMultiplier値はRenderResolution(描画解像度)を定義するオプションで、この値を変更する事でパネルに描画する前段階の内部解像度を変更する事ができる。

htc VIVEでは非公式ではあるが、後述するSteamVR.vrsettngsのオプション数値を変更する事により、パネルに表示される前の内部でレンダリングする解像度を上げる事できる。強引にヘッドセットのレンズパネルに表示されるイメージの「見た目」の品質の向上を図るものである。

16

CG全般で古くからモアレが発生する際などで用いられていたスーパーサンプリングアンチエイリアス(SSAA)などがあるが、viveのRendarTagetMultiplier値はNVIDIAのグラフィックボードの機能Dynamic Super Resolution(DSR)に近いだろうか。(DSRはレンダリング解像度を実際のディスプレイの何倍で行うかを指定する)

描画解像度を上げると非常に重い

尚、描画解像度を向上させる様なアプローチ方法はGPUに対しての描画負荷が非常に高い。PS4のタイトル郡が1920×1080で30FPSギリギリという所を踏まえると、90FPSを維持する必要があるVRで、通常より高解像度でレンダリングする手法がいかにヘビーな手法か分かる。実際4Kの3840×2160の解像度はモダンなゲームにおいて、ハイエンドグラフィックボードでも60FPSは維持できていない。描画品質を落としたり、軽いタイトルでようやく60FPS安定といったレベルだ。

09

*980ti SLI程度の環境ではウィッチャー3等のタイトルでは4Kは未だスペック不足というくらい解像度が及ぼす影響は大きい。画質オプションを下げてようやく60FPS維持といったレベルである。

既存のVRソフトに既に似た仕組みは入っている

画素密度を変更する仕組みはVRの最適化手法として既存のタイトルでも利用されている。GPUの負荷を監視し、動的に画素密度を変更するといった具合だ。低スペックのPCでもそこそこ快適に動くのはこのためだ。例えばGTX960ではあればソフト側でGPU負荷を監視し、状況によっては値を992*1102の0.65あたりまで下げられている。逆にGTX1080であれば、余裕がある状況では2116*2352の1.4まで引き上げられるといった具合だ。画素密度と合わせてMSAAのレベルも変更されている。

ミドルレンジグラフィックボードからハイエンドグラフィックボードに変更すると高画質化した気がするのはこのためである。全てのタイトルではないが、Valveからも提供されている技術で、現状VRの9割はUnity製なので対応タイトルは多くなると思われる。

17

*The Labで用いられたVRの最適化テクニックはUnityの無料スクリプト「The Lab Renderer」として配布されている

想定してない挙動になる可能性も

steamVR.vrsettngsで強制的に内部解像度を変更すると、ソフトによってはタイトル内部で高解像度化された状態で想定外の負荷処理が加わってしまう疑惑もある。この値変更は抜け道的なアプローチであり、多くのソフト側は全く考慮しない。

負荷が高まると優先順位的にライトやシャドウの品質やAO等の処理、各アニメーションの更新頻度(個々のアニメーション内部のフレーム数)などが低下し、高解像度化されているが描画やアニメーション品質が通常より劣った状態になる可能性もある。

更に既にフレーム低下時にプレイヤーに知覚させないようにフレームレートを誤魔化す技術も備えてるため、一見正しく動いてる用に見えても、実は内部でFPSが低下しているという事もある。

この様に非常に重い処理を加え、一定のトレードオフも発生する可能性があるという事を留意しつつ、値を変更する必要がありそうだ。

効果・比較

あくまで内部解像度を向上させて表示させる手法なので、実際のヘッドセットのパネル解像度を超えて我々の目に飛び込んでくる事はない。高解像度でレンダリングしたものをhtc VIVE相当の2060*1080ドット相当の解像度に落とし込まれる。下記取得イメージが完璧に一致した保証はないが、概ねレンズを通した見た目と差異はないように調整キャプチャした。あくまで比較イメージである事を前提に掲載しておく。なおSteamvr.vrsetthingsの記述変更によって、描画解像度の変動が固定化されるのか否かは確認はできていない。

renderTargetMultiplier”:  0.5

さすがに荒い。デフォルト値より低い状態なので、現在保有しているグラフィックボードがVRレディ未満の場合に値を下げる際に利用できそうである。とはいえ、ただでさえレンズのボヤけ具合が気になる現在のヘッドセットで内部解像度まで下げてしまうと、VRの体験品質も下がるレベル。ここまで妥協するのであればRX480などの安価なVRレディGPUに新調した方が良いだろう。

06

renderTargetMultiplier”:  1.0

1.0はデフォルト値だろうか。基本はオプション値は記載しないほうが確実なので、デフォルトに戻すときは記述自体削除しておいたほうが良いだろう。思わぬトラブルが発生しかねない。ボケてるという程ではないが、アンチエイリアスが効いてるな・・というレベルでは知覚できる。

07

renderTargetMultiplier”:  2.0

1.0と比較するとフォントが鮮明に表示されている事が確認できる。ビットマップレベルのテクスチャーレベルに落とし込まれてるデータ部分は差異はないが、ポリゴンのエッジやフォントの解像感は明らかに向上してる事が知覚できる。

08

renderTargetMultiplier”:  0.5

さすがに全体的にぼやけており、テクスチャですら画面あたりの解像度に足りてない状態だ。既存のVRタイトルでも最低値は0.65なので、ここまでヒドイ状態でプレイしてるユーザーはいないと思われるが、VRレディ未満のスペックでプレイしてるユーザーはこれに近い状態である可能性が高い。

09

renderTargetMultiplier”:  1.0

0.5と比較するとテクスチャも本来の解像度を保ている事がわかる。ポリゴンのエッジディティールも高精細だ。

10

renderTargetMultiplier”:  2.0

テクスチャなどは、1.0近辺でリソースデータを表示するには十分の解像度があったようだが、2.0にすると更にディティールは向上している。ポリゴンのエッジやノーマルマップによる凹凸の変化、それに反応する環境光の振る舞いなどは1.0と比較して細かく描写されてる様にも見える。

11

ヘッドセットの状態とルームスケールの位置を完全に一致させる事が難しいため、十分な比較イメージではないが、細かいポリゴンディティールを見ると差異が確認できる。

12 13 14

変更方法

追記:簡単に変更出来るようになった。

SteamVRの設定に追加された「Supersampling」オプションで内部解像度を簡単に変更する
SteamVRの設定に追加された「Supersampling」オプションで内部解像度を簡単に変更する
以前まではhtc VIVE等でSteam VRの内部解像度(Supersampling)の値を変更するには難しい手順が必要になってい...

ユーザーが作成したアプリケーションで変更する方法もあるのだが、今後のアップデート等でSteamVR事態が不安定化した際にブラックボックス化してしまい、原因が分からなくなる危険性もある。ここでは手動で変更する方法を記載しておく。尚、「steamvr.vrsettings」が壊れるとSteamVRが起動しなくなる。ファイルのバックアップを確保しておいた方が良いだろう。

1:ファイルを探す

以下のフォルダにアクセスし、Steamvr.vrsetthingsというファイルを探す。(デフォルトインストール時のパス)

C:\Program Files (x86)\Steam\config

01

2:ファイルをメモ帳で開く

右クリック>プログラムから開くを選択

05

メモ帳を選択する。勿論常用してるテキストエディタがあればそちらの方が良い。

04

3:編集する

テキストの中身を確認すると呪文ような英語が列挙されてる事が確認できる。SteamVRで変更したオプションの値はここに格納されている。そのため、人によって若干の記述の差異はある。

02

記述位置は「”Steamvr”:{ }」範囲内なら、どの行でも良いのだが、事例として以下の選択範囲で示した場所にテキストを追記する

15

記述例

renderTagetMultipilierの記述の前行最後に「,」がある事に注意

   "steamvr" : {
      "allowReprojection" : true,
      "background" : "C:\\Program Files (x86)\\Steam\\steamapps\\common\\SteamVR\\\\resources\\backgrounds\\photo.JPG",
      "basestationPowerManagement" : true,
      "playAreaColor" : "#FFFFFF00",
      "showMirrorView" : true,
      "renderTargetMultiplier": 2
   },

推測される解像度の設定値 表記は片目 ()が両目

GDCのValveセッションのパネルから推測されるRendarTagetMultiplierの値。この値がSteamvr.vrsetthingsとリングしてるかは確信が持てないが、すくなくともValve製のタイトルはレンズ解像度よりもデフォルトで高めに描画してる事が伺える。

1.4・・・2116×2352(4232×2352)

1.3・・・1965×2184(3930×2184)

1.2・・・1814×2016(1814×2016)

1.0・・・1512×1680(3628×1680)

0.9・・・1360×1512(2720×1512)

0.81・・・1224×1360(2448×1360)

0.73・・・1102×1224(2204×1224)

0.65・・・992×1102(1984×1102)

GTX1080ユーザー専用のアプローチ方法

筆者の手元にはGTX980tiOC とRadeonR9 nanoの環境があるが、どちらも実用レベルには達しなかった。グラフィックオプションをタイトル毎に細かく調整できるなら、なんとか使えそうではあるが、描画クオリティを下げると本末転倒の気もする。Pascal世代のハイエンドでなければ実用的でない様だ。軽量なタイトルでは効果がありそうだが、値をタイトル毎に検証し、詰めていくのは現実的ではないためデフォルトに戻してしまった。

今のところはGTX1080ユーザー専用の高画質化アプローチ方法といった所だろう。現状GTX1080をフル活用するようなVive対応タイトルがないので、比較的軽いタイトルでパワーを持て余してる状態であれば、活用できるのかもしれない。

 

関連記事

内部解像度2.0時の動作を計測した記事

GTX1080TiのVR性能をhtc VIVE 内部解像度2.0で試す
GTX1080TiのVR性能をhtc VIVE 内部解像度2.0で試す
VR対応を謳ったメーカー製の小型ゲーミングPCやノートPCはルームスケールVRと相性が良いが、拡張性に乏しく、進化の早いGPUの前で...

簡単な設定方法

「OpenVR Advanced Settings」でSteamVRの内部解像度や高度な設定を変更する
「OpenVR Advanced Settings」でSteamVRの内部解像度や高度な設定を変更する
htc viveやOculus RiftなどのPCVRは所有パソコンのスペックに応じて、内部解像度を自由に変更する事で高画質化する事...

シェアする

  • このエントリーをはてなブックマークに追加

Rakuten htc VIVE本体
【HTC】VIVE 国内正規品