本发明技术涉及图像渲染,尤其涉及用于在3d场景的渲染期间将光信息应用于3d场景的对象的系统和方法。
背景技术:
1、游戏应用程序是一种软件程序,使用户能够在智能手机、平板电脑和个人计算机等电子设备上玩游戏。“游戏应用程序”通常包括排行榜、社交网络集成和应用程序内购买等功能,并且包括供用户进行游戏和与渲染的视觉内容进行交互的用户界面。
2、视觉内容的渲染是指在屏幕上实时创建和显示图形的过程。该过程涉及生成和渲染3d模型、纹理、光照和其它效果,以便为用户创建逼真和身临其境的游戏体验。渲染会涉及到图形引擎的使用,图形引擎是提供渲染视觉内容所需的工具和算法的软件框架。例如,该引擎可以获取3d模型和纹理等输入数据,并将数据转换为可在用户屏幕上显示的格式。在游戏应用程序中渲染视觉内容所使用的技术有多种,包括光栅化和光线追踪。光栅化涉及将3d模型渲染为一系列平面2d图像,而光线追踪涉及模拟光线与场景中的对象进行交互的方式,以创建更逼真的光照和阴影。除了这些技术之外,帧率、分辨率和抗锯齿等其它因素也可能影响渲染的视觉内容的质量。
3、在游戏应用程序中影响用户游戏体验的因素包括时延和渲染质量。首先,时延是指(i)用户(通过键盘、鼠标或触摸屏)应用控制命令与(ii)渲染图形在屏幕上显示之间的时间延迟。其次,渲染质量因特定的渲染技术等因素而异。例如,先进的光线追踪技术可以提供照片级逼真的光照效果。
4、游戏应用程序可以在客户端设备本地执行,其中,用户能够使用本地计算资源玩游戏,而无需任何云或网络计算辅助。本地执行的游戏应用程序的优点包括低时延,因为渲染算法在本地执行,并且游戏应用程序不依赖于网络/服务器连接。但是,本地gpu的计算能力相对于通过云或网络实现的能力来说较低。
5、游戏应用程序也可以通过云或网络计算执行,可进行完全服务器渲染。在完全服务器渲染方案中,客户端设备收集控制命令并将控制命令作为输入发送至服务器。然后,云服务器向客户端设备提供游戏渲染和编码,再由客户端设备对视频流进行解码并将视频流呈现给用户。完全服务器渲染方案的优点包括由于云gpu的计算能力相对较高而产生的高质量渲染。但是,完全服务器渲染方案存在高时延的问题,并且依赖于网络连接。
6、因此,人们希望改进传统的渲染方案。
技术实现思路
1、开发人员设计了用于克服现有技术方案中存在的至少一些缺点的方法和设备。
2、光照纹理技术
3、开发人员明白,渲染方案可以使用光照纹理技术执行场景重建。参考图2,指定具有多个元素(3d场景几何形状、材质、光源等)的3d场景作为输入,服务器端捕获来自场景中不同位置的入射直接光和间接光,并将捕获的信息保存在称为“光照纹理”(lighttexture,lt)的数据结构中。在客户端,对于指定的视点,预先计算的光信息(来自lt)和3d场景元素可以用于实时生成场景的全局光照渲染。光照纹理技术的优点包括高渲染质量、一次生成预先计算的光数据并能够用于大量客户端,这有利于降低渲染过程产生的每个客户端的计算成本。
4、开发人员已经意识到,光照纹理技术不太适合游戏应用程序。例如,所有对象的所有表面都需要在服务器上进行处理。在另一个示例中,光照纹理技术用于在单个纹理中捕获整个场景,这为在动态和/或大型场景中的使用带来了可扩展性限制。
5、光照探针技术
6、开发人员明白,渲染方案可以使用光照探针技术执行场景重建,在光照探针技术中,使用服务器资源辅助客户端渲染。例如,客户端可以首先将用户控制输入发送至服务器,服务器可以使用光照探针并在探针上捕获场景的光信息。探针上的数据被压缩并发送回客户端。客户端使用探针中捕获的信息渲染视点相关帧。光照探针技术的优点包括高质量的漫反射全局光照和低时延。
7、开发人员已经意识到,光照探针技术需要在服务器上部署游戏应用程序,无法处理平滑/镜面光泽反射,会导致“零”薄壁产生漏光伪影,偏置参数需要根据场景比例进行调整,并且光照探针的布置和数量需要根据场景进行调整。
8、本发明技术的开发人员已经意识到需要一种渲染方案,该渲染方案能够提供高渲染质量、低时延、使用云或网络资源作为可选的渲染服务(不需要在服务器上安装/部署游戏)、不依赖于网络连接进行游戏、能够处理动态场景,支持反射和阴影,减轻漏光和光照探针布置限制。
9、云辅助环境表面光技术
10、在本发明技术的上下文中,开发人员设计了通过使用环境表面光执行云辅助客户端渲染的计算机实现方法。广义上,游戏应用程序安装在客户端设备上,而不需要在服务器上部署游戏应用程序。根据云服务器的可用性和计算能力,客户端设备可以可选地将至少一个对象发送至服务器,服务器利用相对更强大的gpu来捕获至少一个对象的表面的光信息。然后,该表面光信息被压缩并发送回客户端设备。接收到在服务器端生成的表面光信息之后,客户端设备用于执行混合渲染过程310,以在精简设备上生成照片级逼真的图形。
11、更具体地,根据本发明技术的第一方面,提供了一种用于在客户端设备的屏幕上渲染3d场景的系统。所述系统包括通过通信网络通信耦合到所述客户端设备的云服务器。所述客户端设备包括第一处理器和存储第一指令的第一非瞬时性计算机可读介质。所述第一处理器在执行所述第一指令时用于:响应于渲染指定3d场景的渲染请求而执行以下操作,所述指定3d场景包括多个对象:根据预定规则识别所述指定3d场景中的至少一个感兴趣对象;响应于识别所述指定3d场景中的所述至少一个感兴趣对象,通过所述通信网络将表示所述至少一个感兴趣对象的数据发送至所述云服务器。此外,所述云服务器包括第二处理器和存储第二指令的第二非瞬时性计算机可读介质,所述第二处理器在执行所述第二指令时用于:从所述客户端设备接收表示指定3d场景中的所述至少一个感兴趣对象的所述数据;针对所述至少一个感兴趣对象,确定与所述至少一个感兴趣对象相关联的光信息,所述光信息指示与所述指定3d场景中的所述至少一个感兴趣对象的表面的光交互;通过所述通信网络将与所述至少一个感兴趣对象相关联的所述光信息发送至所述客户端设备;所述客户端设备的所述第一处理器还用于:从所述云服务器接收与所述至少一个感兴趣对象相关联的所述光信息;通过以下方式在所述客户端设备的所述屏幕上渲染所述指定3d场景的图像:响应于所述图像的表示所述指定3d场景中的所述至少一个感兴趣对象的指定像素,根据所述光信息对所述指定像素进行着色。
12、在所述系统的一些实现方式中,用于识别所述至少一个感兴趣对象的所述预定规则包括:如果在预定监测周期期间,所述指定3d场景中的所述多个对象中的对象的渲染更新的相应频率小于预定频率阈值,则将所述对象识别为感兴趣对象。
13、在所述系统的一些实现方式中,所述多个对象中的每一个对象的所述渲染更新的所述相应频率已经预定;在识别所述至少一个感兴趣对象之前,所述第一处理器还用于接收所述多个对象中的每一个对象的所述渲染更新的所述相应频率的数据。
14、在所述系统的一些实现方式中,所述指定3d场景是一系列3d场景中的一个3d场景;在识别所述至少一个感兴趣对象之前,所述第一处理器还用于:通过在所述预定监测周期期间监测所述一系列3d场景中在所述指定3d场景之前的至少一部分3d场景,确定所述指定3d场景中的所述多个对象中的每一个对象的所述渲染更新的所述相应频率;响应于所述多个对象中的指定对象的所述渲染更新的所述相应频率小于所述预定频率阈值,将所述指定对象识别为所述至少一个感兴趣对象。
15、在所述系统的一些实现方式中,在确定所述光信息之前,所述第二处理器用于:将所述指定3d场景内的所述至少一个感兴趣对象分组,使得:指定对象组包括在预定阈值距离内的位于其中的所述至少一个感兴趣对象中的对象;为所述指定对象组生成相应的多个2d布局,所述相应的多个2d布局中的指定2d布局包括所述指定对象组的相应表面区域,所述相应表面区域具有相应反射率值;根据所述相应反射率值,针对所述相应的多个2d布局中的所述指定2d布局,确定所述指定对象组的相应光照纹理贴图,所述相应光照纹理贴图包括红绿蓝(red green blue,rgb)值,所述rgb值指示所述指定对象组的所述相应表面区域的光强度值;在与所述指定3d场景中的所述至少一个感兴趣对象的每个对象组相关联的每个相应的多个2d布局上聚合相应光照纹理贴图,从而生成与所述至少一个感兴趣对象相关联的聚合光照纹理贴图;将与所述至少一个感兴趣对象相关联的所述光信息确定为所述聚合光照纹理贴图;为了根据所述光信息对所述指定像素进行着色,所述第一处理器用于对所述指定像素应用来自所述聚合光照纹理贴图的相应光强度值,所述相应光强度值对应于所述至少一个感兴趣对象的所述相应表面区域。
16、在所述系统的一些实现方式中,所述第一处理器用于将表示所述至少一个感兴趣对象的所述数据发送至所述云服务器,以响应确定从未为了确定所述至少一个感兴趣对象的所述光信息而将所述至少一个感兴趣对象发送至所述云服务器。
17、在所述系统的一些实现方式中,所述第一处理器用于将表示所述至少一个感兴趣对象的所述数据发送至所述云服务器,以响应在预定监测周期期间所述指定3d场景中的所述至少一个感兴趣对象的渲染更新的实例。
18、在所述系统的一些实现方式中,所述渲染更新包括所述至少一个感兴趣对象的几何形状的更新。
19、在所述系统的一些实现方式中,所述渲染更新包括以下至少一项的更新:(i)所述指定3d场景中的光源相对于所述至少一个感兴趣对象的位置(ii)所述至少一个感兴趣对象的颜色;所述第二处理器先前已确定所述至少一个感兴趣对象的先验光信息;所述第一处理器用于使所述云服务器的所述第二处理器重新确定所述至少一个感兴趣对象的所述光信息,而非发送表示所述至少一个感兴趣对象的所述数据。
20、在所述系统的一些实现方式中,在将所述光信息发送至所述客户端设备之前,所述云服务器的所述第二处理器还用于:(i)对所述光信息进行后处理(ii)对所述光信息进行压缩;在渲染所述指定3d场景的所述图像之前,所述客户端设备的所述第一处理器还用于解压缩所述光信息。
21、在所述系统的一些实现方式中,所述第二处理器用于通过对所述光信息应用降噪和超采样中的至少一个对所述光信息进行后处理。
22、此外,根据本发明技术的第二方面,提供了一种用于在客户端设备的屏幕上渲染3d场景的客户端设备。所述客户端设备包括处理器和存储指令的非瞬时性计算机可读介质。所述处理器在执行所述指令时用于:响应于在所述屏幕上渲染一系列3d场景中的指定3d场景的渲染请求而执行以下操作,所述指定3d场景包括多个对象:在预定监测周期期间,监测所述一系列3d场景中在所述指定3d场景之前的至少一部分3d场景,以识别所述指定3d场景中的至少一个感兴趣对象,所述至少一个感兴趣对象的渲染更新的相应频率在所述预定监测周期中小于预定频率阈值;响应于识别所述指定3d场景中的所述至少一个感兴趣对象,将表示所述至少一个感兴趣对象的数据发送至通信耦合到所述客户端设备的云服务器,从而使所述云服务器确定与所述指定3d场景中的所述至少一个感兴趣对象相关联的光信息,所述光信息指示与所述指定3d场景中的所述至少一个感兴趣对象的表面的光交互;从所述云服务器接收所述至少一个感兴趣对象的所述光信息;通过以下方式在所述客户端设备的所述屏幕上渲染所述指定3d场景的图像:响应于所述图像的表示所述指定3d场景中的所述至少一个感兴趣对象的指定像素,根据所述光信息对所述指定像素进行着色。
23、在所述客户端设备的一些实现方式中,所述处理器用于将表示所述至少一个感兴趣对象的所述数据发送至所述云服务器,以响应确定从未为了确定所述至少一个感兴趣对象的所述光信息而将所述至少一个感兴趣对象发送至所述云服务器。
24、在所述客户端设备的一些实现方式中,所述处理器用于将表示所述至少一个感兴趣对象的所述数据发送至所述云服务器,以响应在所述预定监测周期期间所述指定3d场景中的所述至少一个感兴趣对象的所述渲染更新的实例。
25、在所述客户端设备的一些实现方式中,所述渲染更新包括所述至少一个感兴趣对象的几何形状的更新。
26、在所述客户端设备的一些实现方式中,所述渲染更新包括以下至少一项的更新:(i)所述指定3d场景中的光源相对于所述至少一个感兴趣对象的位置(ii)所述至少一个感兴趣对象的颜色;所述云服务器先前已确定所述至少一个感兴趣对象的先验光信息;所述处理器用于使所述云服务器重新确定所述至少一个感兴趣对象的所述光信息,而非发送表示所述至少一个感兴趣对象的所述数据。
27、在所述客户端设备的一些实现方式中,所述云服务器确定的所述光信息包括光照纹理贴图,所述光照纹理贴图包括红绿蓝(red green blue,rgb)值,所述rgb值指示所述至少一个感兴趣对象的相应表面区域的光强度值;为了根据所述光信息对所述指定像素进行着色,所述处理器用于对所述指定像素应用来自所述光照纹理贴图的相应光强度值,所述相应光强度值对应于所述至少一个感兴趣对象的所述相应表面区域。
28、此外,根据本发明技术的第三方面,提供了一种用于在客户端设备的屏幕上渲染3d场景的云服务器,所述客户端设备通信耦合到所述云服务器。所述云服务器包括处理器和存储指令的非瞬时性计算机可读介质,所述处理器在执行所述指令时用于:从所述客户端设备接收表示将在所述客户端设备的屏幕上渲染的指定3d场景中的至少一个对象的数据,将所述指定3d场景内的所述至少一个对象分组,使得:指定对象组包括在预定阈值距离内的位于其中的所述至少一个对象中的对象;为所述指定对象组生成相应的多个2d布局,所述相应的多个2d布局中的指定2d布局包括所述指定对象组的相应表面区域,所述相应表面区域具有相应反射率值;根据所述相应反射率值,针对所述相应的多个2d布局中的所述指定2d布局,确定所述指定对象组的相应光照纹理贴图,所述相应光照纹理贴图包括红绿蓝(red green blue,rgb)值,所述rgb值指示所述指定对象组的所述相应表面区域的光强度值;在与所述指定3d场景中的所述至少一个对象的每个对象组相关联的每个相应的多个2d布局上聚合相应光照纹理贴图,从而生成与所述至少一个对象相关联的聚合光照纹理贴图;通过所述通信网络将所述聚合光照纹理贴图发送至所述客户端设备,以进一步使用所述聚合光照纹理贴图在所述客户端设备的所述屏幕上渲染所述指定3d场景的图像。
29、在所述云服务器的一些实现方式中,在将所述聚合光照纹理贴图发送至所述客户端设备之前,所述处理器还用于:(i)对所述聚合光照纹理贴图进行后处理(ii)对所述聚合光照纹理贴图进行压缩。
30、在所述云服务器的一些实现方式中,所述处理器用于通过对所述聚合光照纹理贴图应用降噪和超采样中的至少一个对所述聚合光照纹理贴图进行后处理。
31、此外,根据本发明技术的第四方面,提供了一种用于在客户端设备的屏幕上渲染3d场景的方法。所述方法由包括云服务器的系统实现,所述云服务器通过通信网络通信耦合到所述客户端设备。所述方法包括:响应于对所述客户端设备的渲染指定3d场景的渲染请求而执行以下操作,所述指定3d场景包括多个对象:所述客户端设备根据预定规则识别所述指定3d场景中的至少一个感兴趣对象;响应于识别所述指定3d场景中的所述至少一个感兴趣对象,所述客户端设备通过所述通信网络将表示所述至少一个感兴趣对象的数据发送至所述云服务器;所述云服务器从所述客户端设备接收表示指定3d场景中的所述至少一个感兴趣对象的所述数据;所述云服务器针对所述至少一个感兴趣对象,确定与所述至少一个感兴趣对象相关联的光信息,所述光信息指示与所述指定3d场景中的所述至少一个感兴趣对象的表面的光交互;所述云服务器通过所述通信网络将与所述至少一个感兴趣对象相关联的所述光信息发送至所述客户端设备;所述客户端设备从所述云服务器接收与所述至少一个感兴趣对象相关联的所述光信息;所述客户端设备通过以下方式在所述客户端设备的所述屏幕上渲染所述指定3d场景的图像:响应于所述图像的表示所述指定3d场景中的所述至少一个感兴趣对象的指定像素,根据所述光信息对所述指定像素进行着色。
32、在本说明书的上下文中,“服务器”是在合适的硬件上运行的计算机程序,该计算机程序能够通过网络接收(例如,来自设备的)请求,并执行这些请求,或使这些请求得以执行。硬件可以是一台物理计算机,也可以是一个物理计算机系统,但就本发明技术而言,这两种情况都不需要。在本上下文中,使用“服务器”这一表述并不表示每项任务(例如接收到的指令或请求)或任何特定任务将由同一服务器(即相同的软件和/或硬件)接收、执行或导致执行;它旨在表示任何数量的软件元素或硬件设备都可以参与接收/发送、执行或导致执行任何任务或请求,或任何任务或请求的结果;所有这些软件和硬件可以是一台服务器或多台服务器,这两者都包括在“至少一台服务器”的表述中。
33、在本说明书的上下文中,“设备”是能够运行适合手头相关任务的软件的任何计算机硬件。因此,设备的一些(非限制性)示例包括个人计算机(台式电脑、笔记本电脑、上网本等)、智能手机和平板电脑,以及路由器、交换机和网关等网络设备。需要说明的是,在本上下文中充当设备的设备并不排除充当其它设备的服务器。使用“设备”这一表述并不排除多个设备被用于接收/发送、执行或导致执行任何任务或请求,或任何任务或请求的结果,或本文描述的任何方法的步骤。
34、在本说明书的上下文中,“数据库”是任何结构化的数据集合,无论其特定结构、数据库管理软件或存储数据、实现数据或以其它方式提供数据以供使用的计算机硬件如何。数据库可以驻留在与存储或使用数据库中存储的信息的进程相同的硬件上,也可以驻留在单独的硬件上,例如专用服务器或多台服务器。可以说,数据库是以电子方式保存在计算机系统中的结构化数据的逻辑有序集合。
35、在本说明书的上下文中,“信息”这一表述包括能够存储在数据库中的任何性质或种类的信息。因此,信息包括但不限于视听作品(图像、电影、录音、演示等)、数据(位置数据、数字数据等)、文本(意见、评论、问题、消息等)、文档、电子表格、单词表等。
36、在本说明书的上下文中,“组件”这一表述表示包括(适合于特定硬件上下文的)软件,该软件对于实现所提及的一项或多项特定功能是必要的也是充分的。
37、在本说明书的上下文中,“计算机可用信息存储介质”这一表述旨在包括任何性质和种类的介质,包括ram、rom、磁盘(cd-rom、dvd、软盘、硬盘驱动器等)、usb密钥、固态硬盘、磁带驱动器等。
38、在本说明书的上下文中,“第一”、“第二”、“第三”等词语用作形容词,仅用于区分相互修饰的名词,而不是用于描述这些名词之间的任何特定关系。因此,例如,应当理解,术语“第一服务器”和“第三服务器”的使用并不旨在暗示服务器的或服务器之间的任何特定顺序、类型、时间顺序、层级或排名(等),它们的使用(本身)也不旨在表示在任何指定情况下都必须存在任何“第二服务器”。此外,如本文其它上下文中所论述的,对“第一”元素和“第二”元素的引用并不排除这两个元素是相同的实际现实世界元素。因此,例如,在一些情况下,“第一”服务器和“第二”服务器可以是相同的软件和/或硬件;在其它情况下,它们可以是不同的软件和/或硬件。
39、本发明技术的实现方式均具有上述目标和/或方面中的至少一个,但不一定具有所有这些目标和/或方面。应当理解,本发明技术的一些方面是为了试图达到上述目标,但可能并不满足该目标,也可能满足本文未具体阐述的其它目标。
40、通过以下描述、附图和所附权利要求书,本发明的实现方式的附加和/或替代特征、方面和优点是显而易见的。