CN111724293A - 图像渲染方法及装置、电子设备 - Google Patents

图像渲染方法及装置、电子设备 Download PDF

Info

Publication number
CN111724293A
CN111724293A CN201910224224.3A CN201910224224A CN111724293A CN 111724293 A CN111724293 A CN 111724293A CN 201910224224 A CN201910224224 A CN 201910224224A CN 111724293 A CN111724293 A CN 111724293A
Authority
CN
China
Prior art keywords
instruction
target
rendering
image
instructions
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.)
Granted
Application number
CN201910224224.3A
Other languages
English (en)
Other versions
CN111724293B (zh
Inventor
张璠
顾宝成
魏冬
高泉
邓一鑫
彭新超
罗佳
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN201910224224.3A priority Critical patent/CN111724293B/zh
Priority to PCT/CN2020/078663 priority patent/WO2020192417A1/zh
Publication of CN111724293A publication Critical patent/CN111724293A/zh
Priority to US17/482,124 priority patent/US11816775B2/en
Application granted granted Critical
Publication of CN111724293B publication Critical patent/CN111724293B/zh
Priority to US18/481,068 priority patent/US20240037836A1/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Graphics (AREA)
  • Image Generation (AREA)
  • Image Processing (AREA)

Abstract

本申请公开了一种图像渲染方法及装置、电子设备等,可以应用于终端领域。该方法包括:中央处理器CPU获取用于渲染图像帧的图像指令流,并将该图像指令流与之前的图像指令流比较;当两个图像指令流中存在相同的绘制指令时,指示图形处理器GPU基于之前生成的绘制目标对上述该图像帧进行渲染。也就是说,GPU可以重用不同图像帧中相同绘制指令的绘制目标,从而减少了该绘制目标的生成过程,进而降低了GPU的负载。

Description

图像渲染方法及装置、电子设备
技术领域
本申请涉及计算机领域,尤其涉及一种图像渲染方法及装置、电子设备等。
背景技术
随着终端技术的快速发展,电脑和手机等终端均可以通过安装不同的应用软件实现各种各样的功能。终端中某些应用软件处于运行状态时,会同时使用终端中的中央处理器(Central Processing Unit,CPU)和图形处理器(Graphics Processing Unit,GPU)。
其中,GPU可以在CPU的控制下实现图像渲染功能,该图像渲染包括执行几何变换、投影变换、透视变换和窗口剪裁等操作,以及根据材质与光影信息生成图像的过程。具体地,GPU接收CPU发送的待渲染图像帧的图像指令流,并根据该图像指令流对待渲染图像帧执行图像渲染操作,以得到该待渲染图像帧的显示数据,并将该显示数据发送至显示器,显示器根据该显示数据进行图像显示。其中,图像指令流通常包括多个绘制指令。绘制指令用于生成渲染目标,以得到待渲染图像帧的显示数据。
相关技术中,GPU接收CPU向其发送的图像指令流后,会根据该图像指令流中的每个绘制指令生成渲染目标,导致GPU的负载较大,图像渲染的功耗较高。
发明内容
本申请提供了一种图像渲染方法及装置、电子设备等,以降低图像渲染时GPU的负载。
下面通过不同的方面介绍本申请。应理解的是,以下不同方面的实现方式和有益效果可互相参考。
本申请中出现的“第一”和“第二”仅为了区分两个对象,并没有先后顺序的意思。
第一方面,本申请示例性实施例提供了一种图像渲染方法。该方法包括:获取待渲染图像帧(也可以称为第一图像帧)的第一图像指令流,该第一图像指令流包括一个或多个第一绘制指令。当存在一个或多个第一绘制指令,该一个或多个第一绘制指令与已渲染图像帧(也可以称为第二图像帧)的第二图像指令流中的一个或多个绘制指令相同时,指示图形处理器基于可重用绘制目标对所述待渲染图像帧进行渲染,其中,该可重用绘制目标为基于已渲染图像帧中的相同的那一个或多个绘制指令所生成的绘制目标。
“绘制指令”通常包括用于生成绘制目标的绘制参数,绘制指令相同通常意味着这些绘制参数相同。其中,一个或多个可理解为至少一个。
下面将第二图像指令流中的一个或多个绘制指令称为“第二绘制指令”;将第一图像指令流与第二图像指令流中相同的绘制指令分别称为“第一目标绘制指令”和“第二目标绘制指令”。应理解的是,“第一目标绘制指令”和“第二目标绘制指令”都可以包含一个或多个绘制指令。
可见,通过本申请实施例提供的图像渲染方法,使得图形处理器能够重用已经生成的绘制目标,减少了绘制目标的生成功耗,有效地降低了GPU的负载,进而降低了整个图像渲染过程的功耗。
需要说明的是,上述方面提供的图像渲染方法通常由CPU执行(以下以CPU作为执行主体为例来进行说明),前述的图形处理器通常为GPU,但是该方法也可以应用于其它类型的处理器,例如该方法的执行主体可以为应用处理器(应用处理器有时认为是CPU的一种具体类型)。该方法中涉及的“图形处理器”也可以是随着技术发展出现的新的其它类型的图形处理器。
在一些实现方式下,一条绘制指令用于生成一个绘制目标。在一些实现方式下,绘制指令也可以继续被细分,比如一条绘制指令可以包括多行指令。
在一些实现方式下,“可重用绘制目标”是在所述第二图像帧被渲染的时候,所述图像处理器基于所述第二目标绘制指令所生成的绘制目标。在另一些实现方式下,“可重用绘制目标”是在所述第二图像帧被渲染之前生成的,即“可重用绘制目标”是图形处理器在渲染第二图像帧之前的一个图像帧时生成的,之后在渲染所述第二图像帧时该绘制目标被确定为第二目标绘制指令的绘制目标。
在一些实现方式中,绘制参数包括以下参数中的一种或多种:绘制模型的顶点信息、颜色信息和/或渲染材质信息。相同的绘制指令意味着绘制参数中的一个或多个相同。
在一些实现方式中,CPU可以将重复绘制指令替换为目标指示指令,将执行替换后的第一图像指令流发送给图形处理器。在另一些实现方式中,CPU删除重复绘制指令,并将删除重复绘制指令后的第一图像指令流和所述目标指示指令分别发送给所述GPU,第一图像指令流中的重复绘制指令可以用空指令代替,或用跳转指令代替,其中跳转指令用于指示GPU跳转到所述目标指示指令。这里的目标指示指令用于指示图形处理器获取可重用绘制目标,这样图形处理器就可以基于该可重用绘制目标对图像帧进行渲染,不需要执行该绘制目标的生成操作,从而降低了自身的功耗。
应理解的是,CPU可以将相同的绘制指令全部替换掉或删除掉,也可以选择其中的部分替换掉或删除掉,所以前述“重复绘制指令”包括所述第一目标绘制指令中的一个或多个绘制指令。
在一些实现方式中,绘制指令中还可以携带有存储指示信息。该存储指示信息用于指示对应的绘制目标的存储位置。因此,CPU可以通过第二目标绘制指令的存储指示信息获取所述可重用绘制目标的存储位置。目标指示指令中包括可重用绘制目标的存储地址,图形处理器在接收到该目标指示指令后,可以在该存储地址指示的存储位置中获取该可重用绘制目标。
在一些实现方式中,绘制指令中还可以携带有待生成的绘制目标的标识。因此,CPU可以获取每个绘制目标的标识,并通过该目标指示指令指示图形处理器获取指定绘制目标标识所指示的可重用绘制目标。例如,目标指示指令中携带可重用绘制目标的绘制目标标识,图形处理器在接收到该目标指示指令后,可以根据该绘制目标标识获取对应的可重用绘制目标。其中,绘制目标标识用于唯一地标识绘制目标。
在一些实现方式中,方法还包括:将一个或多个第一绘制指令与第二图像指令流中的一个或多个第二绘制指令进行比较,以确定所述第一目标绘制指令(或第二目标绘制指令)。
绘制指令的比较过程的具体实现方式有很多种,在一些实现方式中,根据指令属性对一个或多个第一绘制指令划分逻辑组,并将位于相同逻辑组内的第一绘制指令和第二图像指令流中的绘制指令进行比较。通常,同一个逻辑组包含的第一绘制指令的至少一项指令属性相同,不同的逻辑组包含的第一绘制指令的至少一项指令属性不同。举例来说,将多个第一绘制指令分别划分到背景逻辑组A和人物逻辑组A,第二图像指令流中的第二目标绘制指令也按照类似的方式划分到背景逻辑组B和人物逻辑组B。然后比较背景逻辑组A中的第一绘制指令和背景逻辑组B中的第二绘制指令,以及比较人物逻辑组A中的第一绘制指令和人物逻辑组B中的第二绘制指令。换句话说,位于相同逻辑组内且相同的指令是确定出的第一目标绘制指令和第二目标绘制指令。由于对于根据具有相同指令属性的多个第一绘制指令生成的多个绘制目标,在渲染过程中能够对该多个绘制目标进行合并渲染,因此,通过将一个或多个第一绘制指令划分至不同的逻辑组,能够使得在渲染过程中对同一逻辑组对应的绘制目标进行合并渲染,以进一步降低图形处理器的负载。且若在后续图像帧中需要重用该绘制目标,也能够降低该后续图像帧的图像渲染过程中出现渲染错误的概率。
指令属性包括以下中的一项或两项:绘制指令采用的绘制功能(例如透明绘制功能)或绘制指令携带的顶点信息和/或顶点信息的变化情况;其中,顶点信息用于标识绘制指令携带的绘制模型。
在一些实现方式中,根据指令属性对一个或多个第一绘制指令划分逻辑组的实现过程,可以包括:当至少两条第一绘制指令包含的顶点坐标内对应指定维度的值相等时,将至少两条第一绘制指令均划分至第一逻辑组,顶点坐标用于表征顶点信息,顶点信息用于标识绘制指令携带的绘制模型;和/或,当第一绘制指令包括的透明绘制功能处于使能状态时,将第一绘制指令划分至第二逻辑组;和/或,当第一绘制指令包括的透明绘制功能处于非使能状态时,将第一绘制指令划分至第三逻辑组,第一逻辑组、第二逻辑组和第三逻辑组包含的第一绘制指令的指令属性不同。
绘制指令的比较过程的具体实现方式有很多种,在另一些实现方式中,按照绘制指令的优先级由高到低的顺序,将相同优先级的绘制指令进行比较,其中,优先级用于指示绘制指令相对于已渲染图像帧重复的可能性,且可能性与优先级正相关。这种方式可以与前述逻辑分组方式结合使用,也可以单独使用。优先级用于指示绘制指令变化的可能性,变化的可能性越低的,优先级越高,则可以优先被比较,也就是说能够尽量提前获得可重用绘制目标,提高比较效率。应理解的是,优先级也可以用来指示绘制指令不重复的可能性,这样可能性与优先级负相关。
在一些实现方式中,优先级可以通过下述方式确定:根据绘制指令携带绘制模型的情况确定该绘制指令的优先级。绘制模型可以理解为根据绘制指令生成的绘制目标的基础模型。例如绘制模型为某一个人物的基本形态模型,则GPU运行绘制指令后,以这个基本形态模型为基础,显示这个人物被遮挡的状态的图像。该实现方式中,绘制指令携带有绘制目标的绘制模型信息(例如顶点坐标),该绘制模型信息用于指示生成绘制目标时所基于的绘制模型,可以根据绘制指令中绘制模型信息等,预估根据该绘制指令生成的绘制目标的目标参数,并根据该目标参数确定绘制指令的优先级。在一些实现方式下,该优先级与该目标参数正相关,例如,当该目标参数大于或等于指定参数阈值时,将该绘制指令的优先级设置为最高优先级,当该目标参数小于指定参数阈值时,将该绘制指令的优先级设置为最低优先级,其中,该目标参数可以为生成的2D图形的表面积或生成绘制目标的功耗等参数。
在另一些实现方式中,优先级可以通过下述方式确定:将携带有被标记的目标绘制模型信息的绘制指令的优先级设置为最高优先级,将未携带有目标绘制模型信息的绘制指令的优先级设置为最低优先级。该目标绘制模型信息用于指示被标记的绘制模型。预先对某些不太发生变化或变化不大的绘制模型进行标记,就可以优先对该携带有该绘制模型对应信息的绘制指令进行比较。
在另一些实现方式中,优先级可以通过下述方式确定:根据实际需要,预先在绘制模型库中确定指定绘制模型,在确定绘制指令的优先级时,可将携带有指定绘制模型的绘制模型信息的绘制指令的优先级设置为最高优先级,将未携带有指定绘制模型的绘制模型信息的绘制指令的优先级设置为最低优先级。该指定绘制模型可以为绘制模型的面积大于或等于指定面积阈值的绘制模型,或者,可以是预估根据该绘制模型生成绘制目标的功耗大于或等于指定功耗阈值的绘制模型,或者,也可以人为根据经验指定的绘制模型。
需要说明的是,比较的是待渲染图像帧和已渲染图像帧中的绘制指令,那么这两者中的绘制指令通常通过同一种方式确定优先级或划分逻辑分组。已渲染图像帧的绘制指令的逻辑分组划分或优先级确定可以是之前确定的,也可以是在处理待渲染图像帧的时候确定的。待渲染图像帧的逻辑分组划分或优先级确定并非一定要在比较绘制指令时确定,如果可能的话,也可以在更早之前划分好或确定好。
在一些实现方式中,绘制指令的分组或优先级划分的规则可以是预先配置好的。规则来源于对历史绘制指令的智能分析。分析方法包括大数据分析算法、各种分类算法或机器学习算法等。例如,经过历史分析后获得某种属性的绘制指令是当前场景下或当前时间段是一直重复出现的(例如图像中一直不发生变化的背景),那么这些指令可以被划分到同一个逻辑组,该逻辑组也可以认为是静态指令组(或称静态组),并将该静态指令组的绘制目标保存下来;类似的,另外一些具备某种特点的绘制指令从来没有重复出现过,那么这些绘制指令可以被划分到同一个逻辑组,该逻辑组也可以认为是动态指令组(或称动态组)。
在一些实现方式中,所述方法还包括:当确定出重复绘制指令但是重复绘制指令的当前优先级不为最高时,将该重复绘制指令的优先级设置为最高。这样之后当前待渲染图像帧作为“已渲染图像帧”时,就可以优先比较该重复绘制指令。
在一些实现方式中,方法还可以包括:获取所述第一图像帧所属进程的进程标识;相应的,获取所述第一图像帧的第一图像指令流的实现过程可以包括:当进程标识被记载在目标进程列表中时,获取所述第一图像指令流,目标进程列表记载有至少一个可优化进程的进程标识。在一些实现方式中,该可优化进程可以为进程功耗对发热产生严重影响的进程。例如,可以根据进程的历史功耗情况获取进程的历史平均功耗,当某进程的历史平均功耗大于指定功耗阈值时,将该进程确定为可优化进程。或者,当图像帧中包括有面积大于指定面积阈值的绘制模型时,将该图像帧确定为可优化进程。通过预先标识可优化进程,可以使得本方法的执行更有针对性,效率也更高。
在一些实现方式中,已渲染图像帧为已完成渲染的图像帧中与图像帧时序相邻的图像帧。即已渲染图像帧可以为该图像帧的上一帧图像。由于在已完成渲染的多个图像帧中,该上一帧图像为该多个图像帧中与该图像帧的图像内容相似概率最高的图像帧,因此,当该已渲染图像帧为该上一帧图像时,相较于其它已完成渲染的图像帧,该上一帧图像的第二图像指令流中绘制指令与第一图像指令流中绘制指令相同的概率最大,在后续图像渲染过程中,能够较多地利用该上一帧图像中的绘制目标对该图像帧进行图像渲染,能够较大程度地降低图形处理器的负载。
在一些实现方式中,所述方法还包括:监控连续两个图像帧的图像指令流。监控连续两个图像帧的图像指令流以便于比较当前待渲染图像帧和上一图像帧的图像指令流中的指令。另外,通过监控连续两个图像帧的图像指令流,还可以实时调整绘制指令的逻辑分组或优先级。例如,通过历史数据统计出某种绘制指令的初始分组为静态组,但通过监控发现这种绘制指令已经不再在下一个图像帧中重复出现了,那么可将该绘制指令从静态组调整到动态组。
第二方面,本申请示例性实施例提供了一种图像渲染装置,装置包括一个或多个模块,这一个或多个模块用于实现前述第一方面任意一种图像渲染方法。
第三方面,本申请实施例提供了一种电子设备,例如终端。该电子设备包括处理器和存储器。处理器通常包括CPU和GPU。所述存储器用于存储计算机程序;所述CPU用于执行所述存储器存储的所述计算机程序时实现前述第一方面任意一种图像渲染方法。所述GPU用于接收CPU发送的指令,并根据指令执行图像渲染。这两种类型的处理器可以为两个芯片,也可以集成在同一块芯片上。
第四方面,本申请实施例提供了一种存储介质,该存储介质可以是非易失性的。该存储介质内存储有计算机程序,所述计算机程序在被处理器执行时使得所述处理器实现前述第一方面任意一种图像渲染方法。
第五方面,本申请实施例提供了一种包含计算机可读指令的计算机程序或计算机程序产品,当计算机程序或计算机程序产品在计算机上运行时,使得计算机执行前述第一方面任意一种图像渲染方法。该计算机程序产品中可以包括一个或多个程序单元,用于实现前述方法。
第六方面,本申请提供了一种芯片,例如CPU。所述芯片包括逻辑电路,所述逻辑电路可以为可编程逻辑电路。当所述芯片运行时用于实现前述第一方面任意一种图像渲染方法。
第七方面,本申请提供了一种芯片,例如CPU。所述芯片包括一个或多个物理核、以及存储介质,所述一个或多个物理核在读取所述存储介质中的计算机指令后实现前述第一方面任意一种图像渲染方法。
第八方面,本申请提供一种图像渲染方法,该方法可以由GPU(也可以称为第二处理器)执行。该方法包括:接收第一处理器(例如CPU)发送的图像指令流,所述图像指令流包括一个或多个绘制指令。通常每一个所述绘制指令携带有用于生成绘制目标的绘制参数。根据所述一个或多个绘制指令以及可重用绘制目标多所述图像帧进行渲染。所述可重用绘制目标是第二处理器根据第一处理器发送的图像指令流或目标指示指令从存储装置中获取的。现有技术中,对于所有绘制目标,GPU都要生成,但是利用本申请提供的方法,GPU不需要生成可重用绘制目标,只需要从存储装置中获取,减少了因“生成”带来的负载,从而降低了GPU负载。
第九方面,本申请提供一种图像渲染装置,该装置包括一个或多个单元用于实现第八方面提供的方法。
第十方面,本申请提供一种芯片,例如GPU。该芯片包括一个或多个物理核、以及存储介质,所述一个或多个物理核在读取所述存储介质中的计算机指令后实现前述第八方面的图像渲染方法。
第十一方面,本申请提供一种芯片,例如GPU。该芯片包括逻辑电路,所述逻辑电路可以为可编程逻辑电路。当所述芯片运行时用于实现前述第八方面的图像渲染方法。
综上所述,相较于相关技术,本申请提供的图像渲染方法能够使得图形处理器直接使用已生成的可重用绘制目标,减少了生成绘制目标的功耗,有效降低了图形处理器负载和功耗,从而降低了整个图像渲染过程的功耗。
另外,本申请还具有前述各个方面中所提到的效果以及其它可推导出的技术效果,在此不再赘述。
附图说明
图1是本申请提供的一种图像渲染方法的原理示意图。
图2是本申请提供的一种电子设备的结构示意图。
图3和图4是本申请提供的一种电子设备中多个模块的结构示意图。
图5是本申请提供的一种图像渲染方法的流程图。
图6是本申请提供的某游戏的游戏画面示意图。
图7是本申请提供的一个游戏角色的渲染模型的示意图。
图8是本申请提供的对绘制指令的具体处理过程的示意图。
图9是本申请提供的一个待渲染图像帧的示意图。
图10是本申请提供的一种对图9所示的待渲染图像帧进行图像渲染过程中GPU频点的曲线示意图。
图11是本申请提供的一种对图9所示的待渲染图像帧进行图像渲染过程中整机功耗示意图。
图12是本申请提供的一种图像指令流示意图。
图13是本申请提供的一种图像渲染装置的结构示意图。
图14是本申请提供的一种图像渲染装置的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
为便于理解,下面先对本申请实施例中涉及的名词进行解释。
本申请中出现的“多个”若无特殊说明指代“两个或两个以上”或“至少两个”。本申请中出现的“A和/或B”至少包括“A”、“B”和“A和B”三种情况。
指令流:一个或多个计算机可读指令组成的指令集合。在一些实现方式中,指令可以包括指令名称(或称函数名称)和参数等信息,指令名称也可以认为是“参数”的一种。在一些实现方式中,指令还可以继续拆分成更多的指令,例如一个指令内部展开后本质是调用多个函数,每个函数又有各自的参数,在该种情况下,该指令的参数包括内部的函数名称以及函数的参数。计算机系统和程序语言有多种,所以指令存在多种形式,本申请对指令的具体形式不做限定。
本申请中“相同的指令”通常意味着该指令被执行后得到的结果是相同的,例如绘制指令被执行后生成的绘制目标是相同的。但是本申请并不限制这种“相同”是毫无差别的,在一些实施例中相同也可以是“近似”或“相似”,例如,某些游戏画面连续两帧画面中出现的某一个人物有微小的差别,这种差别可以不显示出来,那么前一帧的人物是可以重用在后一帧中的,生成这个人物的绘制指令也可以认为是相同的。当存在指令名称时,指令名称通常也需要相同,例如若绘制指令包含应用程序接口(application programinterface,API)调用,那么调用的函数名称相同。从另一个角度说,相同的指令意味着指令包括的参数相同。
图像指令流(或称图形指令流(graphic command stream)):包含一个或多个绘制指令,GPU通过运行图像指令流中的绘制指令得到该图像帧的显示数据,以供显示器根据该显示数据进行图像显示。
绘制指令:用于绘制(也称生成)图像帧中的绘制目标的指令,例如开放图形库(open graphics library,OpenGL)的绘制调用(draw call)(即CPU对底层图形绘制接口的调用命令)。可选地,该绘制目标可以通过存储在内存中的数据表示。相应的,根据该图像指令流生成的绘制目标的集合可以组成对应图形帧的显示数据。示例地,假设某个图像帧包括人物A和人物B,该图像帧的图像指令流可以包括用于生成人物A的绘制目标的一个或多个绘制指令,及生成人物B的绘制目标的一个或多个绘制指令,相应的,GPU通过运行这些绘制指令即可得到该图像帧的显示数据。在OpenGL中,该绘制指令也称为渲染指令,该绘制目标也称为渲染目标。本申请将以OpenGL为例来介绍实现方法,但本申请不局限于OpenGL,也可以应用于其他类型的图形库。绘制指令中携带有绘制参数。该绘制参数用于生成绘制目标。进一步的,绘制指令中还可以携带绘制模型信息,该绘制模型信息用于指示生成绘制目标时所基于的绘制模型。GPU通过运行绘制指令可以生成以该绘制模型为基础形状,且形状特性满足绘制参数的绘制目标。
举例来说,绘制指令中携带的绘制模型为正面站立的亚瑟王(亚瑟王是游戏中的一个角色)的绘制模型信息,携带的绘制参数用于指示绘制模型整体向左转30度,以及携带指示亚瑟王在该图像帧中的光照和材料等参数信息,则GPU运行该绘制指令后,可以得到表征亚瑟王整体向左转30度,且被添加了光照和材料等信息的图像数据。
本申请中所述的“绘制指令”可以是一条指令,例如一个API调用函数;也可以是多条指令的集合,例如在openGL中,一个draw call通常包含多个API调用函数,这一个drawcall可以认为是一个绘制指令,完成一次绘制。一个draw call可以绘制一个绘制目标,也可以多个draw call绘制一个绘制目标或一个draw call绘制多个绘制目标。本申请对如何划分绘制目标不做限定,例如一个房子是一个不可分的绘制目标,或者一个房子是一个绘制目标,但该绘制目标又包括房顶和墙这两个绘制目标。
绘制模型:借助实体或者虚拟表现构成的客观阐述形态和/或结构的一种表达目的的物件。绘制模型的形状和绘制目标的形状均可以由具有相对位置关系的离散点阵表示。该离散点阵可以包括至少一个点,该离散点阵中的每个点均可以称为顶点。顶点的位置可以用顶点信息表示。也即是,绘制模型和绘制目标均可以由顶点信息标识。该顶点信息可以包括顶点坐标等信息。例如,亚瑟王的绘制模型是指通过具有相对位置关系的多个顶点表示的物件,此时,每个顶点的位置信息可以为顶点的三维坐标。
终端可以通过安装不同的应用软件实现各种各样的功能。在终端提供多样化的功能的同时,如何提升用户对终端的使用体验是各个终端厂商亟待解决的问题。其中,终端功耗和发热问题是影响用户体验的重要因素,尤其是对移动终端。而GPU负载是影响该功耗和发热问题的因素之一。例如,当GPU负载较高时,GPU的运行频点较高,会导致移动终端出现发热严重和耗电快的问题,使用户的用户体验较差。
GPU主要负责终端中的图像运算工作,其负载主要为GPU渲染过程中的负载。相关技术中,主要通过采取以下方法对图像渲染过程进行处理,以达到降低GPU负载的效果。
例如,可以采用基于多细节层次(levels of detail,LOD)的渲染技术对渲染过程进行处理。该技术可以根据待渲染图像帧中各个物体模型在显示环境中所处的位置和重要度,分配对该物体模型进行渲染时的渲染资源,以降低GPU的渲染负载。例如,当物体模型在显示环境中的重要度较低时,例如物体模型在远处,可以减少用于表示该物体模型的顶点的数量,以降低远处不重要物体的渲染细节,达到降低渲染负载的目的。但是,降低渲染细节会导致图像的画质降低。且由于每个细节层次都需要占用内存空间,导致该技术的内存占用率较大。同时,在该渲染技术中,由于在图像帧的整个渲染过程中,需要先采用CPU获取并比较各个物体模型的位置和重要程度,再根据该位置和重要程度分配渲染资源,导致CPU的计算量变大。
再例如,可以采用提前Z测试(early-Z culling,Early-Z)技术对渲染过程进行处理。该技术是在对片元进行着色之前,对片元的深度进行检测,以判断该片元是否被其他片元遮挡。若该片元被其他片元遮挡,则不对该片元进行着色,以降低渲染负载。但是,该技术无法使用在需要丢弃片元、更改片元的深度信息或者需要透明绘制的场景,即该技术的适用范围较小。其中,物体模型中多个顶点按照指定连接关系形成的图形叫做片元(fragment),该片元具有颜色、深度和纹理等特征信息。
再例如,可以采用基于拼贴渲染(tile-based rendering)的技术对渲染过程进行处理。该技术通过将的图像分割成若干个拼贴块,对每个拼贴块单独渲染,并在对每个拼贴块渲染结束后,将该拼贴块的内容(例如颜色或深度等)与外部存储(external memory)中存储的拼贴块的内容进行比较,当该拼贴块的内容与外部存储中存储的拼贴块的内容不一致时,将该拼贴块的内容写入外部存储。当该拼贴块的内容与外部存储中存储的拼贴块的内容一致时,无需将该拼贴块的内容写入外部存储,以达到减小存储带宽的目的。但是,由于该技术中的比较过程是在渲染过程之后执行,即该技术中仍然需要对每个拼贴块执行渲染过程,导致GPU负载仍然较大。
本申请提供了一种图像渲染方法,CPU在将图像指令流发送给GPU之前对图像指令流进行优化,将优化后的指令流发送给GPU,从而降低GPU执行指令流的负载。具体的,CPU获取待渲染图像帧的第一图像指令流,将该第一图像指令流中的绘制指令与已渲染图像帧的第二图像指令流中的绘制指令进行比较,当存在相同的绘制指令时,CPU优化第一图像指令流,将优化后的第一图像指令流发送给GPU,以使得GPU获取之前基于该相同的绘制指令所生成的绘制目标(为便于描述,下文简称为可重用绘制目标)对该图像帧进行图像渲染。可重用绘制目标可能是前述已渲染图像帧被GPU渲染时生成的,也可能是更早之前生成的。
相较于相关技术,本申请提供的方法使得GPU能直接使用已生成的可重用绘制目标,减少了因生成绘制目标产生的功耗,降低了GPU的负载,进而降低了该图像帧的整个图像渲染过程的功耗。
该图像渲染方法可应用于终端,当终端中运行的应用需要进行图像渲染时,通过执行本申请实施例提供的图像渲染方法,能够降低终端的功耗。
示例地,请参考图1,假设已渲染图像帧0的第二图像指令流包括多个第二绘制指令(在该示例中简称为第二指令):第二指令11至第二指令18等,CPU将该第二图像指令流传输至GPU后,GPU基于包括第二指令11至第二指令14的第二绘制指令生成了绘制目标1,基于包括第二指令15至第二指令17的第二绘制指令生成了绘制目标2,基于包括第二指令18的第二绘制指令生成了绘制目标3,并根据该绘制目标1、绘制目标2和绘制目标3得到了该已渲染图像帧0的显示数据。
待渲染的图像帧1的第一图像指令流包括多个第一绘制指令(在该示例中简称为第一指令):第一指令21至第一指令28等,在将该第一图像指令流中的第一指令与第二图像指令流中的第二指令进行比较后,可以确定第一指令21至第一指令24与第二指令11至第二指令14对应相同,即该绘制目标1为可重用绘制目标。此时,CPU可以指示GPU基于第一指令25至第一指令27生成绘制目标4,基于第一指令28生成绘制目标5,然后,基于该绘制目标4、绘制目标5,以及基于预先生成的绘制目标1,得到该图像帧1的显示数据。在该过程中,由于GPU无需基于第一指令21至第一指令24再生成绘制目标1,因此,可以降低该GPU的功耗。
图2示出了该图像渲染方法涉及的电子设备100的结构示意图。该电子设备100可以但不限于是膝上型计算机、台式计算机、移动电话、智能手机、平板电脑、多媒体播放器、电子阅读器、智能车载设备、智能家电、人工智能设备、穿戴式设备、物联网设备、或虚拟现实/增强现实/混合现实设备等。
电子设备100可以包括处理器110,外部存储器接口120,内部存储器121,通用串行总线(universal serial bus,USB)接口130,充电管理模块140,电源管理模块141,电池142,天线1,天线2,移动通信模块150,无线通信模块160,音频模块170,扬声器170A,受话器170B,麦克风170C,耳机接口170D,传感器模块180,按键190,马达191,指示器192,摄像头193,显示屏194,以及用户标识模块(subscriber identification module,SIM)卡接口195等。其中传感器模块180可以包括压力传感器180A,陀螺仪传感器180B,气压传感器180C,磁传感器180D,加速度传感器180E,距离传感器180F,接近光传感器180G,指纹传感器180H,温度传感器180J,触摸传感器180K,环境光传感器180L,骨传导传感器180M等。
可以理解的是,本发明实施例示意的结构并不构成对电子设备100的具体限定。在本申请另一些实施例中,电子设备100可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
可以理解的是,本发明实施例示意的各模块间的接口连接关系,只是示意性说明,并不构成对电子设备100的结构限定。在本申请另一些实施例中,电子设备100也可以采用上述实施例中不同的接口连接方式(例如总线连接方式),或多种接口连接方式的组合。
处理器110可以包括一个或多个处理单元,例如包括中央处理器CPU(例如应用处理器(application processor,AP)),图形处理器(graphics processing unit,GPU),进一步的,还可以包括调制解调处理器,图像信号处理器(image signal processor,ISP),微控制器单元(microcontroller unit,MCU),视频编解码器,数字信号处理器(digital signalprocessor,DSP),基带处理器,和/或神经网络处理器(neural-network processing unit,NPU)等。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。
处理器110中还可以设置存储器,用于存储指令和数据。在一些实施例中,处理器110中的存储器为高速缓冲存储器。该存储器可以保存处理器110刚用过或循环使用的指令或数据。如果处理器110需要再次使用该指令或数据,可从所述存储器中直接调用。避免了重复存取,减少了处理器110的等待时间,因而提高了系统的效率。
在一些实施例中,处理器110可以包括一个或多个接口。接口可以包括集成电路(inter-integrated circuit,I2C)接口,集成电路内置音频(inter-integrated circuitsound,I2S)接口,脉冲编码调制(pulse code modulation,PCM)接口,通用异步收发传输器(universal asynchronous receiver/transmitter,UART)接口,移动产业处理器接口(mobile industry processor interface,MIPI),通用输入输出(general-purposeinput/output,GPIO)接口,用户标识模块(subscriber identity module,SIM)接口,和/或通用串行总线(universal serial bus,USB)接口等。
I2C接口是一种双向同步串行总线,包括一根串行数据线(serial data line,SDA)和一根串行时钟线(derail clock line,SCL)。在一些实施例中,处理器110可以包含多组I2C总线。处理器110可以通过不同的I2C总线接口分别耦合触摸传感器180K,充电器,闪光灯,摄像头193等。例如:处理器110可以通过I2C接口耦合触摸传感器180K,使处理器110与触摸传感器180K通过I2C总线接口通信,实现电子设备100的触摸功能。
I2S接口可以用于音频通信。在一些实施例中,处理器110可以包含多组I2S总线。处理器110可以通过I2S总线与音频模块170耦合,实现处理器110与音频模块170之间的通信。在一些实施例中,音频模块170可以通过I2S接口向无线通信模块160传递音频信号,实现通过蓝牙耳机接听电话的功能。
PCM接口也可以用于音频通信,将模拟信号抽样,量化和编码。在一些实施例中,音频模块170与无线通信模块160可以通过PCM总线接口耦合。在一些实施例中,音频模块170也可以通过PCM接口向无线通信模块160传递音频信号,实现通过蓝牙耳机接听电话的功能。所述I2S接口和所述PCM接口都可以用于音频通信。
UART接口是一种通用串行数据总线,用于异步通信。该总线可以为双向通信总线。它将要传输的数据在串行通信与并行通信之间转换。在一些实施例中,UART接口通常被用于连接处理器110与无线通信模块160。例如:处理器110通过UART接口与无线通信模块160中的蓝牙模块通信,实现蓝牙功能。在一些实施例中,音频模块170可以通过UART接口向无线通信模块160传递音频信号,实现通过蓝牙耳机播放音乐的功能。
MIPI接口可以被用于连接处理器110与显示屏194,摄像头193等外围器件。MIPI接口包括摄像头串行接口(camera serial interface,CSI),显示屏串行接口(displayserial interface,DSI)等。在一些实施例中,处理器110和摄像头193通过CSI接口通信,实现电子设备100的拍摄功能。处理器110和显示屏194通过DSI接口通信,实现电子设备100的显示功能。
GPIO接口可以通过软件配置。GPIO接口可以被配置为控制信号,也可被配置为数据信号。在一些实施例中,GPIO接口可以用于连接处理器110与摄像头193,显示屏194,无线通信模块160,音频模块170,传感器模块180等。GPIO接口还可以被配置为I2C接口,I2S接口,UART接口,MIPI接口等。
USB接口130是符合USB标准规范的接口,具体可以是Mini USB接口,Micro USB接口,USB Type C接口等。USB接口130可以用于连接充电器为电子设备100充电,也可以用于电子设备100与外围设备之间传输数据。也可以用于连接耳机,通过耳机播放音频。该接口还可以用于连接其他电子设备,例如AR设备等。
充电管理模块140用于从充电器接收充电输入。其中,充电器可以是无线充电器,也可以是有线充电器。在一些有线充电的实施例中,充电管理模块140可以通过USB接口130接收有线充电器的充电输入。在一些无线充电的实施例中,充电管理模块140可以通过电子设备100的无线充电线圈接收无线充电输入。充电管理模块140为电池142充电的同时,还可以通过电源管理模块141为电子设备供电。
电源管理模块141用于连接电池142,充电管理模块140与处理器110。电源管理模块141接收电池142和/或充电管理模块140的输入,为处理器110,内部存储器121,显示屏194,摄像头193,和无线通信模块160等供电。电源管理模块141还可以用于监测电池容量,电池循环次数,电池健康状态(漏电,阻抗)等参数。在其他一些实施例中,电源管理模块141也可以设置于处理器110中。在另一些实施例中,电源管理模块141和充电管理模块140也可以设置于同一个器件中。
电子设备100的无线通信功能可以通过天线1,天线2,移动通信模块150,无线通信模块160,调制解调处理器以及基带处理器等实现。
天线1和天线2用于发射和接收电磁波信号。电子设备100中的每个天线可用于覆盖单个或多个通信频带。不同的天线还可以复用,以提高天线的利用率。例如:可以将天线1复用为无线局域网的分集天线。在另外一些实施例中,天线可以和调谐开关结合使用。
移动通信模块150可以提供应用在电子设备100上的包括2G/3G/4G/5G等无线通信的解决方案。移动通信模块150可以包括至少一个滤波器,开关,功率放大器,低噪声放大器(low noise amplifier,LNA)等。移动通信模块150可以由天线1接收电磁波,并对接收的电磁波进行滤波,放大等处理,传送至调制解调处理器进行解调。移动通信模块150还可以对经调制解调处理器调制后的信号放大,经天线1转为电磁波辐射出去。在一些实施例中,移动通信模块150的至少部分功能模块可以被设置于处理器110中。在一些实施例中,移动通信模块150的至少部分功能模块可以与处理器110的至少部分模块被设置在同一个器件中。
调制解调处理器可以包括调制器和解调器。其中,调制器用于将待发送的低频基带信号调制成中高频信号。解调器用于将接收的电磁波信号解调为低频基带信号。随后解调器将解调得到的低频基带信号传送至基带处理器处理。低频基带信号经基带处理器处理后,被传递给应用处理器。应用处理器通过音频设备(不限于扬声器170A,受话器170B等)输出声音信号,或通过显示屏194显示图像或视频。在一些实施例中,调制解调处理器可以是独立的器件。在另一些实施例中,调制解调处理器可以独立于处理器110,与移动通信模块150或其他功能模块设置在同一个器件中。
无线通信模块160可以提供应用在电子设备100上的包括无线局域网(wirelesslocal area networks,WLAN)(如无线保真(wireless fidelity,Wi-Fi)网络),蓝牙(bluetooth,BT),全球导航卫星系统(global navigation satellite system,GNSS),调频(frequency modulation,FM),近距离无线通信技术(near field communication,NFC),红外技术(infrared,IR)等无线通信的解决方案。无线通信模块160可以是集成至少一个通信处理模块的一个或多个器件。无线通信模块160经由天线2接收电磁波,将电磁波信号调频以及滤波处理,将处理后的信号发送到处理器110。无线通信模块160还可以从处理器110接收待发送的信号,对其进行调频,放大,经天线2转为电磁波辐射出去。
在一些实施例中,电子设备100的天线1和移动通信模块150耦合,天线2和无线通信模块160耦合,使得电子设备100可以通过无线通信技术与网络以及其他设备通信。所述无线通信技术可以包括全球移动通讯系统(global system for mobile communications,GSM),通用分组无线服务(general packet radio service,GPRS),码分多址接入(codedivision multiple access,CDMA),宽带码分多址(wideband code division multipleaccess,WCDMA),时分码分多址(time-division code division multiple access,TD-SCDMA),长期演进(long term evolution,LTE),BT,GNSS,WLAN,NFC,FM,和/或IR技术等。所述GNSS可以包括全球卫星定位系统(global positioning system,GPS),全球导航卫星系统(global navigation satellite system,GLONASS),北斗卫星导航系统(beidounavigation satellite system,BDS),准天顶卫星系统(quasi-zenith satellitesystem,QZSS)和/或星基增强系统(satellite based augmentation systems,SBAS)。
电子设备100通过GPU,显示屏194,以及应用处理器等实现显示功能。GPU为图像处理的微处理器,连接显示屏194和应用处理器。GPU用于执行数学和几何计算,用于图形渲染。处理器110可包括一个或多个GPU,其执行程序指令以生成或改变显示信息。
显示屏194用于显示图像,视频等。显示屏194包括显示面板。显示面板可以采用液晶显示屏(liquid crystal display,LCD),有机发光二极管(organic light-emittingdiode,OLED),有源矩阵有机发光二极体或主动矩阵有机发光二极体(active-matrixorganic light emitting diode的,AMOLED),柔性发光二极管(flex light-emittingdiode,FLED),Miniled,MicroLed,Micro-oLed,量子点发光二极管(quantum dot lightemitting diodes,QLED)等。在一些实施例中,电子设备100可以包括1个或N个显示屏194,N为大于1的正整数。
电子设备100可以通过ISP,摄像头193,视频编解码器,GPU,显示屏194以及应用处理器等实现拍摄功能。
ISP用于处理摄像头193反馈的数据。例如,拍照时,打开快门,光线通过镜头被传递到摄像头感光元件上,光信号转换为电信号,摄像头感光元件将所述电信号传递给ISP处理,转化为肉眼可见的图像。ISP还可以对图像的噪点,亮度,肤色进行算法优化。ISP还可以对拍摄场景的曝光,色温等参数优化。在一些实施例中,ISP可以设置在摄像头193中。
摄像头193用于捕获静态图像或视频。物体通过镜头生成光学图像投射到感光元件。感光元件可以是电荷耦合器件(charge coupled device,CCD)或互补金属氧化物半导体(complementary metal-oxide-semiconductor,CMOS)光电晶体管。感光元件把光信号转换成电信号,之后将电信号传递给ISP转换成数字图像信号。ISP将数字图像信号输出到DSP加工处理。DSP将数字图像信号转换成标准的RGB,YUV等格式的图像信号。在一些实施例中,电子设备100可以包括1个或N个摄像头193,N为大于1的正整数。
数字信号处理器用于处理数字信号,除了可以处理数字图像信号,还可以处理其他数字信号。例如,当电子设备100在频点选择时,数字信号处理器用于对频点能量进行傅里叶变换等。
视频编解码器用于对数字视频压缩或解压缩。电子设备100可以支持一种或多种视频编解码器。这样,电子设备100可以播放或录制多种编码格式的视频,例如:动态图像专家组(moving picture experts group,MPEG)1,MPEG2,MPEG3,MPEG4等。
NPU为神经网络(neural-network,NN)计算处理器,通过借鉴生物神经网络结构,例如借鉴人脑神经元之间传递模式,对输入信息快速处理,还可以不断的自学习。通过NPU可以实现电子设备100的智能认知等应用,例如:图像识别,人脸识别,语音识别,文本理解等。
外部存储器接口120可以用于连接外部存储卡,例如Micro SD卡,实现扩展电子设备100的存储能力。外部存储卡通过外部存储器接口120与处理器110通信,实现数据存储功能。例如将音乐,视频等文件保存在外部存储卡中。
内部存储器121可以用于存储计算机可执行程序代码,所述可执行程序代码包括指令。内部存储器121可以包括存储程序区和存储数据区。其中,存储程序区可存储操作系统,至少一个功能所需的应用程序(比如声音播放功能,图像播放功能等)等。存储数据区可存储电子设备100使用过程中所创建的数据(比如音频数据,电话本等)等。此外,内部存储器121可以包括高速随机存取存储器,例如双倍速率同步动态随机存储器(double datarate synchronous dynamic random access memory,DDR),还可以包括非易失性存储器,例如至少一个磁盘存储器件,闪存器件,通用闪存存储器(universal flash storage,UFS)等。处理器110通过运行存储在内部存储器121的指令,和/或存储在设置于处理器中的存储器的指令,执行电子设备100的各种功能应用以及数据处理。
电子设备100可以通过音频模块170,扬声器170A,受话器170B,麦克风170C,耳机接口170D,以及应用处理器等实现音频功能。例如音乐播放,录音等。
音频模块170用于将数字音频信息转换成模拟音频信号输出,也用于将模拟音频输入转换为数字音频信号。音频模块170还可以用于对音频信号编码和解码。在一些实施例中,音频模块170可以设置于处理器110中,或将音频模块170的部分功能模块设置于处理器110中。
扬声器170A,也称“喇叭”,用于将音频电信号转换为声音信号。电子设备100可以通过扬声器170A收听音乐,或收听免提通话。
受话器170B,也称“听筒”,用于将音频电信号转换成声音信号。当电子设备100接听电话或语音信息时,可以通过将受话器170B靠近人耳接听语音。
麦克风170C,也称“话筒”,“传声器”,用于将声音信号转换为电信号。当拨打电话或发送语音信息时,用户可以通过人嘴靠近麦克风170C发声,将声音信号输入到麦克风170C。电子设备100可以设置至少一个麦克风170C。在另一些实施例中,电子设备100可以设置两个麦克风170C,除了采集声音信号,还可以实现降噪功能。在另一些实施例中,电子设备100还可以设置三个,四个或更多麦克风170C,实现采集声音信号,降噪,还可以识别声音来源,实现定向录音功能等。
耳机接口170D用于连接有线耳机。耳机接口170D可以是USB接口130,也可以是3.5毫米的开放移动电子设备平台(open mobile terminal platform,OMTP)标准接口,美国蜂窝电信工业协会(cellular telecommunications industry association of the USA,CTIA)标准接口。
压力传感器180A用于感受压力信号,可以将压力信号转换成电信号。在一些实施例中,压力传感器180A可以设置于显示屏194。压力传感器180A的种类很多,如电阻式压力传感器,电感式压力传感器,电容式压力传感器等。电容式压力传感器可以是包括至少两个具有导电材料的平行板。当有力作用于压力传感器180A,电极之间的电容改变。电子设备100根据电容的变化确定压力的强度。当有触摸操作作用于显示屏194,电子设备100根据压力传感器180A检测所述触摸操作强度。电子设备100也可以根据压力传感器180A的检测信号计算触摸的位置。在一些实施例中,作用于相同触摸位置,但不同触摸操作强度的触摸操作,可以对应不同的操作指令。例如:当有触摸操作强度小于第一压力阈值的触摸操作作用于短消息应用图标时,执行查看短消息的指令。当有触摸操作强度大于或等于第一压力阈值的触摸操作作用于短消息应用图标时,执行新建短消息的指令。
陀螺仪传感器180B可以用于确定电子设备100的运动姿态。在一些实施例中,可以通过陀螺仪传感器180B确定电子设备100围绕三个轴(即,x,y和z轴)的角速度。陀螺仪传感器180B可以用于拍摄防抖。示例性的,当按下快门,陀螺仪传感器180B检测电子设备100抖动的角度,根据角度计算出镜头模组需要补偿的距离,让镜头通过反向运动抵消电子设备100的抖动,实现防抖。陀螺仪传感器180B还可以用于导航,体感游戏场景。
气压传感器180C用于测量气压。在一些实施例中,电子设备100通过气压传感器180C测得的气压值计算海拔高度,辅助定位和导航。
磁传感器180D包括霍尔传感器。电子设备100可以利用磁传感器180D检测翻盖皮套的开合。在一些实施例中,当电子设备100是翻盖机时,电子设备100可以根据磁传感器180D检测翻盖的开合。进而根据检测到的皮套的开合状态或翻盖的开合状态,设置翻盖自动解锁等特性。
加速度传感器180E可检测电子设备100在各个方向上(一般为三轴)加速度的大小。当电子设备100静止时可检测出重力的大小及方向。还可以用于识别电子设备姿态,应用于横竖屏切换,计步器等应用。
距离传感器180F,用于测量距离。电子设备100可以通过红外或激光测量距离。在一些实施例中,拍摄场景,电子设备100可以利用距离传感器180F测距以实现快速对焦。
接近光传感器180G可以包括例如发光二极管(LED)和光检测器,例如光电二极管。发光二极管可以是红外发光二极管。电子设备100通过发光二极管向外发射红外光。电子设备100使用光电二极管检测来自附近物体的红外反射光。当检测到充分的反射光时,可以确定电子设备100附近有物体。当检测到不充分的反射光时,电子设备100可以确定电子设备100附近没有物体。电子设备100可以利用接近光传感器180G检测用户手持电子设备100贴近耳朵通话,以便自动熄灭屏幕达到省电的目的。接近光传感器180G也可用于皮套模式,口袋模式自动解锁与锁屏。
环境光传感器180L用于感知环境光亮度。电子设备100可以根据感知的环境光亮度自适应调节显示屏194亮度。环境光传感器180L也可用于拍照时自动调节白平衡。环境光传感器180L还可以与接近光传感器180G配合,检测电子设备100是否在口袋里,以防误触。
指纹传感器180H用于采集指纹。电子设备100可以利用采集的指纹特性实现指纹解锁,访问应用锁,指纹拍照,指纹接听来电等。
温度传感器180J用于检测温度。在一些实施例中,电子设备100利用温度传感器180J检测的温度,执行温度处理策略。例如,当温度传感器180J上报的温度超过阈值,电子设备100执行降低位于温度传感器180J附近的处理器的性能,以便降低功耗实施热保护。在另一些实施例中,当温度低于另一阈值时,电子设备100对电池142加热,以避免低温导致电子设备100异常关机。在其他一些实施例中,当温度低于又一阈值时,电子设备100对电池142的输出电压执行升压,以避免低温导致的异常关机。
触摸传感器180K,也称“触控器件”。触摸传感器180K可以设置于显示屏194,由触摸传感器180K与显示屏194组成触摸屏,也称“触控屏”。触摸传感器180K用于检测作用于其上或附近的触摸操作。触摸传感器可以将检测到的触摸操作传递给应用处理器,以确定触摸事件类型。可以通过显示屏194提供与触摸操作相关的视觉输出。在另一些实施例中,触摸传感器180K也可以设置于电子设备100的表面,与显示屏194所处的位置不同。
骨传导传感器180M可以获取振动信号。在一些实施例中,骨传导传感器180M可以获取人体声部振动骨块的振动信号。骨传导传感器180M也可以接触人体脉搏,接收血压跳动信号。在一些实施例中,骨传导传感器180M也可以设置于耳机中,结合成骨传导耳机。音频模块170可以基于所述骨传导传感器180M获取的声部振动骨块的振动信号,解析出语音信号,实现语音功能。应用处理器可以基于所述骨传导传感器180M获取的血压跳动信号解析心率信息,实现心率检测功能。
在本申请另一些实施例中,电子设备100也可以采用上述实施例中不同的接口连接方式,例如以上多种传感器中的部分或全部传感器连接MCU,通过MCU再连接AP。
按键190包括开机键,音量键等。按键190可以是机械按键。也可以是触摸式按键。电子设备100可以接收按键输入,产生与电子设备100的用户设置以及功能控制有关的键信号输入。
马达191可以产生振动提示。马达191可以用于来电振动提示,也可以用于触摸振动反馈。例如,作用于不同应用(例如拍照,音频播放等)的触摸操作,可以对应不同的振动反馈效果。作用于显示屏194不同区域的触摸操作,马达191也可对应不同的振动反馈效果。不同的应用场景(例如:时间提醒,接收信息,闹钟,游戏等)也可以对应不同的振动反馈效果。触摸振动反馈效果还可以支持自定义。
指示器192可以是指示灯,可以用于指示充电状态,电量变化,也可以用于指示消息,未接来电,通知等。
SIM卡接口195用于连接SIM卡。SIM卡可以通过插入SIM卡接口195,或从SIM卡接口195拔出,实现和电子设备100的接触和分离。电子设备100可以支持1个或N个SIM卡接口,N为大于1的正整数。SIM卡接口195可以支持Nano SIM卡,Micro SIM卡,SIM卡等。同一个SIM卡接口195可以同时插入多张卡。所述多张卡的类型可以相同,也可以不同。SIM卡接口195也可以兼容不同类型的SIM卡。SIM卡接口195也可以兼容外部存储卡。电子设备100通过SIM卡和网络交互,实现通话以及数据通信等功能。在一些实施例中,电子设备100采用eSIM,即:嵌入式SIM卡。eSIM卡可以嵌在电子设备100中,不能和电子设备100分离。
电子设备100的软件系统可以采用分层架构,事件驱动架构,微核架构,微服务架构,或云架构。本发明实施例以分层架构的Android系统为例,示例性说明电子设备100的软件结构。
图3和图4结合软件和部分硬件进一步展示本实施例提供的方案的形态。如图3所示,电子设备100包括和硬件,硬件包括CPU、GPU、DDR等,其结构请参考图2,在此不再赘述。
应理解的是,图3和图4示出的软硬件仅是举例,在其他实施例中,可以采用其它类型的软件或硬件,例如图3和图4中DDR作为显存使用,在其他实施例中显存也可以由同步动态随机存取内存(synchronous dynamic random-access memory,SDRAM)或其他类型的存储器实现。
软件包括应用(APP)、渲染引擎以及框架(framework)。应用包括游戏应用、视频应用、即时通信应用、拍照应用等。渲染引擎包括一个或多个引擎,例如Unity 3D/Unreal等渲染引擎。框架内部包括各种图形库,例如嵌入式开放图形库(open graphics library forembedded system,OpenGL ES)、EGL(图形渲染API与本地平台窗口系统的一层接口)或Vulkan(一个跨平台的绘图应用程序接口)等。进一步的,本实施例提供的方案可以设置在框架内,展现为系统图形优化模块,该系统图形优化模块被执行后用于实现本实施例提供的方案。具体的,系统图形优化模块用于获取并优化图形指令流,并将优化后的图形指令流发送给GPU。
在本实施例中,CPU中运行有应用层模块和系统层模块。该应用层模块用于根据应用需要生成图像指令流,并将该图像指令流发送至系统层模块。该系统层模块可以根据本申请提供的图像渲染方法对图像指令流中的绘制指令进行优化,然后优化后的图像指令流发送至GPU,以使得GPU根据优化后的图像指令流获取可重用绘制目标以及生成其它的绘制目标,然后根据绘制指令可重用绘制目标以及其它生成的绘制目标进行着色,并根据着色后的绘制目标生成显示数据,再将该显示数据发送至CPU,并通过CPU控制显示设备根据该显示数据进行图像显示。
本实施例以游戏应用为例,例如刺激战场、堡垒之夜或王者荣耀等游戏,还可以为虚拟现实或增强现实类的游戏应用。如图4所示,当终端中运行游戏应用时,该应用层模块为游戏层模块,该游戏层模块01可以包括:游戏业务逻辑更新模块011、游戏引擎渲染场景更新模块012以及图形应用程序接口模块013(例如OpenGL ES渲染器模块)。系统层模块02可以包括:系统图形库接口层模块021(例如系统GLES接口层)、系统图形优化模块022、图形库用户态驱动模块023(例如GLES用户态驱动模块)、图形库内核态驱动模块024(例如GLES内核态驱动模块)和图层合成显示模块025。GPU中可以配置有顶点着色器03(vertexshader,VS)、片元着色器04(fragment shader,FS)和显示缓存模块05。该游戏业务逻辑更新模块011、游戏引擎渲染场景更新模块012以及图形应用程序接口模块013用于将游戏的逻辑转换成图像指令流,并通过系统图形库接口层模块021将该图像指令流发送至系统图形优化模块022。系统图形优化模块022可以根据本申请提供的图像渲染方法对图像指令流中的绘制指令进行优化,并通过图形库用户态驱动模块023和图形库内核态驱动模块024,将优化后的图像指令流发送至DDR。该DDR中存储有渲染所需的渲染数据和资源。该DDR可将优化后的图像指令流、及渲染所需的渲染数据和资源发送至GPU中的顶点着色器03。该顶点着色器03可基于从DDR接收的信息,对该信息中的顶点信息进行处理,并将处理后的数据发送至片元着色器04,以生成组成该图像帧的每个片元,即完成该图像帧的整个渲染过程。经过片元着色器04处理后的数据可发送至显示缓存模块05,以生成图像帧的显示数据。显示缓存模块05可将该显示数据发送CPU中的图层合成显示模块025,显示设备可以根据该图层合成显示模块025处理后的显示数据进行图像显示。
应理解的是,图4中的各个模块有些可以是软件实现,其本质是CPU或GPU读取并运行存储介质中的软件程序;有些可以是硬件实现,或软硬件结合实现。
下面通过图5至图12对本实施例提供的图像渲染方法的步骤进行详细说明,该图像渲染方法的主要部分可以认为是图4中系统图形优化模块022的功能。如图5所示,该图像渲染方法包括以下步骤:
步骤201、CPU获取图像帧所属进程的进程标识。
在电子设备中运行应用时,可以采用电子设备中的图形库渲染图像帧。且在使用该图形库之前需要初始化图形库的运行环境。在该初始化过程中,可以获取该图像帧所属进程的进程标识,并将该进程标识与指定的目标进程列表进行比较。当该进程标识被记载在该目标进程列表中时,可以确定该进程为可优化进程,此时,可以获取图像帧的第一图像指令流,即执行步骤202,以便使用本实施例提供的图像渲染方法对该进程的第一图像指令流进行优化,以达到降低GPU负载的目的。
该目标进程列表中记载有至少一个可优化进程的进程标识,该可优化进程可以为进程功耗对发热产生严重影响的进程。具体的,该目标进程列表中记载的可优化进程可以根据实际需要确定。例如,可以根据进程的历史功耗情况获取进程的历史平均功耗,当某进程的历史平均功耗大于指定功耗阈值时,将该进程确定为可优化进程。或者,当图像帧中包括有面积大于指定面积阈值的绘制模型时,将该图像帧确定为可优化进程。
例如,当电子设备为终端且终端的系统为Android系统,可以使用该Android系统的OpenGL ES图形库渲染游戏应用中的图像帧,并在使用该图形库之前,通过调用eglInitialize函数(一种初始化函数)对图形库的运行环境进行初始化。同时,可以在该eglInitialize函数中增加钩子(hook)函数,以使用该钩子函数获取图像帧所属进程的进程标识。
当电子设备为手机时,这里的CPU可以具体是应用处理器AP。
步骤202、当进程标识被记载在目标进程列表中时,CPU获取图像帧的第一图像指令流。
其中,第一图像指令流包括一个或多个第一绘制指令。每个绘制指令携带有绘制参数。可选地,该绘制参数可以包括以下一个或多个:绘制模型的顶点信息、颜色信息或渲染材质信息等。
仍以Android系统为例,可以在对图形库运行环境进行初始化的初始化函数中添加钩子函数,当确定图像帧所属的进程的进程标识被记载在目标进程列表中时,可以调用该钩子函数,以通过该钩子函数获取该第一图像指令流。
步骤203、CPU根据指令属性对这多个第一绘制指令划分逻辑组。
可选地,在执行该步骤203时,对于具有相同指令属性的多个绘制指令,可以通过向该多个绘制指令添加相同的标记,或者,可以将该多个绘制指令划分至同一数组中,以实现将该多个绘制指令划分同一逻辑组。通过划分逻辑组,可以使同一个逻辑组包含的第一绘制指令的至少一项指令属性相同,不同的逻辑组包含的第一绘制指令的至少一项指令属性不同。
指令属性可以包括:绘制指令采用的绘制功能,或者,绘制指令携带的顶点信息的变化情况,或者,绘制指令采用的绘制功能及顶点信息的变化情况。该顶点信息的变化情况是指该绘制指令中携带的顶点信息相较于其他绘制指令中携带的顶点信息的变化情况。该绘制指令采用的绘制功能是指在生成绘制目标的过程中,生成该绘制目标时所采用的绘制方式。例如,该绘制功能可以包括透明绘制功能,该透明绘制功能表示在生成绘制目标的过程中,需要采取透明绘制的方式对绘制目标进行绘制。
相应的,该根据指令属性对一个或多个第一绘制指令划分逻辑组的实现过程,可以包括以下一种或多种情况:
第一种情况:当至少两条第一绘制指令包含的顶点坐标内对应指定维度的值相等时,将该至少两条第一绘制指令均划分至第一逻辑组。
表1
顶点的序列号 属性参数1 属性参数2 属性参数3
...... ...... ...... ......
8 0.001935125,0.001953125,1.0,1.0 1448.0,608.0 255,255,255,255
9 0.22851562,0.001953125,1.0,1.0 1525.0,608.0 255,255,255,255
10 0.001953125,0.22851562,1.0,1.0 1448.0,685.0 255,255,255,255
11 0.22851562,0.22851562,1.0,1.0 1525.0,685.0 255,255,255,255
12 0.001935125,0.001953125,1.0,1.0 1323.0,631.0 255,255,255,255
13 0.22851562,0.001953125,1.0,1.0 1400.0,631.0 255,255,255,255
14 0.001953125,0.22851562,1.0,1.0 1323.0,708.0 255,255,255,255
15 0.22851562,0.22851562,1.0,1.0 1400.0,708.0 255,255,255,255
16 0.9667969,0.9199219,1.0,1.0 610.0,624.0 255,255,255,255
17 0.9667969,0.9355469,1.0,1.0 610.0,633.0 255,255,255,255
18 0.9824219,0.9199219,1.0,1.0 619.0,624.0 255,255,255,255
19 0.9824219,0.9355469,1.0,1.0 619.0,633.0 255,255,255,255
20 0.9824219,0.9199219,1.0,1.0 769.0,624.0 255,255,255,255
21 0.9824219,0.9355469,1.0,1.0 769.0,633.0 255,255,255,255
22 0.9980469,0.9199219,1.0,1.0 778.0,624.0 255,255,255,255
23 0.9980469,0.9355469,1.0,1.0 778.0,633.0 255,255,255,255
24 0.9667969,0.9355469,1.0,1.0 610.0,668.0 255,255,255,255
25 0.9824219,0.9355469,1.0,1.0 619.0,668.0 255,255,255,255
26 0.9824219,0.9355469,1.0,1.0 769.0,668.0 255,255,255,255
27 0.9980469,0.9355469,1.0,1.0 778.0,668.0 255,255,255,255
28 0.9667969,0.9199219,1.0,1.0 610.0,677.0 255,255,255,255
...... ...... ...... ......
当至少两条第一绘制指令包含的顶点坐标内对应指定维度的值相等时,说明该至少两条第一绘制指令携带的顶点信息的变化情况相同,相应的,该至少两条第一绘制指令由顶点信息的变化情况表征的指令属性相同。此时,可将该至少两条第一绘制指令均划分至第一逻辑组。其中,顶点坐标内的指定维度可以根据实际情况确定。例如,当绘制指令用于生成构成用户界面(user interface,UI)的绘制目标时,由于用户界面一般是在二维平面内绘制的图像,且绘制指令包含的顶点坐标通常为三维坐标,该三维坐标由绘制目标的二维坐标和深度坐标组成。因此,该指定维度可以为顶点坐标内的Z坐标(即深度坐标)。
示例的,请参考图6所示的某游戏的游戏画面示意图,该图6中图标M1和图标M2均为该用户界面中的UI控件图标,每个UI控件图标可以用多个顶点表示,表1为该图6中UI控件图标对应的顶点的顶点信息的部分内容,该表1中由左至右第一列内容表示顶点的序列号,第二列内容标识顶点的属性参数1。该属性参数1中的第一项数字表示顶点坐标中的x坐标,第二项数字表示顶点坐标中的y坐标,第三项数字(即表1中加粗显示的数字)表示顶点坐标中的z坐标,第四项数字表示顶点的视野坐标。例如,顶点8的x坐标为0.001935125,y坐标为0.001953125,z坐标为1.0,视野坐标为1.0。根据该表1可以看出顶点8至顶点28的顶点坐标内的z坐标均为1.0,假设指定维度可以为顶点坐标内的Z坐标,则可将该第8个顶点至第28个顶点对应的这些绘制指令均划分至第一逻辑组,此时,该第一逻辑组也可称为UI逻辑组。
第二种情况:当第一绘制指令包括的透明绘制功能处于使能状态时,将第一绘制指令划分至第二逻辑组。当第一绘制指令包括的透明绘制功能处于非使能状态时,将第一绘制指令划分至第三逻辑组。
透明绘制功能为绘制功能中的一种。在GPU渲染过程中,当需要对透明物体进行渲染时,需要将GPU的透明绘制功能设置为使能状态,因此,可以通过判断该透明绘制功能是否处于使能状态,将多个第一绘制指令划分至第二逻辑组或第三逻辑组。其中,第二逻辑组中的第一绘制指令包括的透明绘制功能均处于使能状态,第三逻辑组中的第一绘制指令包括的透明绘制功能均处于非使能状态。
示例地,采用透明绘制功能时,需要设置开关alpha的混合(blend)功能处于使能状态,因此,当开关alpha处于开启状态且blend功能处于使能状态时,可以将对应的第一绘制指令划分至第二逻辑组,表示需要对该第一绘制指令的绘制目标进行透明绘制。当开关Alpha处于关闭状态,和/或,当blend功能处于非使能状态时,可以将对应的第一绘制指令划分至第三逻辑组,表示无需对该第一绘制指令的绘制目标进行透明绘制。
例如,请参考下面第66769至第66773行代码,由于第66771行代码(即加粗显示的代码)中的GL_BLEND属性处于非使能(disable)状态,表示采用位于该第66771行所属的绘制指令之后的绘制指令,所绘制的绘制目标均会被按照非透明绘制的方式进行绘制,直至GL_BLEND属性转换为使能状态,因此,该第66771行之后直至GL_BLEND属性转换为使能状态之前的代码所属的绘制指令均会被划分至第三逻辑组。其中,该第66771行代码携带的绘制参数为GL_BLEND,用于指示生成绘制目标时使用的绘制模式为混合模式,即若该绘制目标与其他绘制目标在某位置处出现重叠,则该位置处的颜色应该为两者颜色的混合颜色。
66769行:glClearBufferfv(buffer=GL_COLOR,drawbuffer=0,value=[0.0,0.0,0.0,1.0])
66770行:glClearBufferfi(buffer=GL_DEPTH STENCIL,drawbuffer=0,depth=0.0,stencil=0)
66771行:glDisable(cap=GL_BLEND)
66772行:glClearMask(red=GL_FALSE,green=GL_FALSE,blue=GL_FALSE,alpha=GL_FALSE)
66773行:glViewport(x=0,y=0,width=0,height=720)
需要说明的是,除了根据第一绘制指令采用的绘制功能或携带的顶点信息的变化情况对第一绘制指令进行逻辑分组,还可以根据顶点信息表征的绘制模型的其他特征对第一绘制指令进行逻辑分组。示例地,当绘制模型为图7所示的人物亚瑟王时,可以根据该绘制模型查询指定规则,当该指定规则指示不需要透明绘制亚瑟王时,可将用于生成该亚瑟王的所有绘制指令划分至第三逻辑组,此时,该第三逻辑组也可称为非透明逻辑组。当该指定规则指示需要透明绘制亚瑟王时,可将该亚瑟王对应的所有绘制指令划分至第二逻辑组,此时,该第二逻辑组也可称为透明逻辑组。或者,可以按照绘制模型的形状特征,将多个绘制指令分别划分至对应的逻辑组。例如,可以根据绘制模型的形状特征,分别将对应的绘制指令划分至树木逻辑组、房屋逻辑组、背景逻辑组、人物逻辑组或其他形状逻辑组,本申请对此不作具体限定。
并且,在本申请实施例提供的图像渲染方法的实现过程中,可以根据实际需要选择是否执行该步骤203。也即是,可以选择先对一个或多个第一绘制指令划分逻辑组,然后在同一个逻辑组内,对第一图像指令流中的绘制指令和第二图像指令流中的绘制指令进行比较。或者,可以选择不执行该步骤203,在获取图像帧的第一图像指令流后,可以直接执行第一图像指令流中的绘制指令和第二图像指令流中的绘制指令的绘制参数比较过程。例如,在完成步骤202后可直接执行步骤204至步骤206,然后根据比较结果确定是否执行步骤207。
由于对于根据具有相同指令属性的多个第一绘制指令生成的多个绘制目标,在渲染过程中能够对该多个绘制目标进行合并渲染,因此,通过将一个或多个第一绘制指令划分至不同的逻辑组,能够使得在渲染过程中对同一逻辑组对应的绘制目标进行合并渲染,以进一步降低图形处理器的负载。且若在后续图像帧中需要重用该绘制目标,也能够降低该后续图像帧的图像渲染过程中出现渲染错误的概率。
步骤204、CPU在已渲染图像帧的第二图像指令流中,确定绘制指令的优先级。
绘制指令的优先级用于指示绘制指令相较于已渲染图像帧的绘制指令重复的可能性,且该可能性与优先级正相关。可选地,该确定绘制指令优先级的实现方式至少可以包括以下两种:
在一种可实现方式中,可以根据绘制指令携带绘制模型信息的情况确定该绘制指令的优先级。
在该实现方式中,由于每个绘制指令中均携带有待生成的绘制目标的绘制模型信息,因此,可以根据该绘制模型信息对应的顶点信息等,预估根据该绘制指令生成的绘制目标的目标参数,并根据该目标参数确定绘制指令的优先级,且该优先级与该目标参数正相关。例如,当该目标参数大于或等于指定参数阈值时,将该绘制指令的优先级设置为最高优先级,当该目标参数小于指定参数阈值时,将该绘制指令的优先级设置为最低优先级。其中,该目标参数可以为生成的2D图形的表面积或生成绘制目标的功耗等参数。
或者,可以将携带有目标绘制模型信息的绘制指令的优先级设置为最高优先级,将未携带有目标绘制模型信息的绘制指令的优先级设置为最低优先级。该目标模型信息用于指示被标记的绘制模型,该被标记的绘制模型可以为已渲染图像帧中的可重用绘制目标对应的绘制模型。
例如,在已渲染图像帧的渲染过程中重用了可重用绘制目标a和可重用绘制目标b,该可重用绘制目标a对应的绘制模型为绘制模型a1,可重用绘制目标b对应的绘制模型为绘制模型b1,则绘制模型a1和绘制模型b1均为被标记的绘制模型,此时,若绘制指令中携带有绘制模型a1和绘制模型b1中的任一个的绘制模型信息,可以确定该绘制指令的优先级为最高(或较高)优先级,若绘制指令中没有携带任何可重用绘制目标的绘制模型信息,可以确定该绘制指令的优先级为最低(或较低)优先级。
其中,由于该可重用绘制目标a和可重用绘制目标b为在已渲染图像帧中重用的绘制模型,即在该已渲染图像帧和渲染该已渲染图像帧的过程中用作对比的已渲染图像帧中,该可重用绘制目标a和可重用绘制目标b均未发生变化,因此,该可重用绘制目标a和可重用绘制目标b均可称为静态目标,相应的,不可重用的绘制目标可称为非静态目标,用于生成该静态目标的绘制指令可称为静态绘制指令(也可称为静态指令),用于生成该非静态目标的绘制指令可称为非静态绘制指令(也可称为非静态指令)。在这种情况下,静态绘制指令相当于最高优先级的绘制指令,非静态绘制指令相当于最低优先级的指令。
并且,对绘制模型进行标记的操作可以在确定绘制目标为可重用绘制目标后执行。同时,为了保证根据该标记确定绘制指令优先级的准确性,可以根据实际渲染情况刷新或取消该标记。例如,对于时序相邻的图像帧1、图像帧2和图像帧3,在图像帧1的渲染过程中,若确定绘制目标a为可重用绘制目标,则可对该绘制目标a进行标记,在图像帧2的渲染过程中,若确定绘制目标a不再是可重用绘制目标,则可以取消该绘制目标a的标记,若确定绘制目标a仍是可重用绘制目标,则可以保持该标记仍有效。
在实际场景中,有些绘制模型对应的图像不太可能发生变化,所以当绘制指令携带这些绘制模型(即被标记的绘制模型)信息时,该绘制指令的绘制参数与已渲染图像帧的绘制指令的绘制参数具有较大的相同概率,因此,通过根据携带被标记的绘制模型的情况确定绘制指令的优先级,并在后续比较过程中,按照优先级由高到低的顺序进行比较时,能够优先比较具有较大相同概率的绘制指令,并根据实际需要选择是否对该具有较低相同概率的绘制指令进行比较,能够加快整个渲染过程的渲染速度。且当被比较的绘制参数相同时,可以重用对应的绘制目标,能够较大概率地降低图形处理器负载。
在另一种可实现方式中,可以根据实际需要,预先在绘制模型库中指定绘制模型,相应的,该目标绘制模型信息可以用于指示该指定绘制模型。因此,在确定绘制指令的优先级时,可将携带有该目标绘制模型信息的绘制指令的优先级设置为最高优先级,将未携带有该目标绘制模型信息的绘制指令的优先级设置为较低或最低优先级。
其中,可以根据模型库中各个绘制模型的顶点信息,确定各个绘制模型的面积,当绘制模型的面积大于或等于指定面积阈值时,将该绘制模型确定为指定绘制模型。或者,可以预估根据该绘制模型生成绘制目标的功耗,当绘制模型的功耗大于或等于指定功耗阈值时,将该绘制模型确定为指定绘制模型。
绘制模型的面积较大时,生成该绘制模型对应的绘制目标时的功耗较大,当后续过程中按照优先级由高到低的顺序进行比较时,能够优先比较功耗较大的绘制目标对应的绘制参数,并根据实际需要选择是否对功耗较小的绘制目标对应的绘制参数进行比较,能够加快整个渲染过程的渲染速度。且当被比较的绘制参数相同时,可以重用对应的绘制目标,能够较大概率地降低图形处理器负载。
可选地,已渲染图像帧可以为任一已经完成渲染过程的图像帧。例如,该已渲染图像帧可以为已完成渲染的图像帧中与待渲染的图像帧时序相邻的图像帧,即已渲染图像帧可以为该待渲染的图像帧的上一帧图像。由于在已完成渲染的多个图像帧中,该上一帧图像为该多个图像帧中与该待渲染的图像帧的图像内容相似概率最高的图像帧,因此,当该已渲染图像帧为该上一帧图像时,相较于其它已完成渲染的图像帧,该上一帧图像的第二图像指令流中绘制指令的绘制参数与该待渲染的图像帧的第一图像指令流中绘制指令的绘制参数相同的概率最大,在后续图像渲染过程中,能够较多地利用该上一帧图像中的绘制目标对该待渲染的图像帧进行图像渲染,能够较大程度地降低图形处理器的负载。
在确定第二图像指令流中绘制指令的优先级后,可以将该优先级结果及确定优先级过程中涉及的绘制模型等信息记载在存储器中,以便于在图像帧的图像渲染过程中,可以直接读取并使用该信息。例如,可以读取被标记的绘制模型的信息,并根据该被标记的绘制模型的信息确定第一图像指令流中绘制指令的优先级。
步骤205、CPU在第一图像指令流中,确定第一绘制指令的优先级。
该步骤205的实现过程请相应参考步骤204的实现过程。需要说明的是,步骤204的可以在图5所示的时刻执行,也可以在所述已渲染图像帧被渲染时执行,还可以预先配置好优先级。
步骤206、CPU按照优先级由高到低的顺序,将具有相同优先级,且位于相同逻辑组内的第一绘制指令和第二图像指令流中的绘制指令进行比较。
在执行该步骤206的过程中,可以按照优先级由高到低的顺序,依次将具有相同优先级且位于相同逻辑组内的第一绘制指令和第二图像指令流中的绘制指令(为便于描述,下文将第二图像指令流中的绘制指令称为第二绘制指令)进行比较。并且,在完成具有较高优先级的第一绘制指令和第二绘制指令的比较过程后,可以根据实际需要,确定是否需要对具有较低优先级的第一绘制指令和第二绘制指令进行比较。在确定需要对该具有较低优先级的第一绘制指令和第二绘制指令进行比较后,再对该具有较低优先级的第一绘制指令和第二绘制指令进行比较。
示例地,假设图像帧的第一绘制指令的优先级包括最高优先级和最低优先级,在将具有最高优先级的第一绘制指令与第二绘制指令进行比较之后,若GPU的实时频点高于指定阈值,可以确定需要将具有最低优先级的第一绘制指令与第二绘制指令进行比较,此时,可以对该具有最低优先级的第一绘制指令与第二绘制指令进行比较。
由于绘制指令的优先级用于指示绘制指令相较于已渲染图像帧的绘制指令重复的可能性,且该可能性与优先级正相关,因此,具有较低优先级的第一绘制指令和第二绘制指令中也可能存在相同的绘制模型,且该第一绘制指令和第二绘制指令也对应相同。此时,通过将具有较低优先级的第一绘制指令与第二绘制指令进行比较,可以进一步增加预先生成的绘制目标的重复利用概率,以进一步降低图形处理器负载。
可选地,在对第一绘制指令与第二绘制指令进行比较时,可以对指令中的绘制参数设置浮动阈值。也即是,当第一绘制指令中的绘制参数相对于第二绘制指令中对应的绘制参数的变化量小于该浮动阈值时,可以认为该第一绘制指令中的绘制参数与该第二绘制指令中对应的绘制参数相同。
可选地,在相同逻辑组内,当确定存在相同的绘制指令之后,该步骤206的实现过程还可以包括:当该第一绘制指令的优先级不为最高时,将该第一绘制指令的优先级设置为最高,以便于将当前图像帧作为已渲染图像帧的图像帧,可以根据该具有最高优先级的第一绘制指令中的绘制模型确定其图像指令流中绘制指令的优先级。
绘制指令的比较的具体方法本申请不做限定,可以根据绘制指令的特点和需要相同的参数等设置算法,例如将两帧中两个绘制指令中需要相同的参数一一提取出来并一一比较;或者对参数设置优先级,优先比较关键参数;再例如假如参数有关联性,例如A参数相同,则B参数一定相同,那么可设置算法仅比较A参数。
步骤207、当第一图像指令流和第二图像指令流中存在相同的绘制指令时,CPU指示图形处理器获取可重用绘制目标。
可选的,指示图形处理器获取可重用绘制目标的实现方式至少可以包括以下两种可实现方式:
在一种可实现方式中,可以将该重复绘制指令(个数可以是一个或多个)替换为目标指示指令,该目标指示指令用于指示图形处理器获取可重用绘制目标,以便于图形处理器基于该可重用绘制目标对图像帧进行渲染。该可重用绘制目标为预先基于该目标绘制指令所生成的绘制目标。
可选的,绘制指令中还可以携带有存储指示信息。该存储指示信息用于指示在根据绘制指令生成绘制目标后,用于存储该绘制目标的存储位置。因此,CPU可以获取该可重用绘制目标的存储位置,并通过该目标指示指令指示图形处理器在该存储位置中获取该可重用绘制目标。作为一种可实现方式,目标指示指令中可以携带有可重用绘制目标的存储地址,图形处理器在接收到该目标指示指令后,可以在该存储地址指示的存储位置中获取该可重用绘制目标。
或者,绘制指令中还可以携带有待生成的绘制目标的标识。因此,CPU可以获取生成的每个绘制目标的绘制目标标识,并通过该目标指示指令指示图形处理器获取指定绘制目标标识所指示的可重用绘制目标。例如,目标指示指令中可以携带有可重用绘制目标的绘制目标标识,图形处理器在接收到该目标指示指令后,可以根据该绘制目标标识获取对应的可重用绘制目标。其中,绘制目标标识用于唯一地标识绘制目标。
在另一种可实现方式中,可以将该重复绘制指令设置成无效指令,然后在第一图像指令流中增加目标指示指令,该目标指示指令用于指示图形处理器获取可重用绘制目标,以供图形处理器基于该可重用绘制目标对图像帧进行渲染。
在将第一绘制指令设置成无效指令后,图形处理器在接收到该设置为无效指令的第一绘制指令后,无需执行该第一绘制指令,因此,能够降低图形处理器负载。其中,在第一图像指令流中添加目标指示指令的实现方式请参考将重复第一绘制指令替换为目标指示指令的实现方式,此处不再赘述。
示例地,假设第一图像指令流包括多条第一绘制指令,某条第一绘制指令包括以下第49763行至49770行指令(每行指令“//”后的内容为对该行指令的注释),其中,49763行指令用于指示绘制完成的绘制目标的绘制目标标识为1,49764行至49770行指令用于指示根据参数绘制该绘制目标。并且,根据预先设置可知绘制完成的绘制目标的纹理的纹理标识为318,即可以用纹理标识318表示该绘制目标标识为1的绘制目标。
49763行:glBindFrameBuffer{target=GL_FRAMEBUFFER,buffer=1}//表示生成的绘制目标的绘制目标标识为1
49764行:glBindTexture{target=GL_TEXTURE_2D,texture=3}//表示绘制目标1使用纹理标识为3的纹理
49765行:glBlandFuncSeparate(sfactorRGB=GL SRC ALPHA,dfactorRGB=GLONE MIMUS SRC ALPHA,sfactorAlpha=GL SRC ALPHA,dfactorAlph...)//表示采用叠加的色彩混合模式对绘制目标1的色彩进行处理
49766行:glBindTexture{target=GL_TEXTURE_2D,texture=491}//表示绘制目标1使用纹理标识为491的纹理
49767行:gluseProgram(program=17)//表示在生成绘制目标1时,调用GPU中程序编号为17的程序
49768行:glUniform4fw{location=11,count=1,value=[1.0,1.0,1.0,0.0]}//表示绘制目标1使用的材质的信息
49769行:glUniform4fw{location=7,count=4,value=[16elements......]}//表示绘制目标1使用的材质的信息
49770行:glDrawElementsBaseVertexOES(mode=TRIANGLES,count=6,type=GL_UNSIGNED SHORT,indices=Ox3cc,basevertex=324)//表示绘制目标1所基于的绘制模型,及用于指示该绘制模型的顶点信息等参数
第二图像指令流中的某条第二绘制指令包括以下48422行至48428行指令,该7行指令用于生成绘制绘制目标2。
48422行:glBindTexture{target=GL_TEXTURE_2D,texture=3}//表示绘制目标2使用纹理标识为3的纹理
48423行:glBlandFuncSeparate(sfactorRGB=GL SRC ALPHA,dfactorRGB=GLONE MIMUS SRC ALPHA,sfactorAlpha=GL SRC ALPHA,dfactorAlph...)//表示采用叠加的色彩混合模式对绘制目标2的色彩进行处理
48424行:glBindTexture{target=GL_TEXTURE_2D,texture=491}//表示绘制目标2使用纹理标识为491的纹理
48425行:gluseProgram(program=17)//表示在绘制绘制目标2时,调用GPU中程序编号为17的程序
48426行:glUniform4fw{location=11,count=1,value=[1.0,1.0,1.0,0.0]}//表示绘制目标2使用的材质的信息
48427行:glUniform4fw{location=7,count=4,value=[16elements......]}//表示绘制目标2使用的材质的信息
48428行:glDrawElementsBaseVertexOES(mode=TRIANGLES,count=6,type=GL_UNSIGNED SHORT,indices=Ox3cc,basevertex=324)//表示绘制目标2所基于的绘制模型,及用于指示该绘制模型的顶点信息等参数
通过将第一绘制指令中的多行指令分别与第二绘制指令中的多行指令进行对比,可以确定:第49764行指令与48422行指令中指示纹理标识的参数对应相同,第49765行指令与48423行指令中的指示色彩混合模式的参数对应相同,第49766行指令与48424行指令中指示纹理标识的参数对应相同,第49767行指令与48425行指令中指示调用GPU中程序的参数对应相同,第49768行指令与48426行指令中指示材质的参数对应相同,第49769行指令与48427行指令中指示材质的参数对应相同,第49770行指令与48428行指令中指示绘制模型及用于表征该绘制模型的顶点信息的参数对应相同。
因此,可以确定该第一绘制指令和第二绘制指令用于绘制同一绘制目标,该绘制目标即为可重用绘制目标,则可以使用如下目标指示指令替换该条第一绘制指令,以指示GPU获取该预先绘制完成的可重用绘制目标,并基于该可重用绘制目标对图像帧进行渲染。该目标指示指令为:
glDrawElementsBaseVertexOES 99055 6 vertices,0unique indices
该目标指示指令为一函数体,其展开的形式为:
99052行:glUniform4fw{location=10,count=1,value=[0.0,0.0,0.0,0.0]}
99053行:glBindTexture{target=OL_TEXTURE_2D,texture=318}
99054行:glUniform4fw{location=6,count=4,value=[16elements......]}
可见,在99053行中携带了可重用绘制目标的纹理标识318。例如该绘制目标标识318指示的绘制目标为图6中的图标M2。CPU通过使用该目标指示指令替换该条第一绘制指令,可以使GPU在渲染图像帧的过程中,通过执行该目标指示指令以获取该纹理标识318所指示的可重用绘制目标,而无需执行上述第一绘制指令,因此,能够降低GPU的负载。
当然,CPU获取可重用绘制目标之后,还需要基于第一图像指令流中的其他的第一绘制指令生成其他的绘制目标,最终得到该图像帧的图像。
例如,图像帧可以包括按序排列的多个绘制目标,在图像渲染过程中,可以按照该顺序依次绘制各个绘制目标,在绘制到可重用绘制目标时,可以根据目标指示指令直接获得该可重用绘制目标。示例地,假设图像帧包括需要依次绘制的人、树和房子,该树是可重用绘制目标,在该图像帧的绘制过程中,可以通过执行人对应的绘制指令绘制人,执行目标指示指令一次性地绘制出树,再通过执行房子对应的绘制指令绘制房子,以得到该图像帧的显示数据。
下面结合图4和图8对本申请实施例提供的图像渲染方法进行说明,并结合图9至图12对该图像渲染方法对该方法的有益效果进行说明。
在终端中运行游戏应用时,CPU中运行的游戏层模块01将游戏的逻辑转换成第一图像指令流,该第一图像指令流包括第一绘制指令。其中,图8中每个使用点填充的方块、斜线填充的方块和黑色填充的方块均表示一个第一绘制指令。且CPU根据步骤201的实现过程确定当前图像帧所属的进程为可优化进程后,游戏层模块01可将该第一图像指令流发送至系统图形优化模块022。系统图形优化模块022在接收到该第一图像指令流后,可根据步骤203的实现过程将该多个第一绘制指令分别划分至背景逻辑组、非透明逻辑组和UI逻辑组。然后系统图形优化模块022可以根据步骤204至步骤206的实现过程,将第一绘制指令与第二绘制指令进行比较,经过比较后可以确定每个逻辑组中的静态指令和非静态指令。然后,系统图形优化模块022可以参考步骤207的实现过程,将静态指令替换为对应的目标指示指令,并将非静态指令和替换后的目标指示指令经过其他模块和DDR等发送至GPU。GPU在接收到非静态指令和替换后的目标指示指令,可基于目标指示指令获取可重用绘制目标,并基于非静态指令生成对应的绘制目标,以得到图像帧的显示数据。
示例地,图9为图像帧的示意图,图10和图11分别为对该图像帧进行图像渲染过程中GPU频点和电子设备的电流随时间变化的示意图。在图10和图11中,[0,t1]和[t2,t3]范围内的曲线为采用相关技术进行图像渲染时的曲线,[t1,t2]和[t3,t4]范围内的曲线为采用本申请实施例提供的图像渲染方法进行图像渲染时的曲线。并且,在采用本申请实施例提供的图像渲染方法进行图像渲染的过程中,其处理对象包括图9中的黑色部分。通过将该黑色部分对应的绘制指令的绘制参数与已渲染图像帧对应的绘制指令的绘制参数进行对比,可以确定两者的绘制参数对应相等,因此,可以使用携带有该黑色部分的存储位置信息的目标指示指令替换该黑色部分对应的第一绘制指令。GPU在接收到该目标指示指令后,可以直接在该存储位置信息指示的存储位置中,获取预先基于该黑色部分对应的第一绘制指令所生成的可重用绘制目标,以在图像帧中一次性地绘制出该黑色部分对应的图像。其中,被替换掉的第一绘制指令请参考图12方框中的指令。
通过将该图10和图11进行对比可以看出:在采用本申请实施例提供的图像渲染方法进行图像渲染时,GPU的频点可以由采用相关技术进行图像渲染时的415兆赫兹降低为300兆赫兹,可以确定通过本申请实施例提供的图像渲染方法明显降低了图形处理器的频点。同时,电子设备的电流由采用相关技术进行图像渲染时的900毫安降低为780毫安,且该电流主要体现为电子设备的整机功耗和终端发热的热量,因此,可以确定通过本申请实施例提供的图像渲染方法有效降低了电子设备的整机功耗并减少了电子设备发热。也即是,可以确定采用本申请实施例提供的图像渲染方法有效地降低了GPU负载和图像渲染的功耗。
综上所述,相较于相关技术,本申请提供的图像渲染方法能够使得图形处理器直接使用已生成的可重用绘制目标,减少了生成绘制目标的功耗,有效降低了图形处理器负载以及整个图像渲染过程的功耗。
另外,使用本申请提供的方法虽然降低了功耗,但却没有减少对图像进行渲染时的渲染资源,因此仍能够保证渲染得到的图像的画质。
另外,由于在图像渲染过程中,不会省略对被遮挡的图像的渲染,因此,能够适用于对丢弃片元、更改片元的深度信息或使用透明绘制的场景中的图像渲染,因此该图像渲染方法的适用范围更广。
需要说明的是,本申请实施例提供的图像渲染方法步骤的先后顺序可以进行适当调整,步骤也可以根据情况进行相应增减,例如,可以根据实际需要选择是否执行步骤203,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化的方法,都应涵盖在本发明的保护范围之内,因此不再赘述。
下述为本申请的装置实施例,可以用于执行本申请的方法实施例。对于本申请装置实施例中未披露的细节,请参照本申请方法实施例。
请参考图13,其示出了本申请示例性实施例提供的一种图像渲染装置900的框图,该装置900可以应用在终端中,该装置900可以包括:
第一获取模块901,用于获取第一图像帧的第一图像指令流,所述第一图像指令流包括一个或多个第一绘制指令。
指示模块902,用于当所述第一图像指令流中存在第一目标绘制指令时,指示图形处理器基于可重用绘制目标对所述图像帧进行渲染,其中,所述第一目标绘制指令与已渲染图像帧的第二图像指令流中的第二目标绘制指令相同,所述可重用绘制目标为基于所述第二目标绘制指令所生成的绘制目标。
可选地,指示模块902,用于:将第一图像指令流中的重复绘制指令替换为目标指示指令,目标指示指令用于指示图形处理器获取可重用绘制目标,以供图形处理器基于可重用绘制目标对图像帧进行渲染。所述重复绘制指令包括所述第一目标绘制指令中的一个或多个绘制指令。
被替换的可以是所有的第一目标绘制指令,也可以部分第一目标绘制指令。在一些实现方式下,依据所述待渲染图像帧的特点选择替换哪些第一目标绘制指令可以,在另一些实现方式下,预先配置哪些指令可以替换,哪些指令不可以替换。
可选地,目标指示指令用于指示图形处理器在指定存储位置中获取可重用绘制目标;或者,目标指示指令用于指示图形处理器将携带有指定绘制目标标识的绘制目标确定为可重用绘制目标。
可选地,如图14所示,装置900还可以包括:比较模块903,用于将一个或多个第一绘制指令与第二图像指令流中的一个或多个第二绘制指令进行比较,以确定存在所述第一目标绘制指令。
以绘制指令为openGL中的draw call为例,比较两个图像指令流中的draw call,具体可以比较该draw call调用的API以及各个参数,以确定是否存在相同的draw call。对比的参数可以包括program、texture、uniform、vertex、以及indices等,其中texture不仅ID需要相同,还要检查两个图像帧对应的texture内容是否发生变化,program不仅需要ID相同,还要确定对应的shader没有发生变化。这样,确定出相同的draw call。
可选地,比较模块903,具体用于根据指令属性对所述一个或多个第一绘制指令划分逻辑组;将位于相同逻辑组内的第一绘制指令和第二绘制指令进行比较,其中,所述第二绘制指令按照与所述第一绘制指令相同的方式被划分逻辑组。
可选地,指令属性包括以下中的一项或两项:绘制指令采用的绘制功能或绘制指令携带的顶点信息的变化情况;其中,顶点信息用于标识绘制指令携带的绘制模型。
可选地,划分逻辑组的方式包括:
当至少两条第一绘制指令包含的顶点坐标内对应指定维度的值相等时,将至少两条第一绘制指令均划分至第一逻辑组,顶点坐标用于表征顶点信息,顶点信息用于标识绘制指令携带的绘制模型;
和/或,当第一绘制指令包括的透明绘制功能处于使能状态时,将第一绘制指令划分至第二逻辑组;
和/或,当第一绘制指令包括的透明绘制功能处于非使能状态时,将第一绘制指令划分至第三逻辑组,第一逻辑组、第二逻辑组和第三逻辑组包含的第一绘制指令的指令属性不同。
本申请中划分逻辑组并不限定必须将所有的第一绘制指令均划分至不同的逻辑组,可以是部分第一绘制指令被划分了,另一部分绘制指令不需要划分。比如某个待渲染图像帧中,有一部分图像是新增的,则该部分图像对应的绘制指令是新增的,必然和之前已渲染的图像帧不一样,那么这部分绘制指令可以不参与比较,也不划分逻辑组。
可选地,比较模块903,用于:按照绘制指令的优先级由高到低的顺序,将相同优先级的绘制指令进行比较,其中,优先级用于指示绘制指令重复的可能性,且该可能性与优先级正相关。绘制指令重复指的是该绘制指令在之前的图像帧中也存在。
可选地,比较模块903,还用于:将重复绘制指令的优先级设置为最高。
可选地,绘制指令中携带有绘制目标的绘制模型信息,绘制模型信息用于指示生成绘制目标时所基于的绘制模型,携带目标绘制模型信息的绘制指令的优先级高于未携带目标绘制模型信息的绘制指令的优先级,目标绘制模型信息用于指示被标记的绘制模型。
可选地,如图14所示,装置900还可以包括:第二获取模块904,用于获取图像帧所属进程的进程标识。
相应的,第一获取模块901,用于:当进程标识被记载在目标进程列表中时,获取第一图像指令流,目标进程列表记载有至少一个可优化进程的进程标识。
可选地,已渲染图像帧为已完成渲染的所有图像帧中与图像帧时序相邻的图像帧。
可选地,绘制参数包括以下一个或多个:绘制模型的顶点信息、颜色信息或渲染材质信息。
综上所述,本申请实施例提供的图像渲染装置,使得GPU能够直接使用已生成的可重用绘制目标,减少了GPU生成绘制目标的功耗,有效地降低了GPU负载以及该图像帧的整个图像渲染过程的功耗。
并且,由于在图像渲染过程中不会减少对图像进行图像渲染时的渲染资源,能够保证渲染得到的图像的画质。同时,由于在图像渲染过程中,不会省略对被遮挡的图像的渲染,因此,能够适用于对丢弃片元、更改片元的深度信息或使用透明绘制的场景中的图像渲染,保证了该图像渲染方法的适用范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的装置和模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
并且,以上装置中的各个模块可以通过软件或软件硬件结合的方式来实现。当至少一个模块是硬件的时候,该硬件可以是逻辑集成电路模块,可具体包括晶体管、逻辑门阵列或算法逻辑电路等。至少一个模块是软件的时候,该软件以计算机程序产品形式存在,并被存储于计算机可读存储介质中。该软件可以被一个处理器执行。因此可替换地,图像渲染装置,可以由一个处理器执行软件程序来实现,本实施例对此不限定。
本申请实施例还提供了一种图像渲染装置,包括处理器和存储器;在处理器执行存储器存储的计算机程序时,图像渲染装置执行本申请实施例提供的图像渲染方法。可选地,该图像渲染装置可以部署在终端中。
本申请实施例还提供了一种存储介质,该存储介质可以为非易失性计算机可读存储介质,存储介质内存储有计算机程序,该计算机程序指示终端执行本申请实施例提供的任一的图像渲染方法。该存储介质可以包括:只读存储器(read-only memory,ROM)或随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可存储程序代码的介质。
本申请实施例还提供了一种包含指令的计算机程序产品,当计算机程序产品在计算机上运行时,使得计算机执行本申请实施例提供的图像渲染方法。该计算机程序产品可以包括一个或多个计算机指令。在计算机上加载和执行该计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。该计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。该计算机指令可以存储在计算机可读存储介质中,或者通过该计算机可读存储介质进行传输。该计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。该可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如,固态硬盘(solid state disk,SSD))等。
本申请实施例还提供了一种芯片,例如CPU芯片,该芯片包括一个或多个物理核、以及存储介质,所述一个或多个物理核在读取所述存储介质中的计算机指令后实现前述图像渲染方法。另一些实施例中,该芯片可以用纯硬件或软硬结合的方式实现前述图像渲染方法,即所述芯片包括逻辑电路,当所述芯片运行时所述逻辑电路用于实现前述第一方面任意一种图像渲染方法,所述逻辑电路可以为可编程逻辑电路。类似的,GPU也可以如CPU般实现。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本申请的可选实施例,并不用以限制本申请,凡在本申请的原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

Claims (25)

1.一种图像渲染方法,其特征在于,所述方法包括:
获取第一图像帧的第一图像指令流,所述第一图像指令流包括一个或多个第一绘制指令;
确定所述第一图像指令流中存在第一目标绘制指令,指示图形处理器基于可重用绘制目标对所述第一图像帧进行渲染,其中,所述第一目标绘制指令与已渲染图像帧的第二图像指令流中的第二目标绘制指令相同,所述可重用绘制目标为基于所述第二目标绘制指令所生成的绘制目标。
2.根据权利要求1所述的方法,其特征在于,所述指示图形处理器基于可重用绘制目标对所述第一图像帧进行渲染,包括:
将所述第一目标绘制指令中的一个或多个绘制指令替换为目标指示指令,所述目标指示指令用于指示所述图形处理器获取所述可重用绘制目标。
3.根据权利要求2所述的方法,其特征在于,所述目标指示指令用于指示所述图形处理器在指定存储位置中获取所述可重用绘制目标;
或者,所述目标指示指令用于指示所述图形处理器获取携带有指定绘制目标标识的所述可重用绘制目标。
4.根据权利要求1至3任一所述的方法,其特征在于,所述方法还包括:比较所述一个或多个第一绘制指令和所述第二图像指令流中的一个或多个第二绘制指令,以确定存在所述第一目标绘制指令。
5.根据权利要求4所述的方法,其特征在于,比较所述一个或多个第一绘制指令和所述一个或多个第二绘制指令,包括:
根据指令属性对所述一个或多个第一绘制指令划分逻辑组;
将位于相同逻辑组内的第一绘制指令和第二绘制指令进行比较,其中,所述第二绘制指令按照与所述第一绘制指令相同的方式被划分逻辑组。
6.根据权利要求5所述的方法,其特征在于,所述指令属性包括以下中的一项或两项:所述绘制指令采用的绘制功能,或所述绘制指令携带的顶点信息的变化情况;其中,所述顶点信息用于标识所述绘制指令携带的绘制模型。
7.根据权利要求5或6所述的方法,其特征在于,所述根据指令属性对所述一个或多个第一绘制指令划分逻辑组,包括以下划分方式中的一种或多种:
确定至少两条第一绘制指令包含的顶点坐标内对应指定维度的值相等,将所述至少两条第一绘制指令划分至第一逻辑组,所述顶点坐标用于表征顶点信息,所述顶点信息用于标识所述绘制指令携带的绘制模型;
确定所述第一绘制指令包括的透明绘制功能处于使能状态,将所述第一绘制指令划分至第二逻辑组;或,
确定所述第一绘制指令包括的透明绘制功能处于非使能状态,将所述第一绘制指令划分至第三逻辑组。
8.根据权利要求4所述的方法,其特征在于,比较所述一个或多个第一绘制指令和所述一个或多个第二绘制指令,包括:
按照绘制指令的优先级由高到低的顺序,将相同优先级的绘制指令进行比较,其中,所述优先级用于指示绘制指令重复的可能性,且所述可能性与优先级正相关。
9.根据权利要求8所述的方法,其特征在于,还包括:将所述第一目标绘制指令的优先级设置为最高。
10.根据权利要求8或9所述的方法,其特征在于,所述绘制指令中携带有绘制目标的绘制模型信息,所述绘制模型信息用于指示生成所述绘制目标时所基于的绘制模型,携带目标绘制模型信息的绘制指令的优先级高于未携带所述目标绘制模型信息的绘制指令的优先级,所述目标绘制模型信息用于指示被标记的绘制模型。
11.根据权利要求1至10任一所述的方法,其特征在于,所述方法还包括:获取所述第一图像帧所属进程的进程标识;
所述获取第一图像帧的第一图像指令流,包括:
确定所述进程标识被记载在目标进程列表中,获取所述第一图像指令流,所述目标进程列表记载有至少一个可优化进程的进程标识。
12.根据权利要求1至11任一所述的方法,其特征在于,所述已渲染图像帧为已完成渲染的所有图像帧中与所述第一图像帧时序相邻的图像帧。
13.根据权利要求1至12任一所述的方法,其特征在于,比较绘制指令时比较的参数包括以下一个或多个:绘制模型的顶点信息、颜色信息或渲染材质信息。
14.一种图像渲染装置,其特征在于,所述装置包括:
第一获取模块,用于获取第一图像帧的第一图像指令流,所述第一图像指令流包括一个或多个第一绘制指令;
指示模块,用于确定所述第一图像指令流中存在第一目标绘制指令,指示图形处理器基于可重用绘制目标对所述第一图像帧进行渲染,其中,所述第一目标绘制指令数与已渲染图像帧的第二图像指令流中的第二目标绘制指令相同,所述可重用绘制目标为基于所述第二目标绘制指令所生成的绘制目标。
15.根据权利要求14所述的装置,其特征在于,所述指示模块,用于:
将所述第一目标绘制指令中的一个或多个绘制指令替换为目标指示指令,所述目标指示指令用于指示所述图形处理器获取所述可重用绘制目标。
16.根据权利要求15所述的装置,其特征在于,所述目标指示指令用于指示所述图形处理器在指定存储位置中获取所述可重用绘制目标;
或者,所述目标指示指令用于指示所述图形处理器获取携带有指定绘制目标标识的绘制目标。
17.根据权利要求14至16任一所述的装置,其特征在于,所述装置还包括:比较模块,用于比较所述一个或多个第一绘制指令和所述第二图像指令流中的一个或多个第二绘制指令,以确定存在所述第一目标绘制指令。
18.根据权利要求17所述的装置,其特征在于,所述比较模块用于:根据指令属性对所述一个或多个第一绘制指令划分逻辑组;将位于相同逻辑组内的第一绘制指令和所述第二图像指令流中的绘制指令进行比较,其中,所述第二绘制指令按照与所述第一绘制指令相同的方式被划分逻辑组。
19.根据权利要求18所述的装置,其特征在于,所述指令属性包括以下中的一项或两项:所述绘制指令采用的绘制功能,或所述绘制指令携带的顶点信息的变化情况;其中,所述顶点信息用于标识所述绘制指令携带的绘制模型。
20.根据权利要求18或19所述的装置,其特征在于,所述比较模块用于:
确定至少两条第一绘制指令包含的顶点坐标内对应指定维度的值相等,将所述至少两条第一绘制指令均划分至第一逻辑组,所述顶点坐标用于表征顶点信息,所述顶点信息用于标识所述绘制指令携带的绘制模型;
和/或,确定所述第一绘制指令包括的透明绘制功能处于使能状态,将所述第一绘制指令划分至第二逻辑组;
和/或,确定所述第一绘制指令包括的透明绘制功能处于非使能状态,将所述第一绘制指令划分至第三逻辑组,所述第一逻辑组、所述第二逻辑组和所述第三逻辑组包含的第一绘制指令的指令属性不同。
21.根据权利要求17所述的装置,其特征在于,所述比较模块用于:按照绘制指令的优先级由高到低的顺序,将相同优先级的绘制指令进行比较,其中,所述优先级用于指示绘制指令重复的可能性,且所述可能性与优先级正相关。
22.根据权利要求21所述的装置,其特征在于,所述绘制指令中携带有绘制目标的绘制模型信息,所述绘制模型信息用于指示生成所述绘制目标时所基于的绘制模型,携带目标绘制模型信息的绘制指令的优先级高于未携带所述目标绘制模型信息的绘制指令的优先级,所述目标绘制模型信息用于指示被标记的绘制模型。
23.根据权利要求14至22任一所述的装置,其特征在于,所述装置还包括:第二获取模块,用于获取所述图像帧所属进程的进程标识;
所述第一获取模块用于:当所述进程标识被记载在目标进程列表中时,获取所述第一图像指令流,所述目标进程列表记载有至少一个可优化进程的进程标识。
24.根据权利要求14至23任一所述的装置,其特征在于,所述已渲染图像帧为已完成渲染的所有图像帧中与所述第一图像帧时序相邻的图像帧。
25.一种电子设备,其特征在于,包括第一处理器和存储器;
所述存储器用于存储计算机程序;
所述第一处理器用于执行所述存储器存储的所述计算机程序时实现如权利要求1至13任一所述的图像渲染方法;
所述电子设备还包括图形处理器,所述图形处理器用于在所述第一处理器的指示下执行图像渲染操作。
CN201910224224.3A 2019-03-22 2019-03-22 图像渲染方法及装置、电子设备 Active CN111724293B (zh)

Priority Applications (4)

Application Number Priority Date Filing Date Title
CN201910224224.3A CN111724293B (zh) 2019-03-22 2019-03-22 图像渲染方法及装置、电子设备
PCT/CN2020/078663 WO2020192417A1 (zh) 2019-03-22 2020-03-10 图像渲染方法及装置、电子设备
US17/482,124 US11816775B2 (en) 2019-03-22 2021-09-22 Image rendering method and apparatus, and electronic device
US18/481,068 US20240037836A1 (en) 2019-03-22 2023-10-04 Image rendering method and apparatus, and electronic device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910224224.3A CN111724293B (zh) 2019-03-22 2019-03-22 图像渲染方法及装置、电子设备

Publications (2)

Publication Number Publication Date
CN111724293A true CN111724293A (zh) 2020-09-29
CN111724293B CN111724293B (zh) 2023-07-28

Family

ID=72563742

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910224224.3A Active CN111724293B (zh) 2019-03-22 2019-03-22 图像渲染方法及装置、电子设备

Country Status (3)

Country Link
US (2) US11816775B2 (zh)
CN (1) CN111724293B (zh)
WO (1) WO2020192417A1 (zh)

Cited By (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112199149A (zh) * 2020-10-16 2021-01-08 维沃移动通信有限公司 界面渲染方法、装置及电子设备
CN112651888A (zh) * 2020-11-25 2021-04-13 北京字跳网络技术有限公司 图像处理方法、装置、电子设备及存储介质
CN112907437A (zh) * 2021-03-26 2021-06-04 长沙景嘉微电子股份有限公司 多个3d进程运行方法、装置、电子设备和存储介质
CN113256779A (zh) * 2021-07-05 2021-08-13 广州中望龙腾软件股份有限公司 一种基于OpenGL指令的渲染运行方法及系统
CN113393585A (zh) * 2021-08-18 2021-09-14 西安芯瞳半导体技术有限公司 一种渲染问题定位方法、装置、定位设备及存储介质
CN113663328A (zh) * 2021-08-25 2021-11-19 腾讯科技(深圳)有限公司 画面录制方法、装置、计算机设备及存储介质
CN113986002A (zh) * 2021-12-31 2022-01-28 荣耀终端有限公司 帧处理方法、装置及存储介质
CN113992981A (zh) * 2021-10-21 2022-01-28 稿定(厦门)科技有限公司 视频图像的处理方法及装置
CN114092590A (zh) * 2022-01-19 2022-02-25 荣耀终端有限公司 电子设备及其图像渲染性能的评估方法、介质
WO2022089592A1 (zh) * 2020-10-30 2022-05-05 华为技术有限公司 一种图形渲染方法及其相关设备
CN114443189A (zh) * 2021-08-20 2022-05-06 荣耀终端有限公司 一种图像处理方法和电子设备
WO2022100685A1 (zh) * 2020-11-13 2022-05-19 华为技术有限公司 一种绘制命令处理方法及其相关设备
CN115018692A (zh) * 2021-12-17 2022-09-06 荣耀终端有限公司 一种图像渲染方法及电子设备
CN116051351A (zh) * 2022-08-22 2023-05-02 荣耀终端有限公司 一种特效处理方法和电子设备
WO2023087778A1 (zh) * 2021-11-19 2023-05-25 北京字节跳动网络技术有限公司 窗口信息处理方法、装置、电子设备及存储介质
WO2023093792A1 (zh) * 2021-11-26 2023-06-01 华为技术有限公司 一种图像帧的渲染方法及相关装置
CN116664375A (zh) * 2022-10-17 2023-08-29 荣耀终端有限公司 图像预测方法、装置、设备及存储介质
CN116841739A (zh) * 2023-06-30 2023-10-03 沐曦集成电路(杭州)有限公司 用于异构计算平台的数据包重用系统
CN117112086A (zh) * 2023-01-31 2023-11-24 荣耀终端有限公司 一种数据处理方法及电子设备
CN117687771A (zh) * 2023-07-24 2024-03-12 荣耀终端有限公司 一种缓冲区分配方法、装置、电子设备及存储介质

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112383591B (zh) * 2020-10-27 2024-02-23 西安万像电子科技有限公司 图像管理方法、设备及系统
CN114257868A (zh) * 2021-12-23 2022-03-29 中国农业银行股份有限公司 视频制作方法、装置、设备和存储介质
CN116740241A (zh) * 2022-09-30 2023-09-12 荣耀终端有限公司 一种图像处理方法及电子设备
CN117437342B (zh) * 2023-12-20 2024-04-30 深圳图为技术有限公司 一种三维场景渲染方法和存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070234195A1 (en) * 2006-04-03 2007-10-04 National Instruments Corporation Simultaneous update of a plurality of user interface elements displayed in a web browser
CN101675453A (zh) * 2007-03-02 2010-03-17 索尼计算机娱乐美国公司 用于分析对于应用程序修改前命令改变的性能的图形命令管理工具和方法
CN103502983A (zh) * 2011-04-28 2014-01-08 高通股份有限公司 利用基于DOM的同构来备忘缓存Web浏览计算
CN109472858A (zh) * 2017-09-06 2019-03-15 辉达公司 用于逆向图形的可微分渲染管线

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090021513A1 (en) * 2007-07-18 2009-01-22 Pixblitz Studios Inc. Method of Customizing 3D Computer-Generated Scenes
CN102508644B (zh) * 2011-09-22 2015-04-29 Tcl集团股份有限公司 一种3d用户界面图形引擎系统
CN106504305A (zh) * 2016-10-25 2017-03-15 天脉聚源(北京)传媒科技有限公司 一种动画处理方法及装置
CN107066430B (zh) * 2017-04-21 2021-02-26 阿里巴巴(中国)有限公司 图片处理方法、装置、服务端及客户端
US10817803B2 (en) * 2017-06-02 2020-10-27 Oracle International Corporation Data driven methods and systems for what if analysis
CN107464208B (zh) * 2017-07-24 2019-07-09 浙江大学 一种图形绘制流水线中像素着色结果重用方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070234195A1 (en) * 2006-04-03 2007-10-04 National Instruments Corporation Simultaneous update of a plurality of user interface elements displayed in a web browser
CN101675453A (zh) * 2007-03-02 2010-03-17 索尼计算机娱乐美国公司 用于分析对于应用程序修改前命令改变的性能的图形命令管理工具和方法
CN103502983A (zh) * 2011-04-28 2014-01-08 高通股份有限公司 利用基于DOM的同构来备忘缓存Web浏览计算
CN109472858A (zh) * 2017-09-06 2019-03-15 辉达公司 用于逆向图形的可微分渲染管线

Cited By (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112199149A (zh) * 2020-10-16 2021-01-08 维沃移动通信有限公司 界面渲染方法、装置及电子设备
WO2022089592A1 (zh) * 2020-10-30 2022-05-05 华为技术有限公司 一种图形渲染方法及其相关设备
WO2022100685A1 (zh) * 2020-11-13 2022-05-19 华为技术有限公司 一种绘制命令处理方法及其相关设备
CN112651888A (zh) * 2020-11-25 2021-04-13 北京字跳网络技术有限公司 图像处理方法、装置、电子设备及存储介质
CN112907437A (zh) * 2021-03-26 2021-06-04 长沙景嘉微电子股份有限公司 多个3d进程运行方法、装置、电子设备和存储介质
CN113256779A (zh) * 2021-07-05 2021-08-13 广州中望龙腾软件股份有限公司 一种基于OpenGL指令的渲染运行方法及系统
CN113256779B (zh) * 2021-07-05 2021-11-19 广州中望龙腾软件股份有限公司 一种基于OpenGL指令的渲染运行方法及系统
CN113393585A (zh) * 2021-08-18 2021-09-14 西安芯瞳半导体技术有限公司 一种渲染问题定位方法、装置、定位设备及存储介质
CN113393585B (zh) * 2021-08-18 2021-11-19 西安芯瞳半导体技术有限公司 一种渲染问题定位方法、装置、定位设备及存储介质
CN114443189A (zh) * 2021-08-20 2022-05-06 荣耀终端有限公司 一种图像处理方法和电子设备
CN113663328B (zh) * 2021-08-25 2023-09-19 腾讯科技(深圳)有限公司 画面录制方法、装置、计算机设备及存储介质
CN113663328A (zh) * 2021-08-25 2021-11-19 腾讯科技(深圳)有限公司 画面录制方法、装置、计算机设备及存储介质
CN113992981A (zh) * 2021-10-21 2022-01-28 稿定(厦门)科技有限公司 视频图像的处理方法及装置
CN113992981B (zh) * 2021-10-21 2024-03-15 稿定(厦门)科技有限公司 视频图像的处理方法及装置
WO2023087778A1 (zh) * 2021-11-19 2023-05-25 北京字节跳动网络技术有限公司 窗口信息处理方法、装置、电子设备及存储介质
WO2023093792A1 (zh) * 2021-11-26 2023-06-01 华为技术有限公司 一种图像帧的渲染方法及相关装置
CN115018692A (zh) * 2021-12-17 2022-09-06 荣耀终端有限公司 一种图像渲染方法及电子设备
CN115018692B (zh) * 2021-12-17 2024-03-19 荣耀终端有限公司 一种图像渲染方法及电子设备
CN113986002A (zh) * 2021-12-31 2022-01-28 荣耀终端有限公司 帧处理方法、装置及存储介质
CN114092590A (zh) * 2022-01-19 2022-02-25 荣耀终端有限公司 电子设备及其图像渲染性能的评估方法、介质
CN116051351A (zh) * 2022-08-22 2023-05-02 荣耀终端有限公司 一种特效处理方法和电子设备
CN116051351B (zh) * 2022-08-22 2023-10-13 荣耀终端有限公司 一种特效处理方法和电子设备
CN116664375A (zh) * 2022-10-17 2023-08-29 荣耀终端有限公司 图像预测方法、装置、设备及存储介质
CN116664375B (zh) * 2022-10-17 2024-04-12 荣耀终端有限公司 图像预测方法、装置、设备及存储介质
CN117112086A (zh) * 2023-01-31 2023-11-24 荣耀终端有限公司 一种数据处理方法及电子设备
CN116841739A (zh) * 2023-06-30 2023-10-03 沐曦集成电路(杭州)有限公司 用于异构计算平台的数据包重用系统
CN116841739B (zh) * 2023-06-30 2024-04-19 沐曦集成电路(杭州)有限公司 用于异构计算平台的数据包重用系统
CN117687771A (zh) * 2023-07-24 2024-03-12 荣耀终端有限公司 一种缓冲区分配方法、装置、电子设备及存储介质

Also Published As

Publication number Publication date
US11816775B2 (en) 2023-11-14
CN111724293B (zh) 2023-07-28
WO2020192417A1 (zh) 2020-10-01
US20240037836A1 (en) 2024-02-01
US20220005255A1 (en) 2022-01-06

Similar Documents

Publication Publication Date Title
CN111724293B (zh) 图像渲染方法及装置、电子设备
CN112130742B (zh) 一种移动终端的全屏显示方法及设备
CN112348732B (zh) 基于图形渲染管线的模型推理方法、装置及存储介质
CN115473957B (zh) 一种图像处理方法和电子设备
CN109559270B (zh) 一种图像处理方法及电子设备
WO2022017261A1 (zh) 图像合成方法和电子设备
CN113797530B (zh) 图像的预测方法、电子设备和存储介质
US20240153209A1 (en) Object Reconstruction Method and Related Device
WO2021077911A1 (zh) 图像泛光处理方法及装置、存储介质
CN114470750B (zh) 图像帧流的显示方法、电子设备和存储介质
CN114494547A (zh) 一种绘制命令处理方法及其相关设备
WO2021057626A1 (zh) 图像处理方法、装置、设备及计算机存储介质
CN114727220B (zh) 一种设备搜寻方法以及电子设备
CN113810603A (zh) 点光源图像检测方法和电子设备
CN113129202B (zh) 数据传输方法、装置及数据处理系统、存储介质
CN111249728B (zh) 一种图像处理方法、装置及存储介质
CN114708289A (zh) 一种图像帧预测的方法及电子设备
CN115032640B (zh) 手势识别方法和终端设备
CN115686182B (zh) 增强现实视频的处理方法与电子设备
CN113573045B (zh) 杂光检测方法及杂光检测装置
CN116263971A (zh) 图像帧的预测方法、电子设备及计算机可读存储介质
CN115964231A (zh) 基于负载模型的评估方法和装置
CN114332331A (zh) 一种图像处理方法和装置
CN116703741B (zh) 一种图像对比度的生成方法、装置和电子设备
CN116664375B (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
GR01 Patent grant
GR01 Patent grant