HI,欢迎来到起点商标网!
24小时服务QQ:2880605093

一种基于多显卡的单帧画面实时渲染方法与流程

2021-01-11 14:01:37|286|起点商标网
一种基于多显卡的单帧画面实时渲染方法与流程

本发明涉及云游戏技术领域,具体而言,涉及一种基于多显卡的单帧画面实时渲染方法。



背景技术:

实时渲染是基于gpu的图形渲染技术,主要应用于游戏、应用程序等有实时图形界面的领域。目前的实时渲染基本都是由一个gpu来完成,由于性能足够一般用户不会有多gpu渲染支持的需求,当然用户在硬件升级阶段,新老硬件一起使用时,多gpu渲染也能充分利用硬件提升用户体验。在云游戏云主机领域,高性能cpu、多gpu是标配,需要充分利用多gpu资源来服务用户界面、游戏界面渲染的满足实时渲染需求。



技术实现要素:

为解决上述问题,本发明的目的在于提供一种区别于现有的单个gpu渲染的模式,能够更高效的使用多个gpu资源完成同一帧画面的同步渲染。

为实现上述目的,本发明提供了一种基于多显卡的单帧画面实时渲染方法,该方法包括以下步骤:

获取待渲染画面,其中,所述待渲染画面为一帧画面;

根据所述待渲染画面确定目标gpu,其中,所述目标gpu包括用于渲染所述待渲染画面的至少一个渲染gpu;

将所述待渲染画面分割为至少一个渲染部分,其中,渲染部分的数量小于或等于渲染gpu的数量;

通过所述至少一个渲染gpu渲染所述至少一个渲染部分;

将所述至少一个渲染gpu的渲染结果合成为一帧画面后输出,进行下一帧画面的渲染。

作为本发明进一步的改进,包括多个gpu,

所述根据所述待渲染画面确定目标gpu,包括:

根据所述待渲染画面的大小,从所述多个gpu中确定渲染所述待渲染画面的至少一个渲染gpu。

作为本发明进一步的改进,步骤103中,将所述待渲染画面分割为至少一个渲染部分,包括:

根据所述待渲染画面的大小和渲染gpu的数量,将所述待渲染画面分割为至少一个渲染部分。

作为本发明进一步的改进,所述待渲染画面为坐标表示的矢量图形,

将所述待渲染画面分割为至少一个渲染部分,包括:

将所述矢量图形通过几何运算和像素着色后生成位图;

根据所述位图的大小和所述渲染gpu的数量,对所述位图进行分割,得到至少一个渲染部分。

作为本发明进一步的改进,为各个渲染gpu对应分配一个交换缓冲区,

其中,所述通过所述至少一个渲染gpu渲染所述至少一个渲染部分,包括:

将一个渲染部分通过一个渲染gpu进行渲染;

将各个所述渲染gpu的渲染结果导入到对应的交换缓冲区中。

作为本发明进一步的改进,所述目标gpu还包括用于合成渲染结果的合成gpu,

其中,所述将所述至少一个渲染gpu的渲染结果合成为一帧画面后输出,包括:

从各个所述渲染gpu对应的交换缓冲区中复制各个渲染部分的渲染结果到内存;

通过所述合成gpu合成各个所述渲染部分的渲染结果。

作为本发明进一步的改进,为所述合成gpu对应分配一个交换缓冲区,

其中,所述将所述至少一个渲染gpu的渲染结果合成为一帧画面后输出,包括:

将所述合成gpu的合成渲染结果导入至所述合成gpu对应的交换缓冲区后输出。

本发明还提供了一种基于多显卡的单帧画面实时渲染系统,该系统包括:

获取单元,用于获取待渲染画面,其中,所述待渲染画面为一帧画面;

目标gpu确定单元,用于根据所述待渲染画面确定目标gpu,其中,所述目标gpu包括用于渲染所述待渲染画面的至少一个渲染gpu;

切分单元,用于将所述待渲染画面分割为至少一个渲染部分,其中,渲染部分的数量小于或等于渲染gpu的数量;

渲染单元,用于执行渲染程序,所述至少一个渲染gpu渲染所述至少一个渲染部分;

输出单元,将所述至少一个渲染gpu的渲染结果合成为一帧画面后输出。

本发明还提供了一种电子设备,包括存储器和处理器,其特征在于,所述存储器用于存储一条或多条计算机指令,其中,所述一条或多条计算机指令被处理器执行以实现如权利要求1-7中任一项所述的方法。

作为本发明进一步的改进,所述计算机程序被处理器执行以实现如权利要求1-7中任一项所述的方法。

本发明的有益效果为:通过多个gpu完成同一帧画面的渲染,能够更高效的使用多个gpu资源完成对复杂3d场景的渲染,保持高帧频,保证画面的流畅性,利用更少的资源服务更多的用户。

附图说明

图1为本发明实施例所述的一种基于多显卡的单帧画面实时渲染方法的实现流程示意图;

图2为本发明实施例所述的一种基于多显卡的单帧画面实时渲染方法的多gpu渲染结构图;

图3为本发明实施例所述的一种基于多显卡的单帧画面实时渲染方法的多gpu渲染流程图;

图4为本发明实施例所述的一种基于多显卡的单帧画面实时渲染系统的系统机构示意图。

具体实施方式

下面通过具体的实施例并结合附图对本发明做进一步的详细描述。

本发明实施例所述的一种基于多显卡的单帧画面实时渲染方法,如图1-3所示,该方法包括以下步骤:

获取待渲染画面,其中,所述待渲染画面为一帧画面;

根据所述待渲染画面确定目标gpu,其中,所述目标gpu包括用于渲染所述待渲染画面的至少一个渲染gpu;目标gpu为多个gpu中的可调配的gpu。

将所述待渲染画面分割为至少一个渲染部分,其中,渲染部分的数量小于或等于渲染gpu的数量;

通过所述至少一个渲染gpu渲染所述至少一个渲染部分;

将所述至少一个渲染gpu的渲染结果合成为一帧画面后输出,进行下一帧画面的渲染。

其中,例如获取参与渲染的n个渲染gpu,n≥1;则分割所述待渲染的一帧画面为m个渲染部分,1≤m≤n;

待渲染画面例如可以为坐标表示的矢量图形,

将所述待渲染画面分割为至少一个渲染部分,包括:

将所述矢量图形通过几何运算和像素着色后生成位图;

根据所述位图的大小和所述渲染gpu的数量,对所述位图进行分割,得到至少一个渲染部分。

一种可选的实施方式,包括多个gpu,

所述根据所述待渲染画面确定目标gpu,包括:

根据所述待渲染画面的大小,从所述多个gpu中确定渲染所述待渲染画面的至少一个渲染gpu。

一种可选的实施方式,将待渲染画面分割为至少一个渲染部分,包括:

根据所述待渲染画面的大小和渲染gpu的数量,将所述待渲染画面分割为至少一个渲染部分。

举例说明,如图2所示,针对待渲染的一帧画面,将待渲染的一帧画面分割为四个渲染部分,并通过四个渲染gpu,分别为gpu1、gpu2、gpu3和gpu4,在分配渲染任务时,记录渲染部分的标识以及相对应的渲染gpu的标识,gpu1、gpu2、gpu3和gpu4并行的执行渲染程序,渲染程序为每个渲染部分提供渲染所需的资源,渲染资源包含当前渲染部分需要使用到的模型、纹理等数据。待所有渲染gpu都完成渲染并将渲染结果输出待合成,合成器的合成gpu根据渲染部分的标识将四个渲染部分合成,合成gpu完成合成渲染后将一帧画面的渲染后的画面输出,重复上述渲染操作,实时的对场景画面进行渲染,输出流畅的帧画面。

一种可选的实施方式,目标gpu还包括用于合成渲染结果的合成gpu,

其中,将至少一个渲染gpu的渲染结果合成为一帧画面后输出,包括:从各个渲染gpu对应的交换缓冲区中复制各个渲染部分的渲染结果到内存;通过合成gpu合成各个渲染部分的渲染结果。

一种可选的实施方式,渲染gpu的数量和分割得到的渲染部分的数量相同,即n=m,一个渲染gpu对应渲染一个渲染部分,合成gpu与其中一个渲染工作量较小的渲染gpu共用一个gpu资源。以此调配不同的gpu,提升整机gpu的利用率。

一种可选的实施方式,每个所述渲染gpu对应分配一个交换缓冲区,每个所述渲染gpu包括完成图像渲染和将渲染结果导入到交换缓冲区。

进一步的,为合成gpu对应分配一个交换缓冲区,其中,将至少一个渲染gpu的渲染结果合成为一帧画面后输出,包括:将合成gpu的合成渲染结果导入至合成gpu对应的交换缓冲区后输出。

如图3所示,一个渲染gpu对应渲染一个渲染部分,每个渲染部分关联一个渲染gpu,合成gpu为一个独立的gpu,但一般不会独占一个gpu,因为工作量小,可以选择使用专用的用于显示输出的gpu进行合成,也可以由一个gpu同时进行渲染和合成。每个渲染流程包括渲染、交换缓冲区和复制gpu渲染结果到内存。合成流程包括将复制的各渲染gpu的渲染结果,发送至合成gpu完成合成渲染,合成渲染后的结果输出至交换缓冲区,并由交换缓冲区将完成的一帧画面的渲染结果输出至显示设备或编码设备,完成一帧画面的渲染,重复执行上述渲染,实时的对场景画面进行渲染,输出流畅的帧画面。

一种可选的实施方式,将该方法应用到云游戏的一个游戏进程中,实时的多个用户的游戏场景进行渲染,由于是多个gpu同时同步进行渲染,可实现流畅的3d游戏场景渲染效果。使用时,本发明的方法可被封装成为一个具有多显卡调用能力的图形api库,开发者可以通过使用提供的api就可以在单个进程内使用一张或多张显卡进行图形渲染。

如图4所示,本发明还提供的一种基于多显卡的单帧画面实时渲染系统,该系统包括:

获取单元,用于获取待渲染画面,其中,所述待渲染画面为一帧画面;

目标gpu确定单元,用于根据所述待渲染画面确定目标gpu,其中,所述目标gpu包括用于渲染所述待渲染画面的至少一个渲染gpu;

切分单元,用于将所述待渲染画面分割为至少一个渲染部分,其中,渲染部分的数量小于或等于渲染gpu的数量;

渲染单元,用于执行渲染程序,所述至少一个渲染gpu渲染所述至少一个渲染部分;

输出单元,将所述至少一个渲染gpu的渲染结果合成为一帧画面后输出。

其中,

获取单元获取待渲染的一帧画面,目标gpu确定单元根据所述待渲染画面确定目标gpu,目标gpu包括用于渲染所述待渲染画面的至少一个渲染gpu;通过所述一帧画面的大小确定参与渲染的渲染gpu的数量;待渲染的一帧画面通常是以坐标表示的矢量图形,首先通过几何运算和像素着色后生成位图;切分单元根据所述位图的大小和所述渲染gpu的数量进行分割。渲染gpu的数量和分割得到的渲染部分的数量相同,一个渲染gpu对应渲染一个渲染部分,并为每个渲染部分提供渲染所需的资源,渲染资源包含当前渲染部分需要使用到的模型、纹理等数据。渲染单元执行渲染程序,每个渲染流程包括渲染、交换缓冲区和复制gpu渲染结果到内存。输出合成流程包括将复制的各渲染gpu的渲染结果,发送至合成gpu完成合成渲染,合成渲染后的结果输出至交换缓冲区,并由交换缓冲区将完成的一帧画面的渲染结果输出至显示设备或编码设备,完成一帧画面的渲染。通过持续执行帧流数据,实时的对场景画面进行渲染,输出流畅的视频流画面。

一种可选的实施方式,在一个游戏进程中,实时的对多个用户的游戏场景进行渲染,在画面拆分时记录渲染部分的标识、相对应的渲染gpu的标识以及用户标识,多个gpu分别完成渲染后,根据渲染部分标识、渲染gpu标识和用户标识为用户合成当前的游戏场景,并将合成渲染后的游戏场景发送至对应的用户终端,在一个游戏进程中为多用户同时服务,在降低对服务器资源的消耗和减少服务器数量的同时能保证游戏画面的流畅性和提高用户体验感。

本公开还涉及一种电子设备,包括服务器、终端等。该电子设备包括:至少一个处理器;与至少一个处理器通信连接的存储器;以及与存储介质通信连接的通信组件,所述通信组件在处理器的控制下接收和发送数据;其中,存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行以实现上述实施例中的方法。

在一种可选的实施方式中,存储器作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块。处理器通过运行存储在存储器中的非易失性软件程序、指令以及模块,从而执行设备的各种功能应用以及数据处理,即实现方法。

存储器可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储选项列表等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实施例中,存储器可选包括相对于处理器远程设置的存储器,这些远程存储器可以通过网络连接至外接设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。

一个或者多个模块存储在存储器中,当被一个或者多个处理器执行时,执行上述任意方法实施例中的方法。

上述产品可执行本申请实施例所提供的方法,具备执行方法相应的功能模块和有益效果,未在本实施例中详尽描述的技术细节,可参见本申请实施例所提供的方法。

本公开还涉及一种计算机可读存储介质,用于存储计算机可读程序,所述计算机可读程序用于供计算机执行上述部分或全部的方法实施例。

即,本领域技术人员可以理解,实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。

在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。

此外,本领域普通技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。

本领域技术人员应理解,尽管已经参考示例性实施例描述了本发明,但是在不脱离本发明的范围的情况下,可进行各种改变并可用等同物替换其元件。另外,在不脱离本发明的实质范围的情况下,可进行许多修改以使特定情况或材料适应本发明的教导。因此,本发明不限于所公开的特定实施例,而是本发明将包括落入所附权利要求范围内的所有实施例。

起点商标作为专业知识产权交易平台,可以帮助大家解决很多问题,如果大家想要了解更多知产交易信息请点击 【在线咨询】或添加微信 【19522093243】与客服一对一沟通,为大家解决相关问题。

此文章来源于网络,如有侵权,请联系删除

tips