用于多个视图生成的数据集合的制作方法

文档序号:11885144阅读:355来源:国知局
用于多个视图生成的数据集合的制作方法与工艺

本专利申请要求如下美国专利申请号的权益:2013年11月11日提交的美国专利申请号14/077,149;2013年11月11日提交的美国专利申请号14/077,165;以及2013年11月11日提交的美国专利申请号14/077,180,这些专利申请的公开通过引用全部并入本文。

本专利申请涉及如下专利申请,这些专利申请中每一个由此通过引用完整地并入本文:2013年11月11日提交的美国专利申请号14/076,718,标题为“基于关注区域的视频编码”(代理人案号:101058.000083);2013年11月11日提交的美国专利申请号14/076,821,标题为“基于服务质量的自适应场景复杂性”(代理人案号:101058.000084);2013年11月11日提交的美国专利申请号14/077,127,标题为“用于生成图形对象数据的服务”(代理人案号:101058.000086);2013年11月11日提交的美国专利申请号14/076,136,标题为“基于远程对象数据的图像合成”(代理人案号:101058.000087);2013年11月11日提交的美国专利申请号14/077,165,标题为“多个并行图形处理单元”(代理人案号:101058.0100110);2013年11月11日提交的美国专利申请号14/077,084,标题为“自适应内容传输”(代理人案号:101058.000114);2013年11月11日提交的美国专利申请号14/077,180,标题为“基于共享的状态的视图生成”(代理人案号:101058.000115);2013年11月11日提交的美国专利申请号14/077,186,标题为“多流内容呈现”(代理人案号:101058.000116);2013年11月11日提交的美国专利申请号14/077,142,标题为“流传输游戏服务器视频录制器”(代理人案号:101058.000125);2013年11月11日提交的美国专利申请号14/076,815,标题为“角色资源的位置”(代理人案号:101058.000128);2013年11月11日提交的美国专利申请号14/077,146,标题为“流传输服务器的会话空闲优化”(代理人案号:101058.000129);2013年11月11日提交的美国专利申请号14/077,023,标题为“应用流传输服务”(代理人案号:101058.000139);2013年11月11日提交的美国专利申请号61/902.740,标题为“高效带宽估算”(代理人案号:101058.000141)。



背景技术:

一些最近的技术发展使得位于多个不同远程位置的多个客户端彼此交互作为常见多媒体内容体验的一部分成为了可能。例如,可以在不同远程位置使用不同客户端共同玩一些常规视频游戏。在一些情况下,每个客户端可能具有与该客户端在游戏中的参与者关联的动作、事件或其他信息所对应的关联状态信息。例如,状态信息可以包括与特定人物或其他相应客户端控制的其他实体执行的动作关联的信息。实现多个客户端交互的一种常规方法包括,周期性地从每个参与客户端向服务器传送游戏状态信息,服务器进而可以向每个客户端转发回从每个其他客户端接收的已更新状态信息。每个客户端可以使用此已更新状态信息来维护其自己相应的个体游戏状态,该个体游戏状态进而可以被用于在每个客户端处呈现视频游戏的相应呈现。例如,每个特定客户端可以从相应客户端控制的特定人物或其他实体的角度表示视频游戏内的场景。

虽然上文描述的常规技术可以实现多客户端交互,但是它们也会包括多个缺点。例如,需要在客户端设备处维护状态和呈现图像,可能增加客户端设备上内容呈现软件的复杂度和使用要求。这可能导致提供有限功能的客户端设备上消耗大量资源。例如,客户端设备往往定位于偏好较小尺寸、更大便携性和更低费用的设备的消费者。此外,当无法将已更新状态信息从服务器有效地传送到多个客户端时,可能出现内容呈现中的时间延迟或中断。再者,客户端设备上存在更精致的游戏或其他内容可能产生该内容的作者和分销商所关注的盗版和其他安全性问题。而且,随着内容项目持续地变得更细节化和复杂,典型地仅包括单个图形处理单元的客户端设备更为可能地无法有效地呈现此类内容。

附图说明

在结合附图阅读时,可以更好地理解下文详细描述。出于说明的目的,附图中示出本发明公开的多个方面的示例实施方案;然而,本发明不限于所公开的具体方法和手段。

图1是图示一些实施方案中可以使用的示例计算系统的示意图。

图2是图示一些实施方案中可以使用的示例计算系统的示意图。

图3A是图示根据本发明公开的用于多个视图生成的示例系统的示意图。

图3B是图示根据本发明公开的用于完全相同视图生成的示例系统的示意图。

图4是图示根据本发明公开的第一示例内容传输系统的示意图。

图5是图示根据本发明公开的第二示例内容传输系统的示意图。

图6是图示根据本发明公开的第三示例内容传输系统的示意图。

图7是图示根据本发明公开的第一示例图形处理单元缩放情形的示意图。

图8是图示根据本发明公开的第二示例图形处理单元缩放情形的示意图。

图9是图示根据本发明公开的第三示例图形处理单元缩放情形的示意图。

图10是图示根据本发明公开的第四示例图形处理单元缩放情形的示意图。

图11是图示根据本发明公开的示例拼接(stitching)技术的示意图。

图12是图示根据本发明公开的多个示例层的示意图。

图13是图示根据本发明公开的示例分层技术的示意图。

图14是图示根据本发明公开的示例内容提供商系统的示意图。

图15是示出根据本发明公开的基于共享状态信息生成一个或多个视图的示例过程的流程图。

图16是示出根据本发明公开的使用一个或多个图形处理单元进行呈现的示例过程的流程图。

图17是图示根据本发明公开的采用数据集合来用于多个视图生成的示例系统的示意图。

图18是图示根据本发明公开的包括与多个视图关联的数据的第一示例数据集合的示意图。

图19是图示根据本发明公开的示例表示形成序列的示意图。

图20是图示根据本发明公开的包括与多个视图关联的数据的第二示例数据集合的示意图。

图21是示出根据本发明公开的采用数据集合来用于多个视图生成的示例过程的流程图。

具体实施方式

根据本发明公开的一些示例特征,可以由内容提供商生成特定内容项(如视频游戏)的场景的一个或多个呈现的视图,并从内容提供商传送到多个不同的客户端。在一些情况下,内容提供商可以生成特定内容项的场景的多个视图。可以例如将多个视图中每一个与一个或多个相应的客户端关联,并可以将其从内容提供商传送到相应客户端。例如,每个视图可以表示从作为该视图传送目标的相应客户端所控制的特定人物或其他实体的视角来看的场景。在一些情况下,内容提供商可以将特定内容项的场景的同一视图传送到多个客户端,例如可以将同一视图传送到控制密切相关的人物或协同控制单个人物的客户端。

为了能够生成场景的一个或多个视图,不同的参与客户端中每一个可以收集相应客户端状态信息。客户端状态信息可以包括例如,有关相应客户端处所执行的操作的信息,如相应客户端控制的相应人物或其他实体所执行的移动或其他动作。相应客户端中每一个可以周期性地将其相应客户端状态信息的更新传送到内容提供商。内容提供商然后可以使用从每个客户端接收的客户端状态信息更新来更新内容提供商维护的共享内容项状态信息。内容提供商然后可以使用共享内容项状态信息来生成传送到不同参与客户端的一个或多个视图。在一些情况下,参与客户端中的一个或多个可以采用混合模式工作,其中除了从内容提供商接收一个或多个视图外,混合模式客户端还执行内容项的其自己本地版本,并生成其自己本地客户端流。每个混合模式客户端然后可以在客户端本地处将接收的视图的内容提供商流与本地客户端流组合以生成和显示混合内容项流。

在一些情况下,内容提供商可以采用多个图形处理单元来生成特定内容项的场景的一个或多个视图。在一些情况下,多个图形处理单元可以至少部分地彼此同时生成与特定场景关联的呈现。再有,在一些情况下,使用多个图形处理单元可以帮助实现所呈现的视图的实时或准实时生成并呈现。在一些情况下,多个图形处理单元可以各呈现用于生成供显示的一个或多个最终视图的场景的相应部分。在一些情况下,对于每个视图,可以通过例如将呈现拼接在一起或采用在不同关联层上将呈现进行逻辑组合的表示以将多个呈现组合来形成视图。在一些情况下,用于呈现特定内容项的图形处理单元的数量可以是弹性的,以使该数量根据多种因素而改变。此类因素可以包括例如,与一个或多个图形处理单元关联的执行速率、呈现的场景的复杂度、与所呈现的场景关联的视图的数量、附加图形处理单元的可用性以及任何其他相关因素。

在一些情况下,可以将场景的多个不同视图组合成单个数据集合,如呈现目标。例如,此类单个数据集合可以包括多个分段,每个分段与多个视图中相应一个相关联。然后可以单独地提取该数据集合的每个分段、对其编码并通过网络传送。在一些情况下,场景内的每个对象可能具有在移动到下一个对象之前在数据集合的每个分段中形成的关联表示。例如,在形成第二个对象的表示之前,第一个对象的再现可能是跨数据集合的每个分段形成的。在一些情况下,这种形成序列可以减少与加载每个对象所关联的数据关联的状态改变,包括例如,多种几何形状、纹理、着色等。

在一些情况下,内容提供商可以呈现内容项视图并通过如因特网的电子网络将其传送到客户端。在一些情况下,可以在请求时使用例如流传输内容交付技术将内容提供到客户端。现在将详细地描述实现呈现内容并将其传输到客户端的示例计算环境。具体来说,图1图示其中可以实现本文描述的实施方案的示例计算环境。图1作为示意图以示意形式图示数据中心210的示例,数据中心210能够经由通信网络230通过用户计算机202a和202b(本文可能以单数形式称之为计算机202或以复数形式称之为计算机202)向用户200a和200b(本文可能以单数形式称之为用户200或以复数形式称之为200)提供计算资源。数据中心210可以被配置来永久性地或按需提供用于执行应用的计算资源。数据中心210提供的计算资源可以包括多种类型的资源,如网关资源、负载平衡资源、路由选择资源、联网资源、计算资源、易失性和非易失性存储器资源、内容交付资源、数据处理资源、数据存储资源、数据通信资源等。每种类型的计算资源可以是通用的,或可以采用多个特定配置来提供。例如,数据处理资源可以作为虚拟机实例来提供,这些虚拟机实例可以被配置来提供多种web服务。此外,可以通过网络形成资源的组合以供使用,并可以将其配置为一个或多个web服务。这些实例可以被配置来执行包括web服务的应用,如应用服务、媒体服务、数据库服务、处理服务、网关服务、存储服务、路由选择服务、安全性服务、加密服务、负载平衡服务、应用服务等。这些服务可以是可利用设置或定制应用来配置的,并且可以是在大小、执行、成本、延迟、类型、持续时间、可访问性上以及在任何其他维度上可配置的。这些web服务可以被配置来用于一个或多个客户端的可用基础设施,并且可以包括配置为平台或配置为用于一个或多个客户端的软件的一个或多个应用。这些web服务可以通过一个或多个通信协议来提供。这些通信协议可以包括例如,超文本传输协议(HTTP)或非HTTP协议。这些通信协议还可以包括例如,可靠性较高的传输层协议,如传输控制协议(TCP),以及可靠性较低的传输层协议,如用户数据报协议(UDP)。数据存储资源可以包括文件存储设备、块存储设备等。

每种类型或配置的计算资源可以采用不同大小来提供,如由多个处理器、大量存储器和/或大存储容量构成的大资源,以及由较少处理器、较小量存储器和/或较小存储容量构成的小资源。例如,客户可以选择分配多个小处理资源作为web服务器和/或分配一个大处理资源作为数据库服务器。

数据中心210可以包括提供计算资源的服务器216a和216b(本文中可能以单数形式称之为服务器216或以复数形式称之为服务器216)。这些资源可以作为裸机(bare metal)资源来提供或作为虚拟机实例218a-d(本文中可能以单数形式称之为虚拟机实例218或以复数形式称之为虚拟机实例218)来提供。虚拟机实例218c和218d是共享状态虚拟机(“SSVM”)实例。SSVM虚拟机实例218c和218d可以被配置来执行根据本发明公开且下文详细描述的共享内容项状态技术的所有或任何部分和/或所公开的任何其他技术。正如应该认识到的,虽然图1所示的特定示例在每个服务器中包括一个SSVM虚拟机,但是这仅是一个示例。服务器可以包括多于一个SSVM虚拟机或可以不包括任何SSVM虚拟机。

虚拟化技术可供用于计算硬件,这提供了向客户提供大规模计算资源并使计算资源能够高效且安全地在多个客户之间共享的好处。例如,虚拟化技术可通过向多个用户的每个用户提供物理计算设备寄存的一个或多个虚拟机实例以使该物理计算设备能够在多个用户之间共享。虚拟机实例可以是特定物理计算系统中用作不同逻辑计算系统的软件模拟。此类虚拟机实例提供共享给定物理计算资源的多个操作系统之间的隔离。再者,一些虚拟化技术可以提供跨一个或多个物理资源的虚拟资源,如具有跨多个不同物理计算系统的多个虚拟处理器的单个虚拟机实例。

参考图1,通信网络230可以例如是链接的网络的公众可访问网络且可能由多个不同运营方来运营,如因特网。在其他实施方案中,通信网络230可以是对于非特权用户完全或部分不可访问的专用网络,如企业或校园网络。在其他又一些实施方案中,通信网络230可以包括有权访问因特网和/或有权从因特网访问的一个或多个专用网络。

通信网络230可以提供对计算机202的访问权。用户计算机202可以是数据中心210的用户200或其他客户运用的计算机。例如,用户计算机202a或202b可以是服务器、桌上型或膝上型个人计算机、平板计算机、无线电话、个人数字助理(PDA)、电子书阅读器、游戏控制器、机顶盒或能够访问数据中心210的任何其他计算设备。用户计算机202a或202b可以直接连接到因特网(例如通过电缆调制解调器或数字订户线路(DSL))。虽然仅示出两个用户计算机202a和202b,但是应该认识到可能有多个用户计算机。

还可以运用用户计算机202来配置数据中心210提供的计算资源的多个方面。就此而言,数据中心210可以提供用于通过使用用户计算机202上执行的web浏览器应用程序来配置其操作的多个方面的网关或web接口。作为备选,用户计算机202上执行的单机应用程序可以访问数据中心210公开的应用编程接口(API)来执行这些配置操作。用于配置数据中心210处提供的多种web服务的操作的其他机制也可以予以采用。

图1所示的服务器216可以是为适用于提供上文描述的计算资源而配置的标准服务器,并且可以提供用于执行一个或多个web服务和/或应用的计算资源。在一个实施方案中,计算资源可以是虚拟机实例218。在虚拟机实例的示例中,服务器216中每一个可以被配置来执行能够执行虚拟机实例218的实例管理器220a或220b(本文中可能以单数形式称之为实例管理器220或以复数形式称之为实例管理器220)。例如,实例管理器220可以是虚拟机监视器(VMM)或被配置来能够在服务器216上执行虚拟机实例218的另一种类型的程序。正如上文论述,虚拟机实例218中每一个可以被配置来执行应用的全部或一部分。

应该认识到,虽然上文公开的实施方案论述虚拟机实例的情形,但是可以将其他类型的实现与本文公开的概念和技术结合进行运用。例如,本文开关的实施方案还可以与不运用虚拟机实例的计算系统结合进行运用。

在图1所示的示例数据中心210中,可以运用路由器214来将服务器216a和216b互连。路由器214还可以连接到网关240,网关240连接到通信网络230。路由器214可以连接到一个或多个负载平衡器,并且可以单独或组合地管理数据中心210中网络内的通信,例如通过基于此类通信的特征(例如,包括源和/或目的地地址、协议标识符、大小、处理要求等的报头信息)和/或专用网络的特征(例如,基于网络拓扑的路由等)来根据适合的情况转发分组或其他数据通信。将认识到,为了简明起见,对该示例的计算系统和其他设备的多种方面进行图示而未示出某个常规技术细节。在其他实施方案中可以将附加的计算系统和其他设备进行互连,并且这些附加计算系统和其他设备可以采用不同方式来进行互连。

在图1所示的示例数据中心210中,还采用服务器管理器215来至少部分地指引发往、发自服务器216a和216b和/或服务器216a与服务器216b之间的多种通信。虽然图1示出路由器214设在网关240与服务器管理器215之间,但是这仅是一个示范性配置,在一些情况下,例如,服务器管理器215可以设在网关240与路由器214之间。在一些情况下,服务器管理器215可以检查来自用户计算机202的传入通信的部分以确定一个或多个适合的服务器216来接收和/或处理这些传入通信。服务器管理器215可以基于如下多种因素来确定接收和/或处理这些传入通信的适合服务器,如与用户计算机202关联的标识、位置或其他属性、与这些通信关联的任务的特性、与这些通信关联的任务的优先级、与这些通信关联的任务的持续时间、与这些通信关联的任务的大小和/或估算的资源使用以及多种其他因素。服务器管理器215可以例如收集或通过其他方式有权访问与多种任务关联的状态信息和其他信息,以便例如帮助管理与此类任务关联的通信和其他操作。

应该认识到,图1所示的网络拓扑已进行了极大简化以及可以运用更多网络和联网设备来将本文公开的多种计算系统互连。这些网络拓扑和设备对于本领域技术人员应该是显而易见的。

还应该认识到图1描述的数据中心210仅是说明性的以及其他实现可以被运用。此外,应该认识到本文公开的功能性可以采用软件、硬件或软件与硬件的组合来实现。其他实现对于本领域技术人员应该是显而易见的。还应该认识到,服务器、网关或其他计算设备可以包括能够交互和执行所描述类型的功能性的硬件或软件的任何组合,包括且不限于桌上型或其他计算机、数据库服务器、网络存储设备和其他网络设备、PDA、平板电脑、蜂窝电话、无线电话、传呼机、电子组织器、因特网电器、(例如,使用机顶盒和/或个人/数字视频录像机的)基于电视的系统和包括适合通信能力的多种其他消费产品。此外,在一些实施方案中,可以将图示的模块所提供的功能性组合在较少的模块中或分布到附加的模块上。相似地,在一些实施方案中,可以不提供所图示的模块中一些的功能性和/或可以有其他附加的功能性可供使用。

在至少一些实施方案中,实现本文描述的一个或多个技术中的一部分或全部的服务器可以包括通用计算机系统,而该通用计算机系统包括或被配置来访问计算机可访问介质。图2示出包括或被配置来一个或多个计算机可访问介质的通用计算机系统。在图示的实施方案中,计算设备100包括经由输入/输出(I/O)接口30耦接到系统存储器20的一个或多个处理器10a、10b和/或10n(其在本文中可能以单数形式称为“处理器10”或以复数形式称为“处理器10”)。计算设备100还包括耦接到I/O接口30的网络接口40。

在多种实施方案中,计算设备100可以是包括一个处理器10的单个处理器系统,或包括若干处理器10(例如,两个、四个、八个或其他适合数量)的多处理器系统。处理器10可以是能够执行指令的任何适合的处理器。例如,在多种实施方案中,处理器10可以是实现多种指令集体系结构(ISA)中任一种的通用或嵌入式处理器,如x86、PowerPC、SPARC或MIPS ISA或任何其他适合的ISA。在多处理器系统中,每个处理器10可以通常地但非一定实现相同的ISA。

系统存储器20可以被配置来存储处理器10可访问的指令和数据。在多种实施方案中,系统存储器20可以使用任何适合的存储器技术来实现,如静态随机存取存储器(SRAM)、同步动态RAM(SDRAM)、非易失性/闪存型存储器或任何其他类型的存储器。在图示的实施方案中,实现一个或多个描述的功能,如上文描述的那些方法、技术和数据的程序指令和数据示出为作为代码25和数据26存储在系统存储器20内。

在一个实施方案中,I/O接口30可以被配置来协调处理器10、系统存储器20和设备中的任何外设之间的I/O通信量,包括经由网络接口40或其他外设接口。在一些实施方案中,I/O接口30可以执行任何必需的协议、定时或其他数据转换以将数据信号从一个组件(例如系统存储器20)转换成适于另一个组件(例如,处理器10)使用的格式。在一些实施方案中,I/O接口30可以包括对通过多种类型的外设总线(例如外设组件互连(PCI)总线标准或通用串行总线(USB)标准的变体)连接的设备的支持。在一些实施方案中,I/O接口30的功能可以分拆成两个或更多个单独组件,例如,北桥和南桥。再有,在一些实施方案中,I/O接口30的其中一些或全部功能性,如至系统存储器20的接口,可以直接并入到处理器10中。

网络接口40可以被配置来使数据能够在计算设备100与连接到一个或多个网络50的一个或多个其他设备60(例如其他计算系统或设备)之间进行交换。在多种实施方案中,网络接口40可以支持通过任何适合的有线或无线通用数据网络,如多种类型的以太网进行的通信。此外,网络接口40可以支持通过电信/电话网络(如模拟语音网络或数字光纤通信网络)、通过存储区域网络(如光纤通道SAN)(存储区域网络)或通过任何其他适合类型的网络和/或协议进行的通信。

在一些实施方案中,系统存储器20可以是被配置来存储如上文描述用于实现对应方法和装置的实施方案的程序指令和数据的计算机可访问介质的一个实施方案。但是,在其他实施方案中,可以在不同类型的计算机可访问介质上接收、发送或存储程序指令和/或数据。一般来说,计算机可访问介质可以包括经由I/O接口30耦接到计算设备100的非瞬态存储介质或存储器介质,如磁介质或光介质-例如磁盘或DVD/CD。非瞬态计算机可读存储介质还可以包括可以作为系统存储器20或另一种类型的存储器包括在计算设备100的一些实施方案中的任何易失性或非易失性介质,如RAM(例如,SDRAM、DDR SDRAM、RDRAM、SRAM等)、ROM(只读存储器)等。再者,计算机可访问介质可以包括传输介质或信号,如经由通信介质(如可以通过网络接口40实现的网络和/或无线链路)承载的电信号、电磁信号或数字信号。在多种实施方案中,可以使用多个计算设备(如图2所示的那些)的多个部分或全部来实现所描述的功能性;例如,多种不同设备和服务器上运行的软件组件可以协作来提供该功能性。在一些实施方案中,作为补充或替代使用通用计算机系统来实现,还可以使用存储设备、网络设备或专用计算机系统来实现所描述的功能的多个部分。如本文所使用的术语“计算设备”是指至少所有这些类型的设备且不限于这些类型的设备。

计算节点(也可以称为计算节点)可以在范围广泛的多种计算环境上实现,如通用硬件(commodity-hardware)计算机、虚拟机、web服务、计算集群(cluster)和计算电器。出于方便,可能将这些计算设备或环境中任一种描述为计算节点。

如公司或公共部门组织的实体为向一组分散的客户提供可通过因特网或其他网络访问的一个或多个web服务(如,多种类型的基于云的计算或存储)而建立的网络可以称为提供商网络。此类提供商网络可以包括托管实现和分发提供商网络提供的基础设施和web服务的多种资源池的大量数据中心,这些资源池诸如物理和/或虚拟化计算机服务器、存储设备、联网设备等的集合。在一些实施方案中,可以在与web服务相关的多种单元中,如用于存储的存储容量数量、用于处理的处理能力,作为实例,作为多组相关的服务等将这些资源提供给客户。虚拟计算实例可以例如包括具有指定的计算能力(这可以通过指示CPU的类型和数量、主存储器大小等来指定)以及指定的软件堆栈(例如,特定版本的操作系统,进而可以运行在超级管理程序(hypervisor)顶层上)的一个或多个服务器。

在不同实施方案中,可以将多个不同类型的计算设备单个或组合使用以实现提供商网络的资源,包括通用或专用计算机服务器、存储设备、网络设备等。在一些实施方案中,可以通过例如给予用户管理员登录和密码以向客户或用户提供对资源实例的直接访问权。在其他实施方案中,提供商网络操作员可以允许客户为指定的客户应用指定执行需求并代理该客户在适于这些应用的执行平台(如应用服务器实例、JavaTM虚拟机(JVM)、通用或专用操作系统、支持多种解释或编译的编程(如Ruby、Perl、Python、C、C++等)的平台或高性能计算平台)上调度这些应用的执行,而无需例如客户直接访问实例或执行平台。在一些实现中,给定的执行平台可以运用一个或多个资源实例;在其他实现中,可以将多个执行平台映射到单个资源实例。

在多个环境中,实现不同类型的虚拟化计算、存储和/或其他网络可访问的功能性的提供商网络的操作员可以允许客户以多种资源获取模式预订或购买对资源的访问权。计算资源提供商可以对客户提供选择和启动期望的计算资源、将应用组件部署到计算资源并维持环境中执行的应用的工具。此外,计算资源提供商可以对客户提供按应用变化的需求或应用变化的容量需求人工地或通过自动缩放来快速且简易扩大或缩小分配给应用的资源的数量和类型的又一些工具。计算资源提供商提供的计算资源可以在离散的单元提供,这些离散的单元可以称为实例。实例可以表示物理服务器硬件平台、服务器上执行的虚拟机实例或这二者的某种组合。可以提供多种类型和配置的实例,包括执行不同操作系统(OS)和/或超级管理程序的不同大小的资源,以及具有多种安装的软件应用、运行时等。还可以在特定可用性区中提供实例,可用性区表示例如,逻辑区域、容错区域、数据中心或底层计算硬件的其他地理位置。可以在可用性区内或跨越可用性区复制实例以提高实例的冗余性,以及可以在特定可用性区或跨越可用性区迁移实例。作为一个示例,与可用性区中的特定服务器的客户端通信的延迟可能小于与不同服务器的客户端通信的延迟。因此,可以将实例从较高延迟的服务器迁移到较低延迟的服务器以提高整体客户端体验。

在一些实施方案中,可以将提供商网络组织成多个地理区域,且每个区域可以包括一个或多个可用性区。可用性区(也可以称为可用性容器)进而可以包括一个或多个不同的位置或数据中心,该一个或多个不同的位置或数据中心被配置来使得给定的可用性区中的资源可以与其他可用性区中的故障隔离或绝缘。即,一个可用性区中的故障不可能会在任何其他可用性区中导致故障。因此,资源实例的可用性分布(profile)预设为独立于不同可用性区中的资源实例的可用性分布。客户通过在相应可用性区中启动多个应用实例能够保护他们的应用免受单个位置处的故障的影响。同时,在一些实现中,可以在位于相同地理区域内的资源实例之间提供便宜且低延迟的网络连接性(以及相同可用性区的资源之间的网络传输可以甚至更快)。

正如上文阐述,在一些情况下,可以由内容提供商生成特定内容项(如视频游戏)的场景的多个呈现的视图,并将其从内容提供到多个不同的客户端。图3A图示根据本发明公开的多个视图生成的示例系统。如图所示,图3A包括内容提供商300,其与客户端310A和310B通信,内容提供商300执行内容项307。内容提供商300可以例如提供用于向客户端(如客户端310A和310B)提供内容的一个或多个内容提供服务。内容提供服务可以驻留在一个或多个服务器上。内容提供服务可以是可伸缩的,以便满足一个或多个客户的需求,并且可以基于传入客户端请求的数量和类型以在容量上进行增加或减少。还可以将内容提供服务的多个部分迁移以将其置于对于请求客户端而言延迟减少的位置。下文更详细地描述内容提供商300及其一些示例体系结构。

如本文使用的术语内容是指任何可呈现信息,以及如本文所使用的术语内容项是指任何此类可呈现信息的任何集合。例如,内容项307可以包括如视频游戏的图形内容。在一些情况下,内容项307可以包括二维内容,正如所使用的二维内容是指可以根据二维场景呈现的内容。再有,在一些情况下,内容项307可以包括三维内容,正如所使用的三维内容是指可以根据三维场景呈现的内容。二维或三维场景可以例如不在物理上占据预想对其逻辑建模或表示所在的区域,就此而言,可以将二维或三维场景视为逻辑再现。如本文所使用的术语场景是指可以与图像生成关联来使用的表示。场景可以例如包括与描述该场景的信息或数据或在其他方面与之关联。为了呈现内容项307,可以使用与内容项307关联的场景来生成最终图像以用于显示。这些图像可以通过通称为呈现的过程来生成,呈现可以将例如,投影、反射、照明、阴影和其他概念结合。图像可以包括例如,与可显示输出关联的信息,如与多种像素值和/或属性关联的信息。正如下文将描述的,在一些情况下,每个生成的图像可以对应于场景的特定视图。

内容项307可以在客户端310A和310B上显示给用户以及以其他方式呈现给用户。客户端310A和310B可以经由电子网络(例如因特网或另一种类型的广域网(WAN)或局域网(LAN))与内容提供商300通信。在一些情况下,客户端310A和310B可能在物理上位于彼此遥远的位置。

虽然图3A示出两个客户端310A和310B,但是可以与接收与内容项307对应的传输的任何数量的不同参与客户端关联来使用所公开的技术。在一些情况下,已连接的参与客户端中的一个或多个可以采用混合模式工作,其中除了从内容提供商300接收一个或多个视图外,混合模式客户端还执行内容项307的其自己本地版本,并生成其自己本地客户端流。每个混合模式客户端然后可以在客户端本地处将接收的视图的内容提供商流与本地客户端流组合以生成并显示混合内容项流。例如,混合模式可以允许客户端在网络状况良好时除了其本地流以外还从内容提供商300接收流,同时还允许客户端在网络状况差时可能没有内容提供商可提供时继续使用其自己的本地流。为了能让混合模式客户端保持其本地状态与内容提供商的共享状态同步,内容提供商300可以周期性地向每个混合模式客户端发送状态信息。

某些客户端可以在混合模式与全流模式之间来回切换,在全流模式中,客户端仅接收内容提供商流并不生成本地客户端流。因此,在一些情况下,可以对大客户端群维护一个共享状态。在该大群内,一些客户端可以采用混合模式工作,一些客户端可以采用全流模式工作,以及一些客户端可以在混合模式与全流模式之间切换。此外,在一些情况下,发送到每个混合模式客户端的数据量可能与如内容提供商与客户端之间的连接质量的多个因素非常相关,内容提供商与客户端之间的连接质量可以基于如带宽、吞吐量、延迟、丢包率等而定。例如,对于与内容提供商300具有较高质量连接的第一混合模式客户端,内容提供商300可以向第一混合模式客户端传送场景的包括较大数据量的较高复杂度视图。与之相对,对于与内容提供商300具有较低质量连接的第二混合模式客户端,内容提供商300可以向第二混合模式客户端传送场景的包括较小数据量的较低复杂度视图。例如,发送到第一混合模式客户端的较高复杂度视图可以包括发送到第二混合模式客户端的较低复杂度视图中可能不包括的更多细节的纹理、图案、形状和其他特征。

再次参考图3A,在一些情况下,可以将客户端310A和310B与内容项307所对应的一个或多个不同相应实体进行关联。此类实体可以包括例如,多种人物、车辆、武器、体育器械或与视频游戏或其他内容项所对应的任何其他实体。在一些情况下,相应实体可以被它们所关联的客户端来控制。但是,可以通过例如被客户端的特定用户选择或为其选择来以任何方式将相应实体与客户端关联。在图3A的特定示例中,客户端310A控制相应受控人物315A,而客户端310B控制相应受控人物315B。

客户端310A和310B可以收集客户端310A和310B处与内容项307的相应呈现关联的相应客户端状态信息。客户端状态信息是由于内容项以任何方式与一个或多个客户端相关时的与内容项的状态关联的任何信息。客户端状态信息可以包括例如,客户端310A和310B处与内容项307的呈现所关联的多种特征、事件、动作或操作的状态对应的信息。在一些情况下,客户端状态信息可以指示受控人物315A和315B执行的多种动作或操作。但是,注意,每个客户端310收集的客户端状态信息不限于与每个相应客户端310控制的人物或其他实体对应的信息,并且可以包括与内容项307关联的任何方面所对应的信息。

如图3A所示,客户端310A可以将其相应客户端状态信息更新320A传送到内容提供商300,而客户端310B可以将其相应客户端状态信息更新320B传送到内容提供商300。可以周期性地按任何适合计划的或非计划时间从客户端310A和310B传送客户端状态信息更新320A和320B。例如,可以按指定的间隔或其他时间或响应某些事件传送客户端状态信息更新320A。例如,可以由人物执行动作,如移到指定的位置而触发客户端状态信息更新320A和320B的传输。没有要求一定彼此同时地发送客户端状态信息更新320A和320B。正如应该认识到的,在一些情况下,作为传送已更新客户端状态信息的备选或补充,客户端310A和310B中的一个或多个可以传送全部客户端状态信息和/或先前传送的客户端状态信息的某个部分。例如,在一些情况下,从特定客户端的状态信息的第一次传输包括所有客户端状态信息,而后续传输可以仅包括更新或更新连同先前传送的信息的某个部分。

内容提供商300可以接收客户端状态信息更新320A和320B,并使用这些更新来调整共享内容项状态信息305。该调整可以包括例如,添加、删除和/或修改共享内容项状态信息305的多个不同部分。然后可以例如使用共享内容项状态信息305与内容项307组合已产生一个或多个内容项场景。

作为示例,受控人物315A可能开启加载的武器并朝特定门道发射子弹,而受控人物315B可能同时进入同一个门道并面对受控人物315A。客户端310A可以发送客户端状态信息更新320A,其可以指示受控人物315A开火以及子弹的方向。客户端310B可以发送客户端状态信息更新320B,其可以指示受控人物310B移动而进入门道。内容提供商300可以更新共享内容项状态信息305以指示接收的客户端状态信息更新320A和320B。内容项307然后可以访问共享内容项状态信息305以产生后续内容项场景,其中受控人物315B站在门道中且子弹伤及其胸部,而受控人物315A从受控人物315A开火的位置面向门道。

一旦与内容项307产生场景,则内容提供商300可以呈现场景以用于在客户端310A和310B处显示。在图3A的特定示例中,内容提供商300生成多个呈现的视图330A和330B。例如,如图3A所示,内容提供商300可以生成呈现的视图330A并将其传送到客户端310A,同时内容提供商300还可以生成呈现的视图330B并将其传送到客户端310B。呈现的视图330A和330B是彼此不同的。作为如本文所使用的术语,视图是指与场景关联的特定图像。当生成特定场景的多个不同视图时,这些多个不同视图中的每一个可以包括基于该场景生成的不同的相应图像。

在一些情况下,可以将呈现的视图330A和330B与客户端310A和310B所关联的一个或多个相应实体相关联。例如,可以将呈现的视图330A与受控人物315A关联,而将呈现的视图330B与受控人物315B关联。

在一些情况下,呈现的视图330A和330B可以呈现场景中从关联的相应实体所对应的视角的视图。例如,呈现的视图330A可以示出如同通过受控人物315A的眼睛观察的场景,而呈现的视图330B可以示出如同通过受控人物315B的眼睛观察的场景。在其他情况下,呈现的视图330A和330B可以将场景的视图呈现为使得关联的相应实体位于视图的中心,或另外设在视图内具有高关注和/或高可视性的位置。例外,呈现的视图330A可以示出一场景,其使得受控人物315A位于视图的中心,而呈现的视图330B可以示出一场景,其使得受控人物315B位于视图的中心。作为另一个示例,如果场景内的某些对象遮挡关联的相应实体的视图,则可以将这些对象从呈现的视图中移除或另外在呈现的视图内对其进行调整。

此外,在一些情况下,可以添加某些修改或另外将某些修改与特定呈现的视图关联。例如,为了吸引注意力或提高可视性,可以放大或突出显示关联的相应人物或其他实体。再者,如果视图内的某些其他实体某种程度低于特定关联的相应人物或实体关联,则可以修改这些实体。例如,如果关联的相应人物正在查找特定武器,则为了吸引对武器的注意或增加该武器的可视性,可以在呈现的视图中放大或突出显示该武器。

再次参考上文所述受控人物315A在对门道开火之后正在观察门道的示例场景,客户端310A的呈现的视图330A可以例如从与受控人物315A关联的视角提供视图。呈现的视图330A可以例如示出如同通过受控人物315A的眼睛观察到的示例场景。由此,呈现的视图330A可以例如示出受控人物315B站在门道中且子弹伤及其胸部,正如受控人物315A所看到的。

与之相对,客户端310B的呈现的视图330B可以例如从受控人物315B的视角提供视图。如上文描述,在该示例场景中,受控人物315B站在门道中面向刚才开火的受控人物315A。呈现的视图330B可以例如示出如同通过受控人物315B的眼睛观察到的示例场景。由此,呈现的视图330B可以例如示出受控人物315A,其手持刚才开火的武器,正如受控人物315B所看到的。

在一些情况下,客户端状态信息更新320A和320B可以包括可用于帮助形成呈现的视图330A和330B的任何信息。此类信息可以包括指示与客户端310A和310B关联的一个或多个相应实体的信息。例如,图3A示出作为与客户端310A和310B关联的相应实体的受控人物315A和315B。客户端状态信息更新320A和320B还可以指示例如,可以任何方式与客户端310A和310B相关的任何其他实体。客户端状态信息更新320A和320B还可以指示例如是否客户端310A和310B切换多种人物或视图的控制或在内容传输会话中与参与方连接或端口。客户端状态信息更新320A和320B还可以指示例如是否客户端310A和310B中每一个正在混合模式下工作或全流模式下工作和/或指示此类模式下的工作之间的切换。还可以将可用于帮助形成呈现的视图330A和330B的任何其他适合的信息包括在客户端状态信息更新330A和330B中,包括在传送到内容提供商300的任何其他信息集合中,或者在一些情况下,包括在内容提供商300存储或以其他方式提供的信息中。例如,在一些情况下,内容提供商300可以存储器有关客户端310A和310B的信息,该信息包括例如,客户端310A和310B控制的人物或其他实体的指示或可用于帮助形成呈现的视图330A和330B的任何其他适合的信息。在一些情况下,可以将可用于帮助形成呈现的视图330A和330B的信息包括在共享内容项状态信息305中。

由此,如上文描述,内容提供商可以呈现内容项的多个视图,并将其传送到多个不同的客户端设备。但是,在一些情况下,可能期望将场景的同一视图传送到多个客户端设备。例如,可能期望将同一视图传送到具有相同或密切相关的关联的相应内容项实体的不同客户端。更确切地来说,例如,有时可能将同一视图传送到协作一起控制相同人物的不同客户端。作为另一个实例,有时可能将同一视图传送到控制不同但密切相关的人物(如相同单元或组织的队员或成员)的不同客户端。作为又一个示例,当一个或多个客户端以旁观者模式工作而一个或多个其他客户端以活动模式工作时,可能传送同一视图,在旁观者模式中,旁观者客户端不控制内容项内的任何实体,在活动模式中,它们控制内容项内的一个或多个实体。在一些情况下,旁观者模式客户端的其中一个或多个可以接收同一视图。再有,在一些情况下,旁观者模式客户端的其中一个或多个或活动模式客户端的其中一个或多个可以接收同一视图。例如,特定旁观者模式客户端对特定活动模式客户端控制的特定实体感兴趣,并且因此可能期望接收发送到该特定活动模式客户端的相同视图。还可以基于任何其他适合的原因或原理来传送同一视图。

图3B中图示根据本发明公开的多个视图生成的示例系统。在图3B中,客户端310A控制其相应受控队员316A,而客户端310B控制其相应受控队员316B。又如图3B所示,内容提供商300生成同一呈现的视图340,并同时将其传送到客户端310A和310B。正如上文阐述,在一些情况下,客户端可能期望控制队员接收场景的同一视图。但是,注意,有许多情况下,控制队员的客户端可能期望接收不同视图。如上文提到的,作为控制队员的补充或备选,可能还有多种其他情况,客户端310A和310B可能接收同一视图。

还注意,还可以生成完全相同与不同视图的任何组合,并将其传送到任何数量的不同客户端。卤肉,对于正在传送到三个参与客户端的内容项,三个客户端中的两个可以接收同一视图,而第三个客户端可以接收不同视图。

此外,注意,接收完全相同或不同视图的客户端的配置可以在整个特定内容项传输会话中改变。例如,两个客户端可能最初控制两个队员,并且可能接收特定内容项的同一视图。但是,在该内容项传输的某个时点处,客户端之一可能放弃其人物的控制,并开始控制对方团队的不同人物。在此情况下,切换人物的控制之后,切换客户端可以开始接收与另一个客户端传送的不同的视图。正如上文阐述,在一些情况下,人物或任何其他视图相关的信息的切换可以作为客户端状态信息更新的一部分或使用任何其他适合的技术从客户端传送到内容提供商。

再者,注意,并非一定要专门地指定任何特定客户端接收彼此不同的视图或同一视图。相反,在一些情况下,每个客户端的视图可以基于与该客户端关联的信息,如相应实体或任何适合的信息来生成。因此,在一些情况下,两个客户端可以接收一些场景的不同的视图,以及另一些场景的同一或接近同一视图,而不一定将这些视图指定为相似或完全相同。例如,在一些情况下,两个不同的客户端控制的两个不相关人物可能碰巧在特定场景内彼此位置非常靠近,在此类情况下,有时可以将该特定场景的同一或接近同一视图传送到这两个不同的客户端。与之相对,对于两个不相关人物并非彼此非常靠近的其他场景,相同的这两个客户端可以接收不同视图。

由此,上文阐述了用于在内容提供商处基于共享状态信息呈现一个或多个视图的多种技术。在一些情况下,在内容提供商处呈现一个或多个视图可以减少或免去将状态信息从内容提供商发送到客户端的任何需要。此外,在一些情况下,在内容提供商处呈现一个或多个视图可以降低客户端设备上安装的内容呈现软件的成本、复杂性和使用要求。有时,这可以例如使得内容能够使用瘦客户端呈现软件在客户端设备上呈现,所述瘦客户端呈现软件是相对于胖客户端呈现软件而言。再者,在一些情况下,在内容提供商处呈现一个或多个视图可以减少创内容的作者和分销商所关注的盗版和其他安全性问题。

此外,注意,用于执行内容项的虚拟机实例和/或其他资源的数量或量无需一定取决于与内容项关联生成的视图的数量。例如,在一些情况下,可以采用单个虚拟机实例来执行具有多个不同呈现的视图传送到多个不同客户端的内容项。但是,在一些情况下,如果期望可以采用多个虚拟机实例,以便例如减少延迟。

作为在内容提供商处呈现一个或多个视图的补充,本发明公开的技术还可以允许与特定内容项关联来采用多个图形处理单元。在一些情况下,多个图形处理单元可以至少部分地彼此同时生成与特定场景关联的呈现。呈现是指至少部分地由一个或多个图形处理单元生成的且与一个或多个图像的至少一部分关联的数据。再有,在一些情况下,使用多个图形处理单元可以帮助实现所呈现的视图的实时或准实时生成并呈现。在一些情况下,多个图形处理单元可以分布在位于任何数量的不同物理位置处的任何数量的不同机器或设备上。在一些情况下,可以使用多个图形处理单元来仅呈现场景的一个视图,而在另一些情况下,可以使用多个图形处理单元来呈现场景的多个视图。但是,注意,并非一定需要多个图形处理单元来呈现场景的多个视图。在一些情况下,一个图形处理单元可以足够呈现场景的多个视图。

图4-6中图示示出多个视图和多个图形处理单元的上述概念之间的多种交互的一些示例内容传输系统。具体来说,图4示出采用单个图形处理单元生成多个视图的示例情形。如图4所示,内容提供商400包括图形处理单元403A,图形处理单元403A生成呈现的视图420A、420B和420C,呈现的视图420A、420B和420C分别传送到客户端410A、410B和410C。图5示出采用多个图形处理单元生成单个视图的示例情形。如图5所示,内容提供商500包括图形处理单元503A、503B和503C,图形处理单元503A、503B和503C进行组合以生成呈现的视图520A,呈现的视图520A被传送到客户端510A。图6示出采用多个图形处理单元生成多个视图的示例情形。如图6所示,内容提供商600包括图形处理单元603A、603B和603C,图形处理单元603A、603B和603C被采用来生成呈现的视图620A、620B和620C,呈现的视图620A、620B和620C分别传送到客户端610A、610B和610C。在其他一些示例配置中,每个图形处理单元603A-C可以生成相应呈现的视图620A-C。例如,图形处理单元603A可以生成呈现的视图620A,图形处理单元603B可以生成呈现的视图620B,以及图形处理单元603C可以生成呈现的视图620C。在又一些情况下,图形处理单元603A-C中的两个或更多个可以进行组合以生成呈现的视图620A-C中的一个或多个。例如,图形处理单元603A和603B可以进行组合以形成呈现的视图620A和620B,而图形处理单元603C可以单独地生成呈现的视图620C。

可以采用任何数量的适合技术来将场景的呈现分布在多个图形处理单元上。例如,在一些情况下,可以将多个图形处理单元中每一个指定于场景的相应部分来用于呈现。场景的每个部分可以包括例如,场景中由多种坐标、维度或其他指示符所指示的区域。例如,在一些情况下,分布在两个图形处理单元上的场景可以被划分成两个相等尺寸的一半,每一半被指定于两个图形处理单元中的相应一个。

作为另一个示例,场景可以包括多个对象,如人物、建筑物、车辆、武器、树木、水、火、动物和其他。在一些情况下,可以将多个图形处理单元中的每一个指定于场景内的相应对象、对象的一部分或对象的集合以用于呈现。如本文所使用的术语对象是指场景、图像或其他信息集合的任何部分。对象可以是例如,特定像素或像素集合。对象可以是例如特定有用之物的全部或任何部分。对象还可以是例如,有用之物的集合的全部或任何部分。对象还可以是例如,如树、火、水、云、衣服、人、动物和其他的实体的全部或任何部分。例如,对象可以是树的一部分,对象还可以包括例如,对象、实体和/或有用之物的集合的全部或任何部分。例如,对象可以是例如彼此相对设在任何位置处的多个树或云的组。

作为另一个示例,如果正在生成场景的多个视图,则在一些情况下,可以将多个图形处理单元中每一个指定于场景的一个或多个相应视图来用于呈现。可以采用上文描述的示例技术和/或任何其他适合技术的任何组合将场景的呈现分布在多个图形处理单元上。

在一些情况下,用于呈现特定内容项的图形处理单元的数量可以是弹性的,以使该数量根据多种因素而改变。此类因素可以包括,例如,图形处理单元生成呈现的速率或一个或多个图形处理单元的其他执行速率、呈现的场景的复杂度、与呈现的场景关联的视图的数量、附加图形处理单元的可用性以及这些或其他相关因素的任何组合。

在一些情况下,可以监视与呈现特定内容项关联的一个或多个图形处理单元的执行速率以便确定这些图形处理单元正在执行的效率。例如,在一些情况下,如果图形处理单元正在低于某个阈值执行速率呈现多个场景或场景的多个部分,则可以决定增加一个或多个附加图形处理单元来帮助呈现这些场景或场景的这些部分。与之相对,在一些情况下,如果两个或更多个图形处理单元正在高于某个阈值执行速率呈现多个场景的多个部分,则可以决定放弃这些图形处理单元中的一个或多个,以便它们可用于帮助其他内容项或内容提供商任务。

有多个因素可能影响一个或多个图形处理单元的像素速率。一个此类示例因素可以是场景复杂度。例如,在一些情况下,与特定内容项关联的场景复杂度可能随着从一个场景到下一个场景而变化。任何数量的不同因素都可能导致场景复杂度中的此类改变。在一些情况下,可以添加某些对象或对象的多个部分或将其移除或以其他方式调整、将其隐蔽或使之可见。例如,当将某些人物、建筑物、车辆或其他对象添加到后续场景中时,场景复杂度可能随着从一个场景到下一个场景而增加。在一些情况下,当场景复杂度增加时,一个或多个图形处理单元可能变得过载,使得它们不再能够高效地呈现其相应场景或场景部分。与之相对,在一些情况下,当场景复杂度降低时,一个或多个图形处理单元可以获得附加的可用容量,使得用于呈现该内容项的图形处理单元的数量可以合并且被减少。

可能影响一个或多个图形处理单元的执行速率的另一种示例因素是与多个不同场景或场景的多个部分关联的视图的数量。例如,当一个或多个客户端控制的人物进入场景的特定部分时,与场景的该部分关联的视图的数量可能增加。例如当一个或多个客户端控制的人物进入特定建筑物或建筑物内的房间时,可能出现此情况。与之相对,当一个或多个客户端控制的人物离开场景的特定部分时,与场景的该部分关联的视图的数量可能减少。在一些情况下,当视图的数量增加时,一个或多个图形处理单元可能变得过载,使得它们不再能够高效地呈现其相应场景或场景部分。与之相对,在一些情况下,当视图的数量减少时,一个或多个图形处理单元可以获得附加的可用容量,使得用于呈现该内容项的图形处理单元的数量可以合并且被减少。

现在将结合图7-10来描述图示上述图形处理单元缩放概念的其中一些的一些示例情形。具体来说,图7图示根据本发明公开技术的第一示例图形处理单元缩放情形。具体来说,图7示出单个图形处理单元720呈现的场景700。注意,场景700在图7中示出为三维场景(如其立体形式所指示的)。但是,本发明公开的技术不限于与三维场景结合来使用,并且还以与例如二维场景结合来使用。图7指示图形处理单元720正在低于下限阈值执行速率工作。正如上文阐述,此下限执行速率可能是由于多个因素导致,如场景复杂度太高和/或具有太多关联的视图以致于无法高效地被单个图形处理单元720呈现。相应地,在一些情况下,内容提供商可以基于图形处理单元720在低于下限阈值执行速率工作确定应该采用附加图形处理单元来呈现后续场景。

图8示出内容提供商基于图7的图形处理单元在低于下限阈值执行速率工作而增加附加图形处理单元720的情形。具体来说,图8示出场景800,场景800是图7的场景700后续的一个或多个场景。场景800被划分成两个场景部分810A和810B。此外,场景800的呈现被分布在两个图形处理单元820A和820B上。具体来说,场景部分810A由图形处理单元820A来呈现,而场景部分810B由图形处理单元820B来呈现。注意,选择矩形形状的场景部分810A和810B仅出于描述性目的且不作为限制。可以根据本发明公开的技术将场景划分成具有任何数量的不同形状或尺寸的任何数量的不同部分。还注意,当增加附加图形处理单元时,并非要求一定将先前场景的多个部分划分成相等尺寸的一半。

图8指示图形处理单元820A正在上限与下限阈值执行速率之间工作。基于图形处理单元820A在上限与下限阈值之间工作,在一些情况下,内容提供商可以确定对于场景部分810A的图形处理单元缩放无需任何改动。相比之下,图8还指示图形处理单元820B正在低于下限阈值执行速率工作。相应地,在一些情况下,内容提供商可以基于图形处理单元820B在低于下限阈值执行速率工作而确定应该采用附加图形处理单元来呈现后续场景中与场景部分810B对应的区域。。

图9示出内容提供商基于图8的图形处理单元820B低于下限阈值执行速率工作而增加附加图形处理单元的情形。具体来说,图9示出场景900,场景900是图8的场景800后续的一个或多个场景。场景900被划分成场景部分910A、910B和910C。此外,场景900的呈现被分布在三个图形处理单元920A、920B和920C上。具体来说,场景部分910A由图形处理单元920A来呈现,场景部分910B由图形处理单元920B来呈现,以及场景部分910C由图形处理单元920C来呈现。注意,场景部分910B和910C是通过将图8的场景部分810B划分成两个相等一半部分而形成的。划分场景部分810B是因为其相应图形处理单元820B在低于下限阈值执行速率工作。

图9指示图形处理单元920A正在上限与下限阈值执行速率之间工作。基于图形处理单元920A在上限与下限阈值之间工作,在一些情况下,内容提供商可以确定对于场景部分910A的图形处理单元缩放无需任何改动。相比之下,图9还指示图形处理单元920B和920C都正在高于上限阈值执行速率工作。正如上文阐述,这些上限执行速率可能是由于多种因素导致,如与相应场景部分910B和910C关联的场景复杂度较低和/或呈现的视图的数量较低。相应地,在一些情况下,内容提供商可以基于图形处理单元920B和920C在高于上限阈值执行速率工作而确定应该采用较少图形处理单元来呈现后续场景中与场景部分910B和910C对应的组合区域。

图10示出内容提供商基于图9的图形处理单元920B和920C在高于上限阈值执行速率工作而移除图形处理单元的情形。具体来说,图10示出场景1000,场景1000是图9的场景900后续的一个或多个场景。场景1000被划分成两个场景部分1010A和1010B。此外,场景1000的呈现被分布在两个图形处理单元1010A和1010B上。具体来说,场景部分1010A由图形处理单元1020A来呈现,而场景部分1010B由图形处理单元1020B来呈现。注意,场景部分1010B是通过将图9的场景部分910B和910C组合成单个部分而形成的。将场景部分910B和910C组合是因为它们的相应图形处理单元920B和920C正在高于上限阈值执行速率工作。在一些情况下使用场景部分910B和910C的组合可使两个图形处理单元920B或920C能够被重新指定到可能对附加图形处理单元有更大需求的另一个任务。

再次注意,图7-10所示的场景部分和图形处理单元分布仅是示例。本发明公开的技术可使场景能以任何描述的方式划分成多个部分。本发明公开的技术还可使图形处理单元能以任何描述的方式分布在多个场景或多个场景部分上。

正如应该认识到的,可能有一些情况下,即使一个或多个图形处理单元在低于下限阈值执行速率工作,仍可能没有附加图形处理单元可用。这可能由于可供内容提供商使用的资源有限。在此情况下,例如,可以将一个或多个附加图形处理单元的请求置于用于在附加图形处理单元变为可用时获取附加图形处理单元的队列中。此外,例如,可以基于多种因素确定请求的迫切性,例如低于下限阈值执行速率的程度。在一些情况下,具有最迫切需求和/或最低关联执行速率的内容项可以比非很迫切需求的其他内容项更快地接收最近可用的资源。再有,在一些情况下,当内容项等待附加需求的资源时,可以将该内容项的现存指定的图形处理单元重新安排或另外重新分配以便更有效率地呈现内容项场景。

虽然上文示例的其中一些可能包括减少图形处理执行速率来实现图形处理单元缩放,但是注意本发明公开的技术不要求且不限于使用图形处理单元监视。相反,可以采用任何适合的技术来确定要用于场景呈现的图形处理单元的期望数量。例如,在一些情况下,可以至少部分地基于场景复杂度信息来确定图形处理单元的数量,场景复杂度信息可以例如与特定内容项关联且可以指示与该内容项关联的一个或多个场景的多个不同部分所关联的复杂度水平。此外,在一些情况下,可以至少部分地通过监视参与特定内容项的传输的客户端的数量和/或监视或另外确定正在与特定内容项的传输关联呈现的不同视图的数量来确定图形处理单元的数量。再有,在一些情况下,可以至少部分地基于特定内容提供商或与内容提供商关联的任何客户或其他实体设置的特定规则或偏好来确定图形处理单元的数量。还可以采用这些或其他适合技术的任何组合。

虽然这些示例图形处理单元分布技术的其中一些可能包括将场景的一个或多个部分指定于单个图形处理单元,但是并非一定要将场景的每个部分指定于一个且仅一个图形处理单元来用于呈现。在一些情况下,多个图形处理单元可以协作来一起呈现完整的场景或场景的任何部分。

由此,上文详细地描述了用于将场景的呈现分布在多个图形处理单元上的多种示例技术。在一些情况下,在多个图形处理单元呈现场景的不同部分之后,可以将多种不同呈现的所有或多个部分组合以形成一个或多个最终视图以用于传输和显示。内容提供商可以采用多种技术以用于将从多个图形处理单元接收的呈现组合成每个视图。一种示例组合技术,在本文中称为拼接技术,可以包括将来自不同图形处理单元的多种呈现插入到视图内不同的标识区域中。例如,可以将第一图形处理单元执行的第一呈现插入在第一标识视图区域处,同时可以将第二图形处理单元执行的第二呈现插入在第二标识视图区域处。可以例如使用基于生成视图的场景标识的坐标来标识每个视图区域。

图11中图示拼接技术的示例描述。具体来说,图11示出四个不同图形处理单元1120A-D生成的四个呈现1130A-1130D。具体来说,呈现1130A由图形处理单元1120A生成,呈现1130B由图形处理单元1120B生成,呈现1130C由图形处理单元1120C生成,以及呈现1130D由图形处理单元1120D生成。如图11所示,为了形成视图1150,将呈现1130A插入到视图区域1140A中,将呈现1130B插入到视图区域1140B中,将呈现1130C插入到视图区域1140C中以及将呈现1130D插入到视图区域1140D中。

另一种示例组合技术,本文中称为分层技术,可以采用具有多个层的视图表示。表示的每个层可以对应于视图的相应部分。例如,第一层可以包括第一图形处理单元呈现的视图的第一部分,而第二层可以包括第二图形处理单元呈现的视图的第二部分。具体来说,图12示出四个层1260A、1260B、1260C和1260D。层1260A包括从图形处理单元1220A接收的呈现1230A。层1260B包括从图形处理单元1220B接收的呈现1230B。层1260C包括从图形处理单元1220C接收的呈现1230C。层1260D包括从图形处理单元1220D接收的呈现1230D。

图13中图示分层技术的示例描述。具体来说,示出逻辑表示1300,其中层1260A-D在逻辑上表示为以层1260D位于底层,层1260C相对于底层为第二,层1260B自底层起为第三以及层1260A位于最上层来垂直堆叠注意,逻辑表示1300不意味是层1260A-D彼此上下物理堆叠的物理结构。相反,逻辑表示1300仅是旨在指示可将与视图的多个不同部分对应的数据逻辑上关联的示例方式的逻辑表示。此外,应该认识到,图13所示的层布置的示例次序仅是出于说明性目的而非限制来提供的。再次参考图13,其示出使用逻辑表示1300生成包括呈现1230A-D的最终视图1350。

由此,上文阐述了用于使用一个或多个图形处理单元生成场景的一个或多个视图的多种技术。图14中示出根据本发明公开的技术的示例内容提供商系统。如图所示,图14包括与内容提供商1400通信的客户端1410A-C。客户端1410A-C可以例如各参与特定内容项(如视频游戏)的传输会话。客户端1410A-C可以例如包括活动客户端和旁观者客户端。活动客户端是控制内容项内的一个或多个人物或其他实体的客户端。旁观者客户端是未控制内容项内的任何人物或其他实体的客户端。客户端1410A-C各从三个流传输服务器1450A-C中的相应流传输服务器接收呈现的内容项视图的传输。但是,注意,虽然图14的特定示例中包括流传输服务器1450A-C,但是本发明公开的技术不限于使用流传输内容传输,并且可以采用任何其他适合形式的内容交付。使用单独的相应流传输服务器1450A-C来将内容传输到每个客户端1410A-C可能是有益的,例如,因为在一些情况下,这样改进性地能够基于如与连接到每个客户端的网络关联的服务质量的多个因素来调整对个体客户端的多种传输特征。调整的传输特征可以包括例如,编码速率、传输速度、图像质量和其他相关因素。但是,注意,本发明公开的技术不限于使用流传输技术或使用单独的服务器来向客户端传输。相反,可以根据本发明技术采用多个服务器以向任何数量的不同客户端传输。

客户端1410A-C中的每一个可以周期性地向内容提供商1400发送客户端状态信息更新。在一些情况下,内容提供商1400可以仅从活动客户端而不从旁观者客户端接收状态信息。正如上文阐述,客户端状态信息更新可以包括例如,与在每个客户端1410A-C处呈现内容项所关联的多种特征、事件、动作或操作对应的信息。例如,客户端状态信息更新可以指示客户端1410A-C控制的人物或其他实体执行的多种动作或操作。作为另一个示例,客户端状态信息更新可以包括可以帮助生成场景的一个或多个视图的任何信息,如客户端控制的人物或其他实体的指示。有关将控制从一个人物或实体切换到另一个人物或实体的信息以及有关客户端的连接或连接断开的信息形成内容传输会话的参与。客户端状态信息更新还可以指示例如客户端1410A-C中每一个是正在混合模式下工作还是在全流模式下工作和/或指示此类模式下的工作之间的切换。

内容提供商1400处通过输入控制面1480接收从客户端1410A-C传送的客户端状态信息更新。可以统一地使用从每个客户端1410A-C接收的状态信息来调整正在传送的内容项的共享状态信息1470。调整可以包括例如,添加、删除和/或修改共享状态信息1470的多个不同部分。正如上文阐述,可以将共享状态信息1470与内容项组合来使用以产生多种内容项场景。也正如上文阐述,可以将共享状态信息1470与内容项组合来使用以产生每个内容项场景的一个或多个视图。

然后可以由图形处理单元集合1490将每个内容项场景呈现成一个或多个视图,图形处理单元集合1490可以包括一个或多个图形处理单元1403A-C。为了指示图形处理单元集合1490可以包括一个或多个图形处理单元,图14以实线边框示出一个图形处理单元1403B,以及以虚线边框示出余下图形处理单元1403A和1403C。在一些情况下,多个图形处理单元1403A-C可以分布在位于任何数量的不同物理位置处的任何数量的不同机器或设备上。可以由图形处理单元缩放组件1460至少部分地确定与特定内容项关联来使用的图形处理单元1403A-C的数量。正如上文阐述,在一些情况下,用于呈现特定内容项的图形处理单元的数量可以是弹性的,以使该数量可以针对不同的场景而改变或按任何适合的间隔来更改。上文详细地描述用于确定要采用的图形处理单元的适合数量的多种示例技术。

在一些情况下,图形处理单元缩放组件1460可以监视图形处理单元1490、命令图形处理单元1490和以其他方式与图形处理单元1490通信。正如上文阐述,例如,图形处理单元缩放组件1460监视多种工作负载、可用容量、图形处理单元生成呈现的速率和其他执行速率以及与图形处理单元1403A-C关联的任何其他适合特征。在一些情况下,图形处理单元缩放组件1460还可以与输入控制面1480、共享状态信息1470、多种内容项和多种其他组件通信,以便确定如场景复杂度、连接的客户端和关联的视图的数量、关联的内容提供商或客户规则或偏好和任何其他相关信息的信息。在图14的特定示例中,图形处理单元缩放组件1460被包括在输入控制面1480内,但是,在一些情况下,图形处理单元缩放组件1460可以是单独的组件或作为一个或多个其他组件的一部分来包括。

在一些情况下,为了确定将参与呈现特定内容项的图形处理单元1403的数量,图形处理单元缩放组件1460还可以确定场景呈现总负载如何分布在所有数量的参与图形处理单元1403上。例如,图形处理单元缩放组件1460可以指定一个或多个特定图形处理单元以呈现场景的多个特定部分。图7-10中示出以及在上文中详细地描述了多种场景部分在多个不同图形处理单元上的一些示例分布。正如上文阐述,在一些情况下,可以指定一个或多个图形处理单元来呈现场景的特定维度或坐标、场景的特定视图和/或如人物、建筑物、车辆、武器、树、水、火、动物和其他的一个或多个场景对象。在一些情况下,作为图形处理单元缩放组件1460的补充或备选,可以由如图形处理单元1403A-C的其中一个或多个的其他组件或图14所示的任何其他组件或其他组件来作出全部或一些图形处理单元呈现分布确定。

正如上文阐述,一旦一个或多个图形处理单元1403A-C呈现了场景的多个不同部分,则可以将多个不同呈现组合来形成一个或多个最终视图。在一些情况下,可以由图形处理单元1403A-C的其中一个或多个和/或由任何其他适合组件来执行这些不同呈现的组合。图11-13图示以及上文详细地描述了用于将来自多个图形处理单元的呈现进行组合的多种示例技术。

任何可以将一个或多个呈现的视图提供到流传输服务器1450A-C以便向相应的客户端1410A-C传输。在传输之前,可以执行多种操作以准备用于传输的呈现的视图,如编码和压缩。这些多种操作可以由流传输服务器1450A-C内的组件或多种其他组件来执行。

正如上文阐述,在一些情况下,客户端1410A-C中的至少其中一些可以接收特定场景的不同视图。再有,在一些情况下,客户端1410A-C中的至少其中一些可以接收特定场景的同一视图。例如,客户端1410A和1410B可以接收场景的同一视图,而客户端1410C可以接收相同场景的不同视图。

图15是示出根据本发明公开的基于共享状态信息生成一个或多个视图的示例过程的流程图。在操作1510处,发起内容项传输会话。在一些情况下,内容项传输会话可以是基于来自一个或多个参与客户端设备的一个或多个请求而发起的。参与客户端设备可以例如,包括接收与内容项关联的一个或多个传输的任何客户端设备。参与客户端可以例如包括活动客户端和旁观者客户端。活动客户端是控制内容项内的一个或多个人物或其他实体的客户端。旁观者客户端是未控制内容项内的任何人物或其他实体的客户端。正如上文阐述,可以使用多媒体流传输或任何其他适合的内容交付技术来传送内容项。

在操作1512处,由内容提供商从参与客户端设备的其中一个或多个接收客户端状态信息。在一些情况下,内容提供商可以仅从活动客户端而不从旁观者客户端接收状态信息。在一些情况下,操作1512处接收的客户端状态信息可以包括来自特定客户端的所有客户端状态信息或仅包括来自特定客户端的客户端状态信息的部分。例如,在一些情况下,在操作1512处接收的客户端状态信息可以包括客户端状态信息更新。此类客户端状态信息更新可以例如,包括先前未向内容提供商传送过的客户端状态信息。客户端状态信息更新还可以例如,排除先前向内容提供商传送过的客户端状态信息。

正如上文阐述,客户端状态信息更新可以包括例如,与在每个客户端处呈现内容项所关联的多种特征、事件、动作或操作对应的信息。例如,客户端状态信息可以指示客户端控制的人物或其他实体执行的多种动作或操作。作为另一个示例,客户端状态信息可以包括可以帮助生成场景的一个或多个视图的任何信息,如客户端控制的人生或其他实体的指示、有关控制从一个人物或实体切换到另一个人物或实体的信息以及有关客户端与内容传输会话的参与连接或断开连接的信息。作为又一个示例,客户端状态信息更新还可以指示例如客户端是正在混合模式下工作还是在全流模式下工作和/或指示此类模式下的工作之间的切换。

在操作1514处,内容提供商使用操作1512处接收的客户端状态信息以调整内容提供商维护的共享内容项状态信息。操作1514处执行的调整可以包括例如,添加、删除和/或修改共享内容项状态信息的多个不同部分。正如上文阐述,在一些情况下,共享内容项状态信息可以基于从每个连接的客户端最近接收的更新信息反映总体内容项状态。

在操作1516处,生成下一个内容项场景。正如上文阐述,可以基于例如,内容项本身内的信息以及还有内容提供商维护的共享内容项状态信息来生成下一个内容项场景。

此处注意,图15和图16仅示出可能执行操作所用而非限定的一些示例次序。由此,例如,虽然图15示出操作1512和1514在操作1516之前进行,但是任何、每种情况下均不要求这些操作一定以此次序执行。具体来说,正如上文阐述,可以周期性地按任何适合的计划或非计划时间同时或不同时从一个或多个参与客户端接收客户端状态信息更新。由此,例如,不要求一定从任何或每个客户端接收客户端状态信息更新和/或在生成新场景的每一个实例之前更新共享状态信息。

在操作1518处,内容提供商呈现操作1516处生成的场景的一个或多个视图。正如上文阐述,场景的每个视图可以是与相同场景关联的不同图像。可以基于例如,内容项本身内的信息以及还有内容提供商维护的共享内容项状态信息来呈现场景的一个或多个视图。正如上文阐述,在一些情况下,至少一些参与客户端可以接收相同场景的不同视图。再有,在一些情况下,至少一些参与客户端可以接收相同场景的同一视图。

正如上文阐述,场景的多个不同视图可以例如各示出从与每个视图关联的不同相应视角来看的场景。例如,可以从一个或多个相应内容项实体的视角来生成每个视图。例如,相应实体可以由传送呈现的视图所发往的一个或多个客户端来控制或以其他方式与之关联。相应实体可以包括例如,与内容项场景关联的人物、车辆或任何其他实体。例如,在一些情况下,与视图关联的视角可以示出如同通过相应人物的眼睛或从与相应实体关联的另一个位置观察到的场景。作为另一个示例,与视图关联的视角可以示出使得相应人物或其他实体位于该视图的中心或另外设在视图内具有高关注和/或高可视性的位置的场景。

在操作1520处,内容提供商将每个呈现的视图传送到参与客户端。正如上文阐述,在一些情况下,可以采用不同的相应流传输服务器来向相应客户端传输。在操作1522处,确定是否还有任何余下场景要与正在传送的内容项关联生成。如果是这样,则过程返回到操作1512。与之相对,如果没有余下场景要生成,则在操作1524处,终止内容项的传输。

又如上文阐述,在一些情况下,可以为多个不同混合模式客户端生成多个不同的视图。在此情况下,发送到每个混合模式客户端的数据量可能有时与如内容提供商与客户端之间的连接质量的多个因素非常相关,内容提供商与客户端之间的连接质量可以基于如带宽、吞吐量、延迟、丢包率等而定。例如,对于与内容提供商具有较高质量连接的第一混合模式客户端,内容提供商可以向第一混合模式客户端传送包括较大数据量的场景的较高复杂度视图。与之相对,对于与内容提供商具有较低质量连接的第二混合模式客户端,内容提供商可以向第二混合模式客户端传送场景的包括较小数据量的较低复杂度视图。例如,发送到第一混合模式客户端的较高复杂度视图可以包括发送到第二混合模式客户端的较低复杂度视图中可能不包括的更多细节的纹理、图案、形状和其他特征。

图16是示出根据本发明公开的使用一个或多个图形处理单元进行呈现的示例过程的流程图。在操作1610处,启动内容项传输会话。正如上文阐述,在一些情况下,内容项传输会话可以基于来自一个或多个参与客户端设备的一个或多个请求来发起,并且可以采用例如,多媒体流传输或任何其他适合的内容交付技术。正如上文阐述,参与客户端可以例如包括活动客户端和旁观者客户端。在操作1612处,标识下一个内容项场景。正如上文阐述,可以基于例如,内容项本身内的信息以及还有内容提供商维护的共享内容项状态信息来生成下一个内容项场景。上文详细地描述了用于获取和更新共享内容项状态信息的一些示例技术。所生成的内容项场景可以例如通过一个或多个图形处理单元的任何组合、通过图形处理单元缩放组件或通过任何其他适合的组件来标识。例如可以标识场景,以使之能够至少部分地被一个或多个图形处理单元访问并呈现。

在操作1614处,获取图形处理单元缩放信息。操作1614处获取的图形处理单元缩放信息可以包括与图形处理单元缩放操作关联的任何信息。正如上文阐述,此类信息可以包括,例如,图形处理单元生成呈现的速率或与一个或多个图形处理单元关联的其他执行速率、有关参与内容项传输会话的客户端的数量的信息、有关正在与内容项传输会话关联来呈现的不同视图的数量的信息、有关附加图形处理单元或其他资源的可用性的信息、与内容提供商和/或客户关联的规则或偏好以及任何其他适合的信息。

在操作1616处,作出一个或多个图形处理单元缩放确定。图形处理单元缩放确定可以例如至少部分地基于操作1614处获取的图形处理单元缩放信息来作出。图形处理单元缩放确定可以包括,例如,要采用一个或多个附加图形处理单元来呈现传送的内容项、要将一个或多个图形处理单元从传送的内容项的呈现中放弃以及要另外重新分布或重新指定呈现传送的内容项所涉及的一个或多个图形处理单元的确定。图形处理单元缩放确定可以包括例如,有关所采用的图形处理单元的数量的确定,以及还包括有关如何将操作1612处生成的场景的多个部分分布在所采用的图形处理单元上的确定。上文例如结合图7-10以及贯穿本发明公开描述了作出图形处理单元缩放确定的一些示例技术。

在操作1618处,采用一个或多个图形处理单元来生成与场景关联的呈现。可以根据操作1616处作出的图形处理单元缩放确定来生成呈现。正如上文阐述,如果在操作1618处采用督工额图形处理单元,则在一些情况下这些多个图形处理单元可以至少部分地彼此同时生成与场景关联的呈现。再有,在一些情况下,与仅采用一个图形处理单元来呈现场景时相比,使用多个图形处理单元可以缩减呈现该场景所需的总时间。

在操作1620处,将操作1618处生成的呈现与场景的一个或多个视图关联。在一些示例情形中,可以采用单个图形处理单元来生成场景的单个视图。再有,在一些示例情形中,多个图形处理单元可以各生成场景的相应视图。再有,在一些示例情形中,多个图形处理单元可以进行组合来形成场景的单个视图。再有,在一些示例情形中,多个图形处理单元可以进行组合来形成场景的多个视图。而且,还可以采用上文或其他示例情形的任何组合。相应地,操作1620可以包括,例如,确定和/或标识所生成的呈现中哪些部分将被并入到基于场景生成的每个呈现的视图中。例如,可以将呈现或呈现的一部分与包括该呈现或呈现的该部分的每个视图关联。操作1620还可以包括,例如,将来自多个图形处理单元的呈现的多个部分组合成一个或多个视图。图11-13图示以及上文详细地描述了用于将来自多个图形处理单元的呈现组合成视图的多种示例技术。在一些情况下,当组合多个图形处理单元来形成场景的多个视图时,可以对多个视图中每一个全部或部分地重复使用组合技术,如拼接和分层。

在操作1622处,内容提供商将场景的一个或多个视图提供到一个或多个参与客户端。正如上文阐述,在一些情况下,可以采用不同的相应流传输服务器来向相应客户端传输。正如上文阐述,在一些情况下,可以与场景关联来形成多个不同的视图。在这些情况的其中一些中,多个不同视图的每一个可以包括与场景关联的不同相应图像。因此,在一些情况下,可以在操作1620处形成多个不同图像并在操作1622处传送这些图像。

在操作1624处,确定是否还有任何余下场景要与正在传送的内容项关联生成。如果是这样,则过程返回到操作1612。与之相对,如果没有余下场景要生成,则在操作1626处,终止内容项的传输。

正如上文阐述,在一些情况下,可以将来自不同图形处理单元的呈现组合在一起以形成场景的一个或多个视图。上文描述的示例的其中一些可能指示可以由内容提供商将来自不同图形处理单元的呈现组合在一起。但是,在一些情况下,根据本发明公开的技术,可以由客户端将来自不同图形处理单元的呈现组合在一起。在此类情况下,内容提供商可以例如将来自多个图形处理单元的呈现传送到客户端而不将这些多个呈现组合成一个或多个视图。客户端然后可以接收这些呈现,并在客户端处将呈现组合成一个或多个视图。客户端可以采用上文描述的拼接和分层技术或任何其他适合的技术的任何组合来组合这些接收到的呈现。

在一些情况下,可以将与场景的多个不同视图关联的数据组合成单个数据集合,如呈现目标。图17中图示根据本发明公开的采用数据集合来进行多个视图生成的一个示例系统。如图所示,内容提供商1700包括图形处理单元1702,图形处理单元1702如上文描述可以用于生成与内容项场景的多个视图1730A-C关联的数据。在图17的示例中,将三个视图1730A-C传送到三个客户端1750A-C。具体来说,将视图1730A传送到客户端1750A,将视图1730B传送到客户端1750B,以及将视图1730C传送到客户端1750C。

如图17所示,图形处理单元1702和/或其他组件生成包括和/或存储与多个不同视图关联的数据的数据集合1710。数据集合1710可以是例如呈现目标或另一个数据集合。如本文所使用的术语呈现目标是指与一个或多个呈现的数据集合或与场景关联的信息的其他表示。数据集合1710可以由与一个或多个呈现关联的数据或与场景关联的信息的其他表示来生成,例如,将与一个或多个呈现关联的数据或与场景关联的信息的其他表示包括在数据集合1710。正如下文将详细描述的,数据集合1710内包括的数据可以包括,例如,与场景的视图关联的所操控的几何形状、体素、像素、颜色、纹理、阴影和任何其他数据对应的数据。又如图17所示,数据集合1710包括多个分段1720A-C,分段1720A-C中每一个分段与相应的视图1730A-C关联。具体来说,将分段1720A与视图1730A关联,将分段1720B与视图1730B关联,以及将分段1720C与视图1730C关联。同样地,虽然图17示出与三个视图1730A-C关联的分段1720A-C,但是根据本发明公开的技术的数据集合可以包括与任何数量的不同视图关联的任何数量的不同分段。

当与视图1730A-C关联的数据成功地包括在分段1720A-C内时,编码组件1740A-C可以各从数据集合1710中与相应视图1730A-C关联的相应分段1720A-C中提取数据。具体来说,编码组件1740A可以从分段1720A提取数据,编码组件1740B可以从分段1720B提取数据,以及编码组件1740C可以从分段1720C提取数据。传输组件1741A-C然后可以各自将视图1730A-C分别地传送到客户端1750A-C。在一些情况下,客户端1750A-C中每一个可以具有相应专用流传输服务器,其能够将相应视图1730A-C传送到每个客户端1750A-C。在一些情况下,每个专用相应流传输服务器可以包括相应编码组件和传输组件。例如,在一些情况下,客户端1750A的专用相应流传输服务器包括编码组件1740A和传输组件1741A。

例如,可以采用输入控制面1780和/或另一个组件来确定与给定场景结合生成的视图的数量。正如上文详细阐述,在一些情况下,可以采用来自客户端1750A-C的共享状态信息来部分地确定与多个视图关联的信息。输入控制面1780和/或另一个组件还可以例如协助提供数据集合1710以包括分段1720A-C,分段1720A-C各与多个视图1730A-C中的相应视图关联。分段1720A-C中每一个可以例如由多个参数来定义,如多种维度、数据地址、数据范围、数据量值、大小和使得数据中的部分能够彼此可区分的其他参数。在一些情况下,输入控制面1780可以确定与数据集合1710和分段1720A-C关联的参数,并将其告知图形处理单元1702和/或编码组件1740A-C。在一些情况下,还可以由图形处理单元1702或由另一个组件来确定这些参数。

可以采用多种技术来确定数据集合1710和分段1720A-C的参数。在一个示例中,可以对每个分段1720A-C相等地设置大小,并且每个分段1720A-C可以具有长度L和宽度W。这可以促使数据集合1710具有W*3L的大小,以考虑三个分段1720A-C中每一个的长度。在一些情况下,该数据集合可以包括可促使数据集合超过大小W*3L的附加信息。在一些情况下,分段1720A-C中的每一个可以具有彼此相对不同的大小。例如,当视图1730A-C与不同分辨率关联时,使用具有不同大小的分段是有益的。例如,不同客户端和/或客户端上的不同应用可以采用彼此相对不同的分辨率呈现视频。在一些情况下,较高分辨率视图可以具有与较大大小关联的数据集合分段,而较低分辨率视图可以具有与较小大小关联的数据集合分段。对于较高分辨率视图使用较大数据集合分段大小,例如,使得增大的数据量能够包括在较大的分段中,这可以帮助生成较高分辨率的视图。在一些情况下,输入控制面1780或另一个组件可以基于每个客户端1750A-C提供的信息来确定与每个视图关联的分辨率。然后,输入控制面1780或另一个组件可以基于客户端1750A-C提供的分辨率信息来提供数据集合1710和分段1720A-C。

本文使用术语数据集合生成组件来指帮助生成数据集合1710而至少部分地采用的任何组件。示例数据集合生成组件可以包括,例如,输入控制面1780、图形处理单元1702和帮助生成数据集合1710的任何其他组件。数据集合生成组件的一个或多个可以例如,确定要生成的场景的视图的数量。当数据集合1710是呈现目标时,数据集合生成组件还可以称为呈现目标生成组件。

正如上文阐述,场景的多个不同视图可以例如各示出从与每个视图关联的不同相应视角来看的场景。例如,可以从一个或多个相应内容项实体的视角来生成每个视图。例如,相应实体可以由传送呈现的视图所发往的一个或多个客户端来控制或以其他方式与之关联。相应实体可以包括例如,与内容项场景关联的人物、车辆或任何其他实体。例如,在一些情况下,与视图关联的视角可以示出如同通过相应人物的眼睛或从与相应实体关联的另一个位置观察到的场景。作为另一个示例,与视图关联的视角可以示出使得相应人物或其他实体位于该视图的中心或另外设在视图内具有高关注和/或高可视性的位置的场景。

图18中图示根据本发明公开的包括与多个视图关联的数据的第一示例数据集合。如图所示,数据集合1810包括分段1820A-C。分段1820A-C示出从与场景1805的三个不同视图1830A-C关联的三个不同视角的表示1850A-C、1860A-C和1870A-C。具体来说,分段1820A包括表示1850A、1860A和1870A;分段1820B包括表示1850B、1860B和1870B;以及分段1820C包括表示1850C、1860C和1870C。

表示1850A-C、1860A-C和1870A-C是场景1805内包括的对象1850、1860和1870的表示。具体来说,表示1850A-C是对象1850的表示,表示1860A-C是对象1860的表示,以及表示1870A-C是对象1870的对象。注意,对象1850,、1860和1870以及表示1850A-C、1860A-C和1870A-C可以包括任何数量的不同纹理和颜色和其他视觉效果。但是,为了简化,图18-20中未示出这些视觉效果。

在一些情况下,图形处理单元可以在数据集合的每个分段中形成对象的表示,此后才继续形成另一个对象的表示。在图19中图示此表示形成序列的示例。具体来说,图19示出处于三个形成阶段的图18的数据集合1810。阶段1910A是形成的第一阶段,其出现在第二阶段1910B和第三阶段1910C之前。如图所示,在第一阶段1910A,在分段1820A-C中仅形成与对象1850关联的表示1850A-C。

在一些情况下,表示1850A-C的形成可以包括操作的执行,如多种几何形状操控、着色、纹理填充和阴影设置。例如,在一些情况下,可以在分段1820A中首先形成表示1850A。表示1850A的形成可以包括,例如,加载与场景1805中的对象1850关联的几何形状,并操控对象1850的几何形状,以便从与视图1830A关联的视角来呈现该对象。表示1850A的形成还可以包括,例如,将多种颜色、纹理和/或阴影填充应用于表示1850A。将纹理应用于表示1850A可以包括,例如,加载与对象1850关联的一个或多个存储的纹理文件。将阴影填充应用于表示1850A可以包括,例如,加载与对象1850关联的一个或多个阴影填充文件。

在一些情况下,在分段1820A中形成表示1850A之后,可以在分段1820B中形成表示1850B。但是,因为表示1850B在表示1850A之后形成,所以在一些情况下,可以已经由图形处理单元加载与对象1850关联的几何形状、纹理、阴影填充以及多种其他程序和信息。因此,在一些情况下,表示1850B的形成需要的加载和其他检索操作显著地少于形成表示1850A所需的加载和其他检索操作。表示1850B的形成可以包括,例如,操控对象1850的已加载的几何形状,以便从与视图1830B关联的视角呈现该对象。表示1850B的形成还可以包括,例如,将多种颜色、纹理和/或阴影填充应用于表示1850A。正如上文阐述,应用于表示1850B的纹理和阴影填充可以包括,例如,先前用于形成表示1850A的先前加载的纹理和阴影填充。

在一些情况下,在分段1820B中形成表示1850B之后,可以在分段1820C中形成表示1850C。但是,因为表示1850C在表示1850A和1850B之后形成,所以在一些情况下,可以已经由图形处理单元加载与对象1850关联的几何形状、纹理、阴影填充以及多种其他程序和信息。因此,与表示1850B相似,在一些情况下,表示1850C的形成需要的加载和其他检索操作显著地少于形成表示1850A所需的加载和其他检索操作。表示1850C的形成可以包括,例如,操控对象1850的已加载的几何形状,以便从与视图1830C关联的视角呈现该对象。表示1850C的形成还可以包括,例如,将多种颜色、纹理和/或阴影填充应用于表示1850C。正如上文阐述,应用于表示1850C的纹理和阴影填充可以包括,例如,先前用于形成表示1850A和1850B的先前加载的纹理和阴影填充。

图19的阶段1910B是第二形成阶段,其出现在第一阶段1910A之后和第三阶段1910C之前。如图所示,在第二阶段1910B处,与对象1850关联的表示1850A-C以及与对象1860关联的表示1860A-C已在分段1820A-C中形成。在一些情况下,表示1860A-C可以通过第一形成表示1860A然后是1860B然后是1860C来形成。形成表示1860A可以包括,例如,加载与对象1860关联的几何形状,加载与对象1860关联的一个或多个纹理以及加载与对象1860关联的一个或多个阴影填充。但是,当在表示1860A之后形成表示1860B和1860C时,在一些情况下,与对象1860关联的几何形状、纹理、阴影填充和多种其他程序和信息可能已经被图形处理单元加载。因此,在一些情况下,表示1860B和1860C的形成需要的加载和其他检索操作可能显著地少于形成表示1860A所需的加载和其他检索操作。

阶段1910C是第三形成阶段,其出现在第一阶段1910A和第二阶段1910C之后。如图所示,在第三阶段1910C处,已经在分段1820A-C中形成表示1850A-C、1860A-C和1870A-C。在一些情况下,表示1870A-C可以通过第一形成表示1870A然后是1870B然后是1870C来形成。形成表示1870A可以包括,例如,加载与对象1870关联的几何形状,加载与对象1870关联的一个或多个纹理以及加载与对象1870关联的一个或多个阴影填充。但是,当在表示1870A之后形成表示1870B和1870C时,在一些情况下,与对象1870关联的几何形状、纹理、阴影填充和多种其他程序和信息可能已经被图形处理单元加载。因此,在一些情况下,表示1870B和1870C的形成需要的加载和其他检索操作可能显著地少于形成表示1870A所需的加载和其他检索操作。

正如应该认识到的,除了操控几何形状和应用颜色、纹理和阴影填充外,根据分段1820A-C中的任何或全部表示的形成可以执行其他图形操作。此类其他图形操作可以包括,例如,多种其他变换操作、光照、裁剪、扫描转换、光栅化、模糊等。

由此,图19示出图形处理单元在数据集合的每个分段中形成一对象的表示然后继续形成另一个对象的表示的示例。正如上文阐述,在一些情况下,例如,由于减少或免去重复检索或加载与每个对象关联的几何形状、纹理、阴影填充和其他程序或信息的需求,此形成序列可以是有益的。在一些情况下,对于与每个对象关联形成的第一表示,可以仅加载一次几何形状、纹理、阴影填充和其他程序或信息的至少其中一些。然后可以无需重复加载已经加载的几何形状、纹理、阴影填充和其他程序或信息来形成相同对象的后续表示。在一些情况下,加载几何形状、纹理或阴影填充的每个实例可以使图形处理单元进行处理状态更改。此类状态更改可以增加与生成场景的多个视图关联的延迟。

在一些情况下,使用如图19所示的形成序列可以显著地减少生成场景的多个视图所需的状态更改次数。例如,在一些情况下,状态更改的次数可以随与场景中的对象的数量对应的因子减少。例如,考虑一个备选形成序列,其中通过首先在分段1820A中形成每个表示(包括表示1850A、1860A和1870A),然后在分段1820B中形成每个表示(包括表示1850B、1860B和1870A),然后在分段1820C中形成每个表示(包括表示1850C、1860C和1870C)来形成图18的数据集合1810。在一些情况下,此备选形成序列可能需要三倍于采用图19所示的形成序列所需的状态更改次数。这是因为该备选形成序列可能每次对于每个表示都需要加载几何形状、纹理、阴影填充和其他程序或信息-与此比较,仅对与每个对象关联的第一表示执行加载,而不对与每个对象关联的后续表示重复加载。

再次参考图18,注意图18的数据集合1810包括相等大小的分段1820A-C。但是,正如上文阐述,没有要求数据集合内的分段必须一定是相等大小的。在一些情况下,数据集合可以包括具有不同相应大小的分段。不同相应大小中每一个可以包括或可以能够包括彼此相对不同数量的数据。具体来说,在一些情况下,较大大小的分段与较小大小的分段相比可以包括或可以能够包括较大数据量。在一些情况下,每个分段的大小和/或每个分段中包括的数据量可以基于与接收该分段所关联的视图的一个或多个客户端对应的分辨率来确定。例如,不同客户端和/或客户端上的不同应用可以采用彼此相对不同的分辨率呈现视频。在一些情况下,包括较大数据量的较大大小的分段可以对应于与较高分辨率关联的视图,而包括较小数据量的较小大小的分段可以对应于与较低分辨率关联的视图。图20示出数据集合2010,数据集合2010包括各具有彼此相对不同大小的分段2020A-C。正如上文阐述,例如,当视图与不同分辨率关联时,使用具有不同大小的分段2020A-C是有益的。具体来说,如图20所示,分段2020A与高分辨率视图2030A关联,分段2020B与中等分辨率视图2030B关联,以及分段2020C与低分辨率视图2030C关联。分段2020A可以包括比分段2020B大的数据量,而分段2020B可以包括比分段2020C大的数据量。

图21是示出根据本发明公开的采用数据集合来用于多个视图生成的示例过程的流程图。图21的流程图针对的是一个特定示例,该示例中,数据集合包括分别与当前场景的三个视图关联的三个分段。但是,同样注意,可以与包括分别与任何数量的不同视图关联的任何数量的不同分段的数据集合关联来运用本发明公开的技术。

在操作2104处,产生当前场景。正如上文阐述,可以至少部分地由内容项产生场景,如视频游戏和/或其他组件。可以基于例如,内容项中的信息和一个或多个客户端提供的状态信息来产生当前场景。

在操作2106处,接收数据集合布置信息。数据集合布置信息可以包括,例如,正在为每个场景生成的视图的数量和/或内容项的当前场景、与每个视图关联的分辨率和可用于提供数据集合的任何其他信息。内容提供商可以采用多种不同技术来确定正在生成的视图的数量。例如,在一些情况下,要接收内容项的每个不同客户端可以接收其各自的相应视图。再有,在一些情况下,控制人物或其他实体或以其他方式与之关联的每个客户端可以接收其各自相应视图。但是,正如上文阐述,在一些情况下,控制不同实体的某些客户端可以接收同一视图。再有,在一些情况下,控制相同人物或另一个实体的客户端可以接收同一视图。在一些情况下,采用不同显示器分辨率或以其他方式与之关联的每个客户端可以接收其各自相应视图。在一些情况下,可以基于一个或多个客户端提供的状态信息或其他信息来确定视图的数量。

在操作2108处,基于操作2106处标识的布置信息来布置数据集合。数据集合的布置可以包括,例如,确定要包括在数据集合中的分段的数量。该数据集合的布置还可以包括例如,定义与每个分段关联的参数,如多种维度、数据地址、数据范围、数据量值、大小和其他参数。在一些情况下,可以基于与接收每个分组所对应的视图的一个或多个客户端所关联的分辨率来确定每个分组的大小。正如上文阐述,在一些情况下,输入控制面和/或另一个组件可以确定与数据集合及其分段关联的维度或其他参数,并将其告知图形处理单元和/或多种编码和传输组件。在一些情况下,还可以由图形处理单元或由另一个组件来确定这些维度或其他参数。

在一些情况下,无需一定对于与播放内容项关联产生的每个不同场景都重复操作2106和2108。例如,在一些情况下,可以在开始播放内容项时执行操作2106和2108,并且只要布置信息从一个场景到另一个场景大致恒定,则每个场景的每个数据集合的布置可以保持不变。在一些情况下,可能发生某些更改,可使得数据集合对于检测到更改之后产生的下一个场景被重新布置。例如,当检测到一个或多个客户端加入或终止其参与玩视频游戏时,则后续场景的数据集合可能基于检测到此信息而被重新布置。具体来说,例如,后续场景的数据集合可以基于该信息按需被重新布置以包括附加或较少(additional of fewer)的分段。

在操作2110处,对当前对象迭代,以使当前对象被设为下一个对象。当前对象是在操作2112-2116处其表示在数据集合中形成的对象。例如,再次参考图19所示的示例,操作2110的第一次迭代可以包括将对象1850设置为当前对象。作为另一个示例,操作2110的第二迭代可以包括将对象1860设置为当前对象。注意,包括操作2110是为了易于向读者阐明可以对当前场景中的一个或多个对象重复图21的过程中的操作。操作2110不一定需要内容提供商执行的任何处理或计算。可以采用任何数量的技术来确定将场景中的对象选为当前对象的次序。例如,该次序可以按内容项、由图形处理单元或由另一个组件来确定。该次序可以基于多种因素来确定,如对象相对于与一个或多个视图关联的视角的深度或任何其他适合的因素。

在操作2112处,在数据集合的第一分段中形成当前对象的表示。例如,再次参考图19所示的示例,操作2112的第一次迭代可以包括在分段1820A中形成表示1850A。从属操作2112A指示操作2112可以包括,例如,加载和使用与当前对象关联的几何形状、纹理和阴影填充。例如,可以加载和操控当前对象的几何形状,以便形成从与第一分段关联的视图所对应的视角呈现的表示。此外,可以加载与当前对象关联的多种纹理和阴影填充,并将其应用于正在第一分段中形成的表示。还可以执行任何数量的其他附加或备选操作以在第一分段中形成表示。

在操作2114处,在数据集合的第二分段中形成当前对象的表示。例如,再次参考图19所示的示例,操作2114的第一次迭代可以包括在分段1820B中形成表示1850B。从属操作2112A指示操作2114可以包括,例如,使用已加载的与当前对象关联的几何形状、纹理和阴影填充。例如,在一些情况下,可以操控已在从属操作2112A处加载的当前对象的几何形状以形成从与第二分段关联的视图所对应的视角呈现的表示。此外,在一些情况下,可以将已在从属操作2112A处加载的与当前对象关联的多种纹理和阴影填充应用于正在第二分段中形成的表示。还可以执行任何数量的其他附加或备选操作以在第二分段中形成表示。

在操作2116处,在数据集合的第三分段中形成当前对象的表示。例如,再次参考图19所示的示例,操作2116的第一次迭代可以包括在分段1820C中形成表示1850C。从属操作2116A指示操作2116可以包括,例如,使用已加载的与当前对象关联的几何形状、纹理和阴影填充。例如,在一些情况下,可以操控已在从属操作2112A处加载的当前对象的几何形状以形成从与第三分段关联的视图所对应的视角呈现的表示。此外,在一些情况下,可以将已在从属操作2112A处加载的与当前对象关联的多种纹理和阴影填充应用于正在第三分段中形成的表示。还可以执行任何数量的其他附加或备选适合的几何操作以在第三分段中形成表示。

同样地注意,从属操作2112A、2114A和2116A仅旨在标识可以分别在操作2112、2114和2116处执行的一些示例从属操作,并且所有此类从属操作并非必需的且不一定包括可在所有情况下执行的所有从属操作的完整列表。例如,在一些情况下,操作2114和2116可以包括使用先前未在操作2112或另一个操作处加载的一些几何形状、纹理、阴影填充和/或其他组件。

在操作2118处,确定当前场景中是否余下有数据集合中尚未形成其表示的任何对象。如果情况如此,则过程返回到操作2110,在操作2110处,将当前对象设置为下一个余下对象。然后重复操作2112-2116以在数据集合的每个分段中形成该下一个对象的表示。例如,再次参考图19所示的示例,操作2112-2116的第二次迭代可以包括形成表示1860A-C,以及操作2112-2116的第三次迭代可以包括形成表示1870A-C。在一些情况下,可以通过例如对场景中的每个对象执行操作2112-2116直到适于每个视图的程度来生成数据集合。但是,在一些情况下,生成数据集合可以无需一定按图21所示的次序来形成对象表示。在一些情况下,场景内的某些对象无需一定包括在特定视图内或具有与特定视图关联的数据集合的分段内形成的对应表示。此情况可能出现在例如对象位于与特定视图关联的观察区域外时。

如果在操作2118处确定场景中没有余下尚未在数据集合中形成其表示的对象,则过程进行到操作2120,在操作2120处,从数据集合的第一、第二和第三分段的每一个分段中提取数据的至少一部分,以便分别地形成当前场景的第一、第二和第三视图。在操作2122处,将第一、第二和第三视图编码,以及在操作2124处,传送第一、第二和第三视图。在一些情况下,可以将第一、第二和第三视图中每一个传送到相应的不同第一、第二和第三客户端。在其他情况下,可以将这些视图中的一个或多个传送到单个客户端。正如上文阐述,在一些情况下,可以由相应专用编码和传输组件来将第一、第二和第三视图中的每一个编码并传送,这些相应专用编码和传输组件可以例如包括相应专用流传输服务器或被包括在其中。

前文部分中描述的过程、方法和算法中的每一个可以包括在一个或多个计算机或计算机处理器执行的代码模块中且完全地或部分地由这些代码模块实现自动化。这些代码模块可以存储在任何类型的非瞬态计算机可读介质或计算机存储装置上,如硬盘驱动器、固态存储器、光盘等。这些过程和算法可以部分地或完全地在专用电路中实现。本发明公开的过程和过程步骤的结果可以被永久性地或以其他方式存储在例如易失性或非易失性存储装置的任何类型的非瞬态计算机存储装置中。

依据如下条款可以更好地理解前文:

1.存储指令的一个或多个计算节点,所述指令在由所述一个或多个计算节点执行时,促使所述一个或多个计算节点执行包括下列各项的操作:

标识视频游戏的第一场景,所述第一场景包括至少第一部分和第二部分,其中采用多个图形处理单元以基于所述视频游戏的所述第一场景来呈现第一图像;

由第一图形处理单元基于所述视频游戏的所述第一场景的所述第一部分生成第一呈现;

由第二图形处理单元基于所述视频游戏的所述第一场景的所述第二部分生成第二呈现,其中所述生成所述第一呈现和所述生成所述第二呈现至少部分地与彼此同时执行;

将所述第一呈现的至少部分和所述第二呈现的至少部分与所述视频游戏的所述第一场景的一个或多个视图关联;以及

将所述一个或多个视图传送到一个或多个客户端以用于作为所述视频游戏向所述一个或多个客户端的流传输的部分进行显示。

2.如条款1所述的一个或多个计算节点,其中与所述视频游戏关联采用的图形处理单元的数量是可改变。

3.如条款2所述的一个或多个计算节点,其中与所述视频游戏关联采用的图形处理单元的所述数量至少部分地基于与所述第一图形处理单元关联的执行速率来改变。

4.如条款1所述的一个或多个计算节点,其中与所述视频游戏关联采用的图形处理单元的数量是至少部分地基于与所述视频游戏的一个或多个场景关联生成的视图的数量来确定的。

5.一种由一个或多个计算节点生成第一图像的至少部分的计算机实现的方法,其包括:

由第一图形处理单元基于内容项的第一场景生成第一呈现;

由第二图形处理单元基于所述内容项的所述第一场景生成第二呈现,其中所述生成所述第一呈现和所述生成所述第二呈现至少部分地与彼此同时执行;

将所述第一呈现的至少部分和所述第二呈现的至少部分与所述第一场景的一个或多个视图关联;以及

将所述第一呈现的所述至少部分和所述第二呈现的所述至少部分传送到一个或多个客户端以用于显示。

6.如条款5所述的计算机实现的方法,其中将所述第一呈现的至少部分和所述第二呈现的至少部分与所述第一场景的一个或多个视图关联包括:

将所述第一呈现的所述至少部分与所述第一场景的第一视图关联;以及

将所述第二呈现的所述至少部分与所述第一场景的第二视图关联。

7.如条款5所述的计算机实现的方法,其中将所述第一呈现的至少部分和所述第二呈现的至少部分与所述第一场景的一个或多个视图关联包括:将所述第一呈现的所述至少部分与所述第二呈现的所述至少部分组合以形成所述第一场景的第一视图的至少部分。

8.如条款7所述的计算机实现的方法,其中所述组合包括将所述第一呈现的所述至少部分插入到所述第一视图的第一标识区域中,以及将所述第二呈现的所述至少部分插入到所述第一视图的第二标识区域中。

9.如条款7所述的计算机实现的方法,其中所述组合根据包括多个层的表示来执行,其中第一层对应于所述第一呈现的所述至少部分,并且其中第二层对应于所述第二呈现的所述至少部分。

10.如条款5所述的计算机实现的方法,其中与所述内容项关联采用的图形处理单元的数量是可改变。

11.如条款10所述的计算机实现的方法,其中与所述内容项关联采用的图形处理单元的数量至少部分地基于与所述第一图形处理单元关联的执行速率来改变。

12.如条款11所述的计算机实现的方法,其中当与所述第一图形处理单元关联的执行速率降到低于下限阈值时,增加与所述内容项关联采用的图形处理单元的数量,并且其中当与所述第一图形处理单元关联的执行速率升到高于上限阈值时,减少与所述内容项关联采用的图形处理单元的数量。

13.如条款5所述的计算机实现的方法,其中与所述内容项关联采用的图形处理单元的数量是至少部分地基于与所述内容项的一个或多个场景关联生成的视图的数量来确定的。

14.如条款5所述的计算机实现的方法,其中与所述内容项关联采用的图形处理单元的数量是至少部分地基于由特定内容提供商操作的图形处理单元的可用性来确定的。

15.如条款5所述的计算机实现的方法,其中与所述内容项的所述第一场景关联采用的图形处理单元的数量是至少部分地基于所述第一场景的场景复杂度来确定的。

16.一个或多个非瞬态计算机可读存储介质,其具有存储在其上的指令,所述指令在至少一个计算节点上执行时,促使所述至少一个计算节点执行包括下列各项的操作:

基于内容项的第一场景确定采用第一数量的图形处理单元来生成呈现,其中所述第一数量大于一;

由所述第一数量的图形处理单元基于所述内容项的所述第一场景生成所述呈现,其中所述生成由所述第一数量的图形处理单元中的每一个至少部分地同时执行;

将所述呈现中的每一个的至少部分与所述第一场景的一个或多个视图关联;以及

将所述一个或多个视图传送到一个或多个客户端以用于显示。

17.如条款16所述的非瞬态计算机可读存储介质,其中将所述呈现中的每一个的至少部分与所述第一场景的一个或多个视图关联包括:将所述呈现中的每一个的至少部分组合以形成所述第一场景的第一视图的至少部分。

18.如条款17所述的非瞬态计算机可读存储介质,其中所述组合包括将所述呈现中的每一个的至少部分插入到所述第一视图的相应标识区域中。

19.如条款17所述的非瞬态计算机可读存储介质,其中所述组合根据包括多个层的表示来执行,其中每个层对应于所述呈现中的相应一个的至少部分。

20.如条款16所述的非瞬态计算机可读存储介质,其中与所述内容项关联采用的图形处理单元的数量可从所述第一数量改变成另一个数量。

21.如条款20所述的非瞬态计算机可读存储介质,其中与所述内容项关联采用的图形处理单元的所述数量至少部分地基于与第一图形处理单元关联的执行速率来改变。

22.如条款16所述的非瞬态计算机可读存储介质,其中所述第一数量的图形处理单元是至少部分地基于与所述第一场景关联生成的视图的数量来确定的。

23.如条款16所述的非瞬态计算机可读存储介质,其中图形处理单元的所述第一数量是至少部分地基于由特定内容提供商操作的图形处理单元的可用性来确定的。

24.如条款16所述的非瞬态计算机可读存储介质,其中所述第一数量的图形处理单元是至少部分地基于所述第一场景的场景复杂度来确定的。

依据如下条款可以更好地理解前文:

1.存储指令的一个或多个计算节点,所述指令在由所述一个或多个计算节点执行时,促使所述一个或多个计算节点执行包括下列各项的操作:

从第一客户端接收第一客户端视频游戏状态信息的至少一部分;

从第二客户端接收第二客户端视频游戏状态信息的至少一部分;

基于所述第一客户端视频游戏状态信息和所述第二客户端视频游戏状态信息的所接收的部分,调整共享视频游戏状态信息;

基于所述共享视频游戏状态信息,生成第一场景的第一视频游戏视图和所述第一场景的第二视频游戏视图,其中所述第一视频游戏视图至少部分地不同于所述第二视频游戏视图;

将所述第一视频游戏视图传送到所述第一客户端;以及

将所述第二视频游戏视图传送到所述第二客户端。

2.如条款1所述的一个或多个计算节点,其中所述第一视频游戏视图与由所述第一客户端控制的第一视频游戏实体关联。

3.如条款2所述的一个或多个计算节点,其中所述第一视频游戏视图示出如同从与所述第一视频游戏实体关联的视角观察的所述第一场景。

4.如条款2所述的一个或多个计算节点,其中在所述第一视频游戏视图内,所述第一视频游戏实体在高可见性的位置处示出。

5.一种由一个或多个计算节点生成第一场景的第一视图的计算机实现的方法,其包括:

从第一客户端接收第一客户端状态信息的至少一部分;

从第二客户端接收第二客户端状态信息的至少一部分;

基于所述第一客户端状态信息和所述第二客户端状态信息的所接收的部分,调整共享状态信息;

基于所述共享状态信息来生成所述第一场景的所述第一视图;以及

将所述第一视图传送到所述第一客户端。

6.如条款5所述的计算机实现的方法,其中使用瘦客户端内容呈现软件在所述第一客户端上显示所述第一视图。

7.如条款5所述的计算机实现的方法,其中将所述第一视图传送到所述第一客户端而无需向所述第一客户端传送与所述第一视图关联的状态信息。

8.如条款5所述的计算机实现的方法,其还包括:

将所述第一视图传送到所述第二客户端。

9.如条款8所述的计算机实现的方法,其中所述第一视图与所述第一客户端控制的第一实体以及所述第二客户端控制的第二实体两者关联。

10.如条款5所述的计算机实现的方法,其还包括:

基于所述共享状态信息来生成所述第一场景的第二视图,其中所述第一视图至少部分地不同于所述第二视图;以及

将所述第二视图传送到所述第二客户端。

11.如条款10所述的计算机实现的方法,其中所述第一视图与所述第一客户端控制的第一实体关联,并且其中所述第二视图与所述第二客户端控制的第二实体关联。

12.如条款5所述的计算机实现的方法,其中所述第一视图示出如同从与所述第一客户端控制的第一实体关联的视角观察的所述第一场景。

13.如条款5所述的计算机实现的方法,其中在所述第一视图内,由所述第一客户端控制的第一实体在高可见性的位置处示出。

14.如条款5所述的计算机实现的方法,其中至少部分地使用多个图形处理单元来生成所述第一视图。

15.一个或多个非瞬态计算机可读存储介质,其具有存储在其上的指令,所述指令在至少一个计算节点上执行时,促使所述至少一个计算节点执行包括下列各项的操作:

从第一客户端接收第一客户端状态信息的至少一部分;

从第二客户端接收第二客户端状态信息的至少一部分;

基于所述第一客户端状态信息和所述第二客户端状态信息的所接收的部分,调整共享状态信息;

基于所述共享状态信息来生成第一场景的第一视图;

基于所述共享状态信息来生成所述第一场景的第二视图,其中所述第一视图至少部分地不同于所述第二视图;

将所述第一视图传送到所述第一客户端;以及

将所述第二视图传送到所述第二客户端。

16.如条款15所述的非瞬态计算机可读存储介质,其中使用瘦客户端内容呈现软件在所述第一客户端上显示所述第一视图。

17.如条款15所述的非瞬态计算机可读存储介质,其中将所述第一视图传送到所述第一客户端而无需向所述第一客户端传送与所述第一视图关联的状态信息。

18.如条款15所述的非瞬态计算机可读存储介质,其中所述操作还包括:

将所述第一视图传送到第三客户端。

19.如条款18所述的非瞬态计算机可读存储介质,其中所述第一视图与所述第一客户端控制的第一实体以及所述第三客户端控制的第二实体两者关联。

20.如条款15所述的非瞬态计算机可读存储介质,其中所述第一视图与所述第一客户端控制的第一实体关联,并且其中所述第二视图与所述第二客户端控制的第二实体关联。

21.如条款15所述的非瞬态计算机可读存储介质,其中所述第一视图示出如同从与所述第一客户端控制的第一实体关联的视角观察的所述第一场景。

22.如条款15所述的非瞬态计算机可读存储介质,其中在所述第一视图内,所述第一客户端控制的第一实体在高可见性的位置处示出。

23.如条款22所述的非瞬态计算机可读存储介质,其中所述高可见性的位置是所述第一视图的中心。

24.如条款15所述的非瞬态计算机可读存储介质,其中至少部分地使用多个图形处理单元来生成所述第一视图。

依据如下条款可以更好地理解前文:

1.一个或多个计算节点,其包括:

处理器;

存储器,其具有存储在其中的由所述处理器执行的指令;

一个或多个呈现目标生成组件,其被配置来:

确定生成内容项的场景的至少第一视图和第二视图,其中所述第一视图从与第一客户端关联的第一视角呈现所述场景,并且其中所述第二视图从与第二客户端关联的第二视角呈现所述场景,其中所述场景包括至少第一对象和第二对象;以及

至少通过下列各项生成呈现目标,其包括与所述第一视图关联的第一分段和与所述第二视图关联的第二分段:

在所述呈现目标的所述第一分段中形成所述第一对象从所述第一视角的第一表示,以及在所述呈现目标的所述第二分段中形成所述第一对象从所述第二视角的第二表示;以及

在形成所述第一对象的所述第一表示和所述第二表示之后,在所述呈现目标的所述第一分段中形成第二对象从所述第一视角的第一表示,以及在所述呈现目标的所述第二分段中形成所述第二对象从所述第二视角的第二表示;

第一编码组件,其被配置来将来自所述呈现目标的所述第一分段的至少部分的数据编码以形成编码的第一视图;

第二编码组件,其被配置来将来自所述呈现目标的所述第二分段的至少部分的数据编码以形成编码的第二视图;

第一传输组件,其被配置来将所述编码的第一视图传送到所述第一客户端;以及

第二传输组件,其被配置来将所述编码的第二视图传送到所述第二客户端。

2.如条款1所述的一个或多个计算节点,其中所述第一分段中存储的数据量不同于所述第二分段中存储的数据量,其中所述第一分段中存储的数据量至少部分地基于与所述第一客户端关联的分辨率,并且其中所述第二分段中存储的数据量至少部分地基于与所述第二客户端关联的分辨率。

3.如条款1所述的一个或多个计算节点,其中形成所述第一对象的所述第一表示包括:对与所述第一对象关联的几何形状执行操控,将一个或多个纹理应用于所述第一对象的所述第一表示以及将一个或多个阴影填充应用于所述第一对象的所述第一表示。

4.如条款1所述的一个或多个计算节点,其中形成所述第一对象的所述第一表示包括:加载阴影填充,并且将所述阴影填充应用于所述第一对象的所述第一表示,并且其中形成所述第一对象的所述第二表示包括:将所述阴影填充应用于所述第二对象的所述第二表示而无需重复加载所述阴影填充。

5.一种由一个或多个计算节点生成内容项的场景的至少第一视图和第二视图的计算机实现的方法,其包括:

确定生成所述内容项的所述场景的所述至少第一视图和所述第二视图,其中所述第一视图从与第一客户端关联的第一视角呈现所述场景,并且其中所述第二视图从与第二客户端关联的第二视角呈现所述场景,其中所述场景包括一个或多个对象;

生成数据集合,其包括与所述第一视图关联的第一分段和与所述第二视图关联的第二分段,其中所述第一分段包括所述一个或多个对象中的至少一个从所述第一视角形成的表示,并且其中所述第二分段包括所述一个或多个对象中的至少一个从所述第二视角形成的表示;

从所述数据集合的所述第一分段的至少部分提取数据以形成所述第一视图;

从所述数据集合的所述第二分段的至少部分提取数据以形成所述第二视图;

将所述第一视图传送到所述第一客户端;以及

将所述第二视图传送到所述第二客户端。

6.如条款5所述的计算机实现的方法,其中所述第一视角与在所述内容项内的由所述第一客户端控制的实体关联,并且其中所述第二视角与在所述内容项内的由所述第二客户端控制的实体关联。

7.如条款5所述的计算机实现的方法,其中所述第一分段中存储的数据量不同于所述第二分段中存储的数据量,其中所述第一分段中存储的数据量至少部分地基于与所述第一客户端关联的分辨率,并且其中所述第二分段中存储的数据量至少部分地基于与所述第二客户端关联的分辨率。

8.如条款5所述的计算机实现的方法,其中所述场景中包括的所述一个或多个对象包括至少第一对象和第二对象,并且其中所述生成所述数据集合包括:

在所述数据集合的所述第一分段中形成所述第一对象从所述第一视角的第一表示,以及在所述数据集合的所述第二分段中形成所述第一对象从所述第二视角的第二表示;以及

在形成所述第一对象的所述第一表示和所述第二表示之后,在所述数据集合的所述第一分段中形成第二对象从所述第一视角的第一表示,以及在所述数据集合的所述第二分段中形成所述第二对象从所述第二视角的第二表示。

9.如条款8所述的计算机实现的方法,其中形成所述第一对象的所述第一表示包括:对与所述第一对象关联的几何形状执行操控,将一个或多个纹理应用于所述第一对象的所述第一表示以及将一个或多个阴影填充应用于所述第一对象的所述第一表示。

10.如条款8所述的计算机实现的方法,其中形成所述第一对象的所述第一表示包括:加载阴影填充,并且将所述阴影填充应用于所述第一对象的所述第一表示,并且其中形成所述第一对象的所述第二表示包括:将所述阴影填充应用于所述第二对象的所述第二表示而无需重复加载所述阴影填充。

11.如条款8所述的计算机实现的方法,其中形成所述第一对象的所述第一表示包括:加载纹理,并且将所述纹理应用于所述第一对象的第一表示,并且其中形成所述第一对象的所述第二表示包括:将所述纹理应用于所述第二对象的所述第二表示而无需重复加载所述纹理。

12.如条款5所述的计算机实现的方法,其还包括:

确定正在生成的所述场景的视图的数量;以及

布置所述数据集合以包括基于正在生成的所述场景的视图的所述数量确定的分段的数量。

13.如条款5所述的计算机实现的方法,其中所述数据集合还包括第三分段,其与所述场景从与第三客户端关联的第三视角的第三视图关联。

14.如条款5所述的计算机实现的方法,其中所述一个或多个计算节点包括:第一流传输服务器,其将所述第一视图传送到所述第一客户端;和第二流传输服务器,其将所述第二视图传送到所述第二客户端。

15.一个或多个非瞬态计算机可读存储介质,其具有存储在其上的指令,所述指令在至少一个计算节点上执行时,促使所述至少一个计算节点执行包括下列各项的操作:

确定生成内容项的场景的至少第一视图和第二视图,其中所述第一视图从与第一客户端关联的第一视角呈现所述场景,并且其中所述第二视图从与第二客户端关联的第二视角呈现所述场景,其中所述场景包括一个或多个对象;

生成数据集合,其包括与所述第一视图关联的第一分段和与所述第二视图关联的第二分段,其中所述第一分段包括所述一个或多个对象中的至少一个从所述第一视角形成的表示,并且其中所述第二分段包括所述一个或多个对象中的至少一个从所述第二视角形成的表示;

将来自所述数据集合的所述第一分段的至少部分的数据编码以形成编码的第一视图;

将来自所述数据集合的所述第二分段的至少部分的数据编码以形成编码的第二视图;

将所述编码的第一视图传送到所述第一客户端;以及

将所述编码第二视图传送到所述第二客户端。

16.如条款15所述的非瞬态计算机可读存储介质,其中所述第一视角与在在所述内容项内的由所述第一客户端控制的实体关联,并且其中所述第二视角与在所述内容项内的由所述第二客户端控制的实体关联。

17.如条款15所述的非瞬态计算机可读存储介质,其中所述第一分段中存储的数据量不同于所述第二分段中存储的数据量,其中所述第一分段中存储的数据量至少部分地基于与所述第一客户端关联的分辨率,并且其中所述第二分段中存储的数据量至少部分地基于与所述第二客户端关联的分辨率。

18.如条款15所述的非瞬态计算机可读存储介质,其中所述场景中包括的所述一个或多个对象包括至少第一对象和第二对象,并且其中所述生成所述数据集合包括:

在所述数据集合的所述第一分段中形成所述第一对象从所述第一视角的第一表示,以及在所述数据集合的所述第二分段中形成所述第一对象从所述第二视角的第二表示;以及

在形成所述第一对象的所述第一表示和所述第二表示之后,在所述数据集合的所述第一分段中形成第二对象从所述第一视角的第一表示,以及在所述数据集合的所述第二分段中形成所述第二对象从所述第二视角的第二表示。

19.如条款18所述的非瞬态计算机可读存储介质,其中形成所述第一对象的所述第一表示包括:对与所述第一对象关联的几何形状执行操控,将一个或多个纹理应用于所述第一对象的所述第一表示以及将一个或多个阴影填充应用于所述第一对象的所述第一表示。

20.如条款18所述的非瞬态计算机可读存储介质,其中形成所述第一对象的所述第一表示包括:加载阴影填充,并且将所述阴影填充应用于所述第一对象的所述第一表示,并且其中形成所述第一对象的所述第二表示包括:将所述阴影填充应用于所述第二对象的所述第二表示而无需重复加载所述阴影填充。

21.如条款18所述的非瞬态计算机可读存储介质,其中形成所述第一对象的所述第一表示包括:加载纹理,并且将所述纹理应用于所述第一对象的第一表示,并且其中形成所述第一对象的所述第二表示包括:将所述纹理应用于所述第二对象的所述第二表示而无需重复加载所述纹理。

22.如条款15所述的非瞬态计算机可读存储介质,其中所述操作还包括:

确定正在生成的所述场景的视图的数量;以及

布置所述数据集合以包括基于正在生成的所述场景的视图的所述数量确定的分段的数量。

23.如条款15所述的非瞬态计算机可读存储介质,其中所述数据集合还包括第三分段,其与所述场景从与第三客户端关联的第三视角的第三视图关联。

24.如条款15所述的非瞬态计算机可读存储介质,其中所述一个或多个计算节点包括:第一流传输服务器,其将所述第一视图传送到所述第一客户端;和第二流传输服务器,其将所述第二视图传送到所述第二客户端。

上文描述的多种特征和过程可以彼此独立地使用,或可以多种方式将其组合。所有可能组合以及从属组合理应落在本发明公开的范围内。此外,在一些实现中可以将某些方法或过程框省略。本文描述的方法和过程也不限于任何特定的次序,以及与此相关的框或状态能够以适合的其他次序来执行。例如,描述的框或状态可以按本发明公开专门的顺序以外的顺序来执行,或可以将多个框或状态组合在单个框或状态中。示例框或状态可以顺序地、并行地或以某种其他方式来执行。可以将框或状态添加到本发明公开的示例实施方案中或从其中移除框或状态。本文描述的示例系统和组件可以与所描述不同的方式来予以配置。例如,较之本发明公开的示例实施方案,可以对本发明公开的示例实施方案添加元件、从其中移除元件或与本发明公开的示例实施方案比较来将元件重新布置。本文描述的组件可以是例如包括用于与一个或多个处理器关联来执行的一个或多个算法的结构性组件。

还将认识的是,多种项图示为在被使用的时存储在存储器或存储装置上,以及这些项或其多个部分可以出于存储器管理和数据一致性的目的而在存储器与其他存储设备之间被转移。作为备选,在其他实施方案中,软件模块和/或系统的其中一些或全部可以在另一个设备上的存储器中执行,并经由计算机之间的通信与图示的计算系统通信。再者,在一些实施方案中,这些系统和/或模块的其中一些或全部可以采用其他方式,如至少部分地在固件和/或硬件中实现或提供,这些固件和/或硬件包括但不限于,一个或多个专用集成电路(ASIC)、标准集成电路、控制器(例如,通过执行适合的指令,且包括微控制器和/或嵌入式控制器)、可现场编程门阵列(FPGA)、复杂可编程逻辑装置(CPLD)等。这些模块、系统和数据结构的其中一些或全部还可以(例如,作为软件指令或结构化数据)存储在计算机可读介质上,如通过适合驱动器或经由适合连接读取的硬盘、存储器、网络或便携式介质产品。这些系统、模块和数据结构还可以作为生成的数据信号(例如,作为载波或其他模拟或数字传播信号的一部分)在多种计算机可读传输介质上传送,这些计算机可读传输介质包括基于无线的和基于有线/电缆的介质,并且这些系统、模块和数据结构可以采取多种形式(例如,作为单个或复用的模拟信号的一部分,或作为多个离散数字分组或帧)。在其他实施方案中,此类计算机程序产品还可以采取其他形式。相应地,本发明可以利用其他计算机系统配置来实施。

本文所使用的条件性语言,其中如“可以”、“能够”、“可”、“可能”、“例如”等,除非明确地另有陈述,或如上下文中所使用的另有理解,否则一般性地理应表达某些实施方案包括某些特征、元件和/或部件,而其他实施方案不包括某些特征、元件和/或步骤。因此,此类条件性语言一般性地无意暗示特征、元件和/或步骤以任何方式对于一个或多个实施方案是必需的,或一个或多个实施方案必定包括通过或未通过作者输入或提示决定是否包括这些特征、元件和/或步骤或要在任何特定实施方案中执行这些特征、元件和/或步骤的逻辑。术语“包括”、“包括”、“具有”等是同义词,且是非排斥开放性地来使用的,且不排除其他元件、特征、动作、操作等。再有,术语“或”是以非排斥性意义来使用的(且不是以排斥性意义来使用的),以便在例如使用来连接元件的列表时,术语“或”表示列表中的元件的之一、一些或全部。

虽然描述了某些示例实施方案,但是这些实施方案是仅通过举例来给出的且无意限定本文公开的本发明的范围。因此,前文描述中均无意暗示任何特定特征、特点、步骤、模块或框是必需的或不可或缺的。实际上,可以采用多种其他形式来包括本文描述的创新方法和系统;再者,可以进行本文描述的方法和系统的形式上的多种省略、替代和更改,而不背离本文公开的本发明的精神。所附权利要求及其等效物理应涵盖落在本文公开的本发明的某些范围和精神内的此类形式或修改。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1