VR系列——Oculus Rift 开发者指南:八、性能平视显示器及Oculus调试工具

本文主要是介绍VR系列——Oculus Rift 开发者指南:八、性能平视显示器及Oculus调试工具,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

性能平视显示器

性能平视显示器(HUD)可以使你或你的用户能够查看任何使用SDK 0.6或之后版本构建的应用程序的性能信息。

性能HUD屏幕是由合成器渲染呈现的,使他们能够由单一SDK调用来显示。在OculusWorldDemo,您可以按F11来实现性能HUD界面切换。

延迟时间

HUD的延迟时间显示了APP到中期光子、时间异常到光子-启动和时间异常到光子-启动的曲线图。

下面的截图显示了HUD的延迟时间:


这里写图片描述
图8:延迟时间

下表描述了每个指标:

指标描述
应用程序追踪到中光子从应用程序调用ovr_GetTrackingState()到画面最终在头盔显示器中显示(被照亮)-平均亮度的延迟时间
时间异常到中光子从最后预测跟踪信息被提供给时间扭曲GPU的时间执行到画面的中间渲染器被显示在头盔显示器的时间之间的延迟时间
翻转到光子-启动从后台缓存在头盔显示器中呈现的时间到画面在HMD显示器显示出来的时间之间的的延迟时间

渲染时间

渲染时间HUD(平视显示器)展示了合成器的帧率和客户端应用程序以及合成器的GPU渲染所花费的时间。

下面的截图显示了时间渲染HUD(平视显示器):


这里写图片描述
图9:时间渲染

以下表格描述了每个指标:

指标描述
合成器丢失垂直同步次数在每次合成器垂直同步渲染失败时增加
合成器帧率合成器最高工作频率都会低于客户端应用程序的渲染帧率因为合成器在垂直同步过程中会被锁定,它永远不会超过本机HMD(头戴虚拟显示器)的刷新率。但是,如果该合成器未能按时完成渲染帧,合成器的频率就会低于HMD(头戴虚拟显示器)的刷新频率。
合成器GPU时间GPU用于合成器渲染的时间。这包含了处理时间效果偏差和处理客户端应用程序所提交的所有失真图层。
应用 GPU渲染时间客户端应用程序所消耗的gpu渲染总时间。这包含了在执行完成ovr_SubmitFrame()函数之后适当的使用镜像纹理所用的时间。也包括因为 CPU 线程没有及时处理数据引起gpu缓存区”bubbles”被注入,从而导致gpu命令缓存区”bubbles”被占满
App渲染CPU时间从ovr_SubmitFrame()函数返回后cpu开始运行app到cpu开始运行时间扭曲绘制的时间差。
期间延迟测试仪没有预期生效将显示”N/A”,期间包括客户端应用调用完ovr_SubmitFrame()后产生的合成器IPC调用的时间开销
App –GPU时间扭曲跟踪当app开始调用ovr_GetTrackingState到GPU开始执行时间扭曲绘制。如果延迟测试仪不能如预期正常工作,hub将显示“N / A”。

性能余量

性能余量HUD显示了合成器的帧率和未使用的硬件性能。这HUD可以由开发商或消费者在调整其应用程序时的模拟和图形保真度时使用。由于用户不能禁用垂直同步,它可以被认为是帧速率计数器来判断性能的一个替换。它还可以帮助调试安装,以确保它正在提供虚拟现实一致的体验,而不是由于与硬件无关的问题丢帧。

下面的屏幕截图显示了性能提升空间HUD :


这里写图片描述
图10:性能余量HUD

下表描述了每个指标:

指标描述
Motion-to-photon延迟从上次的预测跟踪信息馈送到GPU去执行Timewarp到该帧的中间扫描线投射在HMD显示屏上的延迟时间。这与“时间延迟”部分提到的信息是一样的,为了消费者友好在这里再提一下。
未使用的GPU性能客户应用程序未使用的GPU和合成器的性能的百分比。这在本质上是时间渲染HUD被追踪的总的GPU时间。该总GPU时间被HMD的本地帧时间分割开(逆的刷新率)。该设计是用来帮助用户证实他的电脑有足够的GPU缓冲去避免丢帧,并帮助用户避免不稳定。
总的丢帧数该值与时间渲染HUD所提供的值一致。帮助用户决定其是否正面临着性能问题。

版本信息

版本信息HUD展示了关于HMD的信息以及用来创建app的SDK的版本.


这里写图片描述
图11:版本信息HUD

下表描述了版本信息HUD中的项:

名称描述
OVR SDK Runtime Ver当前安装的运行时版本。每个vr应用使用的OVR SDK版本为0.5.0以上的版本
OVR SDK Client DLL Ver客户端应用程序编译时使用的SDK版本。
HMD TypeHMD的类型
HMD Serial (HMD系列)HMD的一系列编号。
HMD Firmware( HMD固件)安装的HMD固件版本。
跟踪器编号位置跟踪器的编号
Tracker Firmware(跟踪器固件)安装的位置跟踪器固件版本

Oculus调试工具

Oculus调试工具能够让你在你的游戏或经历中察看性能或调试信息。

使用该工具:

1.打开Oculus SDK的Tools目录。

2.双击OculusDebugTool.exe. Oculus调试工具就打开了。

3.选择Visible HUD(可视HUD)去察看。选项包括:None (no HUD is displayed)(无,没有HUD显示), Performance HUD(性能HUD), StereoDebug HUD(立体调试HUD), 或者Layer HUD(HUD层).

4.如果你选择了 Performance HUD(性能HUD), 再继续选择你想查看哪个HUD性能。选项包括:Latency Timing(时间延迟), Render Timing(时间渲染),Performance Headroom(性能余量), and Version Information(版本信息).欲知更多信息,请查看40页的Performance Head-Up Display(性能HUD)

以下是性能HUD的例子:


这里写图片描述

5.如果你选择了StereoDebug HUD(立体调试HUD),从立体调试HUD选项里设置模式,大小,位置,颜色。

以下是个StereoDebug HUD(立体调试HUD)的例子:


这里写图片描述

6.如果你选择了Layer HUD (HUD 层),选择展示信息的层或者选择“显示全部”(Show All)的选择按钮。以下是个Layer HUD (HUD 层)的例子:


这里写图片描述

7.带上耳机查看效果。


原文如下


Performance Head-Up Display

The Performance Head-Up Display (HUD) enables you or your users to view performance information for any application built with SDK 0.6 or later.

The Performance HUD screens are rendered by the compositor, which enables them to be displayed with a single SDK call. In OculusWorldDemo, you can toggle through the Performance HUD screens by pressing F11.

Latency Timing

The Latency Timing HUD displays the App to Mid - Photon, Timewarp to Photon - Start, and Timewarp to Photon - Start graphs.

The following screenshot shows the Latency Timing HUD:


这里写图片描述
Figure 8: Latency Timing

The following table describes each metric:

MetricDescription
App Tracking to Mid-PhotonLatency from when the app called ovr_GetTrackingState() to when that frame eventually was shown (i.e.illuminated) on the HMD display - averaged mid - point illumination
Timewarp to Mid-PhotonLatency from when the last predictied tracking info is fed to the GPU for timewarp execution to the point when the middle scanline of that frame is illuminated on the HMD display
Flip to Photon - StartLatency from the point the back buffer is presented to the HMD to the point that frame’s first scanline is illuminated on the HMD display

Render Timing

The Render Timing HUD displays the frame rate of the compositor and the total time spent by the GPU rendering for both the client app and the compositor.

The following screenshot shows the Render Timing HUD:


这里写图片描述
Figure 9: Render Timing

The following table describes each metric:

MetricDescription
Compositor Missed V-Sync CountIncrements each time the compositor fails to present a new rendered frame at V-Sync (Vertical Synchronization).
Compositor Frame-rateThe rate at which final composition is happening outside of client app rendering. Because the compositor is locked to vsync, it will never exceed the native HMD refresh rate. But, if the compositor fails to finish a frame on time, it can drop below the HMD refresh rate.
Compositor GPU TimeThe amount of time the GPU spends executing the compositor renderer. This includes Timewarp and distortion of all layers submitted by the client application.
App Render GPU TimeThe total GPU time spent on rendering by the client application. This includes the work done after ovr_SubmitFrame() using the mirror texture if applicable. It also includes GPU command-buffer “bubbles” that might be injected due to the client application’s CPU thread not pushing data fast enough to the GPU command buffer to keep it occupied.
App Render CPU TimeThe time difference from when the app starting executing on CPU after ovr_SubmitFrame() returned to when timewarp draw call was executed on the CPU. Will show “N/A” if latency tester is not functioning as expected. Includes IPC call overhead to compositor after ovr_SubmitFrame() is called by client application.
App - Tracking to TW GPUThe time from when the app called ovr_GetTrackingState to when the Timewarp draw call was executed on the GPU. The HUD displays “N/A” if the latency tester is not running as expected.

Performance Headroom

The Performance Headroom HUD displays the frame rate of the compositor and the unused hardware performance available. This HUD can be utilized by the developer or consumer when tuning their applications’ simulation and graphics fidelity. Since the user cannot disable V-Sync, it can be thought of as a replacement for a frame rate counter to judge available performance. It can also help debug the setup to make sure it is providing a consistent experience in VR and not dropping frames due to issues unrelated to hardware performance.

The following screenshot shows the Performance Headroom HUD:


这里写图片描述
图10:性能余量HUD

The following table describes each metric:

MetricDescription
Motion-to-Photon LatencyLatency from when the last predictied tracking info is fed to the GPU for timewarp execution to the point when the middle scanline of that frame is illuminated on the HMD display. This is the same info presented in “Latency Timing” section, presented here for consumer - friendliness.
Unused GPU performanceThe percentage of GPU performance not used by the client application and compositor. This is essentially the total GPU time tracked in the Render Timing HUD divided by the native frame time (inverse of refresh rate) of the HMD. It is designed to help the user verify that his or her PC has enough GPU buffer to avoid dropping frames and to help the user avoid judder.
Total Frames DroppedThis is the same value provided in the Render Timing HUD to help the user determine whether he or she is encountering performance issues.

Version Information

The Version Information HUD displays information about the HMD and the version of the SDK used to create the app.

The following screenshot shows the Version Information HUD:


这里写图片描述
Figure 11: Version Info HUD

The following table describes each piece of information:

NameDescription
OVR SDK Runtime VerVersion of the currently installed runtime. Every VR application that uses the OVR SDK since 0.5.0 uses this runtime.
OVR SDK Client DLL VerThe SDK version that the client app was compiled against.
HMD TypeThe type of HMD.
HMD SerialThe serial number of the HMD.
HMD FirmwareThe version of the installed HMD firmware.
Tracker SerialThe serial number of the positional tracker.
Tracker FirmwareThe version of the installed positional tracker firmware.

Oculus Debug Tool

The Oculus Debug Tool enables you to view performance or debugging information within your game or experience.
To use the tool:

1.Go to Tools directory of the Oculus SDK.

2.Double-click OculusDebugTool.exe. The Oculus Debug Tool opens.

3.Select the Visible HUD to view. Options include: None (no HUD is displayed), Performance HUD, Stereo Debug HUD, or Layer HUD.

4.If you selected Performance HUD, select which Performance HUD you want to view. Options include:

Latency Timing, Render Timing, Performance Headroom, and Version Information. For more information, see Performance Head-Up Display on page 40.

The following is an example of the Performance HUD:


这里写图片描述

5.If you selected Stereo Debug HUD, configure the mode, size, position, and color from the Stereo Debug HUD options.

The following is an example of the Stereo Debug HUD:


这里写图片描述

6.If you selected Layer HUD. select the layer for which to show information or select the Show All check box.

The following is an example of the Layer HUD:


这里写图片描述

7.Put on the headset and view the results.

这篇关于VR系列——Oculus Rift 开发者指南:八、性能平视显示器及Oculus调试工具的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/222325

相关文章

在React中引入Tailwind CSS的完整指南

《在React中引入TailwindCSS的完整指南》在现代前端开发中,使用UI库可以显著提高开发效率,TailwindCSS是一个功能类优先的CSS框架,本文将详细介绍如何在Reac... 目录前言一、Tailwind css 简介二、创建 React 项目使用 Create React App 创建项目

SpringBoot3实现Gzip压缩优化的技术指南

《SpringBoot3实现Gzip压缩优化的技术指南》随着Web应用的用户量和数据量增加,网络带宽和页面加载速度逐渐成为瓶颈,为了减少数据传输量,提高用户体验,我们可以使用Gzip压缩HTTP响应,... 目录1、简述2、配置2.1 添加依赖2.2 配置 Gzip 压缩3、服务端应用4、前端应用4.1 N

使用Jackson进行JSON生成与解析的新手指南

《使用Jackson进行JSON生成与解析的新手指南》这篇文章主要为大家详细介绍了如何使用Jackson进行JSON生成与解析处理,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 核心依赖2. 基础用法2.1 对象转 jsON(序列化)2.2 JSON 转对象(反序列化)3.

Python基于wxPython和FFmpeg开发一个视频标签工具

《Python基于wxPython和FFmpeg开发一个视频标签工具》在当今数字媒体时代,视频内容的管理和标记变得越来越重要,无论是研究人员需要对实验视频进行时间点标记,还是个人用户希望对家庭视频进行... 目录引言1. 应用概述2. 技术栈分析2.1 核心库和模块2.2 wxpython作为GUI选择的优

Java利用JSONPath操作JSON数据的技术指南

《Java利用JSONPath操作JSON数据的技术指南》JSONPath是一种强大的工具,用于查询和操作JSON数据,类似于SQL的语法,它为处理复杂的JSON数据结构提供了简单且高效... 目录1、简述2、什么是 jsONPath?3、Java 示例3.1 基本查询3.2 过滤查询3.3 递归搜索3.4

Python如何使用__slots__实现节省内存和性能优化

《Python如何使用__slots__实现节省内存和性能优化》你有想过,一个小小的__slots__能让你的Python类内存消耗直接减半吗,没错,今天咱们要聊的就是这个让人眼前一亮的技巧,感兴趣的... 目录背景:内存吃得满满的类__slots__:你的内存管理小助手举个大概的例子:看看效果如何?1.

Spring Boot结成MyBatis-Plus最全配置指南

《SpringBoot结成MyBatis-Plus最全配置指南》本文主要介绍了SpringBoot结成MyBatis-Plus最全配置指南,包括依赖引入、配置数据源、Mapper扫描、基本CRUD操... 目录前言详细操作一.创建项目并引入相关依赖二.配置数据源信息三.编写相关代码查zsRArly询数据库数

SpringBoot启动报错的11个高频问题排查与解决终极指南

《SpringBoot启动报错的11个高频问题排查与解决终极指南》这篇文章主要为大家详细介绍了SpringBoot启动报错的11个高频问题的排查与解决,文中的示例代码讲解详细,感兴趣的小伙伴可以了解一... 目录1. 依赖冲突:NoSuchMethodError 的终极解法2. Bean注入失败:No qu

使用Java实现通用树形结构构建工具类

《使用Java实现通用树形结构构建工具类》这篇文章主要为大家详细介绍了如何使用Java实现通用树形结构构建工具类,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录完整代码一、设计思想与核心功能二、核心实现原理1. 数据结构准备阶段2. 循环依赖检测算法3. 树形结构构建4. 搜索子

JavaScript错误处理避坑指南

《JavaScript错误处理避坑指南》JavaScript错误处理是编程过程中不可避免的部分,它涉及到识别、捕获和响应代码运行时可能出现的问题,本文将详细给大家介绍一下JavaScript错误处理的... 目录一、错误类型:三大“杀手”与应对策略1. 语法错误(SyntaxError)2. 运行时错误(R