分布式渲染方法及装置制造方法及图纸

技术编号:35282143 阅读:21 留言:0更新日期:2022-10-22 12:25
本申请公开了一种分布式渲染方法及装置,其中方法包括:获取用于渲染第一图像的渲染指令集合;对渲染指令集合中部分或全部渲染指令执行空渲染,以获得部分或全部渲染指令对应的执行状态;将第二渲染指令子集的执行状态和第一渲染指令子集发送到第一设备;其中,渲染指令集合中包括第一渲染指令子集和第二渲染指令子集,第一渲染指令子集的执行依赖于第二渲染指令子集的执行状态;第一设备用于根据第二渲染指令子集的执行状态执行第一渲染指令子集中的一个或多个渲染指令;将第二渲染指令子集发送到第二设备,第二设备用于执行第二渲染指令子集。采用该方法提升了图像渲染的效率和实时性。实时性。实时性。

【技术实现步骤摘要】
分布式渲染方法及装置


[0001]本申请涉及图像处理
,尤其涉及一种分布式渲染方法及装置。

技术介绍

[0002]随着通信技术的发展,云技术的实现也越来越得到支撑,例如云游戏,可以基于云计算技术,游戏在远程服务器上运行,终端客户不需要下载、安装、也不需要考虑终端配置,只要有网络就能玩大型游戏。同样的还有云手机等。云游戏和云手机等场景,都是重渲染场景,涉及到相应的渲染技术。
[0003]渲染是指由模型生成图像的过程。其中,模型是用语言或者数据结构进行严格定义的三维物体或虚拟场景的描述,它包括几何、视点、纹理、照明和阴影等信息。传统的渲染技术包括虚拟网络计算(virtual network computing,VNC)技术,即在云端完成所有渲染任务,并压缩,在端侧进行解压显示(视频压缩)。这种所有的渲染任务都在云端进行的模式,只会用到端侧设备的视频解码能力,而渲染能力并不会涉及。但是,现今的一些云场景的客户端,依然运行在通用的平台(如手机,个人电脑,平板电脑等),端侧设备依然有可观的渲染能力,对于这部分端侧算力的使用,可以降低云侧渲染算力的需求。为了达到这个目的,可以将渲染任务划分到两端执行,并最终合并,实现分布式渲染技术。
[0004]这种分布式渲染技术,通常按照时间序列,将渲染任务划分成多个时间段内的渲染任务,然后将每个时间段内的渲染任务分别分配给各个节点,实现分布式处理。但是这种分布式处理方式,对于每个时间段内的渲染任务,实际上仍然由单个云侧或端侧进行串行处理,实时性低,无法达成更高的分布式渲染效率。

技术实现思路

[0005]本申请实施例提供了一种分布式渲染方法及装置,通过对每个图像的渲染指令集合进行拆分获得多个渲染指令子集,并将渲染指令子集发送到不同的设备进行处理,实现更高效率的分布式渲染,提升渲染实时性。
[0006]第一方面,提供一种分布式渲染方法,该方法包括:获取用于渲染第一图像的渲染指令集合,渲染指令集合中包括多个渲染指令,渲染指令包括执行渲染的指令和参数,或者还包括渲染准备指令;对渲染指令集合中部分或全部渲染指令执行空渲染,以获得部分或全部渲染指令对应的执行状态;其中,空渲染指的是只获取渲染指令的执行状态的变化,而不进行实际的渲染;将第二渲染指令子集的执行状态和第一渲染指令子集发送到第一设备;其中,渲染指令集合中包括第一渲染指令子集和第二渲染指令子集,第一渲染指令子集和第二渲染指令子集分别包括一个或多个渲染指令,第一渲染指令子集的执行依赖于第二渲染指令子集的执行状态;第一设备用于根据第二渲染指令子集的执行状态执行第一渲染指令子集中的一个或多个渲染指令;将第二渲染指令子集发送到第二设备,第二设备用于执行第二渲染指令子集。
[0007]在本申请实施例中,通过对第一图像的渲染指令集合进行划分,获得渲染指令子
集,并将渲染指令子集以及渲染指令子集依赖的其他渲染指令子集的执行状态发送到同一个设备执行,使得设备执行该渲染指令子集中的渲染指令,获得对应的渲染结果,这个过程中不同的渲染指令子集在不同的设备上执行,实现第一图像的分布式渲染,提升了图像渲染的效率和实时性。而将每个渲染指令子集依赖的其他渲染指令子集的执行状态分发到同一个设备,可以避免渲染指令执行过程中发生错误。
[0008]本申请中,“渲染指令”既可以指用于执行渲染的指令(指令有参数的话包括参数)。有的执行渲染的指令还包括用于准备渲染的渲染准备指令。上述“渲染第一图像的渲染指令集合”可以指单纯的执行渲染的指令,也可以指包含渲染准备指令的这种执行渲染的指令。本申请中,一个渲染指令的渲染结果可以被认为是所述第一图像的一个图层。
[0009]第一方面提供的方法执行主体可以是第一设备、也可以是第二设备,也可以是另一第三设备。当执行主体是第二设备的时候,将所述第二渲染指令子集发送到第二设备意味着执行该步骤的模块将该第二渲染指令子集发送给该第二设备的渲染模块(e.g.GPU)执行渲染。
[0010]在一个可能的示例中,对渲染指令集合中部分或全部渲染指令执行空渲染,以获得部分或全部渲染指令对应的执行状态,包括:通过将渲染指令集合中部分或全部渲染指令输入状态机,由状态机执行部分或全部渲染指令;确定一个渲染指令被状态机执行完成时,渲染指令的上下文中,全局参数值的集合作为渲染指令的执行状态。
[0011]在一个可能的示例中,当第二渲染指令子集包括一个渲染指令时,第二渲染指令子集的执行状态为渲染指令的执行状态;当第二渲染指令子集包括多个顺序执行的渲染指令时,第二渲染指令子集的执行状态为多个渲染指令中最后一个被执行的渲染指令的执行状态。
[0012]在一个可能的示例中,渲染指令子集根据设备的渲染能力划分,设备包括第一设备和第二设备,渲染指令子集包括第一渲染指令子集和第二渲染指令子集,渲染能力与设备执行渲染指令中的渲染任务的效率成正比。
[0013]在本申请实施例中,根据设备的渲染能力划分渲染指令子集,使得发送到不同设备的渲染指令子集能够以相近甚至相同的时间完成对渲染指令子集中的一个或多个渲染指令的执行,进一步保障了分布式渲染的效率。
[0014]在一个可能的示例中,在第一设备根据第二渲染指令子集的执行状态执行第一渲染指令子集中的一个或多个渲染指令,第二设备执行第二渲染指令子集之前,方法还包括:获取第一图像的资源创建指令和/或资源销毁指令,资源创建指令用于创建参数,资源销毁指令用于销毁资源创建指令创建的参数;将资源创建指令和/或资源销毁指令分发到第一设备和第二设备。
[0015]在一个可能的示例中,将资源创建指令和/或资源销毁指令分发到第一设备和第二设备之前,方法还包括:确定第一渲染指令和第二渲染指令的执行与资源创建指令创建的参数存在依赖关系。
[0016]在一个可能的示例中,方法还包括:从第一设备获取第一渲染结果,第一渲染结果为第一设备执行第一渲染指令子集后的结果;和/或从第二设备获取第二渲染结果,第二渲染结果为第二设备执行第二渲染指令子集后的结果;将第一渲染结果与第二渲染结果合成后获得第一图像的渲染结果。
[0017]在一个可能的示例中,方法还包括:指示第一设备获取第二设备的第二渲染结果,以及指示第一设备合成第一渲染结果和第二渲染结果;或指示第二设备获取第一设备的第一渲染结果,以及指示第二设备合成第一渲染结果和第二渲染结果,其中第一渲染结果为第一设备执行第一渲染指令子集后的结果;第二渲染结果为第二设备执行第二渲染指令子集后的结果。
[0018]在一个可能的示例中,合成第一渲染结果和第二渲染结果,包括:按照渲染指令集合以串行方式执行时第一渲染指令子集和第二渲染指令子集对应的执行顺序合成第一渲染结果和第二渲染结果。
[0019]在本申请实施例中,将第一图像的渲染指令集合划分成渲染指令子集,并将渲染指令子集发送到不同的设备进行分布式处理后,再对每个设备获得的渲染结果进行合成,在合成的过程中,按照渲染指令集合以串行方式执行时的顺序进行,可以保证合成的渲染结果的准本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种分布式渲染方法,其特征在于,所述方法包括:获取用于渲染第一图像的渲染指令集合,所述渲染指令集合中包括多个渲染指令,所述渲染指令为执行渲染的指令,或所述渲染指令包括执行渲染的指令和用于为渲染做准备的渲染准备指令;对所述渲染指令集合中部分或全部渲染指令执行空渲染,以获得所述部分或全部渲染指令对应的执行状态;其中,所述空渲染指的是只获取渲染指令的执行状态的变化,而不进行实际的渲染;将第二渲染指令子集的执行状态和第一渲染指令子集发送到第一设备;其中,所述渲染指令集合中包括所述第一渲染指令子集和所述第二渲染指令子集,所述第一渲染指令子集和所述第二渲染指令子集分别包括一个或多个渲染指令,所述第一渲染指令子集的执行依赖于所述第二渲染指令子集的执行状态;所述第一设备用于根据所述第二渲染指令子集的执行状态执行所述第一渲染指令子集中的所述一个或多个渲染指令;将所述第二渲染指令子集发送到第二设备,所述第二设备用于执行所述第二渲染指令子集。2.根据权利要求1所述的方法,其特征在于,所述对所述渲染指令集合中部分或全部渲染指令执行空渲染,以获得所述部分或全部渲染指令对应的执行状态,包括:通过将所述渲染指令集合中部分或全部渲染指令输入状态机,由所述状态机执行所述部分或全部渲染指令;确定一个渲染指令被所述状态机执行完成时,所述渲染指令的上下文中,全局参数值的集合作为所述渲染指令的执行状态。3.根据权利要求1或2所述的方法,其特征在于,当所述第二渲染指令子集包括一个渲染指令时,所述第二渲染指令子集的执行状态为所述渲染指令的执行状态;当所述第二渲染指令子集包括多个顺序执行的渲染指令时,所述第二渲染指令子集的执行状态为所述多个渲染指令中最后一个被执行的渲染指令的执行状态。4.根据权利要求1

3任一项所述的方法,其特征在于,所述渲染指令子集根据设备的渲染能力划分,所述设备包括所述第一设备和所述第二设备,所述渲染指令子集包括所述第一渲染指令子集和所述第二渲染指令子集,所述渲染能力与所述设备执行渲染指令中的渲染任务的效率成正比。5.根据权利要求1

4任一项所述的方法,其特征在于,在所述第一设备根据所述第二渲染指令子集的执行状态执行所述第一渲染指令子集中的所述一个或多个渲染指令,所述第二设备执行所述第二渲染指令子集之前,所述方法还包括:获取所述第一图像的资源创建指令和/或资源销毁指令,所述资源创建指令用于创建所述参数,所述资源销毁指令用于销毁所述资源创建指令创建的参数;将所述资源创建指令和/或资源销毁指令发送到所述第一设备和所述第二设备。6.根据权利要求5所述的方法,其特征在于,所述将所述资源创建指令和/或资源销毁指令分发到所述第一设备和所述第二设备之前,所述方法还包括:确定所述第一渲染指令和所述第二渲染指令的执行与所述资源创建指令创建的参数存在依赖关系。
7.根据权利要求1

6任一项所述的方法,其特征在于,所述方法还包括:从所述第一设备获取第一渲染结果,所述第一渲染结果为所述第一设备执行所述第一渲染指令子集后的结果;和/或从所述第二设备获取第二渲染结果,所述第二渲染结果为所述第二设备执行所述第二渲染指令子集后的结果;将所述第一渲染结果与第二渲染结果合成后获得所述第一图像的渲染结果。8.根据权利要求1

6任一项所述的方法,其特征在于,所述方法还包括:指示所述第一设备获取所述第二设备的第二渲染结果,以及指示所述第一设备合成所述第一渲染结果和所述第二渲染结果;或指示所述第二设备获取所述第一设备的第一渲染结果,以及指示所述第二设备合成所述第一渲染结果和所述第二渲染结果,其中所述第一渲染结果为所述第一设备执行所述第一渲染指令子集后的结果;所述第二渲染结果为所述第二设备执行所述第二渲染指令子集后的结果。9.根据权利要求7或8所述的方法,其特征在于,所述合成所述第一渲染结果和所述第二渲染结果,包括:按照所述渲染指令集合以串行方式执行时第一渲染指令子集和第二渲染指令子集对应的执行顺序合成所述第一渲染结果和所述第二渲染结果。10.一种分布式渲染装置,其特征在于,所述装置包括:获取模块,用于获取用于渲染第一图像的渲染指令集合,所述渲染指令集合中包括多个渲染指令,所述渲染指令为执行渲染的指令,或所述渲染指令包括执行渲染的指令和用于为渲染做准备的渲染准备指令...

【专利技术属性】
技术研发人员:高超
申请(专利权)人:华为技术有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1