首页 / 专利库 / 电脑图像 / 渲染 / 视觉渲染 / 对注视点渲染系统中的粒子和模拟模型的优化的延迟照明和中心凹调适

对注视点渲染系统中的粒子和模拟模型的优化的延迟照明和中心凹调适

阅读:444发布:2020-05-13

专利汇可以提供对注视点渲染系统中的粒子和模拟模型的优化的延迟照明和中心凹调适专利检索,专利查询,专利分析的服务。并且本 发明 提供一种用于实施图形管线的方法。所述方法包括确定影响虚拟场景的多个 光源 。从第一视 角 将所述场景的图像的对象的几何图形投影到显示器的多个 像素 上。将所述像素分割成多个瓦片。界定所显示的所述图像的最高 分辨率 的中心凹区域,其中向所述中心凹区域指派第一像素子集,并且其中向在所述中心凹区域之外的外围区域指派第二像素子集。确定所述多个光源中的影响在处于所述外围区域中的第一瓦片中所显示的一个或多个对象的第一组光源。将来自所述第一组的至少两个光源聚类为在 渲染 所述第一瓦片的像素中的所述图像时影响所述第一瓦片的第一聚合光源。,下面是对注视点渲染系统中的粒子和模拟模型的优化的延迟照明和中心凹调适专利的具体信息内容。

1.一种用于实施图形管线的方法,所述方法包括:
确定影响虚拟场景的多个光源
从第一视将所述场景的图像的对象的几何图形投影到显示器的多个像素上;
将所述显示器的多个像素分割成多个瓦片;
界定所显示的所述图像的最高分辨率的中心凹区域,其中向所述中心凹区域指派第一像素子集,并且其中向在所述中心凹区域之外的外围区域指派第二像素子集;
确定所述多个光源中的影响在处于所述外围区域中的第一瓦片中所显示的一个或多个对象的第一组光源;以及
将来自所述第一组的至少两个光源聚类为在渲染所述第一瓦片的像素中的所述图像时影响所述第一瓦片的第一聚合光源。
2.如权利要求1所述的方法,所述方法还包括:
使用最近邻搜索或k-均值聚类技术由所述多个光源产生多个光源群集,其中每个光源群集与对应的聚合光源相关联,其中每个光源群集包括至少一个光源。
3.如权利要求2所述的方法,所述方法还包括:
将影响所述第一瓦片的聚合光源的数目限制于目标数目;
将群集中的两个光源之间的最大距离限制于最大距离;以及
使所述多个光源群集的多个群集误差最小化;以及
针对每个光源群集产生对应的聚合光源。
4.如权利要求3所述的方法,其中所述产生对应的聚合光源还包括:
通过对所述对应的光源群集中的光源的位置求平均来确定所述对应的聚合光源的聚合位置;
通过对所述对应的光源群集中的光源的强度求和来确定所述对应的聚合光源的聚合强度;以及
通过对所述对应的光源群集中的光源的色彩执行加权和来确定所述对应的聚合光源的聚合色彩。
5.如权利要求3所述的方法,其中与所述多个光源群集中的每个群集相对应的所述群集误差包括当前光源与其他光源中的每一者之间的距离的迭代和,其中对于每个迭代,所述当前光源包括所述群集中的不同光源。
6.如权利要求1所述的方法,所述方法还包括:
将影响所述第一瓦片的聚合光源的数目限制于目标数目;
确定所述第一组光源少于所述目标数目;以及
扩大所述第一瓦片的大小以满足所述目标数目。
7.如权利要求1所述的方法,其中所述显示器包括头戴式显示器(HMD)。
8.如权利要求1所述的方法,其中所述图像中的所述中心凹区域对应于在所述显示器中居中的静态区域。
9.如权利要求1所述的方法,其中所述图像中的所述中心凹区域对应于用户的眼睛在所述显示器上指向处。
10.一种用于实施图形管线的方法,所述方法包括:
产生在虚拟场景中创建效果的粒子系统,所述粒子系统包括多个粒子几何图形;
从所述粒子系统确定粒子子系统,所述粒子子系统包括从所述多个粒子几何图形取得的粒子几何图形子集;
在渲染所述虚拟场景的图像时确定中心凹区域,其中所述中心凹区域对应于用户的注意指向处;
确定所述效果的至少一个部分位于所述图像的外围区域中;以及
渲染所述粒子子系统以产生所述效果。
11.如权利要求10所述的方法,其中所述确定粒子子系统包括:
将多个粒子顶点输入到所述图形管线中;
从所述多个粒子顶点产生所述多个粒子几何图形;
使用所述多个粒子几何图形来模拟所述效果;
对所述多个粒子进行取样以产生所述粒子子系统;以及
渲染与所述粒子子系统相对应的所述粒子几何图形子集。
12.如权利要求11所述的方法,所述方法还包括:
给所述多个粒子几何图形的顶点编制索引;
其中对所述多个粒子进行取样还包括产生包括将要渲染的所述粒子几何图形子集的绘制列表;以及
其中渲染所述粒子几何图形子集还包括当第一粒子几何图形的顶点与所述绘制列表中的索引相关联时渲染所述顶点。
13.如权利要求11所述的方法,所述方法还包括:
基于与所述子集相对应的缩减比率而按比例放大所述粒子子系统中的每一者的大小;
以及
修改所述粒子的视觉性质以维持期望的感知连续性。
14.如权利要求10所述的方法,其中所述确定所述粒子子系统包括:
确定所述粒子系统的至少一个粒子处于所述外围区域中;
从所述粒子系统产生多个粒子群集,其中通过对应的聚合粒子表示所述群集中的每一者,其中所述粒子子系统包括所述聚合粒子;以及
使用所述粒子子系统来模拟所述效果。
15.如权利要求14所述的方法,所述方法还包括:
界定所述粒子系统的边界框;以及
确定所述边界框处于所述外围区域中。
16.如权利要求14所述的方法,所述方法还包括:
使用最近邻搜索或k-均值聚类技术来产生所述多个粒子群集。
17.如权利要求14所述的方法,所述方法还包括:
通过对所述对应的粒子群集中的粒子的位置求平均来确定所述对应的聚合粒子的聚合位置;
通过对所述对应的粒子群集中的粒子的质量求和来确定所述对应的聚合粒子的聚合质量;
基于与所述粒子子系统相对应的缩减比率来缩放所述对应的聚合粒子的大小;以及确定所述对应的聚合粒子的聚合视觉性质。

说明书全文

对注视点渲染系统中的粒子和模拟模型的优化的延迟照明和

中心凹调适

背景技术

[0001] 视频游戏随着视频游戏技术的进步而越来越流行。举例来说,高性能图形处理器在播放视频游戏时提供难以置信的观看和交互体验。另外,显示器被设计成具有越来越高的分辨率。举例来说,目前的技术包括纵横比为约19:10的具有2K分辨率(例如,2.2百万像素(2048x1080个像素))的显示器。现在将纵横比为16:9的具有4K UHD(超高清晰度)分辨率(例如,8.2百万像素(3840x2160个像素))的其他显示器推向市场并且预期得到牵引。增加的图形处理能以及高分辨率显示器尤其当玩被设计成利用较高分辨率显示器的视频游戏和游戏引擎时为用户提供迄今为止难以置信的观看体验。
[0002] 将所渲染的图像/推送到高分辨率显示器还需要例如渲染引擎与显示器之间的增加的带宽能力。在大多数情况下,有线连接将能够处置支持所述显示器的所需带宽。然而,游戏系统越来越多地配置有无线连接,这在将数据推送到显示器时引起瓶颈。例如,可以在用户本地的游戏控制台与显示器之间建立无线连接。在这些情况下,所述无线连接可能不足够稳健来处置完全利用所述较高分辨率显示器所需的带宽,使得可能会中断所显示的视频游戏(在缓冲器填满时),以便显示所渲染的整个视频序列。在一些情况下,可以节制视频游戏处理以便使无线连接的较低带宽与显示器匹配,使得可以在较低的分辨率下渲染视频帧以便无中断地经由所述无线连接推送视频数据;然而,由于节制所述处理,用户不承认整个游戏体验具有较高分辨率图形。
[0003] 将有益的是,尤其当玩视频游戏时修改图形处理以让用户实现高用户满意平。
[0004] 在此背景下出现了本公开的实施例发明内容
[0005] 本公开的实施例涉及注视点渲染,所述注视点渲染被配置成使用高分辨率显示中心凹区域中的图像的部分并且使用较低分辨率显示所述中心凹区域之外的部分。具体来说,使用聚合光源渲染在所述中心凹区域之外的图像部分,其中聚合光源紧密地近似由对应的光源群集中的每个个别的光源产生的总效果。因此,不是计算群集中的个别光源中的每一者的个别效果,而是仅计算所述群集的聚合光源的效果。通过那种方式,例如部分地由于更不复杂的图像而减小了所显示的视频帧序列的总带宽。此外,因为降低了计算复杂性,所以可以在最小的等待时间或没有等待时间的情况下实时地递送(例如,经由有线或无线连接)所述视频帧序列。而且,通过模拟模型,广泛地使用粒子系统来产生比如火、烟雾、服装和水等物理效果。粒子系统还用于例如魔法魔咒等许多非物理效果中。用于模拟和渲染粒子的计算可能会非常昂贵。当用户不主动地观看粒子系统时(即,在外围区域或外围区域中绘制粒子系统效果),可以潜在地通过在渲染时被缩放(例如,更大)和变暗(例如,修改α值)的更少数目个粒子来表示所述粒子系统以实现类似可感知的效果。
[0006] 在一个实施例中,公开了一种用于实施图形管线的方法。所述方法包括确定影响虚拟场景的多个光源。所述方法包括从第一视将所述场景的图像的对象的几何图形投影到显示器的多个像素上。所述方法包括将所述显示器的多个像素分割成多个瓦片。所述方法包括界定所显示的所述图像的最高分辨率的中心凹区域,其中向所述中心凹区域指派第一像素子集,并且其中向在所述中心凹区域之外的外围区域指派第二像素子集。所述方法包括确定所述多个光源中的影响在处于所述外围区域中的第一瓦片中所显示的一个或多个对象的第一组光源。所述方法包括将来自所述第一组的至少两个光源聚类为在渲染所述第一瓦片的像素中的图像时影响所述第一瓦片的第一聚合光源。
[0007] 在另一实施例中,公开了一种计算机系统。所述计算机系统包括处理器和存储器,其中所述存储器耦合到所述处理器并且具有存储在其中的指令,所述指令在由所述计算机系统执行时致使所述计算机系统执行用于实施图形管线的方法。所述方法包括确定影响虚拟场景的多个光源。所述方法包括从第一视角将所述场景的图像的对象的几何图形投影到显示器的多个像素上。所述方法包括将所述显示器的多个像素分割成多个瓦片。所述方法包括界定所显示的所述图像的最高分辨率的中心凹区域,其中向所述中心凹区域指派第一像素子集,并且其中向在所述中心凹区域之外的外围区域指派第二像素子集。所述方法包括确定所述多个光源中的影响在处于所述外围区域中的第一瓦片中所显示的一个或多个对象的第一组光源。所述方法包括将来自所述第一组的至少两个光源聚类为在渲染所述第一瓦片的像素中的图像时影响所述第一瓦片的第一聚合光源。
[0008] 在另一实施例中,公开了一种非暂时性计算机可读介质,所述非暂时性计算机可读介质存储用于实施图形管线的计算机程序。所述计算机可读介质包括用于确定影响虚拟场景的多个光源的程序指令。所述计算机可读介质还包括用于从第一视角将所述场景的图像的对象的几何图形投影到显示器的多个像素上的程序指令。所述计算机可读介质还包括用于将所述显示器的多个像素分割成多个瓦片的程序指令。所述计算机可读介质还包括用于界定所显示的所述图像的最高分辨率的中心凹区域的程序指令,其中向所述中心凹区域指派第一像素子集,并且其中向在所述中心凹区域之外的外围区域指派第二像素子集。所述计算机可读介质还包括用于确定所述多个光源中的影响处于所述外围区域中的第一瓦片中所显示的一个或多个对象的第一组光源的程序指令。所述计算机可读介质还包括用于将来自所述第一组的至少两个光源聚类为在渲染所述第一瓦片的像素中的图像时影响所述第一瓦片的第一聚合光源的程序指令。
[0009] 在一个实施例中,公开了一种用于实施图形管线的方法。所述方法包括产生在虚拟场景中创建效果的粒子系统,所述粒子系统包括多个粒子几何图形。所述方法还包括从所述粒子系统确定粒子子系统,所述粒子子系统包括从所述多个粒子几何图形取得的粒子几何图形子集。所述方法包括在渲染所述虚拟场景的图像时确定中心凹区域,其中所述中心凹区域对应于用户的注意力指向处。所述方法包括确定所述效果的至少一个部分位于所述图像的外围区域中。所述方法包括渲染所述粒子子系统以产生所述效果。
[0010] 在另一实施例中,公开了一种计算机系统。所述计算机系统包括处理器和存储器,其中所述存储器耦合到所述处理器并且具有存储在其中的指令,所述指令在由所述计算机系统执行时致使所述计算机系统执行用于实施图形管线的方法。所述方法包括产生在虚拟场景中创建效果的粒子系统,所述粒子系统包括多个粒子几何图形。所述方法还包括从所述粒子系统确定粒子子系统,所述粒子子系统包括从所述多个粒子几何图形取得的粒子几何图形子集。所述方法包括在渲染所述虚拟场景的图像时确定中心凹区域,其中所述中心凹区域对应于用户的注意力指向处。所述方法包括确定所述效果的至少一个部分位于所述图像的外围区域中。所述方法包括渲染所述粒子子系统以产生所述效果。
[0011] 在另一实施例中,公开了一种非暂时性计算机可读介质,所述非暂时性计算机可读介质存储用于实施图形管线的计算机程序。所述计算机可读介质包括用于产生在虚拟场景中创建效果的粒子系统的程序指令,所述粒子系统包括多个粒子几何图形。所述计算机可读介质包括用于从所述粒子系统确定粒子子系统的程序指令,所述粒子子系统包括从所述多个粒子几何图形取得的粒子几何图形子集。所述计算机可读介质包括用于在渲染所述虚拟场景的图像时确定中心凹区域的程序指令,其中所述中心凹区域对应于用户的注意力指向处。所述计算机可读介质包括用于确定所述效果的至少一个部分位于所述图像的外围区域中的程序指令。所述计算机可读介质包括用于渲染所述粒子子系统以产生所述效果的程序指令。
[0012] 通过结合附图进行的以下详细描述,本公开的其他方面将变得显而易见,以下详细描述举例说明本公开的原理。

附图说明

[0013] 通过参考结合附图进行的以下描述来最佳地理解本公开,其中:
[0014] 图1A说明根据本公开的一个实施例的被配置成提供与VR内容的交互式体验的系统。
[0015] 图1B至图1C在概念上说明根据本发明的实施例的结合执行的视频游戏的HMD的功能。
[0016] 图2A说明根据本公开的一个实施例的向玩一个或多个游戏应用的一个或多个用户提供游戏控制的系统,所述一个或多个游戏应用在对应用户本地执行。
[0017] 图2B说明根据本公开的一个实施例的向玩在游戏网络上执行的游戏应用的一个或多个用户提供游戏控制的系统。
[0018] 图3A说明根据本公开的一个实施例的在显示器上示出并且包括高分辨率的中心凹区域的图像,其中所述中心凹区域对应于所述显示器的中心。
[0019] 图3B说明根据本公开的一个实施例的在显示器上示出并且包括高分辨率的中心凹区域的图像,其中所述中心凹区域对应于用户的注视所指向的显示器的位置
[0020] 图4A说明根据本公开的一个实施例的实施针对注视点渲染而配置的图形管线的图形处理器。
[0021] 图4B说明根据本公开的一个实施例的实施被配置成通过延迟式瓦片渲染来实施的注视点渲染的图形管线的图形处理器。
[0022] 图5A是说明根据本公开的一个实施例的用于实施针对注视点渲染而配置的图形管线的方法中的步骤的流程图,其中使用较高分辨率渲染中心凹区域中的图像的部分,并且使用较低分辨率渲染外围区域中的图像的部分。
[0023] 图5B是说明根据本公开的一个实施例的用于实施被配置成通过瓦片延迟式渲染实施的注视点渲染的图形管线的方法中的步骤的流程图,其中将用于在中心凹区域之外的瓦片的光源进行聚合。
[0024] 图6A是根据本公开的一个实施例的影响场景的多个光源和形成聚合光源的光源群集的说明。
[0025] 图6B是根据本公开的一个实施例的被分割成多个瓦片的显示器的说明,其中在延迟式渲染系统中逐瓦片地执行渲染。
[0026] 图7A说明根据本公开的一个实施例的实施针对注视点渲染而配置的图形管线的图形处理器,所述注视点渲染包括使用中央处理单元(CPU)或图形处理单元(GPU)对有限量的粒子(例如,少于一万)的粒子系统模拟,以及依据粒子系统的绘制效果是位于中心凹区域内还是外围区域内而使用整个粒子系统或通过随机取样而产生的粒子子系统在GPU中对粒子系统的渲染。
[0027] 图7B说明根据本公开的一个实施例的实施针对注视点渲染而配置的图形管线的图形处理器,所述注视点渲染包括对大量的粒子(例如,多于一万)的粒子系统模拟,其中依据粒子系统的绘制效果是位于中心凹区域内还是外围区域内而使用整个粒子系统或通过粒子聚类和聚合而产生的粒子子系统对粒子系统进行模拟并随后渲染。
[0028] 图8是说明根据本公开的一个实施例的用于实施包括对大量粒子(例如,多于一万)的模拟的图形管线的方法中的步骤的流程图,其中依据粒子系统的绘制效果是位于中心凹区域内还是外围区域内而使用整个粒子系统或通过粒子聚类和聚合而产生的粒子子系统对粒子系统进行模拟并随后渲染。
[0029] 图9是根据本公开的一个实施例的从用于模拟图像中的效果的粒子系统产生粒子子系统的说明。
[0030] 图10是说明根据本公开的实施例的头戴式显示器的部件的图。
[0031] 图11是根据本公开的各种实施例的游戏系统的框图

具体实施方式

[0032] 虽然以下详细描述出于说明的目的而含有许多具体细节,但本领域普通技术人员将了解,对以下细节的许多变化和更改在本公开的范围内。因此,在不失在此描述之后的权利要求的一般性并且不向权利要求强加限制的情况下陈述在下文所描述的本公开的各方面。
[0033] 一般来说,本公开的各种实施例描述被配置成执行注视点渲染的视频渲染系统的图形处理器,其中可以使用高分辨率渲染中心凹区域中的图像的部分,并且使用较低的分辨率渲染在所述中心凹区域之外的部分。具体来说,使用聚合光源渲染在所述中心凹区域之外的图像部分,以便减少用于渲染图像的计算,其中聚合光源紧密地近似由对应的光源群集中的每个个别的光源产生的总效果。而且,依据粒子系统的效果位于所显示的图像的中心凹区域内还是外围区域内而使用全部粒子或粒子子系统来渲染粒子系统模拟。在一些实施例中,在头戴式显示器(HMD)内的图像内执行注视点渲染,或者执行注视点渲染以便显示所述图像。
[0034] 通过对各个实施例的以上一般理解,现在将参见各个图式来描述实施例的示例性细节。
[0035] 在整个说明书中,对“视频游戏”或“游戏应用”的参考打算表示通过执行输入命令而引导的任何类型的交互式应用。仅出于说明目的,交互式应用包括用于游戏、字处理、视频处理、视频游戏处理等的应用。此外,术语视频游戏和游戏应用是可以互换的。
[0036] 图1A说明根据本发明的实施例的用于视频游戏的交互式玩法的系统。用户100示出为穿戴着头戴式显示器(HMD)102。通过与眼镜、护目镜或头盔类似的方式穿戴HMD 102,并且所述HMD 102被配置成向用户100显示来自交互式视频游戏的视频游戏或来自交互式应用的其他内容。HMD 102通过紧密接近用户的眼睛提供显示机制而向用户提供深度沉浸式体验。因此,HMD 102可以向用户的眼睛中的每只眼睛提供显示区,所述显示区占据用户的视场的大部分或甚至全部。虽然图1A至图1B以及在其他图中示出为使用HMD来显示所渲染的图像,但本发明的实施例良好地适合于在任何显示装置中执行注视点渲染,其中所述注视点渲染包括聚合光源以便渲染在外围区域中显示的对象,并且在任何显示器上显示所渲染的图像。
[0037] 在一个实施例中,HMD 102可配置以显示配置有注视点渲染的图像,其中使用高分辨率显示中心凹区域中的图像的部分,并且使用较低的分辨率显示在所述中心凹区域之外的部分。具体来说,使用聚合光源渲染在所述中心凹区域之外的图像部分,其中聚合光源紧密地近似由对应的光源群集中的每个个别的光源产生的总效果。因此,不是计算群集中的个别光源中的每一者的个别效果,而是仅计算所述群集的聚合光源的效果。通过那种方式,减小了所显示的视频帧序列的总带宽。
[0038] 在一个实施例中,HMD 102可以连接到计算机或游戏控制台106。到计算机106的连接可以是有线或无线的。计算机106可以是在本领域中已知的任何通用计算机或专用计算机,包括(但不限于)游戏控制台、个人计算机、膝上型计算机、平板计算机、移动装置、蜂窝式电话、平板计算机、瘦客户端、机顶盒、媒体流式传输装置等。在一个实施例中,计算机106可以被配置成执行视频游戏,并且从所述视频游戏输出视频和音频以供HMD 102渲染。计算机106不限于执行视频游戏,而是还可以被配置成执行输出VR内容191以供HMD 102渲染的交互式应用。在一个实施例中,计算机106在渲染处于中心凹区域之外的图像的部分时执行光源的聚合。
[0039] 用户100可以操作控制器104以提供视频游戏的输入。另外,相机108可以被配置成捕获用户100所处的交互式环境的一个或多个图像。可以分析这些所捕获的图像以确定用户100、HMD 102和控制器104的位置和移动。在一个实施例中,控制器104包括灯或其他标记器元件,可以跟踪所述灯或其他标记器元件以确定其位置和定向。相机108可以包括一个或多个麦克以捕获来自交互式环境的声音。可以处理由麦克风阵列捕获的声音以识别声音源的位置。可以选择性地利用或处理来自所识别的位置的声音以排除并非来自所识别的位置的其他声音。此外,可以将相机108界定为包括多个图像捕获装置(例如,立体像对相机)、IR相机、深度相机,和其组合。
[0040] 在另一实施例中,计算机106充当经由网络与云游戏提供者112通信的瘦客户端。云游戏提供者112维持并执行用户102正在玩的视频游戏。计算机106将来自HMD 102、控制器104和相机108的输入传输到云游戏提供者,所述云游戏提供者处理所述输入以影响执行的视频游戏的游戏状态。将来自执行的视频游戏的输出(例如,视频数据、音频数据和触觉反馈数据)传输到计算机106。计算机106可以在传输之前进一步处理所述数据,或者可以将所述数据直接传输到相关装置。举例来说,将视频流音频流提供给HMD 102,而使用触觉反馈数据以产生振动反馈命令,将所述振动反馈命令提供给控制器104。
[0041] 在一个实施例中,HMD 102、控制器104和相机108自身可以是连接到网络110以与云游戏提供者112通信的连网装置。举例来说,计算机106可以是本地网络装置,例如路由器,其不另外执行视频游戏处理,而是促进通道网络业务。HMD 102、控制器104和相机(即,图像捕获装置)108到网络的连接可以是有线或无线的。
[0042] 在另一实施例中,计算机106可以执行所述视频游戏的一部分,而可以在云游戏提供者112上执行所述视频游戏的剩余部分。在其他实施例中,还可以在HMD 102上执行所述视频游戏的部分。举例来说,云游戏提供者112可以服务来自计算机106的对下载视频游戏的请求。在服务所述请求时,云游戏提供者112可以执行所述视频游戏的一部分,并且将游戏内容提供给计算机106以便在HMD 102上渲染。计算机106可以经由网络110与云游戏提供者112通信。在将视频游戏下载到计算机106上时,将从HMD 102、控制器104和相机108接收的输入传输到云游戏提供者112。云游戏提供者112处理所述输入以影响执行的视频游戏的游戏状态。将来自执行的视频游戏的输出(例如,视频数据、音频数据和触觉反馈数据)传输到计算机106以便转交给相应装置。
[0043] 一旦已经将视频游戏完全下载到计算机106,计算机106便可以执行所述视频游戏并且重新开始所述视频游戏的玩法,在云游戏提供者112上在此处脱离。计算机106处理来自HMD 102、控制器104和相机108的输入,并且响应于从HMD 102、控制器104和相机108接收的输入来调整视频游戏的游戏状态。在这些实施例中,使计算机106处的视频游戏的游戏状态与云游戏提供者112处的游戏状态同步。可以周期性地进行所述同步以使计算机106和云游戏提供者112两者处的视频游戏的状态保持当前。计算机106可以将输出数据直接传输到相关装置。举例来说,将视频流和音频流提供给HMD 102,而使用触觉反馈数据以产生振动反馈命令,将所述振动反馈命令提供给控制器104。
[0044] 图1B在概念上说明根据本发明的实施例的结合VR内容191的产生(例如,执行应用和/或视频游戏等)的HMD 102的功能。在一些实现方式中,在通信地耦合到HMD 102的计算机106(未示出)上执行VR内容引擎120。所述计算机可以在HMD本地(例如,局域网的部分),或者可以远程地定位(例如,广域网、云网络等的部分)并且经由网络访问。HMD 102与计算机106之间的通信可以遵循有线连接协议或无线连接协议。举例来说,执行应用的VR内容引擎120可以是执行视频游戏的视频游戏引擎,并且被配置成接收输入以更新视频游戏的游戏状态。出于简明和清晰起见,在执行视频游戏的VR内容引擎120的背景内描述图1B的以下描述,并且意在表示执行能够产生VR内容191的任何应用。可以至少部分地通过界定当前游戏的各个方面的视频游戏的各种参数的值来界定视频游戏的游戏状态,所述方面例如为对象的存在和位置、虚拟环境的状况、事件的触发、用户简档、视角等。
[0045] 在所说明的实施例中,举例来说,游戏引擎120接收控制器输入161、音频输入162和运动输入163。可以从与HMD 102分开的游戏控制器的操作来界定控制器输入161,所述游戏控制器例如为手持式游戏控制器104(例如,Sony 4无线控制器、SonyMove运动控制器)或可穿戴控制器,例如可穿戴手套接口控制器等。举例来
说,控制器输入161可以包括方向输入、按钮按压、触发器启动、移动、手势或从游戏控制器的操作处理的其他种类的输入。可以从HMD 102的麦克风151或者从在图像捕获装置108中或本地系统环境内的其他地方包括的麦克风来处理音频输入162。可以从在HMD 102中包括的运动传感器159或者在图像捕获装置108捕获HMD 102的图像时从所述图像捕获装置处理运动输入163。VR内容引擎120(例如,执行游戏应用)接收根据游戏引擎的配置而处理的输入以更新视频游戏的游戏状态。引擎120向各种渲染模输出游戏状态数据,所述渲染模块处理所述游戏状态数据以界定将向用户呈现的内容。
[0046] 在所说明的实施例中,界定视频渲染模块183来渲染视频流以供在HMD 102上呈现。注视点视图渲染器190被配置成与视频渲染模块183联合地和/或独立于所述视频渲染模块来渲染注视点图像。另外,在实施例中,可以将由注视点视图渲染器190提供的功能性并入视频渲染模块183内。具体来说,注视点视图渲染器190被配置成执行注视点渲染,其中中心凹区域中的图像的部分具有高分辨率,并且在所述中心凹区域之外的部分具有较低的分辨率。具体来说,使用聚合光源渲染在所述中心凹区域之外的图像部分,以便减少用于渲染图像的计算,其中聚合光源紧密地近似由对应的光源群集中的每个个别的光源产生的总效果。群集产生器192被配置成聚合光源群集中的光源以用于注视点渲染。更具体地,延迟式瓦片渲染器194被配置成通过渲染显示器的像素的个别瓦片化部分中的对象来执行延迟式瓦片渲染,其中对于显示位于中心凹区域之外的对象的瓦片,通过群集产生器192在执行注视点渲染时聚合光源。
[0047] HMD 102中的光学器件170的透镜被配置成观看VR内容191。显示屏幕175设置在光学器件170的透镜后方,使得当用户穿戴HMD102时,光学器件170的透镜处于显示屏幕175与用户的眼睛160之间。通过那种方式,可以通过显示屏幕/投影仪机构175呈现视频流,并且用户的眼睛160可以通过光学器件170观看所述视频流。HMD用户(例如)可以通过穿戴HMD并且选择用于游戏的视频游戏来选择与交互式VR内容191(例如,VR视频源、视频游戏内容等)交互。在HMD的显示屏幕175上渲染来自视频游戏的交互式虚拟现实(VR)场景。通过那种方式,HMD通过与用户的眼睛紧密接近地提供HMD的显示机构而允许用户完全沉浸在游戏中。在用于渲染内容的HMD的显示屏幕中界定的显示区域可能会占据用户的视场的大部分或甚至全部。通常,每只眼睛受到观看一个或多个显示屏幕的光学器件170的相关联的透镜支持。
[0048] 音频渲染模块182被配置成渲染音频流以供用户收听。在一个实施例中,通过与HMD 102相关联的扬声器152输出所述音频流。应了解,扬声器152可以采取露天扬声器、机或能够呈现音频的任何其他种类的扬声器的形式。
[0049] 在一个实施例中,在HMD 102中包括注视跟踪相机165以实现对用户的注视的跟踪。虽然仅包括一个注视跟踪相机165,但应注意,可以采用一个以上注视跟踪相机来跟踪用户的注视。注视跟踪相机捕获用户的眼睛的图像,对所述图像进行分析以确定用户的注视方向。在一个实施例中,可以利用关于用户的注视方向的信息以影响视频渲染。举例来说,如果确定用户的眼睛看向特定方向,那么可以例如通过以下方式来优先或着重那个方向的视频渲染:通过由注视点视图渲染器190提供的注视点渲染来提供更大的细节、更高的分辨率;或在用户正在观看的区域中提供更快的更新。应了解,可以相对于头戴式显示器、相对于用户所处的实际环境,和/或相对于在头戴式显示器上正在渲染的虚拟环境来界定用户的注视方向。
[0050] 一般来说,当单独地考虑时,对由注视跟踪相机165捕获的图像的分析提供用户相对于HMD 102的注视方向。然而,当与HMD102的跟踪位置和定向组合地考虑时,可以确定用户的现实世界注视方向,因为HMD 102的位置和定向与用户的头的位置和定向同义。也就是说,可以通过跟踪用户的眼睛的位置移动并且跟踪HMD 102的位置和定向来确定用户的现实世界注视方向。当在HMD 102上渲染虚拟环境的视图时,可以应用用户的现实世界注视方向以确定用户在虚拟环境中的虚拟世界注视方向。
[0051] 另外,触觉反馈模块181被配置成向在HMD 102或由HMD用户操作的另一装置(例如,控制器104)中包括的触觉反馈硬件提供信号。触觉反馈可以采取各种触觉感觉的形式,例如振动反馈、温度反馈、压力反馈等。
[0052] 图1C在概念上说明根据本发明的实施例的结合VR内容191的产生(例如,执行应用和/或视频游戏等)的HMD 102的功能。图1C类似于图1B,不同之处在于,图1C中的HMD 102包括被配置成对粒子和模拟模型进行中心凹调适的注视点视图渲染器9190,而图1B中的HMD 102包括针对优化的延迟照明而配置的注视点视图渲染器190。图1B和图1C(以及整个说明书)中的类似编号的部件是相同的并且执行相同的功能。
[0053] 在所说明的实施例中,界定视频渲染模块183来渲染视频流以供在HMD 102上呈现。注视点视图渲染器9190被配置成与视频渲染模块183联合地和/或独立于所述视频渲染模块来渲染注视点图像。另外,在实施例中,可以将由注视点视图渲染器9190提供的功能性并入视频渲染模块183内。具体来说,注视点视图渲染器9190被配置成执行注视点渲染,其中中心凹区域中的图像的部分具有高分辨率,并且在所述中心凹区域之外的部分具有较低的分辨率。更具体地,依据与图像的中心凹区域相关的对应效果的显示位置而不同地模拟和/或渲染粒子系统。举例来说,使用粒子系统中的全部粒子来模拟和/或渲染在中心凹区域之内显示的粒子系统。使用粒子子系统来模拟和/或渲染在外围区域中显示的粒子系统。注视点粒子和/或片元确定器9192被配置成确定是在中心凹区域之内还是之外显示被渲染的粒子和/或粒子系统。在各种实施例中,粒子系统和/或子系统模拟器9195被配置成使用粒子系统中的全部粒子来模拟效果,或使用粒子子系统来模拟效果。举例来说,对于具有有限的粒子(例如,少于一万)的粒子系统,不管效果是在注视点区域中还是外围区域中,模拟粒子系统中的全部粒子。然而,当在外围区域中显示由粒子系统产生的效果时,随后渲染粒子子系统。在此情况下,可以通过随机粒子选择器9196产生所述粒子子系统。而且,对于具有更大量的粒子(例如,多于一万)的粒子系统,当在外围区域中显示由粒子系统产生的效果时模拟所述粒子子系统,并且其后使用来自同一粒子子系统的输出进行渲染。在此情况下可以通过粒子聚类器和聚合器9198来确定粒子子系统。粒子系统和子系统渲染器9194被配置成当在中心凹区域中显示由粒子系统产生的效果时渲染粒子系统中的全部粒子,并且当在外围区域中显示所述效果时渲染粒子子系统。粒子缩放器和色彩修改器9199被配置成缩放粒子子系统中的粒子,并且修改所述粒子的色彩以实现粒子系统的用户的相同或类似的可感知效果。举例来说,所述子系统中的每个粒子被缩放到更大的大小(例如,基于缩减比率)且变暗(例如,基于所述缩减比率来修改α值)。可以在CPU或GPU或其组合内执行注视点视图渲染器9190的部件和/或功能。
[0054] 在一个实施例中,在HMD 102中包括注视跟踪相机165以实现对用户的注视的跟踪。虽然仅包括一个注视跟踪相机165,但应注意,可以采用一个以上注视跟踪相机来跟踪用户的注视。注视跟踪相机捕获用户的眼睛的图像,对所述图像进行分析以确定用户的注视方向。在一个实施例中,可以利用关于用户的注视方向的信息以影响视频渲染。举例来说,如果确定用户的眼睛看向特定方向,那么可以例如通过以下方式来优先或着重那个方向的视频渲染:通过由注视点视图渲染器9190提供的注视点渲染来提供更大的细节、更高的分辨率;提供在中心凹区域中显示的粒子系统效果的较高分辨率;提供在所述中心凹区域之外显示的粒子系统效果的较低分辨率;或在用户正在观看的区域中提供更快的更新。应了解,可以相对于头戴式显示器、相对于用户所处的实际环境,和/或相对于在头戴式显示器上正在渲染的虚拟环境来界定用户的注视方向。
[0055] 图2A说明向玩在对应用户本地执行的一个或多个游戏应用的一个或多个用户提供游戏控制的系统200A,并且其中后端服务器支持(例如,可以通过游戏服务器205访问)可以被配置成支持多个本地计算装置,所述多个本地计算装置支持多个用户,其中每个本地计算装置可以例如在单玩家或多玩家视频游戏中执行视频游戏的例子。举例来说,在多玩家模式中,当所述视频游戏在本地执行时,云游戏网络同时从每个本地计算装置接收信息(例如,游戏状态数据)并且将那个信息相应地分发到所述本地计算装置中的一者或多者中,使得每个用户能够与多玩家视频游戏的游戏环境中的其他用户交互(例如,通过视频游戏中的对应人物)。通过那种方式,云游戏网络协调并组合多玩家游戏环境内的用户中的每一者的游戏。现在参看图式,相同的参考数字标示相同或对应的部分。
[0056] 如图2A中所示,多个用户215(例如,用户100A、用户100B…用户100N)正在玩多个游戏应用,其中在对应用户的对应的客户端装置106(例如,游戏控制台)上在本地执行所述游戏应用中的每一者。客户端装置106中的每一者可以被类似地配置,使得执行对应的游戏应用的本地执行。举例来说,用户100A可以在对应的客户端装置106上玩第一游戏应用,其中通过对应的游戏标题执行引擎211来执行第一游戏应用的例子。实施所述第一游戏应用的游戏逻辑226A(例如,可执行代码)存储在对应的客户端装置106上,并且用于执行所述第一游戏应用。出于说明的目的,可以通过便携式介质(例如,快闪驱动器、高密度磁盘等)或通过网络(例如,通过互联网250从游戏提供者下载)将游戏逻辑递送到对应的客户端装置106。另外,用户100B在对应的客户端装置106上玩第二游戏应用,其中通过对应的游戏标题执行引擎211来执行所述第二游戏应用的例子。所述第二游戏应用可以与为用户100A执行的所述第一游戏应用相同,或者是不同的游戏应用。实施所述第二游戏应用的游戏逻辑
226B(例如,可执行代码)存储在先前描述的对应的客户端装置106上,并且用于执行所述第二游戏应用。此外,用户100N在对应的客户端装置106上玩第N游戏应用,其中通过对应的游戏标题执行引擎211来执行所述第N游戏应用的例子。所述第N游戏应用可以与所述第一游戏应用或所述第二游戏应用相同,或者可以是完全不同的游戏应用。实施所述第三游戏应用的游戏逻辑226N(例如,可执行代码)存储在先前描述的对应的客户端装置106上,并且用于执行所述第N游戏应用。
[0057] 如先前描述,客户端装置106可以从各种类型的输入装置(例如,游戏控制器、平板计算机、键盘、由摄像机捕获的手势、鼠标触摸板等)接收输入。客户端装置106可以是至少具有存储器和处理器模块的能够经由网络150连接到游戏服务器205的任何类型的计算装置。而且,对应用户的客户端装置106被配置成产生由在本地或远程地执行的游戏标题执行引擎211执行的所渲染的图像,并且在显示器(例如,显示器11、HMD 102等)上显示所述所渲染的图像。举例来说,所述所渲染的图像可以与在用户100A的客户端装置106上执行的第一游戏应用的例子相关联。举例来说,对应的客户端装置106被配置成与在本地或远程地执行的对应的游戏应用的例子交互,以例如通过用于驱动游戏的输入命令来实施对应用户的游戏。客户端装置106的一些示例包括个人计算机(PC)、游戏控制台、家庭影院装置、通用计算机、移动计算装置、平板计算机、电话,或可以与游戏服务器205交互以执行视频游戏的例子的任何其他类型的计算装置。
[0058] 在一个实施例中,客户端装置106针对玩游戏应用的对应用户在单玩家模式下操作。在另一实施例中,多个客户端装置106针对各自玩特定游戏应用的对应用户在多玩家模式下操作。在那种情况下,经由游戏服务器的后端服务器支持可以例如通过多玩家处理引擎219来提供多玩家功能性。具体来说,多玩家处理引擎219被配置成控制用于特定游戏应用的多玩家游戏会话。举例来说,多玩家处理引擎219与多玩家会话控制器216通信,所述多玩家会话控制器被配置成与参与多玩家游戏会话的用户和/或玩家中的每一者建立和维持通信会话。通过那种方式,所述会话中的用户可以彼此进行受到多玩家会话控制器216控制的通信。
[0059] 此外,多玩家处理引擎219与多玩家逻辑218通信以便实现在每个用户的对应的游戏环境内的用户之间的交互。具体来说,状态共享模块217被配置成管理多玩家游戏会话中的用户中的每一者的状态。举例来说,状态数据可以包括在特定点处界定对应用户的(游戏应用的)游戏的状态的游戏状态数据。举例来说,游戏状态数据可以包括游戏人物、游戏对象、游戏对象属性、游戏属性、游戏对象状态、图形覆盖等。通过那种方式,游戏状态数据允许产生在游戏应用中的对应点处存在的游戏环境。游戏状态数据还可以包括用于渲染游戏的每个装置的状态,例如CPU、GPU、存储器的状态、寄存器值、程序计数器值、可编程DMA状态、DMA的缓冲数据、音频芯片状态、CD-ROM状态等。游戏状态数据还可以识别从那个点需要加载可执行代码的哪些部分以执行视频游戏。游戏状态数据可以存储在数据库(未示出)中,并且可以由状态共享模块217访问。
[0060] 此外,状态数据可以包括用户保存的数据,用户保存的数据包括将对应玩家的视频游戏个性化的信息。这包括与用户玩的人物相关联的信息,使得使用对于那个用户可以是唯一的人物(例如,位置、形状、外观、服装、武器等)来渲染视频游戏。通过那种方式,用户保存的数据使得能够产生对应用户的游戏的人物,其中所述人物具有与对应用户当前经历的游戏应用中的点相对应的状态。举例来说,用户保存的数据可以包括对应用户100A在玩游戏时所选择的游戏难度、游戏水平、人物属性、人物位置、剩下的生命的数目、可用的生命的可能的总数目、护甲、战利品、时间计数器值等。例如,用户保存的数据还可以包括识别对应用户100A的用户简档数据。可以将用户保存的数据存储在存储装置(未示出)中。
[0061] 通过那种方式,使用状态共享数据217和多玩家逻辑218的多玩家处理引擎219能够覆盖对象和人物/将所述对象和人物插入到参与多玩家游戏会话的用户的游戏环境中的每一者中。举例来说,覆盖第一用户的人物/将所述人物插入到第二用户的游戏环境中。这允许多玩家游戏会话中的用户之间经由它们的相应游戏环境中的每一者(例如,在屏幕上显示)的交互。
[0062] 图2B说明根据本公开的一个实施例的向在经由云游戏网络执行的相应的VR观看环境中玩游戏应用的一个或多个用户215(例如,用户100L、100M…100Z)提供游戏控制的系统200B。在一些实施例中,所述云游戏网络可以是包括在主机的管理程序上运行的多个虚拟机(VM)的游戏云系统210,其中一个或多个虚拟机被配置成执行游戏处理器模块,所述游戏处理器模块利用所述主机的管理程序可用的硬件资源。现在参看图式,相同的参考数字标示相同或对应的部分。
[0063] 如所示,游戏云系统210包括提供对多个交互式视频游戏或游戏应用的访问的游戏服务器205。游戏服务器205可以是在所述云中可用的任何类型的服务器计算装置,并且可以被配置成在一个或多个主机上执行的一个或多个虚拟机。举例来说,游戏服务器205可以管理虚拟机,所述虚拟机支持将用于用户的游戏应用的例子具现化的游戏处理器。因此,与多个虚拟机相关联的游戏服务器205的多个游戏处理器被配置成执行与多个用户215的游戏相关联的游戏应用的多个例子。通过那种方式,后端服务器支持向多个对应的用户提供多个游戏应用的玩法的媒体(例如,视频、音频等)的流式传输
[0064] 多个用户215经由网络250访问游戏云系统210,其中用户(例如,用户100L、100M…100Z)经由对应的客户端装置106’访问网络250,其中客户端装置106’可以与图2A的客户端装置106(例如,包括游戏执行引擎211等)类似地配置,或者可以被配置成瘦客户端,所述瘦客户端提供与提供计算功能性的后端服务器(例如,包括游戏执行引擎211)的接口。
[0065] 具体来说,对应用户100L的客户端装置106’被配置成请求经由网络250(例如,互联网)访问游戏应用,并且渲染由游戏服务器205执行的游戏应用(例如,视频游戏)的例子,并且递送到与对应用户100L相关联的显示装置。举例来说,用户100L可以通过客户端装置106’与在游戏服务器205的游戏处理器上执行的游戏应用的例子交互。更具体地,通过游戏标题执行引擎211执行所述游戏应用的例子。实施所述游戏应用的游戏逻辑(例如,可执行代码)存储在数据存储装置(未示出)中并且可以通过所述数据存储装置访问,并且用于执行所述游戏应用。游戏标题处理引擎211能够使用如所示的多个游戏逻辑277支持多个游戏应用。
[0066] 如先前描述,客户端装置106’可以从各种类型的输入装置(例如,游戏控制器、平板计算机、键盘、由摄像机捕获的手势、鼠标触摸板等)接收输入。客户端装置106’可以是至少具有存储器和处理器模块的能够经由网络250连接到游戏服务器205的任何类型的计算装置。而且,对应用户的客户端装置106’被配置成产生由在本地或远程地执行的游戏标题执行引擎211执行的所渲染的图像,并且在显示器上显示所述所渲染的图像。举例来说,所述所渲染的图像可以与在用户100L的客户端装置106’上执行的第一游戏应用的例子相关联。举例来说,对应的客户端装置106’被配置成与在本地或远程地执行的对应的游戏应用的例子交互,以例如通过用于驱动游戏玩法的输入命令来实施对应用户的游戏玩法。
[0067] 客户端装置106’被配置成接收所渲染的图像,并且在显示器11和/或HMD 102上显示所渲染的图像(例如,显示VR内容)。举例来说,通过基于云的服务,可以通过在与用户100相关联的游戏服务器205的游戏执行引擎211上执行的游戏应用的例子来递送所述所渲染的图像。在另一示例中,通过本地游戏处理,可以通过本地游戏执行引擎211递送所述所渲染的图像。在任一情况下,客户端装置106被配置成例如通过用于驱动游戏玩法的输入命令来与和对应用户100的游戏玩法相关联的本地或远程执行引擎211交互。在另一实现方式中,可以将所述所渲染的图像无线地或有线地从基于云的服务直接地或经由客户端装置106(例如, Remote Play)流式传输到智能电话或平板计算机。
[0068] 在另一实施例中,先前描述的多玩家处理引擎219用于控制游戏应用的多玩家游戏会话。具体来说,当多玩家处理引擎219正在管理所述多玩家游戏会话时,多玩家会话控制器216被配置成与所述多玩家会话中的用户和/或玩家中的每一者建立和维持通信会话。通过那种方式,所述会话中的用户可以彼此进行受到多玩家会话控制器216控制的通信。
[0069] 此外,多玩家处理引擎219与多玩家逻辑218通信以便实现在每个用户的对应的游戏环境内的用户之间的交互。具体来说,状态共享模块217被配置成管理多玩家游戏会话中的用户中的每一者的状态。举例来说,状态数据可以包括如先前描述在特定点处界定对应用户100的(游戏应用的)游戏的状态的游戏状态数据。此外,如先前描述,状态数据可以包括用户保存的数据,用户保存的数据包括将对应玩家的视频游戏个性化的信息。举例来说,状态数据包括与用户的人物相关联的信息,使得使用对于那个用户可以是唯一的人物(例如,形状、外观、服装、武器等)来渲染视频游戏。通过那种方式,使用状态共享数据217和多玩家逻辑218的多玩家处理引擎219能够覆盖对象和人物/将所述对象和人物插入到参与多玩家游戏会话的用户的游戏环境中的每一者中。这允许多玩家游戏会话中的用户之间经由它们的相应游戏环境中的每一者(例如,在屏幕上显示)的交互。
[0070] 图3A说明根据本公开的一个实施例的在显示器300上示出的图像310,其中所述图像包括高分辨率的中心凹区域310A,其中所述中心凹区域对应于所述显示器的中心。具体来说,出于简单和清晰起见,图像310包括字母“E”的行和列。将图像310分割成多个区域,包括中心凹区域310A和外围区域310B。
[0071] 如所示,中心凹区域310A是静态的并且对应于显示器300的中心。假设中心凹区域310A是用户例如在观看视频游戏的图形时将他或她的注视(例如,使用眼睛的中心凹)主要指向的区域。虽然用户的注视可能偶尔偏离中心,但所述注视主要指向中心(以观看主要内容)。在一些情况下,图像被设计成起初使用户的注视偏离中心(例如,观看所关注的对象),但随后使所述注视回到中心(例如,通过朝向中心凹区域310A移动对象)。
[0072] 具体来说,将以较高的分辨率渲染在中心凹区域310A内显示和定位的任何图像(例如,图像310)的部分。举例来说,图形管线将渲染中心凹区域310A中的图像的部分,同时将用于降低计算复杂性的任何技术的使用最小化。具体来说,对于本发明的实施例,在图形管线内个别地计算影响使用与中心凹区域310A相对应的像素所显示的对象的光源,以便确定它们对所述对象的影响中的每一者(例如,所述对象的多边形上的色彩、纹理、阴影等)。使用清晰、鲜艳的色彩并且以最小模糊强度示出在表示较高分辨率的中心凹区域310A内显示的字母“E”对象。这与用户的注视指向显示器300上的中心凹区域310A一致并且利用了所述事实。
[0073] 另外,将以较低的分辨率(例如,比位于中心凹区域310A中的图像的部分和/或对象的分辨率低)渲染设置并定位在外围区域310B中的图像(例如,图像310)的部分。用户的注视通常不指向在外围区域310B中定位和/或显示的对象,因为所述注视的主要焦点指向中心凹区域310A中的对象。与场景中的现实视图一致,例如,使用较低的分辨率渲染外围区域310B中的对象,其中具有足够的细节以使得用户能够感知移动对象(例如,人类直腿行走而不是弯曲着膝盖行走),并且在外围区域310B中的对象内或对象之间具有足够的对比度。为了实现以较低的分辨率进行渲染,图形管线可以使用降低计算复杂性的在计算上有效的技术来渲染外围区域310B中的图像的部分。具体来说,对于本发明的实施例,可以将影响使用与外围区域310B中的像素相对应的像素所显示的对象的光源分组为一个或多个群集,并且其中将群集中的光源聚合为单个光源,所述单个光源紧密地近似由对应的光源群集中的每个个别光源产生的总效果。因此,不是计算群集中的个别光源中的每一者的个别效果,而是仅计算所述群集的聚合光源的效果。这在渲染整体图像时减少了计算处理,并且对于在外围区域310B中渲染的对象尤其如此。
[0074] 而且,与场景中的现实视图一致,例如,使用较低的分辨率渲染外围区域310B中的对象,其中具有足够的细节以使得用户能够感知移动对象(例如,人类直腿行走而不是弯曲着膝盖行走),并且在外围区域310B中的对象内或对象之间具有足够的对比度。为了实现以较低的分辨率进行渲染,图形管线可以使用降低计算复杂性的在计算上有效的技术来渲染外围区域310B中的图像的部分。具体来说,对于本发明的实施例,依据是在所显示的图像的中心凹区域之内还是之外显示由粒子系统产生的效果而不同地模拟和/或渲染粒子系统。举例来说,使用粒子系统中的全部粒子来模拟和/或渲染在中心凹区域之内的粒子系统。使用粒子子系统来模拟和/或渲染在中心凹区域之外(即,在外围区域中)的粒子系统。因此,不计算位于外围区域中的粒子系统中的所有粒子,而是仅模拟和/或渲染粒子子系统,进而减少渲染由粒子系统在对应图像中产生的效果所需的计算。这在渲染整体图像时减少了计算处理(例如,通过对粒子系统的模拟和/或渲染),并且对于在外围区域310B中渲染的粒子系统尤其如此。而且,含有使用粒子子系统渲染并且在中心凹区域之外显示的粒子系统的每个图像比含有粒子系统的全部粒子模拟和/或渲染的粒子系统的图像需要更少的定义数据。因此,因为传输更少的数据,所以可以在最小的等待时间或没有等待时间的情况下实时地递送(例如,经由有线或无线连接)所述视频帧序列。
[0075] 图3B说明根据本公开的一个实施例的在显示器300上示出并且包括高分辨率的中心凹区域310A’的图像310’,其中所述中心凹区域对应于用户的注视所指向的显示器的位置。具体来说,图像310’类似于在图3A中示出的图像310,并且出于简单和清晰起见,所述图像包括字母“E”的行和列。将图像310分割成多个区域,包括中心凹区域310A’和外围区域310B’。
[0076] 如所示,依据用户的注视指向的方向,中心凹区域310A’在显示器300上动态地移动。如先前描述,例如,可以使用HMD 102的注视跟踪相机165跟踪注视。因此,中心凹区域310A’可以不一定对应于显示器300的中心,而是替代地与用户在图像310’内的实际方向和关注焦点相关。也就是说,中心凹区域310A’随着用户的眼睛移动而动态地移动。
[0077] 如先前介绍,将通过在渲染位于中心凹区域310A’中的对象时将用于降低计算复杂性的任何渲染技术的使用最小化而以较高的分辨率渲染在中心凹区域310A’内显示和定位的任何图像(例如,图像310’)的部分。具体来说,对于本发明的实施例,在图形管线内个别地计算影响使用与中心凹区域310A’相对应的像素所显示的对象的光源,以便确定它们对所述对象的影响中的每一者(例如,所述对象的多边形上的色彩、纹理、阴影等)。使用清晰、鲜艳的色彩并且以最小模糊强度示出在表示较高分辨率的中心凹区域310A’内显示的字母“E”对象。
[0078] 另外,将以较低的分辨率(例如,比位于中心凹区域310A中的图像的部分和/或对象的分辨率低)渲染设置并定位在外围区域310B’中的图像(例如,图像310’)的部分。如先前介绍,用户的注视通常不指向在外围区域310B’中定位和/或显示的对象,因为所述注视的主要焦点指向中心凹区域310A’中的对象。因此,例如,使用较低的分辨率渲染外围区域310B’中的对象,其中具有足够的细节以使得用户能够感知移动对象(例如,人类直腿行走而不是弯曲着膝盖行走),并且在外围区域310B’中的对象内或对象之间具有足够的对比度。为了实现以较低的分辨率进行渲染,图形管线可以使用降低计算复杂性的在计算上有效的技术来渲染外围区域310B’中的图像的部分。具体来说,对于本发明的实施例,可以将影响使用与外围区域310B’中的像素相对应的像素所显示的对象的光源分组为一个或多个群集,并且其中将群集中的光源聚合为单个光源,所述单个光源紧密地近似由对应的光源群集中的每个个别光源产生的总效果,从而在渲染整个图像时减少计算处理,并且对于外围区域310B’中的对象尤其如此。此外,为了实现以较低的分辨率进行渲染,图形管线可以使用降低计算复杂性的在计算上有效的技术来渲染外围区域310B’中的图像的部分。具体来说,如先前针对本发明的实施例所描述,当在图像的外围区域中显示粒子系统的效果时,使用粒子子系统执行对粒子系统的模拟和/或渲染。
[0079] 优化的延迟照明
[0080] 图4A说明根据本公开的一个实施例的实施针对注视点渲染而配置的图形管线400A的图形处理器。图形管线400A说明用于使用3D(三维)多边形渲染过程来渲染图像的一般过程,但包括管线内的执行注视点渲染的额外的可编程元件。用于所渲染的图像的图形管线400A输出显示器中的像素中的每一者的对应的色彩信息,其中所述色彩信息可以表示纹理和着色(例如,色彩、阴影等)。可以在图1A的游戏控制台106、图1B的VR内容引擎120、图
2A和图2B的客户端装置106,和/或图2B的游戏标题处理引擎211内实施图形管线400A。
[0081] 如所示,所述图形管线接收输入几何图形405。举例来说,输入几何图形405可以包括3D游戏世界内的顶点,以及与所述顶点中的每一者相对应的信息。可以使用由顶点界定的多边形(例如,三角形)来表示所述游戏世界内的给定对象,其中随后通过图形管线400A处理对应多边形的表面以实现最终效果(例如,色彩、纹理等)。顶点属性可以包括法线(例如,哪个方向是与顶点相关的光)、色彩(例如,RGB-红色、绿色和蓝色三元组等)和纹理坐标/映射信息。
[0082] 顶点着色器和/或程序410接收输入几何图形405,并且构建多边形或图元,所述多边形或图元构成3D场景内的对象。也就是说,顶点着色器410在对象置于游戏世界内时使用图元来建立所述对象。顶点着色器410可以被配置成执行所述多边形的照明和阴影计算,这取决于所述场景的照明。顶点着色器410输出图元并且将所述图元递送到图形管线400A的下一级。顶点着色器410还可以执行额外的操作,例如裁剪(例如,识别和忽视在由游戏世界中的观看位置界定的视锥之外的图元)。
[0083] 将所述图元馈送到光栅化器420中,所述光栅化器被配置成将场景中的对象投影到由3D游戏世界中的观看位置(例如,相机位置、用户眼睛位置等)界定的二维(2D)图像平面。在过分简单化的层面,光栅化器420看向每个图元并且确定哪些像素受到对应的图元影响。具体来说,光栅化器420将所述图元分割成像素大小的片元,其中每个片元对应于显示器中的像素。重要的是要注意,一个或多个片元可能会在显示图像时贡献于对应像素的色彩。光栅化器420还可以根据观看位置来执行额外的操作,例如裁剪(识别和忽视在视锥之外的片元)和剔除(忽视被较靠近的对象挡住的片元)。
[0084] 注视点片元着色器和/或其核心处的程序430对所述片元执行着色操作,以确定图元的色彩和亮度如何随可用的照明而变。举例来说,片元着色器430可以确定每个片元的深度、色彩、法线和纹理坐标(例如,纹理细节),并且可以进一步确定所述片元的适当水平的光、暗度和色彩。具体来说,片元着色器430计算每个片元的特征,包括色彩和其他属性(例如,距观看位置的距离的z深度,以及透明度的α值)。另外,片元着色器430基于影响对应片元的可用的照明来向所述片元施加照明效果。此外,片元着色器430可以针对每个片元施加阴影效果。仅出于描述的目的,将光源描述为点光源,所述点光源在游戏世界中具有明确的位置并且全方位地辐射光。可以使用其他照明,例如方向性照明等。
[0085] 更具体地,注视点片元着色器430基于片元是在中心凹区域内还是外围区域内而执行如上文描述的着色操作。使用着色操作以高分辨率处理位于所显示的图像的中心凹区域内的片元,而不考虑处理效率,以便实现所述中心凹区域内的片元的详细纹理和色彩值。另一方面,注视点片元着色器430在关注处理效率的情况下对位于外围区域内的片元执行着色操作,以便以具有例如提供移动的最少操作的足够细节和足够的对比度处理片元。举例来说,在本发明的实施例中,可以将影响在外围区域中的像素中显示的片元的光源分组为一个或多个群集,并且其中将群集中的光源聚合为单个光源,所述单个光源紧密地近似由对应的光源群集中的每个个别光源产生的总效果,从而在渲染整个图像时减少计算处理。片元着色器430的输出包括经过处理的片元(例如,纹理和着色信息),并且将所述输出递送到图形管线400A的下一级。
[0086] 输出合并部件440依据贡献和/或影响每个对应像素的片元来计算每个像素的特征。也就是说,3D游戏世界中的所有图元的片元被组合成显示器的2D彩色像素。举例来说,贡献于对应像素的纹理和着色信息的片元经过组合以输出像素的最终色彩值,所述最终色彩值被递送到图形管线400A中的下一级。输出合并部件440可以执行在由片元着色器430确定的片元和/或像素之间的值的任选的混合。
[0087] 显示器中的每个像素的色彩值存储在帧缓冲器455中。在显示场景的对应图像时将这些值扫描到对应的像素。具体来说,显示器从每个像素的帧缓冲器逐行地、从左到右或从右到左、自上而下自下而上或以任何其他模式读取色彩值,并且在显示图像时使用那些像素值来照亮像素。
[0088] 图4B说明根据本公开的一个实施例的实施被配置成通过延迟式瓦片渲染来实施的注视点渲染的图形管线的图形处理器。用于所渲染的图像的图形管线400B输出显示器中的像素中的每一者的对应的色彩信息,其中所述色彩信息可以表示纹理和着色(例如,色彩、阴影等)。可以在图1A的游戏控制台106、图1B的VR内容引擎120、图2A和图2B的客户端装置106,和/或图2B的游戏标题处理引擎211内实施图形管线400B。
[0089] 可以通过任何数目种方式执行延迟式渲染,并且一般被描述成通过图形管线400B实施。一般来说,延迟式瓦片渲染将游戏世界的场景的每个图像处理为多个子图像。所产生的每个子图像对应于显示器的瓦片,其中所述显示器被分割成多个瓦片。也就是说,单独地渲染每个瓦片,并且在已经渲染与各个瓦片相关联的所有子图像时完全渲染所述图像。可以在图形管线400B的一个或多个级处执行使对象与特定瓦片关联。如所示,在一个实施例中,瓦片产生器460可以在顶点着色器410与光栅化器420之间执行图像的瓦片化。在另一实施例中,瓦片产生器460’可以在光栅化器420与片元着色器430’之间执行所述图像的瓦片化。
[0090] 管线400B类似于管线400A,其中相同的参考数字标示相同或对应的部分,并且用于使用3D多边形渲染过程来渲染图像,并且包括执行注视点渲染的额外的可编程元件。具体来说,管线400B被配置成在渲染图像时执行瓦片渲染,还称为延迟式瓦片渲染。所述瓦片中的每一者使用注视点渲染过程来渲染它们的图像的部分,包括使用较低的分辨率渲染在中心凹区域之外的图像部分。举例来说,使用聚合光源渲染外围区域中的图像部分,所述聚合光源紧密地近似由对应的光源群集中的个别的光源产生的总效果。
[0091] 如先前介绍,图形管线400B接收输入几何图形405,所述输入几何图形可以包括游戏世界内的顶点,以及与所述顶点中的每一者相对应的信息。顶点属性可以包括法线、色彩以及纹理坐标/映射信息。所述顶点界定游戏世界内的对象,并且更具体来说,界定形成游戏世界内的对象的表面的多边形(例如,三角形)。通过图形管线400B处理所述多边形以实现最终效果(例如,色彩、纹理等)。
[0092] 顶点着色器410接收输入几何图形405,并且构建多边形或图元,所述多边形或图元构成3D游戏世界内的对象。顶点着色器输出图元并且将所述图元递送到图形管线的下一级。顶点着色器可以执行额外的操作,例如照明和阴影计算、裁剪,和/或剔除。
[0093] 在一个实施例中,瓦片产生器460被配置成确定在显示器的瓦片上在何处最终显示图元。显示器被分割成多个瓦片,每个瓦片与对应数目个唯一像素相关联。具体来说,瓦片产生器460被配置成对所述图元进行分类以确定哪些图元与对应的瓦片重叠或相关联。一旦图元经过分类,便可以通过图形管线400B逐瓦片地处理所述图元。
[0094] 随后将所述图元馈送到光栅化器420中,所述光栅化器被配置成将场景中的对象投影到由游戏世界中的观看位置界定的2D图像平面。如果已经通过瓦片将图元分类,那么光栅化器420将对象投影到2D图像平面的瓦片上。如先前介绍,光栅化器420将所述图元分割成像素大小的片元,其中每个片元对应于显示器中的像素,并且其中一个或多个片元贡献于所述像素的色彩。光栅化器420还可以执行额外的操作,例如裁剪和剔除。
[0095] 在另一实施例中,瓦片产生器460’被配置成基于由光栅化器420确定的信息来确定在显示器的瓦片上在何处最终显示片元。因此,瓦片产生器460’被配置成对所述片元进行分类以确定哪些片元与对应的瓦片重叠或相关联。一旦片元经过分类,便可以通过图形管线400B逐瓦片地处理所述片元。
[0096] 其核心处的瓦片化注视点片元着色器430’逐瓦片地对所述片元执行着色操作,以确定图元的色彩和亮度如何随可用的照明而变。举例来说,片元着色器430’可以确定对应瓦片的每个片元的深度、色彩、法线和纹理坐标(例如,纹理细节),并且可以进一步确定所述片元的适当水平的光、暗度和色彩。具体来说,片元着色器430’计算每个片元的特征,包括色彩和其他属性(例如,距观看位置的距离的z深度,以及透明度的α值)。另外,片元着色器430’基于影响对应片元的可用的照明来向所述片元施加照明效果。此外,片元着色器430’可以针对每个片元施加阴影效果。仅出于描述的目的,将光源描述为点光,所述点光在游戏世界中具有明确的位置并且全方位地辐射光。可以使用其他照明,例如方向性照明等。
[0097] 更具体地,注视点片元着色器430’基于片元是在中心凹区域内还是外围区域内而执行如上文描述的着色操作。这可以起初通过确定与所述片元相关联的瓦片是在中心凹区域还是外围区域内来确定。使用着色操作以高分辨率处理位于所显示的图像的中心凹区域内的片元。另一方面,注视点片元着色器430’在关注处理效率的情况下对位于外围区域内的片元执行着色操作,以便以具有例如提供移动的最少操作的足够细节和足够的对比度处理片元。举例来说,在本发明的实施例中,可以将影响位于外围区域中的特定瓦片的片元的光源分组为一个或多个群集,并且其中将群集中的光源聚合为单个光源,所述单个光源紧密地近似由对应的光源群集中的每个个别光源产生的总效果,从而在渲染整个图像时减少计算处理。片元着色器430’的输出包括经过处理的片元(例如,纹理和着色信息),并且将所述输出递送到图形管线400B的下一级。
[0098] 瓦片化输出合并部件440’依据贡献和/或影响正被处理的对应瓦片的每个对应像素的片元来计算每个像素的特征。也就是说,3D游戏世界中的所有图元的片元被组合成显示器的瓦片的2D彩色像素。举例来说,贡献于对应像素的纹理和着色信息的片元经过组合以输出像素的最终色彩值,所述最终色彩值被递送到图形管线400B中的下一级。输出合并部件440’可以执行在由片元着色器430’确定的片元和/或像素之间的值的任选的混合。
[0099] 显示器的瓦片中的每个像素的色彩值存储在瓦片化帧缓冲器450’中。在显示与场景的瓦片相对应的对应子图像时将这些值扫描到对应的像素。在一个实现方式中,帧缓冲器450’充满来自于在显示器上绘制图像之前的所有瓦片的信息。具体来说,显示器从每个像素的帧缓冲器逐行地、从左到右、自上而下地读取色彩值,并且在显示图像时使用那些像素值来照亮像素。
[0100] 在详细描述了经由网络进行通信的游戏服务器和客户端装置的各种模块的情况下,图5A的流程图500A公开了根据本公开的一个实施例的用于实施被配置成执行注视点渲染的图形管线的方法,其中使用一个或多个聚合光源来渲染在中心凹区域之外的图像部分。如先前描述,在渲染图像时在客户端装置或基于云的游戏系统内实施流程图500A。在一个实现方式中,所述客户端装置是游戏控制台(gaming console)(还称为游戏控制台(game console))。
[0101] 在510处,所述方法包括确定影响虚拟场景的多个光源。所述光源影响所述场景内的由图形处理器处理的对象。来自所述光源的照明将在显示从观看位置观看到的所述场景内的对应对象时确定对应像素的最终色彩。
[0102] 在515处,所述方法包括从第一视角将所述场景的图像的对象的几何图形投影到显示器的多个像素上。如先前介绍,光栅化器和/或顶点着色器被配置成使图元和/或图元的片元与对应像素相关联。具体来说,顶点着色器可以被配置成使图元与对应像素相关联,其中在光栅化之前,通过图元将场景分割成瓦片。另外,光栅化器可以被配置成使图元的片元与对应像素相关联,其中可以通过片元将所述场景分割成瓦片。
[0103] 在520处,所述方法包括将所述显示器的多个像素分割成多个瓦片。通过那种方式,图形处理器能够在处理图像时执行瓦片渲染或延迟式瓦片渲染。此外,可以针对每个瓦片来创建从观看位置与对应瓦片可见地重叠的图元的列表。另外,可以针对每个瓦片来创建从观看位置与对应瓦片可见地重叠的片元的列表。通过那种方式,可以执行逐瓦片的渲染。
[0104] 在525处,所述方法包括界定所显示的图像的最高分辨率的中心凹区域。也就是说,通过假设(例如,一般处于覆盖显示器的静态区域的显示器中心处)或通过眼睛跟踪(例如,用于确定注视方向)将图像分割成用户的注意力集中的区域。用户的注意力集中的区域是中心凹区域,并且通过图形处理器以高分辨率渲染所述中心凹区域中的图像的部分(例如,图元和/或片元)。另一方面,用户未关注外围区域,并且通过图形处理器以较低的分辨率渲染所述外围区域中的图像的部分(例如,图元和/或片元)。更具体地,向中心凹区域指派第一像素子集,并且其中以高分辨率处理与所述第一子集相关联的图元和/或片元。向在中心凹区域之外的外围区域指派第二像素子集,并且其中以较低的分辨率(例如,低于与所述中心凹区域相关联的分辨率)处理与所述第二子集相关联的图元和/或片元。
[0105] 当执行瓦片渲染或延迟式瓦片渲染时,所述方法在530处包括确定所述多个光源中的影响处于所述外围区域中的第一瓦片中所显示的一个或多个对象的第一组光源。当执行瓦片渲染时,确定影响与图像相关联的每个瓦片的光源。从影响场景的多个光源取得所述光源。这减少了处理,因为在渲染与瓦片相关联的子图像时不会考虑不影响瓦片中的对象的光源。也就是说,对于每个瓦片,创建影响在对应瓦片中绘制的对象的光源的列表。因此,对于给定瓦片(例如,第一瓦片),在与所述第一瓦片相关联的列表中包括第一组光源,其中所述第一瓦片处于外围区域中。也就是说,在所述第一瓦片中所显示的对象处于外围区域中,并且因此,可以在较低的分辨率下渲染。举例来说,在较低的分辨率下渲染可以包括聚合光源,如下文所描述。
[0106] 在535处,所述方法包括将来自所述第一组的至少两个光源聚类为在渲染所述第一瓦片的像素中的图像时影响所述第一瓦片的第一聚合光源。也就是说,当执行注视点渲染时,确定所述第一瓦片中的对象处于外围区域中,并且可以在较低的分辨率下渲染那些对象以包括聚合光源。先前已经确定所述第一组光源影响与所述第一瓦片相关联或者将要在所述第一瓦片中显示的对象。可以将这些光源聚合为更小的光源子集,使得不通过个别地考虑所述第一组中的所述光源中的每一者来渲染瓦片中的对象,而是仅考虑聚合光源。所述聚合光源中的每一者紧密地近似由第一组光源个别地产生的总效果。通过那种方式,执行更少的处理来渲染瓦片的对象。
[0107] 图5B是说明根据本公开的一个实施例的用于实施被配置成通过瓦片延迟式渲染实施的注视点渲染的图形管线的方法中的步骤的流程图500B,其中将用于在中心凹区域之外的瓦片的光源进行聚合。具体来说,执行流程图500B以逐瓦片地将光源聚类,其中聚合光源表示用于渲染对应瓦片的对象的对应的光源群集。如先前描述,在渲染图像时在客户端装置或基于云的游戏系统内实施流程图500B。在一个实现方式中,所述客户端装置是游戏控制台(gaming console)(还称为游戏控制台(game console))。
[0108] 在550处,所述方法包括确定用于给定瓦片的光源的目标数目。所述目标数目对应于在渲染与那个瓦片相关联的对象时将处理的聚合光源和/或非聚合光源的总数。例如,指定外围区域的平均灯的最大数目以约束聚类输出。也就是说,所述方法包括将影响第一瓦片的聚合光源的数目限制于所述目标数目。
[0109] 在555处,所述方法包括确定影响给定瓦片的一组光源,其中所述一组光源是从影响场景的多个光源中取得。通过影响瓦片的所述一组光源确定光源的目标数目,其中所述目标数目小于或等于所述组中的数目。所述目标数目确定在执行渲染时用于瓦片的光源群集的最大数目。
[0110] 在560处,所述方法包括基于所述目标数目和所述一组光源来确定群集中的每一者中的光源的数目。在一个实现方式中,通过将所述一组光源除以所述目标数目来确定群集中的光源的数目。举例来说,如果在影响瓦片的一组光源中存在30个光源(例如,M=30),并且用于瓦片的目标数目是5,那么每个群集中的光源的数目是6(例如,M/[灯的目标数目]=6)。
[0111] 执行操作570以便基于光源之间的距离将所述M个灯聚类为更小数目个平均光源。在实施例中,为了实现此基于距离的聚合(例如,聚类),使用最近邻搜索或k平均聚类技术来产生所述群集以选择最佳的光源群集,其中每个光源群集与对应的聚合光源相关联,并且其中每个光源群集包括至少一个光源。
[0112] 在一个实施例中,对将要求平均的灯的最大距离设置阈值。也就是说,群集中的两个光源之间的最大距离被限制于最大距离。这将防止相距很远的平均灯,其中新的平均灯位置可能会大大不同于原始灯位置。
[0113] 具体来说,针对影响瓦片的所述一组光源(M)中的每个光源(L_i)执行循环过程。例如,在572处,所述方法包括对于当前光源(L_i),计算当前光源(L_i)与影响所述瓦片的每个光源(M)之间的距离。在574处,所述方法包括对于所述组(M)中的当前光源(L_i),确定包括当前光源(L_i)和与所述当前光源具有最小距离的五个其他光源的当前灯群集(群集_i)。在576处,所述方法包括确定当前光源群集(群集_i)的群集误差(群集_误差_i)。在一个实现方式中,通过当前光源(L_i)与当前群集(群集_i)中的每个其他灯之间的距离的总和来确定所述群集误差(群集_误差_i)。针对M个灯中的每个灯L_i来执行此过程,如决策步骤
578所确定。
[0114] 在580处,所述方法包括选择具有最小量的群集误差的群集。也就是说,所述方法包括使多个光源群集的多个群集误差最小化。继续其中M=30个灯群集的所述示例,选择具有6个最低的群集误差的6个群集(还考虑群集误差的任何冲突)。也就是说,对于每个光源群集(群集_i),创建新的聚合光源,其中所述聚合光源紧密地近似由所述群集中的每个个别的光源产生的总效果。
[0115] 在一个实施例中,为了进一步界定群集误差,与多个光源群集中的每个群集相对应的群集误差包括当前光源与其他光源中的每一者之间的距离的迭代和,其中对于每个迭代,所述当前光源包括群集中的不同光源。
[0116] 在一个实施例中,聚合光源具有作为群集中的光源的特性的平均值的特性。举例来说,聚合光源具有作为距离、色彩等的平均值的特性。聚合光源的新的强度可以是群集中的每个光源的强度的总和。强度可以不是平均值,因为这可能会导致影响场景的能量损耗。具体来说,聚合光源可以包括作为群集中的光源的平均位置的新的位置。聚合光源的新的色彩可以是群集中的每个光源的色彩的平均值。
[0117] 在另一实现方式中,新的色彩是群集中的每个光源的色彩的加权和。每个光源(L_i)的权重是基于当前光源(L_i)的强度除以聚合光源的新的强度(例如,[强度_L_i]/[新的强度])来确定。因此,新的色彩如下确定:[(强度_L_i/新的强度)*(色彩_L_i)]。因此,聚合光源具有以下特性:大致维持灯中的每一者的原始强度并且将通过相对于总强度将色彩加权来保留灯的平均色彩。
[0118] 在一个实施例中,动态地调整瓦片大小以配合目标数目个群集。具体来说,影响给定瓦片的聚合光源的数目被限制于目标数目。当确定影响瓦片的一组光源小于所述目标数目时,扩大给定瓦片的大小以调适所述目标数目。
[0119] 图6A是根据本公开的一个实施例的影响游戏世界的场景600A的多个光源和形成聚合光源的至少一个光源群集的说明。如所示,通过坐标系统601在三个维度上界定游戏世界600。出于简单和清晰起见,在游戏世界的场景600A中示出一个对象620,其中对象620具有所述游戏世界内的位置。可以从用户的眼睛630的视角渲染场景600A,其中可以在与眼睛630看到的虚拟显示器相对应的图像平面中渲染所述视角。
[0120] 示出了影响场景600A的两个光源群集。第一群集615a包括多个光源。使用先前描述的技术将第一群集615a中的光源聚合为聚合光源610a。聚合光源610a具有紧密地近似由群集615a中的每个个别的光源产生的总效果的特性。如所示,聚合光源610a在所述游戏世界中具有由在坐标系统601内含有的网格640a界定的位置。另外,第二群集615b包括多个光源。使用先前描述的技术将第二群集615b中的光源聚合为聚合光源610b。聚合光源610b具有紧密地近似由群集615b中的每个个别的光源产生的总效果的特性。如所示,聚合光源610b在所述游戏世界中具有由在坐标系统601内含有的网格640b界定的位置。
[0121] 图6B是根据本公开的一个实施例的被分割成多个瓦片660的显示器650的说明,其中在图形管线的延迟式渲染系统中逐瓦片地执行渲染。具体来说,可以通过矩形图案(由瓦片的行和列识别)界定显示器650中的多个瓦片。虽然所述瓦片的形状是矩形,但可以在2D、3D或更多维度内的任何布置中使用任何形状(例如,矩形、圆形、球形等)。
[0122] 如所示,显示器650包括中心凹区域670,所述中心凹区域显示以较高分辨率渲染的图像的部分。中心凹区域670中的瓦片中的每一者包括影响对应瓦片的光源的列表。举例来说,中心凹区域670中的瓦片可能受到10个光源到35个光源的不同数目个光源影响,其中影响场景的多个光源可以等于或大于35。例如,在瓦片660p中(例如,在行3和列5中)显示的对象受到10个光源影响;在瓦片660q中(例如,在行4和列5中)显示的对象受到14个光源影响;以及在瓦片660r中(例如,在行3和列7中)显示的对象受到35个光源影响。因为瓦片处于中心凹区域670内,所以在渲染那个瓦片中的对象(例如,相关联的图元和/或片元)时完全处理(例如,通过图形管线个别地考虑)影响给定瓦片的光源。
[0123] 另外,显示器650包括显示以较低分辨率(例如,比在中心凹区域670中渲染的图像的部分低)渲染的图像的部分的外围区域675。外围区域675中的瓦片中的每一者包括影响对应瓦片的光源的列表。此外,以较低分辨率渲染外围区域675中的瓦片包括将聚合光源用于所述瓦片中的每一者。举例来说,瓦片660n具有影响在那个瓦片内绘制的对象的25个光源,所述瓦片被分组为5个群集,每个群集具有其自身的聚合光源。因此,瓦片660n具有用于渲染那个瓦片中的对象的5个聚合光源。在另一示例中,使用更多的细节示出瓦片660m。例如,可以将瓦片660m界定为包括32x32像素的网格。如先前介绍,瓦片可以具有各种形状和大小。如所示,瓦片660m具有影响在那个瓦片内绘制的对象的30个光源,所述瓦片被分组为5个群集,每个群集具有其自身的聚合光源。因此,瓦片660m还具有用于渲染那个瓦片中的对象的5个聚合光源。
[0124] 在一个实施例中,计算机系统包括处理器和存储器,所述存储器耦合到所述处理器并且具有存储在其中的指令,所述指令在由所述计算机系统执行时致使所述计算机系统执行用于实施图形管线的方法。所述方法包括确定影响虚拟场景的多个光源。所述方法还包括从第一视角将所述场景的图像的对象的几何图形投影到显示器的多个像素上。所述方法还包括将所述显示器的多个像素分割成多个瓦片。所述方法还包括界定所显示的所述图像的最高分辨率的中心凹区域,其中向所述中心凹区域指派第一像素子集,并且其中向在所述中心凹区域之外的外围区域指派第二像素子集。所述方法还包括确定所述多个光源中的影响在处于所述外围区域中的第一瓦片中所显示的一个或多个对象的第一组光源。所述方法还包括将来自所述第一组的至少两个光源聚类为在渲染所述第一瓦片的像素中的图像时影响所述第一瓦片的第一聚合光源。
[0125] 在另一实施例中,由计算机系统执行的所述方法还包括使用最近邻搜索或k-均值聚类技术由多个光源产生多个光源群集,其中每个光源群集与对应的聚合光源相关联,其中每个光源群集包括至少一个光源。
[0126] 在另一实施例中,由计算机系统执行的所述方法还包括将影响第一瓦片的聚合光源的数目限制于目标数目。所述方法还包括将群集中的两个光源之间的最大距离限制于最大距离。所述方法还包括使多个光源群集的多个群集误差最小化。所述方法还包括针对每个光源群集产生对应的聚合光源。
[0127] 在另一实施例中,在由计算机系统执行的所述方法中,所述产生对应的聚合光源还包括通过对对应的光源群集中的光源的位置求平均来确定所述对应的聚合光源的聚合位置。在所述方法中所述产生对应的聚合光源还包括通过对对应的光源群集中的光源的强度求和来确定所述对应的聚合光源的聚合强度。在所述方法中所述产生对应的聚合光源还包括通过对所述对应的光源群集中的光源的色彩执行加权和来确定所述对应的聚合光源的聚合色彩。
[0128] 在另一实施例中,在由计算机系统执行的所述方法中,与多个光源群集中的每个群集相对应的群集误差包括当前光源与其他光源中的每一者之间的距离的迭代和,其中对于每个迭代,所述当前光源包括群集中的不同光源。
[0129] 在另一实施例中,由计算机系统执行的所述方法还包括将影响第一瓦片的聚合光源的数目限制于目标数目。所述方法还包括确定第一组光源少于所述目标数目。所述方法还包括扩大第一瓦片的大小以满足所述目标数目。
[0130] 在另一实施例中,在由计算机系统执行的所述方法中,显示器包括头戴式显示器(HMD)。
[0131] 在一个实施例中,非暂时性计算机可读介质存储用于实施图形管线的计算机程序。所述计算机可读介质包括用于确定影响虚拟场景的多个光源的程序指令。所述计算机可读介质还包括用于从第一视角将所述场景的图像的对象的几何图形投影到显示器的多个像素上的程序指令。所述计算机可读介质还包括用于将所述显示器的多个像素分割成多个瓦片的程序指令。所述计算机可读介质还包括用于界定所显示的所述图像的最高分辨率的中心凹区域的程序指令,其中向所述中心凹区域指派第一像素子集,并且其中向在所述中心凹区域之外的外围区域指派第二像素子集。所述计算机可读介质还包括用于确定所述多个光源中的影响处于所述外围区域中的第一瓦片中所显示的一个或多个对象的第一组光源的程序指令。所述计算机可读介质还包括用于将来自所述第一组的至少两个光源聚类为在渲染所述第一瓦片的像素中的图像时影响所述第一瓦片的第一聚合光源的程序指令。
[0132] 在另一实施例中,所述非暂时性计算机可读介质还包括用于使用最近邻搜索或k-均值聚类技术由多个光源产生多个光源群集的程序指令,其中每个光源群集与对应的聚合光源相关联,其中每个光源群集包括至少一个光源。
[0133] 在另一实施例中,所述非暂时性计算机可读介质还包括用于将影响第一瓦片的聚合光源的数目限制于目标数目的程序指令。所述非暂时性计算机可读介质还包括用于将群集中的两个光源之间的最大距离限制于最大距离的程序指令。所述非暂时性计算机可读介质还包括用于使多个光源群集的多个群集误差最小化的程序指令。所述非暂时性计算机可读介质还包括用于针对每个光源群集产生对应的聚合光源的程序指令。
[0134] 在另一实施例中,所述非暂时性计算机可读介质中的所述用于产生对应的聚合光源程序指令还包括用于通过对对应的光源群集中的光源的位置求平均来确定所述对应的聚合光源的聚合位置的程序指令。所述用于产生对应的聚合光源的程序指令还包括用于通过对对应的光源群集中的光源的强度求和来确定所述对应的聚合光源的聚合强度的程序指令。所述用于产生对应的聚合光源的程序指令还包括用于通过对所述对应的光源群集中的光源的色彩执行加权和来确定所述对应的聚合光源的聚合色彩的程序指令。
[0135] 在另一实施例中,存储在非暂时性计算机可读介质中的程序指令中,与多个光源群集中的每个群集相对应的群集误差包括当前光源与其他光源中的每一者之间的距离的迭代和,其中对于每个迭代,所述当前光源包括群集中的不同光源。
[0136] 粒子和模拟模型的中心凹调适
[0137] 本公开的各种实施例涉及注视点渲染,所述注视点渲染被配置成使用高分辨率显示中心凹区域中的图像的部分并且使用较低分辨率显示所述中心凹区域之外的部分。具体来说,通过模拟模型,广泛地使用粒子系统来产生比如火、烟雾、服装和水等物理效果。粒子系统还用于例如魔法魔咒等许多非物理效果中。依据期望的效果,这些粒子系统的复杂性范围可以在10个粒子到100,000个或更多个粒子之间。用于模拟和渲染粒子的计算可能会非常昂贵。当用户不主动地观看粒子系统时(即,在外围区域或外围区域中绘制粒子系统效果),可以潜在地通过在渲染时被缩放(例如,更大)和变暗(例如,修改α值)的更少数目个粒子来表示所述粒子系统以实现类似可感知的效果。通过那种方式,例如部分地由于更不复杂的图像而减小了所显示的视频帧序列的总带宽。此外,因为降低了计算复杂性,所以可以在最小的等待时间或没有等待时间的情况下实时地递送(例如,经由有线或无线连接)所述视频帧序列。在一些实施例中,可以在先前在图1至图6中描述的背景内实施粒子和模拟模型的中心凹调适。
[0138] 图7A说明根据本公开的一个实施例的实施针对注视点渲染而配置的图形管线的系统9400A,所述注视点渲染包括使用中央处理单元(CPU)或图形处理单元(GPU)对有限量的粒子(例如,少于一万)的粒子系统模拟,以及依据粒子系统的绘制效果是位于中心凹区域内还是外围区域内而使用整个粒子系统或通过取样(例如,随机、最近邻、相似度等)而产生的粒子子系统在GPU中对粒子系统的渲染。图形管线9400A说明用于使用3D(三维)多边形渲染过程来渲染图像的一般过程,但经过修改以在所述管线内执行额外的可编程元件来执行注视点渲染,例如依据由粒子系统产生的关于对应图像的中心凹区域的效果的位置而使用全部粒子或粒子子系统来模拟和/或渲染粒子系统。用于所渲染的图像的图形管线9400A输出显示器中的像素中的每一者的对应的色彩信息,其中所述色彩信息可以表示纹理和着色(例如,色彩、阴影等)。可以在图1A的游戏控制台106、图1B的VR内容引擎120、图2A和图2B的客户端装置106,和/或图2B的游戏标题处理引擎211内实施图形管线9400A。
[0139] 可以在CPU或GPU上进行粒子模拟。最简单的或小的粒子系统将在CPU上执行。另一方面,使用大量粒子的模拟可以在GPU上进行,在那种情况下,在GPU上执行的模拟将包括在执行渲染之前将可能在计算或几何图形着色器中进行的计算。系统9400A被配置成对具有有限量的粒子的粒子系统(例如,具有少于一万个粒子的小粒子系统)执行粒子模拟。系统9400包括针对注视点渲染而配置的可编程处理器9401和可编程处理器9402,所述注视点渲染包括:处理顶点数据;将顶点聚集成图元(例如,多边形);执行光栅化以相对于显示器由所述图元产生片元;以及随后计算每个片元的色彩值和深度值,并且逐像素地混合所述片元以便存储到帧缓冲器进行显示。由处理器9401执行的操作可以在CPU或GPU中执行。由可编程着色器9402执行的操作一般更适合于在GPU中执行以实现更好的性能和效率。
[0140] 如所示,系统9400A的图形管线接收输入几何图形9405。举例来说,输入几何图形9405可以包括3D游戏世界内的顶点,以及与所述顶点中的每一者相对应的信息。可以使用由顶点界定的多边形(例如,三角形)来表示所述游戏世界内的给定对象,其中随后通过图形管线9400A处理对应多边形的表面以实现最终效果(例如,色彩、纹理等)。顶点属性可以包括法线(例如,哪个方向是与顶点相关的光)、色彩(例如,RGB-红色、绿色和蓝色三元组等)和纹理坐标/映射信息。为了易于说明,示出将3D游戏世界的输入几何图形输入到处理器9401,但还可以分割所述几何图形,使得将用于粒子系统的几何图形输入到处理器9401,并且将剩余的几何图形输入到处理器9402的顶点着色器9410。举例来说,可以将输入几何图形输入到顶点缓冲器中,可以在处理器9401和9402之间共享所述顶点缓冲器。
[0141] 具体来说,可编程处理器9401依据粒子的位置、质量和速度以及施加到所述粒子的各种力(例如,例如重力等外力,以及描述粒子间相互作用的内力)逐帧地执行粒子模拟(例如,计算粒子运动等)。一般来说,从第一帧到后续帧,处理器9401执行操作以初始化粒子位置,并且更新粒子位置。具体来说,对于所渲染的每个帧,在离散的时间步骤(例如,逐帧地)更新每个粒子的模拟(例如,位置、定向、速度等)。如图7A中所示,处理器9401可以在GPU配置内实施并且经编程以执行粒子系统模拟。具体来说,粒子模拟可以由GPU的计算或几何着色器执行。举例来说,计算或几何着色器9406可以包括执行粒子模拟的粒子模拟模块9407。着色器9406的输出可以包括粒子系统的图元(例如,多边形)。当在GPU配置内实施时,剩余的部件(例如,光栅化器、片元着色器,以及包括输出合并器和帧缓冲器的渲染器)是闲置的,使得随后递送来自着色器9406的输出,和/或使所述输出与处理器9402共享以执行包括渲染的更多传统的GPU操作。当然,在CPU实现方式中,可以将处理器9401简化成仅包括着色器9406和粒子模拟模块9407。
[0142] 与在GPU配置内实施一样使用处理器9402绘制粒子。具体来说,将模拟结果存储到顶点缓冲器,随后将所述模拟结果输入到处理器9402(例如,顶点着色器)。可以在图7A中示出的系统9400A的图形管线的多个级之间共享所述顶点缓冲器中的值。更具体地,如先前描述,顶点着色器9410直接从处理器9401接收输入几何图形9405,并且构建多边形或图元,所述多边形或图元构成3D场景内的对象。如果处理器9401未完成,那么顶点着色器9410可以进一步构建所模拟的粒子系统的图元。也就是说,顶点着色器9410在对象置于游戏世界内时使用图元来建立所述对象。举例来说,顶点着色器9410可以被配置成执行所述多边形的照明和阴影计算,这取决于所述场景的照明。顶点处理器9410输出图元并且将所述图元递送到图形管线9400A的下一级。顶点处理器9410还可以执行额外的操作,例如裁剪(例如,识别和忽视在由游戏世界中的观看位置界定的视锥之外的图元)。
[0143] 在本发明的实施例中,处理器9402被配置成执行注视点渲染,包括通过有效的方式渲染粒子系统,包括当在中心凹区域中显示由粒子系统产生的效果时渲染粒子子系统。具体来说,顶点着色器9410的注视点顶点确定器9412可以被配置成确定粒子或粒子的顶点是位于中心凹区域之内还是之外。
[0144] 当粒子或其部件位于外围区域内时,顶点着色器9410被配置成确定是抛弃顶点还是允许其前进通过图形管线(例如,通过光栅化器/片元着色器)。可以实施各种技术来确定要从粒子系统抛弃哪些粒子。一般来说,顶点着色器9410可以选择粒子系统内的粒子进行渲染。举例来说,可以通过各种技术执行所述选择,包括随机选择、最近邻、相似度等。在一个实施例中,使用索引列表9415来确定是渲染还是抛弃粒子或粒子的部件。使用索引来绘制对象在本领域中是众所周知的,并且用于降低计算复杂性(例如,减少对象中的相同顶点的重复)。出于说明起见,简要来说,索引产生器9413被配置成创建索引(例如,使用索引缓冲器),其中使粒子和它们的分量(例如,图元、顶点等)与所述索引中的一个或多个索引相关联。举例来说,索引缓冲器包括索引阵列,其中所述索引与顶点缓冲器中的顶点的位置匹配。因此,不复制每个其相关联的多边形的相同顶点,可以使用映射到顶点缓冲器中的一个位置的单个索引。此外,粒子选择器9414被配置成例如通过借助各种选择技术(例如,随机选择、最近邻、相似度等)产生选定索引的列表9415来选择粒子。所述粒子的选定索引和/或分量将是形成存储在所述列表中的缩减的集合(例如,粒子子系统)的选定样本。因此,当顶点处于中心凹之外时,可以检查那个顶点以查看其相关联的索引是否包括在“绘制列表”中(例如,包括在列表9415内)。如果所述顶点不与曾被选择的索引(例如,存储在列表9415中)相关联,那么抛弃那个顶点,并且不通过管线中的其余着色器渲染所述顶点。另一方面,如果所述顶点与列表9415中的索引相关联(例如,被选择为包括在所述列表中),那么使那个顶点前进通过管线进行渲染。其后,无论是全部的粒子或者是由顶点着色器9410输出的与粒子系统相关联的粒子子系统,其余操作都按照典型的方式操作。
[0145] 对粒子的视觉性质进行修改以维持期望的感知连续性。举例来说,变暗和缩放模块9416被配置成修改粒子系统的部件的属性。具体来说,在顶点着色器中执行变暗和缩放,使得针对粒子系统的非注视点渲染(例如,渲染粒子子系统)来调整片元着色器的输入。通过那种方式,不需要对注视点片元着色器9430的输出进行进一步的调整以实现对外围区域中的粒子系统的适当的渲染。可以类似地修改其他视觉性质以维持期望的感知连续性,例如色彩、α值、材料等。
[0146] 具体来说,对于缩放属性,可以将来自顶点着色器9410的输出的大小修改得更大。举例来说,如果使用点块纹理,那么可以通过因数将输出点大小缩放得更大。可以通过任何数目种方式确定所述因数。举例来说,所述因数可以是与子系统中的粒子的数目相比于粒子总数相关的缩减比率。在另一实现方式中,如果使用实例化的几何图形描述粒子系统(例如,使用单个网的多个副本的参数变化来渲染所述副本以创建使用重复的几何图形、图元等构建的对象),那么将通过因数将实例化的网缩放得更大。执行缩放以在处理粒子子系统时产生与在渲染粒子系统的全部粒子时类似大小的效果。
[0147] 执行粒子或粒子的分量的变暗以在处理粒子子系统时产生与在渲染粒子系统的全部粒子时类似彩色的效果(即,维持期望的感知连续性)。在一个实现方式中,调整粒子的分量的α值以将粒子子系统的每个粒子变暗。举例来说,将调整α值以在使得粒子更大时(例如,缩放)增加效果(例如,烟雾)的不透明度。可以类似地修改其他视觉性质(例如,材料等)以维持期望的感知连续性。
[0148] 将由顶点处理器9410输出的图元馈送到光栅化器9420中,所述光栅化器被配置成将场景中的对象投影到由3D游戏世界中的观看位置(例如,相机位置、用户眼睛位置等)界定的二维(2D)图像平面。当由粒子系统产生的效果处于外围区域中时,这些图元包括粒子子系统(例如,而不是全部粒子)。在一个实施例中,当所述效果的至少一部分处于外围区域中时,渲染所述粒子子系统。在另一实施例中,当整个效果处于外围区域中时渲染所述粒子子系统,从而以较低分辨率渲染粒子系统。而且,当由粒子系统产生的效果处于中心凹区域中时,图元可以包括整个粒子系统,从而以较高分辨率渲染所述粒子系统。
[0149] 在过分简单化的层面,光栅化器9420看向每个图元并且确定哪些像素受到对应的图元影响。具体来说,光栅化器9420将所述图元分割成像素大小的片元,其中每个片元对应于显示器中的像素和/或与渲染视角(例如,相机视野)相关联的参考平面。重要的是要注意,一个或多个片元可能会在显示图像时贡献于对应像素的色彩。光栅化器9420还可以根据观看位置来执行额外的操作,例如裁剪(识别和忽视在视锥之外的片元)和剔除(忽视被较靠近的对象挡住的片元)。
[0150] 其核心处的注视点片元处理器9430对所述片元执行着色操作,以确定图元的色彩和亮度如何随可用的照明而变。举例来说,片元处理器9430可以确定每个片元的深度、色彩、法线和纹理坐标(例如,纹理细节),并且可以进一步确定所述片元的适当水平的光、暗度和色彩。具体来说,片元处理器9430计算每个片元的特征,包括色彩和其他属性(例如,距观看位置的距离的z深度,以及透明度的α值)。另外,片元处理器9430基于影响对应片元的可用的照明来向所述片元施加照明效果。此外,片元处理器9430可以针对每个片元施加阴影效果。
[0151] 更具体地,注视点片元着色器9430基于片元是在中心凹区域内还是外围区域内而执行如上文描述的着色操作。使用着色操作以高分辨率处理位于所显示的图像的中心凹区域内的片元,而不考虑处理效率,以便实现所述中心凹区域内的片元的详细纹理和色彩值。另一方面,注视点片元处理器9430在关注处理效率的情况下对位于外围区域内的片元执行着色操作,以便以具有例如提供移动的最少操作的足够细节和足够的对比度处理片元。
[0152] 举例来说,在本发明的实施例中,依据粒子系统的片元是在中心凹区域之内还是之外(例如,贡献于中心凹区域之内或之外的像素)而不同地渲染粒所述片元。因为顶点着色器9410先前已经确定粒子和/或它们的分量几何图形是位于中心凹区域之内还是之外并且相应地对那些分量几何图形进行滤波(例如,当由粒子系统产生的效果处于外围区域中时计算经过编制索引的顶点以渲染粒子子系统),所以已经将顶点着色器9410的输出定位成向图形管线的其余部件(例如,包括光栅化器9420和注视点片元着色器9430等)提供适当的图元。因此,可编程着色器9402的图形管线的其余部件被配置成在由粒子系统产生的效果处于中心凹区域中时渲染粒子系统中的全部粒子。而且,可编程着色器9402的图形管线的其余部件被配置成在所述效果处于外围区域中时渲染粒子子系统。
[0153] 片元处理器9430的输出包括经过处理的片元(例如,纹理和着色信息),并且将所述输出递送到图形管线9400A的下一级。
[0154] 输出合并部件9440依据贡献和/或影响每个对应像素的片元来计算每个像素的特征。也就是说,3D游戏世界中的所有图元的片元被组合成显示器的2D彩色像素。举例来说,贡献于对应像素的纹理和着色信息的片元经过组合以输出像素的最终色彩值,所述最终色彩值被递送到图形管线9400A中的下一级。输出合并部件9440可以执行在由片元处理器9430确定的片元和/或像素之间的值的任选的混合。
[0155] 显示器9455中的每个像素的色彩值存储在帧缓冲器9450中。在显示场景的对应图像时将这些值扫描到对应的像素。具体来说,显示器从每个像素的帧缓冲器逐行地、从左到右或从右到左、自上而下或自下而上或以任何其他模式读取色彩值,并且在显示图像时使用那些像素值来照亮像素。
[0156] 图7B说明根据本公开的一个实施例的实施针对注视点渲染而配置的图形管线的图形处理器,所述注视点渲染包括对大量的粒子(例如,多于一万)的粒子系统模拟,其中依据粒子系统的绘制效果是位于中心凹区域内还是外围区域内而使用整个粒子系统或通过粒子聚类和聚合而产生的粒子子系统对粒子系统进行模拟并随后渲染。图形管线9400B说明用于使用3D(三维)多边形渲染过程来渲染图像的一般过程,但经过修改以在所述管线内执行额外的可编程元件来执行注视点渲染,例如依据由粒子系统产生的关于对应图像的中心凹区域的效果的位置而使用全部粒子或粒子子系统来模拟和/或渲染粒子系统。用于所渲染的图像的图形管线9400B输出显示器中的像素中的每一者的对应的色彩信息,其中所述色彩信息可以表示纹理和着色(例如,色彩、阴影等)。可以在图1A的游戏控制台106、图1B的VR内容引擎120、图2A和图2B的客户端装置106,和/或图2B的游戏标题处理引擎211内实施图形管线9400B。图形管线9400B可以含有与图7A的管线9400A类似的部件,其中类似的参考数字标示相同或对应的部分。
[0157] 虽然可以在CPU或GPU上执行粒子模拟,如图7B中所示,但在GPU上执行粒子模拟,这是因为在一个实施例中由于粒子系统中的更大数目个粒子而引起的大量并行处理。管线9400B被配置成在具有大量粒子(例如,大于一万)的粒子系统上执行粒子模拟,并且包括被配置成用于传统的渲染过程的可编程处理器9403和可编程处理器9404,所述传统的渲染过程例如为处理顶点数据;将顶点聚集成图元(例如,多边形);执行光栅化以相对于显示器由所述图元产生片元;以及随后计算每个片元的色彩值和深度值,并且逐像素地混合所述片元以便存储到帧缓冲器进行显示。
[0158] 如所示,如先前描述,图形管线9400B接收输入几何图形9405以包括3D游戏世界内的顶点和对应于所述顶点中的每一者的信息。使用由顶点界定的多边形(例如,三角形)来表示所述3D世界内的对象,其中随后通过图形管线9400B处理对应多边形的表面以实现最终效果(例如,色彩、纹理等)。在一个实施例中,输入几何图形9405包括粒子系统。在其他实施例中,例如使用粒子系统产生器9461在图形管线9400B内产生粒子系统。顶点属性可以包括法线(例如,哪个方向是与顶点相关的光)、色彩(例如,RGB-红色、绿色和蓝色三元组等)和纹理坐标/映射信息。将输入几何图形输入到可编程处理器9403,并且更具体来说,输入到被配置成执行粒子缩减和粒子模拟的着色器9460(例如,计算着色器或几何着色器)。一般来说,可以将输入几何图形置于顶点缓冲器中,可以在处理器9403和9404之间共享所述顶点缓冲器。
[0159] 因为模拟是在渲染之前进行,所以可以缩减进行模拟的粒子数。可以由计算着色器或几何着色器9460执行粒子数的缩减和粒子模拟。在一个实施例中,当整个粒子系统处于中心凹之外(例如,在外围区域中显示)时,执行所述粒子数的缩减(例如,从而产生粒子子系统)。在顶点着色器9460内的模拟之前执行缩减。具体来说,注视点顶点确定器9462被配置成确定粒子系统是位于中心凹区域之内还是之外。这可以通过界定粒子系统的边界框以查看是否整个粒子系统处于中心凹之外来完成。举例来说,边界框比较器9463被配置成确定粒子系统是否位于外围区域中。
[0160] 当粒子系统处于中心凹区域之外时,子系统粒子产生器9470被配置成在模拟之前缩减粒子数。具体来说,群集模块9472被配置成将粒子分组为多个粒子群集。对于每个粒子群集,聚合器模块9474将所述群集中的所有粒子聚合为一个聚合粒子,使得现在通过单个聚合粒子表示所述粒子群集。因此,产生包括所述群集的多个聚合粒子的粒子子系统。可以通过将粒子系统中的粒子总数除以目标数目来确定群集中的粒子的数目。
[0161] 群集模块9472可以被配置成确定与粒子系统中的群集的目标数目相对应的聚合粒子的目标数目。所述目标数目对应于在渲染粒子系统时将处理的聚合粒子的总数。可以通过将粒子系统(例如,目标数目的群集)聚类来确定选自粒子系统的将要包括在粒子子系统中的粒子(例如,聚合粒子)。在一个实施例中,基于粒子之间的相对距离来执行聚类。举例来说,为了实现此基于距离的聚合(例如,聚类),使用最近邻搜索或k平均聚类技术来产生所述群集以选择最佳的粒子群集,其中每个粒子群集与对应的聚合光源相关联,并且其中每个光源群集包括至少一个光源。在一个实施例中,对群集内的粒子的最大距离设置阈值。可以确定每个群集的群集误差,其中所述误差是基于所述群集中的粒子之间的距离。通过具有最小量的群集误差,或者更确切地说,通过最小化多个群集的多个群集误差来确定选定群集。
[0162] 聚合器模块9474取得每个粒子群集并且产生对应的聚合粒子。聚合粒子具有作为对应群集中的粒子的特性的平均值的特性。举例来说,聚合粒子具有距离、色彩等的平均值的特性。具体来说,所述聚合粒子可以包括作为群集中的粒子的平均位置的新的位置。聚合粒子可以具有聚合质量,通过对对应群集中的粒子的质量求和来确定所述聚合质量。聚合光源的新的色彩可以是群集中的每个粒子的色彩的平均值或加权和。对其他视觉性质进行聚合以包括(非限制):色彩、α值、材料等。
[0163] 变暗和缩放模块9475被配置成修改粒子系统的部件的属性。在计算着色器或几何着色器9460中执行变暗和缩放,使得当执行非注视点渲染(例如,渲染粒子子系统)时不需要执行对粒子系统的进一步调整。也就是说,在着色器9460中执行对粒子系统的所有调整,以实现在模拟级之前对粒子系统的非注视点处理。
[0164] 具体来说,对于缩放属性,变暗和缩放模块9475修改粒子子系统中的聚合粒子的大小(例如,增加大小)。举例来说,如果使用点块纹理,那么可以通过因数将输出点大小缩放得更大。可以通过任何数目种方式确定所述因数。举例来说,所述因数可以是与子系统中的粒子的数目相比于粒子总数相关的缩减比率,如先前描述。在另一实现方式中,如果使用实例化的几何图形描述粒子系统(例如,使用单个网的多个副本的参数变化来渲染所述副本),那么可以通过因数将实例化的网缩放得更大。执行缩放以在处理粒子子系统时产生与在渲染粒子系统的全部粒子时类似大小的效果。
[0165] 执行粒子或粒子的分量的变暗以在处理粒子子系统时产生与在渲染粒子系统的全部粒子时类似彩色的效果。在一个实现方式中,调整聚合粒子的分量的α值以将粒子子系统的每个粒子变暗。举例来说,将调整α值以在使得粒子更大时(例如,缩放)增加效果(例如,烟雾)的不透明度。可以类似地修改其他视觉性质(例如,材料等)以维持期望的感知连续性。
[0166] 已经调整了变暗和缩放模块9475的输出以实现对粒子系统的非注视点处理。不需要对粒子系统的进一步缩减或对粒子系统的调整来渲染处于外围区域中的粒子系统。
[0167] 粒子模拟模块9477依据粒子的位置、质量和速度以及施加到所述粒子的各种力(例如,例如重力、静电力等外力,以及描述粒子间相互作用的内力)逐帧地执行粒子模拟(例如,计算粒子运动等)。一般来说,从第一帧到后续帧,执行操作以初始化粒子位置,并且更新粒子位置。
[0168] 调整计算着色器或几何着色器9460的输出以实现对粒子系统的非注视点处理。不需要对粒子系统的进一步缩减或对粒子系统的调整来渲染处于外围区域中的粒子系统。着色器9460的输出可以包括粒子系统的图元(例如,多边形)。举例来说,可以将输出存储在顶点缓冲器中,随后将所述输出输入到可编程处理器9404(例如,顶点着色器9410’)。也就是说,可以在图7B中示出的图形管线9400B的多个级之间共享顶点缓冲器中的值。当在GPU配置内实施时,剩余的部件(例如,光栅化器、片元着色器,以及包括输出合并器和帧缓冲器的渲染器)是闲置的,使得随后递送来自着色器9460的输出,和/或使所述输出与处理器9404共享以执行包括渲染的更多传统的GPU操作。
[0169] 更具体地,如先前描述,顶点着色器9410’直接接收输入几何图形9405和/或从处理器9403接收所述输入几何图形,并且构建多边形或图元,所述多边形或图元构成3D场景内的对象。如果处理器9403未完成,那么顶点着色器9410’可以进一步构建所模拟的粒子系统的图元。也就是说,顶点着色器9410’在对象置于游戏世界内时使用图元来建立所述对象。举例来说,顶点着色器9410’可以被配置成执行所述多边形的照明和阴影计算,这取决于所述场景的照明。顶点处理器9410’输出图元并且将所述图元递送到图形管线9400B的下一级。顶点处理器9410’还可以执行额外的操作,例如裁剪(例如,识别和忽视在由游戏世界中的观看位置界定的视锥之外的图元)。
[0170] 将由顶点处理器9410’输出的图元馈送到光栅化器9420中,所述光栅化器被配置成将场景中的对象投影到由3D游戏世界中的观看位置(例如,相机位置、用户眼睛位置等)界定的二维(2D)图像平面。当由粒子系统产生的效果(先前由计算着色器9403执行)处于外围区域中时,这些图元包括粒子子系统(例如,而不是全部粒子)。而且,当由粒子系统产生的效果处于中心凹区域中时,图元可以包括整个粒子系统,从而以较高分辨率渲染所述粒子系统。
[0171] 如先前描述,光栅化器9420看向每个图元并且确定哪些像素受到对应的图元影响。具体来说,光栅化器9420将所述图元分割成像素大小的片元,其中每个片元对应于显示器中的像素和/或与渲染视角(例如,相机视野)相关联的参考平面。一个或多个片元可能会在显示图像时贡献于对应像素的色彩。
[0172] 其核心处的注视点片元着色器9430对所述片元执行着色操作,以确定图元的色彩和亮度如何随可用的照明而变。举例来说,片元着色器9430可以确定每个片元的深度、色彩、法线和纹理坐标(例如,纹理细节),并且可以进一步确定所述片元的适当水平的光、暗度和色彩。具体来说,片元着色器9430计算每个片元的特征,包括色彩和其他属性(例如,距观看位置的距离的z深度,以及透明度的α值)。另外,片元着色器9430基于影响对应片元的可用的照明来向所述片元施加照明效果。此外,片元着色器9430可以针对每个片元施加阴影效果。片元处理器9430的输出包括经过处理的片元(例如,纹理和着色信息),并且将所述输出递送到图形管线9400的下一级。因为顶点着色器9460先前已确定何时应缩减粒子系统,所以当粒子系统处于外围区域中时,注视点片元着色器9430的输入已经被恰当地聚类和聚合。也就是说,依据粒子系统的片元是在中心凹区域之内还是之外而不同地渲染所述片元。因此,可编程着色器9404的图形管线的其余部件被配置成在由粒子系统产生的效果处于中心凹区域中时渲染粒子系统中的全部粒子。而且,可编程着色器9404的图形管线的其余部件被配置成在所述效果处于外围区域中时渲染粒子子系统。
[0173] 输出合并部件9440依据贡献和/或影响每个对应像素的片元来计算每个像素的特征。也就是说,3D游戏世界中的所有图元的片元被组合成显示器的2D彩色像素。举例来说,贡献于对应像素的纹理和着色信息的片元经过组合以输出像素的最终色彩值,所述最终色彩值被递送到图形管线9400B中的下一级。输出合并部件9440可以执行在由片元处理器9430确定的片元和/或像素之间的值的任选的混合。
[0174] 显示器9455中的每个像素的色彩值存储在帧缓冲器9450中。在显示场景的对应图像时将这些值扫描到对应的像素。具体来说,显示器从每个像素的帧缓冲器逐行地、从左到右或从右到左、自上而下或自下而上或以任何其他模式读取色彩值,并且在显示图像时使用那些像素值来照亮像素。
[0175] 另外,对于图7A和图7B的系统和图形管线,可以实施额外的方法来用于非注视点渲染。在一个实施例中,与在系统位于中心凹区域中的情况相比,可以较不频繁地更新位于外围区域中的粒子系统。举例来说,可以按照较低的帧/秒执行通过粒子系统模拟所模拟的服装动画。在另一实施例中,当粒子系统位于外围区域中时,可以使用较不密集的网来产生和/或渲染通过网表示的粒子系统。举例来说,当位于中心凹区域之外时,可以使用较不密集的网来表示水。
[0176] 在详细描述了经由网络通信的游戏服务器和客户端装置的各种模块的情况下,图8的流程图9500公开了根据本公开的一个实施例的用于实施被配置成执行包括对大量粒子(例如,多于一万)的模拟的注视点渲染的图形管线的方法,其中依据粒子系统的绘制效果是位于中心凹区域内还是外围区域内而使用整个粒子系统或通过粒子聚类和聚合而产生的粒子子系统对粒子系统进行模拟并随后渲染。虽然图8的方法尤其适合于大量粒子的粒子模拟,但在一个实施例中,所述方法还适合于更小数目个粒子(例如,少于一万)的粒子模拟。如先前描述,在渲染图像时在客户端装置或基于云的游戏系统内实施流程图9500。在一个实现方式中,所述客户端装置是游戏控制台(gaming console)(还称为游戏控制台(game console))。
[0177] 在9510处,所述方法包括产生粒子系统,其中所述粒子系统产生虚拟场景(例如,所显示的3D游戏世界的图像)中的效果。所述粒子系统包括多个粒子几何图形(例如,顶点、多边形、三角形等)。具体来说,将粒子的多个顶点输入到图形管线。由所述几何图形产生多个粒子几何图形(例如,多边形)。因为所述粒子系统受到限制,所以使用全部粒子执行模拟。也就是说,使用粒子几何图形模拟所述效果。
[0178] 然而,当所述效果位于外围区域中时,在模拟之前缩减粒子系统。具体来说,在9530处,所述方法包括在渲染所述虚拟场景的图像时确定中心凹区域,其中所述中心凹区域可以对应于用户的注意力指向处(例如,假设或跟踪)。中心凹区域可以与以最高分辨率渲染表面(使用全部粒子渲染粒子系统,并且当处于外围区域中时使用粒子子系统渲染粒子系统)相关联。举例来说,图4B的注视点确定器462可以被配置成执行9530的操作。
[0179] 在9540处,所述方法包括确定所述效果的至少一个部分位于所述图像的外围区域中。举例来说,可以确定至少一个粒子或粒子几何图形(例如,多边形、片元等)处于外围区域中。具体来说,在9542处,所述方法包括界定粒子系统的边界框。在9544处,所述方法包括当所述边界框在中心凹区域之外(即,在外围区域之内)时确定所述粒子系统处于外围区域中。
[0180] 在那种情况下,所述方法包括在9520处从粒子系统确定粒子子系统。所述粒子子系统包括基于粒子系统的多个粒子几何图形的粒子几何图形子集。举例来说,图4B的子系统粒子产生器470被配置成执行粒子的缩减。具体来说,通过在9525处产生多个粒子群集来执行所述缩减,如先前关于图4B所描述。具体来说,在9526处通过对应的聚合粒子表示所述群集中的每一者,其中所述粒子子系统包括聚合粒子并且是使用聚合粒子构成。举例来说,聚合粒子具有作为对应群集中的粒子的特性的平均值的特性。也就是说,聚合粒子具有距离、色彩等的平均值的特性。具体来说,所述聚合粒子可以包括作为群集中的粒子的平均位置的新的位置。聚合粒子可以具有聚合质量,通过对对应群集中的粒子的质量求和来确定所述聚合质量。聚合光源的新的色彩可以是群集中的每个粒子的色彩的平均值或加权和。对其他视觉性质进行聚合以包括(非限制):色彩、α值、材料等。
[0181] 另外,所述方法可以包括基于与粒子子系统相对应的缩减比率来按比例放大粒子子集中的每一者的大小,如先前描述。此外,例如,可以通过应用经修改的α值基于所述缩减比率使粒子子系统中的每一者的色彩变暗,如先前描述。可以修改其他视觉性质(例如,材料等)以维持期望的感知连续性。
[0182] 此时,缩减粒子系统以进行模拟和渲染。不需要进一步的缩减来适应外围区域中的粒子系统。因此,使用全部粒子来模拟和渲染中心凹区域中的粒子系统。而且,当确定效果的至少一部分处于外围区域中时,在9550处,所述方法包括通过图形管线的其余级来渲染与粒子子系统相对应的粒子几何图形子集。
[0183] 图9是根据本公开的一个实施例的从用于模拟图像中的效果的粒子系统9610产生粒子子系统9620的说明。可以使用粒子系统来创建众多类型的物理效果和非物理效果,例如火、烟雾、火箭喷焰、水、魔法咒语等。如所示,粒子系统9610包括多个粒子。举例来说,小的系统可以包括约一万个粒子,而更大的系统可以包括多于一万个粒子(例如,数百万)。如先前描述,依据是在图像的中心凹区域之内还是之外显示由粒子系统产生的效果而不同地模拟和/或渲染粒子系统。具体来说,当所述效果处于外围区域中时,模拟和/或渲染粒子子系统9610。如所示,粒子子系统9610具有减小数目个粒子。举例来说,可以通过随机选择(例如,对索引的随机选择)或通过聚类和聚合来缩减粒子子系统9610。因此,通过仿真和/或渲染粒子子系统来减少用于在对应图像的外围区域中渲染由粒子系统产生的效果所需的计算。
[0184] 在一个实施例中,计算机系统包括处理器和存储器,所述存储器耦合到所述处理器并且具有存储在其中的指令,所述指令在由所述计算机系统执行时致使所述计算机系统执行用于实施图形管线的方法。所述方法包括产生在虚拟场景中创建效果的粒子系统,所述粒子系统包括多个粒子几何图形。所述方法还包括从所述粒子系统确定粒子子系统,所述粒子子系统包括从所述多个粒子几何图形取得的粒子几何图形子集。所述方法还包括在渲染所述虚拟场景的图像时确定中心凹区域,其中所述中心凹区域对应于用户的注意力指向处。所述方法还包括确定所述效果的至少一个部分位于所述图像的外围区域中。所述方法还包括渲染所述粒子子系统以产生所述效果。
[0185] 在另一实施例中,在由所述计算机系统执行的所述方法中所述确定粒子子系统包括将多个粒子顶点输入到图形管线中。在所述方法中所述确定粒子子系统还包括从所述多个粒子顶点产生多个粒子几何图形。在所述方法中所述确定粒子子系统还包括使用所述多个粒子几何图形模拟所述效果。在所述方法中所述确定粒子子系统还包括对所述多个粒子进行取样以产生粒子子系统。在所述方法中所述确定粒子子系统还包括渲染与粒子子系统相对应的粒子几何图形子集。
[0186] 在另一实施例中,所述方法还包括给所述多个粒子几何图形的顶点编制索引。在所述方法中,所述对所述多个粒子进行取样还包括产生包括将要渲染的粒子几何图形子集的绘制列表。在所述方法中,所述渲染所述粒子几何图形子集还包括当第一粒子几何图形的顶点与所述绘制列表中的索引相关联时渲染所述顶点。
[0187] 在另一实施例中,所述方法还包括基于与所述子集相对应的缩减比率而按比例放大粒子子系统中的每一者的大小。所述方法还包括修改粒子的视觉性质以维持期望的感知连续性。
[0188] 在另一实施例中,在所述方法中所述确定所述粒子子系统还包括确定所述粒子系统的至少一个粒子处于外围区域中。在所述方法中所述确定所述粒子子系统还包括从粒子系统产生多个粒子群集,其中通过对应的聚合粒子表示所述群集中的每一者,其中所述粒子子系统包括所述聚合粒子。在所述方法中所述确定粒子子系统还包括使用所述粒子子系统模拟所述效果。
[0189] 在另一实施例中,所述方法还包括界定所述粒子系统的边界框。所述方法还包括确定所述边界框处于外围区域中。
[0190] 在另一实施例中,所述方法还包括使用最近邻搜索或k-均值聚类技术来产生所述多个粒子群集。
[0191] 在另一实施例中,所述方法还包括通过对对应的粒子群集中的粒子的位置求平均来确定对应的聚合粒子的聚合位置。所述方法还包括通过对对应的粒子群集中的粒子的质量求和来确定对应的聚合粒子的聚合质量。所述方法还包括基于与粒子子系统相对应的缩减比率来缩放对应的聚合粒子的大小。所述方法还包括确定对应的聚合粒子的聚合视觉性质。
[0192] 在另一实施例中,非暂时性计算机可读介质存储用于实施图形管线的计算机程序。所述计算机可读介质包括用于产生在虚拟场景中创建效果的粒子系统的程序指令,所述粒子系统包括多个粒子几何图形。所述计算机可读介质还包括用于从所述粒子系统确定粒子子系统的程序指令,所述粒子子系统包括从所述多个粒子几何图形取得的粒子几何图形子集。所述计算机可读介质还包括用于在渲染所述虚拟场景的图像时确定中心凹区域的程序指令,其中所述中心凹区域对应于用户的注意力指向处。所述计算机可读介质还包括用于确定所述效果的至少一个部分位于所述图像的外围区域中的程序指令。所述计算机可读介质还包括用于渲染所述粒子子系统以产生所述效果的程序指令。
[0193] 在另一实施例中,在非暂时性计算机可读介质中,所述用于确定粒子子系统的程序指令还包括用于将多个粒子顶点输入到图形管线中的程序指令。所述用于确定粒子子系统的程序指令还包括用于从所述多个粒子顶点产生多个粒子几何图形的程序指令。所述用于确定粒子子系统的程序指令还包括用于使用多个粒子几何图形来模拟效果的程序指令。所述用于确定粒子子系统的程序指令还包括用于对多个粒子进行取样以产生粒子子系统的程序指令。所述用于确定粒子子系统的程序指令还包括用于渲染与粒子子系统相对应的粒子几何图形子集的程序指令。
[0194] 在另一实施例中,所述非暂时性计算机可读介质还包括用于给所述多个粒子几何图形的顶点编制索引的程序指令。在所述非暂时性计算机可读介质中,所述用于对所述多个粒子进行取样的程序指令还包括用于产生包括将要渲染的粒子几何图形子集的绘制列表的程序指令。在所述非暂时性计算机可读介质中,所述用于渲染所述粒子几何图形子集的程序指令还包括用于当第一粒子几何图形的顶点与所述绘制列表中的索引相关联时渲染所述顶点的程序指令。所述非暂时性计算机可读介质还包括用于基于与所述子集相对应的缩减比率而按比例放大粒子子系统中的每一者的大小的程序指令。所述非暂时性计算机可读介质还包括用于修改粒子的视觉性质以维持期望的感知连续性的程序指令。
[0195] 在另一实施例中,在所述计算机可读介质中,所述用于确定所述粒子子系统的程序指令还包括用于确定所述粒子系统的至少一个粒子处于外围区域中的程序指令。在所述计算机可读介质中,所述用于确定所述粒子子系统的程序指令还包括用于从粒子系统产生多个粒子群集的程序指令,其中通过对应的聚合粒子表示所述群集中的每一者,其中所述粒子子系统包括所述聚合粒子。在所述计算机可读介质中,所述用于确定所述粒子子系统的程序指令还包括用于使用粒子子系统来模拟效果的程序指令。
[0196] 在另一实施例中,所述计算机可读介质还包括用于界定所述粒子系统的边界框的程序指令。所述计算机可读介质还包括用于确定所述边界框处于外围区域中的程序指令。
[0197] 在另一实施例中,所述计算机可读介质还包括用于使用最近邻搜索或k-均值聚类技术来产生所述多个粒子群集的程序指令。
[0198] 在另一实施例中,所述计算机可读介质还包括用于通过对对应的粒子群集中的粒子的位置求平均来确定对应的聚合粒子的聚合位置的程序指令。所述计算机可读介质还包括用于通过对对应的粒子群集中的粒子的质量求和来确定对应的聚合粒子的聚合质量的程序指令。所述计算机可读介质还包括用于基于与粒子子系统相对应的缩减比率来缩放对应的聚合粒子的大小的程序指令。所述计算机可读介质还包括用于确定对应的聚合粒子的聚合视觉性质的程序指令。
[0199] 虽然已经提供了演示被配置成执行注视点渲染的视频渲染系统的图形处理器的实现方式的特定实施例,其中使用高分辨率渲染中心凹区域中的图像的部分,并且使用较低的分辨率渲染外围区域中的部分(例如,使用聚合光源渲染,或者通过在模拟中使用更小数目个粒子来实现相同的效果),但是通过示例而非通过限制的方式描述这些。已经阅读了本公开的本领域技术人员将认识到落在本公开的精神和范围之内的额外实施例。
[0200] 应注意,经由较广的地理区域递送的访问服务(例如,提供对当前实施例的游戏的访问)常常使用云计算。云计算是其中经由互联网将动态可缩放且常常虚拟化的资源提供为服务的一类型计算。用户不需要在支持他们的“云”中的技术基础结构方面是专家。可以将云计算划分为不同的服务,例如基础结构即服务(IaaS)、平台即服务(PaaS)和软件即服务(SaaS)。云计算服务常常在线提供从网络浏览器访问的普通应用(例如,视频游戏),而软件和数据存储在云中的服务器上。基于在计算机网络中如何描绘互联网,术语云用作互联网的隐喻,并且是其隐藏的复杂基础结构的抽象化。
[0201] 游戏处理服务器(GPS)(或简称为“游戏服务器”)由游戏客户端使用以玩单玩家和多玩家视频游戏。在互联网上玩的大多数视频游戏经由到游戏服务器的连接进行操作。通常,游戏使用专用的服务器应用,其从玩家收集数据并且向其他玩家分发所述数据。这比对等布置更高效和有效,但是其需要单独的服务器来操控服务器应用。在另一实施例中,GPS在玩家之间建立通信,并且它们的相应玩游戏装置在不依赖于集中的GPS的情况下交换信息。
[0202] 专用的GPS是独立于客户端而运行的服务器。此类服务器通常在位于数据中心中的专用硬件上运行,从而提供更多的带宽和专用的处理能力。专用服务器是针对大多数基于PC的多玩家游戏来操控游戏服务器的优选方法。大量多玩家在线游戏在通常由拥有游戏产权的软件公司操控的专用服务器上运行,从而允许它们控制和更新内容。
[0203] 用户使用客户端装置访问远程服务,所述客户端装置至少包括CPU、显示器和I/O。所述客户端装置可以是PC、移动电话、上网本、PDA等。在一个实施例中,在游戏服务器上执行的网络辨识客户端所使用的装置的类型,并且调整所采用的通信方法。在其他情况下,客户端装置使用标准的通信方法(例如,html)经由互联网来访问游戏服务器上的应用。
[0204] 可以使用各种计算机系统配置来实践本公开的实施例,包括手持式装置、微处理器系统、基于微处理器或可编程的消费者电子器件、小型计算机、主机计算机等。还可以在分布式计算环境中实践本公开,其中通过经由有线网络或无线网络链接的远程处理装置来执行任务。
[0205] 应了解,可针对特定平台和特定相关联的控制器装置来开发给定视频游戏。然而,当经由如本文呈现的游戏云系统使得可以使用此类游戏时,用户可能使用不同的控制器装置来访问视频游戏。举例来说,可能已经针对游戏控制台及其相关联的控制器开发出游戏,而用户可能从利用键盘和鼠标的个人计算机访问所述游戏的基于云的版本。在此情景中,输入参数配置可以界定从可以由用户的可用控制器装置(在此情况下是键盘和鼠标)产生的输入到对于执行视频游戏可接受的输入的映射。
[0206] 在另一示例中,用户可经由平板计算装置、触摸屏智能电话,或其他触摸屏驱动的装置来访问云游戏系统。在此情况下,客户端装置和控制器装置一起集成在同一装置中,其中通过检测到的触摸屏输入/手势来提供输入。对于此装置,输入参数配置可以界定对应于视频游戏的游戏输入的特定触摸屏输入。举例来说,在视频游戏的运行期间可能显示或覆盖按钮、指向垫或其他类型的输入元件,从而在触摸屏上指示用户可以触摸以产生游戏输入的位置。在特定方向或特定触摸动作中的例如挥扫等手势也可以被检测为游戏输入。在一个实施例中,例如在开始视频游戏的游戏戏玩之前,可以将教程提供给用户,从而指示如何经由用于游戏戏玩的触摸屏来提供输入,以便使用户适应触摸屏上的控制件的操作。
[0207] 在一些实施例中,客户端装置用作控制器装置的连接点。也就是说,控制器装置经由无线连接或有线连接与客户端装置通信,以将输入从控制器装置传输到客户端装置。客户端装置继而可以处理这些输入并且随后经由网络(例如,经由例如路由器等本地连网装置进行访问)将输入数据传输到云游戏服务器。然而,在其他实施例中,控制器自身可以是连网装置,其具有经由网络将输入直接传送到云游戏服务器的能力,而不需要首先通过客户端装置传送此类输入。举例来说,控制器可能连接到本地连网装置(例如,前述路由器)以将数据发送到云游戏服务器以及从云游戏服务器接收数据。因此,虽然可能仍然需要客户端装置从基于云的视频游戏接收视频输出并且在本地显示器上渲染所述视频输出,但可以通过允许控制器经由网络绕过客户端装置将输入直接发送到云游戏服务器而减小输入等待时间。
[0208] 在一个实施例中,连网控制器和客户端装置可以被配置成将特定类型的输入从控制器直接发送到云游戏服务器,以及经由客户端装置发送其他类型的输入。可以绕过客户端装置经由网络将其检测不取决于除了控制器自身之外的任何额外的硬件或处理的输入从所述控制器直接发送到云游戏服务器。此类输入可以包括按钮输入、操纵杆输入、嵌入式运动检测输入(例如,加速度计、磁力计、陀螺仪)等。然而,可以通过客户端装置将利用额外的硬件或需要客户端装置的处理的输入发送到云游戏服务器。这些可能包括从游戏环境捕获可能由客户端装置处理的视频或音频,之后将所述视频或音频发送到云游戏服务器。另外,来自控制器的运动检测硬件的输入可能由客户端装置结合所捕获的视频进行处理以检测控制器的位置和运动,随后将通过客户端装置将所述位置和运动传送到云游戏服务器。应了解,根据各种实施例的控制器装置还可以从客户端装置接收数据(例如,反馈数据)或直接从云游戏服务器接收数据。
[0209] 应理解,可以在任何类型的客户端装置上执行本文描述的实施例。在一些实施例中,所述客户端装置是头戴式显示器(HMD)。
[0210] 图10示出说明根据本公开的实施例的头戴式显示器102的部件的图。头戴式显示器102包括用于执行程序指令的处理器1000。提供存储器1002用于存储目的,并且可以包括易失性存储器和非易失性存储器两者。包括显示器1004,所述显示器提供用户可以观看的视觉界面。提供电池1006作为头戴式显示器102的电源。运动检测模块1008可以包括各种运动敏感硬件中的任一者,例如磁力计1010A、加速度计1012和陀螺仪1014。
[0211] 加速度计是用于测量加速度和重力引发的反作用力的装置。可以使用单轴模型和多轴模型检测不同方向上的加速度的量值和方向。使用加速度计来感测倾斜度、振动和冲击。在一个实施例中,使用三个加速度计1012来提供重力的方向,其给出对两个角度(世界空间俯仰和世界空间横滚)的绝对参考。
[0212] 磁力计测量头戴式显示器的邻近的磁场的强度和方向。在一个实施例中,在头戴式显示器内使用三个磁力计1010A,从而确保对世界空间偏航角度的绝对参考。在一个实施例中,磁力计被设计成跨越地球磁场,其为±80微特斯拉。磁力计受到金属影响,并且提供与实际偏航单调的偏航测量结果。磁场可能会由于环境中的金属而歪曲,其导致偏航测量结果中的歪曲。在需要时,使用来自例如陀螺仪或相机等其他传感器的信息来校准此歪曲。在一个实施例中,加速度计1012与磁力计1010A一起使用以便获得头戴式显示器102的倾斜度和方位角。
[0213] 陀螺仪是用于基于角动量的原理来测量或维持定向的装置。在一个实施例中,在一个实施例中,三个陀螺仪1014基于惯性感测而提供关于跨相应轴线(x,y和z)的移动的信息。陀螺仪有助于检测快速的旋转。然而,陀螺仪可能在没有绝对参考的情况下随时间漂移。这需要将陀螺仪周期性地复位,这可以使用其他可用的信息来进行,例如基于对物体的视觉跟踪、加速度计、磁力计等的位置/定向确定。
[0214] 提供相机1016来捕获实际环境的图像和图像流。可以在头戴式显示器102中包括一个以上相机,包括:面向后的相机(在用户观看头戴式显示器102的显示时背向用户);以及面向前的相机(在用户观看头戴式显示器102的显示时指向用户)。另外,在头戴式显示器102中包括深度相机1018以便感测实际环境中的物体的深度信息。
[0215] 在一个实施例中,可以使用集成于HMD的前面上的相机来提供关于安全性的警报。举例来说,如果用户正在接近墙壁或物体,那么可以警告用户。在一个实施例中,可以向用户提供空间中的物理对象的轮廓视图,从而向用户警告它们的存在。所述轮廓可以是(例如)虚拟环境中的覆盖物。在一些实施例中,可以向HMD用户提供覆盖在(例如)地面中的参考标记的视图。例如,所述标记可以向用户提供用户正在其中玩游戏的空间的中心所在处的参考。这可以向用户提供(例如)用户应移动到哪里的视觉信息,以避免撞到墙壁或所述空间中的其他物体。还可以向用户提供触觉警报和/或音频警报,从而在用户佩戴HMD并且使用HMD玩游戏或导航内容时提供更多的安全性。
[0216] 头戴式显示器102包括用于提供音频输出的扬声器1020。而且,可以包括麦克风1022以便从实际世界环境捕获音频,包括来自周围环境的声音、用户发出的话音等。头戴式显示器102包括触觉反馈模块1024以便向用户提供触觉反馈。在一个实施例中,触觉反馈模块1024能够导致头戴式显示器102的移动和/或振动以便向用户提供触觉反馈。
[0217] 提供LED 1026作为头戴式显示器102的状态的视觉指示器。举例来说,LED可以指示电池电量、通电等。提供读卡器1028以使得头戴式显示器102能够从存储器卡读取信息以及将信息写入到存储器卡。包括USB接口1030作为用于启用外围装置的连接或到其他装置(例如,其他便携式装置、计算机等)的连接的接口的一个示例。在头戴式显示器102的各种实施例中,可以包括各种接口中的任一者以启用头戴式显示器102的更大的连接性。
[0218] 包括Wi-Fi模块1032以便启用经由无线连网技术到互联网的连接。而且,头戴式显示器102包括蓝牙模块1034以便启用到其他装置的无线连接。还可以包括通信链接1036以便连接到其他装置。在一个实施例中,通信链接1036利用红外传输用于无线通信。在其他实施例中,通信链接1036可以利用各种无线或有线传输协议中的任一者来用于与其他装置通信。
[0219] 包括输入按钮/传感器1038以为用户提供输入接口。可以包括各种输入接口中的任一者,例如按钮、触摸垫、操纵杆、跟踪球等。可以在头戴式显示器102中包括声波通信模块1040以便促进经由超声波技术与其他装置的通信。
[0220] 包括生物传感器1042以便启用对来自用户的生理数据的检测。在一个实施例中,生物传感器1042包括用于通过用户的皮肤来检测用户的生物电信号的一个或多个干电极
[0221] 包括光敏传感器1044以对来自置于3维物理环境中的发射器(例如,红外基站)的信号作出响应。游戏控制台分析来自光敏传感器1044和发射器的信息以确定与头戴式显示器102相关的位置和定向信息。
[0222] 已经将头戴式显示器102的前述部件描述为可以在头戴式显示器102中包括的仅示例性部件。在本公开的各种实施例中,头戴式显示器102可以包括或可以不包括各种前述部件中的一些。头戴式显示器102的实施例可以另外包括目前未描述但在本领域中已知的其他部件,以便促进本文描述的本公开的各方面。
[0223] 本领域技术人员将了解,在本公开的各种实施例中,可以结合在显示器上显示的交互式应用来利用前述手持式装置以提供各种交互功能。仅通过示例而非限制的方式提供本文描述的示例性实施例。
[0224] 图11是根据本公开的各种实施例的游戏系统1100的框图。游戏系统1100被配置成经由网络1115向一个或多个客户端1110提供视频流。游戏系统1100通常包括视频服务器系统1120和任选的游戏服务器1125。视频服务器系统1120被配置成以最小服务质量向一个或多个客户端1110提供视频流。举例来说,视频服务器系统1120可以接收改变视频游戏的状态或视频游戏内的视角的游戏命令,并且以最小滞后时间向客户端1110提供反映此状态改变的经更新的视频流。视频服务器系统1120可以被配置成按照广泛多种替代性视频格式提供所述视频流,包括已经界定的格式。此外,所述视频流可以包括被配置成以广泛多种帧速率向用户呈现的视频帧。典型的帧速率是30帧/秒、80帧/秒和820帧/秒。但在本公开的替代性实施例中包括更高或更低的帧速率。
[0225] 在本文单独地称为1110A、1110B等的客户端1110可以包括头戴式显示器、终端、个人计算机、游戏控制台、平板计算机、电话、机顶盒、信息站、无线装置、数字垫、独立装置、手持式玩游戏装置等等。通常,客户端1110被配置成接收经编码的视频流(即,经压缩)、解码所述视频流,并且向用户(例如,游戏玩家)呈现所得的视频。接收经编码的视频流和/或解码所述视频流的过程通常包括将个别视频帧存储在客户端的接收缓冲器中。可以在与客户端1110成一体的显示器上或在例如监视器或电视等单独的装置上向用户呈现视频流。客户端1110任选地被配置成支持一个以上游戏玩家。举例来说,游戏控制台可以被配置成支持两个、三个、四个或更多个同时的玩家。这些玩家中的每一者可以接收单独的视频流,或者单个视频流可以包括特定针对每个玩家而产生(例如,基于每个玩家的视角而产生)的帧的区域。客户端1110任选地是在地理上分散的。在游戏系统1100中包括的客户端的数目可以广泛地变化,从一个或两个到数千个、数万个,或更多。如本文所使用,使用术语“游戏玩家”来指玩游戏的人,并且使用术语“玩游戏装置”来指用于玩游戏的装置。在一些实施例中,玩游戏装置可以指进行协作以便向用户递送游戏体验的多个计算装置。举例来说,游戏控制台和HMD可以与视频服务器系统1120进行协作以便递送通过HMD观看的游戏。在一个实施例中,游戏控制台从视频服务器系统1120接收视频流,并且游戏控制台将所述视频流或对所述视频流的更新转发到HMD进行渲染。
[0226] 客户端1110被配置成经由网络1115接收视频流。网络1115可以是任何类型的通信网络,包括电话网络、互联网、无线网络、电力线网络、局域网、广域网、专用网络等等。在典型的实施例中,经由例如TCP/IP或UDP/IP等标准协议传送视频流。可替代地,经由专有标准传送视频流。
[0227] 客户端1110的典型示例是个人计算机,所述个人计算机包括处理器、非易失性存储器、显示器、解码逻辑、网络通信能力和输入装置。解码逻辑可以包括硬件、固件,和/或存储在计算机可读介质上的软件。用于解码(和编码)视频流的系统在本领域中是众所周知的,并且依据所使用的特定编码方案而变。
[0228] 客户端1110可以(但不要求)还包括被配置成修改所接收的视频的系统。举例来说,客户端可以被配置成执行进一步的渲染、将一个视频图像覆盖在另一视频图像上、修剪视频图像,等等。举例来说,客户端1110可以被配置成接收各种类型的视频帧,例如I帧、P帧和B帧,并且将这些帧处理成图像以便向用户显示。在一些实施例中,客户端1110的构件被配置成对视频流执行进一步的渲染、着色、转换为3-D或类似的操作。客户端1110的构件任选地被配置成接收一个以上音频或视频流。客户端1110的输入装置包括(例如)单手游戏控制器、双手游戏控制器、手势辨识系统、注视辨识系统、语音辨识系统、键盘、操纵杆、指向装置、力反馈装置、运动和/或位置感测装置、鼠标、触摸屏、神经接口、相机、已经开发的输入装置,等等。
[0229] 通过视频服务器系统1120产生和提供由客户端1110接收的视频流(和任选地音频流)。如本文在其他地方进一步描述,此视频流包括视频帧(并且音频流包括音频帧)。视频帧被配置成(例如,它们包括适当的数据结构中的像素信息)有意义地贡献于向用户显示的图像。如本文所使用,术语“视频帧”用于指主要包括被配置成贡献于(例如,影响)向用户示出的图像的信息的帧。本文关于“视频帧”的大多数教导还可以应用于“音频帧”。
[0230] 客户端1110通常被配置成从用户接收输入。这些输入可以包括被配置成改变视频游戏的状态或者以其他方式影响游戏的游戏命令。可以使用输入装置接收所述游戏命令,和/或可以通过在客户端1110上执行的计算指令自动产生所述游戏命令。经由网络1115将所接收的游戏命令从客户端1110传送到视频服务器系统1120和/或游戏服务器1125。举例来说,在一些实施例中,经由视频服务器系统1120将所述游戏命令传送到游戏服务器1125。在一些实施例中,将游戏命令的单独的副本从客户端1110传送到游戏服务器1125和视频服务器系统1120。对游戏命令的传送任选地取决于命令的身份。通过用于向客户端1110A提供音频流或视频流的不同路线或通信信道从客户端1110A传送游戏命令。
[0231] 任选地通过与视频服务器系统1120不同的实体操作游戏服务器1125。举例来说,可以通过多玩家游戏的发布者操作游戏服务器1125。在此示例中,视频服务器系统1120任选地被游戏服务器1125视为客户端,并且任选地被配置成从游戏服务器1125的视角来看显得是执行现有技术游戏引擎的现有技术客户端。视频服务器系统1120与游戏服务器1125之间的通信任选地经由网络1115进行。因此,游戏服务器1125可以是向多个客户端发送游戏状态信息的现有技术多玩家游戏服务器,所述多个客户端中的一者是游戏服务器系统1120。视频服务器系统1120可以被配置成同时与游戏服务器1125的多个例子通信。举例来说,视频服务器系统1120可以被配置成向不同用户提供多个不同的视频游戏。这些不同的视频游戏中的每一者可以由不同的游戏服务器1125支持和/或由不同的实体发布。在一些实施例中,视频服务器系统1120的若干在地理上分布的例子被配置成向多个不同的用户提供游戏视频。视频服务器系统1120的这些例子中的每一者可以与游戏服务器1125的同一例子通信。视频服务器系统1120与一个或多个游戏服务器1125之间的通信任选地经由专用的通信信道进行。举例来说,视频服务器系统1120可以经由专用于这两个系统之间的通信的高带宽信道而连接到游戏服务器1125。
[0232] 视频服务器系统1120至少包括视频源1130、I/O装置1145、处理器1150和非暂时性存储装置1155。视频服务器系统1120可以包括一个计算装置或分布在多个计算装置之间。这些计算装置任选地经由例如局域网等通信系统进行连接。
[0233] 视频源1130被配置成提供视频流,例如串流视频或形成移动图片的一系列视频帧。在一些实施例中,视频源1130包括视频游戏引擎和渲染逻辑。所述视频游戏引擎被配置成从玩家接收游戏命令,并且基于所接收的命令来维持视频游戏的状态的副本。此游戏状态包括游戏环境中的对象的位置,并且通常包括视角。所述游戏状态还可以包括对象的性质、图像、色彩和/或纹理。
[0234] 通常基于游戏规则以及游戏命令来维持游戏状态,所述游戏命令例如为移动、转向、攻击、设定焦点、交互、使用等等。游戏引擎的部分任选地设置在游戏服务器1125内。游戏服务器1125可以基于从使用在地理上分散的客户端的多个玩家接收的游戏命令来维持游戏的状态的副本。在这些情况下,游戏服务器1125向视频源1130提供游戏状态,其中存储游戏状态的副本并且执行渲染。游戏服务器1125可以经由网络1115直接从客户端1110接收游戏命令,和/或可以经由视频服务器系统1120接收游戏命令。
[0235] 视频源1130通常包括渲染逻辑,例如,硬件、固件,和/或存储在计算机可读介质(例如,存储装置1155)上的软件。此渲染逻辑被配置成基于游戏状态而产生视频流的视频帧。所有或部分渲染逻辑任选地安置在图形处理单元(GPU)内。所述渲染逻辑通常包括被配置成基于游戏状态和视角来确定对象之间的三维空间关系和/或施加适当的纹理等的处理级。所述渲染逻辑产生原始视频,随后通常对所述原始视频进行编码,之后传送到客户端1110。举例来说,所述原始视频可以根据以下标准进行编码:Adobe 标准、.wav、H.264、H.263、On2、VP6、VC-1、WMA、Huffyuv、Lagarith、MPG-x.Xvid.FFmpeg、x264、VP6-8、realvideo、mp3等。编码过程产生视频流,所述视频流任选地经过打包以便递送到远程装置上的解码器。通过帧大小和帧速率来表征所述视频流。典型的帧大小包括800x600、
1280x720(例如,720p)、1024x768,但可以使用任何其他帧大小。帧速率是每秒的视频帧的数目。视频流可以包括不同类型的视频帧。举例来说,H.264标准包括“P”帧和“I”帧。I帧包括用于刷新显示装置上的所有宏块/像素的信息,而P帧包括用于刷新其子集的信息。P帧在数据大小方面通常比I帧小。如本文使用,术语“帧大小”打算是指帧内的像素的数目。术语“帧数据大小”用于指存储帧所需的字节的数目。
[0236] 在替代性实施例中,视频源1130包括例如相机等视频记录装置。此相机可以用于产生可以在计算机游戏的视频流中包括的延时视频或实况视频。所得的视频流任选地包括所渲染的图像和使用静态相机或摄像机记录的图像。视频源1130还可以包括被配置成存储将要包括在视频流中的先前记录的视频的存储装置。视频源1130还可以包括被配置成检测例如人等对象的运动或位置的运动或定位感测装置,和被配置成基于检测到的运动和/或位置来确定游戏状态或产生视频的逻辑。
[0237] 视频源1130任选地被配置成提供覆盖,所述覆盖被配置成置于其他视频上。举例来说,这些覆盖可以包括命令界面、登录指令、给游戏玩家的消息、其他游戏玩家的图像、其他游戏玩家的视频馈给(例如,网络摄像头视频)。在包括触摸屏界面或注视检测界面的客户端1110A的实施例中,所述覆盖可以包括虚拟键盘、操纵杆、触摸板等等。在覆盖的一个示例中,将玩家的语音覆盖在音频流上。视频源1130任选地还包括一个或多个音频源。
[0238] 在其中视频服务器系统1120被配置成基于来自一个以上玩家的输入来维持游戏状态的实施例中,每个玩家可以具有包括观看位置和方向的不同视角。视频源1130任选地被配置成基于他们的视角来提供每个玩家的单独的视频流。此外,视频源1130可以被配置成向客户端1110中的每一者提供不同的帧大小、帧数据大小和/或编码。视频源1130任选地被配置成提供3-D视频。
[0239] 针对视频服务器系统1120配置I/O装置1145以发送和/或接收信息,例如视频、命令、对信息的请求、游戏状态、注视信息、装置运动、装置位置、用户运动、客户端身份、玩家身份、游戏命令、安全信息、音频等等。I/O装置1145通常包括例如网卡或调制解调器等通信硬件。I/O装置1145被配置成与游戏服务器1125、网络1115和/或客户端1110通信。
[0240] 处理器1150被配置成执行在本文论述的视频服务器系统1120的各种部件内包括的逻辑,例如软件。举例来说,可以使用软件指令编程处理器1150以便执行视频源1130、游戏服务器1125和/或客户端限定器1160的功能。视频服务器系统1120任选地包括处理器1150的一个以上例子。还可以使用软件指令编程处理器1150以便执行由视频服务器系统
1120接收的命令,或者协调本文论述的游戏系统1100的各种元件的操作。处理器1150可以包括一个或多个硬件装置。处理器1150是电子处理器。
[0241] 存储装置1155包括非暂时性模拟存储装置和/或数字存储装置。举例来说,存储装置1155可以包括被配置成存储视频帧的模拟存储装置。存储装置1155可以包括计算机可读数字存储装置,例如硬盘驱动器、光学驱动器或固态存储装置。存储装置1155被配置成(例如,通过适当的数据结构或文件系统)存储视频帧、人工帧、包括视频帧和人工帧两者的视频流、音频帧、音频流等等。存储装置1155任选地分布在多个装置之间。在一些实施例中,存储装置1155被配置成存储本文在其他地方论述的视频源1130的软件部件。可以按照在需要时迅速提供的格式来存储这些部件。
[0242] 视频服务器系统1120任选地还包括客户端限定器1160。客户端限定器1160被配置成远程地确定客户端(例如,客户端1110A或1110B)的能力。这些能力可以包括客户端1110A自身的能力以及客户端1110A与视频服务器系统1120之间的一个或多个通信信道的能力。举例来说,客户端限定器1160可以被配置成通过网络1115测试通信信道。
[0243] 客户端限定器1160可以手动地或自动地确定(例如,发现)客户端1110A的能力。手动确定包括与客户端1110A的用户通信并且要求用户提供能力。举例来说,在一些实施例中,客户端限定器1160被配置成在客户端1110A的浏览器内显示图像、文本等等。在一个实施例中,客户端1110A是包括浏览器的HMD。在另一实施例中,客户端1110A是具有可以在HMD上显示的浏览器的游戏控制台。所显示的对象请求用户输入客户端1110A的信息,例如操作系统、处理器、视频解码器类型、网络连接类型、显示分辨率等。用户输入的信息被传送回到客户端限定器1160。
[0244] 可以(例如)通过在客户端1110A上执行代理和/或通过将测试视频发送到客户端1110A来进行自动确定。所述代理可以包括嵌入网页中或安装成插件的计算指令,例如脚本。客户端限定器1160任选地提供所述代理。在各种实施例中,所述代理可以发现客户端
1110A的处理能力、客户端1110A的解码和显示能力、客户端1110A与视频服务器系统1120之间的通信信道的滞后时间可靠性和带宽、客户端1110A的显示类型、存在于客户端1110A上的防火墙、客户端1110A的硬件、在客户端1110A上执行的软件、客户端1110A内的注册表条目等等。
[0245] 客户端限定器1160包括硬件、固件,和/或存储在计算机可读介质上的软件。客户端限定器1160任选地设置在与视频服务器系统1120的一个或多个其他元件分开的计算装置上。举例来说,在一些实施例中,客户端限定器1160被配置成确定客户端1110与视频服务器系统1120的一个以上例子之间的通信信道的特性。在这些实施例中,可以使用客户端限定器所发现的信息来确定视频服务器系统1120的哪个例子最佳地适合于将串流视频递送到客户端1110中的一者。
[0246] 应理解,可以将本文界定的各种实施例组合或聚集成使用本文公开的各种特征的特定实现方式。因此,所提供的示例仅是一些可能的示例,而非限于通过组合各种元件以界定更多的实现方式所可能的各种实现方式。在一些示例中,在不脱离所公开或等效的实现方式的精神的情况下,一些实现方式可以包括更少的元件。
[0247] 可以使用各种计算机系统配置来实践本公开的实施例,包括手持式装置、微处理器系统、基于微处理器或可编程的消费者电子器件、小型计算机、主机计算机等。本公开的实施例还可以在分布式计算环境中实践,其中通过经由基于电线的或无线的网络链接的远程处理装置来执行任务。
[0248] 在了解了以上实施例的情况下,应理解,本公开的实施例可以采用涉及计算机系统中存储的数据的各种计算机实施的操作。这些操作是需要对物理量的物理操纵的操作。形成本公开的实施例的部分的本文描述的操作中的任一者是有用的机器操作。本发明的实施例还涉及用于执行这些操作的装置或设备。所述设备可以被特别构造成用于所需的目的,或者所述设备可以是由计算机中存储的计算机程序选择性地启动或配置的通用计算机。具体来说,各种通用机器可以与根据本文的教导而编写的计算机程序一起使用,或者构造更专的设备来执行所需的操作可能会更加便利。
[0249] 本公开还可以体现为计算机可读介质上的计算机可读代码。计算机可读介质是可以存储数据的任何数据存储装置,所述数据其后可以由计算机系统读取。计算机可读介质的示例包括硬盘驱动器、网络附接存储装置(NAS)、只读存储器随机存取存储器、CD-ROM、CD-R、CD-RW、磁带,和其他光学和非光学数据存储装置。计算机可读介质可以包括计算机可读有形媒体,其分布在网络耦合的计算机系统上,使得以分布的方式存储和执行计算机可读代码。
[0250] 虽然以特定次序描述方法操作,但应理解,其他内务操作可以在操作之间执行,或者可以对操作进行调整,使得它们在略微不同的时间出现,或者可以分布在系统中,这允许处理操作以与处理相关联的各种间隔出现,只要是以期望的方式执行覆盖操作的处理即可。
[0251] 虽然已经出于理解清楚起见而稍微详细地描述了前述公开内容,但将明白,可以在所附权利要求的范围内实践某些改变和修改。因此,本实施例将被视为说明性而非限制性的,并且本公开的实施例不限于本文给出的细节,而是可以在所附权利要求的范围和等效物内修改。
高效检索全球专利

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

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

申请试用

分析报告

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

申请试用

QQ群二维码
意见反馈