多头戴式显示器虚拟现实配置中的显示调步

文档序号:1760677 发布日期:2019-11-29 浏览:9次 >En<

阅读说明:本技术 多头戴式显示器虚拟现实配置中的显示调步 (Display pacing in the configuration of bull head mounted displays virtual reality ) 是由 盖纳迪·里盖 于 2018-04-19 设计创作,主要内容包括:公开了各种虚拟现实计算系统和方法。在一方面,提供一种将视频帧数据递送到多个VR显示器(HMD1、HMD2)的方法。所述方法包括生成用于多个VR显示器的内容以及感测所述多个VR显示器对具有实时要求的资源的竞争需要。如果感测到对具有实时要求的资源的竞争需要,那么确定用于所述多个VR显示器的刷新的所选择刷新偏移量以避免所述多个VR显示器对资源的所述竞争需要之间的冲突。施加所选择刷新偏移量,并且将所述内容递送到所述多个VR显示器。(Disclose various virtual reality computing systems and method.On the one hand, a kind of method that video requency frame data is delivered to multiple VR displays (HMD1, HMD2) is provided.The method includes generating the content for multiple VR displays and sense the multiple VR display to the Competitive Needs of the resource with requirement of real time.If sensing the Competitive Needs to the resource with requirement of real time, then it is determined that the selected refreshing offset of the refreshing for the multiple VR display is to avoid the multiple VR display to the conflict between the Competitive Needs of resource.Apply it is selected refresh offset, and by the content delivery to the multiple VR display.)

多头戴式显示器虚拟现实配置中的显示调步

相关申请的交叉引用

本申请要求于2017年4月25日提交的美国专利申请号15/496,972的优先权,其全部内容特此以引用方式并入本文。

背景技术

虚拟现实(VR)系统利用具有照明屏幕的头戴式显示器(HMD),所述照明屏幕向佩戴者示出计算机生成的虚拟世界。随着用户头部的每次移动,HMD改变显示以向用户示出改变的风景。当运行应用程序(诸如游戏)时,VR计算机必须不但渲染由应用程序生成的视频帧,而且考虑用户头部的移动。无论是否存在头部移动,VR计算机必须接近实时地处理帧,以便避免在图像延迟时产生的抖动,并且用户将在仅一秒或甚至若干分之一秒之后查看图像。抖动可能非常令人不快并且引起恶心。

具体实施方式

VR系统依赖于接近实时地执行以提供良好用户体验的能力。如上所述,单个HMD驱动系统表示简单的情况。当多个HMD连接到计算机系统时,复杂性会增加。常规的VR HMD在通常与显示器刷新率相关的固定时间线上操作。垂直同步或Vsync是一种控制缓冲区翻转以避免帧撕裂的问题的方法,在帧撕裂中,显示器示出具有不同内容的两个渲染帧的部分。当启用Vsync时,每次缓冲区翻转仅可在每次刷新之后发生。这有效地将帧渲染速率限制在HMD刷新率。

一些VR系统供应商引入一种称为异步时间扭曲(ATW)的技术,以帮助减轻丢失帧对VR HMD的影响。基于在最后的VR HMD位置被发送到游戏之后发生的相对头部运动,使用ATW的系统在没有来自游戏引擎的输入的情况下使VR HMD上的图像移位。这样做可向用户呈现更准确的图像。ATW将整个帧作为整体移动,从而使所述整个帧仅基于用户头部旋转的相对改变而移位。更新的发展是所谓的异步空间扭曲(ASW)。具有ASW的系统试图通过在游戏以低于刷新率的帧速率运行时生成新帧以***来自游戏引擎的“真实”帧之间来使场景内的对象和运动移位。

ATW以与Vsync间隔的前部的最小延迟执行。类似地,在中央处理单元(CPU)和图形处理单元(GPU)两者上执行的帧生成的其他部分相对于HMD的Vsync调步。这适用于具有单个HMD的系统。当附接多个HMD时,即使系统(例如,CPU和GPU)具有足够的总马力,由于跨多个HMD争用实时关键资源(例如,用于ATW的计算),也可能发生不可靠的操作。存在用于同步显示处理和输出的常规解决方案,诸如同步锁定和帧锁定,但是不存在用于以多个VR头戴式装置所需的可预测方式对显示操作进行调步的解决方案。

根据本发明的一个方面,提供一种将视频帧数据递送到多个VR显示器的方法。所述方法包括生成用于多个VR显示器的内容以及感测所述多个VR显示器对具有实时要求的资源的竞争需要。如果感测到对具有实时要求的资源的竞争需要,那么确定用于所述多个VR显示器的刷新的所选择刷新偏移量以避免所述多个VR显示器对资源的所述竞争需要之间的冲突。施加所选择刷新偏移量,并且将所述内容递送到所述多个VR显示器。

所述方法,其中所述资源包括用于渲染和异步时间扭曲请求的计算。

所述方法,其中所述多个显示器支持动态刷新,并且包括:如果感测到对具有实时要求的资源的竞争需要,那么还确定用于所述多个VR显示器的刷新的所选择动态刷新率以帮助避免由所述多个VR产生的对资源的所述竞争需要;以及施加所选择刷新偏移量和所选择动态刷新率。

所述方法,其中所述资源包括用于渲染和异步时间扭曲请求的计算。

所述方法,其中所述生成所述内容由单个GPU执行。

如权利要求所述的方法,其中所述生成用于多个VR显示器的所述内容包括:使用GPU生成用于所述多个VR显示器中的一个的所述内容;以及使用另一个GPU生成或递送用于所述多个VR显示器中的另一个的所述内容。

所述方法,其中所述GPU被配置为主设备,并且所述另一个GPU被配置为从设备,使得所述主设备控制由所述从GPU生成或递送的帧的所选择刷新偏移量。

根据本发明的另一个方面,提供一种将视频帧数据递送到多个VR显示器的方法。所述方法包括运行计算装置上的第一应用程序以生成用于多个VR显示器的内容并且使用第二应用程序感测所述多个VR显示器对具有实时要求的资源的竞争需要。如果感测到对具有实时要求的资源的竞争需要,那么使用所述第二应用程序来确定用于所述多个VR显示器的刷新的所选择刷新偏移量以避免所述多个VR显示器对资源的竞争需要之间的冲突。施加所选择刷新偏移量,并且将所述内容递送到所述多个VR显示器。

所述方法,其中所述资源包括用于渲染和异步时间扭曲请求的计算。

所述方法,其中所述多个显示器支持动态刷新,所述方法包括:如果感测到移动,那么还确定用于所述多个VR显示器的刷新的所选择动态刷新率以帮助避免由于所述移动造成的由所述多个VR显示器产生的对资源的所述竞争请求;以及施加所选择刷新偏移量和所选择动态刷新率。

所述方法,其中所述资源包括用于渲染和异步时间扭曲请求的计算。

所述方法,其中所述应用程序由单个GPU运行。

所述方法,其中所述生成用于多个VR显示器的所述内容包括:使用GPU生成用于所述多个VR显示器中的一个的所述内容;以及使用另一个GPU生成或递送用于所述多个VR显示器中的另一个的所述内容。

所述方法,其中所述GPU被配置为主设备,并且所述另一个GPU被配置为从设备,使得所述主设备控制由所述从GPU生成或递送的帧的所选择刷新偏移量。

根据本发明的另一方面,提供了一种虚拟现实计算系统。所述系统包括计算装置和处理器。所述处理器可操作来执行指令以:生成用于多个VR显示器的内容;感测所述多个VR显示器对具有实时要求的资源的竞争需要;如果感测到对具有实时要求的资源的竞争需要,那么确定用于所述多个VR显示器的刷新的所选择刷新偏移量以避免所述多个VR显示器对资源的所述竞争需要之间的冲突;施加所选择刷新偏移量;并且将所述内容递送到所述多个VR显示器。

所述虚拟现实计算系统,其包括所述多个VR显示器。

所述虚拟现实计算系统,其中所述处理器包括CPU、GPU或组合的CPU和GPU。

所述虚拟现实计算系统,其中所述计算装置包括另一个处理器,其中所述处理器生成用于所述多个VR显示器中的一个的所述内容,并且所述另一个处理器生成或递送用于所述多个VR显示器中的另一个的所述内容。

所述虚拟现实计算系统,其中所述处理器被配置为主设备,并且所述另一个处理器被配置为从设备,使得所述主设备控制由所述从处理器生成或递送的帧的所选择刷新偏移量。

所述虚拟现实计算系统其中所述多个显示器支持动态刷新,所述处理器可操作来:如果感测到对具有实时要求的资源的竞争需要,那么还确定用于所述多个VR显示器的刷新的所选择动态刷新率以帮助避免所述多个VR显示器对资源的所述竞争需要之间的冲突,并且施加所选择刷新偏移量和所选择动态刷新率。

公开了改进对向多个VR头戴式显示器递送视频帧的管理的多种虚拟现实(VR)计算系统。可生成视频内容以用于递送到多个VR头戴式显示器。VR计算机可能通过VR合成器或其他应用程序监测由多个VR显示器进行的需要实时处理(诸如部分或全部的帧渲染或异步时间扭曲)的竞争任务。如果比如通过检测多个VR显示器来感测需要实时或接近实时的计算要求的竞争任务,那么应用程序和系统计算用于多个VR显示器的刷新的所选择刷新偏移量以避免多个VR显示器产生的对资源的竞争请求。施加所选择刷新偏移量,并且将所述内容递送到所述多个VR显示器。一个头戴式VR显示器可首先刷新,并且在若干分之一秒或帧的若干分之一之后再次刷新,并且对连接到计算装置的其他VR显示器以此类推。交错避免了对具有实时要求的资源(诸如异步时间扭曲和帧渲染部分所需的那些)的竞争请求。现在将描述更多细节。

在以下描述的附图中,当相同元件出现在多于一个附图中时,附图标号通常会重复。现转向附图,并且特别地转向图1,其中示出示例性VR计算系统10(在下文中称为系统10)的示意图。系统10包括计算装置15和一个或多个头戴式显示器,所述头戴式显示器中的两个分别被描绘和标记为HMD1和HMD2,其中HMD代表头戴式显示器。根据需要,在计算装置15与HMD1和HMD2之间的连接20和25可以是有线或无线连接。计算装置15可包括处理器或CPU 30、GPU 35、系统存储器38和存储装置40。CPU 30和GPU 35可以是通用离散装置或可诸如通过加速处理单元集成到单个装置中。可选地,CPU 30和GPU 35的功能可由一个或多个专用集成电路执行。系统存储器可以是RAM、ROM、这些或其他类型的存储器的闪存组合。存储装置40是非易失性计算机可读介质,并且可以是任何类型的硬盘、光存储盘、固态存储装置、ROM、RAM或用于存储计算机可读介质的几乎任何其他系统。存储装置40可操作来存储用于执行本文公开的各种功能的非暂时性计算机可读指令。

计算装置15可包括多个应用程序,所述应用程序缩写为APP 1、APP 2……APP N,并且可以是驱动程序、软件应用程序或其他类型的应用程序。此外,计算装置15可包括操作系统45和视频驱动程序50。操作系统45和视频驱动程序50以及应用程序APP 1、APP2……APP N可存储在存储装置40上并且选择性地加载到系统存储器38中。可使用Linux或更多应用程序专用类型的操作系统软件等。应用程序APP 1……APP n中的一个(例如,APP 1)可以是生成要显示在HMD1和HMD2上的内容(诸如游戏或其他程序)的应用程序,而另一个应用程序(比如APP 2)可以是通过视频驱动程序50控制内容如何显示在HMD1和HMD2上的方面的VR合成器。视频驱动程序50可包括用于实现Vsync或垂直同步的代码。Vsync被设计来避免称为“撕裂”的现象,在“撕裂”现象中,显示器示出具有不同内容的两个渲染帧的部分。当启用Vsync时,每次缓冲区翻转仅可在每次刷新之后发生。

应用程序APP 1和/或应用程序APP 2可驻留在存储装置40上,并且在执行期间选择性地加载在系统存储器38中。应用程序APP 2可操作来提供用于驱动HMD1和HMD2的显示器的定时同步以及将针对HMD1和HMD2的多个VR显示器的刷新间隔选择性地偏斜。技术目标是提供HMD1与HMD2之间的刷新定时的一定所选择偏移量以避免实时工作负载(诸如帧渲染和异步时间扭曲(ATW)请求)的重叠。将结合图3描述系统10的操作方面。然而,在转向图3之前,考虑多HMD系统中的常规帧渲染将是有用的。在图2中描绘此类常规帧渲染,图2示出HMD1的刷新定时图55和HMD2的对应的刷新定时图60。对于定时图55和60中的每一个,描绘了几个刷新点,即,刷新1、刷新2、刷新3和刷新4,并且假设HMD1和HMD2都具有相同的恒定刷新率,即,刷新1与刷新2之间以及刷新2与刷新3之间等诸如此类的时间段的倒数。刷新定时图55示出“硬件队列”和“显示在HMD1上”的定时活动,其中硬件队列是与HMD1的帧渲染相关联的硬件(例如,GPU、APU或其他项)活动,并且显示在HMD1上示出导致渲染内容实际显现在HMD1上的活动。如图55所示,在刷新1之后但在刷新2之前的某一点处,执行HMD1的帧渲染(缩写为“渲染1”),并且在HMD1上显示正好在刷新1之前渲染的内容,缩写为“发送到HMD1”。刷新定时示出与HMD2的帧渲染相关联的硬件队列的定时活动,并且“显示在HMD2上”示出导致渲染内容实际显现在HMD2上的活动。如图60所示,在刷新1之后但在刷新2之前的某一点处,执行HMD2的帧渲染(缩写为“渲染2”),并且在HMD2上显示正好在刷新1之前渲染的内容,缩写为“发送到HMD2”。在此假设渲染2在刷新1之后很快在时间t0处开始,并且渲染1在渲染2完成之后紧接且顺序地在时间t1处开始。现快速前进到正好刷新2之后。如刷新定时图55所示,来自在时间t1处开始的渲染1操作的内容在于时间t2处完成发送到HMD1时最终显示在HMD1上。注意在时间t1处开始的渲染1与在时间t2处进行的发送到HMD1之间的延迟(标记为“延迟HMD1”)。现考虑正好在刷新2之后的定时图60。来自在时间t0处开始的渲染2操作的内容在于时间t2处完成发送到HMD2时最终显示在HMD2上。但是注意在时间t0处开始的渲染2与在时间t2处进行的发送到HMD2之间的延迟(标记为“延迟HMD2”)。渲染2和渲染1为刷新1与刷新2之间的处理而竞争,并且因此必须在时间上交错。这意味着必须在刷新1到刷新2时间段的早期执行渲染2,并且这导致延迟HMD2>延迟HMD1并且可能延迟HMD2长得足以给HDM2的用户造成抖动。

现将注意力转向图3,其示出示例性改进的操作,并且特别地示出HMD1的刷新定时图65和HMD2的对应的刷新定时图70。对于定时图65和70中的每一个,描绘了几个刷新点,即,刷新1、刷新2、刷新3和刷新4。HMD1的刷新率RHMD1由1/THMD1给出,其中THMD1是HMD1的图65中的刷新1与刷新2之间以及刷新2与刷新3之间等诸如此类的时间段。HMD2的刷新率RHMD2由1/THMD2给出,其中THMD2是HMD2的图60中的刷新1与刷新2之间以及刷新2与刷新3之间等诸如此类的时间段。刷新率RHMD1和RHMD2可以相同或不同,并且可在HMD1和HMD2以及计算装置15能够具有动态刷新率的情况下动态地调整。刷新定时图65示出“硬件队列”和“显示在HMD1上”的定时活动,其中硬件队列是与HMD1的帧渲染相关联的硬件(例如,GPU、APU或其他项)活动,并且显示在HMD1上示出导致渲染内容实际显现在HMD1上的活动。如图65所示,在刷新1之后但在刷新2之前的t4处,开始HMD1的帧渲染(缩写为“渲染1”),并且在HMD1上显示正好在刷新1之前渲染的内容,缩写为“发送到HMD1”。需注意,时间t4被选择成使得渲染1在接近刷新2时完成。现快速前进到图65中的正好刷新2之后。如刷新定时图65所示,来自在时间t4处开始的渲染1操作的内容在于时间t5处完成发送到HMD1时最终显示在HMD1上。注意在时间t4处开始的渲染1与在时间t5处进行的发送到HMD1之间的延迟(标记为“延迟HMD1”)。现考虑对刷新定时图70进行定时。刷新定时图70示出“硬件队列”和“显示在HMD2上”的定时活动,其中硬件队列是与HMD2的帧渲染相关联的硬件(例如,GPU、APU或其他项)活动,并且显示在HMD2上示出导致渲染内容实际显现在HMD2上的活动。但是需注意,刷新定时图70中的硬件队列的刷新1(换句话讲,HMD2的刷新1)相对于刷新定时图65中所示的HMD1的刷新1在时间上偏移一定所选择刷新偏移量。如图70所示,在刷新1之后但在刷新2之前的t6处,开始HMD2的帧渲染(缩写为“渲染2”),并且在HMD2上显示正好在刷新1之前渲染的内容,缩写为“发送到HMD2”。需注意,时间t6被选择成使得渲染2在接近刷新2时完成。现快速前进到图70中的正好刷新2之后。如刷新定时图70所示,来自在时间t6处开始的渲染2操作的内容在于时间t7处完成发送到HMD2时最终显示在HMD2上。注意在时间t6处开始的渲染1与在时间t7处进行的发送到HMD2之间的延迟(标记为“延迟HMD2”)。通过使用刷新偏移量,可在接近HMD1的刷新2时完成渲染1,并且可在接近HMD2的刷新2时完成渲染2,这导致延迟HMD1等于或接近延迟HMD2以及延迟HMD2比用于图2所示的常规技术的延迟HMD2短。

仍然参见图3,可基于帧的若干分之一(比如,高达二分之一)或一些其他软件控制的间隔(诸如1毫秒至2毫秒等)来选择刷新偏移量。所选择刷新偏移量的目的在于使具有实时要求(诸如ATW请求和/或部分或全部的帧渲染)的HMD1任务和HMD2任务在时间上间隔开。应当理解,在HMD1和HMD2以及计算装置15支持动态刷新率的情况下,刷新率RHMD1和RHMD2不仅可以不同而且还可以快速地波动。

现将结合图1和图3描述刷新偏移量的一些示例性选择。一种示例性技术涉及最大刷新偏移量的强力选择。例如,以帧的分数措辞的最大刷新偏移量将由连接到计算装置15的头戴式显示器的数量的倒数给出。因此,例如,在HMD1和HMD2连接到计算装置15的情况下,以帧措辞的最大刷新偏移量将是帧的1/2。如果存在三个HMD,那么最大刷新偏移量将是帧的1/3,并且对于四个HMD,最大刷新偏移量将是1/4,以此类推。一个或多个刷新偏移量的选择和施加可由VR合成器(诸如这些实例中的APP 2)执行。当计算装置15通过APP 2或以其他方式感测HMD的连接或断开时,可向上或向下调整刷新偏移量。

用于选择刷新偏移量的另一个示例性技术涉及动态选择。在此,当内容生成应用程序APP 1正在为HMD1和HMD2产生帧时,VR合成器(APP 2)可确定互斥操作将花费的时间,并且然后指示视频驱动程序50应是什么样的刷新偏移量允许在没有任何竞争的实时任务(诸如ATW请求或帧渲染重叠)的情况下执行互斥操作。紧接着刷新(比如,HMD1的刷新1)之后,VR合成器(APP 2)将轮询HMD1和HMD2的跟踪数据,并由此感测HMD1和HMD2的移动,并且还感测具有实时要求的任何其他传入的任务。利用掌握的该数据,APP 2接着将确定ATW请求和利用ATW校正对HMD1移动进行的帧渲染将花费的时间,并且然后指示视频驱动程序50应是什么样的刷新偏移量使得对HMD1的移动的渲染不会受到与竞争的HMD(诸如HMD2)的移动相关联的ATW请求的束缚。APP 2可指示视频驱动程序50包括安全裕度,也就是说,使刷新偏移量略大于必要的量。在下一瞬间,可能发生HMD1和HMD2的其他移动,这可提示APP 2对应地重新调整刷新偏移量。动态调整刷新偏移量的这一过程可根据HMD1和HMD2的移动重复发生。当然,所述技术可与使用例如由超微半导体有限公司(Advanced Micro Devices,Inc.)供应的Freesync技术的对所有HMD(诸如HMD1和HMD2)的动态刷新密切配合。

某些VR设置可能涉及具有不同刷新率的HMD。在这些情况下,APP 2仍然可施加刷新偏移量以使实时计算任务间隔开。现将注意力转向图4,其描绘了HMD1的刷新定时图75和HMD2的对应的刷新定时图80。图4类似于图3,并且因此针对定时图75和80中的每一个描绘了几个刷新点(刷新1、刷新2、刷新3和刷新4)、硬件队列和显示在HMD1或HMD2上迹线。但是,需注意,HMD1和HMD2的(如上所述定义的)刷新率有所不同。在不存在任何补偿的情况下,具有不同刷新率的HMD1和HMD2将产生不规则的“拍频”图案,其中多个HMD(HMD1和HMD2)的刷新之间的间隔变得更大和更小并且最终发生碰撞。然而,在此,APP 2(作为VR合成器,参见图1)可施加刷新偏移量以试图将HMD1的刷新1和HMD2的刷新1、HMD1的刷新2和HMD2的刷新2等等间隔开,使得它们不会发生碰撞。也可以使用其他刷新偏移方法。如果在不可能避免与多个HMD(HMD1和HMD2)发生刷新碰撞的情况下,或者在不存在碰撞但是来自不同HMD的刷新标记彼此过于接近的情况下,可生成反馈以向APP 2发出警告:它需要考虑由于可能的工作负载碰撞而造成的可能的延迟增加。

设想用于与多个VR HMD一起使用的多GPU变型。就这一点而言,现将注意力转向图5,图5是描绘计算系统10′的替代性示例性变型的框图。这一计算系统变型10′共享图1中描绘且在本文其他地方描述的计算系统10的许多属性。例如,可存在多个VR显示器HMD1和HMD2,并且这些显示器可根据需要进行多于二的编号。此外,计算装置15′可包括GPU 35、系统存储器38、存储装置40、具有Vsync的OS 45、多个应用程序APP 1至APP N和视频驱动程序50。此外,HMD1和HMD2可通过前述连接20和25连接到计算装置15′。然而,在此,除了GPU 35之外,计算装置15′可包括一个或多个另外的GPU,其中的一个被描绘并标记为85。应当理解,可根据需要实现多于两个GPU 35和85。GPU 35和85两者可与存储装置40和系统存储器38具有操作连接以及具有到彼此的操作连接。APP 2(在被配置为如本文其他地方所述的VR合成器的情况下)可包括用于分别对HMD1和HMD2执行渲染的指令。例如,GPU 35可被指派为HMD1渲染内容,并且GPU 85可被指派为另一个VR显示器HMD2渲染内容。可能期望将GPU中的一个(例如,GPU 35)指定为主设备,而将其他一个或多个GPU 85指定为从设备,以用于刷新率和刷新点的定时同步和偏斜。在GPU 35和GPU 85具有相同能力的情况下,或者更通常地,在一个GPU(比如GPU 35)是能力更强的集成电路(诸如卡上的离散GPU)而另一个GPU 85是例如在集成图形芯片中能力较弱但仍起作用的GPU的情况下,可执行这种任务分化(即,主设备和从设备)。如在图3中描绘且在本文其他地方描述的刷新间隔的相同类型的定时同步和选择性偏斜可与图5中描绘的多GPU变型一起使用。然而,在此,主GPU 35可被指派将从GPU 85和可结合到计算装置15中的任何其他从GPU的刷新间隔选择性地偏斜。也可以使用另外的粒度级别。其他任务分化是可能的。例如,能力更强的GPU 35可用于HMD1和HMD2的具有实时要求的任务,并且能力较弱的GPU 85可用于要求较低的任务,诸如驱动HMD2。在另一种变型中,次要的GPU 85也可用于一些渲染。与其他公开的变型一样,可使用例如Freesync或其中提供显示器HMD1和HMD2的动态刷新的其他技术来实现动态刷新。

在图6和图7中以图形方式示出数个示例性处理流程。图6描绘在没有启用动态刷新的情况下的示例性处理流程,并且下文将论述的图7描绘在启用动态刷新的情况下的示例性处理流程。图6描绘了可以是异步的两个并行处理循环100和102。处理循环100处置对竞争资源请求的感测以及对所选择刷新偏移量的选择和施加。因此,在步骤105处,从图1所示的计算装置15添加或移除HMD。在步骤110处,应用程序(例如,实现为VR合成器或类似功能性的APP 2)感测多个VR显示器对实时资源的竞争需要。这需要感测连接到计算装置15的VR显示器(诸如HMD1、HMD2等)的数量。单个检测到的VR显示器将不会生成对实时资源的竞争需要,但是两个或更多个检测到的VR显示器将会生成对实时资源的竞争需要。如果在步骤115处感测到一个或多个VR显示器对实时资源的竞争需要,那么处理流程前进至步骤120,并且APP 2确定一个(或多个)适当的刷新偏移量以便避免对实时资源的需要的冲突。这一确定将考虑检测到竞争VR显示器(诸如HMD1、HMD2等)的数量——添加的VR显示器将需要更多的刷新偏移量,并且移除的VR显示器将需要更少的刷新偏移量。接着在步骤125处,APP 2施加一个(或多个)刷新偏移量以避免对实时资源的需要的冲突,并且然后过程前进至步骤130处的循环退出。然而,如果在步骤115处,未感测到对一个或多个VR显示器的实时资源的竞争需要,那么处理流程跳至步骤130处的退出。每当VR显示器连接或断开,就会触发循环。内容生成循环102并行前进。因此,在步骤135处的开始之后,在步骤140处,APP 1生成用于多个VR显示器(诸如HMD1、HMD2等)的内容。步骤145是使用过程循环100的步骤120和125的结果的条件。如果在步骤145处并未施加一个或多个刷新偏移量(诸如将会是如果仅检测到一个VR显示器的情况),那么循环102前进至步骤150以在没有刷新偏移量的情况下渲染帧,然后前进至步骤155以将渲染的帧递送到单个VR显示器,并且然后返回到步骤140。然而,如果在步骤145处施加一个或多个刷新偏移量(诸如将会是如果检测到多个VR显示器的情况),那么循环跳至步骤160并且在具有一个(或多个)刷新偏移量的情况下渲染帧,之后是步骤150,其中将渲染的帧递送到多个VR显示器(诸如HMD1、HMD2等)。然后循环102循环回到步骤140。

在替代性示例性变型中,处理流程可通过Freesync或一些其他类型的动态刷新程序使用动态刷新。现参见图5,在步骤200处的开始之后,在步骤205处,启用动态刷新。在步骤210处,应用程序(诸如APP 1)生成用于多个VR显示器(诸如显示器HMD1和HMD2)的内容。接着,在步骤215处,应用程序APP 2感测多个VR显示器对实时资源的竞争需要。例如,并且如上所述,APP 2将感测例如HMD1和HMD2的ATW请求以及部分或全部的帧渲染的竞争需要。如果在步骤220处,没有检测到竞争需要,那么处理流程前进至步骤225并且渲染帧,并且然后在步骤230处,将渲染的帧递送到多个VR显示器。步骤230之后返回至步骤210。然而,如果在步骤220处,应用程序APP 2感测到一个或多个VR显示器中的多个VR显示器对实时资源的竞争需要,那么过程前进至步骤235,其中APP 2确定刷新偏移量和动态刷新率以避免对实时资源的竞争需要的冲突。接着在步骤230处,APP 2施加所选择刷新偏移量和动态刷新率以避免对实时资源的需要的冲突,并且此后在步骤245处,利用所选择刷新偏移量和所选择动态刷新率来渲染帧。接着,处理流程分支到步骤230,并且将渲染的帧递送到多个VR显示器。当然,图6和图7中的处理流程可用一个或多个应用程序和操作系统等来完成。换句话讲,可使用各种级别的软件集成和硬件来实现所描述的步骤。

虽然本发明可易于产生各种修改和替代形式,但是具体变型已经在附图中通过举例的方式示出并且已经在本文中详细地描述。然而,应当理解,本发明并不意图限于所公开的特定形式。相反地,本发明涵盖落入如以下所附权利要求限定的本发明的精神和范围内的所有修改、等效物和替代方案。

18页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:用于生成以及编码具有以封包于分段球体投影布局中的投影面表示的360度内容的基于投影帧的方法以及装置

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类