CN109144240B - 图形处理系统和操作图形处理系统的方法、显示系统 - Google Patents
图形处理系统和操作图形处理系统的方法、显示系统 Download PDFInfo
- Publication number
- CN109144240B CN109144240B CN201810628925.9A CN201810628925A CN109144240B CN 109144240 B CN109144240 B CN 109144240B CN 201810628925 A CN201810628925 A CN 201810628925A CN 109144240 B CN109144240 B CN 109144240B
- Authority
- CN
- China
- Prior art keywords
- frame
- view
- rendered
- display
- scene
- 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
- 238000012545 processing Methods 0.000 title claims abstract description 435
- 238000000034 method Methods 0.000 title claims abstract description 186
- 238000009877 rendering Methods 0.000 claims abstract description 295
- 230000033001 locomotion Effects 0.000 claims description 72
- 230000001131 transforming effect Effects 0.000 claims description 25
- 238000004590 computer program Methods 0.000 claims description 6
- 230000008569 process Effects 0.000 abstract description 129
- 210000003128 head Anatomy 0.000 description 304
- 230000015654 memory Effects 0.000 description 84
- 238000013519 translation Methods 0.000 description 45
- 230000014616 translation Effects 0.000 description 45
- 230000003190 augmentative effect Effects 0.000 description 44
- 239000000872 buffer Substances 0.000 description 34
- 230000004886 head movement Effects 0.000 description 25
- 230000009466 transformation Effects 0.000 description 19
- 238000012937 correction Methods 0.000 description 16
- 230000000694 effects Effects 0.000 description 14
- 230000008859 change Effects 0.000 description 11
- 241000283973 Oryctolagus cuniculus Species 0.000 description 8
- 230000004075 alteration Effects 0.000 description 6
- 230000006870 function Effects 0.000 description 6
- 230000003068 static effect Effects 0.000 description 6
- 238000004891 communication Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 238000013213 extrapolation Methods 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 238000005070 sampling Methods 0.000 description 4
- 230000001934 delay Effects 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000000844 transformation Methods 0.000 description 1
- 239000013598 vector Substances 0.000 description 1
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
- G06F3/012—Head tracking input arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/04—Texture mapping
-
- 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
-
- 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/013—Eye 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/1423—Digital output to display device ; Cooperation and interconnection of the display device with other functional units controlling a plurality of local displays, e.g. CRT and flat panel display
-
- 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
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T11/00—2D [Two Dimensional] image generation
- G06T11/001—Texturing; Colouring; Generation of texture or colour
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T11/00—2D [Two Dimensional] image generation
- G06T11/003—Reconstruction from projections, e.g. tomography
-
- 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
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T3/00—Geometric image transformations in the plane of the image
- G06T3/18—Image warping, e.g. rearranging pixels individually
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/20—Analysis of motion
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/70—Determining position or orientation of objects or cameras
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N23/00—Cameras or camera modules comprising electronic image sensors; Control thereof
- H04N23/60—Control of cameras or camera modules
- H04N23/698—Control of cameras or camera modules for achieving an enlarged field of view, e.g. panoramic image capture
-
- 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
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2207/00—Indexing scheme for image analysis or image enhancement
- G06T2207/20—Special algorithmic details
- G06T2207/20228—Disparity calculation for image-based rendering
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2207/00—Indexing scheme for image analysis or image enhancement
- G06T2207/30—Subject of image; Context of image processing
- G06T2207/30242—Counting objects in image
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Graphics (AREA)
- General Engineering & Computer Science (AREA)
- Human Computer Interaction (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Geometry (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Processing Or Creating Images (AREA)
Abstract
本公开提供了图形处理系统和操作图形处理系统的方法、显示系统。除了渲染表示场景的第一前向视图的第一帧,图形处理系统还渲染该第一帧的一个或更多个另外版本,各版本基于不同时间点和/或视图方位表示场景的另外视图。然后,可以对第一帧和/或一个或更多个另外版本中的一个或更多个版本进行“时间扭曲”和/或“空间扭曲”处理以生成用于显示的输出“时间扭曲的”和/或“空间扭曲的”图像。
Description
技术领域
本发明涉及图形处理系统,具体涉及向虚拟现实(VR)和/或增强现实(AR)(头戴式)显示系统提供用于显示的图像的图形处理系统。
背景技术
图1示出了示例性片上系统(SoC)图形处理系统10,其包括包含中央处理单元(CPU)1的主处理器、图形处理单元(GPU)2、显示控制器4和存储器控制器6。示例性图形处理系统10可以还包括视频引擎3。如图1所示,这些单元经由互联器5通信并且可以访问片外存储器7。在该系统中,图形处理单元(GPU)2将渲染帧(图像)以被显示,并且显示控制器4然后将帧提供给显示面板8以显示。
在使用该系统时,例如在主处理器(CPU)1上执行的诸如游戏之类的应用将要求在显示器8上显示帧。为此,应用将适当的命令和数据提交给在CPU 1上执行的用于图形处理单元(GPU)2的驱动。然后,该驱动将生成适当的命令和数据,以使图形处理单元(GPU)2渲染用于显示的适当帧并将这些帧存储在适当的帧缓冲器中,例如存储在主存储器7中。然后显示控制器4将这些帧读入显示器的缓冲器中,然后将其从中读出并且在显示器8的显示面板上显示。
图形处理系统10将被配置成提供用于显示的帧,并且图形处理单元(GPU)2将相应地被配置成以适当的速率诸如每秒30帧来渲染帧。
使用诸如图1所示的图形处理系统的示例是提供虚拟现实(VR)或增强现实(AR)头戴式显示器(HMD)系统。在这种情况下,显示器8将是某种头戴式显示器。
在头戴式显示器操作中,响应于来自(例如,在CPU 1上执行的)诸如游戏之类的需要显示的应用的适当命令和数据,由图形处理单元(GPU)2渲染要向每只眼睛显示的适当帧(图像)。
在这样的构造中,系统还将操作以跟踪用户的头部/视线的运动(所谓的头部姿态(方位)跟踪)。然后使用该头部方位(姿态)数据来确定如何实际向用户显示针对其当前头部位置(视图方位(姿态))的图像,并且相应地渲染图像(帧)(例如,通过基于头部方位数据来设置摄像头方位(视点和视图方向)),从而可以显示基于用户当前视图方向的适当图像(帧)。
虽然可以简单地在图形处理单元(GPU)2开始渲染要在虚拟现实(VR)或增强现实(AR)系统中显示的帧时确定头部方位(姿态),然后一旦渲染了帧就用该其更新显示器8,但是由于渲染过程中的延迟,可能存在的情况是在头部方位(姿态)在开始渲染帧时被感测和实际显示该帧的时间(被扫描出到显示器8)之间用户的头部方位(姿态)改变了。此外,通常期望能够以比图形处理单元(GPU)2能够渲染帧快的速率提供用于在虚拟现实(VR)或增强现实(AR)系统中显示的帧。
为了允许这一点,对于头戴式显示系统,已经提出了称为“时间扭曲”的处理。在该处理中,基于在图形处理单元(GPU)2渲染“应用”帧的开始处感测到的头部方位(姿态)数据,图形处理单元(GPU)2首先渲染应用帧,但是随后在图像被实际显示在显示器8上之前,感测到更多的头部方位(姿态)数据,并且使用更新的头部方位(姿态)传感器数据来变换经图形处理单元(GPU)2渲染的应用帧以生成考虑更新的头部方位(姿态)数据的应用帧的“更新”版本。然后,在显示器8上显示应用帧的这样“时间扭曲的”更新版本。
通常可以在比图形处理单元(GPU)2渲染帧所需的时间短得多的时间内对由图形处理单元(GPU)2渲染后的应用帧执行“时间扭曲”所需的处理。因此,通过执行“时间扭曲”处理,与图形处理单元(GPU)2在没有“时间扭曲”处理的情况下直接渲染要在显示器8上显示的各图像相比,可以减少在感测到头部方位(姿态)数据与使用感测到的头部方位(姿态)数据更新在显示器8上显示的图像之间的时间。这样做的效果是,通过使用“时间扭曲”处理,在显示器8上显示的图像可以较紧密匹配用户的最新头部方位(姿态),从而得到例如较逼真的虚拟现实(VR)或增强现实(AR)体验。
类似地,可以以比图形处理单元(GPU)2可以能够渲染帧的速率(诸如每秒30帧)快的速率(诸如每秒90或120帧)执行“时间扭曲”处理。因此,可以使用“时间扭曲”处理来以比在不使用“时间扭曲”处理的情况下可能的速率快的速率提供已经基于感测到的头部方位(姿态)更新的用于显示的帧。例如,这可以帮助减少“颤抖”的伪像并提供较平滑的虚拟现实(VR)或增强现实(AR)体验。
图2、图3和图4较详细地例示了“时间扭曲”处理。
图2示出当观看者向正前方观看时示例性帧20的显示,以及当用户的观看角度由于头部旋转而改变时该帧21的所需的“时间扭曲”投影。从图2可以看出,对于帧21,必须显示帧20的修改版本。
图3相应地示出了对应用帧30的“时间扭曲”渲染31以提供用于显示的“时间扭曲的”帧32。如图3所示,为了以连续间隔显示应用帧30的适当“时间扭曲的”版本32,在等待新的应用帧被渲染的同时,已经渲染的给定应用帧30可以经受两个(或更多个)“时间扭曲”处理31。“时间扭曲”处理31可以与应用帧30的渲染并行(使用不同的线程)(即,异步地)执行,这被称为“异步时间扭曲”(ATW)处理。
图3还示出了用于确定适当的“时间扭曲”修改的头部方位(姿态)数据的规则采样33,该修改应当被应用于应用帧30以基于其头部方位(姿态)适当地向用户显示帧。
图4示出了示例性渲染的应用帧40以及由“时间扭曲”应用帧40生成以供显示的四个相应的“时间扭曲的”帧41A-41D的示意图。为了确保图形处理单元(GPU)2渲染后的应用帧数据对于一定范围的可能的头部运动可用以被“时间扭曲”,应用帧通常由图形处理单元(GPU)2基于比实际显示给用户的输出的“时间扭曲的”帧的视场宽的视场来渲染。应用帧的视场可以基于例如假定应用帧有效的时间段内的头部运动(例如,旋转和/或平移)的允许或预期(最大)量。然后,在要显示该应用帧时,将使用“时间扭曲”处理来有效地渲染从应用帧的较宽视场中获取的适当窗口(“信箱”)。因此,在图4的示意性示例中,通过基于16×8方块视场渲染场景来提供应用帧40,但是提供具有从该较宽视场获取的仅5×4方块视场的“时间扭曲的”帧41A-41D以显示。
各“时间扭曲的”帧将还被变换(“时间扭曲”),例如,如上所述,基于最近的头部方位(姿态)信息来提供显示给用户的实际输出图像。因此,如图4的示例所示,当检测到头部方位(姿态)的改变时,应用帧40被变换,使得与当没有检测到头部方位(姿态)的变化时(41A)相比,对象42出现在“时间扭曲的”帧41B-41D中的适当移位的位置处。因此,如图4所示,当检测到向右的头部运动时,对象42看起来向左移位(41B)。与当没有检测到头部方位(姿态)改变时(41A)相比,当检测到向右的较大的头部运动时,对象42看起来向左移位较远(41C);并且当检测到向左的头部运动时,对象42看起来向右移位(41D)。
因此,在“时间扭曲”处理中,应用帧首先基于在开始渲染应用帧时感测到的第一视图方位(姿态)被渲染,并且因此大致表示在第一视图方位(姿态)被感测时应该给用户出现的正在渲染的场景的静态“快照”。然后可以使用“时间扭曲”处理来基于在已经渲染该应用帧之后在一个或更多个相应的稍后时间点感测的一个或更多个第二视图方位(姿态)来更新(变换)静态“快照”应用帧,以提供一系列一个或更多个连续的“时间扭曲的”帧,各帧表示在该相应的稍后时间点的场景的更新视图。
已经认识到,虽然这种“时间扭曲”处理考虑了在感测第一视图头部方位(姿态)的时间点与感测相应第二视图头部方位(姿态)的时间点之间的时间段期间的视图方位(姿态)的变化,但它没有考虑到并且因此“时间扭曲的”帧不显示由于该同一时间段期间在场景内的对象的运动而引起的任何改变。这意味着对表示动态场景即包括运动对象在内的场景的渲染后的应用帧的“时间扭曲”处理会在向用户显示的内容中引入失真。
为了考虑在执行“时间扭曲”处理时的对象运动,已经提出了称为“空间扭曲”处理的处理。该处理试图通过将在应用帧中示出的运动对象外插到在稍后时间点预期的例如位置并且接着基于外插的对象来进行“时间扭曲”处理,来考虑通过基于在稍后时间点感测到的视图方位(姿态)对应用帧进行“时间扭曲”而生成“时间扭曲的”帧时对象的任何运动。然后在显示器8上显示应用帧的这样“时间扭曲的”和“空间扭曲的”更新版本。
申请人认为仍然存在对图形处理系统进行改进的余地,并且特别是对为虚拟现实(VR)和/或增强现实(AR)(头戴式)显示系统提供“时间扭曲的”和/或“空间扭曲的”图像以供显示的图形处理系统。
发明内容
根据本发明的第一方面,提供了一种操作图形处理系统的方法,该图形处理系统渲染对一个或更多个对象的场景的视图进行表示的帧,并且通过基于接收到的视图方位数据和/或对象运动变换渲染后的帧来从渲染后的帧生成用于显示的输出帧,该方法包括以下步骤:
渲染第一帧,该第一帧表示在第一时间点、从第一视点和在第一视图方向上的场景的第一视图;
渲染所述第一帧的一个或更多个另外版本,各另外版本表示在另外时间点和/或从另外视点和/或在另外视图方向上的所述场景的另外视图;接着
使用来自渲染后的第一帧的渲染数据和/或来自所述第一帧的一个或更多个渲染后的另外版本中的一个或更多个版本的渲染数据生成用于显示的输出帧。
根据本发明的第二方面,提供了一种图形处理系统,该图形处理系统被配置成:
由处理电路帧来渲染帧,各帧表示一个或更多个对象的场景的视图,并且通过基于接收到的视图方位数据和/或对象运动对渲染后的帧进行变换来由处理电路从渲染后的帧生成用于显示的输出帧;
其中,所述图形处理系统还被配置成针对第一渲染后的帧执行以下处理,该第一渲染后的帧表示在第一时间点、从第一视点和在第一视图方向上的场景的第一视图:
由处理电路渲染所述第一帧的一个或更多个另外版本,各另外版本表示在另外时间点和/或从另外视点和/或在另外视图方向上的所述场景的另外视图;接着
由处理电路使用来自渲染后的第一帧的渲染数据和/或来自所述第一帧的一个或更多个渲染后的另外版本中的一个或更多个版本的渲染数据生成输出帧。
本发明涉及一种图形处理系统,其通过基于接收到的视图(头部或显示器)方位(姿态)数据和/或对象运动变换这些渲染后的帧来从渲染后的帧生成用于显示的输出帧,(例如并且在实施方式中通过“时间扭曲”处理),例如通过从渲染后的帧(例如并且在实施方式中通过“空间扭曲”处理)外插对象运动(例如对象平移和/或旋转)。
在特别优选的实施方式中,图形处理系统为虚拟现实(VR)和/或增强现实(AR)头戴式显示系统(例如如以上所描述的)生成用于显示的输出(变换的)“时间扭曲的”和/“时间扭曲的”帧。因此,在优选实施方式中,图形处理系统(的图形处理单元(GPU))渲染(应用)帧,通过基于由该虚拟现实(VR)和/或增强现实(AR)头戴式显示系统感测到的(从其接收的)头部(视图)方位(姿态)数据对渲染后的(应用)帧进行“时间扭曲”来变换这些渲染后的(应用)帧和/或通过基于对象运动对渲染后的(应用)帧进行“空间扭曲”来外插这些渲染后的(应用)帧中的运动对象,并且向该虚拟现实(VR)和/或增强现实(AR)头戴式显示系统的头戴式显示器提供这样“时间扭曲的”(这样变换的)和/或这样“空间扭曲的”(这样外插的)输出帧(图像)以供显示。
在本发明中,如在用于执行“时间扭曲”和/或“空间扭曲”处理的已知结构中,(由图形处理单元(GPU))渲染第一(应用)帧,其表示在第一时间点、从第一视点并且在第一视图方向上的场景的第一视图,例如,并且在实施方式中,基于在第一时间点由图形处理系统正在提供用于显示的图像所针对的一(或该)虚拟现实(VR)和/或增强现实(AR)头戴式显示系统感测到的第一头部(视图)方位(姿态)来渲染。因此,第一(应用)帧优选地表示相对于在第一时间点处感测到的头戴式显示系统的用户的所感测到的第一头部(视图)方位(姿态)的场景的“正前方”或“前向”视图。
然而,与已知的结构形成对比,在本发明中,在从渲染后的第一(应用)帧实际生成用于显示的输出(例如“时间扭曲的”和/或“空间扭曲的”)帧(并显示)之前,(由图形处理单元(GPU))例如并且在实施方式中基于相对于(感测的)第一头部(视图)方位(姿态)和/或在第一时间点之后的另外时间点的另外(不同)头部(视图)方位(姿态)渲染第一(应用)帧的另外版本,其表示在另外(不同)时间点和/或从另外(不同)视点和/或另外(不同)视图方向。
如将在下面进一步讨论的,渲染第一(应用)帧的另外版本所基于的另外视点和/或另外视图方向(视图方位(姿态))可以表示例如在第一(应用)帧被用于显示的时间段内该头戴式显示器的用户相对于渲染第一(应用)帧所基于的感测到的(第一)头部方位(姿态)(第一视点和视图方向)(从其开始)可能进行的预测或假定的头部运动,诸如头部旋转和/或平移。因此每个另外的渲染版本可以表示例如如果用户要相对于感测到的(第一)头部方位(姿态)(第一视点和视图方向)(从其开始)旋转和/或平移他们的头部则将对该用户出现的场景的(区域的)视图。
这意味着,例如,除了仅考虑视图旋转(例如偏航、俯仰和滚转)的“时间扭曲”处理即三个自由度(3-DOF)“时间扭曲”处理外,本发明还可以用于执行六自由度(6-DOF)的“时间扭曲”处理,其中,视图旋转(例如偏航、俯仰和滚转)和视图平移(例如上/下、左/右和前/后)被考虑在内。
因此,例如,并且在实施方式中,当执行(三自由度(3-DOF))“时间扭曲”处理时,以及例如基于在开始渲染(第一)应用帧时(在第一时间点)感测到的“正前方”(第一)头部方位(姿态)(第一视点和视图方向)来渲染正常(第一)应用帧时,在假定例如相对于在开始渲染(第一)应用帧时感测到的“正前方”(第一)头部方位(姿态)的向左20°和向右20°、向左40°和向右40°以此类推的另外头部方位(旋转)的情况下,还渲染(第一)应用帧(的区域)的附加(另外)版本。
另外或另选地,可以基于另外时间点来渲染第一(应用)帧的另外版本,例如,在第一(应用)帧表示场景的视图的第一时间点之后,要生成的输出(“时间扭曲的”和/或“空间扭曲的”)帧将在该另外时间点表示场景的视图。在这种情况下,另外渲染的版本因此可以表示例如在该另外时间点的场景的视图,并且因此可以在运动对象应该(或预测或假定)在另外时间点出现的例如位置处示出运动对象。
因此,例如,并且在实施方式中,当执行“时间扭曲”和/或“空间扭曲”处理时,在输出“时间扭曲的”和/或“空间扭曲的”帧被生成以用于显示之前,渲染表示开始渲染应用帧时的第一时间点处的场景的第一视的正常(第一)应用帧,以及表示在稍后时间点的场景的视图的(第一)应用帧的附加(另外)版本。
因此,除了(如在已知结构中)(图形处理单元(GPU))基于在第一时间点感测到的视图(头部)方位(姿态)来渲染场景的(第一)视图外,在本发明的优选实施方式中,(由图形处理单元(GPU))还基于相对于所感测到的视图(头部)方位(姿态)(从其开始)预测或假定的(可能的)视图(头部)运动(旋转和/或旋转)和/或基于未来时间点来渲染场景(的至少区域)的另外不同视图。然后(并且优选地)使用来自多个渲染后的视图的渲染数据的组合可以生成输出(例如“时间扭曲的”和/或“空间扭曲的”)帧。
如将将在下面进一步讨论的那样,另外渲染的版本可以提供附加的(由图形处理单元(GPU))渲染的数据,其可以被“时间扭曲”和/或“空间扭曲”来以较少的伪像和失真并以有效的方式提供较真实的虚拟现实(VR)和/或增强现实(AR)体验。
具体而言,申请人已经认识到,虽然“时间扭曲”和“空间扭曲”处理可以帮助减少某些伪像(例如颤抖),但在已知的结构中,对渲染后的应用帧的“时间扭曲”和/或“空间扭曲”可用引入自己的扭曲。
例如,申请人已经认识到,在用于执行“时间扭曲”(和“空间扭曲”)处理的已知结构中,图形处理单元(GPU)2将仅基于在图形处理单元(GPU)2开始渲染应用帧时感测到的单个视图(头部)方位来渲染应用帧数据。当检测到视图(头部)方位发生变化时,基于旧视图(头部)方向渲染的应用帧数据将根据新的、改变后的视图(头部)方位通过“时间扭曲”处理进行变换。
然而,“时间扭曲”处理通常不能考虑由于视图(头部)方位改变而应该明显可见并且而如果基于新的视图(头部)方位渲来染新的应用帧则将明显可见的所有变化。这可能导致显示给用户的内容失真,并且这种失真在已知的结构中对于场景中靠近摄像头(视点)的对象而言并且在视图(头部)方位(姿态)存在较显著的变化的情况下,例如由于视差效应,会特别明显且较为严重,。
而且,“时间扭曲”处理通常不能考虑由于对象运动而应该明显可见的变化。例如,在包含相对于场景中的背景对象运动的对象的动态场景的情况下,由于对象的运动,运动对象相对于背景对象的位置应该看起来随时间改变。因此,在表示稍后时间点的应用帧的“更新”版本的“时间扭曲的”帧中,这样的运动对象应该出现在“时间扭曲的”帧中与应用帧中示出的位置不同的相对于背景对象的位置。此外,在表示在连续稍后时间点处的单个应用帧的连续“更新”版本的一系列连续的“时间扭曲的”帧的情况下,运动对象应该在各连续“时间扭曲的”帧的不同相对位置出现。
然而,由于“时间扭曲”处理不考虑任何这样的对象运动,因此从应用帧生成的各“时间扭曲的”帧将在与应用帧中示处的位置相同的相对于背景对象的位置处示出这样的运动对象。因此,运动对象会在“时间扭曲的”帧中的不正确(相对)位置处出现,而且,会在从同一应用帧生成的连续的“时间扭曲的”帧中看起来是静态的,导致给用户显示的内容中的失真和伪像。
此外,可以存在视图(头部)方位的改变导致从旧视图(头部)方位的角度被遮挡的对象和/或对象的区域变得可见的情况。例如,由于视图(头部)方位改变,被较近对象遮挡的背景对象或区域可能变得可见,和/或自我遮挡的对象的区域可能变得可见。然而,在已知的结构中,图形处理单元(GPU)2将不渲染用于任何这种新可见的“解遮挡”的对象和/或区域的数据。
类似地,动态场景中的对象运动可以导致在第一时间点被遮挡的对象和/或对象的区域在稍后的时间点变得可见。然而,在用于执行“空间扭曲”处理的结构中,用于任何这样的对象和/或区域上执行,然而,数据不直接由图形处理单元渲染(GPU)2针对在“空间扭曲的”的帧中由于从渲染后的应用帧的对象运动而“解遮挡”的任何这种对象和/或区域进行渲染。
相应地,在已知的结构中,可以使用渲染后的应用帧数据来执行“时间扭曲”和/或“空间扭曲”处理,该渲染后的应用帧数据不示出对象和/或区域,因为从(旧)视图(头部)方位的角度和/或在渲染应用帧所基于的时间点这些对象和/或区域被遮挡。这会导致显示给用户的内容的进一步失真和伪像。
因此,在本发明中,与已知的结构形成对比,渲染第一(应用)帧的一个或更多个另外(附加)版本。该另外(附加)版本可以(并且优选地确实)示出任何“解遮挡”的对象和/或区域,即从第一视图(头部)方位(姿态)的角度和/或在第一时间点被遮挡但是从相应的另外视图(头部)方位的角度和/或在相应的另外时间点可见的对象和/或区域。如将在下面进一步讨论的那样,该另外(附加)版本也可以(或代替地)(并且优选地确实)示出可能由于“时间扭曲”处理而特别失真的任何近和/或运动对象。
相应地,当执行“时间扭曲”和/或“空间扭曲”处理时,第一帧的另外(附加)版本可以(并且优选地确实)为否则可能会被“时间扭曲”/或“空间扭曲”处理显著失真的场景的区域例如并且优选地基于第一视图(头部)方位(姿态)和/或在第一时间点被遮挡并且由于视图(头部)方位(姿态)的变化和/或对象运动而变得可见的近和/或运动对象提供渲染数据。这意味着,如将在下面进一步讨论的,可以避免或减少可能由“时间扭曲”和/或“空间扭曲”处理引起的失真和伪像。例如,可以提供较平滑的虚拟现实(VR)或增强现实(AR)体验。
因此,应该认识到,本发明提供了一种改进的图形处理系统,特别是一种为虚拟现实(VR)和/或增强现实(AR)(头戴式)显示系统提供“时间扭曲的”和/或“空间扭曲的”图像以显示的改进的图形处理系统。
(渲染的)第一帧可以是表示场景的第一视图的任何合适的和期望的帧。在实施方式中,第一帧是针对诸如游戏之类的应用而生成(渲染)的用于显示的帧(图像)。
第一帧可以包括数据元素(采样位置)(例如像素)的阵列,对于每个数据元素渲染合适的数据(例如,一组颜色值)。
第一帧可以以任何合适和期望的方式渲染。第一帧在实施方式中由图形处理系统的图形处理单元(GPU)(图形处理器)渲染,但如果期望则其也可以或者代替地由图形处理系统的另一组件例如CPU或视频处理器生成或提供。
渲染后的第一帧可以根据期望被存储(写入)在存储器中以供随后使用。例如,第一帧可以被存储在存储器中的帧缓冲器中,然后可以从其中读取该帧以供另外处理(例如,如以下所描述)和/或由显示控制器显示。这样的存储器可以包括任何合适的存储器并且可以以任何合适的和期望的方式来配置。例如,它可以是与图形处理单元(GPU)共片的存储器,或者其可以是外部存储器。在实施方式中,其为外部存储器,诸如图形处理系统的主存储器。其可以是专用于此目的的专用存储器,或者可能是也用于其他数据的存储器的一部分。
第一帧优选是表示在相应的时间点场景的连续视图的连续的这样渲染后的帧的序列的渲染后的帧。
如本领域已知的,第一帧表示的视图的场景将包括要根据期望(例如,通过一(或该)应用)在空间(例如,世界空间)中排布的一个或更多个对象。第一帧将从该空间中的一点,即从第一视点,并且在例如并且实施方式中对应于(在第一时间点感测到的)(感测到的)第一视图(头部或显示器)方位(姿态)的第一视图方向上表示场景的第一视图。
第一帧表示的视图的场景可以根据期望包括一个或更多个静态对象和/或(例如,相对于(静态)(例如背景)对象运动的)一个或更多个运动对象。第一帧将表示在第一时间点的场景的第一视图,并且因此运动对象应当在第一帧中在第一时间点的场景中的位置(和方位)示出。
通常,场景的第一视图将是(仅)位于场景空间的(第一)视锥体(体积)内的对象的视图。如本领域已知的,第一视椎体可以由垂直于第一视图方向的近平面和/或远平面限定。(第一)视锥体例如可以表示其顶点位于第一视点并且轴线沿第一视图方向指向的四棱锥的平截头体或其他合适的体积。
因此,位于(第一)视锥体之外的场景的对象不能包含在第一视图中,因此不能出现在第一帧中。例如,在第一视图中不能包括(在场景空间中)比(第一)视锥体的近平面还接近第一视点的对象;并且类似地,第一视图中不能包括(在场景空间中)比(第一)视锥体的远平面还远离第一视点的对象。
第一帧表示场景的视图所在的第一个时间点可以是任何合适的和期望的时间点。该第一时间点优选地是(图形处理单元(GPU))开始渲染第一帧的时间点。优选地,第一时间点是渲染第一帧所基于的第一视点和第一视图方向(视图方位(姿态))被(图形处理系统提供用于显示的图像所针对的虚拟现实(VR)和/或增强现实(AR))(头戴式)显示系统)感测到的时间点。
在优选实施方式中,第一帧是基于在第一时间点(在开始渲染第一帧时)感测到的第一视图(头部或显示器)方位(姿态)(对应于第一视点和第一视图方向)来渲染的,但是基于在第二时间点在第一帧已经被初始渲染之后感测到的第二(不同)视图(头部或显示器)方位(姿态)来显示(变换)的帧(图像)。例如,并且在优选实施方式中,第一帧是例如如以上所描述述将要通过(三或六自由度(“DOF”))“时间扭曲”处理来变换以提供(该)输出“时间扭曲的“(变换)帧(图像)以供显示的“应用”帧。
另外或另选地,在优选实施方式中,第一帧是以下帧(图像),其表示在第一时间点(在开始渲染第一帧时的)场景的第一视图,但是其将基于对象运动经受外插操作(变换)使得生成表示在第一帧已经被渲染之后的(或该)第二时间点处的场景的视图的第一帧的外插版本以供显示。例如,并且在优选实施方式中,第一帧是例如如以上所描述的将通过“空间扭曲”处理来外插(变换)以提供用于显示的(输出)“空间扭曲的”(外插)帧(图像)的“应用”帧。
在特别优选的实施方式中,第一(应用)帧是为(虚拟现实(VR)和/或增强现实(AR))头戴式显示系统渲染的帧(图像),其中,第一(应用)帧的经变换的(“时间扭曲的”和/或“空间扭曲的”)版本优选地被提供给(虚拟现实(VR)和/或增强现实(AR))头戴式显示系统(的头戴式显示器)以供显示。
这种(虚拟现实(VR)和/或增强现实(AR))头戴式显示系统可以包括一个或更多个传感器,其用于在使用中(在图像在(虚拟现实(VR)和/或增强现实(AR))头戴式显示系统的头戴式显示器上向用户显示的同时)感测(跟踪)用户的头部(和/或其视图(注视)方向)的方位(姿态)(例如,旋转和/或平移)。
在这种情况下,渲染第一(应用)帧所基于的第一视点和第一视图角方向将优选地对应于(虚拟现实(VR)和/或增强现实(AR))头戴式显示系统的用户的第一头部(视图)方位(姿态),该第一头部(视图)方位(姿态)在第一时间点由(虚拟现实(VR)和/或增强现实(AR))头戴式显示系统(的一个或更多个传感器)感测到,优选地在(图形处理单元(GPU))开始渲染第一(应用)帧时感测到。
因此,第一(应用)帧优选地表示来自用户的(第一)视点并且在对应于用户的(第一)头部(视图)方位(姿态)的(第一)视图方向上的场景的(第一)(前向)视图,该(第一)头部(视图)方位(姿态)优选地在(图形处理单元(GPU))开始渲染第一(应用)帧时在第一时间点(由(虚拟现实(VR)和/或增强现实(AR))头戴式显示系统)感测到。
然而,如下面将进一步讨论的,在另一实施方式中,第一(应用)帧被渲染用于非头戴式的显示系统,诸如手持式(虚拟现实和/或增强现实(AR))显示系统,例如移动电话或平板电脑。这样的系统可以操作以跟踪(例如,移动电话或平板电脑的)显示器自身的运动(方位(旋转和/或平移)),并且因此渲染第一(应用)帧所基于的第一视点和第一视图方向将优选地对应于(虚拟现实(VR)和/或增强现实(AR))显示系统的显示器的第一显示器(视图)方位(姿态),该第一显示器(视图)方位(姿态)优选地在第一时间点由(虚拟现实(VR)和/或增强现实(AR))显示系统(的一个或更多个传感器)感测到,优选地在(图形处理单元(GPU))开始渲染第一(应用)帧时感测到。
第一个(应用)帧可以是任何合适的和期望的大小。然而,在优选实施方式中,第一(应用)帧基于比显示第一(应用)帧的(该)输出(经变换的(“时间扭曲的”和/或(空间扭曲的))版本所基于的视场宽的视场来渲染。第一(应用)帧的视场可以基于例如在假设该第一(应用)帧有效的时间段内允许或预期的视图(头部或显示器)方位(姿态)运动(例如旋转和/或平移)的(最大)量。
第一帧的一个或更多个另外版本的一(并且各)另外版本可以包括数据元素(采样位置)(例如像素)的阵列,对于其每个数据元素,适当的数据(例如,一组颜色值)被渲染。
第一帧的一个或更多个另外版本应该在表示第一帧的输出(例如,经变换和/或外插)版本的(输出)帧被生成之前被渲染,并且优选地在输出帧(在一(或该)显示器上)被显示之前被渲染。第一帧的一(并且各)另外版本可以以任何合适的和期望的方式来渲染。
一(并且各)另外版本在实施方式中由图形处理系统的一(或者该)图形处理单元(GPU)(图形处理器)渲染,但是如果期望则其也可以或者代替地由图形处理系统的另一组件生成或提供,诸如一(或该)CPU或一(或该)视频处理器。
可以由图形处理系统的与第一帧不同的组件来渲染一(并且各)另外版本。然而,在优选实施方式中,一(并且各)另外版本由图形处理系统的渲染第一帧的相同组件(例如图形处理单元(GPU))来渲染。
一(和每个)渲染后的另外版本可以存储(写入)在存储器中以供随后根据期望使用。例如,可以将一(并且各)另外版本存储在存储器中的(相应的)帧缓冲器中,然后可以由一(或该)显示控制器从其中读取以供另外处理(例如,如以下所描述)和/或用于显示。这样的存储器可以包括任何合适的存储器并且可以以任何合适的和期望的方式来配置。例如,其可以是与图形处理单元(GPU)共片的存储器,或其可以是外部存储器。在实施方式中,其为外部存储器,诸如图形处理系统的主存储器。其可以是专用于此目的的专用存储器,或者可能是也用于其他数据的存储器的一部分。
一(并且每个)另外版本可以与渲染的第一帧存储在不同的存储器中。然而,在优选实施方式中,一(并且各)另外版本与第一帧被存储在同一存储器中。
通常,第一帧的一(并且各)另外版本将表示(仅)位于场景空间的相应的另外视椎体(体积)内的对象的视图,例如,以与以上描述的相似的方式。
第一帧的一个或更多个另外版本的一(并且各)另外版本应该表示与第一帧表示的视图的场景相同的场景的(相应的)另外视图,但是是在(相应的)另外(不同)时间点处和/或从(相应)另外(不同)视点,和/或在(相应)另外(不同)视图方向上。
因此,应该基于以下各项中的一项或更多项来渲染第一帧的一(并且各)另外版本:(i)(相应)另外时间点;(ii)从(相应)另外视点;和(iii)在(相应)另外视图方向上。例如,一(和每个)另外版本可以表示在(相应)另外时间点处;从(相应)另外视点;或者在(相应)另外视图方向上的场景的视图。或者,一(并且各)另外版本可以表示在(相应)另外时间点和从(相应)另外视点的场景的视图;在(相应)另外时间点和在(相应)另外视图方向上的场景的视图;或从(相应)另外视点和在(相应)另外视图方向上的场景的视图。或者,一(并且各)另外版本可以表示在(相应)另外时间点的场景的视图;从(相应)另外视点的场景的视图;和在(相应)另外视图方向上的场景的视图。
因此,渲染第一帧的一(并且各)另外版本所基于的时间点、视点和视图方向中的至少一项应该(并且优选地确实)与渲染第一帧所基于的不同。相应地,渲染第一帧的一(并且各)另外版本所基于的时间点、视点和视图方向中的一项或更多项(但不是全部)可以与渲染第一帧所基于的相同。因此,第一帧的一(并且各)另外版本应该(并且优选地确实)表示与第一帧表示的场景的第一视图不同的场景的视图。
在渲染第一帧的多个另外版本的情况下,则在优选实施方式中,渲染多个另外版本中的另外版本所基于的时间点、视点和视图方向中的至少一项与渲染多个另外版本中的其他另外版本所基于的不同。相应地,渲染多个另外版本中的另外版本所基于的时间点、视点和视图方向中的一项或更多项(但不是全部)可以与渲染多个另外版本中的其他另外版本所基于的相同。因此,多个另外版本的一(并且各)另外版本优选地表示与多个另外版本的其他另外版本表示的场景的视图的不同的场景的视图。
在基于另外时间点(与渲染第一帧所基于的第一时间点不同)渲染第一帧的另外版本的情况下,则该另外时间点可以是任何期望的时间点。
在优选实施方式中,另外时间点是在第一帧表示场景的视图所在的第一时间点之后的时间点,(并且优选地在第一帧已经被渲染之后),但是优选地在在渲染后的帧序列中的跟随着第一帧的帧表示场景的视图所在的时间点之前。
在优选实施方式中,另外时间点是要生成(输出)的(输出)(变换和/或外插的,例如“时间扭曲的”和/或“空间扭曲的”)帧的表示视图的场景所在的时间点,并且优选地是变换(例如通过“时间扭曲”处理)第一帧所基于的(第二)视图方位数据被感测到的时间点,例如第二时间点。
在优选实施方式中,基于另外时间点渲染的一(各)另外版本表示场景的另外视图,如其应该、或者被预测或假定在相应另外时间点出现的那样。因此,例如,在场景包含一个或更多个运动对象的情况下,基于另外时间点渲染的第一帧的另外版本应该示出基于运动对象的运动与第一帧相比适当运动(例如,平移、旋转和/或缩放)了的那些运动对象。
这种对象运动可以根据期望提供或确定。例如,对象运动可以通过连续帧的适当比较来确定。然而,在优选实施方式中,由生成第一帧(和另外版本)所针对的(该)应用来指示或预测对象运动。
相信在使用来自这些多个不同视图中的一个或更多个视图的渲染数据来生成输出帧之前,渲染表示在不同时间点的场景的不同视图的场景的多个视图的构思本身是新颖且具有创造性的。
因此,根据本发明的第三方面,提供了一种操作图形处理系统的方法,该图形处理系统渲染对一个或更多个对象的场景的视图进行表示的帧,并且通过基于接收到的视图方位数据和/或对象运动变换渲染后的帧来从渲染后的帧生成用于显示的输出帧,该方法包括以下步骤:
渲染第一帧,该第一帧表示在第一时间点的场景的第一视图;
渲染所述第一帧的一个或更多个另外版本,各另外版本表示在另外时间点的所述场景的另外视图;接着
使用来自渲染后的第一帧的渲染数据和/或来自所述第一帧的一个或更多个渲染后的另外版本中的一个或更多个版本的渲染数据生成用于显示的输出帧。。
根据本发明的第四方面,提供了一种图形处理系统,该图形处理系统被配置成由处理电路帧来渲染帧,各帧表示一个或更多个对象的场景的视图,并且通过基于接收到的视图方位数据和/或对象运动对渲染后的帧进行变换来由处理电路从渲染后的帧生成用于显示的输出帧;
其中,所述图形处理系统还被配置成针对第一渲染后的帧执行以下处理,该第一渲染后的帧表示在第一时间点的场景的第一视图:
由处理电路渲染所述第一帧的一个或更多个另外版本,各另外版本表示在另外时间点的所述场景的另外视图;接着
由处理电路使用来自渲染后的第一帧的渲染数据和/或来自所述第一帧的一个或更多个渲染后的另外版本中的一个或更多个版本的渲染数据生成输出帧。
如本领域技术人员将理解的那样,本发明的这些方面和实施方式可以并且优选确实根据情况包括本文所述的本发明的优选和可选特征中的一个或更多个,并且优选地包括全部。
例如,在这些方面和实施方式中,第一帧的一(并且各)另外版本优选地表示来自渲染第一帧所基于的来自(第一)视点和在(第一)视图方向上但在不同(另外)时间点优选地在稍后时间点的场景的(相应)另外视图。然而,第一帧的一(并且各)另外版本可以表示来自与第一帧不同(另外)视点和/或在不同(另外)视图方向上(以及在不同(另外)时间点优选地在稍后时间点)的场景的(相应)另外视图。
在基于另外视点(与渲染第一帧所基于的第一视点不同)渲染第一帧的另外版本的情况下,该另外视点可以是任何期望的视点。类似地,在基于另外视图方向(其与渲染第一帧所基于的第一视图方向不同)渲染第一帧的另外版本的情况下,该另外视图方向可以是任何期望的视图方向。
在优选实施方式中,渲染第一帧所基于的第一视点和第一视图方向对应于第一视图(头部或显示器)方位(姿态),并且渲染第一帧的另外版本所基于的另外视点和另外视图方向对应于(相应)另外视图(头部或显示器)方位(姿态)(与第一视图方位(姿态)不同)。
将理解的是,如果视图方位(姿态)(例如,另外视图方位(姿态))所对应的视点和视图方向中的至少一项与另一视图方位(姿态)(例如,第一视图方位(姿态))所对应的视点和视图方向相应地不同,则该视图方位(姿态)将与另一视图方位(姿态)不同。
在这种情况下,优选地相对于渲染第一帧所基于的(所感测到的)第一视图方位(姿态)来定义渲染另外版本所基于的一(各)另外视图方位(姿态),使得其表示从(所感测到的)第一视图(头部或显示器)方位(姿态)起的(头部或显示器)运动(例如,旋转和/或平移)。
因此,例如,一(各)另外视图方位(姿态)可以表示从第一视图(头部或显示器)方位(姿态)开始的向右或向左(偏航)转动(旋转)(头部或显示器)、向上或向下(俯仰)和/或左或右滚转头部(滚转),以及从第一视图(头部或显示器)方位(姿态)开始的向右或向左、向上或向下、和/或向前或向后移动(平移)(头部或显示器)。
可以根据期望来定义一(各)另外视图(头部或显示器)方位(姿态)(旋转和/或平移),诸如以相对于第一视图(头部或显示器)方位(姿态)的一个或更多个(欧拉)角或四元数、和/或一个或更多个(平移)距离或向量的形式。
相信在使用来自这些多个不同视图中的一个或更多个视图的渲染数据来生成输出帧之前,基于不同视图方位(姿态)渲染表示场景的不同视图的场景的多个视图的构思本身是新颖且具有创造性。
因此,根据本发明的第五方面,提供了一种操作图形处理系统的方法,该图形处理系统渲染对一个或更多个对象的场景的视图进行表示的帧,并且通过基于接收到的视图方位数据和/或对象运动变换渲染后的帧来从渲染后的帧生成用于显示的输出帧,该方法包括以下步骤:
渲染第一帧,该第一帧基于第一视图方位表示场景的第一视图;
渲染所述第一帧的一个或更多个另外版本,各另外版本基于另外视图方位表示所述场景的另外视图;接着
使用来自渲染后的第一帧的渲染数据和/或来自所述第一帧的一个或更多个渲染后的另外版本中的一个或更多个版本的渲染数据生成用于显示的输出帧。
根据本发明的第六方面,提供了一种图形处理系统,该图形处理系统被配置成由处理电路帧来渲染帧,各帧表示一个或更多个对象的场景的视图,并且通过基于接收到的视图方位数据和/或对象运动对渲染后的帧进行变换来由处理电路从渲染后的帧生成用于显示的输出帧;
其中,所述图形处理系统还被配置成针对第一渲染后的帧执行以下处理,该第一渲染后的帧基于第一视图方位表示场景的第一视图:
由处理电路渲染所述第一帧的一个或更多个另外版本,各另外版本基于另外视图方位表示所述场景的另外视图;接着
由处理电路使用来自渲染后的第一帧的渲染数据和/或来自所述第一帧的一个或更多个渲染后的另外版本中的一个或更多个版本的渲染数据生成输出帧。
如本领域技术人员将理解的那样,本发明的这些方面和实施方式可以并且优选确实根据情况包括本文所述的本发明的优选和可选特征中的一个或更多个,并且优选地包括全部。
例如,在这些方面和实施方式中,第一帧的一(并且各)另外版本优选地表示在第一帧表示场景的视图所在的(第一)时间点处的场景的(相应)另外视图,但基于不同(另外)视图方位(姿态)(从不同(另外)视点和/或在不同(另外)视图方向上)。然而,第一帧的一(并且各)另外版本可以表示在与第一帧不同(另外)优选稍后的时间点(以及从不同(另外)视图方位(姿态))的场景的(相应)另外视图。
申请人已经认识到,虽然以本发明的方式渲染第一帧的一个或更多个另外版本可以提供某些优点(例如,如以上所描述),但与在不渲染第一帧的一个或更多个另外视图的情况下渲染第一帧的情况相比,也会增大处理要求。如此,可以期望减少、避免或优化渲染第一帧的一个或更多个另外版本所需的处理。例如,在具有受限处理资源的移动设备(例如移动电话或平板电脑)的情况下,这可能是特别期望的。
举例来说,虽然第一帧的一个或更多个另外版本的一(并且各)另外版本可以在渲染数据被需要的时候(由例如,图形处理单元(GPU))渲染,例如,当渲染数据被要求用于显示时,在优选实施方式中,(由图形处理单元(GPU))渲染一个或更多个另外版本中的一个或更多个(并且优选为各)版本,连同(基本上同时于)第一(应用)帧的渲染。
就此而言,申请人已经认识到,渲染一(和各)另外版本所需的大部分输入数据(例如,顶点数据)可能与渲染第一(应用)帧所需的输入数据相同,使得通过渲染一(并且各)另外版本连同(在大致相同时间)第一(应用)帧的渲染,该输入数据可以在渲染期间被(图形处理单元(GPU))重新使用,从而其可能只需要缓存一次,例如,得到较高效的渲染处理。
因此,根据优选实施方式,该方法包括(并且该系统被配置成)使用第一输入数据来渲染第一帧;以及使用所述第一输入数据的至少一些来渲染所述第一帧的所述一个或更多个另外版本中的至少一各版本(且优选地各版本)。
在另一示例中,并且在实施方式中,第一帧的一个或更多个另外(附加)版本仅在它们可能必需以降低伪像和失真的可能性(和严重性)的时候才被渲染。
例如,如以上所描述的,申请人已经认识到,由于视差效应,当执行“时间扭曲”和/或“空间扭曲”处理时,失真和伪像可能特别明显,在存在接近摄像头(靠近视点)的对象的情况下以及在视图方位(姿态)有较显著变化的情况下较严重。
因此,根据优选实施方式,仅当确定场景的第一视图中的对象接近第一视点时,第一帧的一个或更多个另外版本中的一个或更多个(并且优选为每个)版本才被渲染。
确定场景的第一视图中的对象是否接近第一视点可以以任何合适的和期望的方式执行。其通常将涉及通过确定场景中的对象在其中设置的(世界)空间内的适当距离并将所确定的距离与适当的(阈值)值进行比较来确定对象在空间内是否在空间上接近第一视点。
这样的距离可以表示任何合适的和期望的距离,诸如在场景的第一视图中的对象(或对象的边缘)和适当的基准(诸如基准点(例如第一视点)或基准面(例如(第一)视锥体的近平面))之间的最短和/或平均距离。
这样的距离可以在任何合适的方向上定义,但是优选地表示进入场景的深度(Z值)(例如在第一视图方向上从(第一)视锥体的近平面向(第一)视锥体的远平面)。
优选地,将所确定的距离(例如深度(Z值))与一个或更多个(阈值)值进行比较,例如以确定距离(例如深度(Z值))是否满足关于一个或更多个(阈值)值的一个或更多个不等式。然后当(对象与基准之间的)距离相对于一个或更多个(阈值)值满足一个或更多个不等式时,优选地确定该场景的第一视图中的对象接近第一视点。
因此,例如,确定场景的第一视图中的对象是否接近第一视点可以包括确定一(或者该)距离(例如深度(Z值))是否在特定范围内(由高和低(阈值)值定义)或小于(或小于或等于)(阈值)值。
在特别优选的实施方式中,确定场景的第一视图中的对象是否接近第一视点包括确定场景内的对象的深度(Z值)是否小于(或小于或等于)阈值,并且当确定场景内的对象的深度(Z值)小于(或小于或等于)该阈值时,确定场景的第一视图中的对象接近第一视点。
在一(或该)深度与阈值进行比较的情况下,可以根据期望选择阈值。其可以是固定阈值,例如,由生成第一帧所针对的应用来设定(定义)。或者,阈值可以变化,例如依赖于被确定其(距基准)距离的对象的属性(诸如对象的大小和/或形状)而变化。
将理解的是,在场景的第一视图是(仅)位于一(或该)(第一)视锥体内的对象的视图的情况下,确定场景的第一视图中的对象是否接近第一视点将包括确定位于(第一)视锥体内的(可见)对象是否接近第一视点。
进一步将理解的是,确定对象是否接近第一视点可以在渲染第一帧之前、同时或之后执行。
在多个对象存在于场景的第一视图中的情况下,优选地确定场景的第一视图中的多个对象以及优选地多个对象中的各对象是否接近第一视点。因此,将理解的是,可以确定场景的第一视图中的多个对象接近第一视点。
确定场景的第一视图中的多个对象是否接近第一视点可以针对多个对象中的各对象单独执行,或者可以将多个对象分组为一个或更多个组,例如基于它们彼此的空间接近性分组,各组包括一个或更多个对象,并且可以针对该一个或更多个组中的一个或更多个组来进行该确定。
因此,在优选实施方式中,确定一组一个或更多个对象是否接近第一视点。这可以根据期望执行;例如大致如以上所描述的那样,例如通过确定该组一个或更多个对象中的对象和一(或该)基准之间的最短距离,或者通过确定一个或更多个对象与一(或该)基准之间的平均距离。
因此,在优选实施方式中,当确定场景的第一视图中(位于(第一)视锥体内)的(一组)对象接近第一视点时,第一帧的一个或更多个另外版本中的一个或更多个(并且优选地各)另外版本被渲染。
通过仅在确定对象接近视点时渲染一个或更多个另外(附加)版本,可以仅在可能需要来减少伪像和失真的可能性(和严重性)时才执行渲染另外(附加)版本所需的任何附加处理。因此,可以以有效的方式减少执行“时间扭曲”和/或“空间扭曲”处理时的伪像和失真,即不会不必要地增加所需的处理。
类似地,申请人已经认识到可能优选的是(仅)在场景是包含一个或更多个运动对象的动态场景的情况下,渲染表示在另外时间点(与第一帧表示场景的视图所在的第一时间点不同)的场景的另外视图的第一帧的另外版本。
因此,在优选实施方式中,该方法包括(并且系统被配置成)确定场景的第一视图是否包含(一组)一个或更多个运动对象,并且当确定场景的第一视图包含(一组)一个或更多个运动对象时,渲染第一帧的一个或更多个另外版本,各版本表示在另外时间点(与第一时间点不同)的场景的另外视图。
确定场景的第一视图是否包含(一组)一个或更多个运动对象可以以任何合适的和期望的方式执行。例如,可以通过使用例如连续的帧的适当的比较来确定运动对象的存在。然而,在优选实施方式中,场景的第一视图中的任何运动对象的存在由生成第一帧(和另外版本)所针对的应用来指示。
在另一示例中,并且在实施方式中,第一帧的一个或更多个另外版本中的一个或更多个(并且优选地各)版本可以(仅)在图形处理系统能够进行渲染时被渲染。
就此而言,申请人已经认识到,在一些情况下,可能需要限制用于渲染第一帧的一个或更多个另外版本的所执行的处理,例如,因为附加处理将超出系统能力并且因此会例如影响第一帧的渲染。在这种情况下,可能期望减少渲染的第一帧的另外版本的数量,或者甚至根本不渲染任何另外版本而是仅渲染第一帧。
因此,根据优选实施方式,该方法进一步包括(并且该系统被配置成)确定是否渲染第一帧的一个或更多个另外版本中的一个或更多个(并且优选地为每个)版本是否将不超过图形处理系统的处理极限;并且当确定不会超出处理极限时,渲染第一帧的一个或更多个另外版本的一个或更多个(各)另外版本。
相应地,在优选实施方式中,可以确定如果执行渲染第一帧的一个或更多个另外版本中的一个或更多个(并且优选地各)版本则是否将超过图形处理系统的处理极限;并且当确定将超出处理极限时,不渲染第一帧的一个或更多个另外版本中的一个或更多个(各)版本。
在另一示例中,并且在实施方式中,优选地,相对于使用所渲染的另外版本预期(或将要)实现的或被(或将要被)认为是可接受的输出(图像)质量,基于渲染附加版本所要求的附加处理来选择所渲染的另外版本和/或另外时间点的数量、和/或渲染一个或更多个另外版本所基于的另外视点和/或另外视图方向(另外视图方位(姿态))。优选地,以这样的方式执行选择以(尝试)实现附加处理要求与(潜在)(图像)质量之间的最佳平衡,例如以实现渲染第一帧的一个或更多个另外版本所需的附加处理与可以通过渲染第一帧的一个或更多个另外版本来提供的对虚拟现实(VR)和/或增强现实(AR)体验的(潜在的)改进之间的“折中”。
例如,并且在优选实施方式中,(例如,头戴式)显示系统的用户在第一帧将被用于显示的时间段期间可能进行的(头部或显示器)运动可以被预测或假定,并且用于选择渲染第一帧的一(并且各)另外版本所基于的另外时间点、和/或视点和/或视图方向(视图方位(姿态))。
因此,在优选实施方式中,渲染第一帧的一个(并且各)另外版本所基于的另外视图(头部或显示器)方位(姿态)表示在第一(应用)帧被用于显示的时间段期间(例如,头戴式)显示器的用户相对于渲染第一(应用)帧所基于的第一视图(头部或显示器)方位(姿态)(从其开始)可能进行的预测或假定的(头部或显示器)运动(例如旋转和/或平移)。
因此,在优选实施方式中,基于另外视图方位(姿态)(视点和/或视图方向)渲染的一(各)另外版本表示在第一(应用)帧被用于显示的时间段期间(例如,头戴式)显示器的用户相对于渲染第一(应用)帧所基于的第一视图(头部或显示器)方位(姿态)(从其开始)可能进行的预测或假定的(头部或显示器)运动(例如旋转和/或平移)将出现的场景的另外视图。
在另一优选实施方式中,选择渲染一(和各)另外版本所基于的另外时间点、和/或视点和/或视图方向(视图方位(姿态)),使得针对(当执行“时间扭曲”和/或“空间扭曲”处理时)场景的可能会受到伪像和扭曲影响的区域提供渲染数据。
例如,在实施方式中,可以确定遮挡效应可能在何处和/或何时发生(例如,使用对象深度和/或对象运动信息),然后选择渲染另外视图所基于的另外时间点和/或视点和/或视图方向从而提供渲染数据以减轻这些遮挡效应。
在一个实施方式中,第一帧的一个或更多个另外版本中的一个或更多个(并且优选地各)另外版本可以基于从特定、优选地所选择的、优选地预定的一组(固定数量的)一个或更多个另外时间点和/或另外视点和/或另外视图方向(另外视图方位(姿态))取得的相应的另外时间点和/或另外视点和/或另外视图方向(另外视图方位(姿态))来各自渲染。这样的组可以由一(或该)应用来定义(设定),例如在运行时之前前(渲染前)。其可以被选择以覆盖预测(头部或显示)运动(旋转和/或平移)的适当范围,例如基于历史(头部或显示器)跟踪(方位(姿态))数据和/或时间点来选择。
在另一实施方式中,第一帧的一个或更多个另外版本中的一个或更多个(并且优选地各)版本可以根据例如基于在运行时确定的参数或属性、例如基于在运行时检测到的(头部或显示器)跟踪(方位(姿态))信息在使用中动态选择的相应的另外时间点和/或另外视点和/或另外视图方向来渲染。
例如,并且在一个实施方式中,所渲染的第一帧的另外版本和/或另外时间点的数量、和/或渲染一个或更多个另外版本所基于的另外视点和/或另外视图方向(另外视图方位(姿态))可以根据一个或更多个因素而改变,例如,与被确定为接近第一视点和/或被确定为正在运动的(一组)对象有关,诸如该(组)对象的大小、形状或速度和/或该(组)对象在场景中深度。
例如,在(一组)对象较接近第一视点、较大和/或运动的较快时,第一帧的较多数量的另外版本可以被渲染,例如,以确保提供适当的渲染数据。
另外或另选地,另外版本和/或另外时间点的数量、和/或渲染一个或更多个另外版本所基于的另外视点和/或另外视图方向(另外视图方位(姿态))可以基于(由(虚拟现实(VR)和/或增强现实(AR)(头戴式)显示系统(的一个或更多个传感器)感测到的)近期视图(头部)跟踪(方位(姿态))信息来选择。
例如,可以使用近期视图(头部)跟踪(方位(姿态))信息来预测头戴式显示器的用户可能进行的未来视图(头部)运动(旋转和/或平移),并且可以基于预测的视图(头部)运动(旋转和/或平移)来选择另外版本和/或另外时间点的数量、和/或渲染一个或更多个另外版本所基于的另外视点和/或另外视图方向(另外视图方位(姿态))。
例如,如果最近的视图(头部或显示器)跟踪(方位(姿态))信息指示(头戴式)显示器的用户已经在特定方向上移动(旋转和/或平移)他或她的头部(或显示器),则可以基于表示在该方向上的视图(头部)运动(旋转和/或平移)的另外视点和/或视图方向来渲染一个或更多个另外版本中的一个或更多个(并且优选各)版本,例如使得如果用户要继续在这个方向上移动(旋转和/或平移)他或她的头部,则会渲染适当的另外版本。
在另一示例中,如果近期视图(头部)跟踪(方位(姿态))信息指示用户已经在快速移动(旋转和/或平移)他或她的头部(或显示器),则可以减少另外版本的数量,和/或可以选择一个或更多个另外版本中的一个或更多个(并且优选地各)版本,以表示比如果近期视图(头部)跟踪(方位(姿态))信息指示用户已经较慢地运动(旋转和/或平移)他或她的头部(或显示器)则将选择的要大的视图(头部)运动(旋转和/或平移)(反之亦然),例如使得如果用户要继续快速(或缓慢)移动(旋转和/或平移)他或她的头部(或显示器),则会渲染适当的另外版本。
另外或另选地,另外版本和/或另外时间点的数量、和/或渲染一个或更多个另外版本所基于的另外视点和/或另外视图方向(另外视图方位(姿态))可以基于可能的用户视图(头部)运动(旋转和/或平移)来选择,例如,基于由渲染第一帧(和另外版本)所针对的应用(在运行时)提供的信息。
例如,当用户不太可能运动他或她的头部(或显示器)时,例如,因为预期用户在单个优选方向上看,或者当用户不太可能显著地移动他或她的头部时,例如,因为他或她正在游戏中坐着,则可以减少另外版本的数量,和/或渲染一(并且优选地各)另外视图所基于的另外视点和/或视图方向(视图(头部)方位(姿态))可以被选择以表示比如果用户较有可能移动他或她的头部(或显示器)(显著地)则被选择的要小的视图(头部)运动(旋转和/或平移)(反之亦然)。
类似地,当用户较可能沿特定方向移动他或她的头部(或显示器)时,例如,因为他或她将要在游戏中转(或正在转)过角落,则可以增加另外版本的数量,和/或和/或渲染一(并且优选地各)另外视图所基于的另外视点和/或视图方向(视图(头部)方位(姿态))可以被选择以表示在该特定方向上的视图(头部)运动(旋转和/或平移),例如使得如果用户要在该方向上移动(旋转和/或平移)他或她的头部(或显示器),例如以看看角落附近,则合适的另外版本将被渲染。
另外或另选地,如已经提到的,另外版本和/或另外时间点的数量、和/或渲染一个或更多个另外版本中的一个或更多个版本所基于的视点和/或视图方向(视图(头部)方位(姿态))可以根据定时和/或例如图形处理单元(GPU)和/或整体图形处理系统的处理能力来选择。例如,当图形处理系统的处理能力否则会被超过时,可以减少渲染的第一帧的另外版本的数量。
因此,根据优选实施方式,另外时间点以及渲染第一帧的一个或更多个另外版本的一个(并且优选地各)版本所基于的视点和/或视图方向基于以下各项中的至少一项来选择:(i)被确定为接近第一视点和/或正在运动的(一组)对象的一个或更多个属性;(ii)接收到的视图(头部)方位(姿态)数据;(iii)由渲染第一帧所针对的应用提供的信息;和(iv)图形处理系统的处理能力。
将理解的是,如以上所描述,可能存在针对每只眼睛渲染的第一帧(和相应的另外版本)。因此,根据实施方式,在生成针对(各)眼睛的(该)输出帧之前,针对一(并且优选地各)眼睛渲染第一帧和第一帧的至少一个另外版本。因此,根据实施方式,渲染场景的至少三个不同视图,例如,并且优选地,针对第一只眼睛的(至少)第一(应用)帧、针对另一只眼睛的另一(应用)帧以及第一帧或另一帧的至少一个另外版本。
就此而言,申请人已经认识到,在一些情形下,可能使用针对一只眼睛渲染的数据用于另一只眼睛,从而节省否则将需要的处理。例如,来自第一帧和/或来自一个或更多个另外版本中的一个或更多个另外版本的针对一只眼睛渲染的数据可以用作针对第一帧和/或针对一个或更多个另外版本的针对另一只眼睛的渲染的数据。例如,可以是可能的,例如,其中渲染针对一只眼睛的数据所基于的(时间点)、视点和视图方向与渲染针对另一只眼睛的数据所基于的(时间点)、视点和视图方向相同(或(充分)相似)。
因此,根据实施方式,该方法包括(并且系统被配置成)识别何时渲染针对第一眼睛的数据所基于的(时间点)视点和视图方向与渲染针对另一眼睛的数据所基于的(时间点)视点和视图方向相同(或类似),并且当渲染针对第一眼睛的数据所基于的(时间点)视点和视图方向与渲染针对另一眼睛的数据所基于的(时间点)视点和视图方向相同(或类似)时,省略渲染针对另一只眼睛的数据,并且相反使用针对第一眼睛的渲染数据针对另一只眼睛。
在另一示例中,并且在实施方式中,第一帧的一个或更多个另外版本中的一个或更多个(优选地各)版本以比第一帧低的(图像)质量被渲染和/或存储(在(该)存储器中),例如使得相比于以与第一帧相同的(图像)质量来渲染和/或存储另外版本,减少了渲染和/或存储和/或处理另外版本所需的处理和/或存储。例如,一(各)另外版本优选地以比第一帧低的分辨率(具有较少数据元素(每个图像区域))来渲染。另外或另选地,一(各)另外版本优选地以比第一帧低的(彩色)精度(比特深度)来渲染。类似地,在另一实施方式中,一(各)另外版本优选地初始地以与第一帧相同或较低(图像)质量(例如,相同或较低的分辨率和/或精度)来渲染,但之后被压缩到比第一帧大的程度,优选地使用有损压缩方案,例如,使得另外版本以比第一帧相对低的(图像)质量存储在(该)存储器中。
另外或另选地,第一帧的另外版本(由图形处理单元(GPU))优选地比第一帧较不频繁地(以较低的速率)更新,例如使得第一帧的另外版本比第一帧多地可用于生成用于显示的输出帧。因此,在优选实施方式中,该方法包括(并且该系统被配置成)以第一速率更新第一帧;以及以第二速率更新所述第一帧的一个或更多个另外版本中的一个或更多个(并且优选地各)版本;以及其中第二速率比第一速率低(慢)。因此,在实施方式中,优选地将第一渲染(应用)帧的一个或更多个另外版本中的一个或更多个(并且优选地各)版本再次用作另一(例如下一)(应用)帧的另外版本。
在另一示例中,并且在实施方式中,第一帧的一个或更多个另外版本中的一个或更多个(并且优选地各)版本对应于第一(应用)帧的(仅)区域,例如,并且在优选实施方式中,对应于第一(应用)帧的包含近和/或运动对象的区域。
申请人已经认识到,通过渲染第一(应用)帧的(仅)区域(例如包含近和/或运动对象),渲染该另外(附加)版本所需的附加处理可以限于第一(应用)帧的较可能遭受伪像和失真的区域,例如,包含接近摄像头(视点)和/或正在运动的对象的区域。
因此,在优选实施方式中,第一帧的一个或更多个另外版本中的一个或更多个(优选地各)版本与第一帧的区域相对应,该区域优选地包含被确定为接近第一视点的一(该)(一组)对象和/或被确定为正在运动的一(该)(一组)对象。
在这种情况下,可以根据期望确定再次渲染第一针的(相应)另外版本所针对的第一帧的一(并且各)区域(包含被确定为接近第一视点和/或正在运动的(一组)对象)。可能有一个或更多个这样的区域用于再次渲染。例如,可以存在单个区域,其中第一帧的一个或更多个另外版本针对该同一单个区域被再次渲染,或者第一帧的各另外版本可以针对不同区域被再次渲染。
在第一帧表示的第一视图中仅单个对象被确定为接近第一视点和/或正在运动的情况下,可以确定第一帧的包含该单个对象的仅单个区域(用于再次渲染一个或更多个另外版本中的各个版本、一些版本或全部版本)。
然而,在多个对象被确定为接近第一视点和/或正在运动的情况下,可以针对所确定的多个对象中的各对象确定用于再次渲染的相应区域(针对一个或更多个另外版本的各个版本、一些或全部版本)。在这种情况下,将存在用于再次渲染的多个区域,各区域包含被确定为接近第一视点和/或正在运动的多个对象中的单个对象(针对一个或更多个另外版本的各个版本、一些或全部版本)。
或者,可以例如基于对象彼此的空间接近性(例如,如以上所描述)将对象分组成一个或更多个组,各组包括一个或更多个对象,并且可以针对多个所确定的对象的各相应组确定用于再次渲染的相应区域(对于一个或更多个另外版本中的各个版本、一些版本或全部版本)。在这种情况下,将存在用于再次渲染的一个或更多个区域,各区域包含被确定为接近第一视点和/或正在运动的多个对象的一个或更多个分组对象(对于一个或更多个另外版本的各个版本、一些版本或全部版本)。
另选地,可以确定用于再次渲染的单个区域,其包含被确定为接近第一视点和/或正在运动的多个对象的全部对象的单个区域(对于一个或更多个另外版本的各个版本、一些版本或全部版本)。
如已经提到的,用于再次渲染的一(并且优选地各)区域可以覆盖第一帧的一些或全部。例如,在一个实施方式中,确定覆盖整个第一帧(并且包含(全部)近和/或运动对象)的用于再次渲染的单个区域,以使得该(并且各)另外版本被以与第一帧相同的大小再次渲染。在另一实施方式中,用于再次渲染的一(并且优选地各)区域覆盖第一帧的仅一部分,使得该(和各)相应另外版本小于第一帧(仅包括第一帧中的一些但不是全部)。
在用于再次渲染的一(和各)区域覆盖第一帧的仅一部分的情况下,该(和各)区域覆盖的第一帧的该部分优选地包含一(和各)相应近和/或运动对象(的一些或全部),并且可以根据期望确定。
例如,用于再次渲染的一(和各)区域可以根据期望与另一个或更多个区域交叠,或者不交叠。该(和各)区域可以与该(和各)区域包含的该(和各)相应近和/或运动对象的实际在第一帧中出现的形状相匹配,或者可以包括边缘(如果期望)。
在优选实施方式中,用于再次渲染的该(和各)区域可以通过确定围绕被确定为接近第一视点和/或正在运动的该(并且各相应)对象的(优选为矩形的)边界框来确定。这样的边界框可以是最小边界框,或者如果期望可以包括边界,例如并且优选地。并且优选地在相应另外视图方位(姿态)表示头部或显示器运动(旋转和/或平移)所在的方向上。
如已经提到的,根据需要,用于再次渲染的一(和各)区域可以包含该(和各相应)对象的部分或全部。就此而言,申请人已经认识到可能需要最小化渲染该(和各)另外版本所需的处理,并且这可以通过最小化用于再次渲染的该(和各)区域的大小来实现。他们进一步认识到,虽然再次渲染较大的区域会得以改善图像质量,但是为了减少当执行“时间扭曲”和/或“空间扭曲”处理时最严重的伪像和失真的可能性而应当渲染相应另外版本的区域的最小大小对应于近和/或运动对象以及场景的被该对象”解遮挡“的区域,即场景的以下区域:在第一(应用)帧表示的场景的第一视图中位于近和/或运动对象后面(并且具有比对象大的深度),使得其在场景的第一视图中被遮挡,但是(由于视差效应和/或对象运动)不被近和/或运动对象遮挡,并因此在由相应另外版本表示的场景的相应另外视图中变得可见,因为场景的这样的区域否则会由于“时间扭曲”和/或“空间扭曲”处理而显著失真,例如,因为针对这些区域的渲染数据从第一(应用)帧完全丢失。因此,用于再次渲染的该(和各)区域优选地对应于场景的(仅)这些区域,使得优选地针对场景的(仅)这些区域来渲染该(和各)相应另外版本。
因此,第一帧的相应另外版本被再次渲染所针对的包含被确定为接近第一视点和/或正在运动的(一组)对象的第一帧的一(并且各)区域优选地被确定为(成为)包含被确定为接近第一视点和/或正在运动的该(组)对象(的全部)的场景的区域,以及在第一帧表示的场景的第一视图中由被确定为接近第一视点和/或正在运动的该(组)对象遮挡、但是在相应另外视图表示的场景的相应另外视图中不被该(组)对象遮挡的场景的一部分(区域)。
因此,在优选实施方式中,该方法包括(并且系统被配置成):对于一个或更多个另外版本中的至少一个(并且优选地各)版本:确定包含被确定为接近第一视点和/或正在运动的(一组)对象的场景的区域,以及场景的一部分,该部分在第一帧表示的场景的第一视图中由被确定为接近第一视点和/或正在运动的该(组)对象遮挡、但是在由相应另外版本表示的场景的相应另外视图中不被该(组)对象遮挡;以及仅针对相应的所确定的场景的区域(基于该区域,第一帧的一些但非全部)渲染该相应另外版本。
相信确定场景的视图是否包含近和/或正在运动的对象,然后渲染包含近和/或正在运动的对象的场景的区域的另外版本的构思本身是新颖且具有创造性的。
因此,根据本发明的第七方面,提供了一种操作图形处理系统的方法,该图形处理系统渲染对一个或更多个对象的场景的视图进行表示的帧,并且通过基于接收到的视图方位数据和/或对象运动变换渲染后的帧来从渲染后的帧生成用于显示的输出帧,该方法包括以下步骤:
渲染第一帧,该第一帧基于第一视图方位表示场景的第一视图;
确定场景的第一视图中的对象是否接近第一视点;以及
当确定场景的第一视图中的对象接近该第一视点时:
对于相对于所述第一视图方位的一个或更多个另外视图方位中的各个另外视图方位,渲染包含被确定为接近所述第一视点的所述对象的所述第一帧的相应区域的相应另外版本。
根据本发明的第八方面,提供了一种图形处理系统,该图形处理系统被配置成由处理电路帧来渲染帧,各帧表示一个或更多个对象的场景的视图,并且通过基于接收到的视图方位数据和/或对象运动对渲染后的帧进行变换来由处理电路从渲染后的帧生成用于显示的输出帧;
其中,所述图形处理系统还被配置成针对第一渲染后的帧执行以下处理,该第一渲染后的帧基于第一视图方位表示场景的第一视图:
由处理电路确定场景的第一视图中的对象是否接近第一视点;以及
当确定场景的第一视图中的对象接近该第一视点时:
对于相对于所述第一视图方位的一个或更多个另外视图方位中的各个另外视图方位,由处理电路渲染包含被确定为接近所述第一视点的所述对象的所述第一帧的相应区域的相应另外版本。
根据本发明的第九方面,提供了一种操作图形处理系统的方法,该图形处理系统渲染对一个或更多个对象的场景的视图进行表示的帧,基于接收到的头部方位数据变换渲染后的帧,并且提供这样变换的帧以供显示,该方法包括以下步骤:
渲染第一帧,该第一帧基于第一头部方位表示场景的第一视图;
确定场景的第一视图中的对象是否接近第一视点;以及
当确定场景的第一视图中的对象接近该第一视点时:
对于相对于所述第一头部方位的一个或更多个另外头部方位中的各个另外视图方位,渲染包含被确定为接近所述第一视点的所述对象的所述第一帧的相应区域的相应另外版本。
根据本发明的第十方面,提供了一种图形处理系统,该图形处理系统包括:
处理电路,该处理电路被配置成渲染对一个或更多个对象的场景的视图进行表示的帧,基于接收到的头部方位数据变换渲染后的帧,并且提供这样变换的帧以供显示;和
处理电路,该处理电路被配置成:
对于基于第一头部方位表示来自第一视点的场景的第一视图的第一渲染后的帧,确定场景的第一视图中的对象是否接近第一视点;以及
当确定场景的第一视图中的对象接近该第一视点时:
使得所述图形处理系统,对于相对于所述第一头部方位的一个或更多个另外头部方位中的各个另外视图方位,渲染包含被确定为接近所述第一视点的所述对象的所述第一帧的相应区域的相应另外版本。
根据本发明的第十一方面,提供了一种操作图形处理系统的方法,该图形处理系统渲染对一个或更多个对象的场景的视图进行表示的帧,并且通过基于接收到的视图方位数据和/或对象运动变换渲染后的帧来从渲染后的帧生成用于显示的输出帧,该方法包括以下步骤:
渲染第一帧,该第一帧在第一时间点表示场景的第一视图;
确定场景的第一视图中的对象是否正在运动;以及
当确定场景的第一视图中的对象正在运动时:
对于一个或更多个另外时间点中的各个另外时间点,渲染包含被确定为正在运动的所述对象的所述第一帧的相应区域的相应另外版本。
根据本发明的第十二方面,提供了一种图形处理系统,该图形处理系统被配置成由处理电路帧来进行渲染帧,各帧表示一个或更多个对象的场景的视图,并且由处理电路通过基于接收到的视图方位数据和/或对象运动来变换渲染后的帧来从渲染后的帧生成输出帧以供显示;
其中,所述图形处理系统还被配置成针对表示在第一时间点的场景的第一视图的第一渲染后的帧:
由处理电路确定场景的第一视图中的对象是否正在运动;以及
当确定场景的第一视图中的对象正在运动时:
对于一个或更多个另外时间点中的各个另外时间点,由处理电路渲染包含被确定为正在运动的所述对象的所述第一帧的相应区域的相应另外版本。
如本领域技术人员将理解的,本发明的这些方面和实施方式可以根据情况并且优选确实包括本文所述的本发明的优选和可选特征中的一个或更多个,并且优选全部特征。
因此,例如,在这些方面和实施方式中,优选地使用来自渲染后的第一帧的渲染数据和/或来自第一帧的一个或更多个渲染后的另外版本中的一个或更多个版本的渲染数据来生成(输出)帧以用于显示。
输出帧应该表示第一帧的输出版本并且应该在第一帧之后生成,并且使用来自渲染后的第一帧的渲染数据和/或来自所述第一帧的一个或更多个所渲染的另外版本中的一个或更多个的渲染数据已经渲染了第一帧的一个或更多个另外版本。否则输出帧可以以任何合适的和期望的方式生成。
在优选实施方式中,输出帧通过对第一帧和/或第一帧的一个或更多个另外版本中的一个或更多个版本进行变换来生成,例如,并且优选地(三或六自由度(DOF))“时间扭曲”处理,以生成可以变换后的(“时间扭曲”)输出帧(图像),其可以被(图形处理系统的一个(或该)显示控制器)提供以用于显示的变换。该变换还可以或者代替地包括透镜失真校正变换、色差(失真)校正变换,“空间扭曲”变换(外插)和/或其他合适的变换。
变换可以以任何合适的和期望的方式执行。在实施方式中,由图形处理单元(GPU),图形处理系统的一(或该)显示控制器或专用图像处理器执行变换(例如“时间扭曲”和/或“空间扭曲”处理)。
输出(变换)帧(图像)可以包括数据元素(采样位置)(例如像素)的阵列,(通过变换(例如“时间扭曲”和/或“空间扭曲”处理))针对其中每个生成适合的数据(例如一组颜色值)。
输出(变换)帧(图像)可以被存储(写入)存储器中以供随后根据期望而使用。例如,输出(变换)帧(图像)可以存储在存储器中的帧缓冲器中,然后由一(或该)显示控制器可以从其中读取该帧以供进一步处理和/或显示。这样的存储器可以包括任何合适的存储器并且可以以任何合适的和期望的方式来配置。例如,它可以是与图形处理单元(GPU)共片的存储器,也可以是外部存储器。在实施方式中,其为外部存储器,诸如图形处理系统的主存储器。其可能是专用于此目的的专用存储器,或者可以是也用于其他数据的存储器的一部分。
输出(变换)帧(图像)可以存储在与第一帧和/或另外版本不同的存储器中。然而,在优选实施方式中,输出(变换)帧(图像)在与第一帧和/或另外版本存储在同一存储器中。
在没有再次渲染第一帧的另外版本的情况下(例如,在未确定场景的第一视图中的对象接近第一视点和/或确定渲染另外版本将超过图形处理系统的处理极限),那么可以从仅来自第一帧的渲染数据生成输出帧,例如通过变换第一帧(例如,如以上所秒述,按照传统方式,通过“时间扭曲”和/或“空间扭曲”处理)。
因此,在这种情况下,第一帧优选地基于(由虚拟现实(VR)和/或增强现实(AR))(头戴式)显示系统(的一个或更多个传感器)感测到的)(第二)视图(头部或显示器)方位(姿态)数据(通过“时间扭曲”处理)来变换,该(第二)视图(头部或显示器)方位(姿态)数据优选地在渲染第一帧之后在第二时间点感测,并且优选地表示虚拟现实(VR)和/或增强现实(AR)(头戴式)显示系统的用户的第二视图(头部或显示器)方位(姿态)(在渲染第一帧之后)。
这样变换的(这样“时间扭曲的”)输出帧因此优选地基于(感测的)第二视图(头部或显示器)方位(姿态)表示场景的视图,并且优选地被提供给(虚拟现实(VR)和/或增强现实(AR))(头戴式)显示系统的(头戴式)显示器以用于显示,优选地由图形处理系统的一(或该)显示控制器提供。
然而,在渲染了第一帧的(区域的)一个或更多个另外版本的情况下,将存在针对第一帧的渲染后的源数据,以及针对第一帧的(相应区域的)该(和各)渲染后的另外版本的渲染后的源数据。因此,可能存在已经渲染了该帧的多个版本的区域。在这种情况下,用于生成输出帧(用于显示)的渲染后的源数据优选地从用于第一帧的渲染后的源数据和用于另外版本的渲染后的源数据中选择。
可以以任何合适的和期望的方式来执行从针对第一帧的渲染后的源数据和针对另外版本的渲染后的源数据选择用于生成输出帧的渲染后的源数据。该选择可以例如由图形处理单元(GPU),显示控制器或图形处理系统的专用图像处理器来执行。
在优选实施方式中,基于优选地在渲染第一(应用)帧(和该(并且各)另外版本)之后在第二时间点表示(虚拟现实(VR)和/或增强现实(AR))(头戴式)显示系统的用户的视图(头部或显示器)方位(姿态)的一(或该)第二视图(头部或显示器)方位(姿态)来选择用于生成输出帧的渲染后的源数据。第二视图(头部或显示器)方位(姿态)优选地是感测到的视图(头部或显示器)方位(姿态),优选地在第二时间点(在渲染了第一帧(以及该(和各)另外版本之后)由(虚拟现实(VR)和/或增强现实(AR))(头戴式)显示系统(的一个或更多个传感器)感测到。
另外或另选地,在优选实施方式中,基于输出帧表示场景的视图所在的(第二)时间点在第二视图(头部或显示器)方位(姿态)被感测到的(第二)时间点来选择用于生成输出帧的渲染后的源数据。
在优选实施方式中,通过选择已经基于最接近(实际)(感测的)第二视图(头部或显示器)方位(姿态)的视图(头部或显示器)方位(姿态)渲染的渲染后的源数据(来自第一帧和/或一个或更多个另外版本中的一个或更多个版本)来选择用于生成输出帧的渲染后的源数据。另外或另选地,在优选实施方式中,通过选择已经基于最接近输出帧表示场景的视图所在的(感测到第二视图(头部或显示器)方位(姿态)的)(实际)(第二)时间点的(另外)时间点渲染的渲染后的源数据(来自第一帧和/或一个或更多个另外版本中的一个或更多个版本)来选择用于生成输出帧的渲染后的源数据。
在一(和各)另外版本以与第一帧相同的大小被再次渲染(例如,其中用于再次渲染的一(和各)区域覆盖全部第一帧)的情况下,则选择用于生成输出帧的渲染后的源数据可以包括从渲染后的第一帧和渲染后的另外版本中的一方中选择源数据,以使用其整体。因此,该选择可以例如关于整个帧来执行,并且所选择的渲染后的源数据可以包括来自渲染后的第一帧和渲染后的另外版本中的(仅)一方的源数据。
然而,在用于再次渲染的一(和各)区域仅覆盖第一帧的一部分使得一(和各)(相应)另外版本小于第一帧的情况下,则选择可以包括关于相应另外版本被再次渲染所针对的第一帧的(仅)部分,从针对第一帧的渲染后的元数据和针对(相应)另外版本的渲染后的元数据选择用于显示的渲染后的源数据,以及(否则)关于另外版本不被再次渲染所针对的第一帧的(仅)部分,从第一帧选择元数据。在这种情况下,所选择的渲染后的源数据可以包括来自渲染后的第一帧和渲染后的另外版本中的一个或更多个的源数据(的混合)。
因此,在这种情况下,然后可以基于一(或该)第二视图(头部或显示器)方位(姿态)对所选择的渲染后的源数据进行变换(通过“时间扭曲”处理)以生成一(或该)输出、变换的(“时间扭曲”)帧(图像)以供显示。第二视图(头部或显示器)方位(姿态)优选地表示在渲染第一(应用)帧(和该(和各)另外版本)之后(在第二时间点)(虚拟现实(VR)和/或增强现实(AR))(头戴式)显示系统的用户的(第二)视图(头部或显示器)方位(姿态),并且优选地由(虚拟现实(VR)和/或增强现实(AR))(头戴式)显示系统(的一个或更多个传感器)感测(在渲染了第一帧(以及该(和各个)另外版本)之后)。
经这样变换的(经这样“时间扭曲的”)输出帧因此优选地基于(感测到的)第二视图(头部或显示器)方位(姿态)表示场景的视图,并且优选地被提供给(虚拟现实(VR)和/或增强现实(AR))(头戴式)显示系统的)显示器以用于显示,优选地由图形处理系统的一(或该)显示控制器提供。
另外或另选地,生成输出帧可以包括基于对象运动的变换(外插)(例如“空间扭曲”处理)以生成输出、外插(“空间扭曲的”)帧(图像)以供显示。在这种情况下,输出帧优选地表示第一(渲染后的)(例如应用)帧的外插(“空间扭曲的”)版本,并且应该在预期的例如在时间上向前外插到输出帧表示场景的视图所在的(第二)时间点的位置示出运动对象。因此,在这种情况下,实施方式中的输出帧表示在第二时间点(在第二时间点感测到第二视图方位(姿态))处的场景的视图。
因此,在优选实施方式中,该方法包括(并且系统被配置成)基于接收到的(第二)视图(头部或显示器)方位数据和/或第二时间点来从以下至少一项选择用于生成输出帧的渲染后的数据:(i)针对第一帧的渲染数据;和(ii)针对第一帧的一个或更多个另外版本中的一个或更多个版本的渲染数据。
因此,优选实施方式中,在生成输出帧包括从第一帧和/或一个或更多个另外版本中的一个或更多个版本中选择渲染数据,然后适当地组合所选择的渲染数据以生成输出帧。
相信以这种方式从场景的不同渲染后的视图中选择渲染后的源数据的构思本身是新颖的且具备创造性的。
因此,根据本发明的另一方面,提供了一种生成用于显示系统的应用显示的输出帧的方法,所述方法包括:
接收由所述显示系统感测到的视图方位数据;以及
基于所接收的视图方位数据来从以下个项中的至少一项选择用于生成输出帧的渲染数据:
(i)基于第一时间点和/或第一视图方位渲染的针对第一帧的渲染数据;和
(ii)针对第一帧的一个或更多个另外版本的渲染数据,各版本基于另外时间点和/或视图方位来渲染。
根据本发明的另一方面,提供了一种显示系统,该显示系统包括:
视图方位感测电路,该视图方位感测电路可操作以感测显示系统的用户的视图方位并且提供指示所感测的视图方位的视图方位数据;以及
处理电路,该处理电路被配置成基于由所述视图方位感测电路提供的视图方位数据来从以下各项中的至少一项选择用于显示输出帧的渲染数据:
(i)基于第一时间点和/或第一视图方位渲染的针对第一帧的渲染数据;和
(ii)针对第一帧的一个或更多个另外版本的渲染数据,各版本基于另外时间点和/或视图方位来渲染。
根据本发明的又一方面,提供了一种用于为头戴式显示系统提供用于显示的输出帧的方法,所述方法包括:
接收由头戴式显示系统感测到的头部方位数据;以及
基于所接收的头部方位数据来从以下各项中的至少一项选择用于显示输出帧的渲染数据:
(i)基于第一头部方位渲染的针对第一帧的渲染数据;和
(ii)针对第一帧的一个或更多个另外版本的渲染数据,各版本基于另外头部方位来渲染。
根据本发明的又一方面,提供了一种头戴式显示系统,该头戴式显示系统包括:
头部方位感测电路,该头部方位感测电路可操作以感测头戴式显示系统的用户的头部方位并提供指示所感测的头部方位的头部方位数据;以及
处理电路,该处理电路被配置成基于由所述头部方位感测电路提供的头部方位数据来从以下各项中的至少一项选择用于显示输出帧的渲染数据:
(i)基于第一头部方位渲染的针对第一帧的渲染数据;和
(ii)针对第一帧的一个或更多个另外版本的渲染数据,各版本基于另外头部方位来渲染。
如本领域技术人员将理解的,本发明的这些方面和实施方式可以根据情况并且优选确实包括本文所述的本发明的优选和可选特征中的一个或更多个,并且优选全部特征。
因此,例如,可以基于在开始渲染第一帧时(在第一时间点)感测到的第一视图(头部或显示器)方位(姿态)来渲染第一帧,可以基于表示相当于第一视图(头部或显示器)方位(姿态)的预测或假定(头部或显示)运动(旋转和/或平移)的另外视图(头部或显示器)方位来分别渲染一个或更多个另外版本,并且可以基于接收到的在渲染第一帧之后(在第二时间点)感测到的(第二)视图(头部或显示器)方位(姿态)数据来选择用于生成输出帧的渲染数据,并且可以基于接收到的(第二)视图(头部或显示器)方位(姿态)数据对所选择的渲染数据进行变换(例如“时间扭曲”处理)以提供输出、变换(“时间扭曲的”)帧(图像)以供显示,其可以被显示(在显示器上)。
相应地,该方法优选地包括(并且系统优选地包括处理电路,该处理电路被配置成)使用(和包括)所选择的渲染数据来(在显示器上)显示(该)输出帧。
将理解的是,虽然这里特别参照单个第一帧描述了本发明,但是可以有多个第一帧(例如,多个第一帧的动画序列)。每个这样的第一帧可以从相应视点(基于相应(第一)视图(头部或显示器)方位(姿态))在相应视图方向上表示相应场景的相应视图,并且可以渲染这样的第一帧的(一些或全部的相应区域的)一个或更多个相应的另外版本的。
此外,将理解的是,如以上所讨论的,可能存在针对每只眼睛渲染的第一帧(和相应的另外版本),并且可以适当地向每只眼睛显示相应的输出(变换)帧,以在图像被观看时提供三维效果。
如从上面将理解的,本发明在实施方式中被实现在整个图形处理系统中并且作为其一部分,该图形处理系统包括以下中的一项或更多项:主处理器(中央处理单元(CPU))、图形处理单元、显示控制器、视频处理器(编解码器)、系统总线和存储器控制器。处理电路可以例如形成图形处理单元的一部分、显示控制器和/或图形处理系统的其他合适部件,例如,如以上所描述的,或者可以相反在图形处理系统中提供。其可以包括可编程和/或固定功能处理电路,和/或可以根据期望包括专用处理电路和/或用于其他处理的处理电路。
主处理器可以执行可能需要图形处理单元进行图形处理的应用,并向图形处理单元发送适当的命令和数据以控制其执行图形处理操作并产生由主处理器上执行(包括以本发明的方式)的应用所需的图形处理(渲染)输出。
为了促进这一点,主处理器应当并且优选地确实还执行针对图形处理单元的驱动以及用于编译着色器程序的编译器,所述着色器程序将由图形处理单元的可编程着色级执行(该编译器可以是并且在优选实施方式中是驱动的一部分)。
因此,在优选实施方式中,图形处理单元与执行针对图形处理单元的驱动和/或用于图形处理单元的编译器的主微处理器(其为整个图形处理系统的一部分)通信。
类似地,优选地在主处理器上有应用,该应用指示以本发明的方式执行处理操作的要求,该要求然后被主处理器识别,例如被在主处理器上执行的驱动识别,主处理器上的驱动接着操作以指令图形处理单元相应地渲染数据。
图形处理单元和/或主微处理器优选地还与用于显示由图形处理单元生成的图像的(头戴式)显示器通信(因此在优选实施方式中,图形处理系统还包括用于显示由图形处理单元生成的图像的显示器)(例如,经由显示控制器)。
类似地,图形处理系统优选地具有存储器或与存储器通信,该存储器中可以存储由图形处理单元生成的图像,例如用于随后的处理,例如显示(例如经由存储器控制器)。因此,在优选实施方式中,图形处理系统和/或单元包括一个或更多个存储器和/或存储器器件或与之通信,其存储在此描述的数据,和/或存储用于执行这里描述的处理的软件(例如,经由存储器控制器)。
图形处理单元可以包括并且优选地确实包括图形处理单元通常可以包括的处理级中的任一个或更多个,并且优选地包括全部。因此,例如,图形处理单元优选地包括图源建立级、光栅器和渲染器。在优选实施方式中,渲染器以可编程片段着色器的形式或包括可编程片段着色器。
图形处理单元优选地是基于区块的图形处理单元,其包括用于存储区块采样值的图块缓冲器和/或操作以将区块缓冲器中的数据写出到外部(主)存储器(例如到帧缓冲器)(例如,在区块缓冲器中的数据完成时)的写出单元。
本领域技术人员将认识到,本发明的所有描述的方面和实施方式可以并且在实施方式中确实包括在此描述的任一个或更多个或全部特征。
本发明可以在任何合适的系统中实施,例如基于适当配置的基于微处理器的系统。在实施方式中,本发明在基于计算机和/或微处理器的系统中实现。
本发明优选地在便携式设备中实现,诸如并且优选地,移动电话或平板电脑。本发明在实施方式中在虚拟现实和/或增强现实显示装置中实现,例如在虚拟现实和/或增强现实眼罩中。因此,本文描述的技术的另一实施方式包括包含本发明的任一个或更多个实施方式的图形处理系统在内的虚拟现实和/或增强现实显示装置。相应地,本文描述的技术的另一实施方式包括操作虚拟现实和/或增强现实显示装置的方法,包括以本发明的任一个或更多个实施方式的方式操作虚拟现实和/或增强现实显示装置。
本发明的各种功能可以以任何期望的和合适的方式进行。例如,根据期望,可以用硬件或软件来实现本发明的功能。因此,例如,除非另外指出,否则本发明的各种功能要素,级和“单元”可以包括合适的处理器、控制器或控制器、功能单元、电路、处理逻辑、微处理器结构等,其可操作以执行各种功能等,诸如可被编程为以期望方式操作的适当专用硬件元件(处理电路)和/或可编程硬件元件(处理电路)。
这里还应该注意的是,如本领域技术人员将认识到的,本发明的各种功能等可以在给定的处理器上被复制和/或并行执行。同样,如果期望,择各个处理级可以共享处理电路等。
此外,本发明的任一个或更多个或全部处理级可以体现为处理级电路,例如以一个或更多个固定功能单元(硬件)(处理电路)的形式,和/或以可编程处理电路的形式,其可以被编程以执行期望的操作。同样地,本发明的处理级和处理级电路中的任一个或更多个可以作为单独的电路元件提供给任一个或更多个其他处理级或处理级电路,和/或处理级和处理级电路中的任一个或更多个或全部可以至少部分地由共享的处理电路形成。
对于执行上述特定功能所需的任何硬件,图形处理系统的部件可以另外包括这些部件包括的常用功能单元等中的任一个或更多个或全部。
本领域技术人员还应该理解,本发明的所有所描述的实施方式可以并且在一个实施方式中确实包括在此描述的任一个或更多个或所有特征。
根据本发明的方法可以至少部分地使用软件例如计算机程序来实现。因此可以看出,当从另外实施方式看时,本发明提供了当安装在数据处理器上时特别适用于执行这里描述的方法的计算机软件;包括计算机软件代码部分的用于当程序单元在数据处理器上运行时执行这里描述的方法的计算机程序单元;以及包括代码的计算机程序,所述代码适于在程序在数据处理系统上运行时执行本文所描述的方法或方法的所有步骤。数据处理器可以是微处理器系统、可编程FPGA(现场可编程门阵列)等。
本发明还扩展到包括这种软件的计算机软件载体,当用于操作显示控制器或包括数据处理器的微处理器系统时,结合所述数据处理器使所述控制器或系统执行本发明。这样的计算机软件载体可以是诸如ROM芯片、CD ROM、RAM、闪存或盘之类的物理存储介质,或者可以是诸如通过电线的电子信号,光信号或诸如到卫星等的无线电信号的信号。
将进一步认识到,并非本发明的方法的所有步骤都需要由计算机软件来执行,并且因此从更广泛的实施方式中,本发明提供了计算机软件并且这种软件安装在计算机软件载体上用于执行这里阐述的方法的步骤中的至少一个步骤。
因此,本发明可以适当地实现为与计算机系统一起使用的计算机程序产品。这样的实现方式可以包括一系列计算机可读指令,这些指令固定在诸如计算机可读介质(例如软盘、CD ROM、ROM、RAM、闪存或硬盘)的有形的非暂时介质上。它还可以包括一系列计算机可读指令,这些计算机可读指令可通过调制解调器或其他接口设备在有形介质(包括但不限于光学或模拟通信线路)上或通过无线技术使用无线技术无形地传输给计算机系统,包括但不是限于微波、红外或其他传输技术。该系列计算机可读指令实现了本文先前描述的全部或部分功能。
本领域技术人员将认识到,这样的计算机可读指令可以用多种编程语言编写,以与许多计算机体系结构或操作系统一起使用。此外,可以使用现在或未来的任何存储器技术来存储这样的指令,包括但不限于半导体、磁性或光学,或者使用任何现在或未来的通信技术来传输,包括但不限于光学、红外或微波。可以设想,这样的计算机程序产品可以作为具有伴随的印刷或电子文档的可移除介质进行分发,例如,预装有计算机系统的例如收缩包装的软件,例如在系统ROM或固定盘上,或者从服务器或电子公告牌通过网络例如互联网或万维网分发。
附图说明
现在将仅通过举例并参照附图来描述本发明的各种实施方式,其中:
图1示出了示例性图形处理系统;
图2例示了头戴式显示系统中的“时间扭曲”处理;
图3示出了头戴式显示系统中的“时间扭曲”处理的另一例示;
图4例示了示例性渲染的“应用”帧以及该帧的示例性“时间扭曲的”版本;
图5示意性地示出示例性虚拟现实头戴式显示器眼罩;
图6示意性地示出了当执行“时间扭曲”处理时图形处理系统中的数据流和处理的相对定时;
图7示意性地示出了当执行“时间扭曲”处理时图形处理系统中的数据流和处理的相对定时;
图8示出了示例性视锥体;
图9示出了其中对象被另一对象遮挡的示例性场景;
图10例示了表示其中对象被另一对象遮挡的场景的视图的示例性渲染后的“应用”帧,以及该帧的示例性“时间扭曲的”版本;
图11例示了根据本发明实施方式渲染后的场景的示例性前向视图,左侧视图和右侧视图;
图12例示了根据本发明的实施方式渲染后的场景的示例性前向视图、部分左侧和部分右侧视图;
图13例示了根据本发明的实施方式的通过组合场景的前向视图和右侧视图来生成示例性输出帧;
图14是示意性地示出根据本发明实施方式的图形处理系统的操作的流程图;
图15示意性地示出了根据本发明实施方式的当执行“时间扭曲”处理时图形处理系统中的数据流和处理的相对定时;
图16是示意性地示出根据本发明实施方式的图形处理系统的操作的流程图;
图17是示意性地示出根据本发明实施方式的图形处理系统的操作的流程图;
图18是示意性地示出根据本发明实施方式的图形处理系统的操作的流程图;
图19例示了根据本发明实施方式渲染后的场景的示例性前向视图和未来视图;
图20示意性地示出了根据本发明的实施方式在执行“时间扭曲”和/或“空间扭曲”处理时图形处理系统中的数据流和处理的相对定时;
图21是示意性地示出根据本发明实施方式的图形处理系统的操作的流程图;
图22是示意性地示出根据本发明实施方式的图形处理系统的操作的流程图;
图23示意性地示出了根据本发明实施方式的当执行“时间扭曲”和/或“空间扭曲”处理时图形处理系统中的数据流和处理的相对定时;以及
图24是示意性地示出根据本发明实施方式的图形处理系统的操作的流程图。
类似的附图标记在附图中在适当的情况下用于相同的部件。
具体实施方式
现在将参照附图描述本发明的优选实施方式。
本发明的优选实施方式涉及为虚拟现实(VR)和/或增强现实(AR)头戴式显示器(HMD)系统提供用于显示的帧(图像)。
这样的系统可以如图1所示配置(并且如以上所描述的),系统的显示器8包括适当的头戴式显示器,该头戴式显示器尤其包括给佩戴头戴式显示器的用户显示帧的显示屏或多个显示屏(面板或多个面板)、在用户眼睛与显示屏之间的观看路径中的一个或更多个透镜以及用于在使用中(在图像在显示器上向用户显示的同时)跟踪用户头部的位置(方位(姿态))(和/或其观看(视线)方向)的一个或更多个传感器。
图5示意性地示出了示例性虚拟现实(VR)头戴式显示器50。如图5所示,头戴式显示器50包括例如适当的显示器支架51,其包括一个或更多个头部姿态(方位)跟踪传感器,显示屏(面板)58安装于该显示器支架51上。一对透镜52在显示屏58的观看路径中安装透镜支架53中。最后,存在供用户佩戴该眼罩的适当配件54。
在图1所示的系统中,将响应于来自在图形处理系统的主处理器(CPU)1上执行的应用的渲染的请求例如由图形处理单元(GPU)2渲染要在头戴式显示器8上显示的图像并将这些帧存储在主存储器7中。然后,显示控制器4可以接着从存储器7读取帧并将这些帧适当地提供给头戴式显示器8以向用户显示。
图形处理单元(GPU)2可以为每只眼睛渲染用于显示的帧(图像):表示从左眼看到的场景的一个图像和表示从右眼看到的场景的一个图像。然后可以使用头戴式显示器8将图像适当地显示给每只眼睛,以当图像被观看时提供三维效果。
如以上所描述,图形处理系统10的图形处理单元(GPU)2可以基于在开始渲染帧时感测到的用户的头部方位(姿态)来直接渲染各帧以供在头戴式显示器8上显示。然而,由于渲染处理中的各种延迟,可能存在这样的情况,即在帧的渲染开始时头部方位(姿态)的感测与帧实际上显示在显示器8上时的时间之间用户的头部方位(姿态)改变。此外,通常期望以比图形处理单元(GPU)2能够渲染帧快的速率更新显示器8,例如以避免“颤抖”伪像。
为了解决这个问题,图形处理系统10可以在将这些帧提供给显示器8以显示给用户之前,对由图形处理单元(GPU)2渲染后的帧执行所谓的“时间扭曲”处理。
如以上所描述,在“时间扭曲”处理中,不是图形处理单元(GPU)2直接渲染要在头戴式显示器8上显示的各帧(图像),而是首先由图形处理单元(GPU)2基于在图形处理单元(GPU)2渲染“应用”帧的开始处感测到的头部方位(姿态)数据渲染该应用帧。但是,然后在图像实际显示在显示器8上之前,感测到另外的头部方位数据,并且使用更新的头部方位传感器数据变换图形处理单元(GPU)2渲染后的应用帧以生成考虑更新的头部方位(姿态)数据的应用帧的“更新”版本。然后,在头戴式显示器8上显示应用帧的这样“时间扭曲的”更新版本。
图4示出了示例性图形处理单元(GPU)2渲染后的应用帧40的示意图,其表示包括多个对象的场景的视图,对象包括房屋42。在该示例中,在图形处理单元(GPU)2正在渲染新的应用帧的同时,应用帧40经受四个“时间扭曲”处理以生成可以以连续的时间间隔显示的四个相应的输出“时间扭曲的”帧41A-41D。新的应用帧然后可以经历四个另外的“时间扭曲”处理,以此类推。
因此,可以理解的是,在本示例中,以比图形处理单元(GPU)2渲染应用帧的速率(诸如每秒30帧)快的速率(诸如每秒120帧)执行“时间扭曲”处理。例如,这可以帮助减少“颤抖”的伪像并提供较平滑的虚拟现实(VR)或增强现实(AR)体验。
如图4所示,在该示例中,应用帧40表示场景的16×8方块视场(列B到Q和行1到8),其(在两个维度上)比实际显示给用户的“时间扭曲的”帧41A-41D的5×4方块视场宽。这确保了图形处理单元(GPU)2渲染后的应用帧数据可用于针对可能的头部运动(例如旋转和/或平移)进行“时间扭曲”。
在图4的示例中,感测头部方位(姿态)数据(在第一时间点),然后图形处理单元(GPU)2基于该头部方位(姿态)数据渲染应用帧40。然后,在图像被实际显示在头戴式显示器8上之前,(在稍后的第二时间点)另外的头部方位(姿态)数据被感测并且用于变换应用帧40以生成用于显示的第一“时间扭转的”帧41A。
如图4所示,另外的头部方位(姿态)数据指示自从在图形处理单元(GPU)2开始渲染应用帧40时感测到原始头部方位(姿态)数据起用户的头部方位没有发生变化。因此,第一“时间扭曲的”帧41A简单地表示从应用帧40的较宽视场获取的适当窗口(“信箱”)(在该示例中,列G至K和行3至6)并且没有进行“时间扭曲”变换。
在感测到(第一)另外的头部方位(姿态)数据之后,第二另外的头部方位(姿态)数据被感测并且再次用于变换应用帧40以生成用于显示的第二“时间扭曲的”帧41B。
在本示例中,如图4所示,第二另外的头部方位(姿态)数据指示与原始头部方位(姿态)数据在图形处理单元(GPU)2开始渲染应用帧40时被感测到时相比,用户的头部进行了向右的小的运动(例如,旋转和/或平移)。第二“时间扭曲的”帧41B因此表示从应用帧的较宽视场获取的适当窗口(“信箱”),但是已经经历了“时间扭曲”变换,使得与其中未检测到头部运动的第一“时间扭曲的”帧41A相比,应用帧40的列L变得可见,而列G不再可见。这样做的效果是由于小的向右的头部运动,对象42看起来在第二“时间扭曲的”帧41B中向左移位(与第一“时间扭曲的”帧41A相比)。
然后以类似的方式生成第三(41C),然后第四(41D)“时间扭曲的”帧,即各基于更新的另外的头部方位(姿态)数据。因此,如图4所示,当与“原始”头部方位相比检测到较大的向右的头部运动时,对象42在“时间扭曲的”帧41C中看起来向左移位较远;并且当与“原始”头部方位相比检测到向左的头部运动时,对象42在“时间扭曲的”帧41D中(与没有检测到头部运动的第一“时间扭曲的”帧41A相比)看起来向右移位。
将理解的是,在检测到向上的头部运动(旋转和/或平移)(相对于原始头部方位)的情况下,对象42将看起来在输出“时间扭曲的”帧中向下移位;在检测到向下的头部运动(旋转和/或平移)(相对于原始头部方位)的情况下,对象42将看起来在相应的输出“时间扭曲的”帧中向上移位(与其中没有检测到头部运动的第一“时间扭曲的”帧41A相比);以此类推。
图6示意性地例示了当进行诸如图4中所例示的“时间扭曲”处理时图形处理系统(诸如图1中所例示)中的数据流和处理的相对定时。如图6所示,图形处理单元(GPU)2首先从存储器7取得适当的命令和数据(由在GPU 1上执行的用于GPU2的驱动生成),这导致图形处理单元(GPU)2基于图形处理单元(GPU)2渲染应用帧时感测到的头部跟踪(方位)数据生成(渲染)应用帧(框61),并且将渲染后的应用帧存储在主存储器7中的帧缓冲器中(框62)。
在图6所示的示例中,如在图4的示例中那样,渲染后的应用帧然后经历四个“时间扭曲”处理。因此,在图像被实际显示在头戴式显示器8上之前,感测到另外的头部追踪(方位)数据,并且由图形处理单元(GPU)2使用更新的头部追踪(方位)传感器数据来通过“时间扭曲”处理变换渲染后的应用帧以生成应用帧的第一输出“时间扭转的”版本(块63A),将其存储在主存储器7中的(第一)输出帧缓冲器中(框64A)。显示控制器4然后读取存储在(第一)帧缓冲器中的应用帧的第一输出“时间扭转的”版本(框65A),并将其提供以用于显示在显示器8的显示面板上(框66A)。
并且,一旦图形处理单元(GPU)2完成变换渲染后的应用帧以生成应用帧的第一“时间扭转的”版本(在框63A中),其将可用于基于新的头部跟踪(方位)数据进行“时间扭曲”处理的另一实例。因此,感测到新的头部跟踪(方位)数据,并且由图形处理单元(GPU)2使用该更新的头部跟踪(方位)传感器数据来再次变换渲染后的应用帧以生成应用帧的第二输出“时间扭转的”版本(块63B),其被存储在主存储器7中的(第二)输出帧缓冲器中(块64B)。显示控制器4然后读取存储在(第二)帧缓冲器中的应用帧的第二“时间扭转的”版本(框65B),并将其提供以用于显示在头戴式显示器8的显示面板上(框66B)。
在图6所示的示例中,重复上述步骤以生成并且在显示器8的显示面板上显示应用帧的两个另外的输出“时间扭曲的”版本(块63C、块64C、块65C和块66C;块63D、块64D、块65D和块66D)。整个处理然后可以被重复一次或更多次以生成一个或更多个新的应用帧,并且使每个新的应用帧经受四次(或任何其他期望数量的)“时间扭曲”处理,以在显示器8上显示输出“时间扭曲的”帧的适当序列。
图7示意性地示出了当进行诸如图4中所示的“时间扭曲”处理时的图形处理系统(诸如图1中所示)中的数据流和处理的相对定时的另选示例。在该示例中,不是图形处理单元(GPU)2通过“时间扭曲”处理变换渲染后的应用帧(如图6的示例中那样),显示控制器4执行该功能。
因此,如图7所示,如在图6的示例中那样,图形处理单元(GPU)2首先从存储器7取得适当的命令和数据(由在CPU 1上执行的用于GPU 2的驱动器生成),这导致图形处理单元(GPU)2基于在图形处理单元(GPU)2开始渲染应用帧时感测的头部跟踪(方位)数据来生成(渲染)应用帧,并且将渲染后的应用帧存储在主存储器7中的帧缓冲器中(框72)。
然后渲染后的应用帧经历四个“时间扭曲”处理。因此,在显示器8上实际显示图像之前,感测到另外的头部跟踪(方位)数据,并且由显示控制器4使用更新的头部跟踪(方位)传感器数据来通过“时间扭曲”处理变换渲染后的应用帧以生成应用帧的第一输出“时间扭转的”版本(框75A),然后显示控制器4直接将其提供以显示在显示器8的显示面板上(框76A)。
并且,一旦显示控制器4已经完成处理以生成应用帧的第一“时间扭转的”版本(在框75A中),其将可用于基于新的头部跟踪(方位)数据进行“时间扭曲”处理的另一实例。因此,感测到新的头部跟踪(方位)数据,并且由显示控制器4使用更新的头部跟踪(方位)传感器数据来再次变换渲染后的应用帧以生成应用帧的第二“时间扭转的”版本(框75B),然后显示控制器4直接将其提供以在显示器8的显示面板上显示(框76B)。
在图7所示的示例中,然后重复上述步骤以生成并在显示器8的显示面板上显示应用帧的两个另外的输出“时间扭曲”版本(块75C和块76C以及块75D和块76D)。整个处理然后可以被重复一次或更多次以生成一个或更多个新的应用帧,并且使每个新的应用帧经受四次(或任何其他期望数量的)“时间扭曲”处理,以在显示器8上显示输出“时间扭曲的”帧的适当序列。
将理解的是,在上面的示例中,每个渲染后的(应用)帧表示设置在三维世界空间中的场景的对象的视图,并且由图形处理单元(GPU)2渲染的并因此出现在帧中(在显示器上)的场景的对象位于称为视锥体的空间的体积内。
图8示出了表示可以出现在帧中(在显示器上)的世界空间的体积的示例性视锥体80。在这个示例中,视锥体80表示其顶点位于视点83处并由与视图方向84垂直的近平面81和远平面82界定的四棱锥的平截头体。位于视锥体外侧的对象80将不会被渲染,因此不会出现在帧中。位于视锥体80内的对象将出现在帧中,只要它们不被处于较浅深度处(即,较接近近平面81或视点83(沿视图方向84))并且从视点83在视图方向84上的视图中在它们前面的其他对象遮挡。
在图9中示出了近对象遮挡另一对象的场景中的示例。图9示出了从视点93在视图方向94上观看的包括两个对象即棱锥91和立方体92的场景90。在该视图中,场景90中,立方体92位于较浅的深度处(即,较接近近平面或视点93(沿视图方向94))并位于金字塔91的前方,使得金字塔91的区域被立方体92遮挡。
如以上所讨论的,申请人已经认识到,在这种情况下,其中较近的对象遮挡较远的对象,表示这种场景的视图的应用帧的“时间扭曲”和/或“空间扭曲”可能会引入失真。
图10例示了“时间扭曲”情况并示出了与图4所示相同的场景,即包括包括房屋102在内的多个对象,除了该场景还包括附加的近对象103之外。
在该示例中,如在图4的示例中那样,基于在图形处理单元(GPU)2开始渲染应用帧时感测到的(第一)头部方位(姿态)数据,由图形处理单元(GPU)2渲染应用帧100。然而,从该(第一)头部方位(姿态)的视点,近对象103附近位于房屋102的前方(并且处于较浅的深度处),使得房屋102的区域以及背景的区域被近对象103遮挡。
如图10所示,在该示例中,如在图4的示例中那样,应用帧100通过基于另外的(第二)感测到的头部方位(姿态)数据(在渲染了应用帧100之后感测到的)来经历四个“时间扭曲”处理以生成四个相应的“时间扭曲的”帧101A-101D。
在第一“时间扭曲的”帧101A的情况下,另外的感测到的头部方位(姿态)数据指示自从原始(第一)头部方位(姿态)数据在图形处理单元(GPU)2开始渲染应用帧100时被感测到起,用户的头部方位没有发生变化。因此,第一“时间扭曲的”帧101A简单地表示从应用帧100的较宽视场取得的合适的窗口(“信箱”),并且没有进行“时间扭曲”变换。
然而,在用户的头部方向改变的情况下,将执行“时间扭曲”变换,其将基于改变的头部方位来变换应用帧100,但可能引入失真。这种失真对于较靠近摄像头(靠近视点)的对象以及较大的头部运动(旋转和/或平移)的情况尤为明显且更严重,例如,由于视差效应。
因此,当与原始(第一)头部方位相比检测到向右的小的头部运动(例如旋转和/或平移)时,特别是近对象103在“时间扭曲的”帧101B中会看起来失真;当检测到向右的较大的头部运动时,在“时间扭曲的”帧101C中,近对象103会看起来更失真;并且当检测到向右的进一步大的头部运动时,在“时间扭曲的”帧101D中,近对象103会仍然看起来进一步失真。(将理解的是,其他头部运动(旋转和/或平移),诸如向左,向上和新下,也可能给场景导致失真。)
此外,在用户的头部方位改变的情况下,应用帧100中被近对象103遮挡的场景的部分可以变得可见。因此,如图10的示例所示,当与原始(第一)头部方位相比检测到向右侧的小的头部运动(例如旋转和/或平移)时,应用帧100中被遮挡的场景的小区域104B被揭示(101B);当检测到向右的较大的头部运动时,场景的较大区域104C被揭示(101C);并且当检测到向右的进一步大的头部运动时,场景的进一步大的区域104D被揭示(101D)。(将理解的是,诸如向左,向上和向下的其他头部运动(旋转和/或平移)也可以揭示场景的先前遮挡部分。)
然而,在该示例中,图形处理单元(GPU)2没有渲染用于新可见的“解遮挡”区域104B-104D的数据,因为从(第一)头部方位(姿态)(基于其渲染了应用帧100)的角度看,这些区域被近对象103遮挡。
因此,“时间扭曲的”帧101B-101D不能够正确地显示近对象103和“遮挡”区域104B-104D,导致向用户显示的输出“时间扭曲的”帧101B-101D中的失真和伪像。
类似地,如以上所讨论,当场景包含运动对象时,那些对象的运动也会导致“解遮挡”,在执行“空间扭曲”处理时这可能导致向用户显示的内容中失真。
图11例示了本发明的优选实施方式,并且示出了与图10类似的场景,即,包括包括房屋112和近对象113在内的多个对象。
在该实施方式中,如图10的示例中那样,第一(应用)帧110由图形处理单元(GPU)2基于在图形处理单元(GPU)2开始渲染(应用)帧110时(在第一时间点)感测到的(第一)头部方位(姿态)数据渲染。因此,(应用)帧110表示相对于在头戴式显示系统(在第一时间点)在图形处理单元(GPU)2开始渲染(应用)帧110时感测到的(第一)头部方位(姿态)的场景的“正前”或前向视图。
在该场景的该前视图110中,近对象113遮挡包括房屋112的区域在内的场景的区域,使得前向视图110的该区域的数据不由图形处理单元(GPU)2渲染。
在本实施方式中,然而,与图10的示例形成对比,可以确定对象113接近于视点(从该视点渲染了(表示)前向视图110(的帧)),然后由图形处理单元(GPU)2基于头戴式显示器的用户在视图将被用于显示的时间段期间相对于所感测的(第一)头部方位(姿态)(基于其渲染了(表示)前景110(的帧))(从其开始)可能进行的预测或假定的相应的左和右头部运动(例如,旋转和/或平移)渲染场景的两个另外版本115、116。
因此,左侧视图115表示如果用户将他们的头部相对于感测到的(第一)头部方位(姿态)(基于其渲染了(表示)前向视图110(的帧))向左转动(旋转)特定角度(例如20度)(和/或如果他们将他们的头部移动(平移)特定距离)则将出现的场景。类似地,右侧视图116表示如果用户将他们的头部相对于感测到的(第一)头部方位(姿态)(基于其渲染了(表示)前向视图110(的帧))向右转动(旋转)特定角度(例如20度)(和/或如果他们将他们的头部移动(平移)特定距离)则将出现的场景。(基于相对于(第一)头部方位(姿态)的头部运动(旋转和/或平移)的不同和/或更多量和/或方向(诸如向上和/或向下)的场景的其他另外版本也可以或代替地被渲染。)
如在图11中可以看出,在本实施方式中,左侧视图115和右侧视图116基于与前向视图110的不同头部方位(姿态)示出近对象113以及场景的在前向视图110中被遮挡的区域(包括房屋的区域112)。
因此,当执行“时间扭曲”处理时,用于场景的左侧视图115和右侧视图116的两个另外版本的渲染数据可以(并且在优选实施方式中确实)用于为场景的否则会被“时间扭曲”处理严重失真的区域提供渲染数据,区域例如包含近对象113的场景的区域,以及场景中被“解遮挡”的区域,解遮挡即在前向视图110中被遮挡但是由于在渲染后的视图被用于显示的时间段期间用户的头部方位(姿态)的改变而变得可见。这意味着可以避免或减少可能由“时间扭曲”处理而造成的失真和伪像。
图12例示了本发明的另选实施方式,其中,不是如图11的实施方式那样渲染整个左侧视图和右侧视图,而是由图形处理单元(GPU)2仅渲染部分左侧视图和部分右侧视图。与图11的实施方式相比这可以减少处理要求。
图12示出了与图11相同的场景,即包括多个对象,对象包括房屋122和近对象123。在该实施方式中,如在图11的实施方式中那样,基于在图形处理单元(GPU)2开始渲染(应用)帧120时(在第一时间点)感测到的(第一)头部方位(姿态)数据由图形处理单元(GPU)2渲染第一(应用)帧120(表示前向视图)。在场景的这个前向视图120中,近对象123遮挡场景的包括房屋122的区域在内的区域,使得这些区域的数据在(表示)前向视图120(的帧)中不被图形处理单元(GPU)2渲染。
在该实施方式中,可以确定近对象123接近(应用)帧120被渲染、并且然后部分右侧视图125和部分左侧视图126也由图形处理单元(GPU)2渲染的视点。如在图11的实施方式中那样,左侧视图125表示基于相对于感测到的(第一)头部方位(姿态)(基于其渲染了(表示)前向视图120(的帧))将头部向左转动(旋转)特定角度(例如20度)(和/或将头部移动(平移)特定距离)的场景的视图,而右侧视图126表示基于相对于感测到的(第一)头部方位(姿态)(基于其渲染了(表示)前向视图120(的帧))将头部向右转动(旋转)特定角度(例如20度)(和/或将头部移动(平移)特定距离)的场景的视图。(基于相对于(第一)头部方位(姿态)的头部运动(旋转和/或平移)的不同和/或更多量和/或方向(例如向上和/或向下)的场景的其他部分视图也可以或代替地被渲染。)
然而,与图11的实施方式形成对比,部分右侧视图125和部分左侧视图126仅示出了近对象123和“解遮挡”的部分(区域)124A、124B,即在正向视图120中被近对象123遮挡但是由于改变的头部方位(姿态)而在相应的部分视图中被揭示的部分(区域)。因此,在部分右侧视图125的情况下,所渲染的区域对应于近对象123和“解遮挡”区域124A(对应于在前向视图120中被近对象123遮挡但是在右侧视图125揭示的区域)。类似地,在左侧视图126的情况下,所渲染的区域对应于近对象123和“解遮挡”区域124B(对应于在前向视图120中被近对象123遮挡但是在左侧视图126中被揭示的区域)。
这样,渲染另外视图所需的附加处理可以被限制到帧的最有可能遭受伪像和失真的区域,即包含近对象的区域和帧的在前向视图中被近对象遮挡的部分(区域)但由于头部方位(姿态)的改变可能会揭示的区域。
类似地,在另一实施方式中,另外或另选地,可以选择渲染另外视图(版本)所基于的旋转和/或平移,使得为场景中最有可能遭受伪像和失真的区域提供渲染数据。例如,可以使用深度信息来确定哪里有可能发生遮挡效应,然后可以选择渲染另外视图所基于的视点和/或视图方向以提供渲染数据以减轻那些遮挡效应。
申请人还认识到,在一些情形下,可以期望进一步限制为了渲染另外(部分)视图(版本)而执行的处理,例如,因为附加处理将超出系统能力并且因此可能影响前向视图120的渲染。例如,如果近对象123大和/或足够近以覆盖大部分(或者全部)前向视图120,使得帧的大区域(或全部)将需要为了另外视图(版本)而渲染,则会遇到这种情形。在这种情况下,可以期望减少渲染的另外视图(版本)的数量,或者甚至根本不渲染任何另外视图(版本)而是仅渲染(表示)前向视图120(的帧)。
因此,在实施方式中,确定渲染另外的左侧视图和右侧视图(版本)是否将超过图形处理系统的处理极限;并且当确定是时,被渲染的另外视图(版本)的数量被适当地减少,例如,并且优选地减少到零。
图13例示了另一实施方式,由此可以减少渲染场景的另外视图(版本)的处理要求。图13示出了包括多个对象的场景,对象包括兔子132和树133。在该实施方式中,图形处理单元(GPU)2基于在图形处理单元(GPU)2开始渲染第一应用帧130A时(在第一时间点)感测的第一视图方位(姿态)数据来渲染应用帧130A(表示前向视图)。在场景的该前向视图130A中,树133遮挡场景的包括兔子132的区域,使得兔子132不可见。
然而,如果用户将他们的头部向右运动(旋转和/或平移),则兔子132应该被“解遮挡”,并且由于视差效应而从树133后面出现。因此,如图13所例示,如果图形处理单元(GPU)2要基于这个新的(第二)视图方位(姿态)来渲染新的应用帧130B,那么兔子132将在该帧中可见。
然而,如果不是渲染新的应用帧130B,而是基于新的(第二)视图方位(姿态)对第一应用帧130A进行(六个自由度(DOF)中的三个)“时间扭曲”来生成输出“时间扭曲的”帧131A,则因为针对“解遮挡”的区域134A的数据尚未由图形处理单元(GPU)2在第一应用帧130A中渲染,所以输出“时间扭曲的”帧131A可能不能正确地显示这些区域134A。如图13所例示,这可能会导致向用户显示的内容出现失真和伪像;例如,兔子132可能不会被示出在输出“时间扭曲的”帧131A中。
在本发明的实施方式中,因此,在生成输出帧之前,图形处理单元(GPU)2渲染应用帧130A的三个另外的版本(视图)135、136、137,其中各版本135、136、137基于与基于渲染应用帧130A所基于的第一视图方位(姿态)不同的视图方位(姿态)来表示场景的视图。
因此,在该实施方式中,左侧视图135,右侧视图136和下侧视图137表示如果用户相对于第一视图方位(姿态)分别向左,向右和向下将他们的头部转动(旋转)特定角度(和/或如果他们将他们的头部移动(平移)特定距离)则将出现的场景的视图。如图13所例示,兔子132在右侧视图136中从树133后面出现。
然后,在该实施方式中,当基于感测到的向右的头部运动(在稍后的第二时间点感测到)来生成输出帧131B时,基于与感测到的头部运动最接近的视图方位(姿态)的另外视图即右侧视图136被选择,并与应用帧130A组合以生成示出兔子132的输出帧131B。
然而,在这个实施方式中,与图11和图12所示的实施方式形成对比,各个另外版本(视图)135、136、137以比应用帧130A低的分辨率渲染。这意味着减少了渲染另外版本所需的处理。然而,如图13所例示,这是以输出帧131B的“遮挡”区域134B(包括兔子132)以低于如果另外版本以与应用帧130A相同的分辨率渲染则处于的图像质量低的图像质量来示出为代价的。然而,与不使用应用帧130A的渲染的另外版本而生成的输出帧(诸如输出帧131A)相比,向用户显示的内容中的失真和伪像仍然显着减少。
类似地,在另一实施方式中,另外或另选地,可以以比应用帧130A低的速率来更新(渲染)另外版本,以减少渲染它们所需的处理。
图14示意性地示出了根据本发明的优选实施方式的诸如如图1所例示的图形处理系统的操作。如图14所示,在本实施方式中,由图形处理系统的图形处理单元(GPU)2基于在图形处理单元(GPU)2开始渲染第一前向视图(帧)时(在第一时间点)感测到的(第一)头部方位(姿态)数据渲染来自第一视点的场景的第一(表示)前向视图(的帧)(在步骤140中)。
然后可以可选地确定在第一前向视图中是否存在接近第一视点的对象(在步骤141中)。这可以通过确定在场景的前向视图中对象的深度(例如,在视图方向上从视锥体的近平面到对象的距离)并且将所确定的深度与阈值进行比较来完成。如果对象的深度小于阈值,则可以确定该对象接近第一视点。
另外或另选地,在另一实施方式中,可以确定在第一前视图中是否存在接近第一视点的运动对象(在步骤141中)。
将理解的是,虽然在图14的实施方式中,渲染第一前向视图(帧)的步骤(步骤140)在确定对象是否接近第一视点的步骤(步骤141)之前执行,但是这不是必须的。相反,渲染第一前向视图(帧)的步骤(步骤140)可以在确定对象是否接近第一视点的步骤(步骤141)之后或与之同时执行。
如果没有对象被确定为接近第一视点,则可以单独使用第一前向视图(帧)来显示(步骤143),例如,通过基于在图形处理单元(GPU)2已经渲染第一前向视图(帧)之后(在稍后的第二时间点)感测到的(第二)后头部方位(姿态)数据的“时间扭曲”处理来变换第一前向视图(帧),并提供这样“时间扭曲的”输出帧(图像)以供显示。
然而,如果确定对象接近第一视点,则在实施方式中,图形处理单元(GPU)2然后渲染场景的一个或更多个另外视图(步骤144),例如,基于从渲染第一前向视图(帧)所基于的所感测到的(第一)头部方位(姿态)开始假定的头部转动(旋转)(和/或运动(平移))。
应该理解,由于确定在第一前向视图中是否存在接近第一视点的对象的步骤(步骤141)是可选的,所以该方法可以在不执行中间步骤的情况下直接从步骤140前进到步骤144。因此,图形处理单元(GPU)2可以渲染场景的一个或更多个另外视图,而不管在第一前向视图中是否存在接近第一视点的对象。
可以基于可能的用户头部运动(例如旋转和/或平移)来选择所渲染的另外视图,例如,基于由渲染第一帧所针对的应用(在运行时)提供的信息来选择。
例如,在汽车游戏的情况下,可以假定用户将坐着,并且因此而将用户的头部运动限制为由于脖子的运动引起的旋转。例如,在游戏包括虚拟“后视镜”的情况下,可以假定用户显著地转动头部的可能性进一步降低。此外,可以假定用户通常会在行进方向上向前看,并且将把他们的头部向左或向右转向角落,但不大可能将他们的头部显著着地向上或向下运动(例如,除非存在山)。
因此,在这种情况下,可以预期用户的头部运动(旋转)的最大范围将在左侧90°,右侧90°,向下20°和向上20°之间,但是用户通常会在行进的方向看。因此,在这种情况下,可以渲染仅基于假定的向左和向右的头部运动(旋转)的有限数目的另外视图,例如,基于从渲染第一前向视图(帧)所基于的所感测到的(第一)头部方位(姿态)开始将头部向左转动35°的一个另外视图以及基于将头部向右转动35°的另一个视图。当有可能需要时可以生成更多的另外视图,例如,当超过另一辆车时。
例如,在飞行模拟器应用的情况下,可以假设用户将坐着,并且通常在行进方向上向前看,但是与汽车游戏相比对象可以从较宽范围的方向逼近用户,例如从上面和下面以及从左侧和右侧。因此,在这种情况下,可以预期用户的头部运动(旋转)的最大范围将在左侧90°、右侧90°、向下60°和向上60°之间。因此,在这种情况下,为了考虑到用户抬头或低头的可能性增加,除了基于将头部向左转动35°到向右转动35°的另外视图之外,可以渲染基于头部向下转动35°和头部向上转动35°的另外视图。
在第一人称射击游戏(FPS)的情况下,可以假设用户将站立并且可以快速反应,并且因此可以较有可能在宽的方向范围内进行大的头部运动(例如旋转和/或平移)。因此,在这种情况下,可以渲染跨相对较大范围的潜在头部运动(旋转和/或平移)的相对较大量的另外视图,例如,基于渲染第一前向视图(帧)所基于的所感测到的(第一)头部方位(姿态)开始将头部向左转动35°、向右转动35°、向左转动60°、向右转动60°、向下转动35°、向上转动35°、向下转动60°和向上转动头60°(以及平移头部)。
另外或另选地,可以选择渲染的另外视图以减少伪像和失真的可能性(和严重性)。
再次参照图14,在渲染了(所选择的)另外视图时(在步骤144),则可以从渲染后(表示)前向视图和另外视图的(的帧)中选择要用于显示的渲染数据(步骤145)。这可以通过在图形处理单元(GPU)2已经渲染第一前向视图(帧)之后(并且在图形处理单元(GPU)2渲染了另外视图之后)(在稍后的第二时间点)感测(第二)头部方位(姿态),然后选择针对基于最接近实际感测的(第二)头部方位(姿态)的头部方位(姿态)而渲染的另外视图的渲染数据。
例如,如果基于相对于渲染第一前向视图(帧)所基于的所感测的(第一)头部方位(姿态)的假定的向左20°头部转动(旋转)而渲染了左侧视图,并且基于相对于渲染第一前向视图(帧)所基于的所感测的(第一)头部方位(姿态)的假定的向右20°头部转动(旋转)而渲染了右侧视图,则当(在渲染了第一前视图(帧)之后)感测到(相对于渲染第一前向视图(帧)所基于的(第一)头部方位(姿态))向左的大于10°的头部转动(旋转)时左侧视图可以被选择,当(在渲染了第一前视图(帧)之后)感测到(相对于渲染第一前向视图(帧)所基于的(第一)头部方位(姿态))向右的大于10°的头部转动(旋转)时右侧视图可以被选择,并且当(在渲染了第一前视图(帧)之后)感测到(相对于渲染第一前向视图(帧)所基于的(第一)头部方位(姿态))感测到向左的10°(包含)与向右的10°(包含)的头部转动(旋转)时第一前向视图可以被选择。
在仅渲染部分另外视图(版本)的情况下,则可以关于前向视图(帧)的区域(针对该区域渲染了对应的部分另外视图)来执行该选择,并且可以为前向视图(帧)的不渲染另外视图(版本)数据的区域(默认)选择前向视图(帧)。
然后可以使用所选择的渲染数据来生成输出帧(步骤146),例如,通过基于在图形处理单元(GPU)2已经渲染第一前向视图(帧)(以及另外视图(版本))之后(在第二,稍后的时间点)感测到的(该)(第二)头部方位(姿态)数据的(三或六自由度(DOF))“时间扭曲”处理来变换所选择的渲染数据,并提供这样“时间扭曲的”输出帧(图像)以供显示。所选择的渲染数据还可以经受例如镜头失真校正变换、色差(失真)校正变换和/或“空间扭曲”变换(外插)。
图15示意性地例示了当执行根据本发明的优选实施方式的诸如在图11中例示的“时间扭曲”处理时的图形处理系统(例如图1所示)中的数据流和处理的相对定时。
如上所述,在图6的示例中,不是如图6的示例那样图形处理单元(GPU)2生成表示场景的前向视图的接着经受“时间扭曲”处理的单个应用帧,在本实施方式中,图形处理单元(GPU)2生成表示场景的多个不同视图(版本)的一组渲染数据,然后对该组渲染数据中的所选择的渲染数据进行“时间扭曲”处理。
因此,如图15所示,在本实施方式中,如在图6的示例中那样,图形处理单元(GPU)2从存储器7中取得适当的命令和数据(由在CPU 1上执行的用于GPU 2的驱动生成),其使得图形处理单元(GPU)2基于在图形处理单元(GPU)2开始渲染前向视图(应用帧)时(在第一时间点)感测到的头部跟踪(方位(姿态))数据生成(渲染)前向视图(应用帧)(块151),并且将渲染后的前向视图(应用帧)存储在主存储器7中的帧缓冲器中(框152A)。
在该实施方式中,如在图6的示例中那样,渲染后的前向视图(应用帧)表示来自与所感测到的头部跟踪(方位(姿态))数据相对应的(第一)头部方位(姿态)的所渲染的场景的(第一)前向视图。然而,与图6的示例相比,(当确定对象接近视点(从其渲染前向视图)时)图形处理单元(GPU)2还生成(渲染)(在框151中)表示场景的左侧视图和右侧视图的场景的另外两个版本。两个另外的版本存储在主存储器7中的相应帧缓冲器中(框152B和框152C)。
在本实施方式中,场景的左侧视图和右侧视图由图形处理单元(GPU)2连同前向视图(应用帧)(与其基本同时)渲染(在框151中),然后存储以供随后使用(在框152B和框152C中)。这意味着对于场景的不同视图而言相同的输入数据可以在渲染期间由图形处理单元(GPU)2重新使用,使得其可以仅需要被缓存一次,从而得到较高效的渲染处理。
然而,在另一个实施方式中,左侧视图和右侧视图数据可以在需要用于显示时由图形处理单元(GPU)2渲染(例如在框153A、框153B、框153C和/或框153D处,在感测到(第二)头部跟踪(方位(姿态))数据之后)。
在本实施方式中,如在图6的示例中那样,在图像实际显示在显示器8上之前,(在稍后的第二时间点)感测另外(第二)头部跟踪(方位(姿态))数据。然而,与图6的示例形成对比,在本实施方式中,图形处理单元(GPU)2使用该另外感测到的头部跟踪(方位(姿态))数据来从渲染后的前向视图,左侧视图和右侧视图选择要用于显示的适当的渲染数据。
例如,如果另外感测到的头部跟踪(方位(姿态))数据指示用户已经将其头部显著向右运动(例如旋转和/或平移)(例如超过特定角度和/或距离)(与图形处理单元(GPU)2开始渲染前向视图(应用帧)时(在框151)感测到的它们的头部方位(姿态)相比),则可以选择渲染后的右侧视图数据;如果感测到的头部跟踪(方位(姿态))数据指示用户已经将他们的头部显著向左运动(旋转和/或平移)(例如超过特定角度和/或距离)(与图形处理单元(GPU)2开始渲染前向视图(应用帧)时(在框151)感测到的它们的头部方位(姿态)相比),则可以选择渲染后的左侧视图数据;否则,可以选择渲染后的前向视图数据。
然后,在本实施方式中,由图形处理单元(GPU)2使用另外(第二)感测的头部跟踪(方位(姿态))数据通过“时间扭曲”处理来变换所选择的渲染数据,以生成第一输出“时间扭曲的“帧(框153A)。
第一“时间扭曲的”帧存储在主存储器7中的(第一)输出帧缓冲器中(框154A),然后显示控制器4读取存储在(第一)帧缓冲器中的第一“时间扭曲的”帧(框155A)并将其提供以用于显示在头戴式显示器8的显示面板上(框156A)。
并且,在图形处理单元(GPU)2已经完成变换所选择的渲染数据以生成第一“时间扭曲的”帧时(在框153A中),其将可用于基于新的(第二)头部跟踪(方位(姿态))数据进行“时间扭曲”处理的另一实例。因此,感测到新的头部跟踪(方位(姿态))数据,并且图形处理单元(GPU)2使用更新的头部跟踪(方位(姿态))传感器数据来再次选择和变换渲染数据以生成第二输出“时间扭曲的”帧以用于显示(框153B),其被存储在主存储器7中的(第二)输出帧缓冲器中(框154B)。
显示控制器4然后读取存储在(第二)帧缓冲器中的第二“时间扭曲的”帧(框155B),并将其提供以显示在头戴式显示器8的显示面板上(框156B)。
在本实施方式中,然后重复上述步骤以生成并在显示器8的显示面板上显示两个另外的输出“时间扭曲的”帧(块153C、块154C、块155C和块156C;以及块153D、块154D、块155D和块156D)。然后可以重复整个处理一次或更多次以生成一个或更多个新的前向视图、左侧视图和右侧视图(以及上侧视图和下侧视图),并且选择渲染数据并使所选择的渲染数据经受四个“时间扭曲”处理,以在头戴式显示器8上显示适当的输出“时间扭曲的”帧序列。
在另一实施方式中,显示控制器4选择渲染数据和/或通过“时间扭曲”处理变换所选择的渲染数据以生成输出“时间扭曲的”帧,然后直接向给头戴式显示器8提供“时间扭曲的”帧以供显示。
图16示意性地示出了根据本发明实施方式的诸如图1所例示的图形处理系统的操作。如图16所示,在本实施方式中,图形处理系统的图形处理单元(GPU)2首先渲染正向(前向)、左和右帧(视图)并将它们写入存储器7(步骤160)。
在本实施方式中,如以上所讨论的,正向(第一)帧表示基于在开始渲染正向帧时(在第一时间点)感测到的第一头部方位(姿态)的来自第一视点的场景的第一视图。左帧表示基于从所感测到的第一头部方位(姿态)开始的假定的向左的头部转动(旋转)(和/或平移)的场景的第二视图,并且右帧表示基于假定从所感测到的第一头部方位(姿态)开始的假定的向右的头部转动(旋转)(和/或平移)的场景的第三视图。
然后,(第二)头部跟踪(方位(姿态))信息(在稍后的第二时间点)被读取(步骤161),并且用于确定相对于开始渲染正向(第一)帧时(在第一时间点)感测到的第一头部方位(姿态),用户头部实际定位的位置。如果与所感测到的第一头部方位(姿态)相比,用户的头部显著地定位在右侧(例如,超过特定角度和/或距离)(步骤162A),则来自右帧的渲染数据被选择并随后被使用(步骤163A);如果与所感测到的第一头部方位(姿态)相比,用户的头部显著地定位在左侧(例如,超过特定角度和/或距离)(步骤162B),则来自左帧的渲染数据被选择并随后被使用(步骤163B);否则,选择并使用来自正向帧的渲染数据(步骤163C)。
然后通过图形处理单元(GPU)2处理所选择的渲染数据,例如通过进行“时间扭曲”处理(步骤164),并将处理后的输出(“时间扭转的”)图像写入存储器7(步骤165),其被显示处理器(控制器)4从存储器7读取(步骤166),显示处理器(控制器)4将其发送到显示面板8以供显示(步骤167)。所选择的渲染数据还可以或者代替地由图形处理单元(GPU)2经受例如透镜失真校正变换、色差(失真)校正变换和/或“空间扭曲”变换。
如要果从当前正向,左和右帧(视图)生成更多的输出处理(“时间扭曲的”)帧,则读取另外的头部跟踪(方位(姿态))信息,并使用该另外的头部跟踪(方位(姿态))信息重复该处理(步骤168)。否则,由图形处理单元(GPU)2渲染新的正向、左和右帧(视图),并且使用新的正向、左和右帧(视图)重复整个处理(步骤169)。输出处理(“时间扭曲的”)帧序列因此被提供用于显示。
图17示意性地示出了根据本发明另一实施方式的诸如图1所例示的图形处理系统的操作。在该实施方式中,不是如图16中所示的实施方式中由图形处理单元(GPU)2,由显示控制器4处理(“时间扭曲的”)帧,。
如图17所示,在该实施方式中,如在图16的实施方式中那样,图形处理系统的图形处理单元(GPU)2首先渲染正向(前向)、左和右帧(视图)并将它们写入存储器7(步骤170)。
然后,(第二)头部跟踪(方位(姿态))信息被读取(步骤171),并且用于确定相对于在开始渲染正向(第一)帧时感测到的第一头部方位(姿态),用户头部实际定位的位置。如果与所感测到的第一头部方位(姿态)相比,用户的头部显著地定位于右侧(例如,超过特定角度和/或距离)(步骤172A),则来自右帧的渲染数据被选择并随后使用(步骤173A);如果与所感测到的第一头部方位(姿态)相比,用户的头部显著地定位于左侧(例如,超过特定角度和/或距离)(步骤172B),则来自左帧的渲染数据被选择并随后使用(步骤173B);否则,选择并使用来自正向帧的渲染数据(步骤173C)。
然后由显示控制器4处理(“时间扭曲”)所选择的渲染数据(步骤174),并且输出处理(“时间扭曲的”)图像被显示控制器4直接发送到显示面板8以供显示(步骤177)。所选择的渲染数据还可以或代替地由显示控制器4进行例如透镜失真校正变换、色差(畸变)校正变换和/或“空间扭曲”变换。
如果要从当前正向,左和右帧(视图)生成更多的输出处理(“时间扭曲的”)帧,则读取另外的头部跟踪(方位(姿态))信息,并使用该头部跟踪(方位(姿态))重复该处理(步骤178)。否则,由图形处理单元(GPU)2渲染新的正向、左和右帧(视图),并且使用新的正向、左和右帧(视图)重复整个处理(步骤179)。输出处理(“时间扭曲的”)帧序列因此被提供用于显示。
图18示意性地示出了根据本发明另一实施方式的诸如图1所例示的图形处理系统的操作。在该实施方式中,不是像图16和图17的实施方式那样渲染整个左和右帧(视图),而是仅渲染部分左和右帧(视图)。
如图18中所示,在该实施方式中,如在图16和图17中所示的实施方式中那样,图形处理系统的图形处理单元(GPU)2首先基于在开始渲染正向帧时(在第一时间点)感测到的第一头部方位(姿态)来渲染正向(前向)(第一)帧。然而,与图16和图17所示的实施方式形成对比,在本实施方式中,图形处理单元(GPU)2仅渲染部分左和右帧(视图)。然后将正向(前向),部分左和部分右帧(视图)写入存储器(步骤180)。
然后,(第二)头部跟踪(方位(姿态))信息(在稍后第二的时间点)被读取(步骤181),并用于确定相对于在开始渲染正向(第一)帧时(在第一时间点)感测到的第一头部方位(姿态),用户的头部实际定位的位置。如果与所感测到的第一头部方位(姿态)相比,用户的头部显著地定位于右侧(例如,超过特定角度和/或距离),则对于其中渲染的右帧数据可用的输出帧的区域,来自部分右帧的渲染数据被选择并随后使用(步骤183A)。如果与所感测到的第一头部方位(姿态)相比,用户的头部显著地定位于左侧(例如,超过特定角度和/或距离),则对于其中渲染的左帧数据可用的输出帧的区域,来自部分左帧的渲染数据选择并随后使用(步骤183B)。否则,选择并使用来自正向帧的渲染数据(步骤183C)。
然后由图形处理单元(GPU)2处理所选择的渲染数据,例如通过进行“时间扭曲”处理(步骤184),并将输出处理(“时间扭曲的”)图像写入存储器7(步骤185),其被显示处理器(控制器)4从存储器7读取(步骤186),显示处理器(控制器)4将其发送到显示面板8以供显示(步骤187)。所选择的渲染数据还可以或者代替地由图形处理单元(GPU)2经受例如透镜失真校正变换、色差(失真)校正变换和/或“空间扭曲”变换。
另选地,然后由显示控制器4例如通过“时间扭曲”处理来处理所选择的渲染数据,然后显示控制器4直接提供输出处理(“时间扭曲的”)图像以在显示面板8上显示。
如果要从当前正向,部分左和部分右帧(视图)生成更多的输出处理(“时间扭曲的”)帧,则读取另外的头部跟踪(方位(姿态))信息,并且使用该另外的头部跟踪(方位(姿态))信息重复该处理(步骤188)。否则,由图形处理单元(GPU)2渲染新的正向、部分左和部分右帧(视图),并且使用新的正向、部分左部分和部分右帧(视图)重复整个处理(步骤189)。输出处理(“时间扭曲的”)帧序列因此被提供用于显示。
现在将描述另一个实施方式。图19示出了包括多个对象的场景,对象包括风车192,风车192包括顺时针方向运动的风帆。因此,与图11和图12的实施方式形成对比,图19中所示的场景是包括运动对象的动态场景。
在图19的实施方式中,如在图11和图12的实施方式中那样,基于在图形处理单元(GPU)2开始渲染应用帧190时在第一时间点感测到的第一视图方位(姿态)数据,图形处理单元(GPU)2渲染第一应用帧190(表示前向视图)。在场景的该视图中,风车192的运动风帆出现在它们在第一时间点的位置处。因此,应用帧190大致表示在感测到第一视图方位(姿态)的第一时间点处的场景的静态“快照”。
在该实施方式中,然后可以确定应用帧190包含运动对象,然后由图形处理单元(GPU)2渲染第一未来视图195和第二未来视图196。在该实施方式中,未来视图195、196是(未来)部分视图,其只显示包含风车192的区域;然而,(未来)全视图(即,具有与应用帧190相同的视场)也可以或者代替地被渲染。
在该实施方式中,第一未来视图195表示在时间点处的场景的视图,将要生成的应用帧190的输出(例如“时间扭曲的”和/或“空间扭曲的”)版本将在该时间点表示场景的视图。类似地,第二未来视图196表示在稍后的时间点处的场景的视图,将要生成的应用帧190的稍后输出(例如,“时间扭曲的”和/或“空间扭曲的”)版本将在该稍后的时间点表示场景的视图。(基于不同时间点的场景的其他未来或过去的视图也可以或者代替地被渲染)。因此,如图19所示,风车192的风帆在第一未来视图195和第二未来视图196中与应用帧190相比看起来顺时针旋转,并且在第一未来视图195和第二未来视图196中示出了在应用帧190中被风帆遮挡的风车的区域。
如以上所讨论的,如果不是由图形处理单元(GPU)2直接渲染而是通过“时间扭曲”处理来变换渲染后的应用帧190来生成各帧195、196,则各“时间扭曲的”帧将风车192的风帆示出在与其在应用帧190中示出的位置相同的位置,因为“时间扭曲“处理不考虑任何这种对象运动。因此,风车192的风帆将在各“时间扭曲的”帧中出现在与比其应该在的时间点早的时间点(即,在应用帧表示场景的视图的时间点)对应的位置处。此外,风车192的风帆在各“时间扭曲的”帧中将出现在相同位置,因此在那些帧中似乎是静止的。这意味着将向用户显示的内容引入失真。
因此,在本实施方式中,用于场景的两个另外版本的第一未来视图195和第二未来视图196的渲染数据可以是(并且在优选实施方式中确实)用于在执行“时间扭曲”和/或“空间扭曲“处理时为场景的否则可能会因“时间扭曲”和/或“空间扭曲“处理而显著失真的区域提供数据,例如包括运动对象的场景的区域以及场景中(由那些运动对象)“解遮挡”的区域,即在应用帧视图190中被遮挡但是由于在渲染后的视图用于显示的时间段期间对象运动而变得可见。这意味着可以避免或减少否则可能由“时间扭曲”和/或“空间扭曲”处理引起的失真和伪像。例如,可以提供较平滑的虚拟现实(VR)或增强现实(AR)体验。
图20示意性地图示了根据本发明的优选实施方式的当执行“时间扭曲”和/或“空间扭曲”处理时如图1所例示的图形处理系统中的数据流和如图19所示的处理的相对定时。
在本实施方式中,图形处理单元(GPU)2生成表示场景的多个不同视图(版本)的一组渲染数据,然后对该组渲染数据的所选择的渲染数据进行“时间扭曲”和/或“空间扭曲”处理。
因此,如图20所示,在本实施方式中,如在图15的实施方式中那样,图形处理单元(GPU)2从存储器7取得适当的命令和数据(由在CPU 1上执行的用于GPU 2的驱动生成),其使得图形处理单元(GPU)2基于在图形处理单元(GPU)2开始渲染前向视图(应用帧)时在第一时间点处感测到的头部跟踪(方位(姿态))数据生成(渲染)前向视图(应用帧)(块201),并且将渲染后的前向视图(应用帧)存储在主存储器7中的帧缓冲器中(块202A)。
在该实施方式中,如在图15的实施方式中那样,渲染后的前向视图(应用帧)表示从与第一时间点感测到的头部跟踪(方位(姿态))数据对应的(第一)头部方位姿态)渲染的场景的(第一)前向视图。然而,不是如图15的实施方式那样生成(渲染)表示场景的左侧视图和右侧视图的场景的另外版本,在本实施方式中(当确定了场景包含运动对象时),图形处理单元(GPU)2生成(渲染)(在框201中)场景的未来视图,该未来视图表示该前向视图(应用帧)表示场景的视图的时间点之后的另外时间点处的场景的视图。未来视图被存储在主存储器7中的帧缓冲器中(框202B)。
然后,在本实施方式中,如在图15的实施方式中那样,在显示器8上实际显示图像之前,(在第二时间点)感测另外的(第二)头部跟踪(方位(姿态))数据。然而,与图15的实施方式形成对比,然后,感测到另外的头部跟踪(方位(姿态))数据的(第二)时间点被图形处理单元(GPU)2用来从渲染后的前向视图和未来视图选择要用于显示的适当的渲染数据。
例如,如果感测到另外的头部跟踪(方位(姿态))数据的(第二)时间点较接近渲染未来视图所基于的另外时间点而不是渲染前向视图所基于的第一时间点,则渲染的未来视图数据可以被选择;否则,可以选择渲染的前向视图数据。
然后,在本实施方式中,由图形处理单元(GPU)2通过使用另外的(第二)感测的头部跟踪(方位(姿态))数据的“时间扭曲”处理和/或“空间扭曲”处理来变换所选择的渲染数据以生成第一“时间扭曲的”和/或“空间扭曲的”输出帧(框203A)。
第一“时间扭曲的”和/或“空间扭曲的”输出帧存储在主存储器7的(第一)输出帧缓冲器中(框204A),然后显示控制器4读取存储在(第一)帧缓冲器中的第一“时间扭曲的”和/或“空间扭曲”输出帧(框205A),并提供其以在头戴式显示器8的显示面板上显示(框206A)。
并且,在图形处理单元(GPU)2已完成变换所选择的渲染数据以生成第一“时间扭曲的”和/或“空间扭曲的”输出帧时(在框203A中),则其将可用于基于新的(第二)头部跟踪(方位(姿态))数据执行“时间扭曲”和/或“空间扭曲”处理的另一实例。因此,感测到新的头部跟踪(方位(姿态))数据,并且感测到更新的头部跟踪(方位(姿态))数据的时间点被图形处理单元(GPU)2用来选择渲染数据,其使用更新的头部跟踪(方位(姿态))数据来变换以生成用于显示的第二“时间扭曲的”和/或“空间扭曲的”输出帧(框203B),其存储在主存储器7的(第二)输出帧缓冲器中(框204B)。
显示控制器4然后读取存储在(第二)帧缓冲器中的第二“时间扭转的”和/或“空间扭曲的”输出帧(框205B),并提供其以用于在头戴式显示器8的显示面板上显示(框206B)。
在本实施方式中,然后重复上述步骤以生成并在显示器8的显示面板上显示两个另外的“时间扭曲的”和/或“空间扭曲的”输出帧(块203C、块204C、块205C和块206C;和块203D、块204D、块205D和块206D)。整个处理然后可以被重复一次或更多次以生成一个或更多个新的未来(和过去)视图,并且选择渲染数据并使所选择的渲染数据经受四个“时间扭曲”和/或“空间扭曲”处理,以在头戴式显示器8上显示适当的“时间扭曲的”和/或“空间扭曲的”输出帧序列。
在另一个实施方式中,显示控制器4选择渲染数据和/或通过“时间扭曲”和/或“空间扭曲”处理变换所选择的渲染数据以生成“时间扭曲的”和/或“空间扭曲的”输出帧,然后向给头戴式显示器8直接提供“时间扭曲的”和/或“空间扭曲的”输出帧以供显示
图21示意性地示出了根据本发明实施方式的诸如图1中所例示的图形处理系统的操作。如图21所示,在本实施方式中,图形处理系统的图形处理单元(GPU)2首先渲染正向(前向)和部分未来帧(视图)并将它们写入存储器7(步骤210)。
在该实施方式中,如以上所讨论的,正向(第一)帧表示基于在开始渲染正向帧时在第一时间点感测到的第一头部方位(姿态)的来自第一视点和第一视图方向的场景的第一视图,并且部分未来帧表示在未来稍后时间点处的场景的部分视图。完整的未来帧也可以或者代替地被渲染。
然后,在第二时间点读取(第二)头部跟踪(方位(姿态))信息(步骤211)。如果第二时间点显著晚于第一时间点(并且因此较接近渲染未来帧所基于的另外时间点)(步骤212),则对于输出帧的其中渲染后的未来帧数据可用的区域,来自未来帧的渲染数据被选择并随后使用(步骤213A);否则,选择并使用来自正向帧的渲染数据(步骤213B)。
然后处理所选择的渲染数据,例如,通过图形处理单元(GPU)2执行“时间扭曲”和/或“空间扭曲”处理(步骤214),并且处理后的(“时间扭曲的”和/或“空间扭曲的”)输出图像被写入存储器7(步骤215),由显示处理器(控制器)4从存储器7读取输出图像(步骤216),该显示处理器(控制器)4将输出图像发送到显示面板8以供显示(步骤217)。所选择的渲染数据还可以或者代替地经历由图形处理单元(GPU)2进行的例如透镜失真校正变换和/或色差(畸变)校正变换。
如果要从当前正向和部分未来帧(视图)生成更多的处理后的(“时间扭曲的”和/或“空间扭曲的”)输出帧,则在另外时间点读取另外的头部跟踪(方位(姿态))信息并且使用该另外的头部跟踪(方位(姿态))信息来重复该处理(步骤218)。否则,图形处理单元(GPU)2渲染新的正向帧和部分未来帧(视图),并且使用新的正向帧和部分未来帧(视图)重复整个处理(步骤219)。由此提供处理后的(“时间扭曲的”和/或“空间扭曲的”)输出帧的序列以用于显示。
图22示意性地示出了根据本发明另一实施方式的如图1所例示的图形处理系统的操作。在该实施方式中,显示控制器4如图21中所示的实施方式中的图形处理单元(GPU)2处理帧。
如图22所示,在该实施方式中,如在图21的实施方式中那样,图形处理系统的图形处理单元(GPU)2首先渲染正向(前向)和部分未来帧(视图),并将它们写入存储器7(步骤220)。
然后,在第二时间点读取(第二)头部跟踪(方位(姿态))信息(步骤221)。如果第二时间点显著晚于渲染正向帧所基于的第一时间点(并因此更接近渲染未来帧所基于的另外时间点)(步骤222),则对于输出帧的其中渲染后的未来帧数据可用的区域,来自部分未来帧的渲染数据被选择并随后使用(步骤223A);否则,选择并使用来自正向帧的渲染数据(步骤223B)。
然后,显示控制器4处理所选择的渲染数据(步骤224),并显示控制器4将处理后的(“时间扭曲的”和/或“空间扭曲的”)输出图像直接发送到显示面板8以供显示(步骤227)。所选择的渲染数据还可以或者代替地经历由显示控制器4进行的例如透镜失真校正变换和/或色差(畸变)校正变换。
如果要从当前正向和部分未来帧(视图)生成更多的处理后的(“时间扭曲的”和/或“空间扭曲的”)输出帧,则在另外时间点读取另外的头部跟踪(方位(姿态))信息并且使用该另外的头部追踪(方位(姿态))信息重复该处理(步骤228)。否则,由图形处理单元(GPU)2渲染新的正向和部分未来帧(视图),并且使用新的正向和部分未来帧(视图)重复整个处理(步骤229)。由此提供处理(“时间扭曲的”和/或“空间扭曲的”)输出帧的序列用于显示。
现在将描述另一实施方式。图23示意性地例示了根据本发明的优选实施方式的当执行“时间扭曲”和/或“空间扭曲”处理时例如图1所例示的图形处理系统中的数据流和处理的相对定时。
在本实施方式中,如在图15和图20的实施方式中那样,图形处理单元(GPU)2生成表示场景的多个不同视图(版本)的一组渲染数据,并且该组渲染数据的所选择的渲染数据然后经受“时间扭曲”和/或“空间扭曲”处理。
因此,如图23所示,在本实施方式中,如在图15和图20的实施方式中那样,图形处理单元(GPU)2从存储器7取得适当的命令和数据(由在CPU 1上执行的针对GPU 2的驱动生成),其造成图形处理单元(GPU)2基于在图形处理单元(GPU)2开始渲染前向视图(应用帧)时在第一时间点处感测到的头部跟踪(方位(姿态))数据生成(渲染)前向视图(应用帧)(框231),并且将渲染后的前向视图(应用帧)存储在主存储器7中的帧缓冲器中(框232A)。渲染后的前向视图(应用帧)表示与在第一时间点处感测到的头部跟踪(方位(姿态))数据对应的(第一)头部方位(姿态)渲染的场景的(第一)前向视图。
在本实施方式中,如在图15的实施方式中那样,图形处理单元(GPU)2还生成(渲染)表示场景的左侧视图和右侧视图的场景的两个另外版本(在框231中)。这两个另外的版本被存储在主存储器7中的相应帧缓冲器中(框232B和框232C)。
此外,在本实施方式中,如在图20的实施方式中那样,图形处理单元(GPU)2还生成(渲染)表示另外时间点的场景的视图的场景的未来视图,该另外时间点在前向视图(应用帧)(以及左侧视图和右侧视图)表示场景的视图所在的第一时间点之后(在框231中)。未来视图被存储在主存储器7中的帧缓冲器中(框232D)。
然后,在本实施方式中,如在图15和图20的实施方式中那样,在图像被实际显示在显示器8上之前,在第二时间点感测另外的(第二)头部跟踪(方位(姿态))数据。然后,图形处理单元(GPU)2使用另外感测的头部跟踪(方位(姿态))数据以及感测其的第二时间点来从渲染后的前向视图、左侧视图、右侧视图和未来视图选择将被用于显示的适当的渲染数据。
例如,如果另外感测到的头部跟踪(方位(姿态))数据指示用户已经将他们的头部显著向右移动(旋转和/或平移)(例如超过特定角度和/或距离)(与在图形处理单元(GPU)2开始渲染前向视图(应用帧)时在第一时间点感测到的其头部方位(姿态)相比)(在框231中),则可以选择所渲染的右侧视图数据;如果感测到的头部跟踪(方位(姿态))数据指示用户已经将他们的头部显著向左移动(旋转和/或平移)(例如超过特定角度和/或距离)(与在图形处理单元(GPU)2开始渲染前向视图(应用帧)时在第一时间点感测到的其头部方位(姿态)相比)(在框231中),则可以选择所渲染的左侧视图数据;如果感测到另外的头部跟踪(方位(姿态))数据的第二时间点较接近渲染未来视图所基于的时间点而不是渲染前向视图所基于的第一时间点,则渲染后的未来视图数据可以被选择;并且否则,可以选择渲染后的前向视图数据。
然后,在本实施方式中,所选择的渲染数据由图形处理单元(GPU)2使用另外的(第二)感测头部追踪(方位(姿态))数据通过“时间扭曲”和/或“空间扭曲”处理变换以生成第一“时间扭曲的”和/或“空间扭曲的”输出帧(框233A)。
第一“时间扭曲的”和/或“空间扭曲的”输出帧被存储在主存储器7中的(第一)输出帧缓冲器中(框234A),然后显示控制器4读取第一帧缓冲器中存储的第一“时间扭曲的”和/或“空间扭曲的”输出帧(框235A),并提供其以在头戴式显示器8的显示面板上显示(框236A)。
另外,在图形处理单元(GPU)2完成变换所选择的渲染数据以生成第一“时间扭曲的”和/或“空间扭曲的”输出帧时(在框233A中),它将可用于基于新的(第二)头部跟踪(方位(姿态))数据执行“时间扭曲”和/或“空间扭曲”处理的另一实例。因此,新的头部跟踪(方位(姿态))数据被感测,并且更新的头部跟踪(方位(姿态))传感器数据连同感测到其的时间点一起被图形处理单元(GPU)2使用,以再次选择并变换渲染数据以生成用于显示的第二“时间扭曲的”和/或“空间扭曲的”输出帧(框233B),其被存储在主存储器7中的(第二)输出帧缓冲器中(框234B)。
显示控制器4然后读取存储在(第二)帧缓冲器中的第二“时间扭曲的”和/或“空间扭曲的”输出帧(框235B),并提供其用于在头戴式显示器8的显示面板上显示(框236B)。
在本实施方式中,然后重复上述步骤以生成并在显示器8的显示面板上显示另外两个“时间扭曲的”和/或“空间扭曲的”输出帧(框233C、框234C、框235C和框236C;以及框233D、框234D框235D和框236D)。然后可以重复整个处理一次或更多次以生成一个或更多个新的正向、左、右和未来(以及上、下、过去)视图,并且选择并渲染数据使所选择的渲染数据经历四个“时间扭曲”和/或“空间扭曲”处理,以在头戴式显示器8上显示适当的“时间扭曲的”和/或“空间扭曲的”输出帧序列。
在另一实施方式中,显示控制器4选择渲染数据和/或通过“时间扭曲”和/或“空间扭曲”处理来变换所选择的渲染数据以生成“时间扭曲的”和/或“空间扭曲的”输出帧,然后向头戴式显示器8直接提供“时间扭曲的”和/或“空间扭曲的”输出帧以供显示。
图24示意性地示出了根据本发明实施方式的诸如图1中所例示的图形处理系统的操作。如图24所示,在本实施方式中,图形处理系统的图形处理单元(GPU)2首先渲染正向(前向)、左、右和部分未来帧(视图)并将它们写入存储器7(步骤240)。
在该实施方式中,如以上所讨论的,正向(第一)帧表示基于在开始渲染正向帧时在第一时间点感测到的第一头部方位(姿态)的来自第一视点和第一视图方向的场景的第一视图。左帧表示基于从感测到的第一头部方位(姿态)开始的假定向左转动(旋转和/或平移)头部的场景的第二视图,右框表示基于从感测到的第一头部方位(姿态)开始的假定向右转动(旋转和/或平移)头部的场景的第三视图,并且未来视图表示在稍后的时间点处的场景的视图。
然后,(第二)头部跟踪(方位(姿态))信息在第二时间点被读取(步骤241),并且用于确定相对于在开始渲染正向(第一)帧时的第一时间点感测到的第一头部方位(姿态),用户的头部实际定位的位置。如果与所感测到的第一头部方位(姿态)相比用户的头部显著地定位于右侧(例如超过特定角度和/或距离)(步骤242A),则来自右帧的渲染数据被选择并随后被使用(步骤243A);如果与所感测到的第一头部方位(姿态)相比,用户的头部显著地定位在左侧(例如,超过特定角度和/或距离)(步骤242B),则来自左帧的渲染数据被选择并随后被使用(步骤243B);如果第二时间点显著晚于第一时间点(步骤242C),则来自未来帧的渲染数据被选择并随后被使用(步骤243C);否则,选择并使用来自正向帧的渲染数据(步骤243D)。
然后由图形处理单元(GPU)2处理选择的渲染数据,例如通过执行“时间扭曲”和/或“空间扭曲”处理(步骤244),并且处理后的输出(“时间扭曲的”和/或“空间扭曲的”)图像被发送到显示面板8以供显示(步骤247)。所选择的渲染数据还可以或者代替地经历由图形处理单元(GPU)2进行的例如透镜失真校正变换和/或色差(畸变)校正变换。
如果要从当前正向、左、右和将来帧(视图)生成更多的处理后的(“时间扭曲的”和/或“空间扭曲的”)输出帧,则读取另外的头部跟踪(方位(姿态))信息并且使用该另外的头部跟踪(方位(姿态))信息重复该处理(步骤248)。否则,由图形处理单元(GPU)2渲染新的正向、左、右和未来帧(视图),并且使用新的正向、左、右和未来帧(视图)重复整个处理(步骤249)。由此提供处理后(“时间扭曲的”和/或“空间扭曲的”)输出帧序列用于显示。
将理解的是,虽然上面的实施方式已经特别参照渲染包括另外的左侧视图和右侧视图(版本)在内的一组视图来描述,但是除了(表示)前向视图或正向视图(的帧),另外视图(版本)也可以或者代替地被渲染。例如,可以渲染多个左/右侧视图(版本),其中各视图(版本)基于将头部向左/右转动(旋转)和/或移动(平移)不同的角度和/或距离。类似地,也可以或者代替地渲染基于其他头部运动(旋转和/或平移)的视图(版本),诸如向上和/或向下。
类似地,虽然上面的实施方式已经特别参考渲染包括未来视图(版本)在内的一组视图来描述,但是除了(表示)前向视图或正向视图(的帧),其他另外视图(版本)也可以或代替地被渲染。例如,可以渲染多个未来视图(版本),各未来视图(版本)基于不同的未来时间点。类似地,过去视图(版本)基于过去的时间点,也可以或代替地被渲染。
此外,还可以基于头部运动(旋转和/或平移)和未来(或过去)时间点来渲染另外视图。在优选实施方式中,基于例如以下各项选择所渲染的另外视图(版本)以涵盖另外视图(版本)的适当范围:预测或假定头戴式显示器的用户相对于渲染(表示)前向视图(的帧)所基于的感测到的(第一)头部方位(姿态)可能进行的头部运动(旋转和/或平移)、预测或假定的对象运动、和/或前向视图的输出(“时间扭曲的”和/或“空间扭曲的”)版本表示场景的视图的时间点。
此外,将认识到,虽然参照渲染单组视图(包括例如单个前向视图、单个左侧视图、单个右侧视图和单个未来视图)描述了上述实施方式,但是可以存在多组视图,例如针对每只眼睛的一组(多个)视图。因此,可能有存在例如为左眼渲染的第一组视图(包括例如单个前向视图、单个左侧视图、单个右侧视图和单个未来视图);和为右眼渲染的另一组视图(包括例如单个前向视图、单个左侧视图、单个右侧视图和单个未来视图)等。然后,相应组的视图可以分别经受“时间扭曲”和/或“空间扭曲”处理(如以上所描述),并且因此使用头戴式显示器8可以适当地向每只眼睛显示“时间扭曲的”和/或“空间扭曲的”输出帧的相应序列,以当观看图像时提供三维效果。
此外,在上述实施方式中,单组视图(包括例如前向视图、左侧视图、右侧视图和未来视图)经历四个“时间扭曲”和/或“空间扭曲”处理。因此,以比图形处理单元(GPU)2渲染帧的速率(例如每秒30帧)快四倍的速率(诸如每秒120帧)执行“时间扭曲”和/或“空间扭曲”处理。然而,将理解的是,可以为每组渲染后的视图执行任何期望数量的“时间扭曲”和/或“空间扭曲”处理,诸如一个或两个。
从上面可以看出,本发明在其优选实施方式中至少提供了改进的图形处理系统,该系统为虚拟现实(VR)和/或增强现实(AR)(头戴式)显示系统提供“时间扭曲的”)图像以用于显示。这至少在本发明的优选实施方式中通过在生成第一渲染帧的输出版本之前渲染第一帧的一个或更多个另外版本来实现,其中第一帧的另外版本中的各版本表示第一帧的场景的不同视图。
Claims (19)
1.一种操作图形处理系统的方法,该图形处理系统渲染帧,各帧表示一个或更多个对象的场景的视图,并且通过基于接收到的视图方位数据和/或对象运动变换渲染后的帧来从渲染后的帧生成用于显示的输出帧,该方法包括以下步骤:
基于第一视图方位数据渲染第一帧,该第一帧表示在第一时间点、从第一视点和在第一视图方向上的场景的第一视图;以及在使用来自渲染后的第一帧的渲染数据生成所述用于显示的输出帧之前:
渲染所述第一帧的一个或更多个另外版本,各另外版本表示从另外视点和/或在另外视图方向上的所述场景的另外视图;接着
基于第二视图方位数据选择渲染数据,所述渲染数据要被用于从所述渲染后的第一帧和所述第一帧的一个或更多个渲染后的另外版本生成所述用于显示的输出帧;以及
通过变换基于所述第二视图方位数据选择的所述渲染数据,使用所选择的渲染数据生成所述用于显示的输出帧。
2.根据权利要求1所述的方法,所述方法还包括:
使用第一输入数据来渲染所述第一帧;以及
使用所述第一输入数据的至少一些来渲染所述第一帧的所述一个或更多个另外版本中的至少一个版本。
3.根据权利要求1或2所述的方法,所述方法还包括:
确定所述场景的所述第一视图中的对象是否接近所述第一视点;以及
仅当确定所述场景的所述第一视图中的对象接近所述第一视点时渲染所述第一帧的所述一个或更多个另外版本中的至少一个版本。
4.根据权利要求1或2所述的方法,所述方法还包括:
确定所述场景的所述第一视图中的对象是否正在运动;以及
仅当确定所述场景的所述第一视图中的对象正在运动时,基于相应的另外时间点渲染所述第一帧的所述一个或更多个另外版本中的至少一个版本。
5.根据权利要求1或2所述的方法,所述方法还包括:
确定如果执行了渲染所述第一帧的所述一个或更多个另外版本中的至少一个版本是否将不超过所述图形处理系统的处理极限;以及
仅当确定不超过处理极限时渲染所述第一帧的所述一个或更多个另外版本中的所述至少一个版本。
6.根据权利要求1或2所述的方法,所述方法还包括:
基于以下各项中的至少一项针对所述一个或更多个另外版本中的至少一个版本选择另外视点和/或另外视图方向:
(i)被确定为接近所述第一视点和/或正在运动的对象的一个或更多个属性;
(ii)接收到的视图方位数据;
(iii)由应用提供的关于所述第一帧被渲染的信息;以及
(iv)所述图形处理系统的处理能力。
7.根据权利要求1或2所述的方法,所述方法还包括:
以比所述第一帧低的质量渲染和/或存储所述第一帧的所述一个或更多个另外版本中的至少一个版本;和/或
比所述第一帧较不频繁地更新所述第一帧的所述一个或更多个另外版本中的至少一个版本。
8.根据权利要求1或2所述的方法,所述方法还包括:
对于所述一个或更多个另外版本中的至少一个版本:
确定场景的区域,该区域包含:
接近第一视点和/或正在运动的对象;以及
所述场景的一部分,该部分在由所述第一帧表示的所述场景的所述第一视图中被该对象遮挡但在由相应的另外版本表示的所述场景的视图中不被该对象遮挡;以及
基于相应确定的所述的场景的区域,仅针对所述第一帧的一些而非全部渲染相应的另外版本。
9.一种生成用于显示系统的显示的输出帧的方法,所述方法包括以下步骤:
接收由该显示系统感测到的视图方位数据;以及
基于接收到的第二视图方位数据从以下各项选择用于生成所述输出帧的渲染数据:
(i)基于接收到的第一视图方位数据渲染的第一帧的渲染数据;和
(ii)针对所述第一帧的一个或更多个另外版本的渲染数据,各个另外版本是基于另外视图方位渲染的并且是在使用来自渲染后的第一帧的渲染数据生成用于显示的输出帧之前渲染的;以及
通过变换基于所述接收到的第二视图方位数据选择的所述渲染数据,使用所选择的渲染数据生成所述用于显示的输出帧。
10.一种图形处理系统,该图形处理系统被配置成:
由处理电路帧来渲染帧,各帧表示一个或更多个对象的场景的视图,并且通过基于接收到的视图方位数据和/或对象运动对渲染后的帧进行变换来由处理电路从渲染后的帧生成用于显示的输出帧;
其中,所述图形处理系统还被配置成:
由处理电路基于第一视图方位数据渲染第一帧,该第一帧表示在第一时间点、从第一视点和在第一视图方向上的场景的第一视图:
在使用来自渲染后的第一帧的渲染数据生成所述用于显示的输出帧之前:由处理电路渲染所述第一帧的一个或更多个另外版本,各另外版本表示从另外视点和/或在另外视图方向上的所述场景的另外视图;接着
基于第二视图方位数据选择渲染数据,所述渲染数据要被用于从所述渲染后的第一帧和所述第一帧的一个或更多个渲染后的另外版本生成用于显示的输出帧;以及
通过变换基于所述第二视图方位数据选择的所述渲染数据,由处理电路使用所选择的渲染数据生成所述用于显示的输出帧。
11.根据权利要求10所述的系统,其中,所述图形处理系统还被配置成:
使用第一输入数据来渲染所述第一帧;以及
使用第一输入数据的至少一些来渲染所述第一帧的所述一个或更多个另外版本中的至少一个版本。
12.根据权利要求10或11所述的系统,其中,所述图形处理系统还被配置成:
确定所述场景的所述第一视图中的对象是否接近所述第一视点;和
仅当确定所述场景的所述第一视图中的对象接近所述第一视点时,渲染所述第一帧的所述一个或更多个另外版本中的至少一个版本。
13.根据权利要求10或11所述的系统,其中,所述图形处理系统还被配置成:
确定所述场景的所述第一视图中的对象是否正在运动;和
仅当确定所述场景的所述第一视图中的对象正在运动时,基于相应的另外时间点渲染所述第一帧的所述一个或更多个另外版本中的至少一个版本。
14.根据权利要求10或11所述的系统,其中,所述图形处理系统还被配置成:
确定如果执行了渲染所述第一帧的所述一个或更多个另外版本中的至少一个版本是否将不超过所述图形处理系统的处理极限;和
仅当确定不超过处理极限时渲染所述第一帧的所述一个或更多个另外版本中的至少一个版本。
15.根据权利要求10或11所述的系统,其中,所述图形处理系统还被配置成基于以下各项中的至少一项来选择针对所述一个或更多个另外版本中的至少一个版本的另外视点和/或另外视图方向:
(i)被确定为接近所述第一视点和/或正在运动的对象的一个或更多个属性;
(ii)接收到的视图方位数据;
(iii)由应用提供的关于所述第一帧被渲染的信息;以及
(iv)所述图形处理系统的处理能力。
16.根据权利要求10或11所述的系统,其中,所述图形处理系统还被配置成:
以比所述第一帧低的质量渲染和/或存储所述第一帧的所述一个或更多个另外版本中的至少一个版本;和/或
比所述第一帧较不频繁地更新所述第一帧的所述一个或更多个另外版本中的至少一个版本。
17.根据权利要求10或11所述的系统,其中,所述图形处理系统还被配置成:
对于所述第一帧的所述一个或更多个另外版本中的至少一个版本,确定所述场景的包含以下各项的区域:
接近第一视点和/或正在运动的对象;以及
所述场景的一部分,该部分在由所述第一帧表示的所述场景的所述第一视图中被该对象遮挡但在由相应的另外版本表示的所述场景的视图中不被该对象遮挡;以及
基于相应确定的所述场景的区域,仅针对所述第一帧的一些而非全部渲染相应的另外版本。
18.一种显示系统,该显示系统包括:
视图方位感测电路,该视图方位感测电路能够操作以感测所述显示系统的用户的头部或显示方位并提供指示所感测的头部或显示方位的视图方位数据;和
处理电路,该处理电路被配置成基于由所述视图方位感测电路提供的第二视图方位数据来从以下各项选择用于生成输出帧的渲染数据:
(i)基于由所述视图方位感测电路提供的第一视图方位数据渲染的第一帧的渲染数据;以及
(ii)针对所述第一帧的一个或更多个另外版本的渲染数据,各个另外版本是基于另外视图方位渲染的并且是在使用来自渲染后的第一帧的渲染数据生成用于显示的输出帧之前渲染的;以及
通过变换基于所述第二视图方位数据选择的所述渲染数据,使用所选择的渲染数据生成所述用于显示的输出帧。
19.一种计算机可读存储介质,所述计算机可读存储介质存储包括计算机软件代码的计算机程序,当程序在数据处理装置上运行时用于执行权利要求1或2所述的方法。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB1709752.8 | 2017-06-19 | ||
GBGB1709752.8A GB201709752D0 (en) | 2017-06-19 | 2017-06-19 | Graphics processing systems |
GB1716377.5A GB2563688B (en) | 2017-06-19 | 2017-10-06 | Graphics processing systems |
GB1716377.5 | 2017-10-06 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109144240A CN109144240A (zh) | 2019-01-04 |
CN109144240B true CN109144240B (zh) | 2024-04-12 |
Family
ID=59462301
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810628925.9A Active CN109144240B (zh) | 2017-06-19 | 2018-06-19 | 图形处理系统和操作图形处理系统的方法、显示系统 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10733789B2 (zh) |
KR (1) | KR102564801B1 (zh) |
CN (1) | CN109144240B (zh) |
GB (2) | GB201709752D0 (zh) |
Families Citing this family (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10838207B2 (en) | 2015-03-05 | 2020-11-17 | Magic Leap, Inc. | Systems and methods for augmented reality |
CN112764536A (zh) | 2015-03-05 | 2021-05-07 | 奇跃公司 | 用于增强现实的系统和方法 |
CN108604383A (zh) | 2015-12-04 | 2018-09-28 | 奇跃公司 | 重新定位系统和方法 |
KR20190034321A (ko) | 2016-08-02 | 2019-04-01 | 매직 립, 인코포레이티드 | 고정-거리 가상 및 증강 현실 시스템들 및 방법들 |
US10812936B2 (en) | 2017-01-23 | 2020-10-20 | Magic Leap, Inc. | Localization determination for mixed reality systems |
KR102359978B1 (ko) | 2017-03-17 | 2022-02-07 | 매직 립, 인코포레이티드 | 다중-소스 가상 콘텐츠 합성을 갖는 혼합 현실 시스템 및 이를 사용하여 가상 콘텐츠를 생성하는 방법 |
KR102594063B1 (ko) | 2017-03-17 | 2023-10-24 | 매직 립, 인코포레이티드 | 컬러 가상 콘텐츠 워핑을 갖는 혼합 현실 시스템 및 이를 사용하여 가상 콘텐츠를 생성하는 방법 |
AU2018236457B2 (en) | 2017-03-17 | 2021-04-29 | Magic Leap, Inc. | Mixed reality system with virtual content warping and method of generating virtual content using same |
DE102017208936A1 (de) * | 2017-05-29 | 2018-11-29 | Audi Ag | Verfahren zum Betreiben eines Virtual-Reality-Systems und Virtual-Reality-System |
IL272651B (en) | 2017-09-01 | 2022-08-01 | Magic Leap Inc | Creating a new frame using processed and unprocessed content from a previous perspective |
EP3827299A4 (en) | 2018-07-23 | 2021-10-27 | Magic Leap, Inc. | SYSTEM OF MIXED REALITY WITH VIRTUAL CONTENT DISTORTION AND PROCESS FOR GENERATING VIRTUAL CONTENT WITH IT |
US10943115B2 (en) * | 2018-07-24 | 2021-03-09 | Apical Ltd. | Processing image data to perform object detection |
US10713753B2 (en) * | 2018-10-12 | 2020-07-14 | Apical Limited | Data processing systems |
KR20200063614A (ko) * | 2018-11-28 | 2020-06-05 | 주식회사 라온텍 | Ar/vr/mr 시스템용 디스플레이 유닛 |
SE543121C2 (en) * | 2019-02-04 | 2020-10-13 | Tobii Ab | Method and system for determining a current gaze direction |
US10852815B2 (en) | 2019-04-30 | 2020-12-01 | Valve Corporation | Display system with dynamic light output adjustment for maintaining constant brightness |
US10812771B1 (en) * | 2019-06-12 | 2020-10-20 | At&T Intellectual Property I, L.P. | Methods, systems, and devices for adjusting image content for streaming panoramic video content |
JP7217206B2 (ja) | 2019-07-10 | 2023-02-02 | 株式会社ソニー・インタラクティブエンタテインメント | 画像表示装置、画像表示システムおよび画像表示方法 |
JP7377014B2 (ja) * | 2019-07-10 | 2023-11-09 | 株式会社ソニー・インタラクティブエンタテインメント | 画像表示装置、画像表示システムおよび画像表示方法 |
FR3098629B1 (fr) * | 2019-07-12 | 2021-08-13 | Aledia | Système de visualisation d’images et procédé de commande |
US11210815B2 (en) * | 2019-08-09 | 2021-12-28 | Intel Corporation | Point cloud playback mechanism |
CN110460831B (zh) | 2019-08-22 | 2021-12-03 | 京东方科技集团股份有限公司 | 显示方法、装置、设备及计算机可读存储介质 |
US11468627B1 (en) * | 2019-11-08 | 2022-10-11 | Apple Inc. | View dependent content updated rates |
US20210192681A1 (en) * | 2019-12-18 | 2021-06-24 | Ati Technologies Ulc | Frame reprojection for virtual reality and augmented reality |
US11195341B1 (en) * | 2020-06-29 | 2021-12-07 | Snap Inc. | Augmented reality eyewear with 3D costumes |
US11562715B2 (en) | 2020-08-28 | 2023-01-24 | Arm Limited | Graphics processing systems |
US20220413433A1 (en) * | 2021-06-28 | 2022-12-29 | Meta Platforms Technologies, Llc | Holographic Calling for Artificial Reality |
SE545378C2 (en) * | 2021-12-30 | 2023-07-25 | Tobii Ab | Method and system for determining a current gaze direction |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4947316A (en) * | 1983-12-29 | 1990-08-07 | International Business Machines Corporation | Internal bus architecture employing a simplified rapidly executable instruction set |
CN103874991A (zh) * | 2011-08-11 | 2014-06-18 | Otoy公司 | 众包视频渲染系统 |
CN105323498A (zh) * | 2014-08-01 | 2016-02-10 | 全视科技有限公司 | 不含运动伪影的高动态范围hdr图像 |
CN105809728A (zh) * | 2015-01-19 | 2016-07-27 | 想象技术有限公司 | 在图形处理单元中渲染场景的视图 |
CN106056661A (zh) * | 2016-05-31 | 2016-10-26 | 钱进 | 基于Direct3D 11的三维图形渲染引擎 |
CN106502427A (zh) * | 2016-12-15 | 2017-03-15 | 北京国承万通信息科技有限公司 | 虚拟现实系统及其场景呈现方法 |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8457387B2 (en) | 2009-03-13 | 2013-06-04 | Disney Enterprises, Inc. | System and method for interactive environments presented by video playback devices |
US9063330B2 (en) * | 2013-05-30 | 2015-06-23 | Oculus Vr, Llc | Perception based predictive tracking for head mounted displays |
US9256987B2 (en) * | 2013-06-24 | 2016-02-09 | Microsoft Technology Licensing, Llc | Tracking head movement when wearing mobile device |
US10275935B2 (en) * | 2014-10-31 | 2019-04-30 | Fyusion, Inc. | System and method for infinite synthetic image generation from multi-directional structured image array |
GB2534847A (en) * | 2015-01-28 | 2016-08-10 | Sony Computer Entertainment Europe Ltd | Display |
GB2536025B (en) | 2015-03-05 | 2021-03-03 | Nokia Technologies Oy | Video streaming method |
US10089790B2 (en) * | 2015-06-30 | 2018-10-02 | Ariadne's Thread (Usa), Inc. | Predictive virtual reality display system with post rendering correction |
EP3264372A1 (en) * | 2016-06-30 | 2018-01-03 | Alcatel Lucent | Image processing device and method |
US20190261000A1 (en) * | 2017-04-01 | 2019-08-22 | Intel Corporation | Video motion processing including static determination, occlusion detection, frame rate conversion, and adjusting compression ratio |
US10152822B2 (en) * | 2017-04-01 | 2018-12-11 | Intel Corporation | Motion biased foveated renderer |
KR102374404B1 (ko) * | 2017-07-25 | 2022-03-15 | 삼성전자주식회사 | 콘텐트를 제공하기 위한 디바이스 및 방법 |
EP3724858A4 (en) * | 2017-12-14 | 2021-01-13 | Samsung Electronics Co., Ltd. | PROCEDURE AND DEVICE FOR MANAGING IMMERSIVE DATA |
-
2017
- 2017-06-19 GB GBGB1709752.8A patent/GB201709752D0/en not_active Ceased
- 2017-10-06 GB GB1716377.5A patent/GB2563688B/en active Active
-
2018
- 2018-06-19 CN CN201810628925.9A patent/CN109144240B/zh active Active
- 2018-06-19 US US16/012,012 patent/US10733789B2/en active Active
- 2018-06-19 KR KR1020180069954A patent/KR102564801B1/ko active IP Right Grant
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4947316A (en) * | 1983-12-29 | 1990-08-07 | International Business Machines Corporation | Internal bus architecture employing a simplified rapidly executable instruction set |
CN103874991A (zh) * | 2011-08-11 | 2014-06-18 | Otoy公司 | 众包视频渲染系统 |
CN105323498A (zh) * | 2014-08-01 | 2016-02-10 | 全视科技有限公司 | 不含运动伪影的高动态范围hdr图像 |
CN105809728A (zh) * | 2015-01-19 | 2016-07-27 | 想象技术有限公司 | 在图形处理单元中渲染场景的视图 |
CN106056661A (zh) * | 2016-05-31 | 2016-10-26 | 钱进 | 基于Direct3D 11的三维图形渲染引擎 |
CN106502427A (zh) * | 2016-12-15 | 2017-03-15 | 北京国承万通信息科技有限公司 | 虚拟现实系统及其场景呈现方法 |
Also Published As
Publication number | Publication date |
---|---|
KR102564801B1 (ko) | 2023-08-08 |
GB201709752D0 (en) | 2017-08-02 |
KR20180138181A (ko) | 2018-12-28 |
CN109144240A (zh) | 2019-01-04 |
US10733789B2 (en) | 2020-08-04 |
GB2563688B (en) | 2020-09-23 |
GB2563688A (en) | 2018-12-26 |
GB201716377D0 (en) | 2017-11-22 |
US20180365882A1 (en) | 2018-12-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109144240B (zh) | 图形处理系统和操作图形处理系统的方法、显示系统 | |
US10739599B2 (en) | Predictive, foveated virtual reality system | |
US11270492B2 (en) | Graphics processing systems | |
JP7158404B2 (ja) | 後期再投影パワーを最適化するためのレイヤサブ領域に対する再投影処理の選択的適用 | |
JP7042286B2 (ja) | 滑らかに変化するフォービエイテッドレンダリング | |
EP1642625B1 (en) | Video game device and image processing program | |
US20180061121A1 (en) | Continuous time warp and binocular time warp for virtual and augmented reality display systems and methods | |
US7602395B1 (en) | Programming multiple chips from a command buffer for stereo image generation | |
EP2105905A2 (en) | Image generation apparatus | |
CN108536405B (zh) | 用于数据处理系统的显示控制器及其操作方法 | |
WO2019159617A1 (ja) | 画像処理装置、画像処理方法およびプログラム | |
US10890966B2 (en) | Graphics processing systems | |
JP4982862B2 (ja) | プログラム、情報記憶媒体及び画像生成システム | |
CN109300183B (zh) | 用于提供输出面的数据处理系统和方法 | |
CN115244492A (zh) | 物理对象对增强现实中的虚拟对象的遮挡 | |
CN112912823A (zh) | 生成和修改增强现实或虚拟现实场景中对象的表示 | |
US20220230327A1 (en) | Graphics processing systems | |
JP2008287696A (ja) | 画像処理方法と装置 | |
US10692420B2 (en) | Data processing systems | |
JP4305903B2 (ja) | 画像生成システム、プログラム及び情報記憶媒体 | |
WO2021040010A1 (ja) | 情報処理装置、制御方法 | |
JPH07271342A (ja) | 3次元スプライト描画装置 | |
US11187914B2 (en) | Mirror-based scene cameras | |
US5986674A (en) | Three-dimensional game apparatus and information storage medium | |
US11062492B2 (en) | Method of image production |
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 |