CN114066714A - 一种合批渲染方法、装置、设备及存储介质 - Google Patents
一种合批渲染方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN114066714A CN114066714A CN202111643813.9A CN202111643813A CN114066714A CN 114066714 A CN114066714 A CN 114066714A CN 202111643813 A CN202111643813 A CN 202111643813A CN 114066714 A CN114066714 A CN 114066714A
- Authority
- CN
- China
- Prior art keywords
- primitive
- primitives
- batched
- list
- rendering
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Processing Or Creating Images (AREA)
Abstract
本申请公开一种合批渲染方法、装置、设备及存储介质,获取第一图像帧对应的第一绘制图元列表,第一绘制图元列表中包括多个图元,根据图元的绘制状态对多个图元进行分组得到图元集合。将待合批图元集合中待调整图元的显示层级调整为目标图元的显示层级,目标图元是根据待合批图元集合中图元的显示层级和可达区域确定的,在可达区域调整图元的显示层级不会改变渲染结果。根据调整后的显示层级对待合批图元集合中的图元进行合批,得到第一合批结果,进而根据第一合批结果进行第一图像帧的画面渲染。通过对图元的显示层级进行动态调整,在不改变渲染结果的前提下,将尽可能多的图元合并在同一批次,减少渲染批次,从而减少渲染负担,提高渲染效率。
Description
本申请要求于2021年01月14日提交中国专利局、申请号202110048559.1、申请名称为“一种合批渲染方法、装置、设备及存储介质”的中国专利申请的优先权,其全部内容通过引用结合在本申请中。
技术领域
本申请涉及互联网技术领域,特别是涉及一种合批渲染方法、装置、设备及存储介质。
背景技术
随着电子娱乐行业的发展,游戏、动画受到越来越多用户的喜爱。游戏或者动画的画面质量与渲染的效果,直接关乎用户体验。而越是精致的渲染效果,占用的空间越大,渲染的速度越低。
在渲染实现过程中,中央处理器(central processing unit,CPU)需要向图形处理器(Graphics Processing Unit,GPU)发送绘制指令(Draw Call,DC),通过DC命令GPU进行渲染操作。DC命令的数量是影响游戏性能的重要指标,过多的DC命令会导致GPU的渲染负担,帧时长变长,从而导致游戏卡顿等问题。
目前,可通过合批技术降低绘制指令的数量。然而目前的合批技术极度依赖美术人员对层级的设定,对层级的设定又基于画面的显示逻辑,因此层级的错位导致无法合批的情况非常常见,从而使得批次的数量较大。为了能降低批次的数量,从而减少对GPU的消耗,美术人员可能调整很长的时间也难以达到游戏品质的要求。
发明内容
为了解决上述技术问题,本申请提供了一种合批渲染方法、装置、设备及存储介质,利用图元的可达区域对图元的显示层级进行动态调整,无需美术人员干预,从而实现在不改变渲染结果的前提下,将尽可能多的图元合并在同一批次,尽量减少渲染批次,从而减少GPU的渲染负担,提高渲染效率。
本申请实施例公开了如下技术方案:
第一方面,本申请实施例提供一种合批渲染方法,所述方法包括:
获取第一图像帧对应的第一绘制图元列表,所述第一绘制图元列表中包括多个图元,每个所述图元具有对应的绘制状态和显示层级;
根据所述绘制状态对所述多个图元进行分组,得到图元集合;
针对所述图元集合中的待合批图元集合,将所述待合批图元集合中待调整图元的显示层级调整为所述待合批图元集合中目标图元的显示层级,所述目标图元是根据所述待合批图元集合中图元的显示层级和图元的可达区域确定的,图元的可达区域用于指示图元的显示层级的可调整范围;
根据调整后的显示层级对所述待合批图元集合中的图元进行合批,得到所述第一图像帧对应的第一合批结果;
根据所述第一合批结果进行所述第一图像帧的画面渲染。
第二方面,本申请实施例提供一种合批渲染装置,所述装置包括获取单元、确定单元、调整单元、合批单元和渲染单元:
所述获取单元,用于获取第一图像帧对应的绘制图元列表,所述绘制图元列表中包括多个图元,每个所述图元具有对应的绘制状态和显示层级;
所述确定单元,用于根据所述绘制状态对所述多个图元进行分组,得到图元集合;
所述调整单元,用于针对所述图元集合中的待合批图元集合,将所述待合批图元集合中待调整图元的显示层级调整为所述待合批图元集合中目标图元的显示层级,所述目标图元是根据所述待合批图元集合中图元的显示层级和图元的可达区域确定的,图元的可达区域用于指示图元的显示层级的可调整范围;
所述合批单元,用于根据调整后的显示层级对所述待合批图元集合中的图元进行合批,得到所述第一图像帧对应的合批结果;
所述渲染单元,用于根据所述第一图像帧对应的合批结果进行所述第一图像帧的画面渲染。
第三方面,本申请实施例提供一种用于合批渲染的设备,所述设备包括处理器以及存储器:
所述存储器用于存储程序代码,并将所述程序代码传输给所述处理器;
所述处理器用于根据所述程序代码中的指令执行第一方面所述的方法。
第四方面,本申请实施例提供一种计算机可读存储介质,所述计算机可读存储介质用于存储程序代码,所述程序代码用于执行第一方面所述的方法。
由上述技术方案可以看出,本申请在需要对图像帧例如第一图像帧进行画面渲染时,可以获取第一图像帧对应的第一绘制图元列表,第一绘制图元列表中包括多个图元,每个图元具有对应的绘制状态和显示层级。通常情况下,不同图元的绘制状态和显示层级如果都相同则可以进行合批。而绘制状态和显示层级是由美术人员设定的,其中绘制状态是不可调整的,故在本申请中可以进一步确定美术人员设定的绘制状态相同的不同图元的显示层级是否可能通过调整而使得显示层级相同,以将尽可能多的图元合并在同一批次,尽量减少渲染批次。因此,在本申请中可以根据绘制状态对多个图元进行分组,得到图元集合,同一图元集合中包括的所有图元的绘制状态相同。针对图元集合中的待合批图元集合,将待合批图元集合中待调整图元的显示层级调整为待合批图元集合中目标图元的显示层级,目标图元是根据待合批图元集合中图元的显示层级和图元的可达区域确定的,图元的可达区域用于指示图元的显示层级的可调整范围,在可达区域调整图元的显示层级不会改变渲染结果。然后根据调整后的显示层级对待合批图元集合中的图元进行合批,得到第一图像帧对应的第一合批结果,进而根据第一合批结果进行第一图像帧的画面渲染。该方法针对待合批图元集合中图元,利用图元的可达区域对图元的显示层级进行动态调整,无需美术人员干预,从而实现在不改变渲染结果的前提下,将尽可能多的图元合并在同一批次,尽量减少渲染批次,从而减少GPU的渲染负担,提高渲染效率。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术成员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种合批渲染方法的系统架构示意图;
图2为本申请实施例提供的一种合批渲染方法的流程图;
图3为本申请实施例提供的第一图元绘制列表的示例图;
图4为本申请实施例提供的基于第一图元绘制列表得到的等价排序结果的示例图;
图5为本申请实施例提供的第一图元绘制列表的示例图;
图6为本申请实施例提供的基于第一图元绘制列表得到的等价排序结果的示例图;
图7为本申请实施例提供的基于调整后显示层级得到的渲染顺序的示例图;
图8a为本申请实施例提供的第一合批结果的界面示例图;
图8b为相关技术提供的合批渲染方法对应的UI渲染数据示例图;
图8c为本申请实施例提供的合批渲染方法对应的UI渲染数据示例图;
图9为本申请实施例提供的一种图元之间的绘制位置与确定图元的可达区域之间的关系示意图;
图10为本申请实施例提供的一种图元之间的绘制位置与确定图元的可达区域之间的关系示意图;
图11为本申请实施例提供的链表与确定图元的可达区域之间的关系示意图;
图12为本申请实施例提供的一种合批渲染方法的流程图;
图13为本申请实施例提供的一种合批渲染方法的流程图;
图14为本申请实施例提供的一种合批渲染方法的流程图;
图15为本申请实施例提供的一种合批渲染装置的结构图;
图16为本申请实施例提供的一种终端的结构图;
图17为本申请实施例提供的一种服务器的结构图。
具体实施方式
下面结合附图,对本申请的实施例进行描述。
目前可通过合批技术降低绘制指令的数量。然而目前的合批技术极度依赖美术人员对层级的设定,对层级的设定又基于画面的显示逻辑,因此层级的错位导致无法合批的情况非常常见,从而使得批次的数量较大。为了能降低批次的数量,从而减少对GPU的消耗,美术人员可能调整很长的时间也难以达到游戏品质的要求。
例如,在游戏界面中,一个控制按钮包括面和底,面在底的上方,当点击该控制按钮后会弹出对话框,对话框与控制按钮没有重叠。其中,底、面、对话框的渲染分别通过对应的图元实现,则根据该显示逻辑,美术人员将设定底对应的图元的显示层级最低,面对应的图元的显示层级次之,对话框对应的图元的显示层级最高。从而上述三个图元无法进行合批,渲染批次较多。
为了解决上述技术问题,本申请实施例提供一种合批渲染方法,在需要对图像帧例如第一图像帧进行画面渲染时,可以获取第一图像帧对应的第一绘制图元列表,第一绘制图元列表中包括多个图元,每个图元具有对应的绘制状态和显示层级。通常情况下,不同图元的绘制状态和显示层级如果都相同则可以进行合批。而绘制状态和显示层级是由美术人员设定的,其中绘制状态是不可调整的,故在本申请中可以进一步确定美术人员设定的绘制状态相同的不同图元的显示层级是否可能通过调整而使得显示层级相同,以将尽可能多的图元合并在同一批次,尽量减少渲染批次。
需要说明的是,本申请实施例提供的合批渲染方法可以应用于图像处理设备,图像处理设备可以是服务器,也可以是终端。服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云计算服务的云服务器。终端可以是智能手机、平板电脑、笔记本电脑、台式计算机、智能音箱、智能手表等,但并不局限于此。终端以及服务器可以通过有线或无线通信方式进行直接或间接地连接,本申请在此不做限制。
其中,本申请实施例提供的合批渲染方法可以应用到各种画面渲染场景中,在画面渲染场景中,终端上可以运行各种需要画面渲染的应用程序,例如游戏应用程序(游戏场景)、动画应用程序(动画场景)等。其中,游戏可以是2D或3D游戏,进行的画面渲染可以是2D或3D渲染。
为了便于理解本申请的技术方案,下面结合实际应用场景(以服务器为执行主体,应用场景为游戏场景)对本申请实施例提供的合批渲染方法进行介绍。
参见图1,图1为本申请实施例提供合批渲染方法的系统架构示意图。该系统架构中包括终端101和服务器102,终端101上可以运行游戏应用程序,当游戏应用程序在终端101上运行时,对应的游戏画面可以渲染显示在终端101上,从而呈现给用户。
终端101上的游戏应用程序在运行过程中,需要对每个图像帧进行渲染。以第一图像帧为例,当需要对第一图像帧进行渲染时,服务器102可以获取第一图像帧对应的第一绘制图元列表,第一绘制图元列表中包括多个图元。图元是指一条根据游戏逻辑单元产生的绘制指令,图元可以用DrawElement表示。每个图元具有对应的绘制状态和显示层级(Layer)。绘制状态是指一个绘制指令里面包含的所用图集,所在的裁减区域,材质(shader)等信息。显示层级体现了渲染顺序和显示顺序,通常情况下显示层级高,渲染在后,显示在前。以人眼观看用户界面(User Interface,UI)为例,人眼作为基准,UI在显示时可以分为多个显示层级,则显示层级越靠近人眼,表示其显示层级越高。
通常情况下,不同图元的绘制状态和显示层级如果都相同则可以进行合批。而绘制状态和显示层级是由美术人员设定的,其中绘制状态是不可调整的,故在本申请中可以进一步确定美术人员设定的绘制状态相同的不同图元的显示层级是否可能通过调整而使得显示层级相同,以将尽可能多的图元合并在同一批次,尽量减少渲染批次。因此,在本申请中服务器102可以根据绘制状态对多个图元进行分组,得到图元集合,同一图元集合中包括的所有图元的绘制状态相同。针对图元集合中的待合批图元集合,将待合批图元集合中待调整图元的显示层级调整为待合批图元集合中目标图元的显示层级,目标图元是根据待合批图元集合中图元的显示层级和图元的可达区域确定的,图元的可达区域用于指示图元的显示层级的可调整范围,在可达区域调整图元的显示层级不会改变渲染结果。
然后,服务器102根据调整后的显示层级对待合批图元集合中的图元进行合批,得到第一图像帧对应的第一合批结果,进而根据第一合批结果进行第一图像帧的画面渲染,从而将渲染后的第一图像帧显示在终端101上,以便用户观看终端101上显示的第一图像帧。
该方法针对待合批图元集合中图元,利用图元的可达区域对一些图元例如待调整图元的显示层级进行调整,从而实现在不改变渲染结果的前提下,将尽可能多的图元合并在同一批次,尽量减少渲染批次,从而减少GPU的渲染负担,提高渲染效率。
接下来,将以服务器为执行主体,结合附图对本申请实施例提供的合批渲染方法进行详细介绍。
参见图2,图2示出了一种合批渲染方法的流程图,所述方法包括:
S201、获取第一图像帧对应的第一绘制图元列表。
当需要对第一图像帧进行渲染时,服务器可以获取第一图像帧对应的第一绘制图元列表,第一绘制图元列表反映了针对第一图像帧进行渲染所需的渲染信息,第一绘制图元列表中包括多个图元,每个图元具有对应的绘制状态和显示层级。其中,绘制状态可以通过绘制状态的哈希值(BatchKey)表示,不同图元的BatchKey对应的值相同,表示绘制状态相同;显示层级可以通过Layer表示,不同图元的Layer对应的值相同,表示显示层级相同。
例如,第一绘制图元列表可以参见图3所示,图3中不同颜色的矩形框表示一个图元,该第一绘制图元列表中包括4个图元,分别是图元301、图元302、图元303和图元304,对应的绘制状态和显示层级依次是:BatchKey=5 Layer=2、BatchKey=3 Layer=2、BatchKey=3 Layer=2和BatchKey=5 Layer=2。
在本实施例中,以游戏场景为例,服务器可以通过游戏引擎收集第一绘制图元列表。其中,游戏引擎可以是虚幻(Unreal)引擎、Unity引擎等。游戏引擎可以自带合批方案,例如Unreal引擎自带的合批方案即由美术人员设定绘制状态和显示层级,针对不同图元,美术人员设定的绘制状态和显示层级都相同才可以进行合批。
本申请在现有合批方案的基础上,进一步增加显示层级调整的步骤,将不同图元的显示层级尽可能的调整至相同显示层级,以便将尽可能多的图元合并在同一批次,尽量减少渲染批次。
S202、根据所述绘制状态对所述多个图元进行分组,得到图元集合。
由于绘制状态相同的图元才有可能进行合批,那么,为了尽可能减少批次,所需调整的图元应该是绘制状态相同的图元。因此,服务器可以根据绘制状态对多个图元进行分组,得到图元集合。同一图元集合中的图元具有相同的绘制状态。
其中,根据绘制状态对多个图元进行分组,得到图元集合相当于构造相同绘制状态函数,可以通过SameDrawParamMayBatch<FBatchKey,TArray<SortedItem>>表示,FBatchKey表示绘制状态的哈希值函数,TArray表示数组,其中存储的是排序列表的值(SortedItem)。
需要说明的是,由于S201中获取的第一绘制图元列表中的图元具有一定的排列顺序,在该排列顺序下相同的绘制状态的图元分布在第一图元绘制列表中,大部分情况下,它们都不是相邻的。因此,为了使得相同绘制状态的图元在第一图元绘制列表中相邻,从而在后续计算中可以快速、便捷地得到所有相同绘制状态的图元,而无需遍历整个第一图元绘制列表才得到相同绘制状态的所有图元,在执行S202之前,服务器还可以根据绘制状态和显示层级对第一绘制图元列表进行等价排序,等价排序结果中绘制状态相同图元相邻,且相同绘制状态的图元按照显示层级从低到高的顺序排列。这样,S202的实现方式可以是根据绘制状态和等价排序结果对多个图元进行分组,得到图元集合。
等价排序是指重新排序前后的渲染结果是一致的。可以理解的是,排序在缓存中进行,不会真正修改第一图元绘制列表的顺序,另外在等价排序后的缓存中,排序图元依然还要求能找回在原始第一图元绘制列表中的位置。等价排序的目的是在每个图元都不相交的情况下,产生一个列表,该列表中某个图元前面的一定比自己先绘制,后面的一定比自己后绘制。
以图3所示的第一图元绘制列表为例,图3所示的4个图元如果互不相交,等价排序的依据是绘制状态和显示层级,依据Unreal引擎的合批方案,根据图元的绘制状态和显示层级确定其渲染顺序一定是图元301、图元304、图元302和图元303。而且只有2个批次:BatchKey=5的是一个批次、BatchKey=3的是一个批次。其中,渲染顺序是指图元是一个个绘制出来的,图元绘制的先后顺序即渲染顺序。
则将图3所示的第一绘制图元列表等价排序得到图4所示的等价排序结果,在该等价排序结果中图元的排序是图元301、图元304、图元302和图元303,故渲染顺序也是图元301、图元304、图元302和图元303,与图3所示的第一绘制图元列表相比,渲染结果是一致的。
S203、针对所述图元集合中的待合批图元集合,将所述待合批图元集合中待调整图元的显示层级调整为所述待合批图元集合中目标图元的显示层级。
需要说明的是,待合批图元集合可以是全部图元集合,即在一帧图像渲染过程中,针对全部绘制状态的图元都进行合批。待调整图元为可以将其显示层级调整至目标图元的显示层级,而不会影响渲染结果的图元。
待合批图元集合也可以是部分图元集合,即在一帧图像渲染过程中,针对部分绘制状态对应的图元进行合批,待合批图元集合可以是任意选择的,但通常情况下,针对当前帧图像确定待合批图元集合时,一般从前一帧图像中未被选取的绘制状态对应的图元中进行任意选取。也就是说,通过分帧计算的方式,将合批分摊到每帧图像渲染过程,这样,批次可以在任意帧内降到最低值,因此平摊到每帧的计算量不会出现负载尖刺。这对于复杂的UI场景是负载友好的,又由于每帧计算都是渲染等价的,所以不会产生UI闪烁,用户无感知。
例如,针对该第一图像帧对应的第一绘制图元列表中包括10种绘制状态,然而在针对第一图像帧进行渲染时,可以仅对其中两个绘制状态采用S201-S204的步骤进行合批处理,其余绘制状态可以在下一个图像帧中进行合批处理。
其中,目标图元是根据待合批图元集合中图元的显示层级和图元的可达区域确定的,图元的可达区域用于指示图元的显示层级的可调整范围,故在可达区域调整待调整图元的显示层级不会改变渲染结果。
假设,第一绘制图元列表参见图5所示,图5中不同颜色的矩形框表示一个图元,该第一绘制图元列表中包括4个图元,分别是图元501、图元502、图元503和图元504,对应的绘制状态和显示层级依次是:BatchKey=5 Layer=2、BatchKey=3 Layer=3、BatchKey=3Layer=3和BatchKey=5 Layer=4,根据当前的绘制状态和显示层级可以得到3个批次,即图元502和图元503为一个批次,图元501为一个批次,504为另一个批次。在对第一绘制图元列表进行等价排序后,得到的等价排序结果可以参见图6所示,此时排列顺序是图元502、图元503、图元501和图元504。若通过S201-S204确定包括图元501和图元504的待合批图元集合中目标图元是图元504,则在图6的基础上将图元501(即待调整图元)的显示层级可以调整到图元504的显示层级,即图元501对应的Layer由2调整至4。此时,基于调整后显示层级得到的渲染顺序可以参见图7所示。
在本实施例中,所需要的目标图元可以理解为数学计算中需要确定的最优解,当然也可以是次优解,寻找最优解或次优解的算法包括很多,例如贪心算法、动态规划算法等等。在一种可能的实现方式中,可以采用贪心算法来确定目标图元,贪心算法是指,在对问题求解时,总是做出在当前看来是最好的选择。基于此,在本实施例中根据待合批图元集合中图元的显示层级和图元的可达区域确定目标图元的方式可以是确定待合批图元集合中每个图元的显示层级被待合批图元集合中其他图元的可达区域覆盖的数量,将被最多数量其他图元的可达区域覆盖的图元确定为目标图元。此时,待调整图元为可达区域覆盖目标图元的其他图元,而对于可达区域未覆盖目标图元的其他图元,其显示层级保持不变。
由于在S203中需要使用待合批图元集合中图元的可达区域,故在本实施例中,在执行S203之前服务器还可以确定第一绘制图元列表中每个图元的可达区域,以供S203步骤中使用。然而在一些情况下,在对第一图像帧进行画面渲染时,可能仅是对部分绘制状态的图元进行合批,此时,并非需要知晓所有图元的可达区域,因此,为了减少第一图像帧上分摊的计算量,服务器可以仅确定待合批图元集合中每个图元的可达区域,从而无需对其他图元的可达区域进行计算,减少不必要的计算量。
S204、根据调整后的显示层级对所述待合批图元集合中的图元进行合批,得到所述第一图像帧对应的第一合批结果。
基于调整后的显示层级,服务器可以将同一个待合批图元集合中显示层级相同的图元合并在一起作为一个批次进行渲染,得到第一合批结果。以图7为例,图元501和图元504可以合并在一起作为一个批次进行渲染。可见,与调整显示层级之前相比,减少了一个批次。
需要说明的是,在完成合批后,可以查看第一合批结果,以确定第一合批结果是否达到美术预期。以游戏场景为例,可以通过游戏管理(GAME MASTER,GM)开启UI的合批结果(例如第一合批结果),排查合批结果是否达到美术预期,第一合批结果的显示界面可以参见图8a所示,其中,相同线条的矩形框内的UI表示已经合批,例如在图8a中黑色实线的矩形框中的UI为同一批次,黑色虚线的矩形框中的UI为同一批次,灰色实线的矩形框中的UI为同一批次,灰色虚线的矩形框中的UI为同一批次,黑色点划线的矩形框中的UI为同一批次(例如图8a中“22”)。
S205、根据所述第一合批结果进行所述第一图像帧的画面渲染。
服务器在得到第一合批结果后,可以基于第一合批结果进行第一图像帧的画面渲染。
由上述技术方案可以看出,本申请在需要对图像帧例如第一图像帧进行画面渲染时,可以获取第一图像帧对应的第一绘制图元列表,第一绘制图元列表中包括多个图元,每个图元具有对应的绘制状态和显示层级。通常情况下,不同图元的绘制状态和显示层级如果都相同则可以进行合批。而绘制状态和显示层级是由美术人员设定的,其中绘制状态是不可调整的,故在本申请中可以进一步确定美术人员设定的绘制状态相同的不同图元的显示层级是否可能通过调整而使得显示层级相同,以将尽可能多的图元合并在同一批次,尽量减少渲染批次。因此,在本申请中可以根据绘制状态对多个图元进行分组,得到图元集合,同一图元集合中包括的所有图元的绘制状态相同。针对图元集合中的待合批图元集合,将待合批图元集合中待调整图元的显示层级调整为待合批图元集合中目标图元的显示层级,目标图元是根据待合批图元集合中图元的显示层级和图元的可达区域确定的,图元的可达区域用于指示图元的显示层级的可调整范围,在可达区域调整图元的显示层级不会改变渲染结果。然后根据调整后的显示层级对待合批图元集合中的图元进行合批,得到第一图像帧对应的第一合批结果,进而根据第一合批结果进行第一图像帧的画面渲染。该方法针对待合批图元集合中图元,利用图元的可达区域对图元的显示层级进行动态调整,无需美术人员干预,从而实现在不改变渲染结果的前提下,将尽可能多的图元合并在同一批次,尽量减少渲染批次,从而减少GPU的渲染负担,提高渲染效率。
同时,通过该方法可以在渲染过程中动态调整显示层级,以降低批次的数量,减少对GPU的消耗,无需美术人员浪费大量时间进行调整以达到游戏品质的要求。
另外,对于一些支持UI自定义的产品,例如游戏场景下的游戏应用程序,由于游戏支持UI的自定义,布局完全无法预估,通过传统方式进行合批可能会使UI的批次达到无法想象的数量。而本申请实施例提供的合批渲染方法可以在渲染过程中动态调整图元的显示层级以降低批次的数量,保证了玩家自定义UI也能达到极低数量的批次。
在游戏场景中,因为UI渲染在游戏中所占比例不多,实验结果在发布版的游戏战斗内提升了0.3帧且减少了3%的电量消耗,但是单单看UI本身的批次减少幅度和绝对提升时间,本申请实施例提供的合批渲染方法相对于相关技术的优化还是比较明显。
以图8a所示的游戏场景为例,相关技术提供的渲染方法与本申请实施例提供的合批渲染方法对应的UI渲染数据分别参见图8b和图8c所示,在图8b中,可以看到Draw Call是44同时渲染线程的消耗是4.54ms,Add Element Time(渲染时间)是1.13ms。而采用本申请实施例提供的方法进行优化,优化后可以看到Draw Call已经变成了21同时渲染线程的消耗减少到2.59ms,算法收益1.95ms,而算法给Add Element Time增加到1.28ms,算法代价为0.15ms。可见,渲染消耗明显降低,且算法收益明显高于算法代价,相对于相关技术得到了较好的改善。
接下来,将对图元的可达区域的确定方式进行详细介绍。图元的可达区域用于指示图元的显示层级的可调整范围,在可达区域调整图元的显示层级不会改变渲染结果。其度量指标是显示层级,表示一个图元在等价排序后的第一绘制图元列表中能够不影响渲染结果的平移的区域,以外是不可达区域,移动到不可达区域后,渲染结果将被破坏。这样每个图元都有自己的可达区域,要么它的可达区域是整个第一绘制图元列表,它的可达区域就只有它自己,其渲染层次不能被调整。
需要说明的是,第一绘制图元列表中还可以包括图元对应的绘制位置,绘制位置可以是指图元在显示界面上的二维位置,调整显示层级是否会破坏渲染结果可以通过图元间的绘制位置进行判断。由于每个图元的可达区域的确定方式都是类似的,本实施例以任一个待确定可达区域的图元为例,对图元可达区域的确定方式进行介绍。若待确定可达区域的图元为第一图元,第一绘制图元列表中除第一图元之外的图元为第二图元。则第一图元的可达区域的确定方式可以是根据第一图元的绘制位置和第二图元的绘制位置,确定第二图元是否阻挡第一图元的显示层级的移动,根据确定结果得到第一图元的可达区域。通常情况下,若确定结果表示第二图元阻挡第一图元的显示层级的移动,则表示第一图元的显示层级无法移动到第二图元的显示层级,针对每个第二图元采用相同的方式判断,从而确定出第一图元的显示层级的可调整范围,即第一图元的可达区域。
以第一绘制图元列表如图5所示为例,如果图元502和图元503对图元501没有任何遮挡,又或者图元502和图元503对图元504没有任何遮挡,那么图元501和图元504就可以在一个批次绘制出来了。图9更加直观的体现出图元之间的绘制位置与确定图元的可达区域之间的关系。在图9中按照左侧箭头方向,显示层级逐渐增大,即图元504的显示层级最大,显示在最前,其次是图元502和图元503,最后是图元501,并且图9中图元在显示界面上的位置是根据绘制位置确定的。从图9中可以看出,图元504的可达区域被图元502和图元503阻挡,即图元504的显示层级不能减小至图元501所在显示层级,否则会导致渲染结果改变。但是图元501的可达区域没有受图元502和图元503影响,图元501的显示层级可以增加至图元504的显示层级,所以图元501的渲染顺序可以向后调整,进而得到图7所示的渲染顺序。
上面描述的只是非常理想的状态,图元之间的关系,可能并没有这么简单。例如,图元的可达区域被相同绘制状态的图元隔断了,也就是说,确定结果表示第二图元阻挡第一图元的显示层级的移动,且第二图元与第一图元对应的绘制状态相同,此时,可以根据第二图元的可达区域确定第一图元的可达区域,即第一图元的可达区域的上限或者下限就要参照第二图元的可达区域的上限或者下限了,此时,第二图元的可达区域可以作为参考区域。其中,最常见的情况可以是美术人员会用同一个图集的贴图来做某个控制按钮的面和底。
参见图10所示,图10中包括图元A、图元B、图元C和图元D,其中图元A和图元B的绘制状态相同,若第一图元是图元A,从图10可以看出,图元A的显示层级的移动受到图元B(即第二图元)的阻挡,即图元A的显示层级的可达区域的下限要参照图元B的可达区域的下限。
需要说明的是,在计算的过程中,已经合批的图元相当于调整了这些图元的显示层级,这并不是一点都不会影响到后续图元的显示层级调整。也就是说,可达区域的确定,必须以调整了显示层级之后的状态来计算。因此,在一种可能的实现方式中,在将待合批图元集合中图元的显示层级调整为待合批图元集合中目标图元的显示层级之后,服务器可以通过链表对图元调整后的显示层级进行记录,以便可以记录图元的显示层级的变化过程,从而在计算可达区域时获取图元准确的显示层级。
参见图11所示,在图11中图示1101、1102、1103和1104分别体现了图元A2、A4、B1、B3、C3、D2显示层级的调整情况,其中,图示1102和图示1103分别是图示1101对图元A4和图元B1的显示层级进行调整得到的,其中,图示1102与图示1101相比,图元A4的显示层级减小。图示1103与图示1101相比,图元B1的显示层级增大。而对于图示1104,由于图元A4和图元B1的显示层级已经调整至图示1102所示或图示1103所示,根据图示1102或图示1103无法将图元A4的显示层级调整至图元D2和图元A2的显示层级。但是如果没有记录图元A4和图元B1的显示层级已经调整至图示1102所示或图示1103所示的状态,将会继续在图示1101的基础上调整图元A4的显示层级调整至图元D2和图元A2的显示层级,将会改变渲染结果。而在有链表的情况下,可以阻断图元A4和图元B1的显示层级调整至图示1104所示状态。
因此,为了避免不合理的显示层级调整而改变渲染结果,可以通过链表对待调整图元调整后的显示层级进行记录,以便可以记录待调整图元的显示层级的变化过程,从而在计算可达区域时获取图元准确的显示层级。
可以理解的是,由于采用分帧计算,即针对每个图像帧都可以采用本申请实施例提供的合批渲染方法对图像帧进行渲染,而在不同的图像帧,需要的渲染信息(即绘制图元列表)可能发生变化,也可能不发生变化。例如在游戏场景中,游戏在大部分时间内,玩家可能没有操作,以至于需要的渲染信息没有变化。这样,如果其中一个图像帧已经完成了合批,则可以直接对已经得到的合批结果进行利用,避免重复计算,减少不必要的计算量。因此,在一种可能的实现方式中,获取到第一绘制图元列表(参见图12中S1201)之后,若第二图像帧为第一图像帧的前一帧,服务器可以比对第一绘制图元列表与第二图像帧对应的第二绘制图元列表是否一致(参见图12中S1202),若比对结果表示第一绘制图元列表与第二绘制图元列表一致,根据第二图像帧对应的第二合批结果进行第一图像帧的画面渲染(参见图12中S1203)。此时,按照第一绘制图元列表和第二合批结果恢复渲染顺序,以FrontHeadIndex>=0作为子链表产生母链表,即改变指针位置使其指向恢复渲染顺序对应的绘制图元列表。
若比对结果表示第一绘制图元列表与第二绘制图元列表不一致,执行针对图元集合中的待合批图元集合,将待合批图元集合中待调整图元的显示层级调整为待合批图元集合中目标图元的显示层级的步骤(参见图12中S1204)。
需要说明的是,由于针对每个图像帧进行渲染过程中,可能仅对部分绘制状态的图元采用本方案进行合批处理,也有可能对所有绘制状态的图元采用本方案进行合批处理,采用本方案进行合批处理即图元被计算过,被计算过的图元将标注为已计算,并以存储在合批结果图(LastBatchRectMap)中。LastBatchRectMap是缓存数据,这样做的原因是每次可以只做一部分计算,直到无法再合批。
在对第二图像帧进行渲染的过程中,未必对所有图元都进行了计算,因此在第一绘制图元列表与第二绘制图元列表一致时,在执行完S201-S202后(其中S201相当于图13中的S1301,S202相当于图13中的S1302),针对待合批图元集合,若待合批图元集合中的图元全部位于合批结果图中,表示所有图元都被计算过,则可以直接将第二合批结果作为第一合批结果,进行第一图像帧的画面渲染。若确定待合批图元集合中存在未位于合批结果图中的第三图元(参见图13中S1303),执行将待合批图元集合中待调整图元的显示层级调整为所述待合批图元集合中目标图元的显示层级的步骤,此时,第三图元以顺序列表(SortedList)的形式提取,SortedList中的每个图元可以称为SortedItem。具体的,计算每个第三图元的可达区域(参见图13中S1304),采用贪心算法确定目标图元(参见图13中S1305),将待合批图元集合中第三图元的显示层级调整为目标图元的显示层级(参见图13中S1306)。
在本实施例中,第一绘制图元列表与第二绘制图元列表不一致的原因可以包括多种,例如如果增减了图元或者不可忽视位置的图元的绘制位置发生了变化,都会导致第一绘制图元列表与第二绘制图元列表不一致,会引起重新计算。其中,若可以忽视位置的图元发生了绘制位置变化,则不会认为第一绘制图元列表与第二绘制图元列表不一致,不会引起重新计算。
若不可忽视位置的某个图元的绘制位置发生了变化,导致第一绘制图元列表与第二绘制图元列表不一致,例如第一绘制图元列表中第四图元的绘制位置与第二绘制图元列表中所述第四图元的绘制位置不同,则在重新计算前,需要清除包括第四图元的图元集合对应的所有缓存信息,避免利用绘制位置改变前的第四图元的缓存信息进行后续计算,导致计算结果不准确。
若增加了图元导致第一绘制图元列表与第二绘制图元列表不一致,例如第一绘制图元列表相对于第二绘制图元列表出现新图元,则需要先根据绘制状态对第一绘制图元列表中多个图元重新进行分组,得到图元集合。再执行针对图元集合中的待合批图元集合,将待合批图元集合中待调整图元的显示层级调整为待合批图元集合中目标图元的显示层级的步骤。
接下来,将结合实际应用场景对本申请实施例提供的合批渲染方法进行介绍。在游戏应用场景中,需要对游戏画面进行渲染,为了降低DC命令的数量是影响游戏性能的影响,本方案通过计算合理的批次减少GPU渲染负担。。参见图14,所述方法包括:
S1401、服务器获取第一图像帧对应的第一绘制图元列表。
S1402、服务器比对第一绘制图元列表与第二图像帧对应的第二绘制图元列表是否一致,若一致,且所有图元都被计算过,执行S1403;若一致,且存在没有被计算的第三图元,执行S1404;若第四图元的绘制位置发生了变化导致不一致,执行S1409;若出现新图元导致不一致,执行S1410。
其中,第二图像帧为第一图像帧的前一帧。
S1403、直接将第二合批结果作为第一合批结果,进行第一图像帧的画面渲染。
此时,可以以FrontHeadIndex>=0作为子链表产生母链表,即改变指针位置使其指向恢复渲染顺序对应的绘制图元列表。
S1404、根据合批结果图中的合批结果恢复之前的结果。
由于待合批图元集合中图元虽然存在未计算过的,但是也存在已计算过的,对于已计算过的图元,可以根据合批结果图中的合批结果恢复之前的结果,避免重复计算。
S1405、服务器确定待合批图元集合中存在未位于合批结果图中的第三图元。
S1406、计算每个第三图元的可达区域。
在计算可达区域时,若存在图元阻挡该第三图元的显示层级的移动,且阻挡第三图元的该图元与第三图元对应的绘制状态相同,则将阻挡第三图元的该图元的可达区域作为参考区域,以确定第三图元的可达区域。
S1407、采用贪心算法确定目标图元。
S1408、将待合批图元集合中第三图元的显示层级调整为目标图元的显示层级。
需要说明的是,对于第三图元,构造一个链表,最大可达的图元的FrontHeadIndex指向排序最小的图元,其余图元的FrontHeadIndex=-1,各图元的NextIndex指向下一个。
其中,S1406-S1408可以参见图14中虚线圆圈所示,通常情况下,虚线圆圈中的步骤可以做两次,即针对两个绘制状态下的待合批图元集合执行S1406-S1408的步骤。
需要说明的是,若确定的第三图元仅有一个,则将第三图元标注为已计算,存入LastBatchRectMap中。
在确定目标图元时,将被最多数量其他图元的可达区域覆盖的图元确定为目标图元,若最多数量仅是一个,则将第三图元标注为已计算,存入LastBatchRectMap中。
S1409、清除包括第四图元的图元集合对应的所有缓存信息。
在执行S1409后,执行S1404。
S1410、清空所有缓存。
S1411、记录每个图元的绘制位置。
S1412、对第一绘制图元列表进行等价排序。
每个图元的FrontHeadIndex指向自己,NextIndex=1。
S1413、根据所述绘制状态对所述多个图元进行分组,得到图元集合。
在得到图元集合后,执行S1405的步骤。
基于前述实施例提供的合批渲染方法,本申请实施例还提供一种合批渲染装置,参见图15,所述装置包括获取单元1501、确定单元1502、调整单元1503、合批单元1504和渲染单元1505:
所述获取单元1501,用于获取第一图像帧对应的绘制图元列表,所述绘制图元列表中包括多个图元,每个所述图元具有对应的绘制状态和显示层级;
所述确定单元1502,用于根据所述绘制状态对所述多个图元进行分组,得到图元集合;
所述调整单元1503,用于针对所述图元集合中的待合批图元集合,将所述待合批图元集合中待调整图元的显示层级调整为所述待合批图元集合中目标图元的显示层级,所述目标图元是根据所述待合批图元集合中图元的显示层级和图元的可达区域确定的,图元的可达区域用于指示图元的显示层级的可调整范围;
所述合批单元1504,用于根据调整后的显示层级对所述待合批图元集合中的图元进行合批,得到所述第一图像帧对应的合批结果;
所述渲染单元1505,用于根据所述第一图像帧对应的合批结果进行所述第一图像帧的画面渲染。
在一种可能的实现方式中,所述确定单元1502,还用于:
确定所述待合批图元集合中每个图元的显示层级被所述待合批图元集合中其他图元的可达区域覆盖的数量;
将被最多数量其他图元的可达区域覆盖的图元确定为所述目标图元;
相应的,所述待调整图元为可达区域覆盖所述目标图元的其他图元。
在一种可能的实现方式中,所述确定单元1502,还用于:
确定所述第一绘制图元列表中每个图元的可达区域;
或者,确定所述待合批图元集合中每个图元的可达区域。
在一种可能的实现方式中,所述第一绘制图元列表中还包括图元对应的绘制位置,将待确定可达区域的图元作为第一图元,所述第一绘制图元列表中除所述第一图元之外的图元作为第二图元,所述确定单元1502,还用于:
根据所述第一图元的绘制位置和所述第二图元的绘制位置,确定所述第二图元是否阻挡所述第一图元的显示层级的移动;
根据确定结果得到所述第一图元的可达区域。
在一种可能的实现方式中,所述确定单元1502,还用于:
若所述第二图元阻挡所述第一图元的显示层级的移动,且所述第二图元与所述第一图元对应的绘制状态相同,根据所述第二图元的可达区域确定所述第一图元的可达区域。
在一种可能的实现方式中,在将所述待合批图元集合中待调整图元的显示层级调整为所述待合批图元集合中目标图元的显示层级之后,所述装置还包括记录单元:
所述记录单元,用于通过链表对所述待调整图元调整后的显示层级进行记录。
在一种可能的实现方式中,所述获取第一图像帧对应的第一绘制图元列表之后,所述装置还包括比对单元:
所述比对单元,用于比对所述第一绘制图元列表与第二图像帧对应的第二绘制图元列表,所述第二图像帧为所述第一图像帧的前一帧;
所述渲染单元1505,还用于若比对结果表示所述第一绘制图元列表与所述第二绘制图元列表一致,根据所述第二图像帧对应的第二合批结果进行所述第一图像帧的画面渲染。
在一种可能的实现方式中,所述渲染单元1505,还用于:
若所述待合批图元集合中的图元全部位于合批结果图中,将所述第二合批结果作为所述第一合批结果,进行所述第一图像帧的画面渲染;
若所述待合批图元集合中存在未位于所述合批结果图中的第三图元,执行针对所述图元集合中的待合批图元集合,将所述待合批图元集合中待调整图元的显示层级调整为所述待合批图元集合中目标图元的显示层级的步骤。
在一种可能的实现方式中,若比对结果表示所述第一绘制图元列表与所述第二绘制图元列表不一致,触发所述调整单元1503执行针对所述图元集合中的待合批图元集合,将所述待合批图元集合中待调整图元的显示层级调整为所述待合批图元集合中目标图元的显示层级的步骤。
在一种可能的实现方式中,所述第一绘制图元列表与所述第二绘制图元列表不一致,包括:
所述第一绘制图元列表中第四图元的绘制位置与所述第二绘制图元列表中所述第四图元的绘制位置不同;
所述装置还包括清除单元:
所述清除单元,用于清除包括所述第四图元的图元集合对应的所有缓存信息。
在一种可能的实现方式中,所述第一绘制图元列表与所述第二绘制图元列表不一致,包括:
所述第一绘制图元列表相对于所述第二绘制图元列表出现新图元;
所述执行针对所述图元集合中的待合批图元集合,将所述待合批图元集合中待调整图元的显示层级调整为所述待合批图元集合中目标图元的显示层级的步骤之前,触发所述确定单元1502执行根据所述绘制状态对所述第一绘制图元列表中多个图元进行分组,得到图元集合的步骤。
在一种可能的实现方式中,所述装置还包括排序单元:
所述排序单元,用于在所述确定单元1502根据所述绘制状态对所述多个图元进行分组,得到图元集合之前,根据所述绘制状态和所述显示层级对所述第一绘制图元列表进行等价排序,等价排序结果中绘制状态相同图元相邻,且相同绘制状态的图元按照显示层级从低到高的顺序排列;
所述确定单元1502具体用于:
根据所述绘制状态和所述等价排序结果对所述多个图元进行分组,得到所述图元集合。
本申请实施例还提供了一种用于合批渲染的设备,该设备可以是图像处理设备,该图像处理设备可以是终端,以终端为智能手机为例:
图16示出的是与本申请实施例提供的终端相关的智能手机的部分结构的框图。参考图16,智能手机包括:射频(英文全称:Radio Frequency,英文缩写:RF)电路1610、存储器1620、输入单元1630、显示单元1640、传感器1650、音频电路1660、无线保真(英文全称:wireless fidelity,英文缩写:WiFi)模块1670、处理器1680、以及电源1690等部件。输入单元1630可包括触控面板1631以及其他输入设备1632,显示单元1640可包括显示面板1641,音频电路1660可以包括扬声器1661和传声器1662。本领域技术人员可以理解,图16中示出的智能手机结构并不构成对智能手机的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
存储器1620可用于存储软件程序以及模块,处理器1680通过运行存储在存储器1620的软件程序以及模块,从而执行智能手机的各种功能应用以及数据处理。存储器1620可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据智能手机的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器1620可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
处理器1680是智能手机的控制中心,利用各种接口和线路连接整个智能手机的各个部分,通过运行或执行存储在存储器1620内的软件程序和/或模块,以及调用存储在存储器1620内的数据,执行智能手机的各种功能和处理数据。可选的,处理器1680可包括一个或多个处理单元;优选的,处理器1680可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器1680中。
在本实施例中,终端中的处理器1680可以执行以下步骤:
获取第一图像帧对应的第一绘制图元列表,所述第一绘制图元列表中包括多个图元,每个所述图元具有对应的绘制状态和显示层级;
根据所述绘制状态对所述多个图元进行分组,得到图元集合;
针对所述图元集合中的待合批图元集合,将所述待合批图元集合中待调整图元的显示层级调整为所述待合批图元集合中目标图元的显示层级,所述目标图元是根据所述待合批图元集合中图元的显示层级和图元的可达区域确定的,所述图元的可达区域用于指示所述图元的显示层级的可调整范围;
根据调整后的显示层级对所述待合批图元集合中的图元进行合批,得到所述第一图像帧对应的第一合批结果;
根据所述第一合批结果进行所述第一图像帧的画面渲染。
该图像处理设备还可以是服务器,请参见图17所示,图17为本申请实施例提供的服务器1700的结构图,服务器1700可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上中央处理器(Central Processing Units,简称CPU)1722(例如,一个或一个以上处理器)和存储器1732,一个或一个以上存储应用程序1742或数据1744的存储介质1730(例如一个或一个以上海量存储设备)。其中,存储器1732和存储介质1730可以是短暂存储或持久存储。存储在存储介质1730的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对服务器中的一系列指令操作。更进一步地,中央处理器1722可以设置为与存储介质1730通信,在服务器1700上执行存储介质1730中的一系列指令操作。
服务器1700还可以包括一个或一个以上电源1726,一个或一个以上有线或无线网络接口1750,一个或一个以上输入输出接口1758,和/或,一个或一个以上操作系统1741,例如Windows ServerTM,Mac OS XTM,UnixTM,LinuxTM,FreeBSDTM等等。
在本实施例中,所述服务器1700中的中央处理器1722可以执行以下步骤;
获取第一图像帧对应的第一绘制图元列表,所述第一绘制图元列表中包括多个图元,每个所述图元具有对应的绘制状态和显示层级;
根据所述绘制状态对所述多个图元进行分组,得到图元集合;
针对所述图元集合中的待合批图元集合,将所述待合批图元集合中待调整图元的显示层级调整为所述待合批图元集合中目标图元的显示层级,所述目标图元是根据所述待合批图元集合中图元的显示层级和图元的可达区域确定的,所述图元的可达区域用于指示所述图元的显示层级的可调整范围;
根据调整后的显示层级对所述待合批图元集合中的图元进行合批,得到所述第一图像帧对应的第一合批结果;
根据所述第一合批结果进行所述第一图像帧的画面渲染。
根据本申请的一个方面,提供了一种计算机可读存储介质,所述计算机可读存储介质用于存储程序代码,所述程序代码用于执行前述各个实施例所述的合批渲染方法。
根据本申请的一个方面,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述实施例各种可选实现方式中提供的方法。
本申请的说明书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例例如能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,简称ROM)、随机存取存储器(Random Access Memory,简称RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术成员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。
Claims (15)
1.一种合批渲染方法,其特征在于,所述方法包括:
获取第一图像帧对应的第一绘制图元列表,所述第一绘制图元列表中包括多个图元,每个所述图元具有对应的绘制状态和显示层级;
根据所述绘制状态对所述多个图元进行分组,得到图元集合;
针对所述图元集合中的待合批图元集合,将所述待合批图元集合中待调整图元的显示层级调整为所述待合批图元集合中目标图元的显示层级,所述目标图元是根据所述待合批图元集合中图元的显示层级和图元的可达区域确定的,图元的可达区域用于指示图元的显示层级的可调整范围;
根据调整后的显示层级对所述待合批图元集合中的图元进行合批,得到所述第一图像帧对应的第一合批结果;
根据所述第一合批结果进行所述第一图像帧的画面渲染。
2.根据权利要求1所述的方法,其特征在于,根据所述待合批图元集合中图元的显示层级和图元的可达区域确定所述目标图元的方式,包括:
确定所述待合批图元集合中每个图元的显示层级被所述待合批图元集合中其他图元的可达区域覆盖的数量;
将被最多数量其他图元的可达区域覆盖的图元确定为所述目标图元;
相应的,所述待调整图元为可达区域覆盖所述目标图元的其他图元。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
确定所述第一绘制图元列表中每个图元的可达区域;
或者,确定所述待合批图元集合中每个图元的可达区域。
4.根据权利要求3所述的方法,其特征在于,所述第一绘制图元列表中还包括图元对应的绘制位置,将待确定可达区域的图元作为第一图元,所述第一绘制图元列表中除所述第一图元之外的图元作为第二图元,所述第一图元的可达区域的确定方式包括:
根据所述第一图元的绘制位置和所述第二图元的绘制位置,确定所述第二图元是否阻挡所述第一图元的显示层级的移动;
根据确定结果得到所述第一图元的可达区域。
5.根据权利要求4所述的方法,其特征在于,所述根据确定结果得到所述第一图元的可达区域,包括:
若所述第二图元阻挡所述第一图元的显示层级的移动,且所述第二图元与所述第一图元对应的绘制状态相同,根据所述第二图元的可达区域确定所述第一图元的可达区域。
6.根据权利要求1-5任一项所述的方法,其特征在于,在将所述待合批图元集合中待调整图元的显示层级调整为所述待合批图元集合中目标图元的显示层级之后,所述方法还包括:
通过链表对所述待调整图元调整后的显示层级进行记录。
7.根据权利要求1-5任一项所述的方法,其特征在于,所述获取第一图像帧对应的第一绘制图元列表之后,所述方法还包括:
比对所述第一绘制图元列表与第二图像帧对应的第二绘制图元列表,所述第二图像帧为所述第一图像帧的前一帧;
若比对结果表示所述第一绘制图元列表与所述第二绘制图元列表一致,根据所述第二图像帧对应的第二合批结果进行所述第一图像帧的画面渲染。
8.根据权利要求7所述的方法,其特征在于,所述根据所述第二图像帧对应的第二合批结果进行所述第一图像帧的画面渲染,包括:
若所述待合批图元集合中的图元全部位于合批结果图中,将所述第二合批结果作为所述第一合批结果,进行所述第一图像帧的画面渲染;
若所述待合批图元集合中存在未位于所述合批结果图中的第三图元,执行针对所述图元集合中的待合批图元集合,将所述待合批图元集合中待调整图元的显示层级调整为所述待合批图元集合中目标图元的显示层级的步骤。
9.根据权利要求7所述的方法,其特征在于,所述方法还包括:
若比对结果表示所述第一绘制图元列表与所述第二绘制图元列表不一致,执行针对所述图元集合中的待合批图元集合,将所述待合批图元集合中待调整图元的显示层级调整为所述待合批图元集合中目标图元的显示层级的步骤。
10.根据权利要求9所述的方法,其特征在于,所述第一绘制图元列表与所述第二绘制图元列表不一致,包括:
所述第一绘制图元列表中第四图元的绘制位置与所述第二绘制图元列表中所述第四图元的绘制位置不同;
所述方法还包括:
清除包括所述第四图元的图元集合对应的所有缓存信息。
11.根据权利要求9所述的方法,其特征在于,所述第一绘制图元列表与所述第二绘制图元列表不一致,包括:
所述第一绘制图元列表相对于所述第二绘制图元列表出现新图元;
所述执行针对所述图元集合中的待合批图元集合,将所述待合批图元集合中待调整图元的显示层级调整为所述待合批图元集合中目标图元的显示层级的步骤之前,所述方法还包括:
根据所述绘制状态对所述第一绘制图元列表中多个图元进行分组,得到图元集合。
12.根据权利要求1-5任一项所述的方法,其特征在于,所述根据所述绘制状态对所述多个图元进行分组,得到图元集合之前,所述方法还包括:
根据所述绘制状态和所述显示层级对所述第一绘制图元列表进行等价排序,等价排序结果中绘制状态相同图元相邻,且相同绘制状态的图元按照显示层级从低到高的顺序排列;
所述根据所述绘制状态对所述多个图元进行分组,得到图元集合,包括:
根据所述绘制状态和所述等价排序结果对所述多个图元进行分组,得到所述图元集合。
13.一种合批渲染装置,其特征在于,所述装置包括获取单元、确定单元、调整单元、合批单元和渲染单元:
所述获取单元,用于获取第一图像帧对应的绘制图元列表,所述绘制图元列表中包括多个图元,每个所述图元具有对应的绘制状态和显示层级;
所述确定单元,用于根据所述绘制状态对所述多个图元进行分组,得到图元集合;
所述调整单元,用于针对所述图元集合中的待合批图元集合,将所述待合批图元集合中待调整图元的显示层级调整为所述待合批图元集合中目标图元的显示层级,所述目标图元是根据所述待合批图元集合中图元的显示层级和图元的可达区域确定的,所述图元的可达区域用于指示所述图元的显示层级的可调整范围;
所述合批单元,用于根据调整后的显示层级对所述待合批图元集合中的图元进行合批,得到所述第一图像帧对应的合批结果;
所述渲染单元,用于根据所述第一图像帧对应的合批结果进行所述第一图像帧的画面渲染。
14.一种用于合批渲染的设备,其特征在于,所述设备包括处理器以及存储器:
所述存储器用于存储程序代码,并将所述程序代码传输给所述处理器;
所述处理器用于根据所述程序代码中的指令执行权利要求1-12任一项所述的方法。
15.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质用于存储程序代码,所述程序代码用于执行权利要求1-12任一项所述的方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2021100485591 | 2021-01-14 | ||
CN202110048559 | 2021-01-14 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114066714A true CN114066714A (zh) | 2022-02-18 |
Family
ID=80230651
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111643813.9A Pending CN114066714A (zh) | 2021-01-14 | 2021-12-29 | 一种合批渲染方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114066714A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114816629A (zh) * | 2022-04-15 | 2022-07-29 | 网易(杭州)网络有限公司 | 绘制显示对象的方法、装置、存储介质及电子装置 |
CN115049531A (zh) * | 2022-08-12 | 2022-09-13 | 深流微智能科技(深圳)有限公司 | 图像渲染方法、装置、图形处理设备及存储介质 |
CN117744187A (zh) * | 2024-02-20 | 2024-03-22 | 广州中望龙腾软件股份有限公司 | Cad绘图方法、装置、计算机设备和存储介质 |
WO2024082695A1 (zh) * | 2022-10-21 | 2024-04-25 | 华为技术有限公司 | 一种渲染指令的合批方法及装置 |
-
2021
- 2021-12-29 CN CN202111643813.9A patent/CN114066714A/zh active Pending
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114816629A (zh) * | 2022-04-15 | 2022-07-29 | 网易(杭州)网络有限公司 | 绘制显示对象的方法、装置、存储介质及电子装置 |
CN114816629B (zh) * | 2022-04-15 | 2024-03-22 | 网易(杭州)网络有限公司 | 绘制显示对象的方法、装置、存储介质及电子装置 |
CN115049531A (zh) * | 2022-08-12 | 2022-09-13 | 深流微智能科技(深圳)有限公司 | 图像渲染方法、装置、图形处理设备及存储介质 |
CN115049531B (zh) * | 2022-08-12 | 2022-10-25 | 深流微智能科技(深圳)有限公司 | 图像渲染方法、装置、图形处理设备及存储介质 |
WO2024082695A1 (zh) * | 2022-10-21 | 2024-04-25 | 华为技术有限公司 | 一种渲染指令的合批方法及装置 |
CN117744187A (zh) * | 2024-02-20 | 2024-03-22 | 广州中望龙腾软件股份有限公司 | Cad绘图方法、装置、计算机设备和存储介质 |
CN117744187B (zh) * | 2024-02-20 | 2024-05-14 | 广州中望龙腾软件股份有限公司 | Cad绘图方法、装置、计算机设备和存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114066714A (zh) | 一种合批渲染方法、装置、设备及存储介质 | |
US11344806B2 (en) | Method for rendering game, and method, apparatus and device for generating game resource file | |
CN110570505B (zh) | 一种图像渲染方法、装置、设备及存储介质 | |
KR102663617B1 (ko) | 증강 현실 객체의 조건부 수정 | |
CN106796734A (zh) | 针对数据可视化的性能优化 | |
WO2020107920A1 (zh) | 合并贴图的获取方法、装置、存储介质、处理器及终端 | |
EP2674919A2 (en) | Streaming light propagation | |
US20220312063A1 (en) | Methods and Systems for Graphics Rendering Assistance by a Multi-Access Server | |
US11126915B2 (en) | Information processing apparatus and information processing method for volume data visualization | |
JP2017520036A (ja) | モザイク画像の生成方法および装置 | |
CN111372122B (zh) | 一种媒体内容植入方法、模型训练方法以及相关装置 | |
JP2018045693A (ja) | 動画像背景除去方法及び動画像背景除去システム | |
CN107578467B (zh) | 一种医疗器械三维建模方法及装置 | |
CN111063008A (zh) | 一种图像处理方法、装置、设备及存储介质 | |
CN111491208B (zh) | 视频处理方法、装置、电子设备及计算机可读介质 | |
US11758295B2 (en) | Methods, systems, and media for generating compressed images | |
JP2022545598A (ja) | 仮想対象の調整方法、装置、電子機器、コンピュータ記憶媒体及びプログラム | |
CN111061921B (zh) | 一种图像布局实现方法、系统、终端设备和存储介质 | |
US20230033319A1 (en) | Method, apparatus and device for processing shadow texture, computer-readable storage medium, and program product | |
CN112233009A (zh) | 一种图片渲染方法、装置、设备和存储介质 | |
CN112587921A (zh) | 模型处理方法和装置、电子设备和存储介质 | |
CN109377552B (zh) | 图像遮挡计算方法、装置、计算设备及存储介质 | |
CN109302523B (zh) | 一种手机端和服务器端手机性能评估方法 | |
US20150189126A1 (en) | Controlling content frame rate based on refresh rate of a display | |
CN112843700A (zh) | 地形图像的生成方法、装置、计算机设备和存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |