


QUAD図形を使うヘッドロックされた複数のFIXED_TO_VIEWレイヤーをマージして1つのレイヤーにすることに注意してください。マージ後のレイヤーについては、レイヤーごとの追加コストはありません。adbインスタンスが接続されている端末で次のコマンドを実行することによって、Questアプリについての詳細なリアルタイムパフォーマンス統計を取得できます。adb logcat -s VrApi
TW=2.80ms,App=1.11ms,GD=0.23ms,CPU&GPU=6.41ms,LCnt=5(DR14,LM2)
TW=#は、コンポジターによる消費時間です(この名前はコンポジターが行うTimeWarpに由来します)。この数値には、オーバーレイレイヤーのコストが含まれています。LCnt=#は、コンポジターが組み合わせる別個のレイヤー数です。常に少なくとも1つのレイヤー(アプリのフレームバッファのためのレイヤー)が存在します。追加のレイヤーは、アプリや他のサービス(通知など)からのものになります。LM#は、コンポジター時間節約のためにマージされるレイヤー数です。この数値は、0 (マージなし)か、2以上(1レイヤーにまとめられるレイヤー数)のいずれかです。VrApiログによって報告されるレイヤー数が予期しないものである場合、フレームごとに描画されるコンポジターレイヤーのリストが含まれるリアルタイムのログを取得できます。以下のメソッドを使います。adb shell setprop debug.oculus.logLayers 1adb logcat -s CompositorClientLogLayers: Client 12 (com.Sample.UnityAppSpaceWarp:11432)
Layer 0:
Type QUAD
Flags CLIP_TO_TEXTURE_RECT DIRECT_PROJECTION VIEW_FRUSTUM_CULLING
Quad translation (0.4137005, -0.091204815, -0.9783828)
Quad rotation (-0.997699, -9.291795e-10, 0.06780008, -6.314374e-11)
Quad anchor translation (0, 0, 0)
Quad anchor rotation (1, 0, 0, 0)
Quad anchor id 0 version 0
Quad size (0.4, 0.40000007)
Corners not rounded
Corner Rect size (0, 0)
Corner Rect offset (0, 0)
ApertureId 134bc4800000000c
Placement 80
ColorScale (1, 1, 1, 1)
ColorOffset (0, 0, 0, 0)
Src Blend Color BLEND_SRC_ALPHA
Dst Blend Color BLEND_ONE_MINUS_SRC_ALPHA
Src Blend Alpha BLEND_SRC_ALPHA
Dst Blend Alpha BLEND_ONE_MINUS_SRC_ALPHA
SwapChain[0] : TEXTURE2D : 333 : image 0x7024a248f8 (500 x 500) array index 0
TextureRect[0] : (0.002, 0.002, 0.996, 0.996)
SwapChain[1] : TEXTURE2D : 333 : image 0x7024a248f8 (500 x 500) array index 0
TextureRect[1] : (0.002, 0.002, 0.996, 0.996)
Layer 1:
Type PROJECTION
Flags CLIP_TO_TEXTURE_RECT APP_SPACE_WARP PREMULTIPLIED_WITH_VALID_ALPHA
Content UNKNOWN id 0
fov[0] (l:-54, r:40, b:-55, t:44)
fov[1] (l:-40, r:54, b:-55, t:44)
ApertureId 134bc4800000000c
Placement 80
ColorScale (1, 1, 1, 1)
ColorOffset (0, 0, 0, 0)
Src Blend Color BLEND_ONE
Dst Blend Color BLEND_ONE_MINUS_SRC_ALPHA
Src Blend Alpha BLEND_ONE
Dst Blend Alpha BLEND_ONE_MINUS_SRC_ALPHA
SwapChain[0] : TEXTURE2D_ARRAY : 309 : image 0x7024a24a48 (2016 x 1760) array index 0
TextureRect[0] : (0, 0, 0.80505955, 1)
SwapChain[1] : TEXTURE2D_ARRAY : 309 : image 0x7024a24a48 (2016 x 1760) array index 1
TextureRect[1] : (0.19494048, 0, 0.80505955, 1)
LogLayers: Client 9 (com.oculus.ovrmonitormetricsservice:8465)
Layer 0:
Type QUAD
Flags FIXED_TO_VIEW DISABLE_ALPHA_WRITE NO_AR_CLIP
Quad translation (-1.4901161e-08, 0.34202012, -0.9396927)
Quad rotation (1, 0, 0, 0)
Quad anchor translation (0, 0, 0)
Quad anchor rotation (1, 0, 0, 0)
Quad anchor id 0 version 0
Quad size (0.279375, 0.120000005)
Corners not rounded
Corner Rect size (0, 0)
Corner Rect offset (0, 0)
ApertureId a469a2e400000009
Placement ffffffff
ColorScale (1, 1, 1, 1)
ColorOffset (0, 0, 0, 0)
Src Blend Color BLEND_ONE
Dst Blend Color BLEND_ONE_MINUS_SRC_ALPHA
Src Blend Alpha BLEND_ONE
Dst Blend Alpha BLEND_ONE_MINUS_SRC_ALPHA
SwapChain[0] : TEXTURE2D : 241 : image 0x6f833cd4f8 (298 x 128) array index 0
TextureRect[0] : (0, 0, 1, 1)
SwapChain[1] : TEXTURE2D : 241 : image 0x6f833cd4f8 (298 x 128) array index 0
TextureRect[1] : (0, 0, 1, 1)
com.Sample.UnityAppSpaceWarpは500x500のクワッドをレンダリングします。これは、シーン内に配置されたOVROverlayCanvas要素に対応し、Max Texture Sizeは500です。com.Sample.UnityAppSpaceWarpは 2016x1760 アイバッファ(PROJECTION)をレンダリングします。これは、アプリのメインレンダリングパスが表示されるメインレイヤーです。このレイヤーは、アプリSpaceWarp固有のパス(SPACE_WARP)を使うことによっても処理されます。com.oculus.ovrmonitormetricsserviceは298 x 128のヘッドロック(FIXED_TO_VIEW)テクスチャーをクワッドにレンダリングします(これは指標HUDです)。adbインスタンスが接続されている端末で、adb shell setprop debug.oculus.sysPropDebug 1コマンドを実行します。adb shell setprop debug.oculus.layerProperties 1を実行します。adb logcat -s CompositorVRを実行します。CLP: Eye:Right LayerType:Quad PanelVisiblity:Visible DevicePPD:20.67 LayerRenderedPPD:23.71 Texture Resolution:512.00x128.00 Recommended Texture Resolution:446.43x111.61 Recommend Apply:None CLP: Eye:Left LayerType:Quad PanelVisiblity:Visible DevicePPD:20.67 LayerRenderedPPD:24.81 Texture Resolution:512.00x128.00 Recommended Texture Resolution:426.48x106.62 Recommend Apply:None CLP: Eye:Right LayerType:Quad PanelVisiblity:Visible DevicePPD:20.67 LayerRenderedPPD:10.97 Texture Resolution:300.00x300.00 Recommended Texture Resolution:565.27x565.27 Recommend Apply:Sharpening CLP: Eye:Left LayerType:Quad PanelVisiblity:Visible DevicePPD:20.67 LayerRenderedPPD:10.89 Texture Resolution:300.00x300.00 Recommended Texture Resolution:569.17x569.17 Recommend Apply:Sharpening
CLP: コンポジターレイヤーのプロパティ。これは、出力を検索するための任意の文字列です。Eye: LeftまたはRightのいずれか。この出力の時点でどのアイバッファがレンダリング中かを示します。DevicePPD: VRヘッドセットの1度当たりのピクセル数。Meta Quest 2では20.67 PPDです。これは、片目当たり1832×1920のディスプレイ全体で約89×93度のFOvということです。LayerRenderedPPD: ワールド内でレンダリングされる際の、コンポジターレイヤー図形1度当たりの(このコンポジターレイヤーの入力テクスチャーの)ピクセル数。Texture Resolution: このコンポジターレイヤーの入力テクスチャーの解像度Recommended Texture Resolution: このコンポジターレイヤーの入力テクスチャーの理想的な解像度。この解像度にすると、このコンポジターレイヤーを現在の図形および変換によりレンダリングする場合、入力テクスチャーの各ピクセルが、VRヘッドセット内でレンダリングされるピクセル1個に対応します。Recommend Apply: Sharpening、SuperSampling、Noneのうちのいずれか。これらのアルゴリズムについて詳しくは、コンポジションレイヤーフィルタリングをご覧ください。テクスチャーが小さすぎたり大きすぎたりする場合の表示品質をそれぞれシャープ化とスーパーサンプリングによって改善することは可能ですが、可能なら推奨解像度で入力テクスチャーを提供するほうが賢明です。adb shell setprop debug.oculus.sysPropDebug 1 && adb shell input keyevent "KEYCODE_POWER" && adb shell input keyevent "KEYCODE_POWER" && adb shell setprop debug.oculus.visualizeLayers 1
| コマンド | 動作 |
|---|---|
setprop debug.oculus.sysPropDebug 1 | システムツールのデバッグ経路を有効にします。 |
input keyevent "KEYCODE_POWER" | Meta Questヘッドセットの電源ボタンの長押しと同じです。これを再び行うとヘッドセットが再起動し、OSが新しいバッファを設定してオーバーレイを表示できるようにします。 |
setprop debug.oculus.visualizeLayers 1 | コンポジターレイヤーを対照的な色でレンダリングするシステムオーバーレイを有効にします。 |

adb shell setprop debug.oculus.sysPropDebug 0 && adb shell setprop debug.oculus.visualizeLayers 0 && adb shell input keyevent "KEYCODE_POWER" && adb shell input keyevent "KEYCODE_POWER"