


QUAD 形状将头部锁定的 FIXED_TO_VIEW 图层合并为一个图层。合并的图层没有额外的每层成本。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=# 列出合成器正在合成的独立图层的数量。应用的帧缓冲区总是至少有一层。附加层可以来自您的应用,也可以来自其他服务(如通知)。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 eyebuffer (PROJECTION)。这是主图层,上面会显示您的应用主渲染通道。该图层也将使用应用空间翘曲专用路径 (APP_SPACE_WARP) 进行处理。com.oculus.ovrmonitormetricsservice 将渲染一个 298 x 128 头部锁定 (FIXED_TO_VIEW) 纹理到一个四边形上。(这是 Metrics HUD)。adb 实例的终端中,运行:adb shell setprop debug.oculus.sysPropDebug 1adb shell setprop debug.oculus.layerProperties 1adb logcat -s CompositorVRCLP: 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 的其中一个。表示输出时哪个 Eyebuffer 正在渲染。DevicePPD:VR 头戴设备每度像素。Meta Quest 2 的 PPD 值为 20.67,表明其 1832x1920 每眼显示屏的 FOv 约为 89x93。LayerRenderedPPD:合成图层的每度像素(该合成图层的输入纹理),如虚拟世界的渲染效果。Texture Resolution:合成图层输入纹理的分辨率Recommended Texture Resolution:合成图层输入纹理的理想分辨率。在此分辨率下,以当前形状和变换渲染合成图层时,输入纹理中的每个像素正好对应 VR 头戴设备中的一个渲染像素。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 头戴设备上的电源按钮效果相同。重复此操作做会重新唤醒头戴设备,使操作系统能够配置新的缓冲区来显示覆盖层。 |
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"