CN109300183B - 用于提供输出面的数据处理系统和方法 - Google Patents
用于提供输出面的数据处理系统和方法 Download PDFInfo
- Publication number
- CN109300183B CN109300183B CN201810812156.8A CN201810812156A CN109300183B CN 109300183 B CN109300183 B CN 109300183B CN 201810812156 A CN201810812156 A CN 201810812156A CN 109300183 B CN109300183 B CN 109300183B
- Authority
- CN
- China
- Prior art keywords
- input
- display
- output
- data
- face
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/005—General purpose rendering architectures
-
- 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
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G5/00—Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
- G09G5/36—Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of a graphic pattern, e.g. using an all-points-addressable [APA] memory
- G09G5/39—Control of the bit-mapped memory
- G09G5/391—Resolution modifying circuits, e.g. variable screen formats
-
- 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
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/60—Memory management
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G3/00—Control arrangements or circuits, of interest only in connection with visual indicators other than cathode-ray tubes
- G09G3/001—Control arrangements or circuits, of interest only in connection with visual indicators other than cathode-ray tubes using specific devices not provided for in groups G09G3/02 - G09G3/36, e.g. using an intermediate record carrier such as a film slide; Projection systems; Display of non-alphanumerical information, solely or in combination with alphanumerical information, e.g. digital display on projected diapositive as background
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G3/00—Control arrangements or circuits, of interest only in connection with visual indicators other than cathode-ray tubes
- G09G3/001—Control arrangements or circuits, of interest only in connection with visual indicators other than cathode-ray tubes using specific devices not provided for in groups G09G3/02 - G09G3/36, e.g. using an intermediate record carrier such as a film slide; Projection systems; Display of non-alphanumerical information, solely or in combination with alphanumerical information, e.g. digital display on projected diapositive as background
- G09G3/003—Control arrangements or circuits, of interest only in connection with visual indicators other than cathode-ray tubes using specific devices not provided for in groups G09G3/02 - G09G3/36, e.g. using an intermediate record carrier such as a film slide; Projection systems; Display of non-alphanumerical information, solely or in combination with alphanumerical information, e.g. digital display on projected diapositive as background to produce spatial visual effects
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G5/00—Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
- G09G5/36—Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of a graphic pattern, e.g. using an all-points-addressable [APA] memory
- G09G5/39—Control of the bit-mapped memory
- G09G5/395—Arrangements specially adapted for transferring the contents of the bit-mapped memory to the screen
- G09G5/397—Arrangements specially adapted for transferring the contents of two or more bit-mapped memories to the screen simultaneously, e.g. for mixing or overlay
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2200/00—Indexing scheme for image data processing or generation, in general
- G06T2200/28—Indexing scheme for image data processing or generation, in general involving image processing hardware
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G2310/00—Command of the display device
- G09G2310/02—Addressing, scanning or driving the display screen or processing steps related thereto
- G09G2310/0232—Special driving of display border areas
-
- 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
-
- 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
- G09G2350/00—Solving problems of bandwidth in display 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
- G09G2352/00—Parallel handling of streams of display data
-
- 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
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G2360/00—Aspects of the architecture of display systems
- G09G2360/08—Power processing, i.e. workload management for processors involved in display operations, such as CPUs or GPUs
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G2360/00—Aspects of the architecture of display systems
- G09G2360/18—Use of a frame buffer in a display terminal, inclusive of the display panel
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Computer Graphics (AREA)
- Optics & Photonics (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Controls And Circuits For Display Device (AREA)
- Control Of Indicators Other Than Cathode Ray Tubes (AREA)
- Human Computer Interaction (AREA)
- Image Processing (AREA)
- Geometry (AREA)
- Architecture (AREA)
Abstract
用于提供输出面的数据处理系统和方法。一种用于提供用于显示的输出面(51、52、53、54)的数据处理系统。数据处理系统包括渲染电路,其可进行操作而生成用于提供用于显示的输出面(51、52、53、54)的一个或更多个输入面(50)。该渲染电路可进行操作而以比生成输入面(50)的中心区域(56)的保真度低的保真度生成输入面(50)的外围区域(57)或可进行操作而以比生成多个输入面中的其他输入面的保真度低的保真度生成该多个输入面中的一个输入面。数据处理系统还包括显示合成电路,其可进行操作而基于所接收的观看方位数据选择所生成的一个或更多个输入面(50)中的至少一个输入面的部分,来提供用于显示的输出面(51、52、53、54)。
Description
技术领域
本发明涉及用于提供用于在数据处理系统中显示的输出面的数据处理系统和方法,具体涉及用于提供用于在虚拟现实头戴式显示器系统中显示的输出面的数据处理系统和方法。
背景技术
当渲染用于虚拟现实显示器的图像(帧)时,例如用于头戴式显示器系统中,此时通常由例如图形处理单元(GPU)渲染向各眼睛显示的适当帧。这种帧通常响应于来自需要虚拟现实显示的应用(诸如(例如,在中央处理单元(CPU)上执行的)游戏)的适当命令和数据来渲染。GPU例如将渲染要以诸如每秒30帧的帧率显示的帧(并且将以该帧率渲染左眼和右眼视图两者)。
在这种结构中,系统还将进行操作而跟踪用户的头部和/或注视的移动(所谓的头部姿态跟踪)。该头部方位(姿态)数据然后用于确定实际上应如何对于用户当前的头部位置(观看方向)向用户显示图像,并且因此(例如通过基于头部方位数据设置摄像头(视点)方位)渲染图像(帧),使得可以显示基于用户当前的观看方向的适当图像。
为了顾及用户的这种头部运动,已经对于虚拟现实头戴式显示器系统提出了被称为“时间扭曲”的处理。在该处理中,基于在帧的渲染开始时感测到的头部方位数据来渲染要显示的帧,但然后在实际显示帧之前,感测另外的头部方位(姿态)数据,并且然后使用更新后头部姿态传感器数据来在考虑更新后头部方位(姿态)数据的情况下渲染原始帧的“更新后”版本。然后显示帧的“更新后”版本。这允许在显示器上显示的图像更接近地匹配用户最新的头部方位。
为了进行该处理,由GPU将初始“应用”帧渲染到存储器中的适当缓冲器中,但然后存在第二渲染处理,该第二渲染处理获取存储器中的初始应用帧,并且使用最新的头部方位(姿态)数据来在考虑最新头部方位的情况下渲染初始渲染了帧的版本,来提供将向用户显示的帧。这通常涉及基于头部方位(姿态)数据对初始帧执行某一形式的变换。将实际上要显示的、所谓的“时间扭曲”渲染的帧写入到存储器中的另外缓冲器中,然后从该缓冲器读出帧,以由显示控制器显示。为了提供较平滑的虚拟现实显示,可以以比GPU渲染初始应用帧的帧率(例如,每秒30帧)高的帧率(例如,每秒90或120帧)来执行时间扭曲处理。
发明内容
申请人相信对于执行用于数据处理系统中的虚拟现实显示器的“时间扭曲”渲染存在改进结构的范围。
在从第一方面看时,本发明提供了一种提供用于显示的输出面的方法,方法包括以下步骤:
生成用于提供用于显示的输出面的一个或更多个输入面,其中,生成一个或更多个输入面的步骤包括以比生成输入面的中心区域的保真度低的保真度生成输入面的外围区域和/或以比生成多个输入面中的其他输入面的保真度低的保真度生成多个输入面中的一个输入面;以及
基于所接收的观看方位数据选择所生成的一个或更多个输入面中的至少一个输入面的部分,来提供用于显示的输出面。
在从第二方面看时,本发明提供了一种用于提供用于显示的输出面的数据处理系统,数据处理系统包括:
渲染电路,该渲染电路可进行操作而生成用于提供用于显示的输出面的一个或更多个输入面,其中,渲染电路可进行操作而以比生成输入面的中心区域的保真度低的保真度生成输入面的外围区域和/或以比生成多个输入面中的其他输入面的保真度低的保真度生成多个输入面中的一个输入面;以及
显示合成电路,该显示合成电路可进行操作而基于所接收的观看方位数据选择所生成的一个或更多个输入面中的至少一个输入面的部分,来提供用于显示的输出面。
本发明涉及提供用于显示的输出面(例如,帧)的方法和可进行操作而向显示器提供用于显示的输出面(帧)的数据处理系统。如使用依赖于头部姿态跟踪的时间扭曲处理来提供用于显示的输出面的传统显示系统,本发明的方法和数据处理系统生成(例如,渲染)用于提供这种输出面的输入面(例如,帧)。输入面通常(且优选地)基于例如在输入面被假设为有效的时间段内的头部运动的许可或预期量来表示宽视场(即,在该宽视场上来生成)。
然后,在要显示输入面时,将使用例如时间扭曲处理来基于例如来自虚拟现实或增强现实视图器(headset)的一个或更多个最近接收的观看方位数据来显示输入面的更新后版本作为输出面。本发明的方法和数据处理系统基于所接收的观看方位数据选择输入面的部分(例如,适当的窗口(“信箱”))来形成输出面,来提供向用户显示的实际输出图像面。
然而,与传统显示系统相反,本发明的方法和数据处理系统生成具有以比输入面的中心低的保真度(例如,质量和/或分辨率)生成的外围的输入面,和/或生成多个输入面,该多个输入面中的一个输入面以较低保真度生成。然后基于所接收的观看方位数据(例如且优选地为头部位置(姿态)(跟踪)信息)选择所生成的一个或更多个输入面中的至少一个输入面的部分,以形成用于显示的输出面。
申请人已经理解,在传统系统中,基于头部姿态跟踪(例如,在时间扭曲处理中)使用输入面来提供输出面潜在地会是存储带宽和功率密集的。这是因为将需要以较高帧率读取并“时间扭曲”输入面(该输入面通常将已经以高分辨率来渲染)。这会导致大存储交换、以及大存储和总线带宽使用。
然而,申请人已经认识到,通过以较低保真度生成输入面的边缘或输入面的版本以在合成输出面时使用,可以(例如,在已经检测到在小时间间隔中的大的头部移动时)显示输入面的部分的较低质量版本,例如,在输出面的边缘周围。这是因为小时间间隔中的大的头部移动可能导致看见输入面的边缘。然而,由于观看者在这种环境中较快速地移动他们的头部,所以他们通常将不能以同样多的细节看到图像。此外,由于由虚拟现实视图器产生的(桶形)失真的性质,帧的边缘可能在任何事件中失真,因此这些边缘的较低质量显示可能再次为用户所接受。
因此,本发明通过以下方式来利用这一点:提供(依赖于所接收的观看方位数据)选择具有较低保真度的输入面的部分或版本以用于输出面的能力,使得在时间扭曲处理中,例如,用于显示的输出面可以能够由输入面的较低保真度部分或版本来形成,例如,朝向输入面的边缘,在此该质量降低可能对用户不显著。这然后具有以下效果:例如在读取、时间扭曲以及读出输入和输出面时允许被显示的输出面的这些部分消耗较少的存储带宽等。
渲染电路生成的一个或更多个输入面可以为任何合适且期望的这种表面。优选地,一个或更多个输入面是被预期用于生成要在与显示合成电路关联的显示器上显示的输出面中的一个或更多个输入面。优选地,一个或更多个输入面,例如每个输入面,是用于显示的图像,例如,帧。
优选地,用作选择输出面(来自输入面的部分)的基础的一个或更多个输入面包括一个或更多个帧,该一个或更多个帧针对诸如游戏这样的应用的显示而被生成,但要在它们被初始渲染(例如且优选地,将经受“时间扭曲”处理)之后基于所确定的观看方位来显示。
一个或更多个输入面(和各输入面)可以包括数据元素(采样位置)(例如,像素)的阵列,对于各数据元素存储适当的数据(例如,一组颜色值)。
数据元素(例如,像素)可以按多个数据元素的块分组在一起(并照此处理)。由此,优选地,输入面的数据元素按多个数据元素的块来分组在一起并处理。优选地,输出面的数据元素按多个数据元素的块来分组在一起并处理。
就此而言,输入面的块(区域)可以为输入面的任何合适且期望的块(区域)。各块优选地包括输入面的限定的采样(数据)位置(数据元素)的(二维)阵列,并且沿各轴方向延伸多个采样位置(数据元素)。块优选地为矩形,并且优选地为正方形。块例如可以各包括输入面的4×4、8×8或16×16个采样位置(数据元素)。
优选地,在比用于显示的输出面大的视场(例如,较大的区域)上生成一个或更多个输入面中的至少一个,特别是在从相同的一个或更多个输入面选择多个连续输出面的时候。这帮助适应于在生成输入面与选择输出面之间(例如,在生成随后输入面之前)的时间段中的(例如,合理数量的)头部移动。期望的头部移动(由此和所生成的一个或更多个输入面的大小)可以依赖于应用,例如依赖于所绘制图像的类型。
一个或更多个输入面可以根据期望来生成。
一个或更多个输入面由渲染电路(例如由显示合成电路为其一部分的数据处理系统的图形处理单元(图形处理器))来生成(渲染),但它们还可以或相反由整个数据处理系统的另一个部件或多个部件(诸如CPU或视频处理器)来生成或提供(如果期望)。优选地,渲染电路响应于来自需要显示的应用(诸如(例如,在中央处理单元(CPU)上执行的)游戏)的适当命令和数据来生成一个或更多个输入面。
如同基于所接收的观看方位数据选择的输出面,优选地,一个或更多个输入面也基于所接收的观看方位数据来生成。由此,例如,在(例如,每当)(由渲染电路)生成一个或更多个输入面时,使用(例如,此时的)所接收的观看方位数据来生成一个或更多个输入面,例如使得应用适当地基于所接收的观看方位数据来绘制一个或更多个输入面。
所生成的一个或更多个输入面优选地存储在例如帧缓冲器中、存储器中,然后由显示合成电路从该帧缓冲器、存储器读取这些输入面,以生成输出面。由此,优选地,方法包括以下步骤(并且渲染电路可进行操作而):将一个或更多个输入面写输出到例如存储器(例如,存储器中的帧缓冲器)。优选地,方法包括以下步骤(并且显示合成电路可进行操作而):(例如,从存储器(例如,该存储器中的帧缓冲器))读取在提供用于显示的输出面时使用的一个或更多个输入面。
存储一个或更多个输入面的存储器可以包括任何合适的存储器,并且可以以任何合适且期望的方式来配置。例如,存储器可以为具有渲染电路和/或显示合成电路的片上存储器,或者它可以为外部存储器。优选地,存储器是外部存储器,诸如整个数据处理系统的主存储器。存储器可以为用于该目的的专用存储器,或者它可以为也用于其他数据的存储器的一部分。优选地,一个或更多个输入面存储在帧缓冲器(例如,“眼睛”缓冲器)中(并从其读取)。
用于提供(例如,合成)用于显示的输出面的一个或更多个输入面可以以任何合适且期望的方式来生成。在一个实施方式中,生成(例如,仅)单个输入面,该输入面在其外围周围以比其中心处低的保真度来生成。
由于随后从具有较低保真度外围区域的输入面的部分(即,非全部)来选择输出面,所以在该实施方式中,较低保真度的外围例如在所接收的观看方位数据指示小时间间隔中的大的头部移动时可以被选择为形成输出面的仅部分。在这种环境中,观看者通常将不能以同样多的细节看到图像(由于他们头部移动的速度),因此可以被选择为形成输出面的至少部分的输入面的较低保真度部分可以为观看者所接受。
相反,在所接收的观看方位数据指示存在较少或不存在头部移动时,被选择为形成输出面的输入面的部分可以例如依赖于输入面的外围和中心区域的相对大小全部或主要从输入面的较高保真度的中心区域来选择。这然后帮助在观看者的头部移动有限并且他们将能够觉察出任意显著的质量降低时提供较高质量显示。
(以较低保真度生成的)外围区域例如与中心区域的大小和/或形状相比可以为任何合适且期望的大小和/或形状。外围区域的大小和/或形状可以依赖于预期量的头部移动,该头部移动转而可以依赖于应用和被绘制的图像的类型。将理解的是,特定应用可以影响用户进行大的头部移动的可能性。
由此,例如,如果用户不太可能将执行足够大的头部移动以至于看到外围区域,则可以在不降低如由用户观看的所显示图像的感知质量的情况下降低外围区域的保真度(例如,分辨率)和/或可以增大外围区域的大小。此外,如果用户进行大的头部移动,则他们可能不能理解与他们对于较小的头部移动可以理解的一样多的、所显示图像中的细节。由此,再次,因此可以设置外围区域的保真度和大小。外围区域的大小和/或形状还可以依赖于以下各项中的一项或更多项或全部:显示面板的质量(例如,分辨率)、(例如,头戴式)显示系统中的镜头的质量、显示的刷新率(例如,每秒90或120帧)、观看输入面的外围区域所需的头部移动的量、用于输入帧的帧缓冲器的范围、渲染电路和/或显示合成电路的处理能力、数据处理系统的带宽和/或功率限制、数据处理系统的电池寿命、用户的视觉、基于来自(例如,应用的)用户和/或开发者的分析的反馈等。
优选地,外围区域在中心区域周围(即,围绕该区域)一直延伸。优选地,外围区域的面积是其形成部分的输入面的面积的10%至20%。
类似地,输入面可以以任何合适且期望的大小来生成。优选地,一个或更多个输入面例如基于被生成的图像的类型跨足够大范围(例如,视场)来生成,以能够提供用于最合理头部移动(例如,包括较极端的头部移动)的输出面。如果头部移动例如在从输入面选择的连续输出面之间太快,那么可能尝试从在输入面的边界外部的区域选择输出面的至少部分,这一点可能是期望避免的。
在另一、优选、实施方式中,生成一个或更多个输入面的步骤包括生成多个输入面,该多个输入面中的(例如,至少)一个以比多个输入面中的其他输入面低的保真度来生成。由此,优选地,生成多个输入面的步骤包括以特定(例如,高)保真度生成第一输入面,并且以比第一输入面的保真度低的保真度生成第二输入面。
在该实施方式中,优选地,多个输入面包括同一输入面的多个版本。由此,优选地,多个输入面中的每个输入面表示例如仅处于不同保真度的、用于显示的同一图像。优选地,在渲染用于显示的输入帧时的特定时间步长中生成多个输入面(由此,例如基于此时所接收的观看方位数据在下一时间步长处生成另一组多个输入面)。
多个输入面可以为任何合适且期望(例如,相对)大小。在一组实施方式中,多个输入面为相同(例如,形状和)大小,并且优选地在与彼此相同的视场上来生成。
在另一组实施方式中,多个输入面可以不是相同(例如,形状和)大小,或者可以不在与彼此相同的视场上生成。优选地,多个输入面中的至少一个小于多个输入面中的其他输入面,并且优选地在比多个输入面中的其他输入面小的视场上来生成。优选地,具有比多个输入面中的其他输入面高的保真度的输入面小于多个输入面中的其他输入面。优选地,较小的高保真度输入面与多个输入面中的其他输入面(较大的较低保真度)的中心区域对应。
由此,在特别优选的实施方式中,生成较大的较低保真度输入面以及与较低保真度输入面的中心区域对应的较小的较高保真度输入面这两者。如合适且期望的,较小的较高保真度输入面然后能够用于提供用于输出面的中心区域的较高保真度数据,并且较大的较低保真度输入面能够用于提供用于输出面的外围区域的较低保真度数据。
不同尺寸的输入面可以被生成为具有它们不同的相应大小。另选地,初始可以以相同大小生成多个输入面,然后例如可以在从输入面中的其他输入面得到输入面中的一个或更多个输入面时或在将多个输入面写输出(例如,到帧缓冲器)时形成不同尺寸的输入面。例如,可以不是写输出所有初始生成的输入面,以形成较小的输入面。
在生成多个输入面时可以生成任何合适且期望数量的输入面,但在该实施方式中,这将尤其包括以较高保真度生成的输入面和以更低保真度生成的输入面。优选地,多个输入面中的每一个以不同的相应保真度来生成。由此,生成多个输入面的步骤可以包括以多个不同相应的保真度来生成多个输入面。如以上所讨论的,这些输入面中的每一个可以为例如覆盖(例如,最大输入)面的全部或部分的不同大小。
当以多个不同保真度生成多个输入面时,优选地,(对于生成特定输入面的保真度的等级)在相应输入面的面积上以均匀保真度生成多个输入面中的每个。
具有较低保真度外围的输入面或输入面中的(至少)一个具有较低保真度的多个输入面可以以任何合适且期望的方式来生成,例如,较低保真度的外围或较低保真度的面可以以任何合适且期望的方式来生成。在一个实施方式中,渲染电路可进行操作而在(初始)渲染一个或更多个输入面时以不同(即,较低和较高)保真度(在一个输入面内或在不同相应面中)生成一个或更多个输入面。由此,初始可以(例如,由GPU在执行用于应用的指令时)以较低保真度生成较低保真度的外围或较低保真度的面。同样,初始可以以较高保真度产生较高保真度的中心区域或较高保真度的面(例如,使得在不从先前生成的面的其他部分得到的情况下最初产生面的不同部分或不同面)。
然而,在另一、优选、实施方式中,较低保真度的外围或较低保真度的面源于以较高保真度生成(例如,通过压缩以较高保真度生成的输入面的相关部分生成)的输入面的(至少)部分。由此,在一个实施方式中,方法包括以下步骤:(例如,以特定(例如,均匀,例如,高)保真度)生成初始输入面并压缩初始输入面的外围,以将初始输入面转换成具有保真度比在初始输入面中生成的外围的保真度低(和保真度比在(初始且转换后的)输入面的中心区域的保真度低)的外围的输入面,或者从初始输入面得到(例如,各)具有比初始输入面的保真度低的保真度的一个或更多个另外的输入面。由此,优选地,输入面的较低保真度外围或较低保真度输入面是对应的较高保真度输入面(例如,其外围)的较低保真度版本,并且(例如,通过首先生成较高保真度的输入面且然后从其创建较低保真度版本)照此产生。
对于后者实施方式,优选地,方法包括以下步骤:(例如,首先生成且然后)压缩(例如,较高保真度)初始输入面,以得到具有比初始输入面的保真度低的保真度的一个或更多个另外输入面。对于这两个实施方式,优选地,数据处理系统包括可进行操作而压缩初始输入面(例如,其外围)的压缩电路。
申请人已经理解,例如,除了压缩初始输入面(例如,其部分)以形成较低保真度输入面(例如,其部分)外,还可以例如在没有保真度的任何(显著)损失的情况下压缩要形成较高(或最高)保真度的输入面(例如,其部分)的初始输入面(例如,其部分)。这例如可以通过使用无损压缩技术来实现,这些无损压缩技术例如可以利用在初始输入面的部分上的数据值的冗余。由此,可以压缩初始输入面的整体,输入面的较高保真度版本或部分使用无损(或更少损失)压缩来压缩,并且输入面的较低保真度版本或部分使用有损(或更有损)压缩来压缩。
将理解的是,在从(例如,初始)输入面得到多个输入面中的一个或更多个输入面时,可以不同时和/或由同一部件生成多个输入面。由此,在一组实施方式中,(例如,可以由在CPU上执行的应用)生成初始(例如,更高保真度)输入面,并且随后例如通过压缩初始输入面从初始输入面(例如,由CPU)得到多个输入面中的其他输入面(例如,更低保真度)输入面。多个输入面中的其他输入面可以在处理初始输入面以执行异步时间扭曲和/或镜头校正时形成。
初始输入面(例如,其外围)可以以任何合适且期望的方式来压缩。在一个实施方式中,渲染电路可进行操作而压缩初始输入面(例如,其外围)(由此,渲染电路可以包括用于该目的的压缩电路)。由此,渲染电路可以生成压缩格式的初始输入面(例如,其外围)。因此,在该实施方式中,渲染电路生成并然后例如在将输入面写输出(例如,到帧缓冲器)之前压缩初始输入面。由此,优选地,渲染电路可进行操作而生成初始输入面并压缩初始输入面(例如,其外围),以形成具有保真度比在初始输入面中生成的外围的保真度低的外围的输入面或形成(例如,跨输入面的整体)具有比初始输入面的保真度低的保真度的一个或更多个另外输入面。
在另一实施方式中,渲染电路(例如,以特定(例如,均匀,例如,高)保真度)生成初始输入面并在写输出输入面时压缩初始输入面(例如,其外围),即,以生成具有保真度比在初始输入面中生成的外围的保真度低的外围的输入面或生成具有比初始输入面的保真度低的保真度的一个或更多个另外输入面。由此,优选地,方法包括以下步骤(并且数据处理系统包括(例如,单独的)压缩(例如,写输出)电路,该压缩电路可进行操作而):在将初始输入面(例如,其外围)的压缩版本写输出(例如,到(帧)缓冲器)时压缩初始输入面(例如,其外围),以写输出具有保真度比在初始输入面中生成的外围的保真度低的外围的输入面或写输出具有比初始输入面的保真度低的保真度的一个或更多个另外输入面。
申请人的专利US 8542939B2、US 9014496B2、US 8990518B2以及US 9116790B2中描述了一个这种帧缓冲器压缩技术。复制所生成的初始输入面以产生输入面的压缩后的较低保真度部分或版本帮助避免必须从第一原理生成各输入面的多个部分或版本。
输入面的(例如,外围)的保真度可以在保真度的任何合适且期望的特性上低于另一个输入面(例如,其区域)的保真度。在一个实施方式中,具有较低保真度的输入面(例如,其外围)包括比较高保真度输入面(例如,其中心区域)中的分辨率低的分辨率(例如,数据元素(例如,像素)的密度)。
(例如,代替分辨率或除了分辨率之外还)可以改变来获得较低保真度的其他特性包括使用较低精度和/或使用较小动态范围(例如,用于关于输入面的显示生成并存储的数据中的任一个)和/或使用较高损失压缩率等。如上,获得较低保真度的这些特性中的一个或更多个的差异可以以任何合适且期望的方式(例如,使用压缩技术)来实现。
例如如上所描述的输入面的生成凭借本身的能力而被认为是新型且发明性的。由此,在从第三方面看时,本发明提供了一种生成在提供用于显示的输出面时使用的一个或更多个输入面的方法,方法包括以下步骤:
生成用于提供用于显示的输出面的一个或更多个输入面,其中,生成一个或更多个输入面的步骤包括以比生成输入面的中心区域的保真度低的保真度生成输入面的外围区域和/或以比生成多个输入面中的其他输入面的保真度低的保真度生成多个输入面中的一个输入面,并且其中,一个或更多个输入面在比输出面的视场大的视场上生成;以及
将所生成的一个或更多个输入面写输出到存储器,以用于提供用于显示的输出面中。
在从第四方面看时,本发明提供了一种用于生成在提供用于显示的输出面时使用的一个或更多个输入面的设备,该设备包括:
渲染电路,该渲染电路可进行操作而生成用于提供用于显示的输出面的一个或更多个输入面,其中,渲染电路可进行操作而以比生成输入面的中心区域的保真度低的保真度生成输入面的外围区域和/或以比生成多个输入面中的其他输入面的保真度低的保真度生成多个输入面中的一个输入面,并且其中,渲染电路可进行操作而在比输出面的视场大的视场上生成一个或更多个输入面;以及
写输出电路,该写输出电路可进行操作而将所生成的一个或更多个输入面写输出到存储器,以用于提供用于显示的输出面中。
旦当已经(例如,以以上所概述的实施方式中的任一个的方式)生成了一个或更多个输入面时,基于所接收的观看方位(例如,头部姿态)数据选择输入面中的至少一个输入面的部分,来提供用于显示的输出面。优选地,用于显示的输出面从比生成输入面的视场(例如,面积)小的视场(例如,面积)来选择,即,用于显示的输出面在选择输入面中的至少一个输入面的部分时优选地不使用输入面的完整范围。
如本领域技术人员将理解的,本发明的这些方面可以酌情(且优选地确实)包括这里所讨论的本发明的优选和可选特征中的任一个或更多个或全部。
在本发明的这些和其他方面和实施方式中,将理解,虽然方法和数据处理系统或设备可以被配置为生成仅根据主要实施方式中的一个实施方式的一个或更多个输入面(例如,具有较低保真度的、输入面的外围区域,或多个输入面中的一个输入面处于较低保真度),但方法和数据处理系统或设备可以被配置为生成根据这两个实施方式的一个或更多个输入面。方法和数据处理系统或设备然后可以被配置为在提供输出面时在以这些方式生成的一个或更多个输入面之间选择和/或方法和数据处理系统或设备可以被配置为在生成一个或更多个输入面(或例如其序列)时选择性地生成根据这些主要实施方式中的一个或另一实施方式的一个或更多个输入面(根据期望)。
可以基于所接收的观看方位数据选择所生成的一个或更多个输入面中的至少一个输入面的部分,以用任何合适且期望的方式提供用于显示的输出面。优选地,选择一个或更多个所生成输入面中的至少一个输入面的部分的步骤包括(并且显示合成电路可进行操作而)(例如,基于所接收的观看方位数据)读取一个或更多个所生成输入面中的至少一个输入面的部分,以提供用于显示的输出面。
优选地,方法包括以下步骤(且显示合成电路可进行操作而):对于将被输出以用于显示的输出面中的数据元素位置,使用所接收的观看方位数据来确定一个或更多个输入面中的对应位置;并且对在一个或更多个输入面中的一个输入面中的所确定的对应位置处的数据进行采样,来提供在输出面中的数据元素位置处使用的数据。
当已经确定输入面中的位置(其数据要用于输出面中的数据元素(采样位置))时,那么优选地,在所确定的位置处对输入面采样,以提供用于输出面中的数据元素(采样位置)的数据值。就此而言,输入面可以以任何合适且期望的方式来采样。
因此,在一个实施方式中(例如,在生成单个输入面时,该输入面以在其外围周围比在其中心处低的保真度来生成),从该输入面的适当部分简单选择输出面(即,基于所接收的观看方位数据)。因此,输出面的整体可以从单个输入面来选择。
由此,当所接收的观看方位数据指示没有或有较少的头部移动时,例如,输出面仅可以(依赖于输出面与输入面相比的相对大小)从来自输入面的中心区域(处于较高保真度)(例如,其部分)选择,并且不从较低保真度的输入面的外围来选择。
在所接收的观看方位数据指示存在(例如,小时间段中的)大的头部移动时,可以从包括外围(处于较低保真度)的输入面的部分来选择输出面(例如,其至少一部分)。在这种情况下,输出面还可以(或可以不,这例如依赖于所接收的观看方位数据)包括中心区域的部分。
在另一实施方式中(例如,当生成多个输入面时,该多个输入面中的至少一个处于比输入面中的其他输入面低的保真度),可以基于所接收的观看方位数据以任何合适且期望的方式使用多个输入面来选择输出面。再次,优选地,使用所接收的观看方位数据来选择用于显示的输出面中的、输入面的适当部分。
优选地,使用所接收的观看方位数据来选择多个所生成输入面中的哪个用于形成输出面。仅单个输入面可以用于选择其部分来形成输出面。例如,在所接收的观看方位数据指示有较少或没有头部移动时,例如,仅具有较高或最高保真度的输入面可以用于选择其部分来形成输出面。
相反,在所接收的观看方位数据指示有(例如,小时间段中的)较大的头部移动时,例如,仅具有较低或最低保真度的输入面可以用于选择其部分来形成输出面。
然而,在该实施方式中,因为已经生成多个输入面,所以可以选择来自输入面中的超过一个输入面的部分来形成输出面。优选地,方法包括以下步骤(且显示合成电路可进行操作而):对于输出面中的数据元素位置,在(例如,所接收的观看方位数据指示)对应位置位于一个或更多个输入面的外围区域中时对在较低保真度输入面中的对应位置处的数据进行采样(以提供用于在输出面中的位置处的数据元素的数据)。
对应地,优选地,方法还包括以下步骤(且显示合成电路可进行操作而):对于输出面中的数据元素位置,在(例如,所接收的观看方位数据指示)对应位置位于一个或更多个输入面的中心区域中时对在较高保真度输入面中的对应位置处的数据进行采样(以提供用于在输出面中的位置处的数据元素的数据)。
(当在外围区域具有比中心区域低的保真度的情况下生成输入面时,用于在输出面中的数据元素位置的对应位置的外围区域优选地是具有较低保真度的该同一外围区域。然而,在已经生成多个输入面时(该多个输入面中的一个输入面处于较低保真度),优选地,(例如,以与在生成单个可变保真度输入面时相同的方式)定义(例如,输入面中的数据元素位置的)外围区域,以确定对应位置何时位于外围(由此以及中心)区域中。)
将理解的是,使用多个输入面中的所确定的对应位置来选择哪个保真度等级用于输出面中(即,对于输出面采样)可以导致与生成单个输入面(具有较低保真度外围)的实施方式中相同的输出显示(例如,假使以相同方式定义用于多个输入面的外围区域)。
从上述内容将理解,优选地,显示合成电路通过读取输入面中的一个或更多个采样位置(例如,像素)作为输入并使用这些采样位置来生成输出面的输出采样位置(例如,像素)来操作。换言之,显示合成电路优选地进行操作而通过从针对输入面中的采样位置(例如,像素)的数据值生成针对输出面中的相应采样位置(例如,像素)的数据值来生成输出面。
(如本领域技术人员将理解的,输入面(和输出面)中的已定义采样(数据)位置(数据元素)可以(且在一个实施方式中确实)与显示器的像素对应,但这不需要必须为这种情况。例如,在输入面和/或输出面经受某一形式的降采样的情况下,那么将存在与显示器的各像素对应的、输入面和/或输出面中的一组多个数据(采样)位置(数据元素),而不是存在表面采样(数据)位置到显示器像素的一对一映射。)
由此,优选地,显示合成电路对于输出面所需的一个(且优选地为多个,并且优选地为各个)采样位置(数据元素)进行操作而对于输出面采样位置确定用于生成该输出面采样位置的一组一个或更多个(且优选地为一组多个)输入面采样位置,然后使用这些所确定的输入面采样位置来生成输出面采样位置(数据元素)。
如以上所概述的,从用于输出帧的输入帧采样的数据的保真度等级优选地依赖于输入帧中的位置。由此,例如,当被采样的输入帧中的位置落在输入帧的外围区域中时,使用较低保真度数据,该数据来自可变保真度输入帧的较低保真度外围区域或来自输入帧的较低保真度版本的外围区域。
优选地,被采样的数据的保真度等级基于(考虑)一个或更多个其他因素以及观看方位。
优选地,被采样的数据的保真度等级还考虑(基于)将由于用户观看所显示的输出面将借助的镜头而引起的任何失真(例如,桶形失真)。申请人就此而言已经认识到,通常将借助镜头观看由虚拟现实视图器显示的输出帧,这些镜头通常向被观看的帧施加诸如桶形失真这样的几何失真。
因此,由于这种镜头特别是在可能存在较大失真的、用于显示的输出面的外围周围将引起的(几何)失真,例如,除了将在从输入帧的外围区域采样时使用的较低保真度数据用于输出帧的外围区域中可以不创建显著差别之外,将较低保真度数据用于输出帧的外围区域中也可以不创建显著差异。
由此,优选地,显示合成电路可进行操作而考虑来自观看输出面将借助的镜头的(预期)(几何)失真,并且基于该(预期)镜头(几何)失真选择用于输出面中的数据的保真度等级。这可以增加被使用的较低保真度数据的部分(与被使用的更高保真度数据相比),这由此帮助例如在读取输入面数据、时间扭曲并写输出输出面时消耗较少的存储带宽等。
由此,当生成多个输入面时(它们中的至少一个处于比输入面中的其他输入面低的保真度),优选地,方法包括以下步骤(且显示合成电路可进行操作而):对于在输出面的外围区域中的数据元素位置,确定在较低保真度输入面中的对应位置;并且对在较低保真度输入面中的所确定的对应位置处的数据进行采样,来提供在输出面的外围区域中的数据元素位置处使用的数据。
输出帧的外围数据可以以任何合适且期望的方式(例如基于观看显示器所借助的镜头的已知失真)来确定,由此,可以具有任何合适且期望的大小和/或形状。输出帧的外围区域的大小和/或形状例如关于输入面的外围区域还或相反可以基于以下各项中的一项或更多项或全部:显示面板的质量(例如,分辨率)、(例如,头戴式)显示系统中的镜头的质量、显示的刷新率、观看输入面的外围区域所需的头部移动的数量、用于输入帧的帧缓冲器的范围、渲染电路和/或显示合成电路的处理能力、数据处理系统的电池寿命、用户的视觉等。
观看方位数据可以为表示观看方位(观看方向)的任何合适且期望的数据。优选地,观看方位数据表示且指示期望观看方位(观看方向),输入面的部分(即,输出面)要被显示为犹如从该观看方位观看(要关于该观看方位显示被选择的输入面的部分)。
优选地,观看方位数据表示要相对于基准(例如,预定义)观看位置(该观看位置可以为但不需要是“笔直向前的”观看位置)显示输入面的部分的观看位置的方位。参考观看位置优选地为生成(渲染)输入面所关于的观看位置(方向(方位))。由此,优选地,观看方位数据指示要相对于生成(渲染)输入面所关于的观看位置(方向)显示输入面的部分的观看位置的方位。
观看方位数据优选地表示要相对于基准观看位置显示输入面的部分的观看位置的旋转。观看位置旋转可以根据期望(诸如以三个(欧拉(Euler))角的形式)或作为四元数来提供。由此,优选地,观看方位数据包括一个或更多个(且优选地为三个)角(欧拉角),这些角表示要相对于基准(例如,预定义)观看位置显示输入面的部分的观看位置的方位。
观看方位数据在使用中可以以任何适当且期望的方式提供给显示合成电路。该数据优选地由需要显示输出面的应用来适当提供。观看方位数据优选地例如以所选且优选预定义的速率提供给显示合成电路,显示合成电路然后酌情使用所提供的观看方位数据来控制其操作。优选地,更新后观看方位数据以例如90Hz或120Hz的显示刷新率提供给显示合成电路。
当从输入面的部分生成输出面时由显示合成电路使用的观看方位数据可以以任何合适且期望的方式提供给显示合成电路(由其接收)。观看方位数据优选地被写入到显示合成电路的合适本地储存器(例如,寄存器)中,然后可以在从输入面的部分生成输出面时由显示合成电路从该本地储存器读取并使用该观看方位数据。
优选地,观看方位数据包括头部位置数据(头部姿态跟踪数据),其例如且优选地从虚拟现实显示视图器的适当头部位置(头部姿态跟踪)传感器感测,显示合成电路将用于显示的图像提供给该虚拟现实显示视图器。例如包括任何头部位置(头部姿态跟踪)传感器和关联逻辑的、用于确定观看方位数据的电路可以如合适且期望的设置在头戴式显示器内部或外部。例如,头部位置传感器可以包括可以位于头戴式显示器内部的一个或更多个加速计。还可以设置可以在头戴式显示器之外的另外传感器,诸如无线电或视觉跟踪传感器。这些传感器可以代替或连同其他传感器(例如,加速计)一起用于确定观看方位数据。
例如已采样观看方位(例如,头部位置(姿态))数据优选地以适当方式且以适当速率(例如且优选地为由关联的头戴式显示器对数据采样的相同速率)提供给显示合成电路。显示合成电路然后可以酌情使用所提供的头部姿态跟踪(观看方位)信息来控制其操作。
由此,观看方位数据优选地包括适当采样的头部姿态跟踪数据,该数据例如且优选地由显示合成电路耦合到(且将用于显示的输出面提供到)的虚拟现实视图器定期确定。
显示合成电路可以集成到视图器(头戴式显示器)本身中,或者它可以以其他方式耦合到视图器,例如经由有线或无线连接。
由此,优选地,本发明的方法包括以下步骤(且显示合成电路和/或数据处理系统被适当配置为):对用于由显示合成电路使用的观看方位数据(例如,头部位置数据)定期采样(例如且优选地,借助于显示合成电路将用于显示的输出已变换面提供到的头戴式显示器的适当传感器),并且向显示合成电路定期提供已采样观看方位数据,显示合成电路然后在选择输入面的部分以提供输出面时使用所提供的已采样观看方位数据。
显示合成电路优选地被配置为以适当间隔(诸如在生成各(例如,组)输入面和/或各输出面的开始时)基于新观看方位数据(头部跟踪数据)更新其操作。优选地,显示合成电路定期且优选地在每当要生成输出面时基于最新提供的观看方位(头部跟踪)信息更新其操作。
在一个实施方式中,除了基于所接收的观看方位数据选择例如以确定是从输入面选择低保真度数据还是高保真度数据的输出面外,渲染电路还可进行操作而基于所接收的观看方位数据的保真度等级生成输入面。由此,例如,在所接收的观看方位数据指示没有或有较少头部运动时,渲染电路可以以较高保真度(但例如以较低帧率)生成输入面。相反,例如,在所接收的观看方位数据指示有重大的头部运动时,渲染电路可以以较低保真度(但例如以较高帧率)生成输入面。
由此,优选地,渲染电路可进行操作而基于所接收的观看方位数据在较高保真度(和例如较低帧率)模式与较低保真度(和例如较高帧率)模式之间切换,其中,渲染电路可进行操作而在所接收的观看方位数据指示没有或有较少头部移动时以较高保真度(且例如以较低帧率)在较高保真度(和例如较低帧率)模式生成输入帧,并且在所接收的观看方位数据指示有大的头部移动时以较低保真度(且例如以较高帧率)在较低保真度(和例如较高帧率)模式生成输入帧。
较高保真度和较低保真度模式可以以任何合适且期望的方式基于所接收的观看方位数据由渲染电路来选择。例如,渲染电路在所接收的观看方位数据指示用户的头部移动使得将尝试从输入面的边界外部选择由输入面生成的输出面中的一些时切换到较低保真度模式。由此,通过切换到较低保真度模式且例如以较高帧率生成输入面,可以(基于所接收的观看方位数据)生成输入面,以适应用于要从各输入面选择的输出面的大的头部移动。
当生成多个输入面(该多个输入面中的一个输入面处于较低保真度)时,例如可以由于生成这些表面所花费的时间而使得这种输入面在不同时间可用于显示合成电路(例如,被写输出到用于显示合成电路的帧缓冲器)。如将理解的,较高保真度的面可以花费较长的时间来生成,由此,优选地,显示合成电路可进行操作而从在选择输入面的部分生成输出面时可用的输入面选择输出面。
由此,如果较高保真度的面(例如,最初)不可用,则优选地,显示合成电路可进行操作而从较低保真度(在可用时)选择输出面。随着较高保真度的面变得可用且在较高保真度的面变得可用时,显示合成电路可以从较高保真度的面选择输出面(如果这基于所接收的观看方位数据被确定为是适当的)。
输出面的合成凭借本身的能力而被认为是新型且发明的。由此,在从第五方面看时,本发明提供了一种合成用于显示的输出面的方法,方法包括以下步骤:
选择输入面的部分来形成用于显示的输出面,其中,输入面包括外围区域,该外围区域具有比输入面的中心区域的保真度低的保真度;或者
选择来自多个输入面的部分来形成用于显示的输出面,其中,多个输入面包括具有比多个输入面中的其他输入面的保真度低的保真度的输入面;
其中,输出面的视场小于输入面或多个输入面的视场,并且其中,选择输入面的部分或选择来自多个输入面的部分的步骤基于所接收的观看方位数据;以及
向显示器提供输出面。
在从第六方面看时,本发明提供了一种用于合成用于显示的输出面的设备,该设备包括:
显示合成电路,该显示合成电路可进行操作而:
选择输入面的部分来形成用于显示的输出面,其中,输入面包括外围区域,该外围区域具有比输入面的中心区域的保真度低的保真度;或者
选择来自多个输入面的部分来形成用于显示的输出面,其中,多个输入面包括具有比多个输入面中的其他输入面的保真度低的保真度的输入面;
其中,输出面的视场小于输入面或多个输入面的视场,并且其中,显示合成电路可进行操作而基于所接收的观看方位数据选择输入面的部分或来自多个输入面的部分;以及
显示控制器,该显示控制器用于向显示器提供输出面。
如本领域技术人员将理解的,本发明的这些方面可以酌情(且优选地确实)包括这里所讨论的本发明的优选和可选特征中的任意一个或更多个或全部。
本发明的上述方面和实施方式已经基于生成不同保真度的多个输入面或具有较低保真度的外围区域(与更高保真度中心区域相比)的单个输入面。然而,申请人已经认识到,输出面的类似效果可以能够通过仅生成例如跨面(对于中心和外围区域这两者)相同(例如,较高)保真度的单个输入面但然后在显示处理期间由该输入面产生较低或较高保真度输出面区域来提供。
在这种情况下,因此,例如且优选地被提供以显示的输出面将通过(例如且优选地,依赖于(基于所接收的观看方位数据的)输入面和/或输出面中的区域的相应位置)以不同保真度写输出输入面的区域形成输出面来生成。在这种情况下,可能仅需要提供单个输入面,显示处理(例如,GPU)然后产生用于被显示的输出面的需要的较高和/或较低保真度区域并将其写输出(例如,到存储器)。
这凭借本身的能力而被认为是新型且发明的。由此,在从第七方面看时,本发明提供了一种提供用于显示的输出面的方法,方法包括以下步骤:
生成用于提供用于显示的输出面的输入面;以及
在使用输入面来提供用于显示的输出面时:
对于用于提供输出面的输入面的多个区域中的每个区域:
基于所接收的观看方位数据选择提供用于输出面的输入面区域的保真度;并且
以所选择的保真度提供用于输出面的输入面区域。
在从第八方面看时,本发明提供了一种用于提供用于显示的输出面的数据处理系统,数据处理系统包括:
渲染电路,该渲染电路可进行操作而生成用于提供用于显示的输出面的输入面;以及
显示合成电路,该显示合成电路可进行操作而:
使用输入面来提供用于显示的输出面;并且
对于用于提供输出面的输入面的多个区域中的每个区域:
基于所接收的观看方位数据选择提供用于输出面的输入面区域的保真度;并且
以所选择的保真度提供用于输出面的输入面区域。
如本领域技术人员将理解的,本发明的这些方面可以酌情(且优选地确实)包括这里所讨论的本发明的优选和可选特征中的任一个或更多个或全部。输入面的区域可以为(单个)数据元素(例如,像素),但优选地,输入面的区域包括多个数据元素(例如,像素)的块。
优选地,保真度以与如对于之前方面和实施方式概述的生成输入面的区域相同的方式基于所接收的观看方位数据来选择。由此,优选地,基于所接收的观看方位数据提供用于输出面的输入面区域的保真度基于要提供用于输出面的输入面中的输入面区域的位置来选择。
例如,在要提供的输入面的区域(例如,块)来自输入面的中心区域时(例如,在所接收的观看方位数据指示有较少或没有头部移动时),可以(且优选地是)以较高保真度(例如,生成输入面的原始保真度)选择并提供输入面区域。
由此,优选地,输入面以较高保真度来生成。
另选地,在要提供的输入面的区域(例如,块)是输入面的外围区域时(例如,在所接收的观看方位数据指示有大的头部移动时),可以(且优选地是)以较低保真度选择并提供输入面区域。
在实施方式中,选择并提供的输入面的保真度还可以依赖于输入面的区域被提供给的输出面的区域的位置。由此,例如,在要提供输入面的区域以用于输出面的中心区域中时,优选地,以原始(例如,更高)保真度选择并提供输入面的区域。
然而,在已经基于所接收的观看方位数据选择要提供的输入面的区域来以较低保真度提供时,例如,在所接收的观看方位数据指示有大的头部移动时,可以(且优选地是)以较低保真度选择并提供要提供的输入面的区域,即使当该区域用于输出面的中心区域中(否则,该区域可以以较高保真度从输入面选择并提供)。
在要提供输入面的区域以用于输出面的外围区域中时,优选地,以较低保真度选择并提供输入面的区域。优选地,即使当输入面的这种区域处于输入面的中心区域中(并由此否则可以以原始(更高)保真度来提供)时,该区域也以较低保真度来选择并提供。
优选地,输入面的区域以如对于之前方面和实施方式概述的生成输入面的(较高和较低保真度)区域相同的方式以较高或较低保真度来提供。由此,例如,优选地,以较低保真度选择并提供的输入面的区域例如在将输入面的区域写输出到帧缓冲器时通过压缩输入面的原始(例如,更高保真度)区域来提供,以用于输出面中。对应地,优选地,以较高(例如,原始)保真度选择并提供的输入面的区域通过将输入面的原始(例如,较高保真度)区域写输出(即,没有压缩)例如到帧缓冲器来提供,以用于输出面中。
除了以上所讨论的渲染电路和显示合成电路外,本发明的数据处理系统还可以另外包括数据处理系统可以合适地包括的处理级和元件中的任一个或更多个或全部。
数据处理系统优选地还包括一个或更多个层流水线,该一个或更多个层流水线可进行操作而例如在向显示处理电路、缩放级和/或合成级提供一个或更多个已处理输入面之前或在其他方面酌情对一个或更多个输入面执行一个或更多个处理操作。在数据处理系统可以处理多个输入层的情况下,可以存在多个层流水线,诸如视频层流水线、图形层流水线等。这些层流水线例如可以进行操作而提供像素处理功能,诸如像素拆包、颜色转换、(逆)伽马(gamma)校正等。
数据处理系统还可以包括后处理流水线,该后处理流水线可进行操作而对一个或更多个表面执行一个或更多个处理操作,例如以生成已后处理面。该后处理例如可以包括颜色转换、递色和/或伽马校正。
在优选实施方式中,数据处理系统还包括写输出级,该写输出级可进行操作而将输入面写到外部存储器。这将允许渲染电路将输入面写到外部存储器(诸如帧缓冲器),例如且优选地,在生成输出面时可以由显示合成电路从外部存储器(例如,选择性地)读取输入面。
在优选实施方式中,数据处理系统还包括写输出级,该写输出级可进行操作而将输出面写到外部存储器。这将允许显示合成电路例如且优选地与在显示器上显示输出面同时地例如将输出面(选择性地)写到外部存储器(诸如帧缓冲器)。
在这种结构中,在优选实施方式中,数据处理系统因此进行操作而显示输出面并将其写输出到外部存储器(随着它由显示合成电路生成并提供)。这例如在可以期望通过向先前的(“基准”)输出面应用一组差值生成输出(时间扭曲后)面的情况下可以是有用的。在这种情况下,数据处理系统的写输出级例如可以用于将“基准”输出面存储在存储器中,使得它然后可用于在生成将来的输出面时使用。
其他结构当然会是可能的。
数据处理系统的各种电路和级可以根据期望来实现,例如,以一个或更多个固定功能单元(硬件)(即,该功能单元专用于不可变化的一个或更多个功能)的形式、或被实现为一个或更多个可编程处理级,例如借助于可以被编程为指定期望操作的可编程电路。可以存在固定功能级和可编程级这两者。
数据处理系统的各种级中的一个或更多个可以作为单独的电路元件提供给彼此。另外或另选地,级中的一些或所有可以至少部分由共享电路来形成。
还将可以使数据处理系统包括例如两个显示处理核,核中的一个或更多个或所有以本发明的方式来配置(如果期望)。
本发明的数据处理系统与其一起使用的显示器可以为任何合适且期望的显示器(显示面板),诸如例如,屏幕。该显示器可以包括数据处理系统(装置)的本地显示器(屏幕)和/或外部显示器。可以存在超过一个显示输出(如果期望)。
在特别优选的实施方式中,数据处理系统与其一起使用的显示器包括虚拟现实或增强现实头戴式显示器。该显示器因此优选地包括:显示面板,该显示面板用于向用户显示以本发明的方式生成的输出面;和镜头,用户将借助该镜头来观看所显示的输出帧。
对应地,显示器优选地具有关联的观看方位确定(例如,头部跟踪)传感器,这些传感器优选地基于显示器的当前和/或相对位置定期生成视角跟踪信息,并且可进行操作而向数据处理系统(向数据处理系统的显示合成电路,并且在需要时向渲染电路)定期提供该观看方位数据,以在选择输入面的部分以提供用于显示的输出面时使用,并且在需要时以便在生成输入面时使用。
数据处理系统可以(并且优选地确实)还包括中央处理单元、图形处理单元、视频处理器(编解码器)、显示控制器、系统总线以及存储控制器中的一个或更多个,并且优选地包括全部。
数据处理系统可以(并且优选地是)被配置为与外部存储器(例如,经由存储控制器)、一个或更多个本地显示器和/或一个或更多个外部显示器中的一个或更多个(并且本发明还扩展到包括上述部件中的一个或更多个的结构)通信。外部存储器优选地包括数据处理系统的主存储器(例如,该主存储器与中央处理单元(CPU)共享)。
由此,在一些实施方式中,数据处理系统包括一个或更多个存储器和/或存储装置和/或与该存储器和/或存储装置通信,该存储器和/或存储装置存储这里描述的数据,和/或存储用于这行这里描述的处理的软件。数据处理系统还可以与主微处理器、和/或与用于基于由数据处理系统生成的数据显示图像的显示器通信或包括它们。
对应地,根据本发明的另外方面,提供了一种数据处理系统,该数据处理系统包括:
主存储器;
显示器;
一个或更多个渲染处理单元,该一个或更多个渲染处理单元可进行操作而生成用于显示的输入面并将输入面存储在主存储器中,其中,渲染处理单元可进行操作而以比生成输入面的中心区域的保真度低的保真度生成输入面的外围区域,或可进行操作而以比生成多个输入面中的其他输入面的保真度低的保真度生成多个输入面中的一个输入面;以及
显示合成级,该显示合成级包括:
输入级,该输入级可进行操作而读取在主存储器中存储的输入面;
输出级,该输出级可进行操作而向显示器提供用于显示的输出面;以及
选择级,该选择级可进行操作而:
基于所接收的观看方位数据选择由输入级读取的所生成的一个或更多个输入面中的至少一个输入面的部分,来提供用于显示的输出面;并且
向输出级提供输出面,以作为用于显示的输出面提供给显示器。
同样,根据本发明的另外方面,提供了一种数据处理系统,该数据处理系统包括:
主存储器;
显示器;
一个或更多个渲染处理单元,该一个或更多个渲染处理单元可进行操作而生成用于显示的输入面并将输入面存储在主存储器中,其中,渲染处理单元可进行操作而生成用于提供用于显示的输出面的输入面;以及
显示合成级,该显示合成级包括:
输入级,该输入级可进行操作而读取在主存储器中存储的输入面;
输出级,该输出级可进行操作而向显示器提供用于显示的输出面;以及
选择级,对于用于提供输出面的输入面的多个区域中的每个区域,该选择级:
基于所接收的观看方位数据选择提供用于输出面的输入面区域的保真度;并且
向输出级提供输入面区域,以向显示器提供用于显示的所选择的保真度的输出面的区域。
如本领域技术人员将理解的,本发明的这些方面和实施方式可以(且优选地确实)包括这里描述的本发明的优选和可选特征中的一个或更多个,并且优选地包括全部。
由此,例如,数据处理系统优选地还包括一个或更多个本地缓冲器,并且其输入级优选地可进行操作而将从主存储器将要由显示控制器处理的输入面的数据取入到显示控制器的本地缓冲器中(然后由显示合成级处理)。
在使用本发明的数据处理系统时,将由渲染电路(例如且优选地,将由GPU、CPU和/或视频编解码器等)生成一个或更多个输入面并将其存储在存储器中。然后将由显示合成电路处理这些输入面,以向显示器提供用于显示的输出面。
显示合成电路可以在数据处理系统的任何合适且期望的部件中实施。在一个实施方式中,数据处理系统包括GPU,该GPU包括显示合成电路。由此,在该实施方式中,GPU可进行操作而生成一个或更多个输入面(并且例如将输入面写输出到帧缓冲器),然后以本发明的方式从输入面选择输出面(由此,例如,读入输入面来这么做)。
优选地,GPU然后将输出面写输出到输出帧缓冲器,以显示。因此,数据处理系统还可以包括显示控制器,该显示控制器可进行操作而例如通过从输出帧缓冲器读入输出面并向显示器发送输出面来向显示器提供输出面。
在另一个实施方式中,数据处理系统包括显示控制器,该显示控制器包括显示合成电路。由此,在该实施方式中,显示控制器可进行操作而以本发明的方式例如由GPU从已经由渲染电路生成的输入面选择输出面。再次,优选地,数据处理系统包括帧缓冲器,输入面被写到该帧缓冲器,并且显示控制器从该帧缓冲器读取输入面,以选择输出面。
在该实施方式中,因为显示控制器包括显示合成电路,所以可以不是必须设置(但在一些实施方式中将存在)输出帧缓冲器。由此,优选地,显示控制器可进行操作而直接发送用于显示的输出帧(一旦从输入帧选择)。
虽然以上已经特别参照从输入面生成单个输出面来描述了本发明,但如本领域技术人员将理解的,至少在本发明的优选实施方式中,将存在表示要向用户显示的帧的序列的连续帧的、被生成的多个输入面。数据处理系统的显示合成电路因此将优选地进行操作而提供用于显示的多个输出面的序列。由此,在特别优选的实施方式中,以本发明的方式进行的操作用于生成用于向用户显示的多个输出面的序列。对应地,优选地对于要显示的多个输出帧(例如且优选地对于要显示的帧的序列)重复以本发明的方式进行的操作。
此外,将理解,在本发明的优选实施方式中,可以从一(且优选地为各)(组)输入面生成多个输出面。例如,本发明的数据处理系统可以进行操作而执行输入面的“异步时间扭曲”来生成多个输出面。由此,对于(例如,以30帧每秒的速率)生成的各输入面,从其选择多个输出面。可以从输入面选择任何合适且期望数量的输出面,例如两个、三个或四个。由此,可以以任何合适且期望的速率(例如,以60、90或120帧每秒的速率)来生成多个输出面(例如,以匹配显示的刷新率)。由此,在特别优选的实施方式中,以本发明的方式进行的操作用于从单个输入面(或单组输入面)生成多个输出面的序列,以向用户显示。
输出面的生成因此且对应地还可以包括生成分别向用户的左眼和右眼显示的“左”和“右”输出面的序列。各对“左”和“右”输出面可以从命令输入面或从相应的“左”和“右”输入面来生成(根据期望)。
本发明可以在任何合适的系统中实现,诸如基于合适构造的微处理器的系统。优选地,本发明实现在计算机和/或基于微处理器的系统中。
本发明优选地在虚拟现实或增强现实显示装置(诸如且优选地为虚拟现实或增强现实视图器)中来实施。由此,根据本发明的另一个方面,提供了一种虚拟现实或增强现实显示装置,该虚拟现实或增强现实显示装置包括本发明的方面和实施方式中的任意一个或更多个的设备和/或数据处理系统。对应地,根据本发明的另一个方面,提供了一种操作虚拟现实或增强现实显示装置的方法,该方法包括以下步骤:以本发明的方面和实施方式中的任意一个或更多个的方式操作虚拟现实或增强现实显示装置。
本发明的各种功能可以以任意期望且合适的方式执行。例如,本发明的功能可以实现在硬件或软件中(根据期望)。由此,例如,除非以其他方式指示,本发明的各种功能元件、级以及“装置”可以包括合适的处理器、控制器、功能单元、电路、处理逻辑、微处理器结构等,它们可操作以执行各种功能等,诸如适当专用硬件元件(处理电路)和/或可以被编程以以期望方式操作的可编程硬件元件(处理电路)。
这里还应当注意的是,如本领域技术人员将理解的,本发明的各种功能等可以在给定处理器上重复和/或并行执行。等同地,各种处理级可以共享处理电路等(如果期望)。
此外,本发明的处理级中的任意一个或更多个或所有可以被具体实施为处理级电路,该处理级电路例如为一个或更多个固定功能单元(硬件)的形式(处理电路)、和/或可以被编程为执行期望操作的可编程处理电路的形式。相等地,本发明的处理级和处理级电路中的任意一个或更多个可以作为单独的电路元件提供给其他处理级或处理级电路中的任意一个或更多个,和/或处理级和处理级电路中的任意一个或更多个或所有可以至少部分由共享处理电路来形成。
本领域技术人员还将理解的,本发明的所有描述的方面和实施方式可以(且优选地确实)酌情包括这里描述的本发明的优选和可选特征中的任意一个或更多个或所有。
根据本发明的方法至少部分地可以使用软件(例如,计算机程序)实现。由此将看到,当从另外的方面看时,本发明提供计算机软件,该计算机软件当安装在数据处理器上时专门适用于执行这里描述的方法;计算机程序元件,该计算机程序元件包括计算机软件代码部,用于在程序元件在数据处理器上运行时执行这里描述的方法;和计算机程序,该计算机程序包括软件代码,该软件代码当程序在数据处理系统上运行时适用于执行这里描述的方法的所有步骤。数据处理器可以是微处理器系统、可编程FPGA(现场可编程门阵列)等。
本发明还扩展到计算机软件载体,该计算机软件载体包括这种软件,这种软件当用于操作数据处理系统或包括数据处理器的微处理器系统时与所述数据处理器结合使所述控制器或系统执行本发明的方法的步骤。这种计算机软件载体可以是物理存储介质,诸如ROM芯片、CD ROM、RAM、闪存或盘,或可以是信号,诸如电线上的电信号、光信号或无线电信号,诸如卫星等。
还将进一步理解的是,不是本发明的方法的所有步骤都需要由计算机软件执行,并且由此根据更宽实施方式,本发明提供了计算机软件并且这种软件安装在计算机软件载体上,用于执行这里阐述的方法的步骤中的至少一个。
本发明可以因此适当地具体实施为用于与计算机系统一起使用的计算机程序产品。这种实现可以包括一系列计算机可读指令,该一系列计算机可读指令固定在有形、永久-介质上,诸如计算机可读介质,例如,磁盘、CD-ROM、ROM、RAM、闪存或硬盘。还可以包括一系列计算机可读指令,在有形介质(包括但不限于,光学或模拟通信线)上,或无形地使用无线技术(包括但不限于,微波、红外或其他传输技术),这些指令经由调制解调器或其他界面装置可发送到计算机系统。该系列计算机可读指令具体实施这里之前描述的功能的所有或一部分。
本领域技术人员将理解这种计算机可读指令可以以多种编程语言来写,用于与许多计算机架构或操作系统一起使用。进一步地,这种指令可以使用任意存储技术来存储(存储技术现在或将来包括但不限于半导体、磁或光),或使用任意通信技术来发送(通信技术现在或将来包括但不限于光学、红外或微波)。预期的是,这种计算机程序产品可以作为可去除介质来分发,附有已打印的文档或电子文档,例如,现成-软件;例如在系统ROM或固定盘上预加载有-计算机系统;或在网络(例如,因特网或万维网)上从服务器或电子公告栏分发。
附图说明
现在将仅以示例的方式并参照附图来描述本发明的各种实施方式,附图中:
图1示意性示出了示例性数据处理系统;
图2示意性示出了示例性虚拟现实头戴式显示视图器;
图3和图4例示了头戴式虚拟现实显示系统中的“时间扭曲”渲染的处理;
图5和图6示意性示出了用于显示的“时间扭曲”输出面的生成;
图7和图8示出了在生成图5和图6所示的输出面时穿过图1所示的系统的数据流;
图9示意性示出了根据本发明的实施方式的用于显示的输入和输出面的生成;
图10示出了在生成图9所示的输入和输出面时穿过图1所示的系统的数据流;
图11是示出了在生成图9所示的输入和输出面且使用图10所示的数据流时的图1所示的系统的操作的流程图;
图12是示出了根据本发明的另一个实施方式的、在生成图9所示的输入和输出面时的、图1所示的系统的操作的流程图;
图13示意性示出了根据本发明的实施方式的输入面的生成;
图14和图15示出了在由图13的输入面生成图9所示的输出面时穿过图1所示的系统的数据流;
图16a、图16b、图16c以及图17示意性示出了将镜头失真考虑在内的输出面的生成;
图18是示出了根据本发明的另一个实施方式的、在生成图13所示的输入面、图17所示的输出面且使用图14所示的数据流时的图1所示的系统的操作的流程图;
图19示意性示出了根据本发明的实施方式的输出面的生成;
图20是示出了根据本发明的另一个实施方式的、在生成图13所示的输入面、图19所示的输出面且使用图14所示的数据流时的图1所示的系统的操作的流程图;以及
图21是示出了根据本发明的另一个实施方式的在生成图5所示的输入面和图19所示的输出面且使用图10所示的数据流时的图1所示的系统的操作的流程图。
具体实施方式
现在将描述本发明的若干实施方式。
本发明和本实施方式涉及在虚拟现实或增强现实显示系统中(具体在头戴式虚拟现实或增强现实显示系统中)向用户显示帧的处理。
这种系统可以如示意性示出示例性数据处理系统的图1所示的来配置。数据处理系统包括:主处理器,该主处理器包括中央处理单元(CPU)7;图形处理单元(GPU)2;视频引擎1;显示控制器5;以及存储控制器8。如图1所示,这些单元经由互连9通信并访问片外存储器3。在该系统中,GPU 2、视频引擎1和/或CPU 7将生成要显示的帧(图像),并且显示控制器5然后将向显示面板4提供这些帧,以显示。
在该系统的使用中,在主处理器(CPU)7上执行的、诸如游戏的应用10例如将需要在显示器4上显示帧。为此,应用10将向在CPU 7上执行的图形处理单元2的驱动器11提交适当的命令和数据。驱动器11然后将生成适当的命令和数据,以使得图形处理单元2渲染用于显示的适当帧,并且将这些帧存储在适当的帧缓冲器中(例如,在主存储器3中)。显示控制器5然后将把这些帧读取到用于显示器的缓冲器中,从该缓冲器,然后读出这些帧并在显示器4的显示面板上显示这些帧。
在本发明的实施方式中,图1所例示的数据处理系统设置虚拟现实(VR)头戴式显示器(HMD)系统。由此,系统的显示器4包括适当的头戴式显示器,该头戴式显示器尤其包括:显示屏(面板),该显示屏用于向穿戴头戴式显示器的用户显示要被观看的帧;一个或更多个镜头,在一个或更多个镜头处于在用户眼睛与显示屏之间的观看路径中;以及一个或更多个传感器,该一个或更多个传感器用于在使用中(当在显示器上向用户显示图像时)跟踪用户头部(和/或他们的观看(注视)方向)的位置(姿态)。
在头戴式虚拟现实显示器操作中,将响应于来自需要虚拟现实显示器的、诸如游戏(例如,在CPU 7上执行的)应用10的适当命令和数据由GPU 2渲染要向各眼睛显示的适当图像。GPU 2例如将渲染要以与显示器的刷新率匹配的、诸如每秒30帧的速率显示的图像。
在这种结构中,系统还将进行操作而跟踪用户的头部/注视的移动(所谓的头部姿态跟踪)。然后使用该头部方位(姿态)数据确定实际上应如何对于用户当前的头部位置(观看方向)向用户显示图像,并且因此(例如通过基于头部方位数据设置摄像头(视点)方位)渲染图像(帧),使得可以显示基于用户当前的观看方向的适当图像。
虽然将可以在渲染要在VR系统中显示的帧的开始时简单地确定头部方位(姿态),但由于渲染处理中的时延,可以有以下情况:用户的头部方位(姿态)在渲染帧的开始时头部方位(姿态)的感测与实际上显示(向显示面板扫描输出)帧的时间之间变化。
为了允许这一点,在根据本发明的实施方式的虚拟现实头戴式显示器系统中实施被称为“时间扭曲”的处理。在该处理中,基于在帧的渲染开始时感测的头部方位数据渲染要显示的帧,但然后在实际显示帧之前,感测另外的头部方位(姿态)数据,并且然后使用该更新后头部姿态传感器数据来在考虑到更新后头部方位(姿态)数据的情况下渲染原始帧的“更新后”版本。然后显示帧的“更新后”版本。这允许在显示器上显示的图像较紧密地匹配用户最新的头部方位。
为了进行该处理,将初始“应用”帧渲染到存储器中的适当缓冲器中,但然后存在第二渲染处理,该第二渲染处理获取存储器中的初始应用帧,并且使用最新的头部方位(姿态)数据来在考虑最新头部方位的情况下渲染初始渲染了的帧的版本,来提供将向用户显示的帧。这通常涉及基于头部方位(姿态)数据对初始帧执行某一形式的变换。将实际上要显示的“时间扭曲”渲染的输出帧写入到存储器中的另外缓冲器中,然后由显示控制器从缓冲器读出帧,以显示。
如将描述的,在本发明的实施方式中,生成初始“应用”帧的初始渲染操作通常在来自CPU 7的适当控制下由GPU 2进行。随后的“时间扭曲”渲染操作可以再次在来自CPU 7的适当控制下由GPU 2或显示控制器5来进行。由此,对于该处理,可以需要GPU 2来执行两个不同的渲染任务,一个是如由应用需要并指示的渲染“应用”帧,并且另一个是然后适当基于最新的头部方位数据将这些已渲染帧“时间扭曲”渲染到存储器中的缓冲器中,以由显示控制器5读出以显示。
图2示意性示出了示例性虚拟现实头戴式显示器85。如图2所示,头戴式显示器85例如包括适当的显示底座86,该显示底座包括显示屏(面板)87安装到的一个或更多个头部姿态跟踪传感器。一对镜头88安装在在显示屏87的观看路径中的镜头底座89中。最后,存在使用户穿戴视图器的适当配件95。
在图1所示的系统中,显示控制器5将进行操作而向显示器4提供适当的图像(即,对应于图2所示的显示屏87),以由用户观看。显示控制器5可以以有线或无线方式耦接到显示器4(根据期望)。
要显示在头戴式显示器4上的图像例如将响应于来自在整个数据处理系统的主处理器(CPU)7上执行的应用10的、对这种渲染的请求由图形处理器(GPU)2来渲染,并且将这些帧存储在主存储器3中。在本发明的一些实施方式中,显示控制器5然后将从存储器3读取帧作为输入面,并且向显示器4适当提供这些帧,以向用户显示。
在本实施方式中且根据本发明,GPU 2或显示控制器5可进行操作而能够在向显示器4提供在存储器3中存储的帧以向用户显示之前对这些帧执行所谓的“时间扭曲”处理。
图3和图4例示了例如由图5所示的输入帧产生图5和图6所示的输出帧的“时间扭曲”处理。
图3示出了在观看者笔直地向前看时的示例性帧20的显示和在用户的视角变化时该帧21的所需“时间扭曲”投射。从图3可以看到,对于帧21,必须显示帧20的修改版本。
图4对应地示出提供用于显示的“时间扭曲的”帧32的应用帧30的时间扭曲渲染31。如图4所示,已经被渲染的给定应用帧30为了在等待渲染新应用帧的同时以连续间隔显示该应用30帧的适当“时间扭曲的”版本32的目的而可以经受两个(或在一些实施方式中为更多个)时间扭曲处理31。图4还示出了头部位置(姿态)数据的规则采样33,该规则采样用于确定适当的“时间扭曲”修改,该修改应应用于应用帧30,以基于用户的头部位置向用户适当显示帧。
图5和图6中示出了“时间扭曲”初始(应用)输入帧以提供用于显示的“时间扭曲后”输出帧的示例。图5和图6示意性示出了根据本发明的实施方式的、由输入帧41生成用于显示的“时间扭曲后”输出帧41、42、43、44、45、46、47、48的生成。如图5和图6所示,在本发明的实施方式中,为了适应用户在被生成的连续输入帧之间的时间段(即,在该时间段期间,生成“时间扭曲”输出帧)期间的合理预期头部移动,在比用于显示的“时间扭曲”输出帧41、42、43、44、45、46、47以及48的更大的面积上生成输入帧40。
图5示出了已经被渲染为显示的图像的(例如已经由GPU生成并写到帧缓冲器)的输入帧40,图像的视图基于在生成输入帧40时供应的头部位置(姿态)数据来生成。输入帧40已经按像素的块(即,按16列和8行的块)来生成。
图5还示出了已经使用例如如图4例示的“时间扭曲”处理生成的一系列四个连续“时间扭曲”输出帧41、42、43、44。由此,在该示例中,对于被生成的各输入帧40,生成四个时间扭曲输出帧41、42、43、44。如可以看到的,输出帧41、42、43、44小于输入帧40(即,5列和4行的块),并且沿用户观看图像的方向从输入帧40的中心区域选择。
由此,对于第一输出帧41,在头部位置数据指示用户在生成输入帧40时未将他们的头部从其位置显著移动时,从输入帧40的中心区域(列F-J和行3-6)选择输出帧41。对于第二输出帧42,头部位置数据指示用户已经使他们的头部向右移动少量,使得他们的注视在输入帧40中被向右引导一个块。由此可见,第二输出帧42被选择为使得其被定心在该区域(列G-K和行3-6)上。对于第三输出帧43,再次有向右的小的头部移动,使得从输入帧40的列H-L和行3-6选择第三输出帧43。最后,对于第四输出帧44,已经检测向左返回的小的头部移动,使得第四输出帧44与第二输出帧42相同,即,从列G-K和行3-6选择。
图6类似地示出了也已经将“时间扭曲”处理用于图5所示的输入帧40而生成的一系列四个连续“时间扭曲”输出帧45、46、47、48。图6示出了从图5所示的同一输入帧40开始但具有对于图5所示的输出帧41、42、43、44例示的输入帧的不同量的头部移动的场景。
图6所示的输出帧45、46、47、48(例如,已经由同一VR HMD系统生成)为与图5所示的输出帧41、42、43、44相同大小(即,5列和4行的块),并且沿用户观看图像的方向从输入帧40的中心区域选择。
由此,对于第一输出帧45,在头部位置数据指示用户在生成输入帧40时未将他们的头部从其位置显著移动时,从输入帧40的中心区域(列F-J和行3-6)选择输出帧45。对于第二输出帧46,头部位置数据指示用户已经使他们的头部向右移动大量,使得他们的注视在输入帧40中被向右引导三个块。由此可见,第二输出帧46被选择为使得其被定心在该区域(列I-M和行3-6)上。对于第三输出帧47,仅检测向右的小的头部移动,使得从输入帧40的列J-N和行3-6选择第三输出帧47。最后,对于第四输出帧44,已经检测向右的另外大的头部移动,使得第四输出帧48与第二输出帧42相同,即,从列L-P和行3-6选择。
图7和图8示出了根据图1所示的系统的两个不同配置的、在生成图5和图6所示的时间扭曲后输出帧时穿过图1所示的系统的数据流。图7示出了在GPU执行时间扭曲处理以生成输出帧时的数据流;图8示出了在显示控制器执行时间扭曲处理时的数据流。
图7以与以上参照图1描述的相同方式示出了输入帧40(例如,如图5所示)由GPU 2(例如,如图1所示)生成,GPU 2从存储器(例如,如图1所示的片外存储器3)取得必要数据,以生成输入帧40(步骤121,图7)。然后将输入帧40写到帧缓冲器(例如,位于片外存储器3中)中(步骤122,图7)。
GPU 2然后从帧缓冲器取得输入帧40的所需部分,并且将头部姿态数据用于选择用户的注视被定心在上面的输入帧40的部分来生成第一输出帧41、45(例如,如图5或图6所示)(步骤123,图7)。然后将第一输出帧41、45写到输出帧缓冲器(例如,位于片外存储器3中)(步骤124,图7),从该输出帧缓冲器由显示控制器5读取第一输出帧(步骤125,图7),并且将第一输出帧发动到显示器4以由用户观看(步骤126,图7)。
重复该处理,以生成第二输出帧42、46,GPU 2对更新后头部姿态数据采样,以选择输入帧40的相关部分来形成输出帧42、46,以写到输出帧缓冲器,从该输出帧缓冲器由显示控制器5读取输出帧并将其发送到显示器4。以相同方式,由GPU 2使用在这些相应时间可用的头部姿态数据以连续时间间隔生成第三输出帧43、47和第四输出帧44、48,输出帧43、47、44、48再次被写到输出帧缓冲器并由显示控制器5显示。
图8示出了生成输入帧40、生成并显示如图7所示的输出帧41、42、43、44、45、46、47、48的类似处理,除了在图8所示的实施方案中,显示控制器5生成输出帧41、42、43、44、45、46、47、48,而不是图7所示的实施方案中的GPU 2生成这些输出帧。
由此,在图8所示的实施方案中,GPU 2首先生成输入帧40并将其写到帧缓冲器中(即,与图7所示的实施方案中相同)。显示控制器5然后从帧缓冲器取得输入帧40的所需部分,并且将头部姿态数据用于选择用户的注视被定心在上面的输入帧40的部分来生成所需输出帧(步骤131,图8).然后将输出帧直接发送到显示器4,以由用户观看(步骤132,图8),即,与图7所示的实施方案中不同,不首先需要将输出帧写到输出帧缓冲器中然后由显示控制器读取以显示。
使用与以上所概述相同的方案,现在将参照图9至图11描述本发明的实施方式。类似于图5的图9示意性示出了输入帧50和从输入帧50选择以显示的四个时间扭曲后输出帧51、52、53、54的生成。在该实施方式中,输入帧50用具有高保真度(例如,高分辨率)的中心区域56(位于列C-N和行3-6这两者中的块)和具有低保真度(例如,低分辨率)的外围区域57(位于列A、B、O以及P的块和位于行1、2、7以及8中的块)来生成。
从输入帧50选择的一系列时间扭曲后输出帧51、52、53、54以与上面关于图5和图6描述的相同方式来生成。实际上,在图9所示的输出帧51、52、53、54中检测的头部移动与图6所示的头部移动相同。然而,将看到,由于已经在从图9中的输入帧50选择第四输出帧54时检测的向右的大的头部移动,这导致包括输入帧50的低保真度外围区域57中的一些的第四输出帧54。然而,这由于大的头部移动而是可接受的,大的头部移动意味着用户不太可能能够注意到输出帧54的该部分的较低保真度。
图10示出了在用于生成图9所示的输入和输出帧50、51、52、53、54的系统(例如,如图1所示)的一个实施方式中的数据流。将看到,图10所示的数据流的配置与图7所示的数据流几乎相同,即,GPU 2生成输入帧50,然后选择输入帧51、52、53、54,从而由显示控制器5从输出帧缓冲器读取并显示。与图7所示的实施方案相比的仅有差别在于输入帧50具有与较高保真度的中心区域56相比的较低保真度的外围区域57(如与跨整个范围以相同保真度生成的图5所示的输入帧40相反)。
由此,如以上已经参照图9描述的,在检测到大的头部移动使得用户观看在输入帧50中生成的图像的边缘时,输出帧(例如,图9所示的第四输出帧54)可以包括较低保真度的外围区域57的部分且由此可以具有可变保真度。
现在将参照图11描述本发明的该实施方式的操作。图11是示出了在生成图9所示的输入和(时间扭曲后)输出面50、51、52、53、54且使用图10所示的数据流时的当在图2所示的虚拟现实头戴式显示器85中实施时的图1所示的系统的操作的流程图。
首先,在来自在CPU 7上执行的应用10的指令下,GPU 2生成具有高保真度的中心区域56和低保真度的外围57的新输入帧50,并且将该输入帧50写到片外存储器3中的帧缓冲器(步骤101,图11)。
头戴式显示器85的显示底座86中的头部姿态跟踪传感器检测戴着头戴式显示器85的用户的任意头部移动,并且由GPU 2读取由这些传感器输出的头部姿态跟踪数据(步骤102,图11)。基于该头部姿态数据(即,表示用户朝输入帧50的哪部分看),GPU 2确定要被选择为第一时间扭曲后输出帧51的输入帧50的一部分,由此被初始化为处理该输出帧51的第一像素(步骤103,图11)。
GPU 2然后确定第一像素是否在输入帧50的低保真度外围区域57内(步骤104,图11),并且如果是这样,则从输入帧50的帧缓冲器读取用于该像素的相关低保真度图像数据(步骤105,图11)。另选地,如果像素在高保真度中心区域56内,则GPU 2读取用于该像素的相关高保真度图像数据(步骤106,图11)。
当已经对于像素读取相关低或高保真度图像数据时,则对图像数据执行镜头校正处理(步骤107,图11),随后,将用于输出帧51的镜头校正后图像数据写到输出帧缓冲器(步骤108,图11)。
如果在输出帧51中有更多像素要处理(步骤109,图11),则GPU 2评估下一像素是否在输入帧51的低保真度外围区域57中(步骤104,图11),并且依次对于这些像素中的每个重复以下步骤:读取适当的图像数据(步骤105、106,图11),执行镜头校正处理(步骤107,图11),以及将已处理的图像数据写到输出帧缓冲器(步骤108,图11)。
然后可以由显示控制器5读取对于输出帧51写输出的图像数据(步骤110,图11),显示控制器5然后向显示面板4发送输出帧51(步骤111,图11)。
当已经生成(且随后显示)输出帧51且在调度生成下一输入帧之前有更多输出帧要生成时(步骤112,图11),则使用最近可用头部姿态数据以相同方式生成下一输出帧52(步骤102-111,图11)。对于要生成的输出帧53、54中的每个输出帧重复该处理,直到生成新输入帧为止(步骤113,图11)。
在是时候生成下一输入帧时,为了对于该输入帧产生时间扭曲后输出帧,重复从GPU 2生成新输入帧(步骤101,图11)开始的整个处理(步骤102-112,图11)。
现在将参照图12描述本发明的另一实施方式的操作。图12是示出了在生成图9所示的输入和(时间扭曲后)输出面50、51、52、53、54时的当在图2所示的虚拟现实头戴式显示器85中实施时的图1所示的系统的操作的流程图。
图12所示的实施方式的操作与图11所示的实施方式类似,除了显示控制器5从输入帧50生成输出帧51、52、53、54,而不是如图11的实施方式中的GPU 2来生成这些输出帧。由此,图12所示的实施方式的数据流与图8所示的数据流几乎相同,除了输入帧50具有与较高保真度的中心区域56相比的较低保真度的外围区域57(如与跨整个范围以相同保真度生成的图5所示的输入帧40相反)。
由此,与图11所示的实施方式中确切相同,GPU 2生成具有高保真度中心区域56和低保真度外围57的新输入帧50,并且将该输入帧50写到片外存储器3中的帧缓冲器(步骤201,图12)。
然而,在到达读取头部姿态跟踪数据(步骤202,图12)并初始化以处理该输出帧51的第一像素(步骤203,图12)时,这由显示控制器5来执行。由此,显示控制器5然后确定第一像素是在低保真度的外围区域57内还是在高保真度的中心区域56内(步骤204,图12),并且从输入帧50的帧缓冲器读取用于该像素的相关低或高保真度图像数据(步骤205、206,图12)。显示控制器5然后还对于已经读取的图像数据执行必要的镜头校正处理(步骤207,图12)。
因为显示控制器5已经生成输出帧51,所以可以将图像数据直接发送到显示器4(步骤208,图12),即,而不是GPU 2将图像数据写到由显示控制器5从其读取并显示图像数据的输出帧缓冲器。
然后在由GPU 2生成下一输入帧(步骤211,图12)之前对于输出帧51中的另外像素(步骤209,图12)且对于输出帧52、53、54中的每个(步骤210,图12)重复处理。
现在将参照图13和图14描述本发明的另一实施方式。类似于图9的图13示意性示出了可以从其生成时间扭曲后输出帧51、52、53、54(如图9所示)以显示的两个输入帧61、62的生成。在该实施方式中,不是生成具有较低保真度外围的单个输入帧50(即,如图9所示),而是生成两个输入帧61、62:较高保真度输入帧61和输入帧的较低保真度版本62。
较低保真度输入帧62例如可以通过(例如,使用在申请人的专利US 8542939B2、US9014496B2、US 8990518B2以及US 9116790B2中描述的帧缓冲压缩技术)在将输入帧61、62写输出到帧缓冲器时压缩较高保真度输入帧61来生成。由此,较高保真度输入帧61和较低保真度输入帧62这两者示出仅具有不同保真度等级的同一图像。
在该实施方式的变型例中,仅生成较高保真度输入帧61的中心区域和/或将其写输出到帧缓冲器,使得较低保真度输入帧62比较高保真度输入帧61大。例如,较高保真度输入帧61可以对应于图9所示的输入帧50的中心区域56。
图14示出了在由图13中的输入面61、62生成图9所示的输出面51、52、53、54时穿过图1所示的系统的数据流。图14所示的数据流与图10所示的数据流类似,除了GPU 2生成两个输入帧61、62并将这两个输入帧写到单独帧缓冲器(步骤141,图14)。GPU 2然后以类似方式生成输出面51、52、53、54,除了它在生成时间扭曲后输出面51、52、53、54时从用于较高保真度输入帧61和较低保真度输入帧62中的任一个或这两者选择性地读取图像数据(步骤142,图14)。
图15示出了根据本发明的不同实施方式的、在由图13中的输入面61、62生成图9所示的输出面51、52、53、54时穿过图1所示的系统的数据流。由此,图15示出了生成输入帧61、62、生成并显示输出帧51、52、53、54的处理,该处理与图14所示的处理类似,除了在图15所示的实施方案中,显示控制器5生成输出帧51、52、53、54,而不是图14所示的实施方案中的GPU 2生成这些输出帧。由此,图15所示的数据流与图8所示的数据流类似,除了GPU 2生成两个输入帧61、62并将这两个输入帧写到单独帧缓冲器(步骤151,图15),即,从该单独帧缓冲器,显示控制器5在生成时间扭曲后输出面51、52、53、54中的每一个时选择性地读取图像数据(捕捉152,图15)。
图16a、图16b、图16c以及图17示意性示出了将镜头失真考虑在内时的输出帧的生成。图16a、图16b、图16c例如对于借助图2所示的头戴式显示器85的镜头88在显示屏87上观看输出帧的用户示意性示出了镜头失真对输出帧的影响。
图16a示意性示出了镜头可以创建的输出帧63的整个面积上的失真。将看到,在输出帧的边缘周围有增大的例如桶形失真。图16b示出了在输出帧63上叠加的、图16a所示的失真。从此可以看到,镜头失真主要影响输出帧63的主要块64。图16c示出了:在本发明的实施方式中,由于镜头失真(即,如图16a和图16b所示),输出帧63的外围块64从图13所示的较低保真度输入帧62来选择,并且输出帧63的中心区域65中的块从图13所示的较高保真度输入帧61来选择。
图17对于一系列四个时间扭曲后输出帧66、67、68、69示出了由于图16a、图16b以及图16c所示的镜头失真而从较低保真度输入帧选择输出帧的外围区域的效果。输出帧66、67、68、69从图13所示的低和高保真度输入帧61、62来生成,各输出帧66、67、68、69基于在生成各输出帧66、67、68、69时接收的头部位置数据来从输入帧61、62选择(即,以基于头部移动从图5所示的输入帧40选择时间扭曲后输出帧41、42、43、44的相同方式)。
然而,对于图17所生成并所示的输出帧66、67、68、69,在各输出帧66、67、68、69的外围区域中的块从图13所示的较低保真度输入帧62的对应块来选择,并且在各输出帧66、67、68、69的中心区域中的块从图13所示的较高保真度输入帧61的对应块来选择。
现在将参照图18描述图17所示的输出帧66、67、68、69的生成的操作。图18是示出了在生成图13所示的输入面、图17所示的输出面且使用图14所示的数据流时的图1所示的系统的操作的流程图。
图18所示的流程图与图11所示的流程图类似。然而,在第一步骤中,不是GPU2生成具有较低保真度的外围区域的单个输入面(参照图11描述的实施方式是这种情况),而是GPU 2生成被写到片外存储器3中的帧缓冲器的高保真度输入帧61和输入帧的较低保真度版本62(步骤301,图18)。
此后,参照图18描述的实施方式的步骤与图11所示的步骤相当类似,即,由GPU 2读取头部姿态跟踪数据(步骤302,图18),并且将GPU 2初始化为处理输出帧66的第一像素(步骤303,图18)。
接着,在参照图11描述的实施方式的变型例中,GPU 2确定像素是否在将经受镜头失真的区域中(即,输出帧66的边界(外围)区域)(步骤304,图18)。如果像素位于输出帧66的该外围区域(例如,图16b和图16c所示的输出帧63的外围区域64)中,则GPU 2从输入帧50的帧缓冲器读取用于该像素的相关低保真度图像数据(步骤305,图18)。另选地,如果像素在中心区域(例如,图16b和图16c所示的输出帧63的中心区域65)内,则GPU 2读取用于该像素的相关高保真度图像数据(步骤306,图18)。
当已经对于像素读取相关低或高保真度图像数据时,则随后是与参照图11描述的实施方式中相同的步骤,即,执行镜头校正处理(步骤307,图18),并且将用于输出帧66的图像数据写到输出帧缓冲器(步骤308,图18)。然后,处理输出帧66中的任意另外像素(步骤309,图18),接着是之前描述的方法(步骤304-308,图18)。
然后由显示控制器5读取对于输出帧66写输出的图像数据(步骤310,图18),显示控制器5然后向显示面板4发送输出帧66(步骤311,图18)。
当已经生成(且随后显示)输出帧66且在调度生成下一些输入帧61、62之前有更多输出帧要生成时(步骤312,图18),则使用最近可用头部姿态数据以相同方式生成下一输出帧67(步骤302-311,图18)。对于要生成的输出帧68、69中的每个输出帧重复该处理,直到生成新的一组输入帧为止(步骤313,图18)。
在是时候生成下一组输入帧时,为了对于该下一组输入帧产生时间扭曲后输出帧,重复从GPU 2生成新输入帧(步骤301,图18)开始的整个处理(步骤302-312,图18)。
将理解,在另选实施方式中,为了考虑镜头失真而依赖于输出帧中的像素的位置从输入帧选择输出帧的处理(即,步骤303-307,图18)例如可以以与参照图12的流程图描述的操作类似的方式由显示控制器5来执行,而不是由GPU 2来执行。
如现在将参照图19和图20描述的,在生成输出帧时从不同保真度输入帧选择适当部分可以被执行以考虑镜头失真(即,在输出帧中观看的位置)和所接收头部位置数据(即,要选择的输入帧的部分)这两者。这在所检测头部移动较大时可能是特别重要的。(应注意,在生成图17中的输出帧66、67、68、69时检测的头部移动仅仅较小且由此不足以从图13所示的输入帧61、62的外围区域选择输出帧66、67、68、69中的任一个。)
图19示意性示出了根据本发明的实施方式的由图13所示的输入面61、62生成四个时间扭曲后输出面71、72、73、74。将看到,这些输出面71、72、73、74的视场(该视场基于所接收头部姿态跟踪数据)与图6所示的输出面45、46、47、48相同,由此,对于输出帧71、72、73、74选择的像素块从输入帧61、62的相同相应块获取。
然而,对于图19的输出帧71、72、73、74,用于输出帧71、72、73、74中的每个输出帧的块依赖于输出帧71、72、73、74中的像素的位置(考虑例如如参照图16a、图16b、图16c、图17以及图18描述的镜头失真)和输入帧61、62中的对应像素的位置(考虑用户的头部移动,即,基于所接收头部姿态跟踪数据)从图13所示的两个输入帧61、62来选择。
由此,将看到,在生成输出帧71、72、73、74时的(从所接收头部姿态跟踪数据确定的)头部移动是使得输出帧71、72、73、74包含要从图13所示的输入帧61、62的外围区域(列A、B、O以及P和行1、2、7以及8)选择时,从较低保真度输入帧62选择图像数据。另外,输出帧71、72、73、74的外围区域(即,周长块)从较低保真度输入帧62来选择(即使所接收头部姿态跟踪数据指示它们否则不从较低保真度输入帧62选择)。否则,即,对于在输出帧71、72、73、74的中心区域中的且基于头部姿态跟踪数据不从输入帧61、62的外围区域选择的块,图像数据从较高保真度输入帧61来选择。
在该实施方式中,输入帧61、62的外围区域与图9所示的输入帧50的外围区域57对应,但这不是必须,且在其他实施方式中将不是这种情况。
现在将参照图20描述图19所示的输出帧71、72、73、74的生成的操作。图20是示出了在生成图13所示的输入面、图19所示的输出面且使用图14所示的数据流时的图1所示的系统的操作的流程图。
该实施方式的操作与图18的流程图所示的操作几乎相同;实际上,图20所示的步骤401-403和步骤405-413与图18所示的步骤301-303和305-313相同,仅步骤404不同。
由此,在该实施方式中,为了选择图13所示的输入帧61、62的相关部分来形成
图19所示的输出帧71、72、73、74,GPU 2基于头部姿态跟踪数据对于输出帧71、72、73、74中的给定像素确定像素是否与输入帧61、62的外围区域中的位置对应或像素是否在输出帧71、72、73、74的外围区域中(即,将经受镜头失真)(步骤404,图20)。
如果像素位于这些区域中的任一个(或这两者)中,则GPU 2从较低保真度输入帧62的帧缓冲器读取用于该像素的相关低保真度图像数据(步骤405,图20)。另选地,如果像素不在这些区域中的任一个中(即,它落在输出帧71、72、73、74的中心区域和(如果头部姿态跟踪数据指示它落在)输入帧61、62的中心区域这两者内),则GPU 2从用于该像素的较高保真度输入帧61读取相关高保真度图像数据(步骤406,图20)。
图20所示的处理的操作然后继续以参照图18中的对应步骤描述的方式生成输出面。
再次将理解的是,在另选实施方式中,从输入帧选择输出帧的处理(即,步骤403-407,图20)例如可以以与参照图12的流程图描述的操作类似的方式由显示控制器5来执行,而不是由GPU 2来执行。
现在将参照图21的流程图描述另外实施方式。图21是示出了根据本发明的另一个实施方式的、在生成图5所示的输入面、图19所示的输出面71、72、73、74且使用图10所示的数据流时的、图1所示的系统的操作的流程图。
应注意,该实施方式与之前描述的实施方式的不同在于仅生成均匀保真度的单个输入帧,例如,图5所示的输入帧40。然后依赖于(基于头部姿态跟踪数据的)输入帧中的像素的位置及其对应的输出帧中的位置(选择并)改变从该输入帧产生的输出帧的图像数据的保真度。
由此,在该实施方式中,GPU 2首先生成在其整个面积上具有高保真度的新输入帧40(如图5所示),并且将该输入帧40写到帧缓冲器(步骤501,图21)。
然后由GPU 2读取头部跟踪信息(步骤502,图21),并且基于此,GPU 2确定要处理的第一输出帧71的第一像素(步骤503,图21)。
与之前实施方式的另一不同是在处理的该阶段,在GPU 2确定如何合成输出帧71、72、73、74之前执行镜头校正处理(步骤504,图21)。
在已经执行镜头校正处理之后,GPU对于输出帧71、72、73、74中的像素确定像素是否与输入帧40的外围区域中的位置对应(基于头部姿态跟踪数据)和/或像素是否在输出帧71、72、73、74的外围区域中(即,将经受镜头失真)(步骤505,图21)。如果像素位于这些区域中的任一个(或这两者)中,则GPU 2从输入帧选择低保真度图像数据来对于该像素写输出(步骤506,图21)。
当像素与输出帧71、72、73、74的外围区域中的位置对应或与输入帧40的外围区域对应时,GPU 2在写输出用于像素的图像数据时压缩来自输入帧40的高保真度图像数据,并且将用于输出帧71、72、73、74的该区域中的对应低保真度图像数据写输出(步骤506,图21)。
另选地,如果像素不在这些区域中的任一个中(即,它落在输出帧71、72、73、74的中心区域和输入帧50的中心区域这两者内),则GPU 2将来自用于该像素的输入帧40的相关的高保真度图像数据写输出(步骤507,图20)。
如先前实施方式中,当已经处理输出帧71、72、73、74中的所有像素时(步骤508,图21),那么显示控制器5读取图像(步骤509,图21)并将其发送到显示器4(步骤510,图21)。然后对于另外输出帧71、72、73、74(步骤511,图21)和序列中的另外输入帧40(步骤512,图21)重复处理。
从上述内容将看到,在至少优选实施方式中,本发明提供了从一个或更多个输入面的部分选择输出面的、用于提供用于显示的输出面的方法和数据处理系统。申请人已经理解,通过以较低保真度生成输入面的边缘或输入面的版本以在合成输出面时使用,可以(例如,在已经检测到在小时间间隔中的大的头部移动时)例如在输出面的边缘周围显示输入面的部分的较低质量版本。
这由于例如在读取、时间扭曲以及写输出输入和输出面时的、来自输入面的部分的较低质量版本的减小存储负载而帮助减小在产生用于显示的输出面时消耗的存储带宽。
虽然上述实施方式已经描述了用于显示的输出面的单个序列的生成和显示,但将理解,显示器可以被配置为将单独输出面显示到左眼和右眼,例如以产生3D效果。由此,输出面的生成可以包括生成分别向用户的左眼和右眼显示的“左”和“右”输出面的序列。各对“左”和“右”输出面可以从命令输入面或从相应的“左”和“右”输入面来生成(根据期望)。
Claims (16)
1.一种提供用于显示的输出面的方法,该方法包括以下步骤:
生成用于提供用于显示的输出面的多个输入面,其中,所述多个输入面均在至少相同视场上生成,并且其中,生成所述多个输入面的步骤包括:
在至少相同视场上生成初始输入面;以及
压缩在至少所述相同视场上的所述初始输入面以得出处于比生成所述初始输入面的保真度低的保真度的一个或更多个输入面;以及
基于所接收的观看方位数据并且基于来自所述输出面被观看以提供所述用于显示的输出面时将借助的镜头的镜头失真选择所述多个输入面中的至少一个输入面的部分,来提供所述用于显示的输出面。
2.根据权利要求1所述的方法,所述方法包括以下步骤:基于所接收的观看方位数据生成所述多个输入面。
3.根据权利要求1或2所述的方法,所述方法包括以下步骤:当写输出所述初始输入面的整体的压缩版本时,压缩所述初始输入面的所述整体,以写输出具有比所述初始输入面的保真度低的保真度的一个或更多个输入面。
4.根据权利要求1或2所述的方法,所述方法包括以下步骤:对于将被输出以用于显示的输出面中的数据元素位置,使用所接收的观看方位数据来确定所述多个输入面中的对应位置;并且对所述多个输入面中的一个输入面中的所确定的对应位置处的数据进行采样,来提供在所述输出面中的所述数据元素位置处使用的数据。
5.根据权利要求1或2所述的方法,所述方法包括以下步骤:对于输出面中的数据元素位置,当一个或更多个较低保真度输入面中的一个输入面中的对应位置位于所述多个输入面的外围区域中时,对所述对应位置处的数据进行采样;以及
当所述对应位置位于所述多个输入面的中心区域中时,对较高保真度输入面中的对应位置处的数据进行采样。
6.根据权利要求1或2所述的方法,所述方法包括以下步骤:
对于在输出面的外围区域中的数据元素位置,确定较低保真度输入面中的一个或更多个输入面中的对应位置;并且
对一个或更多个较低保真度输入面中的所述一个或更多个输入面中的所确定的对应位置处的数据进行采样,来提供在所述输出面的所述外围区域中的所述数据元素位置处使用的数据。
7.一种合成用于显示的输出面的方法,该方法包括以下步骤:
选择来自多个输入面的部分来形成用于显示的输出面,其中,所述多个输入面均在至少相同视场上延伸,并且其中,所述多个输入面包括初始输入面和所述初始输入面的具有比所述初始输入面的保真度低的保真度的一个或更多个压缩版本;
其中,所述输出面的视场小于所述多个输入面的视场,并且其中,选择来自所述多个输入面的部分的步骤是基于所接收的观看方位数据并且基于来自所述输出面被观看以提供所述用于显示的输出面时将借助的镜头的镜头失真进行的;以及
向显示器提供所述输出面。
8.一种用于提供用于显示的输出面的数据处理系统,该数据处理系统包括:
渲染电路,该渲染电路能够生成用于提供用于显示的输出面的多个输入面,其中,所述渲染电路能够在至少相同视场上生成所述多个输入面中的各个输入面;
其中,所述渲染电路能够在至少相同视场上生成初始输入面;并且
其中,所述数据处理系统还包括压缩电路,所述压缩电路能够压缩在至少所述相同视场上的所述初始输入面,以得出处于比生成所述初始输入面的保真度低的保真度的一个或更多个输入面;以及
显示合成电路,该显示合成电路能够基于所接收的观看方位数据并且基于来自所述输出面被观看以提供所述用于显示的输出面时将借助的镜头的镜头失真选择所述多个输入面中的至少一个输入面的部分,来提供所述用于显示的输出面。
9.根据权利要求8所述的数据处理系统,其中,所述渲染电路能够基于所接收的观看方位数据生成所述多个输入面。
10.根据权利要求8或9所述的数据处理系统,其中,所述压缩电路能够:
当写输出所述初始输入面的整体的压缩版本时,压缩所述初始输入面的所述整体,以写输出具有比所述初始输入面的保真度低的保真度的所述一个或更多个输入面。
11.根据权利要求8或9所述的数据处理系统,其中,所述显示合成电路能够:
对于被输出以用于显示的输出面中的数据元素位置,使用所接收的观看方位数据来确定所述多个输入面中的对应位置;并且
对所述多个输入面中的一个输入面中的所确定的对应位置处的数据进行采样,来提供在所述输出面中的所述数据元素位置处使用的数据。
12.根据权利要求8或9所述的数据处理系统,其中,所述显示合成电路能够:
对于输出面中的数据元素位置,当一个或更多个较低保真度输入面中一个输入面的对应位置位于所述多个输入面的外围区域中时,对所述对应位置处的数据进行采样;并且
对于输出面中的数据元素位置,当所述对应位置位于所述多个输入面的中心区域中时,对较高保真度输入面中的对应位置处的数据进行采样。
13.根据权利要求8或9所述的数据处理系统,其中,所述显示合成电路能够:
对于输出面的外围区域中的数据元素位置,确定一个或更多个较低保真度输入面中的一个或更多个输入面中的对应位置;并且
对一个或更多个较低保真度输入面中的一个或更多个输入面中的所确定的对应位置处的数据进行采样,来提供在所述输出面的所述外围区域中的所述数据元素位置处使用的数据。
14.一种用于合成用于显示的输出面的设备,该设备包括:
显示合成电路,该显示合成电路能够:
选择来自多个输入面的部分来形成用于显示的输出面,其中,所述多个输入面均在至少相同视场上延伸,并且其中,所述多个输入面包括初始输入面和所述初始输入面的具有比所述初始输入面的保真度低的保真度的一个或更多个压缩版本;
其中,所述输出面的视场小于所述多个输入面的视场,并且其中,所述显示合成电路能够基于所接收的观看方位数据并且基于来自所述输出面被观看以提供所述用于显示的输出面时将借助的镜头的镜头失真选择来自所述多个输入面的部分;以及
显示控制器,该显示控制器用于向显示器提供所述输出面。
15.一种虚拟现实或增强现实显示装置,该虚拟现实或增强现实显示装置包括根据权利要求8至13中的任一项所述的数据处理系统、或根据权利要求14所述的设备。
16.一种计算机可读存储介质,该计算机可读存储介质存储计算机程序,当该计算机程序在数据处理系统上执行时执行根据权利要求1至7中任一项所述的方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB1711896.9A GB2564866B (en) | 2017-07-24 | 2017-07-24 | Method of and data processing system for providing an output surface |
GB1711896.9 | 2017-07-24 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109300183A CN109300183A (zh) | 2019-02-01 |
CN109300183B true CN109300183B (zh) | 2023-07-04 |
Family
ID=59771604
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810812156.8A Active CN109300183B (zh) | 2017-07-24 | 2018-07-23 | 用于提供输出面的数据处理系统和方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US11004427B2 (zh) |
KR (1) | KR20190011212A (zh) |
CN (1) | CN109300183B (zh) |
GB (1) | GB2564866B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3619568A4 (en) * | 2017-05-01 | 2021-01-27 | Infinity Augmented Reality Israel Ltd. | OPTICAL MOTOR TIME ALIGNMENT FOR AN AUGMENTED OR MIXED REALITY ENVIRONMENT |
KR102360412B1 (ko) * | 2017-08-25 | 2022-02-09 | 엘지디스플레이 주식회사 | 영상 생성 방법과 이를 이용한 표시장치 |
KR20200063614A (ko) * | 2018-11-28 | 2020-06-05 | 주식회사 라온텍 | Ar/vr/mr 시스템용 디스플레이 유닛 |
CN109753155B (zh) * | 2019-01-02 | 2021-01-22 | 京东方科技集团股份有限公司 | 头戴显示设备、其驱动方法及虚拟现实显示装置 |
CN114527864B (zh) * | 2020-11-19 | 2024-03-15 | 京东方科技集团股份有限公司 | 增强现实文字显示系统、方法、设备及介质 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9240069B1 (en) * | 2015-06-30 | 2016-01-19 | Ariadne's Thread (Usa), Inc. | Low-latency virtual reality display system |
Family Cites Families (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4028725A (en) * | 1976-04-21 | 1977-06-07 | Grumman Aerospace Corporation | High-resolution vision system |
US6252989B1 (en) * | 1997-01-07 | 2001-06-26 | Board Of The Regents, The University Of Texas System | Foveated image coding system and method for image bandwidth reduction |
US6078427A (en) * | 1998-12-01 | 2000-06-20 | Kaiser Electro-Optics, Inc. | Smooth transition device for area of interest head-mounted display |
US6917715B2 (en) * | 2002-04-19 | 2005-07-12 | International Business Machines Corporation | Foveal priority in stereoscopic remote viewing system |
HU0500357D0 (en) * | 2005-04-04 | 2005-05-30 | Innoracio Fejlesztoe Es Kutata | Dynamic display and method for enhancing the effective resolution of displays |
EP1720357A1 (de) * | 2005-05-04 | 2006-11-08 | Swisscom Mobile AG | Verfahren und Vorrichtung zur Übermittlung von Videodaten mit Komprimierung basierend auf Blickrichtung nach Augenverfolgungsverfahren |
WO2009131626A2 (en) * | 2008-04-06 | 2009-10-29 | David Chaum | Proximal image projection systems |
US8542939B2 (en) | 2011-08-04 | 2013-09-24 | Arm Limited | Methods of and apparatus for using tree representations for representing arrays of data elements for encoding and decoding data in data processing systems |
US8990518B2 (en) | 2011-08-04 | 2015-03-24 | Arm Limited | Methods of and apparatus for storing data in memory in data processing systems |
US9014496B2 (en) | 2011-08-04 | 2015-04-21 | Arm Limited | Methods of and apparatus for encoding and decoding data in data processing systems |
US9116790B2 (en) | 2011-08-04 | 2015-08-25 | Arm Limited | Methods of and apparatus for storing data in memory in data processing systems |
US9897805B2 (en) * | 2013-06-07 | 2018-02-20 | Sony Interactive Entertainment Inc. | Image rendering responsive to user actions in head mounted display |
US9727991B2 (en) * | 2013-03-01 | 2017-08-08 | Microsoft Technology Licensing, Llc | Foveated image rendering |
US10264211B2 (en) * | 2014-03-14 | 2019-04-16 | Comcast Cable Communications, Llc | Adaptive resolution in software applications based on dynamic eye tracking |
US10204658B2 (en) * | 2014-07-14 | 2019-02-12 | Sony Interactive Entertainment Inc. | System and method for use in playing back panorama video content |
US9659410B2 (en) * | 2014-10-21 | 2017-05-23 | Honeywell International Inc. | Low latency augmented reality display |
US9491490B1 (en) * | 2015-06-12 | 2016-11-08 | Intel Corporation | Facilitating environment-based lossy compression of data for efficient rendering of contents at computing devices |
US10089790B2 (en) * | 2015-06-30 | 2018-10-02 | Ariadne's Thread (Usa), Inc. | Predictive virtual reality display system with post rendering correction |
GB2544333B (en) * | 2015-11-13 | 2018-02-21 | Advanced Risc Mach Ltd | Display controller |
GB2548860A (en) * | 2016-03-31 | 2017-10-04 | Nokia Technologies Oy | Multi-camera image coding |
EP3236306A1 (en) * | 2016-04-20 | 2017-10-25 | Hexkraft GmbH | A method for rendering a 3d virtual reality and a virtual reality equipment for implementing the method |
US11089280B2 (en) * | 2016-06-30 | 2021-08-10 | Sony Interactive Entertainment Inc. | Apparatus and method for capturing and displaying segmented content |
US10152822B2 (en) * | 2017-04-01 | 2018-12-11 | Intel Corporation | Motion biased foveated renderer |
-
2017
- 2017-07-24 GB GB1711896.9A patent/GB2564866B/en active Active
-
2018
- 2018-06-15 US US16/009,692 patent/US11004427B2/en active Active
- 2018-07-20 KR KR1020180084406A patent/KR20190011212A/ko not_active Application Discontinuation
- 2018-07-23 CN CN201810812156.8A patent/CN109300183B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9240069B1 (en) * | 2015-06-30 | 2016-01-19 | Ariadne's Thread (Usa), Inc. | Low-latency virtual reality display system |
Also Published As
Publication number | Publication date |
---|---|
GB2564866A (en) | 2019-01-30 |
KR20190011212A (ko) | 2019-02-01 |
GB2564866B (en) | 2021-07-28 |
US11004427B2 (en) | 2021-05-11 |
GB201711896D0 (en) | 2017-09-06 |
US20190027120A1 (en) | 2019-01-24 |
CN109300183A (zh) | 2019-02-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109300183B (zh) | 用于提供输出面的数据处理系统和方法 | |
US10733789B2 (en) | Reduced artifacts in graphics processing systems | |
US10739599B2 (en) | Predictive, foveated virtual reality system | |
US11270492B2 (en) | Graphics processing systems | |
US12020401B2 (en) | Data processing systems | |
US8102428B2 (en) | Content-aware video stabilization | |
CN108536405B (zh) | 用于数据处理系统的显示控制器及其操作方法 | |
CN110322542B (zh) | 重建真实世界3d场景的视图 | |
US10890966B2 (en) | Graphics processing systems | |
KR20190141768A (ko) | 부드럽게 변화하는 포비티드 렌더링 | |
CN115088254A (zh) | 分布式系统中的运动平滑 | |
US12020442B2 (en) | Graphics processing systems | |
CN110659005B (zh) | 操作数据处理系统和方法、显示装置以及计算机可读介质 | |
US10692420B2 (en) | Data processing systems | |
US10672367B2 (en) | Providing data to a display in data processing systems | |
CN112313954A (zh) | 视频编码系统 | |
CN116708737A (zh) | 立体影像播放装置及其立体影像产生方法 |
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 |