CN116670719A - 一种图形处理方法、装置及电子设备 - Google Patents

一种图形处理方法、装置及电子设备 Download PDF

Info

Publication number
CN116670719A
CN116670719A CN202080108178.1A CN202080108178A CN116670719A CN 116670719 A CN116670719 A CN 116670719A CN 202080108178 A CN202080108178 A CN 202080108178A CN 116670719 A CN116670719 A CN 116670719A
Authority
CN
China
Prior art keywords
unit
draw
visual priority
subunit
pixel
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
Application number
CN202080108178.1A
Other languages
English (en)
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
Publication of CN116670719A publication Critical patent/CN116670719A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering

Abstract

本申请公开了一种图形处理方法、装置及电子设备,其中方法主要包括:将显示区域分为阵列排布的多个单元,分别渲染多个draw。对于任一draw在任一单元的部分,在该draw在该单元中的最高可视优先级不低于该单元对应的最低可视优先级时,渲染该draw在该单元的部分,在该draw在该单元中的最高可视优先级低于该单元对应的最低可视优先级时,不渲染该draw在该单元的部分,从而有利于节省运算资源。

Description

一种图形处理方法、装置及电子设备 技术领域
本申请涉及图形处理技术领域,尤其涉及一种图形处理方法、装置及电子设备。
背景技术
图形处理器(graphics processing unit,GPU)是一种专用的图像渲染硬件加速处理器,可以以基础图形元素(图元)为素材进行图形处理,从而生成图像。在图形处理过程中,GPU可以在显示区域内依次绘制多个绘图(draw),每个draw包括一个或多个图元,同一个draw内的图元可以互相重叠。每一个draw皆可以覆盖显示区域,不同draw中的图元也可以互相重叠。之后,GPU对每个draw中的图元进行渲染,从而得到目标图像。其中,在任意两个图元部分或全部重叠时,在重叠区域的每个像素上优先显示可视优先级较高的图元的像素。
具体来说,目标图像由多个draw叠加而成。在显示区域的同一个像素上,不同draw之间可以具有相同或不同的可视优先级。例如,可以用深度值表征各个draw在各个像素上的可视优先级,任一draw在任一像素上的深度值越小,该draw在该像素上可视优先级越高。以像素a为例,GPU可以分别确定多个draw在像素a的深度值,并选择深度值最小的draw(如draw1)中的像素a作为目标图像中的像素a。即,最后生成的图像中的像素a,为draw1中的像素a,其它draw中的像素a将被draw1中的像素a遮挡。
由于在GPU的图形处理过程中,往往会出现一个或多个图元被其它图元遮挡。在此情况下,这些被遮挡的部分实际上是不需要渲染的,因此也就浪费了GPU的运算资源。
发明内容
有鉴于此,本申请提供一种图形处理方法、装置及电子设备,有利于节省运算资源。
第一方面,本申请提供一种图形处理方法,主要包括:将显示区域分为阵列排布的多个单元,每个单元包括至少一个像素,显示区域用于显示待生成的目标图像,目标图像包括在显示区域内重叠的多个绘图draw。分别渲染多个draw,多个draw中的任一draw为第一draw,其中:在第一draw在第一单元中的最高可视优先级不低于第一单元对应的最低可视优先级时,渲染第一draw在第一单元的部分,第一单元为多个单元中的任一单元,第一单元对应的最低可视优先级为目标图像在第一单元内的最低可视优先级;在第一draw在第一单元中的最高可视优先级低于第一单元对应的最低可视优先级时,不渲染第一draw在第一单元的部分。
示例性的,可视优先级可以是深度值或绘图顺序,例如深度值越大,可视优先级越低,又例如,先绘制的图元在每个像素上的优先级高于后绘制的图元在每个像素上的优先级。采用该实现方式,在第一draw在第一单元中的最高可视优先级不低于第一单元对应的最低可视优先级时,说明第一draw在第一单元中的部分有可能未被其它draw遮挡。在此情况下,可以渲染第一draw在第一单元的部分。在第一draw在第一单元中的最高可视优先级低于第一单元对应的最低可视优先级时,说明第一draw在第一单元中的部分有可能被其它draw遮挡。在此情况下,第一draw在第一单元的部分在目标图像中是不可视的,因 此可以不渲染第一draw在第一单元的部分,从而有利于节省运算资源。
接下来,对第一draw在第一单元中的最高可视优先级作进一步的示例性说明。具体来说,第一draw可以包括一个或多个图元,其中:在第一draw中存在至少一个图元的部分或全部位于第一单元时,第一draw在第一单元中的最高可视优先级,为至少一个图元分别在第一单元中的最高可视优先级的最高值;和/或,在第一draw中的一个或多个图元皆不位于第一单元时,第一draw在第一单元中的最高可视优先级为默认值,默认值不高于目标图像中能够出现的最低可视优先级。
在第一draw中存在一个或多个图元,每个图元即有可能部分或全部位于第一单元,也有可能位于第一单元之外。在存在一个或多个图元部分或全部位于第一单元时,每个图元在第一单元的部分皆存在最高可视优先级,在此情况下,可以选择其中最高优先级的最大值作为第一draw在第一单元中的最高可视优先级。在第一draw中的所有图元都部位于第一单元时,也就是在绘制第一draw时并不会在第一单元绘制图元,因此可以将第一draw在第一单元中的最高可视优先级设为默认值,该默认值不高于目标图像中能够出现的最低可视优先级。
在本申请实施例中,每个单元可以包括阵列排布的至少一个子单元,每个子单元包括阵列排布的至少一个像素。在此情况下,第一单元对应的最低可视优先级可以为第一单元中,至少一个子单元分别对应的最低可视优先级的最低值,其中,第一子单元对应的最低可视优先级为目标图像在第一子单元中的最低可视优先级,第一子单元为第一单元的至少一个子单元中的任一子单元。
在渲染第一draw时,可以以子单元为粒度进行渲染。在第一draw中存在多个图元的情况下,在需要渲染的单元中也有可能出现一个或多个图元被其它图元遮挡的情况,此时也会造成无效渲染。为了进一步节省运算资源,在一种可能的实现方式中,第一draw包括一个或多个图元,在渲染第一draw在第一单元的部分之前,还可以先确定与第一子单元关联的第一图元,第一图元为第一draw中部分或全部位于第一子单元的图元。在存在至少一个第一图元时,根据至少一个第一图元分别在第一子单元中的最高可视优先级,从至少一个第一图元中筛选出至少一个第二图元,筛选出来的至少一个第二图元为最高可视优先级不低于第一子单元对应的最低可视优先级的第一图元。之后,在渲染第一draw在第一单元的部分时,可以渲染至少一个第二图元位于第一子单元的部分。
在至少一个第一图元中,有可能存在被完全遮挡的图元。为了减少无效渲染,可以先从第一图元中筛选出没有被完全遮挡的第二图元,再对第二图元进行渲染,从而节省了运算资源。
示例性的,在渲染至少一个第二图元位于第一子单元的部分时,可以针对每个第二图元,确定第一像素的可视优先级,第一像素可以是每个第二图元在第一子单元中的任一像素。在第一像素的可视优先级高于或等于第一子单元对应的最低可视优先级时,渲染第一像素,在第一像素的可视优先级低于第一子单元对应的最低可视优先级时,不渲染第一像素。
具体来说,若第一像素的可视优先级高于或等于第一子单元对应的最低可视优先级,说明在显示区域的第一像素上有可能呈现第二图元的第一像素,因此需要渲染该第二图元的第一像素。若第一像素的可视优先级低于第一子单元对应的最低可视优先级,说明在显示区域的第一像素上该第二图元的第一像素会被其它图元遮挡,因此无需渲染第二图元中 的第一像素,从而有利于节省运算资源。
第二方面,本申请提供一种图形处理装置,该图形处理装置可以是GPU,如分区域渲染(tile base rendering,TBR)GPU、直接渲染(immediate rendering,IMR)GPU、分区域延迟渲染(tile base deferred rendering,TBDR)GPU等。第二方面中相应方案的技术效果可以参照第一方面中对应方案可以得到的技术效果,重复之处不予详述。
示例性的,本申请所提供的图形处理装置主要包括分区单元和渲染单元,其中:分区单元可以将显示区域分为阵列排布的多个单元,每个单元包括至少一个像素,显示区域用于显示待生成的目标图像,目标图像包括在显示区域内重叠的多个绘图draw;渲染单元可以分别渲染多个draw,多个draw中的任一draw为第一draw,其中:在第一draw在第一单元中的最高可视优先级不低于第一单元对应的最低可视优先级时,渲染第一draw在第一单元的部分,第一单元为多个单元中的任一单元,第一单元对应的最低可视优先级为目标图像在第一单元内的最低可视优先级;在第一draw在第一单元中的最高可视优先级低于第一单元对应的最低可视优先级时,不渲染第一draw在第一单元的部分。
其中,可视优先级为深度值或绘图顺序。
示例性的,第一draw可以包括一个或多个图元,其中:在第一draw中存在至少一个图元的部分或全部位于第一单元时,第一draw在第一单元中的最高可视优先级,可以是上述至少一个图元分别在第一单元中的最高可视优先级的最高值。
可以理解,第一draw中的一个或多个图元往往无法覆盖所有单元,因此第一draw中的一个或多个图元也有可能皆不位于第一单元。在第一draw中的一个或多个图元皆不位于第一单元时,第一draw在第一单元中的最高可视优先级可以是默认值,默认值不高于目标图像中能够出现的最低可视优先级。
在本申请实施例中,每个单元可以包括阵列排布的至少一个子单元,每个子单元可以包括阵列排布的至少一个像素。第一单元对应的最低可视优先级可以为第一单元中,至少一个子单元分别对应的最低可视优先级的最低值,其中,第一子单元对应的最低可视优先级可以为目标图像在第一子单元中的最低可视优先级,第一子单元可以为第一单元的至少一个子单元中的任一子单元。
在渲染第一draw时,可以以子单元为粒度进行渲染。为了进一步节省运算资源,在一种可能的实现方式中,分区单元还可以确定与第一子单元关联的第一图元,第一图元为第一draw中部分或全部位于第一子单元的图元;在存在至少一个第一图元时,根据至少一个第一图元分别在第一子单元中的最高可视优先级,从至少一个第一图元中筛选出至少一个第二图元,筛选出的至少一个第二图元为最高可视优先级不低于第一子单元对应的最低可视优先级的第一图元;渲染单元则可以渲染至少一个第二图元位于第一子单元的部分。
示例性的,渲染单元在渲染至少一个第二图元位于第一子单元的部分时,可以针对每个第二图元,确定第一像素的可视优先级,第一像素可以为每个第二图元在第一子单元中的任一像素;在第一像素的可视优先级高于或等于第一子单元对应的最低可视优先级时,渲染第一像素;在第一像素的可视优先级低于第一子单元对应的最低可视优先级时,不渲染第一像素。
第三方面,本申请提供一种图形处理装置,该图形处理装置可以是GPU。示例性的,该图形处理装置主要包括存储器和运算电路。其中,存储器可以缓存运算电路的运行数据。运算电路可以执行如上述第一方面中任一项所述提供的图形处理方法。
第四方面,本申请提供一种电子设备,该电子设备可以是智能手机、平板电脑等具有图形处理功能的电子设备。其中主要包括处理器和如第三方面所提供的图形处理装置,处理器可以指示该图形处理装置生成目标图像。
第五方面,本申请提供一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述各方面所述的方法。
第六方面,本申请提供一种包括指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述各方面所述的方法。
本申请的这些方面或其他方面在以下实施例的描述中会更加简明易懂。
附图说明
图1为一种电子设备结构示意图;
图2a至图2c为一种目标图像的多个draw的示意图;
图3为一种深度值示意图;
图4为本申请实施例提供的一种图形处理方法流程示意图;
图5为本申请实施例提供的一种目标图像的多个draw的示意图;
图6为本申请实施例提供的tile与pixel block之间的关系示意图;
图7为本申请实施例提供的pixel block与depth block之间的关系示意图;
图8为本申请实施例提供的一种drawX的各个图元与任一单元的多个子单元之间的位置关系示意图;
图9为本申请实施例提供的一种具体的图形处理方法流程示意图;
图10为本申请实施例提供的一种图形处理装置结构示意图;
图11为本申请实施例提供的一种图形处理装置结构示意图。
具体实施方式
为了使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请作进一步地详细描述。方法实施例中的具体操作方法也可以应用于装置实施例或系统实施例中。需要说明的是,在本申请的描述中“至少一个”是指一个或多个,其中,多个是指两个或两个以上。鉴于此,本发明实施例中也可以将“多个”理解为“至少两个”。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,字符“/”,如无特殊说明,一般表示前后关联对象是一种“或”的关系。另外,需要理解的是,在本申请的描述中,“第一”、“第二”等词汇,仅用于区分描述的目的,而不能理解为指示或暗示相对重要性,也不能理解为指示或暗示顺序。
GPU是一种专用于图像和图形运算工作的硬件加速处理器。GPU可以生成用于展示2D或3D模型的目标图像,因此,GPU被广泛应用于游戏、视频以及建模等图形学相关领域。
图1示例性示出了一种电子设备,该电子设备可以是智能相机、智能手机、平板电脑等具备图像生成功能的设备。如图1所示,电子设备10主要包括处理器11和GPU12,处理器11与GPU12连接。
其中,处理器11可以是中央处理器(central processing unit,CPU)、片上系统(system on chip,SoC)等具有逻辑运算能力的芯片,也可以是其它类型的专用集成电路(application specific integrated circuits,ASIC),现场可编程门阵列(field programmable gate array,FPGA)等可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。处理器11可以向GPU12发送多种类型的指令,以使GPU12可以在处理器11的控制下完成图形处理。
以游戏场景为例,处理器11可以运行游戏客户端,以得到需要通过目标图像呈现的目标模型,例如该目标模型可以是山、水、树木、人物、天空等一个或多个物体的组合,该目标图像也可以理解为游戏画面。在大多数的场景下,任意形式的目标模型通常可以通过多个图元构建,处理器11可以指示GPU12在目标图像的显示区域渲染这些图元,从而得到目标图像。其中,图元一般指基本图形元素,多为点、线、面图案等简单图形。
处理器11在指示GPU12渲染图元时,往往需要向GPU12发送绘图-调用(draw-call)指令,该draw-call指令可以指示GPU12需要渲染的图元,以及该图元的渲染状态等。GPU12在接收到draw-call指令后,便可以根据draw-call指令确定需要渲染的图元,并配置该图元的渲染状态(例如配置为该图元着色的着色器(shader)、图元的材质纹理等等),从而完成对该图元的渲染。
可以理解,若draw-call命令过多,会使GPU12频繁配置渲染状态,不利于提高图形处理效率。因此,目前一个draw-call指令往往可以调用GPU12绘制一个或多个图元,对应于同一个draw-call指令的图元具有相同或类似的渲染状态。处理器11在发送draw-call指令之前,GPU12只需配置一次渲染状态,便可以完成一个或多个图元的渲染。从而有利于降低draw-call指令的数量,提高图形处理效率。
以游戏场景为例,处理器11在得到目标模型对应的多个图元后,可以根据多个图元的渲染状态进行分类。在此情况下,处理器11每发送一个draw-call指令,可以指示GPU12渲染一个draw。在每个draw中可以包括一个或多个图元,这些图元对应于同一个draw-call指令,图元之间具有相同或类似的渲染状态。
示例性的,假设目标模型主要由图元a和图元b组成,其中图元a属于drawA,图元b属于drawB。如图2a所示,CPU12可以依次指示GPU渲染draw B和draw A。GPU在完成渲染draw B后,在目标图像的显示区域形成如图2b所示的图像。GPU12继续在显示区域完成渲染draw A后,可以在显示区域得到如图2c所示的图像。
可以理解,draw A和draw B皆可以覆盖显示区域。针对显示区域中的每一个像素,draw A和draw B皆对应有相同或不同的可视优先级。
在一种可能的实现方式中,可以使用深度值表征可视优先级。首先对深度值作简单说明。
假设存在一虚拟相机,该虚拟相机也可以称为视点(view point)。目标模型包括一个或多个物体,沿虚拟相机的镜头朝向,物体在显示区域上的投影距离,即可以理解为该物体的深度值。
如图3所示,物体2与显示区域之间的投影距离最小,因此物体2的深度值最小。物体3与显示区域之间的投影距离最大,因此物体3的深度值最大。物体1的深度值则位于物体2的深度值和物体3的深度值之间。
在两个物体的投影重叠时,远处的物体将会被近处的物体遮挡。例如图3中,物体1便可以遮挡物体3。因此,在采用图3所示的投影角度,并以物体1、物体2和物体3为 目标模型时,目标图像中将优先展示物体1的投影,而物体3的投影将被部分或全部遮挡。
以上为不同物体之间的深度值与遮挡关系,在目标图像中,图元之间也满足该深度值与遮挡关系。也就是说,若任两个图元覆盖了同一个像素,则在该像素上优先显示深度值较小的图元的像素。也可以理解为,若draw在像素上的深度值越小,则该draw在该像素上的可视优先级越高。对于每个draw中未被图元覆盖的区域对应的深度值,则可以采用默认值。该默认值应大于或等于目标图像中有可能出现的最大的深度值。
可以理解,深度值与可视优先级之间的关系并不是固定的。在部分场景下,也可能出现深度值越大,可视优先级越高的情况。本申请实施例对此并不多做限制。
在另一种可能的实现方式中,也可以使用绘图先后顺序表征可视优先级。具体来说,在部分场景下,处理器11可以指示GPU12在显示区域依次绘制多个图元,按照GPU12绘制的先后顺序,每个图元的可视优先级依次升高。也就是说,当两个图元存在重叠时,在重叠区域优先显示较晚绘制的图元。
可以理解,绘图先后顺序与可视优先级之间的关系并不是固定的。在部分场景下,也可能出现越早绘制的图元,其可视优先级越高的情况,本申请实施例对此并不多作限制。
需要指出的是,除深度值和绘图先后顺序之外,本申请实施例中的可视优先级还可以存在多种可能的表征方式,本申请实施例对此不再一一列举。
为了便于理解,在未特别指出的情况下,本申请实施例接下来以深度值越小,可视优先级越大的场景为例进行说明。
由于部分深度值较大的图元有可能被其它深度值较小的图元遮盖,在不考虑存在透明或半透明物体的情况下,图元中被遮盖的部分往往不需要呈现在目标图像中。因此,GPU12对图元中被遮盖部分的渲染往往是无效渲染,浪费了GPU12的运算资源。
有鉴于此,GPU12在对各个draw进行渲染之前,还可以分别对各个draw中的图元进行深度测试(depth-test),以筛选出每个draw中不被全部遮挡的图元进行渲染。接下来,对GPU12进行深度测试的具体实现过程作进一步的示例性说明。
示例性的,GPU12可以每接收到一个draw-call指令后,便对该draw-call指令指示的draw中的图元进行深度测试。待处理器11将目标模型对应的所有图元皆通过draw-call指令指示给GPU12后,GPU12也将同步完成对所有图元的深度测试,从而得到深度缓冲数据。
以draw X为例,该draw X可以是用于生成目标图像的任一draw。具体来说,draw X中包括了一个或多个图元。针对一个目标图像,处理器11可以依次向GPU12发送多个draw-call指令。
针对该目标图像,若draw X是GPU12接收到的第一个draw-call指令所指示的draw,则GPU12可以获取初始的深度缓冲数据,该初始的深度缓冲数据中每个像素的深度值皆为默认值。可以理解,该默认值不小于目标图像中可以出现的最大深度值。GPU根据draw X中一个或多个图元的深度值更新深度缓冲数据。例如,draw X中包括图元x和图元y,且图元x和图元y在像素i处重叠。其中,图元x在像素i的深度值为10,图元y在像素i的深度值为15。
在对draw X进行深度测试的过程中,GPU可以获取图元x在各个像素的深度值。GPU先根据图元x在各个像素的深度值更新深度缓冲数据。此时,深度缓冲数据中像素i的深 度值为默认值,图元x在像素i的深度值为10(小于默认值),GPU可以将深度缓冲数据中像素i的深度值更新为10。
在遍历过图元x中各个像素的深度值后,GPU可以获取图元y在各个像素的深度值。GPU继续根据图元y在各个像素的深度值更新深度缓冲数据。此时,深度缓冲数据中像素i的深度值为10,图元y在像素i的深度值为15(大于10)。由于图元y在像素i的深度值大于此时深度缓冲数据中像素i的深度值,因此可以认为在像素i处图元y将会被其它图元(图元x)覆盖,GPU维持深度缓冲数据中像素i的深度值为10。
GPU12进而可以根据深度缓冲数据分别对draw X中的图元进行渲染。以图元x所覆盖的像素j为例,假设深度缓冲数据中像素j对应的深度值为15,若图元x在像素j的深度值为10,其小于深度缓冲数据中像素j对应的深度值,则说明目标图像中的像素j有可能呈现的是图元x的像素j,GPU12可以渲染图元x中的像素j,也就是在像素j上呈现图元x的像素。若图元x在像素j的深度值为20,其大于深度缓冲数据中像素j对应的深度值,则说明目标图像中的像素j有可能并未呈现图元x的像素j,GPU12可以不渲染图元j中的像素j,从而有利于节省GPU12的运算资源。
针对该目标图像,若draw X是GPU12接收到的该目标图像对应的第n个draw-call指令所指示的draw,n为大于1的整数,则GPU12可以获取对前一个draw(第n-1个draw-call指令所指示的draw)完成深度测试后所得到的深度缓冲数据,并在此基础上继续对draw X进行深度测试。具体的深度测试过程与前述类似,不再赘述。
一般来说,GPU可以在像素着色(pixel shader)之前执行深度测试。在执行像素着色时,可以对各个图元中未被同一个draw中的其它图元所遮挡的像素进行着色。其中,在像素着色之前执行的深度测试,也可以称为前深度测试(early-depth-test)。
在部分场景下,例如模型中存在透明或半透明物体时,像素着色会改变部分像素的深度值,因此往往需要在像素着色之后执行深度测试,该深度测试也可以称为后深度测试(late-depth-test)。
此外,还存在一些场景,虽然部分像素的深度值受像素着色影响,但该影响是可以预知的。例如,像素着色后,部分像素的深度值能够变大。在此情况下,可以在像素着色之前执行一次前深度测试,在像素着色之后再执行一次深度测试。该深度测试方式也可以称为保守深度测试(conservative depth test)。
虽然通过上述深度测试,可以省去渲染每个draw内部分被遮挡的图元的过程。然而,不同draw之间也会存在图元重叠,如图2c所示,draw A中的图元a会部分遮挡draw B中的图元b。若处理器11先指示GPU12渲染draw B中的图元b,再指示GPU12渲染draw A中的图元a,在此情况下,便无法通过上述深度测试避免对图元b的无效渲染,造成了GPU运算资源浪费。
有鉴于此,本申请实施例提供一种图形处理方法,可以减少图形处理过程中的无效渲染,节省GPU运算资源。需要指出的是,本申请实施例所提供的图形处理方法可以应用于分区域渲染(tile base rendering,TBR)GPU、直接渲染(immediate rendering,IMR)GPU、分区域延迟渲染(tile base deferred rendering,TBDR)GPU等多种类型的GPU中。
图4示例性示出了本申请实施例提供的一种图形处理方法。如图4所示,主要包括以下步骤:
S401:将待生成的目标图像的显示区域分为阵列排布的多个单元,每个单元包括至少一个像素。
S401也可以称为分区阶段(binning pass)。示例性的,如图2a和图5所示,GPU12可以将显示区域分为单元0至单元15。单元0至单元15在显示区域中阵列排布,每个单元中可以包括一个或多个阵列排布的像素。可以理解,由于目标图像包括在显示区域内重叠的多个draw,因此GPU12将显示区域划分为多个单元,也可以等效为GPU12分别将构成目标图像的多个draw划分为阵列排布的多个单元。
例如图2a中,目标图像包括drawA和drawB,将显示区域分为单元0至单元15,相当于GPU12分别将drawA和drawB分为单元0至单元15。又例如图5中,目标图像包括drawA、drawB、drawC和drawD,将显示区域分为单元0至单元15,相当于GPU12分别将drawA、drawB、drawC和drawD分为单元0至单元15。
在本申请实施例中,每个单元皆对应有最低可视优先级,也就是目标图像在每个单元内的最低可视优先级。例如,在深度值越小,可视优先级越高的场景下,每个单元对应的最低可视优先级,也就是每个单元对应的最大深度值Dmax。每个单元对应的最大深度值Dmax可以理解为目标图像在该单元中的最大深度值。例如,单元0对应的最大深度值可以为目标图像在单元0中的最大深度值,也可以理解为,在单元0内可见的像素的最大深度值。
示例性的,GPU12可以通过枚举、扫描线算法、线性差值算法等方法,计算目标图像在每个单元中的最大深度值,本申请实施例对此并不多做限制。可以理解,相较于实际得到的目标图像,该计算结果有可能存在误差。有鉴于此,GPU可以在计算每个对应的最大深度值时,采用较为保守算法进行计算。以单元0为例,通过较为保守算法进行计算,在确保计算得到的单元0对应的最大深度值Dmax不小于后期实际得到的目标图像在单元0的最大深度值的基础上,使单元0对应的最大深度值Dmax尽可能接近后期实际得到的目标图像在单元0的最大深度值。
又例如,在深度值越大,可视优先级越高的场景下,每个单元对应的最低可视优先级,也就是每个单元对应的最小深度值。每个单元对应的最小深度值可以理解为目标图像在该单元中的最小深度值。例如,单元0对应的最小深度值可以为目标图像在单元0中的最小深度值,也可以理解为,在单元0内可见的像素的最小深度值。
再例如,在按照绘制的先后顺序,每个图元的可视优先级依次升高的场景下,每个单元对应的最低可视优先级也就是目标图像在该单元内最早绘制的图元的优先级。例如目标图像中存在3个图元部分或全部位于单元0,则单元0对应的最低可视优先级为上述3个图元中最早绘制的图元的优先级。
还例如,在按照绘制的先后顺序,每个图元的可视优先级依次降低的场景下,每个单元对应的最低可视优先级也就是目标图像在该单元内最晚绘制的图元的优先级。例如目标图像中存在3个图元部分或全部位于单元0,则单元0对应的最低可视优先级为上述3个图元中最早绘制的图元的优先级。
此外,本申请实施例中每个draw还对应有多个最大可视优先级。具体来说,每个draw皆可以分为多个单元,每个draw对应的多个最大可视优先级,可以理解为该draw分别在多个单元内的最大可视优先级。
例如,在深度值越小,可视优先级越高的场景下,每个draw对应有多个最小深度值 Dmin。例如drawA包括单元0至单元15,则draw A具有与单元0至单元15分别一一对应的15个最小深度值,如DminA0至DminA15。其中,DminA0为drawA在单元0的最小深度值,DminA1为drawA在单元1的最小深度值,……,DminA15为drawA在单元15的最小深度值。
又例如,在深度值越大,可视优先级越高的场景下,每个draw对应有多个最大深度值。再例如,在按照绘制的先后顺序,每个图元的可视优先级依次升高的场景下,每个draw对应有多个最高可视优先级,也就是draw在每个单元内最晚绘制的图元的优先级。还例如,在按照绘制的先后顺序,每个图元的可视优先级依次降低的场景下,每个draw对应有多个最高可视优先级,也就是draw在每个单元内最早绘制的图元的优先级。
为了便于理解,本申请实施例以深度值越小,可视优先级越高的场景为例进行说明。需要指出的是,其它场景下可视优先级的具体实现,及优先级的高低判断皆可以在本申请所提供的以下示例的基础上作适应性调整而实现,也应包含于本申请实施例之中。
如前所述,每个单元对应的最小深度值可以理解为目标图像在该单元中的最小深度值。在一种可能的实现方式中,GPU12可以根据深度缓冲数据得到每个单元对应的最小深度值。以图5为例,假设处理器11依次向GPU12发送了draw D对应的draw-call指令1、draw C对应的draw-call指令2、draw B对应的draw-call指令3和draw C对应的draw-call指令4。GPU12还可以对draw D至draw A进行深度测试,在对draw A完成深度测试后,所得到的深度缓冲数据中每个像素所对应的深度值便可以理解为目标图像中每个像素对应的深度值。因此,可以在该深度缓冲数据的基础上分别确定每个单元对应的最大深度值。
如前所述,每个draw对应有多个最大深度值。示例性的,如图5所示,draw D包括图元d1和图元d2(draw D只有一个图元或draw D具有三个及以上数量图元的情况同理)。对于显示区域中的任一单元来说,该单元的最小深度值主要存在以下几种可能出现的情况:
情况一:图元d1的部分或全部位于该单元,图元d2全部位于该单元之外,例如图5中单元0。在此情况下,drawD在单元0的最小深度值为图元d1在单元0的最小深度值,也就是图元d1位于单元0的部分内,每个像素的深度值的最小值。
情况二:图元d2的部分或全部位于该单元,图元d1全部位于该单元之外,例如图5中单元15。在此情况下,drawD在单元15的最小深度值为图元d2在单元15的最小深度值,也就是图元d2位于单元15的部分内,每个像素的深度值的最小值。
情况三:图元d1部分或全部位于该单元,图元d2部分或全部位于该单元,例如图5中的单元9。在此情况下,假设图元d1在单元9的最小深度值为Dmind1,图元d2在单元9的最小深度值为Dmind2,则drawD在单元9的最小深度值为Dmind1和Dmind2中的最小值。
情况四:图元d1和图元d2皆全部位于该单元之外,例如图5中的单元11。在此情况下,drawD在单元11的最小深度值可以为默认值,默认值不小于目标图像中能够出现的最大深度值。
换言之,每个单元具有与之对应的一个最大深度值Dmax,以及多个最小深度值,该多个最小深度值分别与目标图像的多个draw一一对应。例如图5中单元0具有与之对应的一个最大深度值Dmax,以及4个最小深度值Dmin。该4个最小深度值Dmin分别为drawA在单元0的最小深度值DminA0、drawB在单元0的最小深度值DminB0、drawC在单元0 的最小深度DminC0和drawD在单元0的最小深度值DminD0。
示例性的,GPU12可以通过枚举、扫描线算法、线性差值算法等方法,计算每个单元对应的多个最小深度值,本申请实施例对此并不多做限制。
S402:分别渲染多个draw。
S402也可以称为渲染阶段(rendering pass)。具体来说,GPU12可以按照上述多个单元分别对应的最大深度值Dmax,以及每个draw分别对应的多个最小深度值Dmin,分别渲染上述多个draw。
以drawA为例,GPU12按照单元0至单元15的顺序依次遍历drawA中的单元。以单元0为例,在drawA在单元0中的最小深度值DminA0小于或等于单元0对应的最大深度值Dmax0时,说明在单元0处,drawA有可能不会被其它draw中的图元遮挡,因此GPU可以渲染drawA在单元0的部分。
在drawA在单元0中的最小深度值DminA0大于单元0对应的最大深度值Dmax0时,drawA在单元0中的任何一个像素的深度值都小于目标图像在单元0的最大深度值。因此,可以认为drawA会被其它draw中的图元完全遮挡,此时对drawA的渲染便是无效渲染。为了节省GPU运算资源,在此情况下,GPU12可以不渲染drawA在单元0的部分。
GPU12按照上述过程继续遍历单元1至单元15,从而完成对drawA的渲染。可以理解,由于本申请实施例中GPU12可以不渲染drawA中被完全遮挡的单元,因此经过渲染的drawA中有可能存在一个或多个单元并没有被渲染。
GPU12对drawB、drawC和drawD的渲染与之类似,具体实现不再赘述。GPU12在对draw D至draw A完成渲染后,可以得到目标图像。如图5所示,假设draw A中的图元a的深度值大于draw B中的图元b的深度值,图元a会被图元b完全遮挡。采用本申请实施例所提供的图形处理方法,GPU12便无需响应draw A对应的draw-call指令4,既不需要配置图元a的渲染状态,更不需要对图元a进行渲染,从而有利于节省GPU12的运算资源。
可以理解,通过以上方式可以省去渲染每个draw中被其它draw遮挡的单元的过程。但在每个draw之内,也可能存在图元与图元之间的遮挡,从而浪费GPU12的运算资源。而且,若每个单元中包括的像素较多,则会增加GPU12对被遮挡图元的无效渲染,有鉴于此,本申请实施例中,每个单元可以包括至少一个阵列排布的子单元,每个子单元包括阵列排布的至少一个像素。
例如,显示区域可以分为16个单元(单元0至单元15)。每个单元进一步可以包括4个子单元,具体来说,单元0可以包括子单元0-0至子单元0-3,单元b1包括子单元1-4至子单元1-7,……,单元15可以包括子单元15-60至子单元15-63。
每个子单元皆对应有最大深度值,该最大深度值为目标图像在第一子单元中的最大深度值。以单元0为例,GPU可以将子单元0-0至子单元0-3分别对应的最大深度值中的最大值,作为单元0对应的最大深度值。其它单元同理,不再赘述。
示例性的,在本申请实施例应用于TBR GPU时,单元可以是分区(tile),子单元可以是像素块(pixel block)或深度块(depth block);或者,单元可以是pixel block,子单元可以是depth block。
其中,TBR GPU中的tile主要用于分区渲染。在TBR GPU渲染每个draw的过程中,TBR GPU只需要缓存渲染一个tile的过程中生成的数据,相较于传统的GPU(GPU需要 缓存渲染整个draw的过程中生成的数据),通过将显示区域分为多个tile可以大大降低GPU所需的存储空间。在本申请实施例中,可以复用TBR GPU中的tile作为本申请实施例中的单元,有利于降低对TBR GPU的改变,节省设计成本。
一般来说,tile中包括较多的像素。可以理解,若单元中像素数量较多,不利于提高本申请实施例的精细度,有可能降低本申请实施例对GPU12运算资源的优化效果。有鉴于此,本申请实施例中的单元还可以是pixel block。
具体来说,如图6所示,每个tile可以包括阵列排布的多个pixel block(b0至b15)。在本申请实施例中的单元为pixel block时,子单元可以为depth block。如图7所示,每个pixel block包括4个depth block,其中,b0包括d0至d3,b1包括d4至d7,……,b15包括d60至d63。
本申请实施例中,GPU12可以以子单元为粒度渲染每个draw。由于子单元中像素的数量不大于单元中像素的数量,因此有利于提高渲染过程中对比的精细度,有利于提高对GPU12运算资源的优化效果。
具体来说,以draw X为例,该draw X可以是目标图像中的任一draw。GPU12在渲染draw X之前,可以先确定draw X中每个子单元关联的第一图元,其中,每个子单元关联的第一图元可以是部分或全部位于第一子单元的图元。图8为drawX在任一单元的图形示意图,该任一单元为pixel block。该任一单元中包括64个子单元(depth block),分别为子单元d0至子单元d63。如图8所示,子单元d48关联的第一图元包括图元x1、图元x2和图元x3。
GPU12根据图元x1、图元x2和图元x3分别在子单元d48中的最小深度值,从图元x1至图元x3中筛选出至少一个第二图元。具体来说,若图元x1在子单元d48中的最小深度值小于或等于子单元d48对应的最大深度值,则说明图元x1在子单元d48中的部分有可能不会被其它图元遮挡,因此需要渲染图元x1在子单元d48中的部分,图元x1可以作为第二图元。
若图元x1在子单元d48中的最小深度值小大于子单元d48对应的最大深度值,则说明图元x1在子单元d48中的部分被其它图元遮挡,因此无需渲染图元x1在子单元d48中的部分。其它图元同理,不再赘述。
在后续渲染drawX的过程中,GPU12只需渲染第二图元在子单元d48的部分既可。GPU无需渲染在子单元d48中被完全遮挡的图元,因此有利于进一步节省GPU运算资源。
在具体实现过程中,GPU可以在分区阶段确定每个draw中需要渲染的第二图元,并在多边形列表(polygon list,PL)中记录每个draw中第二图元与子单元之间的对应关系。在一些场景下,PL可以存储于PL堆(heap),PL heap中还可以包括每个draw的配置信息(例如每个draw的标识、指针)、相邻draw之间的边界标识等,具体实现可以参考现有TBR GPU,对此不再赘述。
如图8所示,虽然需要渲染图元x1和图元x2,但在子单元d48中图元x2仍存在部分区域被图元x3遮挡。在此情况下,对图元x2中该部分像素的渲染便是无效渲染。为了进一步节省GPU12运算资源,以渲染图元x2在子单元d48中的部分为例,GPU12针对该部分中的每个像素,可以先确定该像素的深度值,在该像素的深度值小于或等于子单元d48对应的最大深度值时,渲染该像素;在该像素的深度值大于子单元d48对应的最大深度值时,不渲染该像素。采用以上方案,可以进一步省去对部分像素的无效渲染,有利于进一 步节省GPU12运算资源。
接下来,以图9为例,对本申请实施例所提供的图形处理方法作进一步的示例性说明。如图9所示,本申请实施例所提供的图形方法主要分为分区阶段(S401)和渲染阶段(S402)。具体来说,主要包括以下步骤:
S901:在接收到处理器11指示的多draw后,GPU12对显示区域进行栅格化(raserization)处理。每个draw包括一个或多个图元。通过栅格化处理,可以将显示区域分为阵列排布的多个像素。在此基础上,可以将显示区域进一步分为阵列排布的多个单元,每个单元中包括阵列排布的至少一个像素。
S902:确定每个单元对应的最大深度值Dmax,以及,每个draw分别在每个单元中的最小深度值Dmin。
可以理解,在每个单元中只包括一个像素的情况下,每个单元对应的最大深度值Dmax也就是该像素在目标图像中的深度值。在此情况下,的每个单元对应的最大深度值Dmax也可以理解为,在对目标图像的多个draw全部完成深度测试后,所得到的深度缓冲数据中每个像素对应的深度值。例如在图5所示的场景中,依次对draw D至draw A进行深度测试,在对draw A完成深度测试后所得到的深度缓冲数据便可以作为每个单元(像素)对应的最大深度值Dmax。
在每个单元中只包括一个像素的情况下,每个draw分别在每个单元中的最小深度值Dmin,也就是每个draw分别在每个像素上的深度值。例如在图5所示的场景中,draw A在单元(像素)14上的深度值,等效于draw A在单元(像素)14上的最小深度值Dmin。
S903:筛选出每个draw中的第二图元,并记录在PL中。PL可以存储于PL heap。如前所述,每个draw中可能存在图元与图元之间的遮挡。每个draw中的第二图元可以理解为未被同一个draw内的其它图元完全遮挡的图元,通过筛选每个draw中的第二图元,可以减少无效渲染,节省GPU的运算资源。
S904:在渲染任一draw时,从PL heap中读取该draw对应的PL,以及该draw的配置信息。
S905:根据每个单元对应的最大深度值Dmax,以及该draw分别在每个单元中的最小深度值Dmin,确定是否需要渲染该draw在每个单元中的部分。如前所述,不同draw之间的图元也可能出现遮挡。在渲染之前,先筛选出每个draw中需要渲染的单元,有利于减少无效渲染,节省GPU的运算资源。
S906:渲染该draw在每个单元中需要渲染的部分。
经测试,在曼哈顿(Manhatten)3.0/3.1以及阿兹塔克(Aztec)等基准(benchmark)测试中,通过上述方法,在任一单元内,可以提前将超过10%的draw在该单元的部分直接丢弃,即不渲染这些draw在该单元的部分。在部分场景甚至有超过50%的draw在该单元的部分可以提前丢弃。对于很多的游戏场景也有很好的表现。
上述主要从方法实施例的角度对本申请提供的方案进行了介绍。可以理解的是,为了实现上述功能,GPU12可以包括执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,本发明能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算 机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
在采用集成的单元的情况下,图10示出了本申请实施例中所涉及的图形处理装置的可能的示例性框图,该图形处理装置1000可以是上述任一实施例中的GPU或其它具备图形处理功能的集成电路。图形处理装置1000可以包括:分区单元1001和渲染单元1002。
具体地,在一个实施例中,分区单元1001可以将显示区域分为阵列排布的多个单元,每个单元包括至少一个像素,显示区域用于显示待生成的目标图像,目标图像包括在显示区域内重叠的多个绘图draw;渲染单元1002可以分别渲染多个draw,多个draw中的任一draw为第一draw,其中:在第一draw在第一单元中的最高可视优先级不低于第一单元对应的最低可视优先级时,渲染第一draw在第一单元的部分,第一单元为多个单元中的任一单元,第一单元对应的最低可视优先级为目标图像在第一单元内的最低可视优先级;在第一draw在第一单元中的最高可视优先级低于第一单元对应的最低可视优先级时,不渲染第一draw在第一单元的部分。
其中,可视优先级为深度值或绘图顺序。
示例性的,第一draw可以包括一个或多个图元,其中:在第一draw中存在至少一个图元的部分或全部位于第一单元时,第一draw在第一单元中的最高可视优先级,可以是上述至少一个图元分别在第一单元中的最高可视优先级的最高值;和/或,在第一draw中的一个或多个图元皆不位于第一单元时,第一draw在第一单元中的最高可视优先级可以是默认值,默认值不高于目标图像中能够出现的最低可视优先级。
在本申请实施例中,每个单元可以包括阵列排布的至少一个子单元,每个子单元可以包括阵列排布的至少一个像素。第一单元对应的最低可视优先级可以为第一单元中,至少一个子单元分别对应的最低可视优先级的最低值,其中,第一子单元对应的最低可视优先级可以为目标图像在第一子单元中的最低可视优先级,第一子单元可以为第一单元的至少一个子单元中的任一子单元。
在渲染第一draw时,可以以子单元为粒度进行渲染。为了进一步节省运算资源,在一种可能的实现方式中,分区单元1001还可以确定与第一子单元关联的第一图元,第一图元为第一draw中部分或全部位于第一子单元的图元;在存在至少一个第一图元时,根据至少一个第一图元分别在第一子单元中的最高可视优先级,从至少一个第一图元中筛选出至少一个第二图元,筛选出的至少一个第二图元为最高可视优先级不低于第一子单元对应的最低可视优先级的第一图元;渲染单元1002则可以渲染至少一个第二图元位于第一子单元的部分。
示例性的,渲染单元1002在渲染至少一个第二图元位于第一子单元的部分时,可以针对每个第二图元,确定第一像素的可视优先级,第一像素可以为每个第二图元在第一子单元中的任一像素;在第一像素的可视优先级高于或等于第一子单元对应的最低可视优先级时,渲染第一像素;在第一像素的可视优先级低于第一子单元对应的最低可视优先级时,不渲染第一像素。
参阅图11所示,为本申请提供的一种图形处理装置示意图,该图形处理装置可以是上述实施例中的GPU或其它具备图形处理功能的集成电路。该图形处理装置1100包括:存储器1101和运算电路1102。示例性的,运算电路1102可以是具有逻辑运算能力的集成电 路,可以执行本申请实施例所提供的上述图形处理方法。在一种可能的实现方式中,运算电路1102可以包括多个算数逻辑单元(arithmetic and logic unit,ALU),图形处理装置1100中的多个ALU可以并行执行逻辑运算,从而提高图形处理装置1100的运算速度。
存储器1101可以缓存运算电路1102运行时产生的数据。例如,运算电路1102可以在确定每个单元对应的最低可视优先级后,将每个单元对应的最低可视优先级写入存储器1101。在渲染阶段,运算电路1102再从存储器1101中读取每个单元对应的最低可视优先级,从而可以对每个draw进行渲染。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的保护范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

Claims (16)

  1. 一种图形处理方法,其特征在于,包括:
    将显示区域分为阵列排布的多个单元,每个单元包括至少一个像素,所述显示区域用于显示待生成的目标图像,所述目标图像包括在所述显示区域内重叠的多个绘图draw;
    分别渲染所述多个draw,所述多个draw中的任一draw为第一draw,其中:
    在所述第一draw在第一单元中的最高可视优先级不低于所述第一单元对应的最低可视优先级时,渲染所述第一draw在所述第一单元的部分,所述第一单元为所述多个单元中的任一单元,所述第一单元对应的最低可视优先级为所述目标图像在所述第一单元内的最低可视优先级;
    在所述第一draw在所述第一单元中的最高可视优先级低于所述第一单元对应的最低可视优先级时,不渲染所述第一draw在所述第一单元的部分。
  2. 根据权利要求1所述的方法,其特征在于,所述第一draw包括一个或多个图元,其中:
    在所述第一draw中存在至少一个图元的部分或全部位于所述第一单元时,所述第一draw在所述第一单元中的最高可视优先级,为所述至少一个图元分别在所述第一单元中的最高可视优先级的最高值。
  3. 根据权利要求1或2所述的方法,其特征在于,每个单元包括阵列排布的至少一个子单元,每个子单元包括阵列排布的至少一个像素;
    所述第一单元对应的最低可视优先级为所述第一单元中,所述至少一个子单元分别对应的最低可视优先级的最低值,其中,第一子单元对应的最低可视优先级为所述目标图像在所述第一子单元中的最低可视优先级,所述第一子单元为所述第一单元的至少一个子单元中的任一子单元。
  4. 根据权利要求3所述的方法,其特征在于,所述第一draw包括一个或多个图元,渲染所述第一draw在所述第一单元的部分之前,还包括:
    确定与所述第一子单元关联的第一图元,所述第一图元为所述第一draw中部分或全部位于所述第一子单元的图元;
    在存在至少一个第一图元时,根据所述至少一个第一图元分别在所述第一子单元中的最高可视优先级,从所述至少一个第一图元中筛选出至少一个第二图元,所述至少一个第二图元为最高可视优先级不低于所述第一子单元对应的最低可视优先级的第一图元;
    渲染所述第一draw在所述第一单元的部分,包括:
    渲染所述至少一个第二图元位于所述第一子单元的部分。
  5. 根据权利要求4所述的方法,其特征在于,渲染所述至少一个第二图元位于所述第一子单元的部分,包括:
    针对每个第二图元,确定第一像素的可视优先级,所述第一像素为所述每个第二图元在所述第一子单元中的任一像素;
    在所述第一像素的可视优先级高于或等于所述第一子单元对应的最低可视优先级时,渲染所述第一像素;
    在所述第一像素的可视优先级低于所述第一子单元对应的最低可视优先级时,不渲染所述第一像素。
  6. 根据权利要求1至5中任一项所述的方法,其特征在于,所述可视优先级为深度值或绘图顺序。
  7. 一种图形处理装置,其特征在于,包括分区单元和渲染单元,其中:
    所述分区单元,用于:将显示区域分为阵列排布的多个单元,每个单元包括至少一个像素,所述显示区域用于显示待生成的目标图像,所述目标图像包括在所述显示区域内重叠的多个绘图draw;
    所述渲染单元,用于:分别渲染所述多个draw,所述多个draw中的任一draw为第一draw,其中:
    在所述第一draw在第一单元中的最高可视优先级不低于所述第一单元对应的最低可视优先级时,渲染所述第一draw在所述第一单元的部分,所述第一单元为所述多个单元中的任一单元,所述第一单元对应的最低可视优先级为所述目标图像在所述第一单元内的最低可视优先级;
    在所述第一draw在所述第一单元中的最高可视优先级低于所述第一单元对应的最低可视优先级时,不渲染所述第一draw在所述第一单元的部分。
  8. 根据权利要求7所述的图形处理装置,其特征在于,所述第一draw包括一个或多个图元,其中:
    在所述第一draw中存在至少一个图元的部分或全部位于所述第一单元时,所述第一draw在所述第一单元中的最高可视优先级,为所述至少一个图元分别在所述第一单元中的最高可视优先级的最高值;和/或,
    在所述第一draw中的一个或多个图元皆不位于所述第一单元时,所述第一draw在所述第一单元中的最高可视优先级为默认值,所述默认值不高于所述目标图像中能够出现的最低可视优先级。
  9. 根据权利要求7或8所述的图形处理装置,其特征在于,每个单元包括阵列排布的至少一个子单元,每个子单元包括阵列排布的至少一个像素;
    所述第一单元对应的最低可视优先级为所述第一单元中,所述至少一个子单元分别对应的最低可视优先级的最低值,其中,第一子单元对应的最低可视优先级为所述目标图像在所述第一子单元中的最低可视优先级,所述第一子单元为所述第一单元的至少一个子单元中的任一子单元。
  10. 根据权利要求9所述的图形处理装置,其特征在于,所述分区单元还用于:
    确定与所述第一子单元关联的第一图元,所述第一图元为所述第一draw中部分或全部位于所述第一子单元的图元;
    在存在至少一个第一图元时,根据所述至少一个第一图元分别在所述第一子单元中的最高可视优先级,从所述至少一个第一图元中筛选出至少一个第二图元,所述至少一个第二图元为最高可视优先级不低于所述第一子单元对应的最低可视优先级的第一图元;
    所述渲染单元具体用于:
    渲染所述至少一个第二图元位于所述第一子单元的部分。
  11. 根据权利要求10所述的图形处理装置,其特征在于,所述渲染单元具体用于:
    针对每个第二图元,确定第一像素的可视优先级,所述第一像素为所述每个第二图元在所述第一子单元中的任一像素;
    在所述第一像素的可视优先级高于或等于所述第一子单元对应的最低可视优先级时, 渲染所述第一像素;
    在所述第一像素的可视优先级低于所述第一子单元对应的最低可视优先级时,不渲染所述第一像素。
  12. 根据权利要求7至11中任一项所述的图形处理装置,其特征在于,所述可视优先级为深度值或绘图顺序。
  13. 一种图形处理装置,其特征在于,包括存储器和运算电路;
    所述存储器,用于缓存所述运算电路的运行数据;
    所述运算电路,用于执行如权利要求1至6中任一项所述的方法。
  14. 一种电子设备,其特征在于,包括处理器和如权利要求13所述的图形处理装置,所述处理器用于指示所述图形处理装置生成所述目标图像。
  15. 一种计算机可读存储介质,其特征在于,包括指令,当其在计算机上运行时,使得计算机执行如权利要求1至6中任一项所述的方法。
  16. 一种计算机程序产品,其特征在于,当其在计算机上运行时,使得计算机执行权利要求1至6中任一项所述的方法。
CN202080108178.1A 2020-12-27 2020-12-27 一种图形处理方法、装置及电子设备 Pending CN116670719A (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2020/139783 WO2022134125A1 (zh) 2020-12-27 2020-12-27 一种图形处理方法、装置及电子设备

Publications (1)

Publication Number Publication Date
CN116670719A true CN116670719A (zh) 2023-08-29

Family

ID=82157260

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202080108178.1A Pending CN116670719A (zh) 2020-12-27 2020-12-27 一种图形处理方法、装置及电子设备

Country Status (2)

Country Link
CN (1) CN116670719A (zh)
WO (1) WO2022134125A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116894906A (zh) * 2023-09-11 2023-10-17 瀚博半导体(上海)有限公司 图形渲染方法和处理器硬件架构

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100339869C (zh) * 2002-12-20 2007-09-26 Lm爱立信电话有限公司 使用最小深度遮挡剔除和z字形遍历的图形处理设备及方法
US7538765B2 (en) * 2004-08-10 2009-05-26 Ati International Srl Method and apparatus for generating hierarchical depth culling characteristics
US8686999B2 (en) * 2009-02-02 2014-04-01 Microsoft Corporation Dynamic fragment coverage antialiasing
US9953455B2 (en) * 2013-03-13 2018-04-24 Nvidia Corporation Handling post-Z coverage data in raster operations
US9361697B1 (en) * 2014-12-23 2016-06-07 Mediatek Inc. Graphic processing circuit with binning rendering and pre-depth processing method thereof
KR102637736B1 (ko) * 2017-01-04 2024-02-19 삼성전자주식회사 그래픽스 처리 방법 및 시스템
EP3598391B1 (en) * 2018-07-16 2023-09-06 Huawei Technologies Co., Ltd. Variable resolution rendering
CN112044062B (zh) * 2020-08-27 2022-11-08 腾讯科技(深圳)有限公司 游戏画面渲染方法、装置、终端和存储介质

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116894906A (zh) * 2023-09-11 2023-10-17 瀚博半导体(上海)有限公司 图形渲染方法和处理器硬件架构

Also Published As

Publication number Publication date
WO2022134125A1 (zh) 2022-06-30

Similar Documents

Publication Publication Date Title
EP3179447B1 (en) Foveated rendering
US11880926B2 (en) Hybrid render with deferred primitive batch binning
US10957082B2 (en) Method of and apparatus for processing graphics
US20230394750A1 (en) Graphics processing using directional representations of lighting at probe positions within a scene
TWI618030B (zh) 藉由追蹤物件及/或基元識別符的圖形處理增強之方法及系統,圖形處理單元及非暫時性電腦可讀媒體
EP1754195B1 (en) Tile based graphics rendering
US9569811B2 (en) Rendering graphics to overlapping bins
US11657560B2 (en) VRS rate feedback
JP2008077627A (ja) 3次元画像のレンダリングにおける早期zテスト方法およびシステム
JP4977712B2 (ja) ディスプレースクリーン上に立体画像をレンダリングするコンピュータグラフィックスプロセッサならびにその方法
EP3333805B1 (en) Removing or identifying overlapping fragments after z-culling
US11954782B2 (en) Hybrid render with preferred primitive batch binning and sorting
GB2546720B (en) Method of and apparatus for graphics processing
CN117501312A (zh) 图形渲染的方法及装置
CN116210029A (zh) 深度缓冲区预处理
CN116670719A (zh) 一种图形处理方法、装置及电子设备
JP2022520525A (ja) 光強度画像を生成するための装置及び方法
EP3504684B1 (en) Hybrid render with preferred primitive batch binning and sorting
CN111932689B (zh) 一种采用id像素图的三维对象快速选取方法
US20220319091A1 (en) Post-depth visibility collection with two level binning

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