CN112639577A - 基于应用程序渲染性能的预测和限流调整 - Google Patents
基于应用程序渲染性能的预测和限流调整 Download PDFInfo
- Publication number
- CN112639577A CN112639577A CN201980052386.1A CN201980052386A CN112639577A CN 112639577 A CN112639577 A CN 112639577A CN 201980052386 A CN201980052386 A CN 201980052386A CN 112639577 A CN112639577 A CN 112639577A
- Authority
- CN
- China
- Prior art keywords
- level
- frames
- hmd
- frame
- prediction
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/011—Arrangements for interaction with the human body, e.g. for user immersion in virtual reality
-
- G—PHYSICS
- G02—OPTICS
- G02B—OPTICAL ELEMENTS, SYSTEMS OR APPARATUS
- G02B27/00—Optical systems or apparatus not provided for by any of the groups G02B1/00 - G02B26/00, G02B30/00
- G02B27/01—Head-up displays
- G02B27/017—Head mounted
- G02B27/0172—Head mounted characterised by optical features
-
- G—PHYSICS
- G02—OPTICS
- G02B—OPTICAL ELEMENTS, SYSTEMS OR APPARATUS
- G02B27/00—Optical systems or apparatus not provided for by any of the groups G02B1/00 - G02B26/00, G02B30/00
- G02B27/0093—Optical systems or apparatus not provided for by any of the groups G02B1/00 - G02B26/00, G02B30/00 with means for monitoring data relating to the user, e.g. head-tracking, eye-tracking
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/011—Arrangements for interaction with the human body, e.g. for user immersion in virtual reality
- G06F3/012—Head tracking input arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/14—Digital output to display device ; Cooperation and interconnection of the display device with other functional units
- G06F3/147—Digital output to display device ; Cooperation and interconnection of the display device with other functional units using display panels
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/10—Geometric effects
- G06T15/20—Perspective computation
- G06T15/205—Image-based rendering
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T19/00—Manipulating 3D models or images for computer graphics
- G06T19/006—Mixed reality
-
- G—PHYSICS
- G02—OPTICS
- G02B—OPTICAL ELEMENTS, SYSTEMS OR APPARATUS
- G02B27/00—Optical systems or apparatus not provided for by any of the groups G02B1/00 - G02B26/00, G02B30/00
- G02B27/01—Head-up displays
- G02B27/0101—Head-up displays characterised by optical features
- G02B2027/014—Head-up displays characterised by optical features comprising information/image processing systems
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G2340/00—Aspects of display data processing
- G09G2340/04—Changes in size, position or resolution of an image
- G09G2340/0407—Resolution change, inclusive of the use of different resolutions for different screen areas
- G09G2340/0435—Change or adaptation of the frame rate of the video stream
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G2340/00—Aspects of display data processing
- G09G2340/04—Changes in size, position or resolution of an image
- G09G2340/0464—Positioning
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G2354/00—Aspects of interface with display user
Abstract
本文描述的是基于应用程序的渲染性能,在将帧渲染到头戴式显示器(HMD)上时调整预测水平和限流水平的技术。如果在过去的N个渲染帧(N为任何合适的数量)中后到帧的数量达到或超过后到帧的阈值数量,则增加预测水平,这使HMD的合成器预测将来更远的HMD的姿态数据。可以独立于预测水平的增加或与预测水平的增加同步地增加限流水平,以使合成器限流应用程序的帧速率(例如,至HMD刷新率的一个分数)。如果特定数量的连续渲染的帧提早完成渲染,则可以降低预测水平(如果处于相同水平,则可以降低限流水平)。
Description
相关申请的交叉引用
这是PCT申请,其要求2018年8月6日提交的名称为“基于应用程序渲染性能的预测和限流调整”的美国专利申请序列号16/056,277的优先权,在此通过引用将其全部内容合并于此。
背景技术
在视频游戏行业内外都使用虚拟现实(VR)系统。用于VR系统的显示器,如嵌入在VR头戴式耳机中的显示器通常以适合于VR应用程序的最小刷新率操作。例如,90赫兹(Hz)是VR显示器的常用刷新率。在“实时渲染”场景中,基于图形的应用程序,如视频游戏以与显示器的刷新率匹配的帧速率输出用于渲染的帧,这意味着在每次屏幕刷新时显示从应用程序接收到的新帧(本文中被称为“实际帧”)。此类实时渲染场景通常被称为应用程序“形成帧速率”或“达到帧速率”。
实际上,由于各种原因,应用程序并不总是能形成帧速率。例如,应用程序可以间歇性地丢弃帧,和/或应用程序可以以较慢的速率(例如,当理想帧速率为90帧/秒时,以45帧/秒)临时输出帧。在应用程序未形成帧速率的情况下,可以使用一种被称为“仅旋转重投影”的技术以考虑用户头部旋转的方式用重投影的帧替代丢失的帧,使得看起来对用户来说就如同应用程序正在形成帧速率一样。例如,如果没有重投影,则来自应用程序的不足帧速率可能会导致游戏中的卡顿或中断。在VR应用程序中,在用户完全沉浸在虚拟环境中的情况下,如果应用程序未能形成帧速率并且没有重投影来补偿丢失的帧,则用户可能会感到恶心。因此,重投影是一种在应用程序未形成帧速率时允许有更好的用户体验的技术。考虑应用程序以理想帧速率的一半(例如,45帧/秒,其中90帧/秒是理想帧速率)输出帧的实例。在此实例中,可以使用来自最近渲染的实际帧的像素数据对每个其它帧进行重投影,以创建重投影的帧,所述重投影的帧转换场景(例如,通过旋转和重投影计算)以使重投影的场景与用户当前的头部朝向匹配。这使得看起来对用户来说就如同场景以给定用户头部旋转的预期方式移动一样。
尽管仅旋转重投影减轻游戏中的卡顿或中断,但其在头部旋转期间至少在使用低持续性显示器的VR系统中(例如,在显示器在一小部分帧时间内被照亮的情况下)会产生其自己不想要的视觉伪像。例如,尽管仅旋转重投影解决了头部旋转的问题,但它没有考虑场景中帧之间移动或设置动画的对象。对于移动或设置动画的对象,这可能导致发生不想要的视觉伪影,称为“抖动”。抖动使用户感觉到“双重重影效果”,其中运动对象(例如,穿越屏幕移动的子弹或球)似乎在两个位置(或与自身分离)帧与帧之间反弹。因此,当用户在使用重投影的同时旋转他/她的头部时,场景中的任何移动或动画对象将抖动。由于应用程序的渲染性能是不可预测的,因此应用程序的帧速率趋于与显示器的垂直同步(VSync)信号以不同量和在随机时间发生进出相位的移动,并且上述运动对象的抖动对观看用户可能变得不稳定且无法忍受。
本文提供改进和增强这些系统和其它系统的技术解决方案。
附图说明
参考附图描述具体实施方式。在图中,附图标记的最左边的一个或多个数字标识附图标记首次出现的图。在不同附图中使用同一附图标记指示类似或相同的组件或特征。
图1是示出了用于基于应用程序的渲染性能来调整预测和限流水平的示例技术的图。
图2是从概念上示出了可用于存储与应用程序的渲染性能有关的统计信息的示例环形缓冲区的图,该统计信息可用于确定是否以及何时调整预测和限流水平。
图3A和3B示出了根据本文公开的实施例的用于确定在渲染头戴式显示器(HMD)上的帧时是否以及何时增加预测和限流水平的示例过程的流程图。
图4是根据本文公开的实施例的用于确定在渲染HMD上的帧时是否以及何时降低预测和限流水平的示例过程的流程图。
图5示出了可以在其中实施本文所公开的技术的如VR头戴式耳机等可穿戴装置的示例组件。
具体实施方式
本文描述的是基于应用程序的渲染性能,在将帧渲染到头戴式显示器(HMD)上时调整预测水平和限流水平的技术,等等。当应用程序的性能下降时(例如,当应用程序无法形成帧速率时),对预测水平和限流水平的调整会减轻不想要的视觉伪影,所述视觉伪影会显示在HMD上呈现的图像中。
用户可以佩戴HMD,以使用户沉浸在虚拟现实(VR)环境或增强现实(AR)环境中。HMD的一个或多个显示面板基于由应用程序(例如,视频游戏)输出的帧来渲染图像,并且用户通过HMD中包含的光学器件查看这些图像,从而使用户感知到图像,就如同用户沉浸在VR或AR环境中一样。如所提及的,HMD可以利用一种被称为“重投影”的技术来补偿未形成帧速率的应用程序。例如,可以在实际帧之间渲染重投影的帧以实现理想的帧速率,并且可以使用来自近来渲染的实际帧的像素数据生成每个重投影的帧,该实际帧是从应用程序接收的(例如,最近渲染的实际帧)。在重投影的帧中,在前一个实际帧中渲染的场景(例如,通过旋转和重投影计算)以考虑用户头部旋转的方式进行转换。如果应用程序的渲染性能下降到某个点和/或不规律地下降,则不想要的视觉伪影(例如抖动)可能以观看用户无法忍受的方式显现。
本文描述了用于通过实时调整(向上或向下)至预测水平和限流水平来减轻不想要的视觉伪像的技术。预测水平涉及预测未来多远的HMD的一组姿势(姿势数据)。例如,当应用程序形成帧速率时,为应用程序提供姿势数据以供渲染帧使用的合成器可相对于预测所述姿势数据的时间,针对与未来的两个垂直同步(VSync)间隔相对应的时间预测HMD的姿势数据。因此,可以以一个VSync间隔的增量从该基本预测水平增加预测水平,以便合成器能够预测将来更远的姿势数据,例如将来的三个VSync间隔、将来的四个VSync间隔,等等。这也可以视为将帧数调整到未来合成器针对应用程序将要渲染的给定帧预测姿态数据。因此,当应用程序形成帧速率时,合成器可能预测出未来的一帧姿势数据,并且,如果预测水平从该基本预测水平开始提高,则合成器可预测出未来的两帧姿势数据、未来的三帧姿势数据,等等。
以这种方式调整预测水平的示例原因如下。如果应用程序未形成帧速率(例如,采用多个VSync间隔渲染每个帧),则多次使用单个帧向用户显示图像。此外,在预测时间以外的其他时间显示帧使合成器使用重投影来减轻抖动。但是,重投影不考虑帧之间在场景中移动或动画的对象,因此预测有助于减轻在这种情况下使用重投影所引起的不想要的视觉伪像。在说明性实例中,如果帧要用两个VSync间隔进行渲染,则最有可能还将两次使用这些帧向用户显示图像。由于预测的姿势用于单个时间渲染单个帧目标,因此该时间仅在帧用于向用户呈现图像的两次中的一次正确。也就是说,对于其使用的两个时间,时间可能都不正确。例如,如果预测给定帧的姿势数据在未来的一个VSync间隔,并且应用程序使用两个VSync间隔渲染该帧,则该帧将被使用两次以生成两个重投影的帧。通过增加预测水平以预测姿势数据在将来一个额外的VSync间隔(例如,两个VSync间隔),姿势数据在第一次使用该帧时将是正确的,并且在这种情况下,对于单个重投影的帧,将使用该帧一次(而不是两次)。
限流水平涉及使应用程序的帧速率限流的程度。例如,当应用程序正在形成帧速率时,合成器可以限制应用程序的帧速率以匹配HMD的刷新率(例如90Hz)。因此,可以从该基本限流水平以增量方式增加限流水平,以使合成器越来越多地将应用程序的帧速率限流,例如将应用程序的帧速率限流为HMD刷新率的一半、HMD刷新率的三分之一,等等。这也可以视为调整来自应用程序的每个实际帧用于在HMD上呈现图像的次数。因此,当应用程序形成帧速率时,合成器使用应用程序输出的每个帧(例如,每个实际帧)一次,以在HMD上显示相应的图像。如果从该基本限流水平增加了限流水平,则合成器可以使用每个实际帧两次、三次等等,以便在HMD上显示多个对应的图像。例如,如果将应用程序的帧速率限流为HMD刷新率的一半,则来自该应用程序的单个帧可被使用两次,其中至少一次用于生成重投影的帧,其填补应用程序输出的实际帧之间的间隙。
以这种方式调整限流水平的示例原因如下。大多数应用程序不能很好地处理可变帧的变化,并且即使的确正确处理了可变帧的变化,但如果生成的帧在时间上均匀分布,则用户体验会更好,从而创造总体上更平滑的体验。但是,存在介于两者之间的状态,其中渲染帧花费的时间略大于一个VSync间隔。在这种状态下,大多数帧仍显示一次。但是,此操作会级联,使每帧稍晚一点完成,直到单帧显示两次,然后循环开始。这些多次显示的帧有一个阈值,其中与立即开始限流应用程序相比,用户体验更好的是允许级联。因此,当超过此阈值时,增加限流水平会有所帮助。
在示例过程中,使用设置为第一预测水平的预测水平和设置为第一限流水平的限流水平,在HMD上渲染一系列帧中的第一帧。相对于针对第一帧中的各个帧预测姿势数据的时间,第一预测水平使HMD的合成器针对与未来的VSync间隔的第一目标数量(例如,两个VSync间隔)相对应的时间预测HMD的姿势数据。然后,合成器可以确定第一帧的过去的N个渲染帧(N是任何合适的数量)中的后到帧的数量是否满足或超过后到帧的阈值数量。在此,后到帧是比应用程序使用HMD的图形处理单元(GPU)完成渲染所用的VSync间隔的第一目标数量更多的帧。如果后到帧的数量达到或超过后到帧的阈值数量,则合成器可以将预测水平从第一预测水平提高到更高的第二预测水平,然后使用设置为第二预测水平的预测水平渲染一系列帧中的第二帧。与第一预测水平相比,第二预测水平可以使合成器预测将来更远的时间的姿势数据。例如,在第二预测水平上,合成器可以针对对应于将来的第二目标数量的VSync间隔的时间预测姿势数据,例如三个VSync间隔,其大于第一目标数量的VSync间隔(例如,两个VSync间隔)。
可以独立于预测水平的增加,或与预测水平的增加同步地,增加限流水平。当限流水平独立于预测水平的增加而增加时,可以基于确定过去的M个渲染帧(M为任何合适的数量)中的过度呈现的帧的数量满足或超过过度呈现的帧的阈值数量来增加限流水平。在此,过度呈现的帧是当前限流水平下使用次数超过目标次数的帧。例如,第一限流水平可以使合成器限流应用程序的帧速率以匹配HMD的刷新速率,这意味着单个帧成为目标以使用一次(第一目标次数)以在HMD上呈现对应的图像。在这种情况下,过度呈现的帧是超过一次(超过第一目标次数)用于在HMD上呈现相应图像的帧。基于确定过去的M个渲染帧中的过度呈现的帧的数量满足或超过过度呈现的帧的阈值数量,可以将限流水平从第一限流水平增加到第二限流水平,从而使合成器将应用程序的帧速率限流到HMD刷新率的一个分数(例如,刷新率的一半)。否则,无论何时增加预测水平,都可以与预测水平同步地增加限流水平。
如果应用程序在比当前预测快至少一个VSync间隔完成渲染的意义上“提早”完成渲染过去P个连续渲染的帧(P为任何合适的数字),则可降低预测水平。例如,如果当前预测水平设置为导致合成器预测未来三个VSync间隔中HMD的姿态数据的第二预测水平,则如果应用程序在不超过两个VSync间隔完成了渲染帧,则认为帧已提早完成渲染。只要限流水平等于预测水平,则限流水平可以与预测水平的降低同步地降低;否则,如果限流水平小于预测水平,则按原样保留限流水平。
本文还公开了系统,例如,所述系统包含被配置成实施本文所公开的技术和过程的显示系统(如HMD)以及存储用于实施本文所公开的技术和过程的计算机可执行指令的非暂时性计算机可读介质。尽管通过举例在视频游戏应用程序,并且具体地VR游戏应用程序的上下文中讨论了本文所公开的技术和系统,但应当理解的是,本文所描述的技术和系统可以为其它应用程序提供益处,包含但不限于非VR应用程序(例如,AR应用程序)和/或非游戏应用程序,如工业机器应用程序、国防应用程序、机器人应用程序等。
图1是示出了用于基于应用程序的渲染性能来调整预测和限流水平的示例技术的图。图1描绘了用户102佩戴的头戴式显示器(HMD)100。HMD 100是可以实施所公开的技术的示例“显示系统”,尽管“显示系统”的其他类型和/或实施方式可以受益于本文所述的技术。在图1的示例中的HMD 100可以包括多个显示面板,例如一对立体感显示面板中的左显示面板和右显示面板。这些显示面板可以用于呈现一系列图像帧(在本文中称为“帧”),佩戴HMD100的用户102可以看到这些图像帧。尽管以两面板HMD 100描述实例,但是应当理解,HMD 100可以包括单个显示面板,或者包括两个以上的显示面板。因此,如本文所使用的术语“显示面板”可以是指两面板HMD 100的一对显示面板中的显示面板,或者可以指具有任何数量的显示面板的HMD 100(例如,单面板HMD 100或多面板HMD 100)的单个显示面板。在两面板HMD 100中,立体感帧缓冲区可以在HMD 100的两个显示面板上渲染例如2160×1200像素(例如,每个显示面板1080×1200像素)。
HMD 100可以包括利用任何合适类型的显示技术的显示面板,例如在HMD 100的显示面板上呈现帧期间利用发光元件来发光的发光显示器。作为实例,HMD 100的显示面板可以包括液晶显示器(LCD)、有机发光二极管(OLED)显示器、无机发光二极管(ILED)显示器或利用适合的显示技术用于HMD应用程序的任何其它合适类型的显示器。在一些实施例中,HMD 100的显示系统可以是低持久性显示系统,这意味着对于用于在显示面板上渲染图像的每个帧,发光元件在帧时间的一小部分(例如,在11.11ms的帧时间之中的大约1毫秒(ms))内发光。
HMD 100可以表示VR系统中使用的,如与VR游戏系统一起使用的VR头戴式耳机。然而,HMD 100可以另外地或可替代地被实施为AR头戴式耳机以用于AR应用程序。在AR中,用户102看到覆盖在真实世界环境上的虚拟对象,而在VR中,用户102看不到真实世界环境,而是完全沉浸在虚拟环境中,如通过HMD 100的显示面板和光学器件(例如,透镜)感知到的那样。本文所描述的实例主要涉及基于VR的HMD 100,但是应当理解的是,HMD 100不限于在VR应用程序中的实施方案。
通常,在计算装置,如HMD 100本身或与HMD 100相关联并且耦合到其的计算装置(例如,个人计算机(PC)、游戏控制台等)上执行的应用程序104可以被配置成输出一系列帧106(1)、106(2)、106(3)等等(统称为106)。一系列帧106最终呈现在HMD 100的显示面板上。在一些实施例中,利用屏幕外渲染,使得可以在将帧106渲染到HMD 100的显示面板上之前将其渲染到目标。因此,如本文中所使用的,“渲染”可以包括渲染到显示器以外的目标以及在显示器自身上渲染之前渲染到目标,和/或在显示器上渲染(例如在没有在屏幕外渲染到不同目标或在屏幕外渲染到不同目标之后的情况下)。
图1的实例描绘了图形处理单元(GPU)时间线108上的三个示例帧106(1)、106(2)和106(3),以示出时间选择如何可以在完成渲染的帧106和HMD 100的垂直同步(VSync)信号110之间变化。这里,应用程序104首先在GPU时间轴108上从左到右依次渲染帧106(1),然后渲染帧106(2),然后渲染帧106(3)。GPU时间线108还示出了在每个VSync间隔116的末尾处HMD 100的合成器114的渲染工作量112。
通常,HMD 100的显示系统可以利用VSync信号110来将与显示相关的事件同步到显示器的刷新周期。例如,如果HMD 100具有90Hz的刷新率,则VSync信号110以每秒90次的速率脉动。在90Hz的刷新速率下,VSync间隔116大约为11.11ms长。有时将90Hz HMD 100的VSync间隔116称为11ms间隔,尽管可以理解,对于90Hz的显示系统,VSync间隔116可以计算为1000ms÷90,并且在VSync间隔116的边界处的VSync信号110(1)表示HMD 100的一个或多个显示面板的闪烁(例如,当面板打开并且用户102看到图像时),这可在与帧时间或VSync间隔116的时间相比非常小的一段时间发生,尽管图1将VSync信号110图示为GPU时间线108上的瞬时时间点。
图1中所示的帧106在它们从应用程序104输出的意义上旨在表示“实际”帧,所述应用程序可以表示视频游戏应用程序或任何其他类型的基于图形的应用程序。可以在将像素数据输出到帧缓冲区以渲染各个帧106的图形管线中执行应用程序104。在一些实施例中,用于每个帧106的像素数据可以包括每个像素值(例如,颜色值)的二维阵列。在一些实施例中,像素数据还包括附加数据或元数据,例如深度值。在一些实施例中,像素数据可以包括由单组颜色和α值(例如,红色通道的一种颜色值、绿色通道的一种颜色值、蓝色通道的一种颜色值,以及一个或多个α通道的一个或多个值)表示的每个像素的数据。该像素数据可以被输出到帧缓冲区,以期望的视觉效果呈现在HMD 100的显示面板上的图像上。
在运行期间,HMD 100的头部跟踪模块可以生成关于HMD 100的定位和姿态的数据。合成器114被配置为预测在将来的某个时间的HMD 100的姿势数据(例如,一组姿势),并将该预测的姿势数据提供给应用程序104,以通知应用程序104如何根据用户102预测的头部位置/姿势渲染一系列帧106中的下一帧106。合成器114预测在将来时间的HMD 100的姿势数据而不是HMD 100的当前姿势的原因是因为给定的帧106(假设应用程序104正在形成帧速率)实际上将被呈现为在将来的某个时间(例如,在将姿势数据提供给应用程序104的时间之后约25毫秒)在HMD 100的显示面板上的图像。也就是说,具有对应于给定帧106的像素数据的显示器实际上在将姿势数据提供给用于渲染该帧106的应用程序104之后约25ms发射用于该帧106的光子。预先将姿势数据提供给应用程序104允许应用程序104以使用户104相信他/她正在围绕包括对象(静态对象和移动对象)的虚拟环境进行观察的方式输出用于在HMD 100上渲染图像的像素数据。如果应用程序正在形成帧速率,则静态对象和移动对象都被认为以预期的方式在场景内与用户102的头部运动一起运动。
HMD 100的图形逻辑可以是异步的或同步的。在异步系统中,合成器114在HMD 100的GPU上与应用程序104分开运行(在分开的异步线程上)。例如,合成器114可以向应用程序104提供姿势数据(被预测为VSync 3 110(3))以用于渲染帧106(1)。假设应用程序104在合成器的工作量112(1)开始之前完成渲染,则合成器114被配置为从应用程序104获取帧106(1)(例如,左图像帧和右图像帧)并使帧106失真到HMD 100的显示面板上的后面缓冲区中。例如,在基于应用程序104输出的帧106(1)在HMD 100上渲染最终图像之前,合成器114可以执行色度失真、面板遮罩等。合成器114可以在高优先级语境模式下执行,这意味着当合成器114开始其下一个工作量112(1)的时候,GPU驱动器允许合成器114抢占应用程序104(例如,通过如果仍在渲染框架106,则中断应用程序104的渲染,和/或阻止应用程序104开始渲染下一帧106)。无论应用程序104发生了什么,合成器114均可在每个VSync间隔116的末尾分配一个时隙(平均最多1ms)来完成其工作112。因此,在每个VSync信号110处,合成器114渲染“某物”,其含义是合成器114获得了它可以从应用程序106获得的最佳帧106(例如,刷新的/新的帧106或先前渲染的帧106),并且合成器114使用与该帧106相关联的像素数据将像素数据放入帧缓冲区中,以在HMD 100的显示面板上输出。
在一些实施例中,合成器114可以在恒定缓冲区中复制当前值,以确定在下一VSync信号110处使用什么帧106进行渲染。也就是说,合成器114可以获取与恒定缓冲区中的值相对应的帧106,确定帧106所针对的帧是哪个VSync信号110,并且如果与下一个即将到来的VSync信号110不同,则合成器114可以利用重投影来修改帧106的像素数据以匹配为下一个VSync信号110预测的姿势数据。无论什么情况,合成器114的对于每个VSync间隔116输出不同的像素数据的能力是一种使所有内容保持“实时”并在应用程序104不形成帧速率时防止HMD 100上呈现的图像出现严重中断的机制。
在图1的实例中,考虑应用程序104刚刚完成渲染帧106(0)(未示出)并且准备开始渲染帧106(1)的情况。在该时间点,应用程序104可以调用函数以从合成器114接收姿势数据,以用于渲染帧106(1)。相对于预测第一帧106(1)的姿势数据的时间,合成器在设置在第一水平的当前预测水平(例如,预测水平=0)下针对与将来的VSync间隔116的第一目标数量相对应的时间预测HMD 100的姿态数据,该第一目标数量可以是未来的两个VSync间隔116。例如,合成器114可以在与VSync 3 110(3)相对应的时间根据HMD 100的预测的未来姿势来预测HMD 100的姿势数据。例如,106(1)可以在VSync 2 110(2)处开始扫描,并且可能需要另一个完整的VSync间隔116以在显示面板被照亮之前加载到HMD 100的显示面板中。如果HMD 100使用滚动照明(而不是全局闪烁照明)显示–这意味着从显示面板发出的光子在被扫描出显示器时(在短的稳定时间之后)在VSync间隔116的子集上从上到下扫描,合成器114可以预测与扫描时间的中点相对应的时间内的HMD 100的姿势数据,使得用户视野中心的元素最稳定。
应用程序104可以使用该姿势数据来根据姿势数据渲染帧106(1)。一旦合成器114完成对前一帧106(0)(未示出)的工作112(0),应用程序104就可以开始渲染帧106(1)。可选地,在HMD 100的GPU支持多个计算资源的同步系统中,合成器114可以在第一计算资源上执行其工作112,并且在合成器114执行其112的同时应用程序104可以在第二计算资源上开始渲染。无论如何,图1示出了应用程序104在为合成器工作112(1)安排的时间之前完成渲染帧106(1)以达到VSync 2 110(2)的实例。在完成帧106(1)的渲染之后,应用程序104可以在GPU上的恒定缓冲区中增加单个整数。该恒定缓冲区可以存储与最近渲染的帧106相对应的多个帧(例如,具有0、1和2的整数的3个帧)的数据。合成器114可以基于恒定缓冲区中的整数的值获得准备使用的最新帧。合成器114可以复制整数值并使用复制的索引值维护恒定缓冲区,该值用于合成器工作量112(1),并且在目标VSync 2 110(2)之前完成帧106(1)的渲染。
当合成器114完成其工作112(1)时,合成器114可以将恒定缓冲区复制到HMD 100的CPU,这允许HMD 100的CPU确定对应于恒定缓冲区索引的帧106(1)在VSync 2 110(2)处渲染。以这种方式,合成器114可以通过在120处跟踪应用程序104完成渲染帧106(1)所花费的VSync间隔116的数量来监视在118处的应用程序的渲染性能。在这种情况下,应用程序116花费一个VSync间隔116来渲染帧106(1)。合成器114还可以通过在122处跟踪使用帧106(1)在HMD 100上呈现一个或多个图像的次数来监视应用程序在118的渲染性能。在这种情况下,帧106(1)被使用两次以在HMD 100上呈现两个相应的图像。这是因为应用程序104在合成器114为VSync 3 110(3)执行其工作112(2)的计划时间之前未完成渲染下一帧106(2),因此,合成器114从对应于帧106(1)的恒定缓冲区中获取最新值,确定帧106(1)是针对VSync 2 110(2),并实施重投影以使用重投影变换修改帧106(1)的像素数据,以在VSync 3110(3)处渲染重投影(基于帧106(1))的帧,该帧已针对为VSync 3 110(3)预测的姿势数据进行了调整。在下一个VSync间隔116,当合成器114开始其工作112(3)时,合成器114可以从与帧106(2)相对应的恒定缓冲区中获得最新的整数值,可以确定帧106(2)针对VSync 3110(3),并且可以在VSync 4 110(4)生成重投影的帧(基于帧106(2))。
随着呈现一系列帧106,这可以继续,其中合成器114基于从应用程序104输出的帧106确定如何在HMD 100上呈现像素数据。以这种方式,合成器114可以在118处连续监视应用程序渲染性能,并且可以跟踪统计信息,诸如在框120和122处所示的那些。
在124处,合成器114可以根据应用程序104的渲染性能来调整预测水平126和/或限流水平128,如从在框120和122处跟踪的统计信息所确定的。图1的实例示出了如何使用相同的标度(例如,0至3,代表第一水平、第二水平、第三水平和第四水平)独立地调节预测水平126和限流水平128。以这种方式,如果预测水平126被设置为第一水平(例如,0)并且限流水平128被设置为第一水平(例如,0),则预测水平126和限流水平128被认为是设置为同一水平。这些水平可以是递增的,使得第一水平(例如0)代表最小水平,并且该水平可以递增到第二水平(例如1),然后到第三水平(例如2),并且然后到第四水平(例如3),其可以代表最大水平,超过该最大水平就不能进一步增加预测水平126和限流水平128。然而,应当理解,最大水平形式的限制是可选的,并且理论上预测水平126和限流水平128可以从基本水平调整到无数个更高水平。也就是说,在实践中,给定HMD 100传感器(例如跟踪方法)和人体生理的限制,提高预测水平126的能力固有地受到有效预测未来的能力的限制。这也是VSync间隔116的函数(例如,较高的原始帧速率HMD 100具有较短的VSync间隔116,这导致较高的最大值以实现类似的预测限制)。
如所提及的,预测水平126涉及预测未来多久的HMD 100的一组姿势(姿势数据)。例如,当预测水平126被设置为第一水平(例如,0)时,合成器114可以相对于预测姿势数据的时间预测未来与两个VSync间隔116相对应的时间的HMD 100的姿势数据。在图1的实例中,这意味着合成器114可以预测在对应于VSync 3 110(3)的时间的姿势数据,并且将该姿势数据提供给应用程序104以渲染帧106(1)。限流水平128涉及使应用程序104的帧速率限流的程度。例如,当限流水平128被设置为第一水平(例如,0)时,合成器114可以限流应用程序104的帧速率以匹配HMD的刷新率(例如,90Hz)。这些水平可以从水平0逐渐增加到水平1、2和3,以便进一步预测出姿势数据并以更大程度限制应用程序104。例如,将预测水平126从第一水平(例如,0)增加到第二水平(例如,1)可以使合成器114针对与未来的增加数量的VSync间隔116(例如三个VSync间隔116)相对应的时间预测HMD 100的姿势数据。在图1的实例中,这意味着合成器114可以针对对应于VSync 4 110(4)的时间预测姿势数据,并且将该姿势数据提供给应用程序104以渲染帧106(1)。在限流方面,从第一限流水平(例如0)增加到第二限流水平(例如1)可导致合成器114将应用程序104的帧速率限流为HMD 100的刷新率的一个分数(例如,刷新率的一半)。对于90Hz的HMD 100,这将意味着第二限流水平(例如1)可将应用程序限流为每秒45帧。完成此操作后,即使应用程序104在较早的时间请求姿势数据,合成器也可延迟向应用程序104提供请求的姿势数据,从而迫使应用程序104将其帧输出减慢到应用程序104可以具有更容易的时间满足的可预测的帧速率。
图2是概念上示出示例环形缓冲区200(1)、200(2)和200(3)的图,其可以用于存储与应用程序104的渲染性能有关的统计信息,诸如描述为在图1的框120和122处被跟踪的统计信息。即,环形缓冲区200或用于该问题的任何类型的存储器或存储元件可用于跟踪应用程序104完成渲染每个帧106所花费的VSync间隔116的数目以及每帧106被用来在HMD100上呈现一个或多个对应图像的次数等统计信息。利用这些统计信息,合成器114可以确定多少个渲染的帧106是“后到帧”,多少个渲染的帧106是“过度呈现的帧”,和/或多少个渲染的帧106是“先到帧(early frame)”。这些确定可以与三个示例规则(规则#1、规则#2和规则#3)一起使用,以确定是否以及何时独立调整预测水平126和限流水平128。
规则#1用于确定是否以及何时将预测水平126增加一个增量。在此,示例规则#1说,如果最后五个渲染的帧106中的两个是“后到帧”,则将预测水平126增加一个增量。“后到帧”是比应用程序104使用HMD 100的GPU完成渲染所用的VSync间隔116的第一目标数量更多的帧106。例如,如果预测水平126当前被设置为第一水平(例如,0),则VSync间隔116的目标数量可以是一个VSync间隔116,这意味着应用程序104应该在一个VSync间隔116内完成渲染每个帧106。在这种情况下,如果应用程序104在一个VSync间隔116内未完成渲染帧106,则该帧106被视为“后到帧”。类似地,当预测水平126当前被设置为第二水平(例如1)时,VSync间隔116的目标数量可以是两个VSync间隔116,这意味着应用程序104应该在两个VSync间隔116内完成渲染每个帧106。因此,帧的延迟是相对于其要完成渲染的VSync间隔116的目标数量而言。在图2的实例中,示例规则#1仅是示例,并且可以利用其他比率。因此,规则#1通常可以陈述为:如果过去的N个渲染的帧中的后到帧的数量达到或超过后到帧的阈值数量,则将预测水平126增加一个增量。这里的实例是过去五个渲染的帧中的两个。
规则#2用于确定是否以及何时将限流水平128增加一个增量。在此,示例规则2表示,如果最后二十个渲染的帧106中的三个是“过度呈现的帧”,则将限流水平128增加一个增量。“过度呈现的帧”过度呈现的帧是被使用了超过目标次数以在HMD 100上呈现多个对应图像的帧106。例如,如果限流水平128当前被设置为第一水平(例如,0),则由于应用程序104的帧速率被限流以匹配HMD 100的刷新率,因此每个帧将被使用的目标次数可以是一次,并且,每个帧106成为目标以便每个VSync间隔116使用其一次。在这种情况下,如果应用程序104没有形成帧速率,并且给定的帧106被使用两次(一次作为新帧,一次用于重投影的帧),则将该帧106视为“过度呈现的帧”。类似地,当限流水平128当前被设置为第二水平(例如1)时,由于应用程序104的帧速率被限流为HMD 100的刷新率的一半,因此每个帧将被使用的目标次数可以是两次。在图2的实例中,示例规则#2仅是示例,并且可以利用其他比率。因此,规则#2通常可以陈述为:如果过去的M个渲染的帧中的过度呈现的帧数量达到或超过过度呈现的帧的阈值数量,则将限流水平128增加一个增量。这里的实例是过去二十个渲染的帧中的三个。
规则#3用于确定是否以及何时将预测水平126降低一个增量。在此,示例规则3表示,如果最后30个连续渲染的帧是“先到帧”,则将预测水平126降低一个增量。“先到帧”是应用程序104在以至少一个VSync间隔116击败当前预测的意义上应用程序104提前完成渲染的帧106。例如,如果预测水平126当前被设置为第二水平(例如1),则应用程序104的目标是在三个VSync间隔116内完成渲染每个帧106。在这种情况下,如果应用程序104用不超过两个VSync间隔116来完成使用HMD 100的GPU渲染给定帧106,则该帧106被视为“先到帧”。如果预定数量的渲染的帧(过去的P个连续渲染的帧)满足此标准,则认为应用程序104的性能足以证明降低预测水平126是合理的。此处的实例是过去的30个连续渲染的帧,但是任何合适的数量都可以用于规则#3。
本文所描述的过程被展示为逻辑流程图中的框集合,所述过程表示可以以硬件、软件、固件或其组合(即,逻辑)实施的操作序列。在软件的上下文中,框表示计算机可执行指令,当由一个或多个处理器执行时,所述计算机可执行指令执行操作。通常,计算机可执行指令包含执行特定功能或实施特定抽象数据类型的例程、程序、对象、组件、数据结构等。所描述的操作顺序不旨在被解释为是限制性的,并且任何数量的所描述的框可以以任何顺序和/或并行组合以实施过程。
图3A和3B示出了根据本文公开的实施例的用于确定在渲染HMD上的帧时是否以及何时增加预测和限流水平的示例过程300的流程图。为了讨论目的,参考前面的图描述了过程300。
在302处,HMD 100的逻辑(例如,包括合成器114的逻辑)可以使用设置为第一水平的预测水平126和设置为第一水平的限流水平128(即,使用相同标度将预测水平126和限流水平128设置为相同)渲染在HMD 100上的一系列帧106中的第一帧106。在HMD 100启动时,此相同水平可以是最低水平。在这种情况下,最小限流水平(例如,0)使合成器114将应用程序104的帧速率限流以匹配HMD 100的刷新速率,使得第一帧中的各个单独的帧成为目标以使用一次以在HMD 100上显示相应的图像。在实例中,最小限流水平128可以将应用程序104的帧速率限流为每秒90帧,以匹配90Hz HMD 100。相对于预测第一帧106中的各个单独帧的姿态数据的时间,最小预测水平126可以使合成器114针对与将来的两个VSync间隔116相对应的时间预测HMD 100的姿态数据。当在框302处当前未将预测水平126和限流水平128设置为最小水平(例如,水平1)时,可以利用不同的目标来渲染一系列帧106。也就是说,在被设置为第一预测水平(例如,1)的预测水平126下,合成器114可以针对与将来的VSync间隔116的第一目标数量(例如,将来的两个VSync间隔)相对应的时间预测HMD100的姿势数据。在设置为第一限流水平(例如,1)的限流水平128下,合成器114可以相对于HMD 100的刷新率对应用程序104的帧率进行限流,使得第一帧中的各个单独的帧成为目标以使用第一目标次数(例如两次)以在HMD 100上呈现多个对应图像。如果应用程序104被限流为HMD 100刷新率的一半,则目标次数为“两次”。在任何情况下,如果合成器114确定预测水平126和限流水平128被设置为相同水平,则无论该水平是什么,逻辑都可以从框302继续。
在304处,可以做出关于预测水平126(或限流水平128)是否已经增加到最大水平(例如4)的确定。如果预测水平126(或限流水平128)已被最大化,则过程300可以遵循从框304开始的“是”路线以在框302处重复第一帧的渲染,而无需进一步增加水平126和128。另一方面,如果预测水平126(或限流水平128)尚未增加到其最大水平,则过程300可以遵循从框304到框306的“否”路线。
在306处,合成器114可以追踪与第一帧相关联的第一统计信息,因为它们在框302处被渲染,并且可以将这些第一统计信息存储在存储器(例如,一个或多个环形缓冲区200)中。以这种方式,可以保持渲染的帧的历史以及它们的统计信息,这些统计信息例如涉及应用程序104完成渲染每个帧106所花费的VSync间隔116的数量,如框308所示;每个帧106用于在HMD 100上呈现图像的次数,如框310所示;以及可能还有其他统计信息。
在312处,至少部分地基于在框306处跟踪和存储的第一统计信息,合成器114可以确定过去的N个渲染的帧106中的后到帧的数量,N为任何合适的数。对于N=5,在框312处的确定可以是对过去的五个渲染的帧中的后到帧的数量进行计数。
在314处,合成器114可以确定在框312处计数的后到帧的数目是否满足或超过后到帧的阈值数。在实例中,后到帧的阈值数可以是两个后到帧,使得如果在过去的五个渲染的帧中的两个是后到帧,则在框314处满足阈值。再次,“后到帧(late frame)”是比应用程序104使用HMD 100的GPU完成渲染所用的VSync间隔116的第一目标数量更多的帧,该目标数量基于当前预测水平126。对于第一预测水平(例如0),VSync间隔116的目标数量可以是一个VSync间隔116,因此在框312和314处将在一个以上VSync间隔116中完成渲染的任何帧视为后到帧。如果在框314处不满足阈值,则过程300可以遵循来自框314的“否”路线以在框302处重复一系列帧106的渲染,而无需增加预测水平126或限流水平128。然而,如果合成器114确定在框312处计数的后到帧的数目满足或超过后到帧的阈值数目,则过程300可以遵循从框314到框316的“是”路线。
在316处,合成器114可以确定是否启用运动平滑。如本文中所使用的,“运动平滑”可指一种图形处理技术,其使用由GPU的视频编码器生成的运动矢量来在渲染之前修改第一帧的至少一个子集的像素数据。因此,如果启用了在渲染之前使用来自GPU的运动矢量来修改帧的特征,则过程300可以遵循从框316到框318的“是”路线。
在318处,合成器114可以同步地将预测水平126和限流水平128两者增加一个增量。即,预测水平126可以从第一预测水平增加到第二预测水平,并且限流水平128可以与预测水平126的增加同步地从第一限流水平增加到第二限流水平。如在本文中所使用的,“同步”不一定意味着同时,而是“一起”或者不用独立地确定是否增加限流水平128。换句话说,每当启用运动平滑时,限流水平128就与预测水平126一起增加。
在320处,合成器114可以清除(例如,从中删除数据)保持与第一帧相关联的第一统计信息的存储器(例如,一个或多个环形缓冲区200),并且过程300通过返回至框302进行重复,其中帧106系列中的第二帧在HMD 100上被渲染,这次使用被设置为增加的预测水平的预测水平126和被设置为增加的限流水平的限流水平128。例如,如果预测水平126和限流水平128同步地从第一水平(例如,0)增加到第二水平(例如,1),则可以将在框320之后在框302处渲染的第二帧用合成器114渲染,针对与将来的第二目标数量的VSync间隔116(例如,三个VSync间隔)相对应的时间预测HMD 100的姿势数据,并且可以相对于HMD 100的刷新率对应用程序104的帧速率限流,以便将在框302渲染的第二帧中的各个帧作为目标以使用第二目标次数(例如两次)以在HMD 100上显示相应的图像。除了清除环形缓冲区200之外,还可以跟踪合成器114指示应用程序104生成的下一帧ID。这允许环形缓冲区200从具有被跟踪的帧ID的帧开始,开始跟踪第二统计信息。可以这样做以使得在框318处在改变预测水平126和限流水平128之后已经在飞行中的其他帧被忽略(即,忽略没有应用新值的帧)。
返回框316,如果在框316确定运动平滑被禁用,则在过去的N个渲染帧上已经计数了阈值数目的后到帧之后,过程300可以遵循从框316到框322的“否”路线。应当理解,可以在不执行决策框316处的操作的情况下执行过程300(即,可以从过程300中省略框316)。因此,在一些实施例中,过程300可以遵循从框314直接到框322的“是”路线,而无需执行关于框316、318和320所描述的操作。
在322,合成器114可以将预测水平126增加一个增量而不增加限流水平128。例如,预测水平126可以从第一预测水平增加到第二预测水平,并且限流水平128可以保持在第一限流水平。
在324处,合成器114可以清除(例如,从中删除数据)保持与第一帧相关联的第一统计信息的存储器(例如,一个或多个环形缓冲区200),并且过程300在图3B中继续,如由图3A和3B中的页面外参考“A”所示。除了清除环形缓冲区200之外,还可以跟踪合成器114指示应用程序104生成的下一帧ID。这允许环形缓冲区200从具有被跟踪的帧ID的帧开始,开始跟踪第二统计信息。可以这样做以使得在框322处在改变预测水平126之后已经在飞行中的其他帧被忽略(即,忽略没有应用新值的帧)。
在326处,一系列帧106中的第二帧被渲染在HMD 100上,这次使用被设置为增加的预测水平的预测水平126和保持不变的限流水平128。例如,如果预测水平126从第一预测水平(例如,0)增加到第二预测水平(例如,1),则可以用合成器114渲染在框324之后在框326处渲染的第二帧,针对与将来的第二目标数量的VSync间隔116(例如,三个VSync间隔)相对应的时间预测HMD 100的姿势数据。同时,在限流水平128不变的情况下,可以相对于HMD100的刷新率继续限流应用程序104的帧率,使得应用程序104的帧率与HMD 100的刷新率匹配,并且第二帧中的单个帧仍成为目标以使用第一目标次数(例如一次)以在HMD 100上呈现对应图像。
在328处,合成器114可以追踪与第二帧相关联的第二统计信息,因为它们在框326处被渲染,并且可以将这些第二统计信息存储在存储器中(例如,一个或多个环形缓冲区200,其已经在预测水平增加之前清除了存储的数据)。这些第二统计信息可以包括但不限于,应用程序104完成渲染每个帧106所花费的VSync间隔116的数量,如框330所示;每个帧106用于在HMD 100上呈现图像的次数,如框332所示;以及可能还有其他统计信息。
在334处,至少部分地基于在框328处跟踪和存储的第二统计信息,合成器114可以确定过去的M个渲染的帧中的过度呈现的帧的数量,M为任何合适的数。对于M=20,在框334处的确定可以是对过去的二十个渲染的帧中的过度呈现的帧的数量进行计数。
在336处,合成器114可以确定在框334处计数的过度呈现的帧的数目是否满足或超过过度呈现的帧的阈值数。在实例中,过度呈现的帧的阈值数可以是三个过度呈现的帧,使得如果在过去的二十个渲染的帧中的三个是过度呈现的帧,则在框336处满足阈值。再次,“过度呈现的帧”是被使用了超过目标次数以在HMD 100上呈现多个对应图像的帧,该目标次数基于当前的限流水平128。对于第一限流水平(例如,0),目标次数可以是一次(一次),因此不止一次用于在HMD 100上呈现多个对应图像的任何帧都在框334和336被视为过度呈现的帧。如果在框336处不满足阈值,则过程300可以遵循来自框336的“否”路线以在框326处重复一系列帧106的渲染,而无需增加限流水平128。然而,如果合成器114确定在框334处计数的过度呈现的帧的数目满足或超过过度呈现的帧的阈值数目,则过程300可以遵循从框336到框338的“是”路线。
在338处,合成器114可将限流水平128增加一个增量而不增加预测水平126。例如,限流水平128可以从第一限流水平增加到第二限流水平,并且预测水平126可以保持在其现有水平,这意味着将预测水平126和限流水平128带到相同的水平(例如1)。
在340处,合成器114可以清除(例如,从中删除数据)保持与第二帧相关联的第二统计信息的存储器(例如,一个或多个环形缓冲区200),并且过程300在图3A中继续,如由图3A和3B中的页面外参考“B”所示。相应地,取决于应用程序104的渲染性能,过程300可以重复,增加预测水平126和限流水平128,有可能直至最大水平。例如,在将预测水平126和限流水平128增加一之后,可以在框302处渲染一系列帧106中的第二帧或第三帧,并且逻辑可以重复以确定是否增加预测水平126或同步增加预测水平126和限流水平128。
图4是根据本文公开的实施例的用于确定在渲染HMD 100上的帧时是否以及何时降低预测和限流水平的示例过程400的流程图。为了讨论目的,参考前面的图描述了过程400。
在402处,合成器114可以确定是否提早地连续渲染了足够数量的帧。也就是说,在402处,合成器114可以确定过去的P个连续渲染的帧(P是任何合适的数目)是否花费了不超过应用程序104完成渲染的特定时间量(就VSync间隔116而言)。在此,特定时间量基于当前预测水平126。例如,如果预测水平126先前已增加到第一预测水平(例如,1),其中合成器114针对对应于未来的三个VSync间隔116的时间预测HMD 100的姿势数据,则先到帧是应用程序104在两个VSync间隔116内完成渲染的帧。同样,如果预测水平126处于第二预测水平(例如,2),其中合成器114针对对应于未来的四个VSync间隔116的时间预测HMD 100的姿势数据,则先到帧是应用程序104在三个VSync间隔116内完成渲染的帧。如果在框402处确定没有足够数量的连续渲染的先到帧,则过程400可以遵循来自框402的“否”路线以重复确定是否已经有足够数量的先到帧已被连续渲染。一旦足够提早连续渲染了足够数量(例如,过去的P个帧),则过程400可以遵循从框402到框404的“是”路线。
在404处,合成器114可以确定当前是否将预测水平126和限流水平128设置为相同水平(例如,均设置为第三水平2)。如果当前将预测水平126和限流水平128设置为相同水平,则过程400可以遵循从框404到框406的“是”路线。
在406处,合成器114可以同步地将预测水平126和限流水平128两者减小一个减量。即,预测水平126可以从第三预测水平减小到第二预测水平,并且限流水平128可以与预测水平的减小同步地从第三限流水平减小到第二限流水平。
返回框404,如果当前未将预测水平126和限流水平128设置为相同水平(例如,将限流水平128设置为比当前预测水平128低一个水平),则过程400可遵循从框404到框408的“否”路线。
在408处,合成器114可以将预测水平126降低一个减量,而不降低限流水平128。例如,预测水平126可以从第三预测水平降低到第二预测水平,这意味着预测水平126和限流水平128被带到相同水平。以这种方式,如果将限流水平128设置为相同水平,则其随着预测水平126而减小。
图5展示了根据本文所公开的实施例的可以嵌入的如VR头戴式耳机等HMD 500的示例组件。HMD 500可以与先前图中引用的HMD 100相同或类似,并且因此图5中所示的HMD500的组件可以在HMD 100中实施。HMD 500可以被实施为用户102(例如,在用户102的头部)要佩戴的独立装置。在一些实施例中,HMD 500可以是可头戴的,如通过允许用户102使用尺寸被设计成安装在用户102的头部周围的固定机构(例如,可调节带)将HMD500固定在他/她的头部。在一些实施例中,HMD 500包括包含一个近眼显示器或多个近眼显示器的虚拟现实(VR)或增强现实(AR)头戴式耳机。如此,术语“可穿戴装置”、“可穿戴电子装置”、“VR头戴式耳机”、“AR头戴式耳机”和“头戴式显示器(HMD)”在本文可以互换使用,以指代图5的装置500。然而,应当理解的是,这些类型的装置仅仅是HMD 500的实例,并且应当理解的是,HMD500可以以各种其它形状因子来实施。
在所展示的实施方案中,HMD 500包含一个或多个处理器502和存储器504(例如,计算机可读介质504)。在一些实施方案中,(一个或多个)处理器502可以包含中央处理单元(CPU)、图形处理单元(GPU)503、CPU和GPU 503两者、微处理器、数字信号处理器或本领域已知的其它处理单元或组件。可替代地或另外,本文所述的功能可以至少部分地由一个或多个硬件逻辑组件执行。通过举例而非限制性地,可以使用的硬件逻辑组件的说明性类型包含现场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、片上系统(SOC)、复杂可编程逻辑装置(CPLD)等。另外地,一个或多个处理器502中的每一个可以拥有自己的本地存储器,其也可以存储程序模块、程序数据和/或一个或多个操作系统。
存储器504可以包含用任何方法或技术实施的用于存储如计算机可读指令、数据结构、程序模块或其它数据等信息的易失性和非易失性存储器、可移除和不可移除介质。此类存储器包含但不限于RAM、ROM、EEPROM、闪速存储器或其它存储技术、CD-ROM、数字通用盘(DVD)或其它光盘存储、磁盒、磁带、磁盘存储或其它磁存储装置、RAID存储系统或者可以用于存储期望信息并且可以由计算装置访问的任何其它介质。存储器504可以被实施为计算机可读存储介质(“CRSM”),其可以是可由处理器502访问以执行存储在存储器502上的指令的任何可用物理介质。在一个基本实施方案中,CRSM可以包含随机存取存储器(“RAM”)和闪存。在其它实施方案中,CRSM可以包含但不限于只读存储器(“ROM”)、电可擦可编程只读存储器(“EEPROM”)或可以用于存储期望信息并且可以由一个或多个处理器502访问的任何其它有形介质。
通常,HMD 500可以包含被配置成实施本文所描述的技术、功能和/或操作的逻辑(例如,软件、硬件和/或固件等)。计算机可读介质504被示出为包含各种模块,如指令、数据存储等,所述模块可以被配置成在一个或多个处理器502上执行,以执行本文所描述的技术、功能和/或操作。很少示例功能模块被示出为存储在计算机可读介质504中并且可在一个或多个处理器502上执行,尽管相同功能可以可替代地在硬件、固件或作为片上系统(SOC)和/或在其它逻辑中实施。
操作系统模块506可以被配置成管理在HMD 500内并且耦合到其的硬件,以有益于其它模块。另外,在一些实例中,HMD 500可以包含存储在存储器504中或者以其它方式可由HMD 500访问的一个或多个应用程序104。在此实施方案中,一个或多个应用程序104包含游戏应用程序510。然而,HMD 500可以包含任何数量或类型的应用程序,并且不限于此处所示的具体实例。游戏应用程序510可以被配置成启动可由用户102播放的基于视频的交互式游戏(例如,VR游戏)的游戏设置,以及输出要在HMD 500的显示面板上渲染的帧(例如,实际帧106(A))。合成器114,与HMD 500的其他逻辑结合,可以被配置为执行本文所述的技术,以基于应用程序104的渲染性能来调整预测水平126和限流水平128。
通常,HMD 500具有输入装置512和输出装置514。输入装置512可以包含控制按钮。在一些实施方案中,一个或多个麦克风可以充当输入装置512以接收音频输入,如用户语音输入。在一些实施方案中,一个或多个相机或其它类型的传感器(例如,惯性测量单元(IMU))可以充当输入装置512以接收手势输入,如用户102的手和/或头部运动。在一些实施例中,可以以键盘、小键盘、鼠标、触摸屏、操纵杆等形式提供另外的输入装置512。在其它实施例中,HMD 500可以省略键盘、小键盘或其它类似形式的机械输入。相反,HMD 500可以被实施为相对简化的形式的输入装置512、网络接口(基于无线或有线)、功率以及处理/存储器能力。例如,可以采用一个或多个输入组件的有限集合(例如,启动配置的专用按钮、电源开/关等),以便此后可以使用HMD 500。在一个实施方案中,一个或多个输入装置512可以包含控制机构,如用于增加/减小音量的一个或多个基本音量控制按钮以及电源按钮和复位按钮。
输出装置514可以包括显示器516,显示器可以包括一个或多个显示面板(例如,一对立体感显示面板)。输出装置514可以进一步包含但不限于光元件(例如,LED)、用于产生触觉感觉的振动器、一个或多个扬声器(例如,耳机)等。还可以存在简易光元件(例如,LED)以指示状态,例如,当接通电源时的。
HMD 500可以进一步包含耦合到天线520以促进与网络的无线连接的无线单元518。无线单元518可以实施各种无线技术中的一种或多种,如Wi-Fi、蓝牙、射频(RF)等。应当理解的是,HMD 500可以进一步包含促进与网络的有线连接的物理端口、连接的外围装置(包含PC、游戏控制台等)或与其它无线网络通信的插入式网络装置。
HMD 500可以进一步包含光学子系统522,所述光学子系统使用一个或多个光学元件将来自一个或多个电子显示器516的光引导到一个或多个用户的眼睛。光学子系统522可以包含不同光学元件的各种类型和组合,包含但不限于如孔、透镜(例如,菲涅耳透镜、凸透镜、凹透镜等)、滤波器等。在一些实施例中,光学子系统522中的一个或多个光学元件可以具有一个或多个涂层,如抗反射涂层。通过光学子系统522对图像光的放大使得一个或多个电子显示器516与较大的显示器相比在物理上更小、重量更轻并且消耗的功率更少。另外地,图像光的放大可以增加显示内容(例如,图像)的视野(FOV)。例如,所显示的内容的FOV使得所显示的内容几乎是使用用户的几乎全部FOV(例如,120-150度对角线)来呈现的,并且在一些情况下,是用户的全部FOV来呈现的。AR应用程序的FOV可能较窄(例如,FOV为约40度)。光学子系统522可以被设计成校正一个或多个光学误差,如但不限于桶形失真、枕形失真、纵向色度失真、横向色度失真、球面像差、彗形像差、场曲、像散等。在一些实施例中,提供给一个或多个电子显示器516以供显示的内容是预失真的,并且当从一个或多个电子显示器516接收基于内容生成的图像光时,光学子系统522校正失真。
HMD 500可以进一步包含一个或多个传感器524,如用于生成运动数据、定位数据和朝向数据的传感器。这些传感器524可以是或包含陀螺仪、加速度计、磁力计、摄像机、颜色传感器或其它运动、定位和朝向传感器。传感器524还可以包含传感器的子部分,如一系列有源或无源标记,所述一系列有源或无源标记可以由相机或颜色传感器从外部查看以生成运动数据、定位数据和朝向数据。例如,VR头戴式耳机可以在其外部包含多个标记,如反射器或光(例如,红外光或可见光),当由外部相机查看或由光(例如红外或可见光)照亮时,所述标记可以提供一个或多个参考点以供软件解释,以生成运动数据、定位数据和朝向数据。HMD 500可以包含对由HMD 500的环境中的基站投射或广播的光(例如,红外光或可见光)敏感的光传感器。
在一个实例中,一个或多个传感器524可以包含惯性测量单元(IMU)526。IMU 526可以是电子装置,所述电子装置基于从加速度计、陀螺仪、磁力计和/或适合于检测运动、校正与IMU 526相关联的误差或其组合的其它传感器接收的测量信号来生成校准数据。基于测量信号,如IMU 526等基于运动的传感器可以生成指示HMD 500相对于HMD 500的初始位置的估计定位的校准数据。例如,多个加速度计可以测量平移运动(前进/后退、上/下、左/右),并且多个陀螺仪可以测量旋转运动(例如,俯仰、偏摆和滚动)。IMU 526可以例如快速采样测量信号并且从采样的数据计算HMD 500的估计定位。例如,IMU 526可以随时间整合从加速度计接收的测量信号以估计速度矢量,并且随时间整合速度矢量以确定HMD 500上的参考点的估计定位。参考点是可以用于描述HMD 500的定位的点。虽然参考点通常可以被定义为空间中的点,但在各个实施例中,参考点被定义为HMD 500内的点(例如,IMU526的中心)。可替代地,IMU 526将采样的测量信号提供给确定校准数据的外部控制台(或其它计算装置)。
传感器524可以在相对高的频率下操作以便以高速率将数据提供给传感器。例如,可以以1000Hz的速率生成传感器数据(或每1毫秒1个传感器读数)。以此方式,每秒可以读取一千个读数。当传感器以此速率(或以更高的速率)生成如此多的数据时,用于预测运动的数据集相当大,甚至在数十毫秒量级的相对较短的时间段内也是如此。
如所提及的,在一些实施例中,传感器524可以包含对由HMD 500的环境中的基站发射的光敏感的光传感器,以用于在3D空间中跟踪HMD 500的定位和/或朝向、姿态等。定位和/或朝向的计算可以基于光脉冲的定时特性以及由传感器524检测的光的存在与否。
HMD 500可以进一步包含眼睛跟踪模块528。HMD 500内的相机或其它光学传感器可以捕获用户眼睛的图像信息,并且眼睛跟踪模块528可以使用捕获的信息来确定每只眼睛相对于HMD 500的瞳间距离、眼间距离、三维(3D)定位(例如,用于失真调整的目的),包含每只眼睛的扭转和旋转(即,滚动、俯仰和偏摆)的幅度和注视方向。在一个实例中,红外光在HMD 500内发射并且从每只眼睛反射。反射光由HMD 500的相机接收或检测,并且被分析以从每只眼睛反射的红外光的变化中提取眼睛旋转。眼睛跟踪模块528可以使用许多用于跟踪用户102的眼睛的方法。因此,眼睛跟踪模块528可以跟踪每只眼睛的多达六个自由度(即,3D定位、滚动、俯仰和偏摆),并且可以将来自用户102的两只眼睛的跟踪量的至少一个子集进行组合,以估计注视点(即,用户正在看的虚拟场景中的3D位置或定位)。例如,眼睛跟踪模块528可以整合来自过去的测量、标识用户102的头部的定位的测量的信息以及描述由一个或多个电子显示器516呈现的场景的3D信息。因此,使用用于用户102的眼睛的定位和朝向的信息来确定用户102正在看的由HMD 500呈现的虚拟场景中的注视点。
HMD 500可以进一步包含头部跟踪模块530。头部跟踪模块530可以利用传感器524中的一个或多个来跟踪用户102的头部运动,包含头部旋转,如上文所描述的。例如,头部跟踪模块530可以跟踪HMD 500的多达六个自由度(即,3D定位、滚动、俯仰和偏摆)。这些计算可以在一系列帧106的每一帧106处进行,使得应用程序104可以根据头部定位和朝向确定如何渲染在下一帧106(甚至对于重投影的帧104)中的场景。在一些实施例中,头部跟踪模块530和/或使用头部跟踪模块530的合成器114被配置成基于当前和/或过去的数据来预测HMD 500的未来定位和/或朝向。这是因为应用程序被要求在用户102实际看到一个或多个显示器516上的光(并且因此看到图像)之前渲染帧106。因此,下一帧106可以基于在先前的时间点,如在渲染帧106之前大约25-30毫秒(ms)所进行的头部定位和/或朝向的未来预测来渲染。由头部跟踪模块530提供的旋转数据可以用于确定HMD 500旋转的两个方向和以任何合适的测量单位确定HMD 500旋转的量。例如,可以简化旋转方向,并且以对应于左、右、上和下的正或负水平方向和正或负竖直方向输出。旋转量可以以度、弧度等为单位。可以计算角速度来确定HMD 500的旋转速率。
尽管以特定于结构特征的语言描述了主题,但应理解的是所附权利要求中限定的主题不必限于所描述的具体特征。相反,具体特征被公开为实施权利要求的说明性形式。
Claims (20)
1.一种方法,其包括:
使用最小限流水平和最小预测水平在头戴式显示器(HMD)上渲染一系列帧中的第一帧,其中所述最小限流水平使所述HMD的合成器对应用程序的帧速率限流以匹配所述HMD的刷新率,以使所述第一帧中的各个帧成为目标以使用一次以在所述HMD上呈现相应的图像,并且其中所述最小预测水平使所述HMD的合成器相对于针对所述第一帧中的各个帧预测姿势数据的时间,针对与未来的垂直同步(VSync)间隔的第一目标数量相对应的时间预测所述HMD的姿势数据;
在所述第一帧的过去的N个渲染帧中确定后到帧的数量,其中后到帧是比所述应用程序使用所述HMD的图形处理单元(GPU)完成渲染所用的VSync间隔的第一目标数量更多的帧;
确定所述后到帧的数量达到或超过后到帧的阈值数量;
将所述最小预测水平提高到中间预测水平;
使用所述最小限流水平和所述中间预测水平在所述HMD上渲染所述一系列帧中的第二帧,所述中间预测水平使所述HMD的合成器相对于针对所述第二帧中的各个帧预测所述姿势数据的时间,针对与未来的VSync间隔的第二目标数量相对应的时间预测所述HMD的姿势数据;
在所述第二帧的过去的M个渲染帧中确定过度呈现的帧的数量,其中过度呈现的帧是被多于一次使用以在所述HMD上呈现多个对应图像的帧;
确定所述过度呈现的帧的数量达到或超过过度呈现的帧的阈值数量;
将所述最小限流水平提高到中间限流水平;和
使用所述中间限流水平和所述中间预测水平在所述HMD上渲染所述一系列帧中的第三帧,所述中间限流水平使所述HMD的合成器将所述应用程序的帧速率限流为所述HMD的刷新率的一半,使得所述第三帧中的各个帧成为目标以使用两次,以在所述HMD上显示相应的图像。
2.根据权利要求1所述的方法,还包括:在将所述最小预测水平增加到所述中间预测水平之后,并且在渲染所述第二帧之前,清除保持与第一帧相关联的第一统计信息的一个或多个环形缓冲区。
3.根据权利要求1所述的方法,其进一步包括:
确定所述第三帧中的过去的P个连续渲染的帧使所述应用程序用不超过VSync间隔的第一目标数量,使用所述HMD的GPU完成渲染;
将所述中间预测水平降低到所述最小预测水平;
与将所述中间预测水平降低到所述最小预测水平同步地将所述中间限流水平降低到所述最小限流水平;和
使用所述最小预测水平和所述最小限流水平在所述HMD上渲染所述一系列帧中的第四帧。
4.一种方法,其包括:
使用设置为第一预测水平的预测水平在头戴式显示器(HMD)上渲染一系列帧中的第一帧,所述第一预测水平使所述HMD的合成器相对于针对所述第一帧中的各个帧预测姿势数据的时间,针对与未来的垂直同步(VSync)间隔的第一目标数量相对应的时间预测所述HMD的姿势数据;
确定所述第一帧的过去的N个渲染帧中的后到帧数量达到或超过后到帧的阈值数量,其中后到帧是比应用程序使用所述HMD的图形处理单元(GPU)完成渲染所用的VSync间隔的第一目标数量更多的帧;
将所述预测水平从所述第一预测水平增加到第二预测水平;和
使用设置为所述第二预测水平的预测水平在所述HMD上渲染所述一系列帧中的第二帧,所述第二预测水平使所述HMD的合成器相对于针对所述第二帧中的各个帧预测所述姿势数据的时间,针对与未来的VSync间隔的第二目标数量相对应的时间预测所述HMD的姿势数据,所述VSync间隔的第二目标数量大于所述VSync间隔的所述第一目标数量。
5.根据权利要求4所述的方法,其中使用设置为第一限流水平的限流水平渲染所述第一帧,所述第一限流水平使所述合成器相对于所述HMD的刷新率限流所述应用程序的帧速率,使得所述第一帧中的各个帧成为目标以使用第一目标次数以在所述HMD上呈现一个或多个对应图像,所述方法还包括在将所述预测水平从所述第一预测水平增加到所述第二预测水平之后:
确定所述第二帧的过去的M个渲染帧中的过度呈现的帧的数量达到或超过过度呈现的帧的阈值数量,其中过度呈现的帧是被多于所述第一目标次数使用以在所述HMD上呈现多个对应图像的帧;
将所述限流水平从所述第一限流水平增加到第二限流水平;和
使用设置为所述第二限流水平的限流水平在所述HMD上渲染所述一系列帧中的第三帧,所述第二限流水平使所述合成器相对于所述HMD的刷新率将所述应用程序的帧速率限流,使得所述第三帧中的各个帧成为目标以使用第二目标次数,以在所述HMD上显示相应的图像,所述第二目标次数大于所述第一目标次数。
6.根据权利要求5所述的方法,还包括:在将所述预测水平从所述第一预测水平增加到所述第二预测水平之后并且在渲染所述第二帧之前,从存储器中删除与所述第一帧相关联的第一统计信息。
7.根据权利要求6所述的方法,还包括:在从所述存储器中删除所述第一统计信息之后:
将与所述第二帧相关的第二统计信息存储在所述存储器中,
其中至少部分地基于存储在所述存储器中的第二统计信息,确定所述第二帧中的过去的M个渲染帧中的过度渲染的帧的数量达到或超过了过度渲染的帧的阈值数量。
8.根据权利要求4所述的方法,其中使用设置为第一限流水平的限流水平渲染所述第一帧,所述第一限流水平使所述合成器相对于所述HMD的刷新率限流所述应用程序的帧速率,使得所述第一帧中的各个帧成为目标以使用第一目标次数以在所述HMD上呈现一个或多个对应图像,所述方法还包括:在将所述预测水平从所述第一预测水平增加到所述第二预测水平之前:
确定启用了运动平滑,其中运动平滑使用由所述GPU的视频编码器生成的运动矢量来在渲染之前修改所述第一帧的至少一个子集的像素数据;
与将所述预测水平从所述第一预测水平增加到所述第二预测水平同步地将所述限流水平从所述第一限流水平增加到所述第二限流水平;和
使用设置为所述第二限流水平的限流水平渲染所述第二帧,所述第二限流水平使所述合成器相对于所述HMD的刷新率将所述应用程序的帧速率限流,使得所述第三帧中的各个帧成为目标以使用第二目标次数,以在所述HMD上显示相应的图像,所述第二目标次数大于所述第一目标次数。
9.根据权利要求4所述的方法,其中使用设置为第一限流水平的限流水平渲染所述第一帧,所述第一限流水平使所述合成器相对于所述HMD的刷新率限流所述应用程序的帧速率,使得所述第一帧中的各个帧成为目标以使用第一目标次数以在所述HMD上呈现一个或多个对应图像,并且其中所述预测水平和所述限流水平可以使用相同的标度独立调节,所述方法还包括:
确定将所述预测水平和所述限流水平在相同的标度上设置为相同水平,
其中响应于确定所述预测水平和所述限流水平被设置为相同水平而发生增加所述预测水平。
10.根据权利要求4所述的方法,其进一步包括:
确定尚未将所述预测水平提高到最大水平,
其中响应于确定尚未将所述预测水平提高到最大水平而发生增加所述预测水平。
11.根据权利要求4所述的方法,其进一步包括在增加所述预测水平之后:
确定所述第二帧中的过去的P个连续渲染的帧使所述应用程序用不超过VSync间隔的第一目标数量,使用所述HMD的GPU完成渲染;
将所述预测水平从所述第二预测水平降低到所述第一预测水平;和
使用设置为所述第一预测水平的预测水平在所述HMD上渲染所述一系列帧中的第三帧。
12.根据权利要求4所述的方法,其中使用设置为第一限流水平的限流水平渲染所述第一帧,所述第一限流水平使所述合成器相对于所述HMD的刷新率限流所述应用程序的帧速率,使得所述第一帧中的各个帧成为目标以使用第一目标次数以在所述HMD上呈现一个或多个对应图像,所述方法还包括:
将所述限流水平从所述第一限流水平增加到第二限流水平;
确定所述第二帧中的过去的P个连续渲染的帧使所述应用程序用不超过VSync间隔的第一目标数量,使用所述HMD的GPU完成渲染;
将所述预测水平从所述第二预测水平降低到所述第一预测水平;
与将所述预测水平从所述第二预测水平降低到所述第一预测水平同步地将所述限流水平从所述第二限流水平降低到所述第一限流水平;和
使用设置为所述第一预测水平的预测水平和设置为所述第一限流水平的限流水平在所述HMD上渲染所述一系列帧中的第三帧。
13.一种头戴式显示器(HMD),其包括:
图形处理单元(GPU);和
存储在所述HMD的存储器中的合成器,其用于:
使用设置为第一预测水平的预测水平在所述HMD上渲染一系列帧中的第一帧,以相对于针对所述第一帧中的各个帧预测姿势数据的时间,针对与未来的垂直同步(VSync)间隔的第一目标数量相对应的时间预测所述HMD的姿势数据;
确定所述第一帧的过去的N个渲染帧中的后到帧数量达到或超过后到帧的阈值数量,其中后到帧是比应用程序使用所述HMD的所述GPU完成渲染所用的VSync间隔的第一目标数量更多的帧;
将所述预测水平从第一预测水平增加到第二预测水平;和
使用设置为所述第二预测水平的预测水平在所述HMD上渲染所述一系列帧中的第二帧,以相对于针对所述第二帧中的各个帧预测所述姿势数据的时间,针对与未来的VSync间隔的第二目标数量相对应的时间预测所述HMD的姿势数据,所述VSync间隔的第二目标数量大于所述VSync间隔的第一目标数量。
14.根据权利要求13所述的HMD,其中所述合成器被进一步配置成:
使用设置为第一限流水平的限流水平渲染所述第一帧,以相对于所述HMD的刷新率限流所述应用程序的帧速率,使得所述第一帧中的各个帧成为目标以使用第一目标次数以在所述HMD上呈现一个或多个对应图像;
确定所述第二帧的过去的M个渲染帧中的过度呈现的帧的数量达到或超过过度呈现的帧的阈值数量,其中过度呈现的帧是被多于所述第一目标次数使用以在所述HMD上呈现多个对应图像的帧;
将所述限流水平从所述第一限流水平增加到第二限流水平;和
使用设置为所述第二限流水平的限流水平在所述HMD上渲染所述一系列帧中的第三帧,以相对于所述HMD的刷新率将所述应用程序的帧速率限流,使得所述第三帧中的各个帧成为目标以使用第二目标次数,以在所述HMD上显示相应的图像,所述第二目标次数大于所述第一目标次数。
15.根据权利要求14所述的HMD,其中所述合成器被进一步配置成:
从存储器中删除与所述第一帧相关联的第一统计信息,其中从所述存储器中删除所述第一统计信息发生在将所述预测水平从所述第一预测水平增加到所述第二预测水平之后并且在渲染所述第二帧之前。
16.根据权利要求15所述的HMD,其中所述合成器被进一步配置成:
在从所述存储器中删除所述第一统计信息之后,将与所述第二帧相关联的第二统计信息存储在所述存储器中,
其中至少部分地基于存储在所述存储器中的第二统计信息,确定所述第二帧中的过去的M个渲染帧中的过度渲染的帧的数量达到或超过了过度渲染的帧的阈值数量。
17.根据权利要求13所述的HMD,其中所述合成器被进一步配置成:
使用设置为第一限流水平的限流水平渲染所述第一帧,以相对于所述HMD的刷新率限流所述应用程序的帧速率,使得所述第一帧中的各个帧成为目标以使用第一目标次数以在所述HMD上呈现一个或多个对应图像;
确定启用了运动平滑,其中运动平滑使用由所述GPU的视频编码器生成的运动矢量来在渲染之前修改所述第一帧的至少一个子集的像素数据;
与将所述预测水平从所述第一预测水平增加到所述第二预测水平同步地将所述限流水平从所述第一限流水平增加到第二限流水平;
使用设置为所述第二限流水平的限流水平渲染所述第二帧,以相对于所述HMD的刷新率将所述应用程序的帧速率限流,使得所述第二帧中的各个帧成为目标以使用第二目标次数,以在所述HMD上显示相应的图像,所述第二目标次数大于所述第一目标次数。
18.根据权利要求13所述的HMD,其中所述预测水平可在包括第一水平、第二水平、第三水平和第四水平的四个不同的增量水平之间调节,其中第一水平是最小水平,第四水平是最大水平。
19.根据权利要求13所述的HMD,其中所述合成器被进一步配置成:
确定所述第二帧中的过去的P个连续渲染的帧使所述应用程序用不超过VSync间隔的第一目标数量,使用所述HMD的GPU完成渲染;
将所述预测水平从所述第二预测水平降低到所述第一预测水平;和
使用设置为所述第一预测水平的预测水平在所述HMD上渲染所述一系列帧中的第三帧。
20.根据权利要求13所述的HMD,其中所述合成器被进一步配置成:
使用设置为第一限流水平的限流水平渲染所述第一帧,以相对于所述HMD的刷新率限流所述应用程序的帧速率,使得所述第一帧中的各个帧成为目标以使用第一目标次数以在所述HMD上呈现一个或多个对应图像;
将所述限流水平从所述第一限流水平增加到第二限流水平;
确定所述第二帧中的过去的P个连续渲染的帧使所述应用程序用不超过VSync间隔的第一目标数量,使用所述HMD的GPU完成渲染;
将所述预测水平从所述第二预测水平降低到所述第一预测水平;
与将所述预测水平从所述第二预测水平降低到所述第一预测水平同步地将所述限流水平从所述第二限流水平降低到所述第一限流水平;和
使用设置为所述第一预测水平的预测水平和设置为所述第一限流水平的限流水平在所述HMD上渲染所述一系列帧中的第三帧。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/056,277 | 2018-08-06 | ||
US16/056,277 US10600236B2 (en) | 2018-08-06 | 2018-08-06 | Prediction and throttling adjustments based on application rendering performance |
PCT/US2019/045290 WO2020033396A1 (en) | 2018-08-06 | 2019-08-06 | Prediction and throttling adjustments based on application rendering performance |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112639577A true CN112639577A (zh) | 2021-04-09 |
CN112639577B CN112639577B (zh) | 2023-06-06 |
Family
ID=69229793
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201980052386.1A Active CN112639577B (zh) | 2018-08-06 | 2019-08-06 | 基于应用程序渲染性能的预测和限流调整 |
Country Status (6)
Country | Link |
---|---|
US (2) | US10600236B2 (zh) |
EP (1) | EP3830632A4 (zh) |
JP (1) | JP7391939B2 (zh) |
KR (1) | KR20210038669A (zh) |
CN (1) | CN112639577B (zh) |
WO (1) | WO2020033396A1 (zh) |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10962780B2 (en) * | 2015-10-26 | 2021-03-30 | Microsoft Technology Licensing, Llc | Remote rendering for virtual images |
US10520739B1 (en) * | 2018-07-11 | 2019-12-31 | Valve Corporation | Dynamic panel masking |
US10600236B2 (en) * | 2018-08-06 | 2020-03-24 | Valve Corporation | Prediction and throttling adjustments based on application rendering performance |
US11048465B2 (en) * | 2018-09-18 | 2021-06-29 | Canon Kabushiki Kaisha | Imaging display device, wearable device, and imaging display system |
JP7134060B2 (ja) * | 2018-10-18 | 2022-09-09 | 株式会社ソニー・インタラクティブエンタテインメント | 画像生成装置および画像生成方法 |
US11178379B2 (en) * | 2019-08-07 | 2021-11-16 | Magic Leap, Inc. | Determining a predicted head pose time |
US11315326B2 (en) * | 2019-10-15 | 2022-04-26 | At&T Intellectual Property I, L.P. | Extended reality anchor caching based on viewport prediction |
US20210192681A1 (en) * | 2019-12-18 | 2021-06-24 | Ati Technologies Ulc | Frame reprojection for virtual reality and augmented reality |
GB2592942B (en) * | 2020-03-11 | 2023-09-20 | Sony Interactive Entertainment Inc | Apparatus and method |
US11803221B2 (en) * | 2020-03-23 | 2023-10-31 | Microsoft Technology Licensing, Llc | AI power regulation |
US11099396B2 (en) | 2020-04-10 | 2021-08-24 | Samsung Electronics Company, Ltd. | Depth map re-projection based on image and pose changes |
US11929047B2 (en) * | 2020-10-22 | 2024-03-12 | Qualcomm Incorporated | Dynamic frame rate optimization |
WO2024043614A1 (ko) * | 2022-08-23 | 2024-02-29 | 삼성전자 주식회사 | 프레임율을 조정하는 디스플레이 장치, 웨어러블 디바이스 및 그 동작 방법 |
WO2024085665A1 (ko) * | 2022-10-20 | 2024-04-25 | 삼성전자 주식회사 | 디스플레이의 동기화를 위한 전자 장치 및 방법 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105229719A (zh) * | 2013-03-15 | 2016-01-06 | 奇跃公司 | 显示系统和方法 |
CN105392538A (zh) * | 2013-06-07 | 2016-03-09 | 索尼电脑娱乐公司 | 响应于头戴式显示器中的用户动作的图像渲染 |
CN105474273A (zh) * | 2013-07-25 | 2016-04-06 | 微软技术许可有限责任公司 | 后期重投影 |
US20170374344A1 (en) * | 2016-06-22 | 2017-12-28 | Microsoft Technology Licensing, Llc | Discontinuity-aware reprojection |
CN108140262A (zh) * | 2015-12-22 | 2018-06-08 | 谷歌有限责任公司 | 调整虚拟现实内容的视频渲染速率和立体图像的处理 |
CN108241213A (zh) * | 2016-12-26 | 2018-07-03 | 乐金显示有限公司 | 头戴式显示器及其控制方法 |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9690099B2 (en) | 2010-12-17 | 2017-06-27 | Microsoft Technology Licensing, Llc | Optimized focal area for augmented reality displays |
US9645395B2 (en) * | 2013-03-15 | 2017-05-09 | Mark Bolas | Dynamic field of view throttling as a means of improving user experience in head mounted virtual environments |
JP6349908B2 (ja) * | 2014-04-22 | 2018-07-04 | 富士通株式会社 | データ処理方法、データ処理装置及びプログラム |
US20160027141A1 (en) | 2014-07-22 | 2016-01-28 | Oculus Vr, Llc | In-band latency detection system |
US9824498B2 (en) * | 2014-12-30 | 2017-11-21 | Sony Interactive Entertainment Inc. | Scanning display system in head-mounted display for virtual reality |
US9240069B1 (en) * | 2015-06-30 | 2016-01-19 | Ariadne's Thread (Usa), Inc. | Low-latency virtual reality display system |
US9928655B1 (en) * | 2015-08-31 | 2018-03-27 | Amazon Technologies, Inc. | Predictive rendering of augmented reality content to overlay physical structures |
US9832451B2 (en) | 2015-11-17 | 2017-11-28 | Survios, Inc. | Methods for reduced-bandwidth wireless 3D video transmission |
JP6511386B2 (ja) | 2015-11-20 | 2019-05-15 | 株式会社ソニー・インタラクティブエンタテインメント | 情報処理装置および画像生成方法 |
JP2017215875A (ja) | 2016-06-01 | 2017-12-07 | 株式会社ソニー・インタラクティブエンタテインメント | 画像生成装置、画像生成システム、および画像生成方法 |
US10379611B2 (en) * | 2016-09-16 | 2019-08-13 | Intel Corporation | Virtual reality/augmented reality apparatus and method |
DE102017129795A1 (de) * | 2017-06-30 | 2019-01-03 | Lg Display Co., Ltd. | Anzeigevorrichtung und gate-treiberschaltkreis davon, ansteuerungsungsverfahren und virtuelle-realität-vorrichtung |
US10534454B2 (en) * | 2018-02-02 | 2020-01-14 | Sony Interactive Entertainment Inc. | Head-mounted display to controller clock synchronization over EM field |
US10861215B2 (en) * | 2018-04-30 | 2020-12-08 | Qualcomm Incorporated | Asynchronous time and space warp with determination of region of interest |
US10600236B2 (en) * | 2018-08-06 | 2020-03-24 | Valve Corporation | Prediction and throttling adjustments based on application rendering performance |
-
2018
- 2018-08-06 US US16/056,277 patent/US10600236B2/en active Active
-
2019
- 2019-08-06 CN CN201980052386.1A patent/CN112639577B/zh active Active
- 2019-08-06 EP EP19846361.4A patent/EP3830632A4/en active Pending
- 2019-08-06 JP JP2021506489A patent/JP7391939B2/ja active Active
- 2019-08-06 WO PCT/US2019/045290 patent/WO2020033396A1/en unknown
- 2019-08-06 KR KR1020217006524A patent/KR20210038669A/ko active Search and Examination
-
2020
- 2020-01-21 US US16/748,599 patent/US11151776B2/en active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105229719A (zh) * | 2013-03-15 | 2016-01-06 | 奇跃公司 | 显示系统和方法 |
CN105392538A (zh) * | 2013-06-07 | 2016-03-09 | 索尼电脑娱乐公司 | 响应于头戴式显示器中的用户动作的图像渲染 |
CN105474273A (zh) * | 2013-07-25 | 2016-04-06 | 微软技术许可有限责任公司 | 后期重投影 |
CN108140262A (zh) * | 2015-12-22 | 2018-06-08 | 谷歌有限责任公司 | 调整虚拟现实内容的视频渲染速率和立体图像的处理 |
US20170374344A1 (en) * | 2016-06-22 | 2017-12-28 | Microsoft Technology Licensing, Llc | Discontinuity-aware reprojection |
CN108241213A (zh) * | 2016-12-26 | 2018-07-03 | 乐金显示有限公司 | 头戴式显示器及其控制方法 |
Also Published As
Publication number | Publication date |
---|---|
KR20210038669A (ko) | 2021-04-07 |
US11151776B2 (en) | 2021-10-19 |
WO2020033396A1 (en) | 2020-02-13 |
JP7391939B2 (ja) | 2023-12-05 |
EP3830632A4 (en) | 2022-04-27 |
US20200160591A1 (en) | 2020-05-21 |
EP3830632A1 (en) | 2021-06-09 |
US10600236B2 (en) | 2020-03-24 |
US20200043223A1 (en) | 2020-02-06 |
CN112639577B (zh) | 2023-06-06 |
JP2021533498A (ja) | 2021-12-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112639577B (zh) | 基于应用程序渲染性能的预测和限流调整 | |
US11836289B2 (en) | Use of eye tracking to adjust region-of-interest (ROI) for compressing images for transmission | |
CN113170136B (zh) | 重投影帧的运动平滑 | |
US11314322B2 (en) | Display system with dynamic light output adjustment for maintaining constant brightness | |
US9928655B1 (en) | Predictive rendering of augmented reality content to overlay physical structures | |
US9595083B1 (en) | Method and apparatus for image producing with predictions of future positions | |
US10802287B2 (en) | Dynamic render time targeting based on eye tracking | |
WO2020259402A1 (zh) | 图像处理方法、装置、终端设备、介质、可穿戴系统 | |
CN112384843B (zh) | 动态面板掩膜 | |
KR20220116150A (ko) | 머리 착용 디스플레이(hmd)와 호스트 컴퓨터 사이의 렌더링 분할 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |