首页 / 专利库 / 图形技术 / 压缩失真 / 使用两个渲染计算装置从计算机图形渲染图像

使用两个渲染计算装置从计算机图形渲染图像

阅读:847发布:2020-05-08

专利汇可以提供使用两个渲染计算装置从计算机图形渲染图像专利检索,专利查询,专利分析的服务。并且一种示例系统包含第一计算装置和第二计算装置,所述第一计算装置包括在 电路 系统中实施的第一 图形处理单元 GPU,所述第二计算装置包括在电路系统中实施的第二GPU。所述第一GPU被配置成执行图像 渲染 过程的第一部分以生成中间图形数据并将所述中间图形数据发送到所述第二计算装置。所述第二GPU被配置成执行所述图像渲染过程的第二部分以从所述中间图形数据渲染图像。所述第一计算装置可以是视频游戏控制台,并且所述第二计算装置可以是 虚拟现实 VR头戴式装置,所述VR头戴式装置扭转经过渲染的图像以产生立体图像对。,下面是使用两个渲染计算装置从计算机图形渲染图像专利的具体信息内容。

1.一种生成计算机图形的方法,所述方法包括:
由第一计算装置的第一图形处理单元GPU执行图像渲染过程的第一部分以生成中间图形数据;
由所述第一计算装置向第二计算装置发送所述中间图形数据;以及
由所述第二计算装置的第二GPU执行所述图像渲染过程的第二部分以从所述中间图形数据渲染图像。
2.根据权利要求1所述的方法,
其中执行所述图像渲染过程的所述第一部分包括由所述第一GPU执行图形流线的至少几何步骤和光栅化步骤,并且
其中执行所述图像渲染过程的所述第二部分包括由所述第二GPU执行最终渲染通道,其中所述最终渲染通道包含执行时间扭转和补偿要用于显示经过渲染的图像的显示器的光学器件失真。
3.根据权利要求2所述的方法,其中执行所述最终着色通道包括将所述图像的经过着色的图形数据存储到所述第二计算装置的缓冲器
4.根据权利要求1所述的方法,其中发送所述中间图形数据包括:
将所述中间图形数据存储到所述第一计算装置的图形缓冲器,所述中间图形数据包括经过着色的颜色分量和深度分量;以及
将所述中间图形数据从所述图形缓冲器发送到所述第二计算装置。
5.根据权利要求1所述的方法,其中发送所述中间图形数据进一步包括:
压缩所述图形缓冲器的所述中间图形数据;以及
将经过压缩的中间图形数据发送到所述第二计算装置。
6.根据权利要求1所述的方法,其中发送所述中间图形数据包括发送定义纹理信息和深度信息的图形数据,并且其中执行所述图像渲染过程的所述第二部分以渲染所述图像包括:
使用所述深度信息扭转所述纹理信息以产生立体图像对的第一图像;以及由所述第二GPU使用所述深度信息扭转所述纹理信息以产生所述立体图像对的第二图像。
7.根据权利要求6所述的方法,其中所述第二计算装置包括虚拟现实VR头戴式装置,所述方法进一步包括:
由所述VR头戴式装置在所述VR头戴式装置的第一显示器上显示所述第一图像;以及由所述VR头戴式装置在所述VR头戴式装置的第二显示器上显示所述第二图像。
8.根据权利要求1所述的方法,其中执行所述图像渲染过程的所述第一部分包括执行延迟的基于图渲染或注视点渲染中的至少一个,其中延迟的基于图块渲染包括将所述图像划分成多个图块并将所述图块中的每个图块分配给所述第一GPU的相应GPU处理器,并且其中注视点渲染包括相比所述图像的外围中的像素,更密集地对所述图像的中心中的像素进行采样
9.根据权利要求1所述的方法,其中执行所述图像渲染过程的所述第一部分包括:
由所述第一GPU确定所述图像渲染过程被执行的图形对象的深度值;
基于所述深度值将所述图形对象中的每个图形对象分配给多个深度层中的相应深度层,其中所述深度层中的每个深度层具有相关联的深度值;以及
为所述深度层中的每个深度层生成单独的中间图形数据集。
10.一种用于生成计算机图形的系统,所述系统包括:
第一计算装置,所述第一计算装置包括在电路系统中实施的第一图形处理单元GPU;以及
第二计算装置,所述第二计算装置包括在电路系统中实施的第二GPU,
其中所述第一GPU被配置成:
执行图像渲染过程的第一部分以生成中间图形数据;并且
将所述中间图形数据发送到所述第二计算装置,并且
其中所述第二GPU被配置成执行所述图像渲染过程的第二部分以从所述中间图形数据渲染图像。
11.根据权利要求10所述的系统,
其中为了执行所述图像渲染过程的所述第一部分,所述第一GPU被配置成执行图形流水线的至少几何步骤和光栅化步骤,并且
其中为了执行所述图像渲染过程的所述第二部分,所述第二GPU被配置成执行最终渲染通道,其中所述最终渲染通道包含时间扭转和补偿用于显示经过渲染的图像的显示器的光学器件失真。
12.根据权利要求11所述的系统,其中所述第二计算装置进一步包括存储帧缓冲器的存储器,并且其中为了执行所述最终渲染通道,所述第二GPU被配置成将所述图像的经过着色的图形数据存储到所述帧缓冲器。
13.根据权利要求10所述的系统,其中所述第一计算装置包括存储图形缓冲器的存储器,其中为了发送所述中间图形数据,所述第一GPU被配置成将所述中间图形数据存储到所述第一计算装置的所述图形缓冲器,所述中间图形数据包括经过着色的颜色分量和深度分量,并且其中所述第一计算装置被配置成将所述中间图形数据从所述图形缓冲器发送到所述第二计算装置。
14.根据权利要求10所述的系统,其中为了发送所述中间图形数据,所述第一计算装置被配置成:
压缩所述图形缓冲器的所述中间图形数据;并且
将经过压缩的中间图形数据发送到所述第二计算装置。
15.根据权利要求10所述的系统,
其中为了发送所述中间图形数据,所述第二计算装置被配置成发送定义纹理信息和深度信息的图形数据,并且
其中为了执行所述图像渲染过程的所述第二部分以渲染所述图像,所述第二GPU被配置成:
使用所述深度信息扭转所述纹理信息以产生立体图像对的第一图像,并且使用所述深度信息扭转所述纹理信息以产生所述立体图像对的第二图像。
16.根据权利要求15所述的系统,其中所述第二计算装置包括虚拟现实VR头戴式装置,所述VR头戴式装置包括第一显示器和第二显示器,其中所述VR头戴式装置被进一步配置成:
在所述第一显示器上显示所述第一图像;并且
在所述第二显示器上显示所述第二图像。
17.根据权利要求10所述的系统,其中所述第一GPU被配置成执行延迟的基于图块渲染或注视点渲染中的至少一个,其中延迟的基于图块渲染包括将所述图像划分成多个图块并将所述图块中的每个图块分配给所述第一GPU的相应GPU处理器,并且其中注视点渲染包括相比所述图像的外围中的像素,更密集地对所述图像的中心中的像素进行采样。
18.根据权利要求10所述的系统,其中为了执行所述图像渲染过程的所述第一部分,所述第一GPU被配置成:
确定所述图像渲染过程被执行的图形对象的深度值;
基于所述深度值将所述图形对象中的每个图形对象分配给多个深度层中的相应深度层,其中所述深度层中的每个深度层具有相关联的深度值;并且
为所述深度层中的每个深度层生成单独的中间图形数据集。
19.一种用于生成计算机图形的系统,所述系统包括:
第一计算装置;以及
第二计算装置,
其中所述第一计算装置包括:
用于执行图形处理单元GPU流水线的图像渲染过程的第一部分以生成中间图形数据的装置;以及
用于向所述第二计算装置发送所述中间图形数据的装置,并且
其中所述第二计算装置包括用于执行所述GPU流水线的所述图像渲染过程的第二部分以从所述中间图形数据渲染图像的装置。
20.根据权利要求19所述的系统,其中用于发送所述中间图形数据的所述装置包括用于发送定义纹理信息和深度信息的图形数据的装置,
其中用于执行所述图像渲染过程的所述第二部分的所述装置包括:
用于使用所述深度信息扭转所述纹理信息以产生立体图像对的第一图像的装置;以及用于使用所述深度信息扭转所述纹理信息以产生所述立体图像对的第二图像的装置;
并且
其中所述第二计算装置包括虚拟现实VR头戴式装置,所述VR头戴式装置包括:
用于在所述VR头戴式装置的第一显示器上显示所述第一图像的装置;以及用于在所述VR头戴式装置的第二显示器上显示所述第二图像的装置。
21.一种计算机可读媒体,其具有存储于其上的指令,所述指令当被执行时使第二计算装置的第二图形处理单元GPU:
从第一计算装置接收所述第一计算装置的第一GPU在图像渲染过程的第一部分期间生成的中间图形数据;并且
执行所述图像渲染过程的第二部分以从所述中间图形数据渲染图像。
22.根据权利要求21所述的计算机可读存储媒体,其中所述图像渲染过程的所述第一部分包括图形流水线的至少几何步骤和光栅化步骤,并且其中使所述第二GPU执行所述图像渲染过程的所述第二部分的所述指令包括使所述第二GPU执行最终渲染通道的指令,其中所述最终渲染通道包括时间扭转和补偿要用于显示经过渲染的图像的显示器的光学器件失真。
23.根据权利要求22所述的计算机可读存储媒体,其进一步包括使所述第二GPU将在所述最终着色通道期间产生的经过着色的图形数据存储到所述第二计算装置的帧缓冲器的指令。
24.根据权利要求21所述的计算机可读存储媒体,其中使所述第二GPU接收所述中间图形数据的所述指令包括使所述第二GPU从所述第一计算装置接收图形缓冲器数据的指令,其中所述图形缓冲器数据包括经过着色的颜色分量和深度分量。
25.根据权利要求21所述的计算机可读存储媒体,其中使所述第二GPU接收所述中间图形数据的所述指令包括使所述第二GPU从所述第一计算装置接收图形缓冲器的经过压缩的中间图形的指令,所述计算机可读存储媒体进一步包括使所述第二GPU解压缩所述图形缓冲器的所述经过压缩的中间图形的指令。
26.根据权利要求21所述的计算机可读存储媒体,其中使所述第二GPU接收所述中间图形数据的所述指令包括使所述第二GPU接收定义纹理信息和深度信息的图形数据的指令,并且其中使所述第二GPU执行所述图像渲染过程的所述第二部分以渲染所述图像的所述指令包括使所述第二GPU进行以下的指令:
使用所述深度信息扭转所述纹理信息以产生立体图像对的第一图像;并且使用所述深度信息扭转所述纹理信息以产生所述立体图像对的第二图像。
27.根据权利要求26所述的计算机可读存储媒体,其中所述第二计算装置包括虚拟现实VR头戴式装置,所述计算机可读存储媒体进一步包括使所述VR头戴式装置进行以下的指令:
在所述VR头戴式装置的第一显示器上显示所述第一图像;并且
在所述VR头戴式装置的第二显示器上显示所述第二图像。
28.根据权利要求26所述的计算机可读存储媒体,
其中使所述处理器使用所述深度信息扭转所述纹理信息以产生所述第一图像的所述指令包括使所述处理器基于所述中间图形数据的图形对象的深度值确定所述图形对象被分配的深度层并且从所述第一图像的第一相机视扭转所述深度层中的每个深度层的图形对象的指令;并且
其中使所述处理器使用所述深度信息扭转所述纹理信息以产生所述第二图像的所述指令包括使所述处理器基于所述中间图形数据的图形对象的深度值确定所述图形对象被分配的深度层并且从所述第二图像的第二相机视角扭转所述深度层中的每个深度层的图形对象的指令。

说明书全文

使用两个渲染计算装置从计算机图形渲染图像

[0001] 本申请要求于2017年8月22日提交的美国申请第15/683,613号的权益,所述美国申请的全部内容特此通过引用并入。

技术领域

[0002] 本公开涉及从计算机图形数据渲染图像。

背景技术

[0003] 如用于图形用户接口和视频游戏的内容等要显示的视觉内容可以由图形处理单元(GPU)生成。GPU可以将通过图元(例如,点、线和三形)定义的二维或三维(3D)对象转换成如位图等可以被显示的二维(2D)像素位表示。将3D对象信息转换成可以被显示的位图被称为像素渲染,并且需要相当大的存储器和处理能。在过去,仅在强大的工作站上才可以获得3D图形能力。然而,现在,3D图形加速器常见于个人计算机(PC)以及如智能电话、平板计算机、便携式媒体播放器、便携式视频游戏控制台等嵌入式装置中。
[0004] 现在,正使用三维显示技术来提供用于虚拟现实(VR)和增强现实的3D内容。例如,VR头戴式装置可以包含用于向VR头戴式装置的穿戴者呈现立体图像对以从图像对产生3D效果的两个显示器——左眼显示器和右眼显示器。通常,VR头戴式装置可以通过从稍微不同的平视角呈现图像(这模拟用户眼睛之间的水平偏移以实现双目视觉)来产生3D效果。以此方式,VR头戴式装置呈现立体图像对以使用户的视觉系统以3D方式感知所述两个图像。
发明内容
[0005] 总体上,本公开描述了用于从计算机图形数据渲染图像的技术。具体地,根据本公开的技术,两个计算装置(例如,如视频游戏控制台、个人计算机、智能电话、平板计算机等源装置以及如虚拟现实(VR)头戴式装置等目的地装置)各自可以执行图像渲染过程的部分。具体地,第一装置的图形处理单元(GPU)可以执行图像渲染过程的第一部分以生成中间图形数据,并且然后将中间图形数据发送到第二装置的GPU。第二装置的GPU然后可以完成渲染中间图形数据以生成一或多个图像。在VR、增强现实(AR)或其它此类三维(3D)回放场景的情况下,第二装置的GPU还可以执行特定于VR/AR渲染的步骤,如例如使用从第一装置接收到的数据中包含的深度信息扭转经过渲染的图像以产生立体图像对、光学器件失真校正或用于补偿等待时间的时间扭转。
[0006] 在一个实例中,一种生成计算机图形的方法包含:由第一计算装置的第一图形处理单元(GPU)执行图像渲染过程的第一部分以生成中间图形数据;由所述第一计算装置将所述中间图形数据发送到第二计算装置;以及由所述第二计算装置的第二GPU执行所述图像渲染过程的第二部分以从所述中间图形数据渲染图像。
[0007] 在另一个实例中,一种用于生成计算机图形的系统包含第一计算装置和第二计算装置,所述第一计算装置包括在电路系统中实施的第一图形处理单元(GPU),所述第二计算装置包括在电路系统中实施的第二GPU。所述第一GPU被配置成执行图像渲染过程的第一部分以生成中间图形数据并将所述中间图形数据发送到所述第二计算装置。所述第二GPU被配置成执行所述图像渲染过程的第二部分以从所述中间图形数据渲染图像。
[0008] 在另一个实例中,一种用于生成计算机图形的系统包含第一计算机装置和第二计算机装置。所述第一计算装置包含用于执行图形处理单元(GPU)流水线的图像渲染过程的第一部分以生成中间图形数据的装置,以及用于将所述中间图形数据发送到所述第二计算装置的装置。所述第二计算装置包含用于执行所述GPU流水线的所述图像渲染过程的第二部分以从所述中间图形数据渲染图像的装置。
[0009] 在另一个实例中,一种计算机可读存储媒体具有存储于其上的指令,所述指令当被执行时使第二计算装置的第二图形处理单元(GPU)从第一计算装置接收所述第一计算装置的第一GPU在图像渲染过程的第一部分期间生成的中间图形数据,并且执行所述图像渲染过程的第二部分以从所述中间图形数据渲染图像。
[0010] 在下文的附图和描述中阐述了一或多个实例的细节。本发明的其它特征、目的和优点将根据所述描述和附图以及权利要求变得明显。

附图说明

[0011] 图1是框图,展示了包含可以执行本公开的技术的两个计算装置——服务器装置和虚拟现实(VR)头戴式装置——的示例系统。
[0012] 图2是框图,展示了包含中央处理单元(CPU)、图形处理单元(GPU)和存储器的示例实施方案的系统。
[0013] 图3是概念图,展示了用于执行基于图渲染(tiled rendering)的示例系统。
[0014] 图4是概念图,展示了用于执行异步图像扭转的示例系统。
[0015] 图5是概念图,展示了示例立体扭转过程。
[0016] 图6是概念图,展示了用于执行红-绿-蓝和深度(RGBD)压缩的示例技术。
[0017] 图7是流程图,展示了根据本公开的技术的用于渲染图像的示例过程。

具体实施方式

[0018] 图1是框图,展示了包含可以执行本公开的技术的两个计算装置——服务器装置102和虚拟现实(VR)头戴式装置120——的示例系统100。服务器装置102包含中央处理单元(CPU)104、存储器106、图形卡108和输出接口112。图形卡108包含图形处理单元110。VR头戴式装置120包含输出接口122、CPU 124、GPU 126、存储器128、左眼显示器132和右眼显示器
134。存储器128包含缓冲器存储器130A、130B(帧缓冲器存储器130)。尽管未在图1的实例中示出,但是服务器装置102还可以包含或可以耦接到一或多个显示器。
[0019] 在服务器装置102通过通信媒体114向VR头戴式装置120提供中间图形数据的意义上,服务器装置102被称为“服务器”。通信媒体114可以对应于如通用串行总线(USB)电缆、高清多媒体接口(HDMI)电缆或DisplayPort电缆等物理通信媒体或如蓝牙或根据IEEE 802.11的WiFi等无线通信媒体。服务器装置102可以对应于例如执行视频游戏或其它三维(3D)图形程序的视频游戏控制台、个人计算机、智能电话或平板计算装置。
[0020] VR头戴式装置120表示用于向VR头戴式装置120的穿戴者呈现立体图像对的VR头戴式装置的实例。立体图像对可以包含VR头戴式装置120通过左眼显示器132呈现的左眼图像和VR头戴式装置120通过右眼显示器134呈现的右眼图像。
[0021] CPU 104、124可以在电路系统(例如,数字逻辑电路系统)中实施。CPU 104、124还可以表示单一的相应处理器或多处理器(例如,多核)CPU。CPU 104、124可以进一步包含内部高速缓存存储器(例如,L1高速缓存、L2高速缓存和/或L3高速缓存中的任何或全部高速缓存)和/或另外的高速缓存。
[0022] CPU 104可以执行计算机图形生成程序,如视频游戏、光线追踪程序、动画程序等。CPU 104可以通过生成此图形程序来生成一或多个图元(例如,顶点、线、三角形等),以及通过所述图元定义的对象的特性(例如,要应用于对象的纹理图像、定义对象的相对位置的位置数据、照明特性等)。CPU 104还可以定义通常与从图元渲染的图像将出现的屏幕/显示器位置相对应的一或多个相机位置。此类所生成的数据通常可以被称为图形数据。
[0023] CPU 104然后可以将图形数据发送到图形卡108以供渲染。CPU 104可以将图形数据直接发送到图形卡108,或可以将图形数据中的一些或全部图形数据存储到存储器106并使图形卡108从存储器106检索图形数据(例如,通过将图形数据存储到存储器106的分配给图形卡108的区域)。在一些实例中,如CPU 104和GPU 110等CPU和GPU可以形成可以执行本公开的技术的片上系统(SoC)的一部分。
[0024] 图形卡108可以使GPU 110启动渲染过程以开始从图形数据渲染图像。根据本公开的技术,GPU 110可以仅执行图像渲染过程(例如,图形处理流水线(还简称为图形流水线))的第一部分。图形处理流水线通常包含各种阶段,如应用阶段(在此实例中,由CPU 104执行)、几何阶段、光栅化阶段和帧缓冲器阶段。
[0025] 根据本公开的技术,GPU 110可以仅执行图形处理流水线的几何阶段和光栅化阶段。这些阶段的执行可以产生中间图形数据,GPU 110可以将所述中间图形数据存储到例如存储器106的图形缓冲器(G缓冲器)。中间图形数据可以包含通过图元定义的图形对象和/或图元本身的纹理数据以及图形对象的深度数据。在一些实例中,纹理数据可以包含图像或用于渲染图像的信息。在一些实例中,中间图形数据可以另外包含以下中的一或多个:图形对象和/或图元的位置数据、图形对象和/或图元的法线数据、图形对象和/或图元的反照率数据和/或图形对象和/或图元的镜面分量。在一些实例中,GPU 110或CPU 104可以在将中间图形数据存储到G缓冲器之前压缩中间图形数据。
[0026] 输出接口112然后可以通过通信媒体114通过输出接口112将中间图形数据(即,G缓冲器数据)发送到VR头戴式装置120。VR头戴式装置120通过输入接口122接收中间图形数据。输出接口112和输入接口122表示对应于通信媒体114的物理接口。例如,当通信媒体114是如HDMI或DisplayPort电缆等电缆时,输出接口112和输入接口122对应于用于接收所述电缆和用于通过所述电缆通信的电缆端口接口。作为另一个实例,当通信媒体114是如WiFi或蓝牙等无线媒体时,输出接口112和输入接口122对应于如WiFi发射器/接收器或蓝牙发射器/接收器等无线通信接口
[0027] VR头戴式装置120的CPU 124可以从输入接口122接收中间图形数据,并将所述中间图形数据发送到GPU 126。当压缩中间图形数据时,CPU 124和/或GPU 126可以在进一步处理之前解压缩中间图形数据。根据本公开的技术,GPU 126可以被配置成使用中间图形数据执行图形渲染过程的第二(和最终)部分。例如,GPU 126可以执行一或多个着色器以对中间图形数据执行各种着色通道(pass),包含最终着色通道(或最终渲染通道)从而最终从中间图形数据渲染一或多个图像。
[0028] 例如,GPU 126可以使用中间图形数据的深度信息扭转中间图形数据的纹理信息以产生立体图像对。GPU 126可以例如将中间图形数据的纹理信息视为中心视图,并使用深度信息将纹理信息扭转到左眼视图和右眼视图。在一些实例中,GPU 126可以将经过渲染的(或经过扭转的)图像存储到帧缓冲器存储器130A、130B中的相应帧缓冲器存储器。例如,GPU 126可以将左眼视图图像存储到帧缓冲器存储器130A,并将右眼视图图像存储到帧缓冲器存储器130B。
[0029] 在一些实例中,GPU 126可以例如基于包含在中间图形数据中的深度数据扭转中间图形数据的纹理信息以形成第二经过扭转的图像。GPU 126可以将中间图形数据表示的图像存储到帧缓冲器存储器130A、130B中的一个帧缓冲器存储器,并将经过扭转的图像存储到帧缓冲器存储器130A、130B中的另一个帧缓冲器存储器。例如,GPU 126可以将经过渲染的图像存储到帧缓冲器存储器130A,并将经过扭转的图像存储到帧缓冲器存储器130B。
[0030] 存储到帧缓冲器存储器130A、130B的图像构成立体图像对。因此,VR头戴式装置120可以通过左眼显示器132和右眼显示器134显示立体图像对的图像。在图1的实例中,VR头戴式装置120通过左眼显示器132显示帧缓冲器存储器130A中的图像,并且通过右眼显示器134显示帧缓冲器存储器130B中的图像。
[0031] 在一些实例中,服务器装置102和VR头戴式装置120可以被配置成执行注视点渲染。在注视点渲染中,VR头戴式装置中的透镜光学器件(如左眼显示器132和右眼显示器134的透镜光学器件)放大用户视野中的外围图像区域。本公开认识到,渲染比最终图像中将使用的像素更多的像素,实属浪费。因此,相比图像的外围中的像素,根据本公开的GPU(如GPU 110、126)可以相对更密集地对图像的中心中的像素进行采样。下文关于图3更详细地解释的根据本公开的技术的延迟的基于图块渲染可以简化注视点渲染,因为可以每图块地选择合适的采样密度
[0032] 服务器装置102可以使用基于图块的延迟渲染器(例如,标准游戏引擎)并将图像渲染到分层的G缓冲器中。下文关于图3更详细地解释基于图块的延迟渲染的实例。下文关于图5更详细地描述分层图像扭转。服务器装置102还可以通过注视点渲染延迟着色并且将用于漫射部分和镜面部分的缓冲器分离,如下文关于图5更详细地解释的。
[0033] GPU 110可以执行红-绿-蓝-深度(RGBD)压缩,以压缩通过通信媒体114从输出接口112发送到VR头戴式装置120的图像数据和深度数据。下文关于图6解释RGBD压缩的实例。然而,也可以使用其它压缩方法。输出接口112可以通过通信媒体114向VR头戴式装置120发送数据流,并基于当前差异更新每流速率。VR头戴式装置120可以执行如下文关于图6所解释的RGBD解压。
[0034] VR头戴式装置120(表示示例客户端装置)可以使用深度缓冲器曲面细分(tessellation)和纹理映射来执行图像扭转。曲面细分可以遵守注视点采样。VR头戴式装置120可以直接扭转到左眼显示器132和右眼显示器134的透镜光学器件的预失真视图。具体地,GPU 126可以针对左眼显示器132和右眼显示器134执行单独的扭转。标准深度缓冲器可以编排帧缓冲器存储器130A、130B中的层以通过左眼显示器132和右眼显示器134进行正确呈现。
[0035] 以此方式,本公开的技术可以组合来自服务器装置102和VR头戴式装置120两者(表示客户端装置的实例)的GPU能力。服务器装置102的GPU 110可以比VR头戴式装置120的GPU 126更强大。本公开的技术可以避免GPU 110渲染两个图像并将两个图像发送到VR头戴式装置120的必要性。因此,本公开的技术可以提高GPU 110的处理效率,并减少通过通信媒体114的传输所消耗的带宽。这些技术还可以避免可能在其它方面由在服务器装置102处完全渲染立体图像对图像而产生(尤其是当此类图像以超高分辨率(例如,4K分辨率)渲染时)的性能瓶颈
[0036] 此外,相比每帧RGB,本公开的一些示例技术可以用于在服务器装置102上维持更多的像素级信息。相比标准技术,服务器装置102可以使用像素级信息向VR头戴式装置120传输较少的原始图像数据。同样,服务器装置102可以使用像素级信息压缩发送到VR头戴式装置120的信息。服务器装置102通常可以针对每帧一个图像(而不是立体图像)渲染中间图形数据。服务器装置102可以提取图像的RGB数据和深度数据,并执行例如如关于图6所解释的RGBD压缩。VR头戴式装置120可以使用如关于图6所解释的RGBD解压来解压缩数据,并在单个通道中可能地使用针对左眼显示器132和右眼显示器134的透镜失真来从两个眼睛位置重新渲染RGBD帧。
[0037] 图2是框图,展示了包含CPU 152、GPU 160、存储器180和GPU 190的示例实施方案的系统150。在此实例中,CPU 152、GPU 160和存储器180包含在服务器装置中,而GPU 190包含在客户端装置中。应当理解的是,客户端装置可以进一步包含如图1中所示出的CPU和存储器,但是为了便于说明,在图2中未示出客户端装置的CPU和存储器。图2的CPU 152、GPU 160和存储器180可以分别对应于图1的CPU 104、GPU 110和存储器106,而图2的GPU 190可以对应于图1的GPU 126。
[0038] 在此实例中,CPU 152执行软件应用154、图形API 156和GPU驱动器158,所述组件中的每个组件都可以是一或多个软件应用或服务。在此实例中,GPU 160包含图形处理流水线162,所述图形处理流水线包含多个图形处理阶段,所述多个图形处理阶段一起操作以执行图形处理命令。GPU 160可以被配置成以各种渲染模式(包含分箱(binning)渲染模式和直接渲染模式)执行图形处理流水线162。
[0039] 如图2所示出的,图形处理流水线162可以包含命令引擎164、几何处理阶段166、光栅化阶段168和像素处理流水线170。像素处理流水线170可以包含纹理引擎172。图形处理流水线162中的组件中的每个组件可以实施为固定功能组件、可编程组件(例如,作为在可编程着色器单元上执行的着色器程序的一部分),或实施为固定功能组件和可编程组件的组合。CPU 152和GPU 160可用的存储器180可以包含系统存储器182和帧缓冲器184。帧缓冲器184可以是系统存储器182的一部分,或可以与系统存储器182分离。帧缓冲器184可以存储经过渲染的图像数据。
[0040] 软件应用154可以是利用GPU 160的功能的任何应用。例如,软件应用154可以是GUI应用、操作系统、便携式绘制应用、用于工程或艺术应用的计算机辅助设计程序、视频游戏应用或可以利用GPU的另一种类型的软件应用。在一些实例中,软件应用154可以表示虚拟现实(VR)应用,例如,VR视频游戏或增强现实(AR)应用。因此,软件应用154可以通过图形API 156和GPU驱动器158向GPU 160发送表示用户视点(使用任何或全部外部相机、加速度计陀螺仪等来确定的)的数据。GPU 160进而可以使用视点数据来确定一或多个相机位置(例如,用于单个图像的单个相机位置、或用于两个图像(例如,左眼图像和右眼图像)的多个相机位置)。
[0041] 软件应用154可以包含指示GPU 160渲染图形用户接口(GUI)和/或图形场景的一或多个绘图指令。例如,绘图指令可以包含定义要由GPU 160渲染的一组一或多个图元的指令。在一些实例中,绘图指令可以共同定义GUI中使用的多个窗口化表面中的全部或部分窗口化表面。在另外的实例中,绘图指令可以共同定义图形场景的全部或一部分,所述图形场景包含所述应用定义的模型空间或世界空间内的一或多个图形对象。
[0042] 软件应用154可以通过图形API 156调用GPU驱动器158,以向GPU 160发出用于将一或多个图元渲染到可显示的图形图像中的一或多个命令。例如,软件应用154可以通过图形API 156调用GPU驱动器158,以向GPU 160提供图元定义。在一些实例中,图元定义可以以绘图图元(例如,三角形、矩形、三角形扇、三角形条等)列表的形式提供给GPU 160。图元定义可以包含指定与要渲染的图元相关联的一或多个顶点的顶点规格。顶点规格可以包含每个顶点的位置坐标,并且在一些实例中,包括与顶点相关联的其它属性,例如,颜色坐标、法向量和纹理坐标。
[0043] 图元定义还可以包含图元类型信息(例如,三角形、矩形、三角形扇、三角形条等)、缩放信息、旋转信息等。基于软件应用154向GPU驱动器158发出的指令,GPU驱动器158可以制定一或多个命令,所述一或多个命令指定GPU 160执行以渲染图元的一或多个操作。当GPU 160从CPU 152接收命令时,图形处理流水线162解码所述命令,并配置图形处理流水线162内的一或多个处理元件以执行命令中指定的操作。在执行指定操作之后,图形处理流水线162将经过渲染的数据输出到与显示器装置相关联的帧缓冲器184。图形处理流水线162可以被配置成以多种不同渲染模式(包含分箱渲染模式和直接渲染模式)之一执行。
[0044] GPU驱动器158可以被进一步配置成编译一或多个着色器程序,并将经过编译的着色器程序下载到包含在GPU 160内的一或多个可编程着色器单元上。着色器程序可以用高级着色语言编写,例如,OpenGL着色语言(GLSL)、高级着色语言(HLSL)、用于图形C(C for Graphics,Cg)着色语言等。经过编译的着色器程序可以包含控制GPU 160内的可编程着色器单元的操作的一或多个指令。例如,着色器程序可以包含顶点着色器程序和/或像素着色器程序。顶点着色器程序可以控制可编程顶点着色器单元或统一着色器单元的执行,并且包含指定一或多个每顶点操作的指令。像素着色器程序可以包含控制可编程像素着色器单元或统一着色器单元的执行的像素着色器程序,并且包含指定一或多个每像素操作的指令。
[0045] 图形处理流水线162可以被配置成通过GPU驱动器158从CPU 152接收一或多个图形处理命令,并且执行图形处理命令以生成可显示的图形图像。如上文所讨论的,图形处理流水线162包含一起操作以执行图形处理命令的多个阶段。然而,应当注意,此类阶段不一定需要在单独的硬件块中实施。例如,几何处理阶段166和像素处理流水线170的部分可以实施为统一着色器单元的一部分。再次,图形处理流水线162可以被配置成以多种不同渲染模式(包含分箱渲染模式和直接渲染模式)之一执行。
[0046] 命令引擎164可以接收图形处理命令,并配置图形处理流水线162内的剩余处理阶段以执行用于执行图形处理命令的各种操作。图形处理命令可以包含例如绘图命令和图形状态命令。绘图命令可以包含顶点规格命令,所述顶点规格命令指定一或多个顶点的位置坐标,并且在一些实例中,指定与顶点中的每个顶点相关联的其它属性值,如颜色坐标、法向量、纹理坐标和雾坐标。图形状态命令可以包含图元类型命令、变换命令、光照命令等。图元类型命令可以指定要渲染的图元的类型和/或顶点如何组合以形成图元。变换命令可以指定要对顶点执行的变换的类型。光照命令可以指定图形场景内的不同灯光的类型、方向和/或放置。命令引擎164可以使几何处理阶段166关于与一或多个接收到的命令相关联的顶点和/或图元执行几何处理。
[0047] 几何处理阶段166可以对一或多个顶点执行每顶点操作和/或图元设置操作,以生成用于光栅化阶段168的图元数据。每个顶点可以与一组属性相关联,所述属性例如位置坐标、颜色值、法向量和纹理坐标。几何处理阶段166根据各种每顶点操作修改这些属性中的一或多个属性。例如,几何处理阶段166可以对顶点位置坐标执行一或多个变换,以产生经过修改的顶点位置坐标。
[0048] 几何处理阶段166可以例如将模型变换、视图变换、投影变换、ModelView变换、ModelViewProjection变换、视口变换和深度范围缩放变换中的一或多个变换应用于顶点位置坐标,以生成经过修改的顶点位置坐标。在一些实例中,顶点位置坐标可以是模型空间坐标,并且经过修改的顶点位置坐标可以是屏幕空间坐标。屏幕空间坐标可以在应用模型变换、视图变换、投影变换和视口变换之后获得。在一些实例中,几何处理阶段166还可以对顶点执行每顶点光照操作,以生成顶点的经过修改的颜色坐标。几何处理阶段166还可以执行其它操作,包含例如法线变换、法线归一化操作、视体裁剪、齐次除法(homogenous division)和/或背面剔除操作。
[0049] 几何处理阶段166可以产生包含定义要光栅化的图元的一组一或多个经过修改的顶点的图元数据以及指定顶点如何组合以形成图元的数据。经过修改的顶点中的每个经过修改的顶点可以包含例如经过修改的顶点位置坐标和与顶点相关联的经过处理的顶点属性值。图元数据可以共同对应于要通过图形处理流水线162的另外的阶段光栅化的图元。概念上,每个顶点可以对应于图元的两个边缘相交的图元角。几何处理阶段166可以将图元数据提供给光栅化阶段168以供进一步处理。
[0050] 在一些实例中,几何处理阶段166的全部或一部分可以由在一或多个着色器单元上执行的一或多个着色器程序实施。例如,在此类实例中,几何处理阶段166可以由顶点着色器、几何着色器或其任何组合实施。在其它实例中,几何处理阶段166可以实施为固定功能硬件处理流水线或实施为固定功能硬件和在一或多个着色器单元上执行的一或多个着色器程序的组合。
[0051] 光栅化阶段168被配置成从几何处理阶段166接收表示要光栅化的图元的图元数据,并且光栅化图元以生成对应于经过光栅化的图元的多个源像素。在一些实例中,光栅化阶段168可以确定哪些屏幕像素位置被要光栅化的图元覆盖,并且生成被确定为被图元覆盖的每个屏幕像素位置的源像素。光栅化阶段168可以通过使用本领域的技术人员已知的技术(例如,边缘行走技术、评估边缘方程等)确定哪些屏幕像素位置被图元覆盖。光栅化阶段168可以将所得源像素提供给像素处理流水线170以供进一步处理。
[0052] 光栅化阶段168生成的源像素可以对应于屏幕像素位置,例如,目的地像素,并且可以与一或多个颜色属性相关联。为具体的经过光栅化的图元生成的源像素中的所有源像素可以说成与经过光栅化的图元相关联。光栅化阶段168确定为被图元覆盖的像素在概念上可以包含表示图元的顶点的像素、表示图元的边缘的像素和表示图元的内部的像素。
[0053] 像素处理流水线170被配置成接收与经过光栅化的图元相关联的源像素,并对源像素执行一或多个每像素操作。像素处理流水线170可以执行的每像素操作包含例如α测试、纹理映射、颜色计算、像素着色、每像素光照、雾处理、混合、像素所有权测试、源α测试、模板测试、深度测试、剪刀测试和/或点画操作。另外,像素处理流水线170可以执行一或多个像素着色器程序以执行一或多个每像素操作。像素处理流水线170产生的所得数据在本文中可以被称为目的地像素数据,并可以存储在帧缓冲器184中。目的地像素数据可以与帧缓冲器184中显示位置与被处理的源像素的显示位置相同的目的地像素相关联。目的地像素数据可以包含如颜色值、目的地α值、深度值等数据。
[0054] 纹理引擎172可以包含为像素处理流水线170的一部分。纹理引擎172可以包含被设计成将纹理(纹素)应用于像素的可编程功能硬件和/或固定功能硬件。纹理引擎172可以包含用于执行纹理滤波,由此一或多个纹素值乘以一或多个像素值并累积以产生最终纹理映射像素的专用硬件。
[0055] 帧缓冲器184存储GPU 160的目的地像素。每个目的地像素可以与唯一的屏幕像素位置相关联。在一些实例中,帧缓冲器184可以存储每个目的地像素的颜色分量和目的地α值。例如,帧缓冲器184可以存储每个像素的红、绿、蓝、α(RGBA)分量,其中“RGB”分量对应于颜色值,并且“A”分量对应于目的地α值。尽管帧缓冲器184和系统存储器182被展示为单独的存储器单元,但是在其它实例中,帧缓冲器184可以是系统存储器182的一部分。
[0056] GPU 160还包含图形存储器174,所述图形存储器可以存储图形缓冲器(G缓冲器)。根据本公开的技术,GPU 160可以将光栅化阶段168的输出发送到图形存储器174的G缓冲器,而不是发送到像素处理流水线170。然后,GPU 160可以将G缓冲器数据输出到GPU 190。
[0057] GPU 190通常可以包含类似于GPU 160的元件的元件。例如,GPU 190可以包含类似于图形处理流水线162的图形处理流水线。出于解释的目的,在此实例中仅示出了像素处理流水线194,但是应当理解的是,GPU 190可以包含类似于GPU 160的其它组件的组件。GPU 190还包含图形存储器192,所述图形存储器还可以包含用于缓冲来自图形存储器174的G缓冲器的数据的G缓冲器。
[0058] 由此,GPU 160可以避免执行整个图形处理流水线162。光栅化阶段168不需要直接调用着色器。相反,GPU 160可以将光栅化结果存储在图形存储器174的G缓冲器中。光栅化结果(还称为中间图形数据)可以包含颜色数据、深度数据、法线数据(即,表面法线数据)、位置数据、标识符数据等。
[0059] 以此方式,GPU 160可以执行图像渲染过程的第一部分,以生成中间图形数据。图像渲染过程的第一部分可以包含图形处理流水线162的几何处理阶段166和光栅化阶段168。GPU 160然后可以将中间图形数据存储在图形存储器174中的G缓冲器表示中。中间图形数据可以包含经过着色的颜色分量和深度分量。在一些实例中,中间图形数据可以进一步包含多个图形对象(例如,一或多个图元)的纹理和/或深度信息的位置分量、法线分量、反照率分量或镜面分量中的任何或全部分量。位置分量可以指定图形对象的位置。法线分量可以指定图形对象的局部表面法线。反照率分量可以指定图形对象的表面反射比。镜面分量可以指定图形对象的光照高光。在一些实例中,GPU 160可以在将中间图形数据发送到GPU 190之前压缩中间图形数据。在此类实例中,GPU 190在完成渲染过程之前解压缩中间图形数据。
[0060] GPU 190接收中间图形数据,并将所述中间图形数据缓冲在图形存储器192的G缓冲器中。像素处理流水线194和纹理引擎196然后执行图像渲染过程的第二部分,以从中间图形数据渲染一或多个图像。例如,像素处理流水线194可以执行一或多个着色器(包含最终着色通道)以渲染一或多个图像。最终着色通道可以包含渲染屏幕大小的四边形、读取G缓冲器数据、计算着色器代码、写入到包含GPU 190的装置的帧缓冲器和/或将深度复杂度值设置为等于1。
[0061] 在一个实例中,GPU 190包含在例如如图1所示出的包含两个显示器——左眼显示器和右眼显示器——的虚拟现实头戴式装置或增强现实头戴式装置中。GPU 190可以被配置成由中间图形数据生成(例如,渲染和/或扭转)立体图像对的两个图像(左眼图像和右眼图像)。在一些实例中,GPU 190可以渲染第一图像(例如,左眼图像),并且然后扭转第一图像以由第一图像产生第二图像(例如,右眼图像)。GPU 190可以使用中间图形数据的深度数据扭转第一图像以产生第二图像。可替代地,在一些实例中,GPU 190可以渲染第一图像(例如,中心图像),并且然后使用深度数据将第一图像扭转成左眼图像和右眼图像。
[0062] 在一些实例中,GPU 190可以以图形处理流水线的另外的阶段(图2中未示出)的形式执行图像扭转。例如,当CPU 152执行软件应用154时,CPU 152可以生成要在图像扭转阶段期间使用的跟踪数据。GPU 160可以将跟踪数据作为中间图形数据的一部分发送给GPU 190。GPU 190可以执行两个渲染通道:用于渲染第一图像的第一通道和用于使用跟踪数据定义的新相机参数执行透视纹理映射并生成第二图像的第二通道,其中第一图像和第二图像定义立体图像对。
[0063] 以此方式,图1的系统100和图2的系统150表示包含第一计算装置和第二计算装置的系统的实例,所述第一计算装置包括在电路系统中实施的第一图形处理单元(GPU),所述第二计算装置包括在电路系统中实施的第二GPU,其中第一GPU被配置成执行图像渲染过程的第一部分以生成中间图形数据并将中间图形数据发送到第二计算装置,并且其中第二GPU被配置成执行图像渲染过程的第二部分以从中间图形数据渲染图像。
[0064] 图3是概念图,展示了用于执行基于图块渲染的示例系统200。这些技术还可以称为延迟的基于图块渲染。系统200包括CPU 202和GPU 206。在此实例中,GPU 206包含四个GPU处理器208A-208D(GPU处理器208)。通常,CPU 202执行表示图形应用的应用204以生成图形数据。CPU 202将图形数据发送到GPU 206以从图形数据渲染图像210。
[0065] 在此实例中,GPU 206执行基于图块渲染过程。也就是说,GPU 206将显示器的屏幕细分成四个图块212A-212D(图块212),以生成图像210的相应图块部分。因此,GPU 206将GPU处理器208之一分配给相应图块212。在此实例中,GPU处理器208A分配给图块212A,GPU处理器208B分配给图块212B,GPU处理器208C分配给图块212C,并且GPU处理器208D分配给图块212D。在其它实例中,GPU 206可以包含另外的GPU处理器或更少的GPU处理器,所述处理器中的每个处理器可以分配给相应图块。
[0066] 在基于图块渲染中,CPU 202可以将图块212中的每个图块的数据保存在快速本地存储器(图3中未示出)中。通常,基于图块渲染技术在光栅化阶段中(例如,在图2的光栅化阶段168期间)执行,因为已通过发生光栅化阶段168的时间确定2D顶点投影。在一些实例中,关于图3描述的基于图块渲染过程可以由被配置成执行本公开的技术的装置执行,所述装置例如图1的服务器装置102和VR头戴式装置120和/或图2的CPU 152和GPU 160、190。
[0067] 图4是概念图,展示了用于执行异步图像扭转的示例系统220。在异步图像扭转中,可以将图像的渲染和图像的显示解耦。异步图像扭转通常可以包含两个通道:慢速第一通道和快速第二通道。在慢速第一通道期间,GPU可以将3D场景数据230的对象渲染到纹理缓冲数据232(还示出为一系列经过渲染的图像224)。经过渲染的图像可以大于要向用户显示的视口。GPU可以将此图像(或图像的符合视口的一部分)存储到第一缓冲器(例如,图4的缓冲器222A)或第二缓冲器(例如,图4的缓冲器222B)。在第二快速通道期间,GPU(同一GPU或不同的GPU)可以扭转经过渲染的图像(纹理缓冲器数据232)以形成对应相机视角的最终图像234(还示出为一系列经过扭转的图像226)。GPU然后可以将经过扭转的图像扫描输出到帧缓冲器存储器(图4中未示出)。
[0068] 根据本公开的技术的用深度执行图像扭转的装置可以使用各种扭转技术。例如,在基本扭转中,不确定实际深度数据,而是假设任意的恒定深度值。作为另一个实例,装置可以用深度缓冲器执行扭转。在此实例中,装置执行逐像素前向重投影。这可能导致重投影和/或去遮挡伪像。在又另一个实例中,装置可以用深度网格进行扭转。在此实例中,装置执行每像素扭转以减少重投影伪像。为了解决去遮挡伪像,装置可以对深度缓冲器进行曲面细分,并用投影纹理映射进行渲染。在一些实例中,这可能引起一些失真伪像。
[0069] 图5是概念图,展示了示例立体扭转过程。在图5的实例中,系统250包含各种相机视角252、254、256,将从所述相机视角呈现场景258的数据。具体地,GPU可以从相机视角254渲染图像。GPU然后可以将经过渲染的图像扭转到相机视角256和相机视角252。以此方式,可以将经过渲染的图像仅用于扭转,而不是显示经过渲染的图像,并且最终显示的立体图像对可以包含通过扭转经过渲染的图像形成的两个图像。
[0070] 在一些实例中,本公开的装置(例如,图1的GPU 110、126和/或图2的GPU 160、190)可以被配置成用视图相关的着色来执行扭转。在一些情况下,扭转可能导致不正确的镜面(视图相关)着色。因此,装置(例如,编译着色器的编译器的GPU或预编译器)可以将片段着色器分为漫射部分和镜面部分。GPU然后可以将漫射部分和镜面部分渲染到单独的G缓冲器中。相比漫射G缓冲器,GPU可以进一步更频繁地更新镜面G缓冲器。以此方式,本公开的装置可以改进镜面(视图相关)着色。
[0071] 另外或可替代地,本公开的装置(例如,图1的GPU 110、126和/或图2的GPU 160、190)可以被配置成执行分层图像扭转。装置可以将场景分割成N个深度层,每个深度层具有相关联的深度值。装置可以将每个深度层渲染到单独的G缓冲器中。装置可以进一步基于图形对象的深度值将图形对象分配给深度层,例如,使得每个图形对象被分配给深度值最接近(最类似于)图形对象的深度值的深度层。然后,装置可以扭转来自G缓冲器的深度层中的每个深度层,而不受其它层的影响。以此方式执行分层图像扭转可以增加异步扭转的灵活性。可以将独立的移动对象分配给不同的层。这可以使去遮挡问题减少,因为最终图像可以从不同的深度层填充。
[0072] 为了定义深度层,应用可以将开始/结束层标记插入到图形对象流(例如,OpenGL流)中。装置可以执行将图形对象分到不同层中的启发式自动分离。深度层可以例如通过按深度对对象进行分组来定义。也就是说,每个深度层可以包含具有类似深度值的图形对象,并且每个图形对象可以分配给所述层之一。
[0073] 图6是概念图,展示了用于执行红-绿-蓝和深度(RGBD)压缩的示例技术。通常,此压缩方案涉及分两个阶段将存储在图像中的边缘的两侧的样本铺在图像上。在第一阶段(推阶段)中,对图像进行下采样。可以通过数学地组合样本(像素)来对块270进行下采样。例如,如块272所示出的,可以对对角相邻的像素求平均,以形成被示出为轮廓比其它像素更浓的像素(正方形)的值。以此方式,可以对示例6×6块272进行下采样以产生经过下采样的块274。阴影线着色的块表示可以以此方式填充的空像素。可以对经过下采样的块274进行进一步下采样,以便以类似方式产生经过进一步下采样的块276。
[0074] 在第二拉阶段中,GPU以更精细的尺度填充粗级别图像中的孔。首先,GPU将块272的经过下采样的像素转移到282,并通过对对角相邻的像素(用箭头示出)的值求平均来填充某些空像素值(用虚线描绘)以产生块288。然后,GPU通过对水平相邻像素和竖直相邻像素的值求平均来填充剩余的空像素值(用阴影线着色)。GPU可以对块282、288进行下采样,以分别产生经过下采样的块284、290。GPU可以对块284、290进行进一步下采样,以产生表示经过压缩的块的经过进一步下采样的块286、292。GPU可以对图像的红色分量、绿色分量、蓝色分量和深度分量中的每个分量执行此过程。
[0075] 服务器端GPU(例如,图2的GPU 160)可以通过以比深度缓冲器更低的分辨率渲染颜色图像并将经过渲染的图像编码为低带宽MPEG来压缩颜色缓冲器数据。服务器端GPU可以通过仅保持深度不连续性和编码增量游程数据来压缩深度缓冲器数据。为了解压缩颜色数据,客户端GPU(例如,图2的GPU 190)可以执行双边上采样。为了解压缩深度数据,客户端GPU可以执行上文所解释的图6的推-拉漫射过程。
[0076] 图7是流程图,展示了根据本公开的技术的用于渲染图像的示例过程。图7的技术关于图1的服务器装置102和VR头戴式装置120(客户端装置的实例)进行解释。然而,应当理解的是,其它组件和装置(如图2的各种组件)也可以被配置成执行图7的过程。
[0077] 初始地,CPU 104以图形处理流水线的图形应用步骤的一部分的形式执行图形应用(300)。通过执行图形应用,CPU 104生成要作为图形处理流水线的一部分进行进一步处理的图形对象和/或图元。在一些实例中,CPU 104可以进一步生成要在如上文所解释的图形处理流水线的图像扭转阶段期间用于扭转经过渲染的图像以形成立体图像对的跟踪数据。
[0078] CPU 104可以向图形卡108提供图形对象和/或图元。图形卡108的GPU 110然后可以执行例如如上文关于图2所解释的图形处理流水线的几何步骤(302)和光栅化步骤(304)。然而,GPU 110可以将经过光栅化的图像数据(即,中间图形数据)存储到例如存储器106中的G缓冲器(306),而不是对中间图形数据进行着色。如上文所解释的,中间图形数据可以包含纹理(颜色和/或照明)数据和深度数据。在一些实例中,中间图形数据可以包含法线数据(即,表面法线数据)、位置数据、标识符数据等中的任何或全部数据。在一些实例中,CPU 104可以将各个图形对象和/或图元分配给各个层(例如,基于图形对象的深度值),并且GPU 110可以将每个层的图形对象/图元渲染到存储器106的单独的相应G缓冲器。
[0079] GPU 110和/或CPU 104然后可以如上文关于图6(图7中未示出)所解释的那样压缩中间图形数据。服务器装置102然后可以向客户端装置(在此实例中是VR头戴式装置120)发送G缓冲器数据(308)。VR头戴式装置120然后可以接收G缓冲器数据(310),并且如果G缓冲器数据是经过压缩的,则解压缩G缓冲器数据,如上文所解释的。
[0080] VR头戴式装置120的GPU 126然后可以对中间图形数据执行一或多个着色器(包含最终渲染通道)(312)。最终渲染(或着色)通道可以包含使用中间图形数据的深度数据扭转中间图形数据的纹理数据以形成立体图像对的左眼图像(314)并且扭转中间图形数据的纹理数据以形成立体图像对的右眼图像(316)。具体地,最终渲染通道可以包含将单个图像转换成立体图像对、执行时间扭转以及补偿左眼显示器132和右眼显示器134的光学器件失真,所有这些操作都在单个通道中进行。在其它实例中,GPU 126可以将中间图形数据的纹理数据视为立体图像对的第一图像,并且扭转中间图形数据的纹理数据以形成立体图像对的第二图像。5.VR头戴式装置120然后可以例如通过左眼显示器132和右眼显示器134显示立体图像对的图像(318)。
[0081] 以此方式,图7的方法表示包含以下的方法的实例:由第一计算装置的第一图形处理单元(GPU)执行图像渲染过程的第一部分以生成中间图形数据;由第一计算装置将中间图形数据发送到第二计算装置;以及由第二计算装置的第二GPU执行图像渲染过程的第二部分以从中间图形数据渲染图像。
[0082] 在一或多个实例中,所描述的功能可以以硬件、软件、固件或其任何组合实施。如果以软件实施,则可以将功能以一或多个指令或代码的形式存储在计算机可读媒体上或通过计算机可读媒体进行传输并且可以由基于硬件的处理单元执行功能。计算机可读媒体可以包含对应于如数据存储媒体等有形媒体的计算机可读存储媒体或包含有助于例如根据通信协议将计算机程序从一个地方转移到另一个地方的任何媒体的通信媒体。以此方式,计算机可读媒体通常可以对应于(1)非暂时性的有形计算机可读存储媒体或(2)如信号或载波等通信媒体。数据存储媒体可以是可以被一或多个计算机或一或多个处理器访问以检索用于实施本公开中描述的技术的指令、代码和/或数据结构的任何可用媒体。计算机程序产品可以包含计算机可读媒体。
[0083] 通过举例而非限制,此类计算机可读存储媒体可以包括RAM、ROM、EEPROM、CD-ROM或其它光盘存储区、磁盘存储区或其它磁性存储装置、闪速存储器或可以用于以指令或数据结构的形式存储期望的程序代码并且可以被计算机访问的任何其它媒体。并且,任何连接都被适当地称为计算机可读媒体。例如,如果使用同轴电缆、光纤电缆、双绞线、数字用户线(DSL)或如红外线、无线电和微波等无线技术从网站、服务器或其它远程源传输指令,则同轴电缆、光纤电缆、双绞线、DSL或如红外线、无线电和微波等无线技术包含在媒体的定义中。然而,应当理解的是,计算机可读存储媒体和数据存储媒体不包含连接、载波、信号或其它暂时性媒体,而相反针对非暂时性有形存储媒体。本文所使用的盘或碟包含压缩碟(CD)、激光碟、光碟、数字通用碟(DVD)、软盘和蓝光碟,其中盘通常磁性地复制数据,而碟用激光光学地复制数据。上述内容的组合也应包含在计算机可读媒体的范围内。
[0084] 指令可以由一或多个处理器执行,所述一或多个处理器如一或多个数字信号处理器(DSP)、通用微处理器专用集成电路(ASIC)、现场可编程逻辑阵列(FPGA)或其它等效的集成或离散逻辑电路系统。因此,本文所使用的术语“处理器”可以指代任何前述结构或适于实施本文所描述的技术的任何其它结构。另外,在一些方面,本文所描述的功能可以在被配置用于编码和解码的专用硬件和/或软件模块中提供,或结合到组合式编解码器中。而且,所述技术可以完全在一或多个电路或逻辑元件中实施。
[0085] 本公开的技术可以在各种装置或设备中实施,所述装置或设备包含无线手持装置、集成电路(IC)或IC组(例如,芯片组)。本公开中描述了各种组件、模块或单元以强调被配置成执行所公开技术的装置的功能方面,但不一定需要通过不同的硬件单元来实现。相反,如上文所描述的,结合适合的软件和/或固件,可以将各种单元组合在编解码器硬件单元中或由可互操作的硬件单元的集合提供,包含如上文所描述的一或多个处理器。
[0086] 已经描述了各个实例。这些实例和其它实例处于以下权利要求的范围内。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈