一种图形渲染方法及其相关设备技术

技术编号:33545234 阅读:41 留言:0更新日期:2022-05-26 22:38
本申请实施例提供了一种图形渲染方法,所述方法包括:获取N个待渲染顶点的顶点数据;若所述GPU的负载量大于预设值,则根据所述N个待渲染顶点的顶点数据,从所述N个待渲染顶点中获取M个待渲染顶点,其中,所述M个待渲染顶点为在用户视角范围内可见的顶点;所述M为小于所述N的正整数;以及,将所述M个待渲染顶点的顶点数据传递至到所述GPU,以便所述GPU进行图形渲染。本申请在GPU的负载量较大的情况下,通过将在用户视角范围内不可见的顶点进行剔除,降低了GPU侧需要进行渲染处理的顶点数量,从而降低了GPU的负载。而降低了GPU的负载。而降低了GPU的负载。

【技术实现步骤摘要】
一种图形渲染方法及其相关设备


[0001]本申请涉及图像处理
,并且更具体地,涉及一种图形渲染方法、装置和计算机可读存储介质。

技术介绍

[0002]图形处理器(graphics processing unit,GPU)是一种专门用于图像运算的微处理器,常被用于进行图形渲染。
[0003]传统方案在进行图形渲染时,一般是由GPU来执行图像渲染的整个过程。但是,在GPU的负载量过大的情况下,例如,图形渲染的运算量较大(如重度图形显示的情况)或者GPU需要处理的其它运算较多(如GPU在进行图形渲染的同时还参与了大型科学计算)时,采用传统方案进行图形渲染方法会导致GPU的负载过高,进而影响GPU进行图像渲染时的性能。

技术实现思路

[0004]本申请提供一种图形渲染方法、装置和计算机可读存储介质,以减轻GPU进行图形渲染时的负载。
[0005]第一方面,本申请提供了一种图形渲染方法,所述方法应用于终端设备,所述终端设备包括图形处理器GPU,所述方法包括:获取N个待渲染顶点的顶点数据;本申请实施例中,终端设备中的CPU可以获取多个第一绘制命令draw call,所述多个第一draw call用于调用N个待渲染顶点的顶点数据,待渲染顶点的顶点数据可以包括但不限于顶点位置、法线、UV坐标、索引等;其中,draw call指令是指图形程序接口指令,draw call指令的数目与跨平台的图形程序接口的图形描绘次数相同,draw call指令具体可以包括但不限于glDrawArrays、glDrawElements等指令。
[0006]若所述GPU的负载量大于预设值,则根据所述N个待渲染顶点的顶点数据,从所述N个待渲染顶点中获取M个待渲染顶点,其中,所述M个待渲染顶点为在用户视角范围内可见的顶点;所述M为小于所述N的正整数;CPU可以首先判断当前GPU的负载量,其中,所述GPU的负载量可以与如下的至少一种有关:所述GPU渲染一帧图像时所需要处理的绘制命令draw call的数量、所述GPU渲染一帧图像时所需要处理的待渲染顶点的数量、所述GPU渲染一帧图像时所需要处理的待渲染纹理的数量以及所述GPU的频点占用。本申请实施例中,待渲染顶点的顶点数据可以是绘制一次图形所需要的全部顶点数据或者部分顶点数据。该待渲染顶点的顶点数据除了包含用户视角范围内的顶点数据,还可以包含用户视角范围之外的顶点数据。CPU对待渲染顶点的顶点数据进行处理,得到用户视角范围内的顶点数据,相当于是将待处理顶点数据中用户视角范围之外的顶点数据去除掉,从而得到位于用户视角范围内的顶点数据。
[0007]应理解,用户视角范围内的顶点数据可以是用户视角范围内可见的物体图像的顶点位置信息,通过对用户视角范围内的顶点数据的处理,能够最终得到用户视角范围内可
见的物体图像。
[0008]将所述M个待渲染顶点的顶点数据传递至到所述GPU,以便所述GPU进行图形渲染。
[0009]本申请实施例中,CPU可以根据所述M个待渲染顶点的顶点数据,更新所述多个第一draw call,以得到多个第二draw call,所述多个第二draw call用于调用所述M个待渲染顶点的顶点数据,并将所述多个第二draw call传递至到所述GPU。
[0010]在完成了顶点的裁剪之后,可以对裁剪后顶点的顶点数据进行更新。具体地,在裁剪完成之后,可以更新对应的顶点(vertex)数据和索引(indix)数据,并把这些数据作为draw call指令的数据输入,送入GPU的渲染管线(pipeline)。
[0011]通过上述方法,在GPU的负载量较大的情况下,通过将在用户视角范围内不可见的顶点进行剔除,降低了GPU侧需要进行渲染处理的顶点数量,从而降低了GPU的负载。
[0012]在一种可能的实现中,所述N个待渲染顶点用于组成多个待渲染的模型网格,每个待渲染的模型网格包括多个三角形网络,每个三角形网络的顶点由所述N个待渲染顶点中的多个待渲染顶点组成,所述根据所述N个待渲染顶点的顶点数据,从所述N个待渲染顶点中获取M个待渲染顶点,包括:
[0013]根据每个待渲染的模型网格中三角形网络的顶点的顶点数据,剔除所述多个待渲染的模型网格中全部或部分顶点在用户视角范围内不可见的模型网格,以得到剔除后的多个模型网格,所述剔除后的多个模型网格包括M个待渲染顶点。
[0014]本申请实施例中,裁剪剔除(culling)可以指将场景中不可见的模型网格剔除,最终只有可见的模型网格参与渲染计算。裁剪剔除可以包括背面剔除、视锥体剔除、遮挡剔除中的至少一种,CPU可以从顶点buffer中获取多个待渲染的模型网格mesh,模型网格可以用三角形网格(或者称之为三角形网络)表示,每个三角形网络由三个顶点构成,顶点的顶点数据可以包括但不限于位置、法线、UV坐标等。一个顶点可被多个相邻三角形共享。模型网格越复杂,三角形顶点数量越大。
[0015]在一种可能的实现中,所述方法还包括:
[0016]获取当前中央处理器CPU可用的计算资源;
[0017]基于所述计算资源确定所述多个待渲染的模型网格中每个待渲染的模型网格包括的三角形网络数量;其中,若所述计算资源越多,则每个待渲染的模型网格包括的三角形网络数量越多,若所述计算资源越少,则每个待渲染的模型网格包括的三角形网络数量越少。
[0018]本申请实施例中,CPU可以调节每个模型网格包括的三角形网络的个数,若模型网格包括的三角形网络的个数多,则CPU侧执行剔除Culling的负载小(执行剔除操作的次数降低),但模型网格被剔除的概率减低,导致GPU侧的负载变大(模型网格被剔除的概率减低,使得剩余的待渲染的顶点数量变多,进而使得GPU侧的负载变大);若模型网格包括的三角形网络的个数少,则CPU侧执行剔除Culling的负载大(执行剔除操作的次数变多),且模型网格被剔除的概率变高,导致GPU侧的负载变小(模型网格被剔除的概率变大,使得剩余的待渲染的顶点数量变少,进而使得GPU侧的负载变小)。
[0019]具体的,CPU可以先确定每个模型网格包括的三角形网络的数量为1,并评估CPU和GPU负载,如果CPU侧负载过重,则向上调每个模型网格包括的三角形网络的数量,从而动态的调整CPU和GPU之间的负载。
[0020]本实施例中,CPU可以基于实际CPU的负载情况动态设置模型网格包括的三角形网络数量,进而可以适配具有不同CPU算力的移动设备。
[0021]在一种可能的实现中,所述根据每个待渲染的模型网格中三角形网络的顶点的顶点数据,剔除所述多个待渲染的模型网格中全部或部分顶点在用户视角范围内不可见的模型网格,包括:
[0022]根据每个待渲染的模型网格中三角形网络的顶点的顶点数据,通过背面剔除、视锥体剔除以及遮挡剔除中的至少一种,剔除所述多个待渲染的模型网格中全部或部分顶点在用户视角范围内不可见的模型网格。
[0023]本申请实施例中,CPU可以根据每个模型本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种图形渲染方法,其特征在于,所述方法应用于终端设备,所述终端设备包括图形处理器GPU,所述方法包括:获取N个待渲染顶点的顶点数据,所述N为正整数;若所述GPU的负载量大于预设值,则根据所述N个待渲染顶点的顶点数据,从所述N个待渲染顶点中获取M个待渲染顶点,其中,所述M个待渲染顶点为在用户视角范围内可见的顶点;所述M为小于所述N的正整数;以及,将所述M个待渲染顶点的顶点数据传递到所述GPU,以便所述GPU进行图形渲染。2.根据权利要求1所述的方法,其特征在于,所述N个待渲染顶点用于组成多个待渲染的模型网格,每个待渲染的模型网格包括多个三角形网络,每个三角形网络的顶点由所述N个待渲染顶点中的多个待渲染顶点组成,所述根据所述N个待渲染顶点的顶点数据,从所述N个待渲染顶点中获取M个待渲染顶点,包括:根据每个待渲染的模型网格中三角形网络的顶点的顶点数据,剔除所述多个待渲染的模型网格中全部或部分顶点在用户视角范围内不可见的模型网格,以得到剔除后的多个模型网格,所述剔除后的多个模型网格包括所述M个待渲染顶点。3.根据权利要求2所述的方法,其特征在于,所述方法还包括:获取当前中央处理器CPU可用的计算资源;基于所述计算资源确定所述多个待渲染的模型网格中每个待渲染的模型网格包括的三角形网络数量;其中,若所述计算资源越多,则每个待渲染的模型网格包括的三角形网络数量越多,若所述计算资源越少,则每个待渲染的模型网格包括的三角形网络数量越少。4.根据权利要求2或3所述的方法,其特征在于,所述根据每个待渲染的模型网格中三角形网络的顶点的顶点数据,剔除所述多个待渲染的模型网格中全部或部分顶点在用户视角范围内不可见的模型网格,包括:根据每个待渲染的模型网格中三角形网络的顶点的顶点数据,通过背面剔除、视锥体剔除以及遮挡剔除中的至少一种,剔除所述多个待渲染的模型网格中全部或部分顶点在用户视角范围内不可见的模型网格。5.根据权利要求1至4任一所述的方法,其特征在于,所述GPU的负载量与如下的至少一种有关:所述GPU渲染一帧图像时所需要处理的绘制命令draw call的数量;所述GPU渲染一帧图像时所需要处理的待渲染顶点的数量;所述GPU渲染一帧图像时所需要处理的待渲染纹理的数量;或者所述GPU的频点占用。6.根据权利要求1至5任一所述的方法,其特征在于,所述获取N个待渲染顶点的顶点数据,包括:获取多个第一绘制命令draw call,所述多个第一draw call用于调用N个待渲染顶点的顶点数据;相应的,所述将所述M个待渲染顶点的顶点数据传递至到所述GPU,包括:根据所述M个待渲染顶点的顶点数据,更新所述多个第一draw call,以得到多个第二draw call,所述多个第二draw call用于调用所述M个待渲染顶点的顶点数据;将所述多个第二draw call传递至到所述GPU。7.一种图形渲染方法,其特征在于,所述方法应用于终端设备,所述终端设备包括CPU和GPU,所述方法包括:
所述CPU获取多个第一draw call,所述多个第一draw call用于调用N个待渲染顶点的顶点数据;若所述CPU的负载量大于预设值,则所述CPU将所述多个第一draw call传递至所述GPU;所述GPU根据所述N个待渲染顶点的顶点数据,从所述N个待渲染顶点中获取M个待渲染顶点,其中,所述M个待渲染顶点为在用户视角范围内可见的顶点;所述M为小于所述N的正整数;所述GPU根据所述M个待渲染顶点的顶点数据,更新所述多个第一draw call,以得到多个第二draw call,所述多个第二draw call用于调用所述M个待渲染顶点的顶点数据;以及,所述GPU根据所述多个第二draw call进行图形渲染。8.根据权利要求7所述的方法,其特征在于,每个第一draw call包括函数名,所述方法还包括:所述CPU根据所述N个draw call的函数名以及调用的待渲染顶点的顶点数据,生成P个目标draw call,其中所述P个目标draw call用于表示所述N个draw call,且每个目标draw call用于表示所述N个draw call中的一部分draw call,所述一部分draw call的函数名以及调用的待渲染顶点的顶点数据相同;所述CPU将每个目标draw call传递至一个第一缓存器buffer,并基于计算着色器调用(compute shader调用)来触发所述GPU从P个第一buffer中获取所述P个目标draw call,其中,每次compute shader调用可触发所述GPU从一个第一buffer中获取一个目标draw call。9.根据权利要求7或8所述的方法,其特征在于,所述方法还包括:所述GPU将所述M个待渲染顶点的顶点数据写入至非直接渲染缓存器(indirect draw buffer);相应的,所述GPU根据所述多个第二draw call进行图形渲染,包括:所述CPU基于非直接渲染调用(indirect draw调用)触发所述GPU从所述indirect draw buffer中获取所述M个待渲染顶点的顶点数据,以便所述CPU根据所述多个第二draw call进行图形渲染。10.根据权利要求7至9任一所述的方法,其特征在于,所述N个待渲染顶点用于组成多个待渲染的模型网格,每个待渲染的模型网格包括多个三角形网络,每个三角形网络的顶点由所述N个待渲染顶点中的多个待渲染顶点组成,所述根据所述N个待渲染顶点的顶点数据,从所述N个待渲染顶点中获取M个待渲染顶点,包括:根据每个待渲染的模型网格中三角形网络的顶点的顶点数据,剔除所述多个待渲染的模型网格中全部或部分顶点在用户视角范围内不可见的模型网格,以得到剔除后的多个模型网格,所述剔除后的多个模型网格包括M个待渲染顶点。11.根据权利要求10所述的方法,其特征在于,所述根据每个待渲染的模型网格中三角形网络的顶点的顶点数据,剔除所述多个待渲染的模型网格中全部或部分顶点在用户视角范围内不可见的模型网格,包括:根据每个待渲染的模型网格中三角形网络的顶点的顶点数据,通过背面剔除、视锥体剔除以及遮挡剔除中的至少一种,剔除所述多个待渲染的模型网格中全部或部分顶点在用
户视角范围内不可见的模型网格。12.根据权利要求7至11任一所述的方法,其特征在于,所述CPU的负载量与如下的至少一种有关:所述CPU进行一帧图像的渲染处理所需的时间;所述CPU进行一帧图像的渲染处理时所需要处理的API调用的数量;所述CPU的频点占用。13.一种图形渲染装置,其特征在于,所述装置应用于终端设备,所述终端设备包括图形处...

【专利技术属性】
技术研发人员:杨程云王术吴江铮
申请(专利权)人:华为技术有限公司
类型:发明
国别省市:

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

1