场景渲染方法、装置、集群、存储介质及电子设备与流程

    专利2022-07-08  119


    本发明涉及场景渲染技术领域,具体而言,涉及一种场景渲染方法、装置、集群、存储介质及电子设备。



    背景技术:

    云游戏是以云计算为基础的游戏方式,在云游戏的运行模式下,所有的游戏逻辑和场景渲染都在服务器端执行,然后将渲染完毕的游戏音视频数据压缩后通过网络传送给用户。

    云游戏的服务器端在用户登录后会分配一个远程服务节点给用户,一个远程服务节点可以对应一台物理设备,远程服务节点负责在用户玩游戏的过程中进行游戏数据计算以及场景渲染计算等工作,高品质的游戏需要远程服务节点具备高配置的中央处理器(centralprocessingunit,简称cpu)和图形处理器(graphicsprocessingunit,简称gpu)用于处理工作。

    然而,出于成本方面的考虑,高配置设备一般难以大量部署,这导致一些远程服务节点的计算资源缺乏,因此无法有效地完成场景的渲染工作,进而导致大量玩家的渲染任务在节点处排队等候处理,严重影响玩家的游戏体验。



    技术实现要素:

    本申请实施例的目的在于提供一种场景渲染方法、装置、集群、存储介质及电子设备,以改善上述技术问题。

    为实现上述目的,本申请提供如下技术方案:

    第一方面,本申请实施例提供一种场景渲染方法,包括:渲染集群中的调度服务器从客户端接收渲染请求;所述调度服务器根据所述渲染请求确定渲染方案,并从所述渲染集群的渲染服务器中确定与所述渲染方案相匹配的目标渲染服务器;其中,所述渲染方案包括对待渲染场景进行分片的方式;所述调度服务器向每台目标渲染服务器发送其负责渲染的分片的位置信息,并向所述渲染集群中的整合服务器发送每台目标渲染服务器与其负责渲染的分片的位置信息之间的对应关系;所述目标渲染服务器将与所述分片的位置信息对应的部分场景渲染为部分视频流,并向所述整合服务器发送所述部分视频流;所述整合服务器根据每台目标渲染服务器与其负责渲染的分片的位置信息之间的对应关系,将从各目标渲染服务器接收到的部分视频流拼合为与所述待渲染场景对应的完整视频流;所述整合服务器向所述客户端发送所述完整视频流。

    在上述方法中,待渲染场景不是由单一的渲染服务器进行渲染的,而是由多台目标服务器共同渲染的,每台目标渲染服务器只负责渲染一个场景分片,从而大幅降低了单台服务器的渲染压力,提高了场景渲染效率,改善了用户体验。另外,采用此方法后,可用多台低配置的渲染服务器代替高配置的渲染服务器,有效降低了渲染集群的部署成本。

    需要指出,上述方法可用于游戏场景的渲染,但不限于用于游戏场景的渲染,对于其他三维场景的渲染也可以采用该方法。

    在第一方面的一种实现方式中,所述对待渲染场景进行分片是指:按照所述完整视频流的分辨率对所述待渲染场景进行分片;所述分片的位置信息包括:所述分片在所述完整视频流的画面中的坐标数据以及所述完整视频流的分辨率。

    对于每种渲染方案而言,最终渲染结果(即完整视频流)的分辨率(例如,720p、1080p等)是预先设定好的,因此根据该分辨率可以快速完成分片(例如,对720p的分辨率分可为2片,对1080p的分辨率可分为4片等),每个分片的坐标数据也容易计算。调度服务器将坐标数据和视频分辨率发送给目标渲染服务器后,目标渲染服务器根据这两项信息就可以确定出与坐标数据相对应的、实际要渲染的场景范围,进行对该场景范围进行渲染。

    在第一方面的一种实现方式中,所述渲染请求包括所述客户端指定的视频质量等级,所述视频质量等级表征所述客户端所需的所述完整视频流的分辨率的高低,所述调度服务器根据所述渲染请求确定渲染方案,包括:所述调度服务器根据所述视频质量等级确定渲染方案;其中,所述渲染方案中的分片数量和与其对应的所述视频质量等级正相关。

    视频质量等级反映的是用户对渲染产生的视频质量的一种需求,其与完整视频流的分辨率相对应(例如,1080p-蓝光、720p-高清等),视频质量等级越高,渲染场景所需的算力资源也越多,从而在相应的渲染方案中可以增加分片数量,将渲染任务分配给更多的渲染服务器,降低单台服务器压力。

    在第一方面的一种实现方式中,在所述调度服务器从所述渲染集群的渲染服务器中确定与所述渲染方案相匹配的目标渲染服务器之前,所述方法还包括:所述调度服务器接收所述渲染集群中的渲染服务器上报的状态信息;所述调度服务器从所述渲染集群的渲染服务器中确定与所述渲染方案相匹配的目标渲染服务器,包括:所述调度服务器根据所述状态信息从所述渲染集群的渲染服务器中确定与所述渲染方案相匹配的目标渲染服务器。

    状态信息反映渲染服务器当前的状态(例如,是否适合承接渲染任务),调度服务器不断地收集集群中渲染服务器的状态信息,并将其用于渲染方案与渲染服务器的匹配过程,有利于选择当前最适合的渲染服务器执行渲染任务,确保渲染任务的顺利执行。

    在第一方面的一种实现方式中,所述状态信息包括以下至少一项信息:所述渲染服务器是否存活;所述渲染服务器的繁忙程度;所述渲染服务器的标签,用于与所述渲染方案中针对每个分片定义的标签进行匹配。

    设置第一项信息的出发点在于:渲染服务器存活是进行场景渲染的基本要求;设置第二项信息的出发点在于:渲染服务器必须有足够的闲置算力资源分配给当前的渲染任务;设置第三项信息的出发点在于:用户可以根据需求为渲染服务器设置一些自定义标签,并将这些自定义标签用于渲染方案与渲染服务器的匹配过程,使得匹配过程的灵活度显著提高。

    在第一方面的一种实现方式中,所述渲染服务器的标签包括表征其渲染能力的标签。

    例如,对于不同配置的渲染服务器可以打上不同的标签,表明其渲染能力存在区别,这样,那些对于算力需求较高的渲染方案可以匹配到高配置的渲染服务器,而那些对于算力需求较低的渲染方案可以匹配到低配置的渲染服务器,有利于实现渲染任务的分配与服务器的硬件配置相匹配。

    在第一方面的一种实现方式中,在所述调度服务器向每台目标渲染服务器发送其负责渲染的分片的位置信息之后,以及在所述目标渲染服务器将与所述分片的位置信息对应的部分场景渲染为部分视频流之前,所述方法还包括:所述目标渲染服务器启动应用程序的实例,所述应用程序的实例在运行时产生所述待渲染场景。

    在上述实现方式中,虽然每台目标渲染服务器上都会启动一个应用程序的实例(例如,游戏实例),用于提供待渲染场景,但在每台目标渲染服务器上,只有待渲染场景的一个分片会被渲染,因此并不会消耗太多的服务器资源(算力资源的消耗主要来源于场景渲染而非运行应用程序的实例)。

    第二方面,本申请实施例提供一种场景渲染方法,应用于渲染集群中的调度服务器,所述方法包括:从客户端接收渲染请求;根据所述渲染请求确定渲染方案,并从所述渲染集群的渲染服务器中确定与所述渲染方案相匹配的目标渲染服务器;其中,所述渲染方案包括对待渲染场景进行分片的方式;向每台目标渲染服务器发送其负责渲染的分片的位置信息,并向所述渲染集群中的整合服务器发送每台目标渲染服务器与其负责渲染的分片的位置信息之间的对应关系。

    第三方面,本申请实施例提供一种场景渲染方法,应用于渲染集群中的渲染服务器,所述方法包括:从所述渲染集群中的调度服务器接收负责渲染的分片的位置信息;将与所述分片的位置信息对应的部分场景渲染为部分视频流,并向所述渲染集群中的整合服务器发送所述部分视频流。

    第四方面,本申请实施例提供一种场景渲染方法,应用于渲染集群中的整合服务器,所述方法包括:从所述渲染集群中的调度服务器接收所述渲染集群中的每台目标渲染服务器与其负责渲染的分片的位置信息之间的对应关系;从所述渲染集群中的各目标渲染服务器接收其渲染产生的部分视频流;根据每台目标渲染服务器与其负责渲染的分片的位置信息之间的对应关系,将接收到的部分视频流拼合为与待渲染场景对应的完整视频流;向客户端发送所述完整视频流。

    第五方面,本申请实施例提供一种场景渲染装置,配置于渲染集群中的调度服务器,所述装置包括:渲染请求接收模块,用于从客户端接收渲染请求;目标服务器匹配模块,用于根据所述渲染请求确定渲染方案,并从所述渲染集群的渲染服务器中确定与所述渲染方案相匹配的目标渲染服务器;其中,所述渲染方案包括对待渲染场景进行分片的方式;分片信息发送模块,用于向每台目标渲染服务器发送其负责渲染的分片的位置信息,并向所述渲染集群中的整合服务器发送每台目标渲染服务器与其负责渲染的分片的位置信息之间的对应关系。

    第六方面,本申请实施例提供一种场景渲染装置,配置于渲染集群中的渲染服务器,所述装置包括:第一分片信息接收模块,用于从所述渲染集群中的调度服务器接收负责渲染的分片的位置信息;场景渲染模块,用于将与所述分片的位置信息对应的部分场景渲染为部分视频流,并向所述渲染集群中的整合服务器发送所述部分视频流。

    第七方面,本申请实施例提供一种场景渲染装置,配置于渲染集群中的整合服务器,所述装置包括:第二分片信息接收模块,用于从所述渲染集群中的调度服务器接收所述渲染集群中的每台目标渲染服务器与其负责渲染的分片的位置信息之间的对应关系;视频流接收模块,用于从所述渲染集群中的各目标渲染服务器接收其渲染产生的部分视频流;视频流整合模块,用于根据每台目标渲染服务器与其负责渲染的分片的位置信息之间的对应关系,将接收到的部分视频流拼合为与待渲染场景对应的完整视频流;视频流发送模块,用于向客户端发送所述完整视频流。

    第八方面,本申请实施例提供一种渲染集群,包括:调度服务器、渲染服务器以及整合服务器;所述调度服务器用于:从客户端接收渲染请求,根据所述渲染请求确定渲染方案,从所述渲染服务器中确定与所述渲染方案相匹配的目标渲染服务器,并向每台目标渲染服务器发送其负责渲染的分片的位置信息,以及向所述整合服务器发送每台目标渲染服务器与其负责渲染的分片的位置信息之间的对应关系;其中,所述渲染方案包括对待渲染场景进行分片的方式;所述目标渲染服务器用于:将与所述分片的位置信息对应的部分场景渲染为部分视频流,并向所述整合服务器发送所述部分视频流;所述整合服务器用于:根据每台目标渲染服务器与其负责渲染的分片的位置信息之间的对应关系,将从各目标渲染服务器接收到的部分视频流拼合为与所述待渲染场景对应的完整视频流,并向所述客户端发送所述完整视频流。

    第九方面,本申请实施例提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序指令,所述计算机程序指令被处理器读取并运行时,执行第二方面、第三方面、第四方面或这三方面的任意一种可能的实现方式提供的方法。

    第十方面,本申请实施例提供一种电子设备,包括:存储器以及处理器,所述存储器中存储有计算机程序指令,所述计算机程序指令被所述处理器读取并运行时,执行第二方面、第三方面、第四方面或这三方面的任意一种可能的实现方式提供的方法。

    附图说明

    为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。

    图1示出了本申请实施例提供的一种渲染集群的架构图;

    图2示出了本申请实施例提供的一种场景渲染方法的流程图;

    图3示出了本申请实施例提供的一种电子设备的结构图。

    具体实施方式

    下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。

    术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

    首先说明一下本申请中渲染的含义:渲染的对象是三维场景,渲染操作可以理解为将三维场景中的模型按照设定好的环境、灯光、材质及渲染参数,投影成二维数字图像的过程。如果对连续的场景进行渲染,则渲染产生的数字图像将形成视频流。

    图1示出了本申请实施例提供的一种渲染集群的架构图。在图1示出的场景中,客户端100向渲染集群110发起渲染请求,渲染集群110将渲染后产生的视频流返回给客户端100,以使客户端100可以显示接收到的视频流。其中,客户端100既可以指用户使用的终端设备(例如,pc机、笔记本电脑、平板电脑、手机等),也可以指该终端设备上运行的客户端软件(例如,专用的客户端应用程序、浏览器等)。

    渲染集群110进一步包括调度服务器112、渲染服务器114以及整合服务器116,其中,渲染服务器114为多台,调度服务器112和整合服务器114至少各有一台。调度服务器112、渲染服务器114以及整合服务器116既可以指硬件层面的服务器设备(包括虚拟设备,如云服务器),也可以指在这些服务器设备上运行的服务器端软件。渲染集群110的具体部署方式并非只能如图1所示,例如,在其他一些实现方式中,调度服务器112和整合服务器116也可以是一台服务器,该设备上运行两项服务,分别实现调度服务器112和整合服务器116的功能,甚至也可以只运行一项服务,同时实现调度服务器112和整合服务器116的功能。

    渲染集群110的工作流程大致如下:调度服务器112到接收客户端100发送的渲染请求后,根据渲染请求确定场景分片方案,然后向渲染服务器114派发渲染场景分片的任务,渲染服务器114渲染好自己负责的分片后,将得到的视频流发送给整合服务器116,整合服务器116将收到的视频流整合后返回给客户端100。该工作流程的具体细节将在介绍图2时作进一步阐述。

    图2示出了本申请实施例提供的一种场景渲染方法的流程图,该方法可由渲染集群(例如,图1中的渲染集群110)中的服务器配合执行,其具体步骤包括:

    步骤s200:调度服务器从客户端接收渲染请求。

    客户端在有场景渲染的需求时向调度服务器发起渲染请求,例如,云游戏的客户端在启动后可以向调度服务器发起渲染请求。需要指出的是,虽然本申请的方案可用于游戏场景的渲染,但实际上涉及三维场景渲染的应用很多,并不仅仅是游戏而已,例如,虚拟仿真教学、虚拟社交等,本申请的方案也可以应用于这些场合,因此步骤s200中的客户端不仅仅限于云游戏的客户端。

    在一些实现方式中,渲染请求中可以包含客户端的标识数据,例如,客户端的ip地址、端口号、用户id等,标识数据可用于区分不同的客户端,在步骤s208中可能会使用客户端的标识数据。

    在一些实现方式中,渲染请求中还可以包含客户端指定的视频质量等级,视频质量等级表征客户端所需的视频流的分辨率的高低,或者说反映了用户对渲染产生的视频质量的一种需求。例如,视频质量等级可以包括蓝光、高清、流畅三种等级,分别对应的视频分辨率是1080p(画面尺寸1920×1080)、720p(画面尺寸1280×720)、480p(画面尺寸720×480),用户可以根据自己所处的网络环境等因素在客户端选择不同的视频质量等级,比如在云游戏客户端的设置界面中进行选择。视频质量等级可能会决定场景的渲染方案,具体见步骤s201。

    步骤s201:调度服务器根据渲染请求确定渲染方案。

    渲染方案可能有一个或多个,若只有一个渲染方案,则调度服务器在接收到渲染请求后直接采用该渲染方案即可;若有多个渲染方案可供选择,则调度服务器在接收到渲染请求后可以根据渲染请求的内容选择一个合适的渲染方案(具体例子见后文阐述)。

    渲染方案是可配置的,可以在步骤s200执行之前将渲染方案配置好并保存到调度服务器上,当然不排除在场景渲染方法的执行过程中允许对渲染方案进行修改。

    每个渲染方案中至少包括对待渲染场景进行分片的方式,所谓分片操作,是指将完整的待渲染场景拆分为多个小块(每个小块称为一个场景分片,也可以简称分片)的行为。例如,渲染方案中可以包括分片的数量、每个分片在待渲染场景中的位置信息等内容;又例如,渲染方案中也可以只包括分片的数量,每个分片在待渲染场景中的位置信息则通过分片数量和分片的形状进行推算。

    为简化描述,将完整的待渲染场景渲染得到的视频流称为完整视频流,完整视频流也就是步骤s208中返回给客户端的视频流,或者说客户端最终所需的视频流。

    进一步的,在渲染方案中可以按照完整视频流的分辨率对待渲染场景进行分片,例如,对720p的分辨率分可为2片(每片大小640×720),对1080p的分辨率可分为4片(每片大小960×540)等。由于完整视频流的画面是矩形的,所以每个分片在画面中的坐标数据容易计算,例如,对720p的情况,两个分片的坐标数据可以为(0,0,640,720),(640,0,640,720),其中,四个坐标分别表示:分片左上角在画面中的横坐标、分片左上角在画面中的纵坐标、分片的宽度以及分片的高度。

    不难看出,该分片方式实质上是切分完整视频流的画面尺寸,而不是直接切分待渲染场景,但由于完整视频流的分辨率和待渲染场景的分辨率存在换算关系,所以这样切分也等价于对待渲染场景的切分。

    在一些实现方式中,每个渲染方案对应一种视频质量等级,而根据前文阐述,视频质量等级表征完整视频流的分辨率的高低,所以也可以认为每个渲染方案对应完整视频流的一种分辨率,即,若希望渲染出此种分辨率的完整视频流,应该如何对待渲染场景进行分片。

    进一步的,在这些实现方式中,渲染方案中的分片数量和与其对应的视频质量等级正相关,即视频质量等级越高(表征完整视频流的分辨率越高),渲染方案中设置的分片数量也越多,例如,流畅—1片(1片即不对场景分片,可视为一种特殊情况)、高清—2片、蓝光—4片,等等。采取此种设计的原因在于,视频质量等级越高,渲染出此种质量的视频所需的算力资源也越多,从而在相应的渲染方案中可以增加分片数量,以便将渲染任务分配给更多的渲染服务器处理(根据后文内容可知,一台渲染服务器只负责渲染一个分片),降低单台服务器压力。

    阐述步骤s200时曾经提到,渲染请求中可以携带客户端指定的视频质量等级,若调度服务器上保存的渲染方案也与视频质量等级对应,则调度服务器在收到渲染请求后可立即确定当前要采用的渲染方案,并根据所确定的渲染方案得到各分片的位置信息,该位置信息可以包括分片在完整视频流的画面中的坐标数据以及完整视频流的分辨率。

    需要指出,由于调度服务器上并不保存待渲染的场景,因此调度服务器上得到的只是各分片的位置信息,不会产生实际的场景分片。

    步骤s202:调度服务器从渲染服务器中确定与渲染方案相匹配的目标渲染服务器。

    在步骤s201中选定渲染方案后,调度服务器需要从渲染集群中选择出与该渲染方案匹配的渲染服务器,称为目标渲染服务器。其中,每台目标渲染服务器负责一个分片的渲染工作,例如,若渲染方案中将待渲染场景分为4片,则需要确定出4台目标渲染服务器。

    在一些实现方式中,渲染方案中并不包括对渲染服务器的要求,则此时理论上渲染集群中的任何渲染服务器都可以作为目标渲染服务器。当然实际中能否作为目标渲染服务器还要看服务器本身的状态,例如,渲染服务器本身是存活且可用的。

    在另一些实现方式中,渲染方案中可以包括对渲染服务器的要求,则此时只能从渲染集群中选择满足这些要求的渲染服务器作为目标渲染服务器。例如,可以在渲染方案中针对每个分片设置一些标签(针对不同的分片设置的标签可以相同也可以不同),针对某个分片设置的标签表征对渲染该分片的渲染服务器的要求,调度服务器在确定针对某个分片的目标渲染服务器时,必须从与标签描述一致的那些渲染服务器中选择。

    对于标签的定义是用户可自由选择的,比如,可以定义表征渲染服务器渲染能力(或者说配置高低)的标签。例如,某个渲染集群中的渲染服务器分成a、b、c三种型号,渲染能力由高到低,若某渲染方案中待渲染场景分为4片,且针对每个分片都打上了标签a,则调度服务器必须寻找4台a型号的渲染服务器才能满足该场景的渲染要求。这样,那些对于算力需求较高的渲染方案可以匹配到渲染能力较强(即高配置)的渲染服务器,而那些对于算力需求较低的渲染方案可以匹配到渲染能力较弱(即低配置)的渲染服务器,有利于实现渲染任务的分配与服务器的渲染能力相匹配。当然,还可以定义其他类型的标签,例如,表征网络带宽的标签,表征在渲染过程中存在的特殊需求的标签,等等。

    在一些实现方式中,为实现与渲染方案的匹配,调度服务器可以收集来自渲染服务器的状态信息,并根据该状态信息从全部的渲染服务器中确定与渲染方案相匹配的目标渲染服务器。例如,在集群中的每台渲染服务器上可以部署代理程序(agent),定期将渲染服务器的状态信息上报给调度服务器。其中,状态信息可以反映渲染服务器当前的状态(例如,是否适合承接渲染任务),调度服务器不断地收集渲染集群中渲染服务器的状态信息,并将其用于渲染方案与渲染服务器的匹配过程,有利于选择当前最适合的渲染服务器执行渲染任务,确保渲染任务的顺利执行。

    可选的,状态信息可以包括以信息中的一项或多项:

    (1)渲染服务器是否存活。设置该项信息的出发点在于:渲染服务器存活(可以指处于运行状态)是进行场景渲染的基本要求,从而只有存活的渲染服务器才可能被确定为与渲染方案匹配的目标渲染服务器。

    (2)渲染服务器的繁忙程度。例如,繁忙程度可以包括空闲、繁忙等,若渲染服务器正在执行渲染任务则为繁忙,未执行渲染任务则为空闲。又例如,繁忙程度也可以是一个数值,表征当前渲染服务器上的算力资源被占用的情况。设置该项信息的出发点在于:渲染服务器仅当在有足够的闲置算力资源可以分配给当前的渲染任务时才能承接该任务,从而只有繁忙程度在预设程度以下的渲染服务器(例如,空闲的渲染服务器,或者,繁忙程度的数值小于某个阈值的渲染服务器)才可能被确定为与渲染方案匹配的目标渲染服务器。

    (3)渲染服务器的标签。标签的定义方式可以和上文提到的渲染方案中标签的定义方式相同,例如可以定义表征服务器渲染能力的标签等,不再重复阐述。设置该项信息的出发点在于:用户可以根据需求为渲染服务器设置一些自定义标签,并将这些自定义标签用于渲染方案与渲染服务器的匹配过程(例如,和渲染方案中定义的标签对比,相同则匹配成功),使得匹配过程的灵活度和实用价值显著提高,便于筛选出最适合执行渲染任务的渲染服务器。

    步骤s203:调度服务器向目标渲染服务器发送其负责渲染的分片的位置信息。

    步骤s204:调度服务器向整合服务器发送每台目标渲染服务器与其负责渲染的分片的位置信息之间的对应关系。

    步骤s205:目标渲染服务器将与分片的位置信息对应的部分场景渲染为部分视频流。

    以上三个步骤合并在一起阐述。

    在步骤s202中确定了与渲染方案相匹配的目标渲染服务器后,每台目标渲染服务器负责渲染的分片在调度服务器端也就确定了。

    分片的位置信息用于指示分片在待渲染场景中的位置,从而目标渲染服务器接收到其负责的分片的位置信息后,就可以获知要对待渲染场景中的哪一部分场景进行渲染,进而执行相应的渲染操作。位置信息的具体形式可以是分片的坐标数据、当前分片在全部分片中的顺序号等,在步骤s201中确定好渲染方案后,每个分片的位置信息也可以获得。

    例如,前文也提到,若在渲染方案中是按照完整视频流的分辨率对待渲染场景进行分片的,则分片的位置信息可以包括分片在完整视频流的画面中的坐标数据以及完整视频流的分辨率。目标渲染服务器根据完整视频流的分辨率与待渲染场景的分辨率之间的换算关系,就可以确定与位置信息中的坐标数据对应的、实际要渲染的场景范围,进行对该场景范围进行渲染。

    对场景渲染的结果为视频流,由于每台目标渲染服务器上只渲染完整场景的一个分片,所以可称每台目标渲染服务器渲染出来的视频流为部分视频流,和前文定义的完整视频流相对应。

    下面再说明一下待渲染场景的产生过程:待渲染场景是由运行在目标渲染服务器上的应用程序的实例(例如,游戏实例)产生的,每台目标渲染服务器在接收到调度服务器发送的分片的位置信息之后,可以启动应用程序的一个实例,用于提供待渲染场景。若待渲染场景分为多片,虽然每台目标渲染服务器都会启动一个应用程序的实例,但由于在每台目标渲染服务器上,只有待渲染场景的一个分片会被渲染,因此并不会消耗太多的服务器算力资源,因为算力资源的消耗主要来源于场景渲染而非运行应用程序的实例。

    在步骤s204中,调度服务器还会向整合服务器发送每台目标渲染服务器(这里可以指目标渲染服务器的某种标识,如ip地址等)与其负责渲染的分片的位置信息之间的对应关系,该信息会在步骤s207中被整合服务器使用。

    在一些实现方式中,步骤s204可以在步骤s203之前执行或与步骤s203并行执行;在另一些实现方式中,调度服务器也可以先执行步骤s203,在接收到目标渲染服务器的回复后(该回复可以表示目标渲染服务器接受渲染任务),才执行步骤s204。

    此外,调度服务器还可以向整合服务器发送步骤s200中从渲染请求中解析出的客户端的标识数据,以便在步骤s208中使用。

    步骤s206:目标渲染服务器向整合服务器发送部分视频流。

    步骤s207:整合服务器根据每台目标渲染服务器与其负责渲染的分片的位置信息之间的对应关系,将从各目标渲染服务器接收到的部分视频流拼合为与待渲染场景对应的完整视频流。

    步骤s208:整合服务器向客户端发送完整视频流。

    以上三个步骤合并在一起阐述。

    目标渲染服务器渲染好部分视频流后,将其发送给整合服务器。在此之前,整合服务器已经收到调度服务器在步骤s205中发送的每台目标渲染服务器与其负责渲染的分片的位置信息之间的对应关系。从而整合服务器根据当前发送部分视频流的目标渲染服务器(这里可以指目标渲染服务器的某种标识,如ip地址等)查找该对应关系,就可以获知当前收到的部分视频流应该位于完整视频流的什么位置(例如,根据位置信息中的坐标数据可以得知该位置),进而完成对部分视频流的拼合,最终得到完整视频流。整合服务器得到完整视频流后,可以根据调度服务器发送的客户端的标识数据将完整视频流返回给相应的客户端,以使客户端能够显示完整视频流,从而实现云游戏等功能。

    综上所述,在本申请实施例提供的场景渲染方法中,待渲染场景不是由单一的渲染服务器进行渲染的,而是由多台目标服务器共同渲染的,每台目标渲染服务器只负责渲染一个场景分片,从而大幅降低了单台服务器的渲染压力,提高了场景渲染效率,改善了用户体验。另外,采用此方法后,可用多台低配置的渲染服务器代替高配置的渲染服务器,有效降低了渲染集群的部署成本。需要指出,该方法可用于游戏场景的渲染,但不限于用于游戏场景的渲染,对于其他三维场景的渲染也可以采用该方法。

    此外,上面在介绍场景渲染方法时没有强调多客户端的问题,这里再补充说明一下。在一些实现方式中,若有多个客户端同时向调度服务器发起渲染请求,调度服务器可以针对每个渲染请求创建一个渲染任务,同时为该渲染任务分配一个唯一的任务id,该任务id与客户端的标识数据绑定在一起。调度服务器在执行步骤s203、s204时,也会分别向目标渲染服务器和整合服务器发送该任务id。目标渲染服务器在执行步骤s206时,除了向整合服务器发送部分视频流,也会附带上该任务id,从而整合服务器根据收到的任务id进行查找,就清楚当前收到的部分视频流是属于哪个客户端对应的渲染任务的,进而可以成功地拼合针对每个客户端的完整视频流。

    本申请实施例还提供一种场景渲染方法,应用于渲染集群中的调度服务器,所述方法包括:

    从客户端接收渲染请求;

    根据所述渲染请求确定渲染方案,并从所述渲染集群的渲染服务器中确定与所述渲染方案相匹配的目标渲染服务器;其中,所述渲染方案包括对待渲染场景进行分片的方式;

    向每台目标渲染服务器发送其负责渲染的分片的位置信息,并向所述渲染集群中的整合服务器发送每台目标渲染服务器与其负责渲染的分片的位置信息之间的对应关系。

    上述场景渲染方法及其可能的实现方式,其实现原理及产生的技术效果在前文阐述图2中的方法时已经介绍,为简要描述,未提及之处可参考前文相应内容。

    本申请实施例还提供一种场景渲染方法,应用于渲染集群中的渲染服务器,所述方法包括:

    从所述渲染集群中的调度服务器接收负责渲染的分片的位置信息;

    将与所述分片的位置信息对应的部分场景渲染为部分视频流,并向所述渲染集群中的整合服务器发送所述部分视频流。

    上述场景渲染方法及其可能的实现方式,其实现原理及产生的技术效果在前文阐述图2中的方法时已经介绍,为简要描述,未提及之处可参考前文相应内容。

    本申请实施例还提供一种场景渲染方法,应用于渲染集群中的整合服务器,所述方法包括:

    从所述渲染集群中的调度服务器接收所述渲染集群中的每台目标渲染服务器与其负责渲染的分片的位置信息之间的对应关系;

    从所述渲染集群中的各目标渲染服务器接收其渲染产生的部分视频流;

    根据每台目标渲染服务器与其负责渲染的分片的位置信息之间的对应关系,将接收到的部分视频流拼合为与待渲染场景对应的完整视频流;

    向客户端发送所述完整视频流。

    上述场景渲染方法及其可能的实现方式,其实现原理及产生的技术效果在前文阐述图2中的方法时已经介绍,为简要描述,未提及之处可参考前文相应内容。

    本申请实施例还提供一种场景渲染装置,配置于渲染集群中的调度服务器,所述装置包括:

    渲染请求接收模块,用于从客户端接收渲染请求;

    目标服务器匹配模块,用于根据所述渲染请求确定渲染方案,并从所述渲染集群的渲染服务器中确定与所述渲染方案相匹配的目标渲染服务器;其中,所述渲染方案包括对待渲染场景进行分片的方式;

    分片信息发送模块,用于向每台目标渲染服务器发送其负责渲染的分片的位置信息,并向所述渲染集群中的整合服务器发送每台目标渲染服务器与其负责渲染的分片的位置信息之间的对应关系。

    上述场景渲染装置及其可能的实现方式,其实现原理及产生的技术效果在前文阐述图2中的方法时已经介绍,为简要描述,未提及之处可参考前文相应内容。

    本申请实施例还提供一种场景渲染装置,配置于渲染集群中的渲染服务器,所述装置包括:

    第一分片信息接收模块,用于从所述渲染集群中的调度服务器接收负责渲染的分片的位置信息;

    场景渲染模块,用于将与所述分片的位置信息对应的部分场景渲染为部分视频流,并向所述渲染集群中的整合服务器发送所述部分视频流。

    上述场景渲染装置及其可能的实现方式,其实现原理及产生的技术效果在前文阐述图2中的方法时已经介绍,为简要描述,未提及之处可参考前文相应内容。

    本申请实施例还提供一种场景渲染装置,配置于渲染集群中的整合服务器,所述装置包括:

    第二分片信息接收模块,用于从所述渲染集群中的调度服务器接收所述渲染集群中的每台目标渲染服务器与其负责渲染的分片的位置信息之间的对应关系;

    视频流接收模块,用于从所述渲染集群中的各目标渲染服务器接收其渲染产生的部分视频流;

    视频流整合模块,用于根据每台目标渲染服务器与其负责渲染的分片的位置信息之间的对应关系,将接收到的部分视频流拼合为与待渲染场景对应的完整视频流;

    视频流发送模块,用于向客户端发送所述完整视频流。

    上述场景渲染装置及其可能的实现方式,其实现原理及产生的技术效果在前文阐述图2中的方法时已经介绍,为简要描述,未提及之处可参考前文相应内容。

    图3示出了本申请实施例提供的电子设备300的一种可能的结构。参照图3,电子设备300包括:处理器310、存储器320以及通信接口330,这些组件通过通信总线340和/或其他形式的连接机构(未示出)互连并相互通讯。

    其中,存储器320包括一个或多个(图中仅示出一个),其可以是,但不限于,随机存取存储器(randomaccessmemory,简称ram),只读存储器(readonlymemory,简称rom),可编程只读存储器(programmableread-onlymemory,简称prom),可擦除可编程只读存储器(erasableprogrammableread-onlymemory,简称eprom),电可擦除可编程只读存储器(electricallyerasableprogrammableread-onlymemory,简称eeprom)等。处理器310以及其他可能的组件可对存储器320进行访问,读和/或写其中的数据。

    处理器310包括一个或多个(图中仅示出一个),其可以是一种集成电路芯片,具有信号的处理能力。上述的处理器310可以是通用处理器,包括中央处理器(centralprocessingunit,简称cpu)、微控制单元(microcontrollerunit,简称mcu)、网络处理器(networkprocessor,简称np)或者其他常规处理器;还可以是专用处理器,包括神经网络处理器(neural-networkprocessingunit,简称npu)、图形处理器(graphicsprocessingunit,简称gpu)、数字信号处理器(digitalsignalprocessor,简称dsp)、专用集成电路(applicationspecificintegratedcircuits,简称asic)、现场可编程门阵列(fieldprogrammablegatearray,简称fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。

    通信接口330包括一个或多个(图中仅示出一个),可以用于和其他设备进行直接或间接地通信,以便进行数据的交互。通信接口330可以包括进行有线和/或无线通信的接口。

    在存储器320中可以存储一个或多个计算机程序指令,处理器310可以读取并运行这些计算机程序指令,以实现本申请实施例提供的场景渲染方法或其他期望的功能。

    可以理解,图3所示的结构仅为示意,电子设备300还可以包括比图3中所示更多或者更少的组件,或者具有与图3所示不同的配置。图3中所示的各组件可以采用硬件、软件或其组合实现。电子设备300可能是实体设备,例如服务器、pc机、笔记本电脑、平板电脑、手机、可穿戴设备、图像采集设备、车载设备、无人机、机器人等,也可能是虚拟设备,例如虚拟机、虚拟化容器等。并且,电子设备300也不限于单台设备,也可以是多台设备的组合或者大量设备构成的一个或多个集群。例如,前文提到的调度服务器、渲染服务器以及整合服务器均可以采用电子设备300的结构实现。

    本申请实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序指令,所述计算机程序指令被计算机的处理器读取并运行时,执行本申请实施例提供的场景渲染方法。例如,计算机可读存储介质可以实现为图3中电子设备300中的存储器320。

    在本申请所提供的实施例中,应该理解到,所揭露装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

    另外,作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

    再者,在本申请各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。

    以上所述仅为本申请的实施例而已,并不用于限制本申请的保护范围,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。


    技术特征:

    1.一种场景渲染方法,其特征在于,包括:

    渲染集群中的调度服务器从客户端接收渲染请求;

    所述调度服务器根据所述渲染请求确定渲染方案,并从所述渲染集群的渲染服务器中确定与所述渲染方案相匹配的目标渲染服务器;其中,所述渲染方案包括对待渲染场景进行分片的方式;

    所述调度服务器向每台目标渲染服务器发送其负责渲染的分片的位置信息,并向所述渲染集群中的整合服务器发送每台目标渲染服务器与其负责渲染的分片的位置信息之间的对应关系;

    所述目标渲染服务器将与所述分片的位置信息对应的部分场景渲染为部分视频流,并向所述整合服务器发送所述部分视频流;

    所述整合服务器根据每台目标渲染服务器与其负责渲染的分片的位置信息之间的对应关系,将从各目标渲染服务器接收到的部分视频流拼合为与所述待渲染场景对应的完整视频流;

    所述整合服务器向所述客户端发送所述完整视频流。

    2.根据权利要求1所述的场景渲染方法,其特征在于,所述对待渲染场景进行分片是指:按照所述完整视频流的分辨率对所述待渲染场景进行分片;

    所述分片的位置信息包括:所述分片在所述完整视频流的画面中的坐标数据以及所述完整视频流的分辨率。

    3.根据权利要求2所述的场景渲染方法,其特征在于,所述渲染请求包括所述客户端指定的视频质量等级,所述视频质量等级表征所述客户端所需的所述完整视频流的分辨率的高低,所述调度服务器根据所述渲染请求确定渲染方案,包括:

    所述调度服务器根据所述视频质量等级确定渲染方案;其中,所述渲染方案中的分片数量和与其对应的所述视频质量等级正相关。

    4.根据权利要求1所述的场景渲染方法,其特征在于,在所述调度服务器从所述渲染集群的渲染服务器中确定与所述渲染方案相匹配的目标渲染服务器之前,所述方法还包括:

    所述调度服务器接收所述渲染集群中的渲染服务器上报的状态信息;

    所述调度服务器从所述渲染集群的渲染服务器中确定与所述渲染方案相匹配的目标渲染服务器,包括:

    所述调度服务器根据所述状态信息从所述渲染集群的渲染服务器中确定与所述渲染方案相匹配的目标渲染服务器。

    5.根据权利要求4所述的场景渲染方法,其特征在于,所述状态信息包括以下至少一项信息:

    所述渲染服务器是否存活;

    所述渲染服务器的繁忙程度;

    所述渲染服务器的标签,用于与所述渲染方案中针对每个分片定义的标签进行匹配。

    6.根据权利要求5所述的场景渲染方法,其特征在于,所述渲染服务器的标签包括表征其渲染能力的标签。

    7.根据权利要求1-6中任一项所述的场景渲染方法,其特征在于,在所述调度服务器向每台目标渲染服务器发送其负责渲染的分片的位置信息之后,以及在所述目标渲染服务器将与所述分片的位置信息对应的部分场景渲染为部分视频流之前,所述方法还包括:

    所述目标渲染服务器启动应用程序的实例,所述应用程序的实例在运行时产生所述待渲染场景。

    8.一种场景渲染方法,其特征在于,应用于渲染集群中的调度服务器,所述方法包括:

    从客户端接收渲染请求;

    根据所述渲染请求确定渲染方案,并从所述渲染集群的渲染服务器中确定与所述渲染方案相匹配的目标渲染服务器;其中,所述渲染方案包括对待渲染场景进行分片的方式;

    向每台目标渲染服务器发送其负责渲染的分片的位置信息,并向所述渲染集群中的整合服务器发送每台目标渲染服务器与其负责渲染的分片的位置信息之间的对应关系。

    9.一种场景渲染方法,其特征在于,应用于渲染集群中的渲染服务器,所述方法包括:

    从所述渲染集群中的调度服务器接收负责渲染的分片的位置信息;

    将与所述分片的位置信息对应的部分场景渲染为部分视频流,并向所述渲染集群中的整合服务器发送所述部分视频流。

    10.一种场景渲染方法,其特征在于,应用于渲染集群中的整合服务器,所述方法包括:

    从所述渲染集群中的调度服务器接收所述渲染集群中的每台目标渲染服务器与其负责渲染的分片的位置信息之间的对应关系;

    从所述渲染集群中的各目标渲染服务器接收其渲染产生的部分视频流;

    根据每台目标渲染服务器与其负责渲染的分片的位置信息之间的对应关系,将接收到的部分视频流拼合为与待渲染场景对应的完整视频流;

    向客户端发送所述完整视频流。

    11.一种场景渲染装置,其特征在于,配置于渲染集群中的调度服务器,所述装置包括:

    渲染请求接收模块,用于从客户端接收渲染请求;

    目标服务器匹配模块,用于根据所述渲染请求确定渲染方案,并从所述渲染集群的渲染服务器中确定与所述渲染方案相匹配的目标渲染服务器;其中,所述渲染方案包括对待渲染场景进行分片的方式;

    分片信息发送模块,用于向每台目标渲染服务器发送其负责渲染的分片的位置信息,并向所述渲染集群中的整合服务器发送每台目标渲染服务器与其负责渲染的分片的位置信息之间的对应关系。

    12.一种场景渲染装置,其特征在于,配置于渲染集群中的渲染服务器,所述装置包括:

    第一分片信息接收模块,用于从所述渲染集群中的调度服务器接收负责渲染的分片的位置信息;

    场景渲染模块,用于将与所述分片的位置信息对应的部分场景渲染为部分视频流,并向所述渲染集群中的整合服务器发送所述部分视频流。

    13.一种场景渲染装置,其特征在于,配置于渲染集群中的整合服务器,所述装置包括:

    第二分片信息接收模块,用于从所述渲染集群中的调度服务器接收所述渲染集群中的每台目标渲染服务器与其负责渲染的分片的位置信息之间的对应关系;

    视频流接收模块,用于从所述渲染集群中的各目标渲染服务器接收其渲染产生的部分视频流;

    视频流整合模块,用于根据每台目标渲染服务器与其负责渲染的分片的位置信息之间的对应关系,将接收到的部分视频流拼合为与待渲染场景对应的完整视频流;

    视频流发送模块,用于向客户端发送所述完整视频流。

    14.一种渲染集群,其特征在于,包括:调度服务器、渲染服务器以及整合服务器;

    所述调度服务器用于:从客户端接收渲染请求,根据所述渲染请求确定渲染方案,从所述渲染服务器中确定与所述渲染方案相匹配的目标渲染服务器,并向每台目标渲染服务器发送其负责渲染的分片的位置信息,以及向所述整合服务器发送每台目标渲染服务器与其负责渲染的分片的位置信息之间的对应关系;其中,所述渲染方案包括对待渲染场景进行分片的方式;

    所述目标渲染服务器用于:将与所述分片的位置信息对应的部分场景渲染为部分视频流,并向所述整合服务器发送所述部分视频流;

    所述整合服务器用于:根据每台目标渲染服务器与其负责渲染的分片的位置信息之间的对应关系,将从各目标渲染服务器接收到的部分视频流拼合为与所述待渲染场景对应的完整视频流,并向所述客户端发送所述完整视频流。

    15.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序指令,所述计算机程序指令被处理器读取并运行时,执行如权利要求8-10中任一项所述的方法。

    16.一种电子设备,其特征在于,包括:存储器以及处理器,所述存储器中存储有计算机程序指令,所述计算机程序指令被所述处理器读取并运行时,执行如权利要求8-10中任一项所述的方法。

    技术总结
    本申请涉及场景渲染技术领域,提供一种场景渲染方法、装置、集群、存储介质及电子设备。其中,场景渲染方法应用于渲染集群,包括:调度服务器从客户端接收渲染请求,根据渲染请求确定渲染方案,并确定与渲染方案相匹配的目标渲染服务器;调度服务器向每台目标渲染服务器发送其负责渲染的分片的位置信息,并向整合服务器发送每台目标渲染服务器与其负责渲染的分片的位置信息之间的对应关系;目标渲染服务器将与分片的位置信息对应的部分场景渲染为部分视频流,并向整合服务器发送部分视频流;整合服务器将接收到的部分视频流拼合为完整视频流,并向客户端发送完整视频流。该方法提高了场景渲染效率,改善了用户体验,并降低了渲染集群的部署成本。

    技术研发人员:吴涛;覃小春;陈钇似;闫亮
    受保护的技术使用者:成都数字天空科技有限公司
    技术研发日:2020.11.26
    技术公布日:2021.03.12

    转载请注明原文地址:https://wp.8miu.com/read-15412.html

    最新回复(0)