众包视频渲染系统的制作方法
【专利摘要】在一个实施例中,本发明的方法包括:通过向每个客户端传输视口状态数据对象和唯一的空间位置而向具有性能好的图形处理单元的相连客户端节点分配渲染任务;在每个客户端从其唯一空间位置的起点开始执行路径追踪;以及将客户端的渲染输出传输回服务器。服务器将由特定客户端接收的各渲染输出生成合成的渲染输出,然后将合成结果传输到所有相连的客户端进行显示。因此,当客户端节点的数量增加时,场景被渲染得更快并且质量更高。在特定的实施例中,渲染输出为表示场景的漫射照明的光照贴图,而且每个客户端可以从其自己的视口渲染场景的镜面反射高光。
【专利说明】众包视频渲染系统
【技术领域】
[0001]本发明总的涉及分布式众包图形渲染的应用,更具体地说是涉及这样一种服务器,其利用一个或多个相连的客户端上的图形处理单元执行漫射光渲染,从一个或多个相连的客户端接收渲染场景,由接收的场景生成合成场景,并且将合成场景传输给所有相连的客户端。
【背景技术】
[0002]客户-服务器架构一般来说是分布式计算架构,该架构在服务器(可以被认为是“服务供应商”)和客户端(可以被认为是“服务需求者”或者“服务消费者”)之间分配任务或者工作负荷。服务器和客户端常常经由计算机网络而连接,并且各类数据可在各个服务器和各个客户端之间通过计算机网络双向传输。传统上,服务器通常比客户端具有更多的资源和更好的性能。服务器可与一个或多个客户端共享它的资源,诸如为客户端执行特定的任务(即,为客户端提供服务)。由于服务器通常比客户端具有更多的资源,因此服务器可以比客户端所能做到的快得多地完成任务,特别是占用资源的任务。
[0003]在服务器和客户端之间所交换的数据可使用任何适当的数据格式来表示,并使用任何适当的通信协议来传输。例如,当在服务器上为客户端执行应用时,应用的输出可使用结构式文件来表示,诸如超文本标记语言(HTML)文件或者可扩展标记语言(XML)文件等。服务器可通过在服务器和客户端之间的超文本传输协议(HTTP)连接将包括表示应用输出的数据的HTML或者XML文件传输到客户端。当接收到HTML或者XML文件时,客户端可以使用该文件,并利用该HTML或者XML文件在诸如在该客户端上运行的网页浏览器中本地渲染应用的输出。
【发明内容】
[0004]本发明总的涉及一种众包图形渲染系统,其在一个或多个相连的客户端之间分配渲染任务,所述客户端将渲染输出传输回服务器,该服务器将客户端输出合成为一个单独的、用于向所有相连的客户端传输和显不的渲染输出。
[0005]在服务器端图形渲染的情况下,单台服务器可以包括一系列图形处理单元(GPU),以用于渲染图形对象并且将输出传输到客户端。然而,在处理器周期方面,渲染复杂的3D环境代价巨大,并且必须增加额外的GPU或者服务器以向所连接的客户端充分地提供渲染后的帧或场景。因此,传统的服务器端图形渲染面临着重大的可扩展性问题。为了满足数量不断增长的客户端的需求,增加服务器或者GPU对于供应商来说可能是过于昂贵的;相反,当需求降至处理能力以下时,对服务器或GPU等基础设施的过度投资将导致利用不充分。
[0006]此外,具有能够快速执行较为复杂的3D渲染的能力的GPU的大众化设备的数量近年来增长迅猛。例如,在21世纪初,具备能够在一分钟之内执行3D场景的路径追踪的GPU的个人电脑的数量可能局限于为数不多的电脑,而目前超过四千万台个人电脑拥有附带这种性能的GPU。因此,希望为这些客户端GPU融资以谋求将图形渲染任务从服务器转移到客户端,从而实施众包的给定帧或环境的渲染。
[0007]在一个实施例中,计算机系统托管多个应用程序实例,每个应用程序实例对应于一个远程的客户端应用程序。该计算机系统保持与托管应用程序实例的每个远程客户端应用的网络连接。在特定的实施例中,应用程序实例为如下所述的软件插桩。在特定的实施例中,计算机系统将用于具有足够强大的GPU的计算机的渲染资源传输给客户端应用,以有助于进行渲染。在特定的实施例中,如下所述,计算机系统以视口状态数据对象(VSDO)的形式传输渲染资源。在特定的实施例中,计算机系统也向每个参与众包渲染处理的客户端传输或者分配一个唯一的空间位置。在特定的实施例中,客户端设备利用接收的渲染资源和唯一的视点来渲染帧或者环境。在特定的实施例中,客户端设备执行路径追踪以渲染一个场景或者环境的漫射照明。在完成其被分配的渲染任务之后,每个参与的客户端设备将其渲染输出传输回计算机系统。在特定的实施例中,渲染输出为来自特定视点的帧。在特定的实施例中,渲染输出为用于环境的漫射照明的光照贴图。在特定的实施例中,渲染输出为改进的VSD0。当接收到渲染输出时,计算机系统生成一个合成的渲染输出,用于回传给所有相连的客户端,甚至是那些没有参与众包渲染处理的客户端。
[0008]在特定的实施例中,每个相连的客户端从完全相同的视点观察场景,并且计算机系统将合成的帧从特定视点传输给每个相连的客户端以用于显示。在特定的实施例中,每个相连的客户端从不同的视域观察场景,并且计算机系统为各客户端传输合成的渲染资源,以在其自己的渲染引擎上使用。在特定的实施例中,渲染资源为光照贴图或者VSD0,而该VSDO包含表示环境的漫射照明的光照贴图数据。因此,客户端可以在保持高品质的光能传递照明的同时,使用渲染资源从不同的视点渲染场景。在特定的实施例中,客户端与接收到的包含用于环境的众包漫射照明的渲染资源相结合地在本地渲染快速变化的镜面反射照明。因此,随着具备高性能GPU的客户端节点数量的增加,任何特定的场景都可以更快地或者以更高的图形质量被渲染出来。
[0009]在一个实施例中,公开了一种用于生成合成渲染的方法。该方法包括通过处理器将如下所述的信息传输给一个或者多个客户端,即,所述信息包括:公共渲染资源;不同于其他被传输的空间位置的唯一的空间位置;以及一个或多个利用公共渲染资源及其唯一的空间位置,或者利用公共渲染资源和被传输到一个或多个客户端中的每一个的相应的唯一空间位置生成渲染的指令。在一个实施例中,每个唯一的空间位置随机生成。
[0010]在一个实施例中,生成渲染的指令包括从唯一的空间位置在渲染资源上执行路径追踪的指令,其中,渲染的是用于包含渲染资源在内的部分或者整个环境的光照贴图。在一个实施例中,渲染的是一个帧,而且一个或多个指令进一步包括用来渲染该帧的一个公共视点。在一个实施例中,渲染资源为视口状态数据对象(VSD0),并且渲染的是由根据路径追踪的结果计算出的漫射照明数据来增强的渲染资源的集合。
[0011]该方法还包括:通过处理器从一个或多个客户端中的每一个接收渲染;以及通过处理器由接收到的渲染生成合成的渲染。由此生成的合成渲染被处理器传输到一个或多个客户端。在一个实施例中,通过处理器生成合成的渲染的过程包括:通过处理器添加接收到的光照贴图以生成由包含渲染资源在内的部分或者整个环境构成的复合光照贴图。在一个实施例中,通过处理器生成合成的渲染的过程还包括:添加接收到的帧以生成合成的帧。
[0012]本发明公开了一种接收合成渲染的方法。该方法包括:通过处理器从服务器接收渲染资源、唯一的空间位置以及一个或多个利用接收到的渲染资源和唯一的空间位置生成渲染的指令。所述方法还包括:通过处理器根据一个或多个指令生成渲染;通过处理器将生成的渲染传输给服务器;以及通过处理器从服务器接收合成的渲染。在一个实施例中,所述方法进一步包括:通过处理器从独立于服务器的视点渲染镜面反射照明;通过处理器将渲染的镜面反射照明与接收的合成渲染相结合;以及通过处理器将结合的渲染的镜面反射照明和接收的合成渲染输出给显示器。
[0013]在一个实施例中,公开了一种用于生成合成渲染的系统。该系统包括:图形处理单元、处理器以及用于有形地存储由处理器在其上执行的程序逻辑的存储介质。在一个实施例中,所述程序逻辑包括:公共渲染资源传输逻辑,其由处理器执行,以将公共渲染资源传输到一个或多个客户端;空间位置传输逻辑,其由处理器执行,用于将不同于其他传输的空间位置的唯一的空间位置传输到一个或多个客户端中的每一个;以及指令传输逻辑,其由处理器执行,以将一个或多个指令传输到一个或多个客户端中的每一个,从而利用公共渲染资源及其唯一的空间位置生成渲染。在一个实施例中,程序逻辑进一步包括:由处理器执行的接收逻辑,其用于从一个或多个客户端中的每一个接收渲染;由处理器执行的合成渲染生成逻辑,其用于根据接收到的渲染生成合成的渲染;以及由处理器执行的合成渲染传输逻辑,其用于将合成的渲染传输给一个或多个客户端。
[0014]在一个实施例中,公开了一种用于接收合成的渲染的系统。该系统包括:图形处理单元、处理器以及用于有形地存储由处理器在其上运行的程序逻辑的存储介质。在一个实施例中,所述程序逻辑包括:由处理器执行的接收逻辑,其用于从服务器接收渲染资源、唯一的空间位置以及一个或多个有关利用接收到的渲染资源和唯一的空间位置生成渲染的指令。所述程序逻辑进一步包括:由处理器执行的渲染生成逻辑,其用于根据所述的一个或多个指令生成渲染;由处理器执行的传输逻辑,其用于将生成的渲染传输给服务器;以及由处理器执行的合成渲染接收逻辑,其用于从服务器接收合成的渲染。在一个实施例中,所述系统还包括:由处理器执行的照明渲染逻辑,其用于从独立于服务器的视点渲染镜面反射照明。所述系统还包括:由处理器执行的合并逻辑,其用于使渲染的镜面反射照明和接收的合成渲染组合;以及由处理器执行的输出逻辑,其用于将合并的渲染镜面反射照明和接收的合成渲染输出到显不器。
[0015]在一个实施例中,生成渲染的指令传输逻辑还包括从唯一的空间位置在渲染资源上执行路径追踪的指令,其中,所述渲染是用于包含渲染资源在内的部分或者整个环境的光照贴图。在一个实施例中,合成渲染生成逻辑还包括添加逻辑,其可添加接收到的光照贴图以生成包含渲染资源在内的部分或者整个环境的合成光照贴图。在一个实施例中,合成渲染生成逻辑进一步包括由处理器运行的添加逻辑,其添加接收到的帧以生成合成的帧。
[0016]通过参考以下的详细说明和附图,本领域的技术人员将会明了其特征能够结合的上述和其他实施例。
【专利附图】
【附图说明】
[0017]图1示出了实现众包图形渲染系统的一个示例性客户机-服务器系统。
[0018]图2示出了一种从固定的视点将帧的渲染分配给多个客户端的方法。
[0019]图3示出了用于给定场景的示例性的为接收的客户端帧。[0020]图3A示出了通过添加图3所示接收的客户端帧而生成的合成帧。
[0021]图4示出了将环境的渲染分配给多个客户端的方法。
[0022]图5示出了示例性的用于图4中的客户端的显示输出。
[0023]图6示出了示例性的网络环境。
[0024]图7示出了示例性的计算机系统。
【具体实施方式】
[0025]现在参考如附图中所示的一些实施例来详细描述本发明。为了更加透彻地理解本发明,在以下的描述中阐述了许多具体细节。但是,本领域技术人员可以明确的是,在缺少部分或全部这些具体细节的情况下也可以实现本发明。在其他情况下,为了不会使本发明存在不必要的不清楚之处,没有具体描述公知的处理步骤和/或结构。另外,尽管结合特定的实施例对本发明进行描述,但应该理解的是,该描述并不旨在将本发明限制于所描述的实施例。相反,该描述旨在覆盖可包括在由所附权利要求书限定的本发明的精神和范围内的替换、改进和等同方案。
[0026]可包括多个装置、组件、模块及类似物的系统将具有不同方面或者各种特征。需要明白和认知的是,各种系统可以包括额外的设备、组件、模块等和/或可以不包括结合附图所讨论的所有的设备、组件、模块等。也可以使用这些方案的结合。
[0027]客户机-服务器架构使服务器能够与一个或多个客户端共享其资源。这样的架构具有很多优点。例如,由于与客户端相比服务器通常具有更多的资源(例如,处理器或者内存)和更强大的性能,服务器能够比客户端所能更快地完成任务。当任务为资源密集型或者当客户端的资源有限时,上述的性能差异将特别显著。同时,当服务器代表客户端或者为客户端执行任务时,客户端的资源可被释放以执行其他的任务,诸如那些需要在客户端本地上执行的任务(例如,与客户端的用户的交互)。
[0028]一种可适合于在服务器上执行的任务类型可以是对由服务器托管的应用进行渲染以作为视频输出传输给客户端。在计算机绘图方面,渲染可以被认为是通常通过计算机程序由模型生成图像的过程。所述模型通常是对三维(3D)对象的描述并且能以严格定义的语言或者数据结构来表示。模型可以包含几何形状、视点、纹理、照明、底纹、动作以及其他适当的信息类型。由模型渲染而成的图像可以是由像素集合形成的数字图像或者光栅图形图像。本说明书将渲染的概念扩大到生成表示任何应用的任何输出的图像。可以基于包括二维(2D )数据以及3D数据的任意数据执行渲染。除了基于3D模型生成图像之外,特定的实施例可以渲染表示如下所述应用的输出的图像,即,所述应用诸如(例如并且不限于)网页浏览应用,、文字处理应用,电子表格应用,多媒体应用,科学和医学应用,以及游戏应用。
[0029]然而,如上所述,单纯的服务器端图形渲染架构由于额外的服务器和GPU的成本而规模较小。另外,为满足高峰需求而适当增添了服务器/GPU基础设施的系统经常在非高峰时段存在严重利用不足的情况,这导致了浪费或者服务器或GPU资源闲置。
[0030]在本领域中众所周知,可利用点对点(P2P)架构在对等体之间分配任务。由于更多的节点进入到网络中,对等网络具有增加系统总容量和资源的优势。例如,在BitTorrent网络中,共享或者“播种”文件的节点越多,文件传输到请求文件的其它节点的速度就越快。对等网络广泛用于文件共享和流内容分发应用,但是由于其分散性本质,使得它们具有长的等待时间,这通常使它们不适合于诸如图形渲染的实时操作。本文提供了一种集中的基于服务器的服务器模型,其可将图形渲染任务下放到客户端节点,由此在图形渲染方面获得了 P2P架构的许多优点。
[0031]此外,多GPU渲染的现有方法都规模较小。传统上,多GPU系统采用分帧渲染模式(SFR)或交替帧渲染模式(AFR)这两种方法中的一种。在SFR中,每个GPU渲染每个帧的一部分。然而,处理的分配往往是不均匀的,比如在帧的一部分包含复杂的几何形状而另一部分包含相对简单的几何形状的情况下。尽管许多分配算法可以考虑各部分的图形复杂性,但是随着GPU数量的增加,分配算法变得越来越复杂,并且处理器本身也变得越密集。AFR涉及以轮转方式将完整的帧的渲染分发给各个GPU。然而,由于下一帧在这一帧的前一帧之前渲染而增加了延迟,使得这种技术规模较小。此外,由于GPU的数量接近帧率的有效百分率,所以对于下一个GPU来说在逻辑上不可能提前知道下一帧的样子。
[0032]本发明的一个实施例通过采用路径追踪来渲染给定3D环境的漫射照明而解决了多GPU的可扩展性问题。路径追踪是这样一种渲染技术,其试图通过从虚拟摄像机追踪经过在物体上的数次反射或者穿过物体的多条光线,尽可能接近地模拟出光线的物理特性。由路径追踪所提供的图像质量通常优异于利用传统的渲染方法以非常大的计算需求为代价而产生的图像的质量。路径追踪自然地模拟很多需要被特别添加到其他方法(光线追踪或者扫描线渲染)中的效果,例如软阴影,景深,动作模糊处理,焦散效果,环境光遮挡和间接照明。由于其精确性和无偏特性,在测试其他渲染算法的质量时,路径追踪被用于生成参考图像。然而,由于具有无数假设的照明路径,在渲染场景或者帧会聚到一个“完美发光”的图像上之前,必须对数量相当大的采样进行计算。通过分配路径追踪采样的生成,本发明的实施例公开了一种分布式图形渲染系统,其提供了无限的可扩展性以及P2P架构的优点;即,参与众包渲染处理的节点越多,渲染速度和输出质量就越高,并且不会有与传统的与服务器端图形渲染相关联的高成本。
[0033]图1示出了一个示例性的网络环境,本发明的特定实施方式可以在该网络环境中运行。如图1所示,本发明的特定实施方式可以在包括视频传输系统(VTS) 20的网络环境中运行,所述VTS20被可操作地连接到可以包括因特网的网络云60上。网络云60通常表示一个或多个互联的网络,本文所述的系统和主机能够通过该网络通信。网络云60可以包括封包式广域网(例如因特网)、私有网络、无线网络、卫星网络、蜂窝网络、寻呼网络,等等。网络云60中的一些网络可以是电路交换网络。包括网络60在内的计算机网络环境可以是封包式通信环境,使用TCP/IP协议(例如)和/或其他合适的协议,并具有多个互连的数字分组传输站或路由节点。通过网络服务提供商或任何其它合适的途径将客户端节点82和84可操作地连接到网络环境上。客户端节点82和84可以包括个人电脑或手机,以及其他类型的移动设备,例如手提电脑,个人数字助理(PDA),等等。客户端节点82包括能够执行渲染给定帧或者场景所需的一些或者全部渲染任务的GPU。客户端节点84可以包括低功率设备,例如PDA、移动电话、平板电脑、便携式游戏系统或类似设备;可以具有瘦客户端,并且缺乏足够的参与众包渲染系统所需的图形处理能力。
[0034]视频传输系统20是一个网络可寻址系统,其托管一个或多个虚拟世界、一个或多个视频或电影,或者可以被渲染以用于显示在客户端节点82和84上的任何3D环境。视频传输系统20可以包括网站和服务器功能,在这方面,用户可以通过计算机网络请求并获取指定的网页、视频和其他内容。
[0035]在特定的实施方式中,视频传输系统20包括一个或多个物理服务器22和一个或多个数据存储器24。所述的一个或多个物理服务器22经由路由器26可操作地连接到计算机网络60。一个或多个物理服务器22托管允许用户浏览可用内容的功能,例如从客户端节点82和84接收请求,以及将响应数据传输给客户端节点82和84。从路由器26到网络云60的连接应具有足够的带宽,可同时支持从多个客户端节点82和84接收渲染输出,以及将合成的渲染输出传输到客户端节点82和84。视频传输系统20同时充当接收器和播放器,并且路由器26的管道应当足够宽大或具有高的带宽,以支持这种功能。在一种实施方式中,由一个或多个物理服务器所托管的功能可以包括web或HTTP服务器、RTSP服务
m坐坐
[0036]如上所述,物理服务器22托管有关支持和运行视频传输系统20的功能。在一种实施方式中,数据存储器24可以存储诸如数字内容数据对象、用户信息和其他媒体资源的视频内容。在特定的实施方式中,内容数据对象或内容对象是由通常被存储或嵌入在数据文件或记录中的数字信息构成的独立项目。内容对象可以采取许多形式,包括:文本(例如,ASCI1、SGML、HTML)、图像(例如,jpeg、tif和gif )、图形(基于矢量或位图)、音频、视频(例如,mpeg)、或其它多媒体,以及它们的组合。内容对象数据也可以包括可执行的代码对象,对象或资源的定义等。在结构上,内容数据存储器24暗含包括许多数据存储和管理系统。在特定的实施方式中,内容数据存储器24可通过包括诸如数据库服务器、海量存储介质、媒体库系统的组件或类似物的任何合适的物理系统来实现。
[0037]在特定的实施例中,众包渲染系统是通过软件程序来实现的。在特定的实施例中,软件程序(以下称之为“软件插桩”或简称为“插桩”)可以安装在客户端节点82和84上并在其上运行。在特定的实施例中,所述插桩可以在网络节点82、84和视频传输系统20之间建立网络连接,并且通过网络连接将计算机软件程序从视频传输系统20下载到客户端节点82和84。在特定的实施例中,从视频传输系统20下载到客户端节点82/84的一款软件的可执行代码可以嵌入在通过网络连接从VTS20向客户端节点82/84发送的数据流中。当接收到数据流时,所述插桩可以提取该款软件的可执行代码,并且将其直接加载到客户端82/84的随机存取存储器(RAM)中,以便在客户端上执行。这款软件不会被保存或安装到客户端的任何永久性存储器(例如,硬盘驱动器)上。一旦该款软件完成其在客户端82/84上的运行,其中装载该款软件的可执行代码的RAM空间就被释放出来,而且该款软件不再存在于客户端82/84上的任何位置。在特定的实施例中,插桩程序在能够加入众包图形渲染系统的客户端节点82上安装渲染引擎或应用,并且在缺乏参与众包渲染的必要处理能力的客户端节点84上仅安装浏览器应用。
[0038]在特定的实施例中,插桩可以是保存或安装在客户端82/84上的可独立应用的软件程序或安装在客户端82/84上的网页浏览器中的插件式程序或外挂软件。所述插桩可以利用任何合适的现有方法保存或安装在客户端82/84上,以用于将计算机软件程序分配给各个计算机系统(例如CD、DVD、网络下载等)。在特定的实施例中,所述插桩可以是一款瘦身软件(即,规模较小),由此其不会占用太多客户端节点82/84的存储容量。如果所述插桩是一个可独立应用的软件程序,则其可以独自运行,或者如果它是插件式程序或外挂程序,则其可通过网页浏览器来运行。[0039]通过使用插桩在客户端82/84上下载并启动计算机软件程序,只有插桩本身需要被永久保存或安装在客户端82/84上。其他款的软件可以被下载到客户端82/84上并在客户端82/84上启动,而无须将其保存或安装在客户端82/84上,这可以减少对客户端82/84的存储容量的使用。此外,由于一款软件是在执行之前才被下载到客户端节点82/84之一上,所以每次该款软件被下载和启动时,特定的实施例有利于提供最新(或任何所需的)的软件版本。
[0040]关于软件插桩的详细介绍,请参阅共同持有的美国发明专利申请,美国专利申请N0.12/624,133,其发明名称为“基于流的软件应用传递和启动系统,申请日为2009年11月23日,该文件在此被全部引入作为参考。
[0041]虽然图1描述了一种集中式客户机-服务器架构,但是本发明也考虑了任何用于在多个客户端节点之间进行通信的网络拓扑方式。在特定的实施例中,客户端节点可被设置为一个对等网络,其中,一个特定的节点被指定为中央节点并且基本上执行与VTS20相同的功能。在特定的实施例中,可以采用一种环形拓扑结构,并且可以将一个特定的对等体指定为运行与VTS20基本相同的功能的环形引导。本发明考虑了任何合适的用于将图形处理分配给对等节点的网络拓扑结构,包括但不限于总线、星形、网状和树状网络拓扑结构。
[0042]图2显示出了每个客户端从相同的视点对单个帧进行众包渲染的方法的一个例子。例如,可以采用图2所示的方法,其中,相连的客户端节点82和84均在观看同一部电影或视频,比如像玩具总动员3这样的计算机生成的电影。由VTS20所执行的动作在图2的左手边示出,参与节点82的动作在右上半边中示出,并且所有客户端节点82和84的动作在右下半边中示出。
[0043]在步骤201中,VTS20访问渲染一个帧所需的渲染资源。在特定的实施例中,渲染资源可以被存储在数据存储器24中并随后从其中取出。在特定的实施例中,渲染资源可以由VTS20动态地生成。在特定的实施例中,渲染资源可以是给定的环境、场景或帧中的真实的3D线框模型。但是,这种方法是带宽密集型的,并且没有利用3D对象的压缩。在特定的对象中,渲染资源为来自摄像机视点的立方体贴图。在特定的实施例中,渲染资源包括被称为VSDO的分层立方体贴图,其可以用像素或片段着色器渲染成用于给定帧的像素值。
[0044]立方体贴图基本上是拼接成一个立方体的六个纹理贴图。每个纹理贴图包括纹素,其为场景相对于公共参考点的像素信息。可以通过使用立方体的面作为窗口矩形而从公共参考点渲染场景的方式来生成在立方体表面上的纹理贴图。每一纹素可包含材料特性(折射率,颜色等)、与参考点的距离和表面法线向量。可以利用深度剥离来获得表示一个场景的一组分层纹理贴图。可以限制剥离经过的数量,以控制层的数目。VSDO可以以即时或存储的方式在渲染设备上初始生成,以用于后续的响应对视频的请求而进行的传输。渲染设备能够利用立方体贴图和多个经过深度剥离或一些其它合适处理的渲染目标在GPU上有效地生成VSDO。
[0045]分层纹素阵列(由场景的深度排序的层组成)的每个纹素在纹素的深度剥离层内存储了有关在参考点和最远对象点之间的所有对象点的信息。为了对应于分层立方体贴图地生成场景的渲染表现,图形处理单元可以从公共原点追踪光线,以确定原点和场景中的对象之间的距离,利用片段着色器单元来计算从原点可见的点的辐亮度。渲染处理通常涉及光栅化场景几何形状和找出光线通过像素的第一命中点。关于VSDO和VSDO渲染的详细介绍,请参见共同持有的美国发明专利申请,美国专利申请N0.12/484,462,其发明名称为“用于视频压缩的渲染资源的再利用”,申请日为2009年6月15日,该文在此被全部引入以作为参考。
[0046]在步骤202中,VTS20将渲染资源(在这个例子中,为场景或环境的VSD0)传输给任何具有能够参与众包渲染处理的GPU的客户端节点82。在特定的实施例中,只有给定场景的第一帧需要将被传输给客户端的VSD0,并且随后的帧仅需要描述摄像机或各个对象如何变化的绘制指令。在特定的实施例中,一个特定场景的静态元素可以作为一个VSDO被传输,而场景的动态元素作为单独的VSDO被传输。因此,即使在切换活跃的场景中,也只需要更新或传输动态的VSD0。本发明预料到压缩视频数据或者通过对先前发送的VSDO再利用来节省带宽的任何合适的方式。
[0047]VTS20也将唯一的空间位置传输给每个参与众包渲染处理的客户端节点82。唯一的空间位置代表用于路径追踪的虚拟眼睛或镜头的位置;每个客户端节点82追踪一个从其唯一的空间位置往回的假想光线,直到它碰到光源(可能永远不会)。在特定的实施例中,被分配给每个客户端节点82的唯一的空间位置是由VTS20随机分配的。在特定的实施例中,唯一的位置并不基于试图识别具有高命中光源概率的光线的路径追踪算法。在特定的实施例中,路径追踪算法稍微修正先前追踪成功的路径。在特定的实施例中,选择唯一空间位置的路径追踪算法是蒙特卡罗、Kajiya或Metropolis-Hastings (如在Metropolis光传输中所描述的)算法。本发明考虑了任何合适的路径追踪算法或将唯一的空间位置分配到参与众包渲染处理的客户端节点的方法。
[0048]在步骤203中,客户端节点82从唯一的空间位置在接收到的渲染资源上执行路径追踪。如前所述,渲染资源可以是一个或多个VSD0,针对先前发送的VSDO的变换指令或绘制指令,或者这两者的任意组合。在特定的实施例中,客户端节点82执行双向路径追踪。本发明预料到获得路径追踪样品的任何合适的方式。作为该路径追踪操作的结果,客户端设备82生成粗略估计帧的漫射照明的样本帧。即使对场景照明的估计较差并且具有很强的噪声,客户端节点82也能够相对较快地生成这些样本帧。
[0049]在步骤204中,参与众包渲染处理的每个客户端节点82将其渲染的帧传输回VTS20。在特定的实施例中,照明数据可以被添加到VSDO中,并且客户端节点82可以传输回被照明数据增强的VSD0。在特定的实施例中,只有光照贴图,或包括映射到VSDO上的照明信息的纹理被传输回VTS20。本发明预料到带宽优化或视频压缩的任何合适的方式。
[0050]在步骤205中,VTS20根据接收到的帧生成合成帧。由于光的相加性,VTS20可以通过将所有接收到的帧加到一起并且除以接收到的帧的数目的方式而快速地生成合成帧。在特定的实施例中,VTS20采用大的浮点缓冲器来存储累加的结果。在特定的实施例中,VTS20由接收到的光照贴图生成一个合成的光照贴图,并且将合成的贴图映射到VSDO上。本发明预料到生成合成帧的任何合适的方式。所述合成帧应当根据场景的复杂性和样本的数目汇聚成完美的辐射度照明。例如,生成8个独立样本的8个客户端节点可以产生相当不错的帧的表示,64个将产生超低噪声的合成帧,而1000个样本可以产生具有完美的漫射照明的帧。
[0051]在步骤206中,VTS20将合成帧传输到观看视频流的每个客户端节点(包括参与节点82和未参与节点84),并且在步骤207中,各个客户端节点82/84将接收到的合成帧显示在其显示器上。在步骤208,处理结束,VTS传输渲染资源、变换和绘制指令,或这两者的结合,用于视频序列中的下一帧。
[0052]图3显示出由客户端节点82接收到的渲染帧的一个例子。每一帧301-320表示来自单个客户端节点82的输出,其通过从针对给定场景的唯一的空间位置执行路径追踪而获得。帧301-320的清晰度不等;例如,帧301和302描绘非常少的有关场景中的对象的细节,而帧320为观看者提供了一个相当好的、但有噪音的场景表现。图3A示出了通过添加帧301-320而生成的合成帧321的一个例子。虽然还是有些噪音,但是合成帧提供了场景的清晰画面,并含有高度精确的漫射照明,包括柔和反射、阴影、投影胶片和焦散。图3和图3A描绘了光的相加性以及可通过组合由路径追踪生成的20帧而获得的画面质量的表现。因此,本发明类似于对等文件共享;比如在BitTorrent中“播种”;参与的客户端节点82的数目越大,渲染速度就越快,而且传递到请求输出的所有节点的渲染输出的质量也越高。例如,在特定的实施例中,当场景的将被合成的样本的所需数目超过了参与节点的数目时,中央服务器或参与节点必须执行多个渲染,由此增加了总的渲染时间。随着越来越多的拥有兼容GPU的客户端节点“播种”场景,渲染速度得到提高。
[0053]图4用于说明根据本发明的一个实施例的一种将环境渲染分配给多个客户端的示例性方法。在特定的实施例中,VTS20的多个用户可利用交互程序,其中,每个客户端节点82/84的显示并不被锁定到一个特定的摄像机视点。例如,多个用户可以使用诸如Maya或3D Studio Max这样的计算机辅助设计(CAD)程序从各种不同的角度独立观察一个特定的环境。另一个例子是,一些客户端节点可以与在同一环境中互动的多个用户玩视频游戏。例如,在魔兽世界中,多个用户可以通过处理能力不同的设备全部处在一个特定的房间。
[0054]图5示出了这种情形的一个例子。在图5中,3D环境500包括数个光源503和反射池504。当渲染时,反射池504可以同时包含漫射照明和镜面反射照明。两个用户控制的人物501和502处在环境500中。每个用户都有一个特定的摄像机视野和视口 501a和502a。镜面反射照明,包括来自于光源503的在环境500中的反射,需要同时得知光线的路径和每个用户的视口 501a和502a。因此,特别是在快速、实时的应用诸如动作游戏或第一人称射击游戏中,漫射照明与镜面反射照明相比是移动比较缓慢和静止的。对这个例子来说,用户501正在使用一种能够参与众包渲染处理的设备(客户端节点82),诸如具有强大GPU的个人电脑或者联网的游戏机,而用户502正在使用一种缺乏执行渲染、甚至其本身的镜面反射照明的图形处理能力的瘦客户端设备,诸如移动电话或平板电脑。
[0055]回到图4,在步骤401中,VTS20生成或访问特定环境500的VSDO。VTS20可响应于来自在客户端节点82和84上运行的软件插桩的请求而生成VSD0。例如,当客户端节点82/84的用户启动游戏应用程序或发送命令到VTS,表明他们的玩家正移动到一个特定的环境或沿一个特定的方向察看时,VTS20在用户的人物周围的环境中为目标动态地生成VSDO0
[0056]在步骤402中,VTS20将VSDO和唯一的空间位置传输给每个参与的客户端节点82。在特定的实施例中,仅当客户端的用户进入新的环境时,VTS20才会传输VSD0。此外,在步骤402中,VTS20将唯一位置指示器传输给参与的客户端节点82。这种唯一位置指示器独立于客户端节点82所代表的用户的视口 501a,但却是一个很随机的点,从该点开始用于漫射照明的计算的路径追踪。在特定的实施例中,分配给每个客户端节点82的唯一的空间位置是由VTS20随机分配的。在特定的实施例中,唯一位置并不基于试图识别具有高光源命中概率的光线的路径追踪算法。在特定的实施例中,路径追踪算法稍微修正先前追踪成功的路径。在特定的实施例中,选择唯一的空间位置的路径追踪算法是蒙特卡罗算法、Kajiya算法或Metropolis-Hastings (如在Metropolis光传输中描述的)算法。本发明可适用任何合适的路径追踪算法或将唯一的空间位置分配给参与众包渲染处理的客户端节点的方法。
[0057]在步骤403中,客户端节点82执行路径追踪以生成用于环境500的光照贴图。光照贴图仅仅是包含可以被映射或换肤(skin)到VSDO上的环境照明的或漫射照明数据的纹理。当光照贴图被映射到VSDO并且该VSDO通过渲染引擎被渲染时,场景或环境向用户准确地显现出发亮。在特定的实施例中,光照贴图仅仅是VSDO的一个附加层。在特定的实施例中,光照贴图可以与VSDO分开发送。在特定的实施例中,光照贴图可以使用2D压缩算法(诸如JPG或离散余弦转换(DCT))进行压缩。
[0058]在步骤404中,每个参与的客户端节点82将其光照贴图传输给VTS20。在特定的实施例中,每个客户端节点82传输回一个增强VSD0。在特定的实施例中,每个客户端节点82在传输之前压缩其生成的光照贴图。本发明考虑了将渲染后的漫射照明信息反馈给VTS20的任何合适的方式。
[0059]在步骤405中,VTS20基于接收到的来自客户端节点82的光照贴图生成合成的光照贴图。光的相加特性正如其对各个帧所做的那样同样适用于光照贴图。在特定的实施例中,VTS20通过将所有接收到的光照贴图的累加结果存储在一个大的浮点缓冲器上,并且用该结果除以接收到的光照贴图的数目,来生成合成的光照贴图。在特定的实施例中,在已经达到接收的光照贴图的时间或数量的阈值之后,VTS自动地生成合成的光照贴图。由于在超过一定阈值之后每个客户端节点的光照贴图仅在一定程度上提高漫射照明的质量,因此VTS20可以选择在不等待因延迟而迟到的客户端光照贴图的情况下生成合成的光照贴图。在特定的实施例中,为了每次刷新都能获得最高质量的光照贴图,VTS20在生成合成的光照贴图之前会一直等待,直到接收到每一个客户端节点的光照贴图。由于漫射照明与视点无关并且不随环境而快速变化(假设光源不动),平移改变其视点的用户不太可能注意到刷新环境的漫射照明时的延迟,而渲染直接关系到用户视点的镜面反射照明时的延迟则是引人注意的。
[0060]在步骤406中,VTS20将合成的光照贴图传输回参与的客户端节点82。在特定的实施例中,VTS20传输回一个或多个由包含合成光照贴图的层所增强的环境500的VSD0。在特定的实施例中,VTS20仅传输合成光照贴图。在特定的实施例中,合成光照贴图可以使用2D压缩技术进行压缩。在特定的实施例中,VTS20只传输发送至客户端节点82的同一VSDO的上一光照贴图和合成光照贴图之间的变化。本发明考虑了在将漫射照明数据传输给客户端节点82时可节约带宽的任何合适的方法。
[0061]在步骤407中,参与的客户节点82基于它们自己的视点(如视点501a)渲染环境的镜面反射照明。由于参与的客户端节点82具备足够强大的GPU从而可执行用于漫射照明的路径追踪,因此它们应该足够强大到能够渲染镜面反射照明。同时,随着在步骤407中生成镜面反射照明,每个客户端节点82的用户视口(如501a)被渲染在客户端节点82的显示器上。[0062]在特定的实施例中,由于用户502利用的是未参与的客户端节点84,其缺乏足够强大的、可执行路径追踪的GPU,VTS20假定客户端设备84缺乏执行依赖于其自身视点的镜面反射照明的处理能力。因此,VTS20在服务器端为客户端节点84渲染整个视口(如视口502a)。
[0063]在步骤409中,VTS20基于环境的VSD0、合成光照贴图和从每个相连的客户端节点84接收到的摄像机信息渲染瘦客户端节点84的视口。在特定的实施例中,VTS20利用一个命中函数来校正VSDO的原点和每个客户端84的参考点(摄像机视口)的差异。
[0064]在步骤410中,VTS20将每个瘦客户端84的经渲染的视口帧传输到其各自的客户端。在特定的实施例中,帧可以通过2D压缩技术进行压缩。在步骤411中,客户端设备84将其接收到的帧显示在其各自的显示器上。
[0065]因此,本发明的特定实施方式提供了一种可全面扩展的、具有类似P2P质量的分布式渲染架构,其中,最终的渲染图像的质量与参与分布式渲染系统的客户端节点的数目直接相关。
[0066]可以在网络环境中实现特定的实施方式。图6示出了一个示例性的网络环境600。网络环境600包括将一个或多个服务器620与一个或多个客户端630彼此连接的网络610。在特定的实施例中,网络610可以是企业内部互联网、外联网、虚拟专用网络(VPN)、局域网(LAN)、无线LAN (WLAN)、广域网(WAN)、城域网(MAN)、通信网络、卫星网络、国际互联网络的一部分、或者另一个网络610或者两个或多个上述网络610的组合。本发明适用任何适当的网络610。
[0067]一个或多个链路650将服务器620或者客户端630连接到网络610。在特定的实施例中,一个或多个链路650的每一个都包括一个或多个有线的、无线的、或者光链路650。在特定的实施例中,一个或多个链路650的每一个都包括企业内部互联网、外联网、VPN、LAN、WLAN、WAN、MAN、通信网络、卫星网络、国际互联网络的一部分,或者另一个链路650或者两个或多个上述链路650的组合。本发明考虑了将服务器620和客户端630连接到网络610的任何适当的链路650。
[0068]在特定的实施例中,每个服务器620可以是单一式服务器或者可以是跨多个计算机或多个资料处理中心的分布式服务器。服务器620可以具有各种类型,诸如,举例并不限于,网络服务器、新闻服务器、邮件服务器、消息服务器、广告服务器、文件服务器、应用服务器、交换服务器、数据库服务器或者代理服务器。在特定的实施例中,每个服务器620可包括硬件、软件或者嵌入式逻辑元件或者两个或多个上述元件的组合,以用于执行由服务器620实施或者支持的适当功能。例如,网络服务器通常能够托管包含网页或者网页的特定元素的网站。更具体地,网络服务器可托管HTML文件或者其他文件类型,或者可根据需要动态地创建或者构造文件,并且响应来自客户端630的HTTP或者其他请求将它们传送给客户端630。邮件服务器通常能够为各种各样的客户端630提供电子邮件业务。数据库服务器通常能够提供用于管理存储在一个或者多个数据存储器中的数据的接口。
[0069]在特定的实施例中,每个客户端630可以是电子设备,包括硬件、软件或者嵌入式逻辑元件或者两个或多个上述元件的组合,并能够执行由客户端630实施或者支持的适当功能。举例而言但不限于,客户端630可以是台式计算机系统、笔记本计算机系统、上网本计算机系统、手持电子设备或者移动电话。客户端630可使在客户端630的网络用户能访问网络 610。客户端 630 可以具有诸如 Microsoft Internet Explorer 或者Mozilla Firefox的网页浏览器,并可以具有一个或多个诸如Google Toolbar工具栏或者Yahoo Toolbar工具栏的附加软件、插件或者其他扩展件。客户端630可使其用户能够与其他客户端630上的其他用户通信。本发明适用任何适当的客户端630。
[0070]在特定的实施例中,一个或多个数据存储器640可经由一个或多个链路650与一个或多个服务器620交互链接。在特定的实施例中,数据存储器640可被用于存储各种类型的信息。在特定的实施例中,可根据具体的数据结构来组织存储在数据存储器640中的信息。特定的实施例可提供使得服务器620或者客户端630能够管理(例如,检索、改变、增加或者删除)保存在数据存储器640中的信息的接口。
[0071]在特定的实施例中,每个服务器620可并行地为一个或多个客户端630服务并对其支持的客户端630运行渲染。服务器620可通过对视频流中渲染过的图像进行编码,以每个渲染过的图像作为一个特定帧的方式,为其支持的特定客户端630传输渲染过的图像,并且将该视频流传输给客户端630。客户端630在接收视频流时,可解码该视频流以提取图像帧用于显示。
[0072]可通过硬件、软件或者硬件和软件的结合来实施特定的实施例。举例而言但并不限于,一个或多个计算机系统可执行特定的逻辑或软件以运行本文所描述和阐明的一个或多个处理过程中的一个或多个步骤。一个或多个计算机系统可以是单一式或分布式的,在适当情况下,跨多个计算机系统或者多个资料处理中心。本发明适用任何适当的计算机系统。在特定的实施例中,运行本文中所描述和阐明的一个或多个处理过程的一个或多个步骤不必局限于一个或多个特定的地理位置并且不必具有时间限制。举例而言但并不限于,一个或多个计算机系统能以“实时”、“脱机”、“批处理方式”执行它们的功能,另外,在适当情况下,也可以前述的“实时”、“脱机”、“批处理方式”的合适的组合执行。在适当情况下,一个或多个计算机系统可在不同的时间、在不同的场所、使用不同的处理执行它们的一个或多个功能。在此,对逻辑的引用可包含软件,并且在适当情况下,反之亦然。对软件的引用可包含一个或多个计算机程序,并且在适当情况下,反之亦然。对软件的引用可包含数据、指令或者它们两者,并且在适当情况下,反之亦然。类似地,对数据的引用可包含指令,并且在适当情况下,反之亦然。
[0073]一个或多个计算机可读存储介质可以存储或以其他方式包含实现特定的实施例的软件。在适当情况下,计算机可读介质可以是能够携带、通信、容纳、持有、保持、传播、保留、存储、传输、输送,或以其他方式包含软件的任何介质。在适当情况下,计算机可读介质可以是生物的、化学的、电子的、电磁的、红外的、磁性的、光学的、量子的或者其他适当的介质,或者两个或多个上述介质的组合。计算机可读介质可包括一个或多个纳米级元件或者以其他方式包含纳米级设计或制造。示例性的计算机可读存储介质包括但是不限于:压缩光盘(CD)、现场可编程门阵列(FPGA)、软盘、软式光盘、硬盘、全息存储设备、集成电路(IC)(诸如专用集成电路(ASIC ))、磁带、高速缓冲存储器、可编程逻辑器件(PLD )、随机存取存储器(RAM)设备、只读存储器(ROM)设备、半导体存储器设备,和其他适当的计算机可读存储介质。
[0074]在适当情况下,实现特定的实施例的软件能以任何适当的编程语言(其可以是程序性的或者面向对象的)或者编程语言的组合来进行编写。在适当情况下,任何适当类型的计算机系统(诸如单处理器或者多处理器计算机系统)或者多个系统可执行实施特定的实施例的软件。在适当情况下,通用计算机系统可执行实施特定的实施例的软件。
[0075]例如,图7说明了适用于实施特定实施例的一个或多个部分的一个示例性的计算机系统700。虽然本发明描述和阐明了特定配置下的具有特定元件的特定计算机系统700,但本发明适用任何合适配置下的具有任何合适元件的任何合适的计算机系统。此外,计算机系统700可具有任何适当的物理形式,例如一个或多个集成电路(1C)、一个或多个印刷电路板(PCB)、一个或多个手持或者其他设备(诸如移动电话或PDA)、一个或多个个人计算机、或者一个或多个超级计算机。
[0076]系统总线710将计算机系统700的各子系统彼此连接起来。在此,对总线的引用包括提供常见功能的一个或多个数字信号线。本发明适用任何适当的系统总线710,包括具有任何适当的总线架构的任何适当的总线结构(诸如一个或多个存储器总线、一个或多个外围总线、一个或多个本地总线、或者上述总线的组合)。示例性的总线架构包括但不限于,工业标准结构(ISA)总线、增强ISA (EISA)总线、微通道架构(MCA)总线、视频电子标准协会局部(VLB)总线、外围元件互连(PCI)总线、PCI快速总线(PC1-X)以及图形加速端口(AGP)总线。
[0077]计算机系统700包括一个或多个处理器720 (或者中央处理单元(CPU))。处理器720可包含缓存722,以用于暂时本地存储指令、数据、或者计算机地址。处理器720与含有内存730的一个或多个存储设备相连。内存730可包括随机存取存储器(RAM) 732和只读存储器(R0M)734。数据和指令可在处理器720与RAM732之间双向传输。数据和指令可从R0M734单向传输到处理器720。RAM732和R0M734可包括任何适当的计算机可读存储介质。
[0078]计算机系统700包括与处理器720双向连接的固定的储存器740。固定的储存器740可经由储存控制单元752连接到处理器720。固定的储存器740可提供额外的数据存储容量并可包括任何适当的计算机可读存储介质。固定的储存器740可存储操作系统(OS)742、一个或多个可执行文件744、一个或多个应用或者程序746、数据748,等等。固定的储存器740典型地为比主存储器慢的辅助存储介质(诸如硬盘)。在适当的情况下,可把由固定的储存器740存储的信息作为虚拟内存并入内存730。
[0079]处理器720可与多种接口连接,诸如,例如,图形控制754、视频接口 758、输入接口760、输出接口 762、以及存储器接口 764,这些接口又可以分别连接到适当的设备上。示例性的输入或输出设备包括但是不限于,视频显示器、轨迹球、鼠标、键盘、麦克风、触敏显示器、传感器读卡器、磁带或者纸带读取器、平板电脑、手写笔、语音或者手写识别器、生物特征读取器或者计算机系统。网络接口 756可将处理器720连接到另一个计算机系统或者网络780。通过网络接口 756,处理器720可在执行特定实施例的步骤的过程中从网络780接收信息或者发送信息给网络780。特定的实施例可在处理器720上单独地运行。特定的实施例可在处理器720上和在共同操作的一个或多个远程处理器上运行。
[0080]在网络环境中,在计算机系统700被连接到网络780的情况下,计算机系统700可与连接到网络780的其他设备进行通信。计算机系统700可经由网络接口 756与网络780通信。例如,计算机系统700可以在网络接口 756上接收来自网络780的呈现为一个或多个输入包形式的信息(诸如来自另一个设备的请求或者响应),并且内存730可以存储输入包用于后续处理。计算机系统700可以将来自网络接口 756的呈现为一个或多个输出包形式的信息(诸如到另一个设备的请求或者响应)发送给网络780,所述信息在发送之前可由内存730存储。根据特定需求,处理器720可访问内存730中的输入或者输出包以对其进行处理。
[0081]计算机系统700可具有一个或多个输入设备766 (其可包括按键、键盘、鼠标、手写笔等)、一个或多个输出设备768 (其可包括一个或多个显不器、一个或多个扬声器、一个或多个打印机等)、一个或多个存储设备770、以及一个或多个存储介质772。输入设备766可在计算机系统700外部或者内部。输出设备768可在计算机系统700外部或者内部。存储设备770可在计算机系统700外部或者内部。存储介质772可在计算机系统700外部或者内部。
[0082]特定的实施例中包括一个或多个计算机存储产品,其包括一个或多个计算机可读存储介质,一个或多个计算机可读存储介质包含用于执行本文所描述或者阐明的一个或多个过程中的一个或多个步骤的软件。在特定的实施例中,介质的一个或多个部分、软件或者它们两者可被特别地设计和制造以执行本文所描述或者阐明的一个或多个处理过程中的一个或多个步骤。此外或者作为一种选择方案,在特定的实施例中,介质的一个或多个部分、软件或者它们两者在没有针对本文所描述或者阐明的过程进行具体设计或者制造的情况下可以是通用的。示例性的计算机可读存储介质包括但是不限于,CD (诸如CD-ROM)、FPGA、软盘、软式光盘、硬盘、全息存储设备、IC(诸如ASIC)、磁带、高速缓冲存储器、PLD、RAM设备、ROM设备、半导体存储器设备、及其他适当的计算机可读存储介质。在特定的实施例中,软件可以是编译器可生成的机器代码或者是包含高级编码的一个或多个文件,所述高级编码可以由计算机通过使用译码器来执行。
[0083]举例而言但并不限于此,内存730可包括一个或多个包含软件的计算机可读存储介质,并且计算机系统700可提供本文所描述或者阐明的特定功能作为处理器720执行所述软件的结果。内存730可存储所述软件,并且处理器720可执行所述软件。内存730可从包含软件的大容量存储设备730中的计算机可读存储介质读取软件,或者经由网络接口756从一个或多个其它的源读取软件。当执行软件时,处理器720可运行本文所描述或者阐明的一个或多个处理过程中的一个或多个步骤,根据特定需求,其可以包括定义一个或多个存储在内存730中的数据结构,以及在软件的一个或多个部分的指引下修改一个或多个数据结构。此外或者作为一种选择方案,由于硬连接的或在电路中所包含的逻辑,计算机系统700可提供本文所描述或者阐明的特定功能,所述计算机系统可代替软件或者和软件一起操作以执行本文所描述或者阐明的一个或多个过程的一个或多个步骤。根据特定的需求,本发明可包括任何合适的硬件和软件的组合。
[0084]在特定的实施例中,计算机系统700可包括一个或多个图形处理单元(GPU) 724。在特定的实施例中,GPU724可包含一个或多个针对图形渲染中常用的数学运算的集成电路和/或处理核。在一些实施例中,GPU724可使用专门的图形单元指令集,而在其他的实施方式中,GPU可使用类似CPU的(例如,改进的x86)指令集。图形处理单元724可实施许多基本图形操作,诸如位块传送、纹理映射、像素着色、帧缓冲,等等。在特定的实施例中,GPU724可以是图形加速器,通用GPU (GPGPU),或者任何其他适当的处理单元。
[0085]在特定的实施例中,GPU724可被包含在图形卡或显示卡中,该图形卡或显示卡通过卡槽安装在硬件系统架构上。在其他实施方式中,GPU724可被集成到计算机系统架构的主板上。适当的图形处理单兀可包括基于AMD公司(Advanced Micro Devices)(r)AMD R7XX的 GPU 设备(Radeon (r)HD4XXX)、基于 AMD R8XX 的 GPU 设备(Radeon (r)HD7XXX)、基于英特尔公司(r) Larabee的GPU设备(未发布)、nVidia公司(r) 8系列GPU、nVidia (r) 9系列 GPU,nVidia (r)100 系列 GPU,nVidia (r)200 系列 GPU、以及任何其他的 DXll-capableGPU。
[0086]虽然本发明描述或者阐明以特定顺序发生的特定操作,但是本发明适用以任何适当的顺序发生的任何适当的操作。此外,本发明适用以任何适当的顺序被重复一次或者多次的任何适当的操作。虽然本发明描述或者阐明按顺序发生的特定操作,但在合适的情况下,本发明适用基本上同时发生的任何适当的操作。在合适的情况下,本文所描述或者阐明的任何适当的操作或者操作顺序可被中断、中止,或由另一个过程(诸如操作系统或者内核)控制。动作能够在操作系统环境下进行或者作为占用系统过程的全部或者主要部分的独立应用程序进行。
[0087]本发明涵盖本领域技术人员应当理解的对本文示例性实施例所做的所有变更、替换、变化、更改和修改。同样,在合适的情况下,所附权利要求涵盖本领域技术人员可以理解的对本文示例性实施例所做的所有变更、替换、变化、更改和修改。
【权利要求】
1.一种方法,包括: 通过处理器将公共渲染资源传输到一个或多个客户端; 通过所述处理器向所述一个或多个客户端的每一个传输不同于其他传输的空间位置的唯一的空间位置; 通过所述处理器向所述一个或多个客户端的每一个传输一个或多个指令,以使用所述公共渲染资源及其唯一的空间位置生成渲染; 通过所述处理器从所述一个或多个客户端的每一个接收渲染; 通过所述处理器由接收到的渲染生成合成渲染;以及 通过所述处理器将所述合成渲染传输给所述一个或多个客户端。
2.如权利要求1所述的方法,其特征在于,每个唯一的空间位置是随机生成的。
3.如权利要求1所述的方法,其特征在于,生成渲染的指令包括从唯一的空间位置在渲染资源上执行路径追踪的指令。
4.如权利要求1所述的方法,其特征在于,所述渲染资源为视口状态数据对象(VSDO)。
5.如权利要求3所述的方法,其特征在于,所述渲染为包含渲染资源在内的部分或整个环境的光照贴图。
6.如权利要求5所述的方法,通过所述处理器生成合成渲染包括:通过所述处理器添加接收到的光照贴图以生成包含渲染资源在内的部分或整个环境的合成光照贴图。
7.如权利要求3所述的方法,其特征在于,所述渲染资源为视口状态数据对象(VSDO),而且所述渲染为被作为路径追踪的结果而`计算出的漫射照明数据所增强的一组渲染资源。
8.如权利要求3所述的方法,其特征在于,所述渲染为帧,并且所述一个或多个指令还包括渲染该帧的公共视点。
9.如权利要求8所述的方法,通过所述处理器生成合成渲染包括添加接收到的帧以生成合成帧。
10.一种方法,包括: 通过处理器从服务器接收渲染资源和唯一的空间位置; 通过所述处理器从服务器接收一个或多个指令,以利用接收到的所述渲染资源和所述唯一的空间位置生成渲染; 按照所述一个或多个指令通过所述处理器生成所述渲染; 通过所述处理器将生成的渲染传输给所述服务器;以及 通过所述处理器从所述服务器接收合成渲染。
11.如权利要求10所述的方法,还包括: 通过所述处理器从与服务器无关的视点渲染镜面反射照明; 通过所述处理器将渲染的镜面反射照明与接收到的合成渲染进行结合;以及通过所述处理器将结合在一起的经渲染的镜面反射照明和接收的合成渲染输出到显示器。
12.—种系统,包括: 图形处理单元; 处理器;以及 用于在其上有形地存储由所述处理器执行的程序逻辑的存储介质,所述程序逻辑包括: 公共渲染资源传输逻辑,其由所述处理器执行,用于将公共渲染资源传输给一个或多个客户端; 空间位置传输逻辑,其由所述处理器执行,用于将不同于其它传输的空间位置的唯一的空间位置传输给所述一个或多个客户端的每一个; 指令传输逻辑,其由所述处理器执行,用于将一个或多个指令传输给所述一个或多个客户端的每一个,所述一个或多个指令利用公共渲染资源及其唯一的空间位置生成渲染; 接收逻辑,其由所述处理器执行,用于从所述一个或多个客户端的每一个接收渲染; 合成渲染生成逻辑,其由所述处理器执行,以从接收到的渲染生成合成渲染;以及 合成渲染传输逻辑,其由所述处理器执行,用于将所述合成渲染传输给所述一个或多个客户端。
13.如权利要求12所述的系统,其特征在于,每个唯一的空间位置是随机生成的。
14.如权利要求12所述的系统,其特征在于,所述的生成渲染的指令传输逻辑还包括从所述唯一的空间位置在所述渲染资源上执行路径追踪的指令。
15.如权利要求12所述的系统,其特征在于,所述渲染资源为视口状态数据对象(VSDO)。
16.如权利要求14所述的系统,其特征在于,所述渲染为包含所述渲染资源在内的部分或整个环境的光照贴图。
17.如权利要求16所述`的系统,所述合成渲染生成逻辑还包括添加逻辑,用于添加接收到的光照贴图以生成包含所述渲染资源在内的部分或整个环境的合成光照贴图。
18.如权利要求14所述的系统,其特征在于,所述渲染资源为VSDO,而且所述渲染为被作为路径追踪的结果而计算出的漫射照明数据所增强的一组渲染资源。
19.如权利要求12所述的系统,其特征在于,所述渲染为帧,并且所述一个或多个指令还包括渲染该帧的公共视点。
20.如权利要求12所述的系统,所述合成渲染生成逻辑还包括由所述处理器执行的添加逻辑,其用于添加接收到的帧以生成合成帧。
【文档编号】G06F17/00GK103874991SQ201280039280
【公开日】2014年6月18日 申请日期:2012年8月9日 优先权日:2011年8月11日
【发明者】朱利安·M·乌尔巴赫 申请人:Otoy公司