CN100339869C - 使用最小深度遮挡剔除和z字形遍历的图形处理设备及方法 - Google Patents

使用最小深度遮挡剔除和z字形遍历的图形处理设备及方法 Download PDF

Info

Publication number
CN100339869C
CN100339869C CNB2003801064443A CN200380106444A CN100339869C CN 100339869 C CN100339869 C CN 100339869C CN B2003801064443 A CNB2003801064443 A CN B2003801064443A CN 200380106444 A CN200380106444 A CN 200380106444A CN 100339869 C CN100339869 C CN 100339869C
Authority
CN
China
Prior art keywords
fragment
row
pixel
depth value
block
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.)
Expired - Lifetime
Application number
CNB2003801064443A
Other languages
English (en)
Other versions
CN1739117A (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.)
Telefonaktiebolaget LM Ericsson AB
Original Assignee
Telefonaktiebolaget LM Ericsson AB
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 Telefonaktiebolaget LM Ericsson AB filed Critical Telefonaktiebolaget LM Ericsson AB
Publication of CN1739117A publication Critical patent/CN1739117A/zh
Application granted granted Critical
Publication of CN100339869C publication Critical patent/CN100339869C/zh
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Abstract

在包括多行像素的图形显示场中定义多行碎片,各个碎片包括来自至少两行像素的像素。根据该一行碎片中的碎片的各自代表深度值是否满足遮挡标准,为图元的一行碎片的相应碎片设置遮挡标记。响应于遮挡标记,以逐行的方式对于图元处理与该一行碎片对应的像素行中的像素。该处理可以包括使用Z字形遍历算法处理该一行碎片中的像素行。

Description

使用最小深度遮挡剔除和Z字形遍历的图形处理设备及方法
相关申请
本申请要求于2002年12月20日提交的,Akenine-Mller等人的标题为“ZIGZAG Z-Min Culling”的美国临时专利申请No.60/434,900的优先权,在此通过引用并入其全部内容。
技术领域
本发明涉及计算机图形学,更具体地,涉及图形处理方法、设备和计算机程序产品。
背景技术
移动电话在全世界都在使用。因为它们通常配备有显示屏,所以还可以在这些设备上对图像进行渲染。这很可能使得移动电话成为当今最广泛的渲染平台。然而,这种渲染通常局限于非常简单的二维图形,直到最近三维图形才在这一领域问世。在诸如Java规范请求184(例如参见www.jcp.org)和用于嵌入式系统的OpenGL ES(例如参见www.khronos.org)等即将到来的标准的制定活动中可以看出对移动图形不断增长的兴趣。可能使用三维图形的应用包括人机接口(MMI)、屏幕保护程序、地图、动画消息,并且当然包括游戏。
移动电话本身具有完全不同于例如带有显示卡的PC系统的两个特性。首先,它们具有很小的显示屏,其次,它们具有非常少的用于渲染的资源。下面将简要讨论这些特性。
现有的带有彩色显示屏的移动电话通常具有[176-320]×[144-240]的分辨率,即,显示屏非常小。QCIF标准定义了176×144的分辨率,QVGA标准使用320×240。虽然诸如1024×768的更高的分辨率也将出现在移动电话上,但是很可能这将仅在非常高端的移动电话上出现,因而大部分用户并不会使用。此外,这样的高分辨率将可能消耗更多的能量,这将降低电池的使用寿命。因此,可以预计诸如QCIF和QVGA等较低的分辨率将占主导地位。
就显示屏上的色彩数量而言,256至65,536种色彩中的任一数量都很常见。除了小分辨率之外,用户通常将显示屏拿得离眼睛很近,这使眼睛到像素的平均角度与PC系统相比更大。总之,这些显示条件意味着最终应当以比PC系统更高的质量来渲染移动电话上的每个像素。这有时被称作“逆屏幕大小渲染质量法则”。
移动电话具有较少资源有多种原因。因为它们通常由可充电电池供电,所以任何类型的渲染优选地都应当最好使用尽可能少的能量。此外,电池技术通常并不以摩尔定律的速率提高。而且,外部存储器访问通常是计算机系统内使用最大能量的操作。这意味着应当非常小心地使用带宽资源,并且峰值带宽是最为有限的。
为了使每个设备的成本很低,移动电话通常配备有非常小的存储器,小芯片区域专用于显示操作。少的可用带宽、小的芯片区域和小的存储器都有助于使每个设备的价格保持很低,但是更重要的是,在大多数情况下,这些因素还有助于比具有更多资源的系统使用更低的能量。实际移动电话数据的典型的示例是:1)每个时钟周期一个或一半32比特存储器访问,2)10-200MHz的CPU和3)1-16MB的较快的存储器。
三维图形的实时渲染在移动终端上具有多个吸引人的应用,包括游戏、人机接口、消息传送和移动商务。因为三维渲染通常是计算量很大的工作,所以通常必需建立专用的硬件以达到足够高的性能。因而,降低这一硬件结构的复杂性和带宽使用的创造性方法是非常重要的。
在大多数情况下,使用z缓冲器(深度缓冲器)解决可见性。通常都是这样,因为一般能够以任意顺序绘制三角形。因此,z缓冲器存储与从眼睛到三角形的距离成比例的距离,并且如果后一三角形比z缓冲器的内容更远,则色彩和z缓冲器不被覆盖渲染(overdraw)。
而且,这还意味着图形系统并不十分聪明,因为可能对一个像素进行多次覆盖渲染。而且,即使多次重写一像素,最终也仅可以看见一个几何图元(primitive)(三角形)。模拟物是绘制在帆布上的,其中最底层的涂层被最前面的涂层所遮掩。对于图形系统来说,同样如此,但是可以以任意顺序绘制。
为移动平台实现上述目的同样非常重要,通常希望应当尽可能地降低主存储器的带宽使用,因为这样的存储器访问用掉了绝大部分能量,而能量通常是稀缺资源。
当今,存在多种使用遮挡剔除形式的显示卡(NVIDIA Geforce3和更高版本、ATI Radeon)。将屏幕划分成例如8×8个区域(称作碎片tile),并且为每个碎片,将该碎片的z缓冲器中的z值的最大值zmax存储在高速缓冲存储器(快速且不耗费能量)。当渲染三角形时,在转向下一个碎片之前访问一个碎片内的所有像素,当遇到新的碎片时,计算关于该碎片中的三角形的最小z值,即zmin(或者可以使用某个低成本的较不准确的方法来过估计最小的z值)。如果zmin大于该碎片的zmax,则遮挡(遮住)当前渲染的三角形,且通常无需进一步为该三角形而处理该碎片。如果该碎片未被遮挡,则正常处理该碎片内的像素,即,测试该三角形中所包含的像素,进行z-测试,以及纹理化等。
授权给Morein的“Method and apparatus for efficient clearing ofmemory”的美国专利No.6,421,764(在Akenine-Mller Tomas,and EricHaines,Real-Time Rendering,2nd edition,June 2002,pp.694-697中进行了描述)描述了一种有效清除存储器的方法。并不清除z-缓冲器(例如),而是为各碎片(例如8×8区域)设置标记。随后,当首次访问该碎片时,因为设置了标记,所以可以不必读取该块中的像素,而是从快速片内存储器中读取“清除值”。当首次对该碎片进行写入时,使标记复位。这样,在清除过程中只接触了一部分存储器,这可以节省能量和带宽。
通常希望使主存储器尽量保持低的带宽使用,从而获得更佳的性能并节省(电池)能量。为了在三角形上内插纹理(图像)数据和z坐标等,可能需要存储若干参数,并将用于特定像素的参数组称作场景。当移动到另一像素时,可以更新此场景。使用的场景越多,该解决方案在硬件的门电路方面可能变得更为昂贵。
通常希望将门电路的数量保持得尽可能地少,从而获得成本经济的解决方案。当前已知的一些在移动到下一个碎片之前访问碎片内的所有像素的方法需要4或5个完整场景(参见McCormack,Joel and RobertMcNamara,“Tiled Polygon Traversal Using Half-Plane Edge Functions”,Workshop on Graphics Hardware,pp.15-22,August 2000,和Kelleher,Brian,“Pixel Vision Architechture”,Digital Systems Research Center,no.1998-013,October 1998)。对于移动平台来说,这可能成本过高。还应当指出,可以使用z-max技术,但是其潜在问题在于在对三角形进行了渲染之后更新z-max可能较昂贵,因为需要读取整个碎片内的所有z值才能更新z-max。当前使用z-max的解决方案通过读取整块的z值解决这个问题。这是可能的,因为与移动平台相比,它们通常具有更宽的到主存储器的带宽,因而能够承受这种解决方案。
通常,尚未发表对整个系统进行说明的低成本架构。有两个值得注意的例外,即Neon(在McCormack,Joel,and Robert McNamara,“TiledPolygon Traversal Using Half-Plane Edge Functions”,Workshop on GraphicsHardware,pp.15-22,August 2000中描述)和像素视觉架构(在Kelleher,Brian,“Pixel Vision architecture”,Digital Systems Research Center,no.1998-013,October 1998中描述)。Imagination Technologies具有称作MBX的系统,该架构是基于碎片的,因此z-缓冲器、后置缓冲器和模板缓冲器仅需要为碎片大小,如32×16个像素。通常用快速片内存储器实现该存储器。初始时,一遍需要将所有几何图形排序成多个碎片,这需要存储器以及存储器带宽。当完成这一排序后,对各碎片内的几何图形进行光栅化。在光栅化的过程中,首先分辨可见性,随后仅在可见的片段上执行纹理化和遮蔽。这称作延迟遮蔽。为了与碎片排序并行地进行碎片光栅化,每个碎片需要两个缓冲器。没有很多关于MBX结构的信息,因此,除了避免了用于缓冲器的存储器之外,并不清楚实际的好处是什么。很显然,这种结构节省了能量。然而,并未记载节省了多少。
为了以子像素的精确度来执行多边形的光栅化,可以使用改进的Bresenham算法,如在Lathrop,O.,Kirk,D.,and Voorhies,“Accurate renderingby subpixel addressing”,IEEE Computer Graphics and Applications 10,5(September 1990),pp.45-53中描述的。通常使用的替代方式是使用边缘函数,如在Pineda,J.,“A parallel algorithm for polygon rasterization”,Proceedings of SIGGRAPH 1988,ACM,pp.17-20页(1988)中描述的,其中将三角形内的区域描述为三角形边的正半空间的逻辑交集。因而,可以使用不同的策略来找出三角形内的像素。这称作遍历。根据这些策略的效率如何,在遍历过程中需要不同数量的场景(内插参数等)。各个场景通常消耗相当多的门电路。
图1示出了根据Pineda的Z字形遍历方案的三角形遍历。由浅灰色或深灰色标记的像素是遍历方案所接触到的像素。由深灰色标记的像素是遍历算法找到的在三角形内的像素。Z字形遍历算法所采用的路径如带箭头的路径所示。基本上,在第一扫描线上自右向左遍历三角形,直到处于三角形外部。然后,向上一步。如果之后处于三角形内部,则需要在相同方向内继续遍历,直到处于三角形外部。这称作后向跟踪。当处于三角形外部时,反转遍历方向,并开始光栅化当前的扫描线,这次是从左向右。当处于三角形外部时,再向上一步,如此继续。
图1中示出了一个示例。在最底部的扫描线上,设置一个像素,但是向左的下一个像素处于三角形外部。这意味着应当向上一步。在这一步骤之后,处于三角形内部,并且必需后向跟踪,即继续向左,直到处于三角形外部。在一个像素之后,处于三角形外部,可以反转遍历方向(从右至左变到从左至右),并开始光栅化第二扫描线。找出应当处于三角形内部的两个像素,此后处于三角形外部,并且必需向上一步。这一次已经处于三角形外部,无需后向跟踪。因此,可以反转遍历方向,并开始对第三扫描线进行光栅化,如此继续。
每次遇到发现处于三角形内部的像素,需要搞清是否应当绘制它。因而,计算在该点上的三角形的z值,在此称作z-tri(x,y),其中(x,y)是该点的坐标。随后,从z缓冲器中提取该点的z值,称作z-buf(x,y)。如果z-tri(x,y)>=z-buf(x,y),则不执行任何操作。然而,如果z-tri(x,y)<z-buf(x,y),则应当绘制该像素,同时利用z-tri(x,y)值更新z-缓冲器。在伪代码中,可以如下:
calculate z-tri(x,y)
fetch z-buf(x,y)from z-buffer
if(z-tri(x,y)<z-buf(x,y))
{
 write z-tri(x,y)to z-buffer
 write color in color-buffer
 }
应当指出if语句可以变成任意深度测试if(depthtest(z-tri(x,y),z-buf(x,y)))。为了提高相关性的利用率等级,并为了简化遮挡剔除算法,图形硬件通常以成片的方式遍历三角形所覆盖的像素(参见Kelleher,Brian,“Pixel Vision architecture”,Digital Systems Research Center,no.1998-013,October 1998;McCormack,Joel,and Robert McNamara,“TiledPolygon Traversal Using Half-Plane Edge Functions”,Workshop on GraphicsHardware,pp.15-22,August 2000;授权给Morein的美国专利No.6,421,764)。这意味着在移动到另一个碎片之前访问处于碎片(如8×8区域)内的所有像素。为此需要不同的遍历策略,这将在必须存储的场景数目方面增加成本。例如,McCormack和McNamara描述了一种与相应的非成片遍历相比需要多一个场景的成片遍历算法。对于该成片遍历算法,总共需要四个场景。
分级z-缓冲器算法使用z-金字塔,其中金字塔的各级中的各像素存储其四个孩子的z值中的最大值(在下面的等级中的),如在Greene,N.,Kass,M.,and Miller,G.,“Hierarchical z-buffer visibility”,Proceedings ofSIGGRAPH 1993,ACM,pp.231-238(1993);美国专利US 5,600,763和美国专利US 5,579,455等中描述的。因而,在金字塔的顶端处,存储整个画面上所有z值的最大值。这个金字塔用于执行遮挡剔除。当对一组几何图形进行渲染时,针对z-缓冲器内的适当等级,扫描转换和测试该组的界限量值以确定该组是否可见。当用软件实现时这种算法非常有效,然而还不存在成熟的硬件实施方式。然而,商品图形硬件通常具有形式更为简单的遮挡剔除。Morein,S.,“ATI radeon Hyperz technology”,Workshop on Graphics Hardware,Hot3D Proceddings,ACMSIGGRAPH/Eurographics。Morein(2000)描述了一种技术,其中各碎片存储可以是一片(诸如8×8像素)内的z值的最大值zmax。在三角形的遍历过程中,当访问新碎片时进行测试,确定三角形的“最小”z-值是否大于相应碎片的zmax。如果大于,则跳过该碎片,否则照常对该碎片进行渲染。应当指出,为了更新zmax,必需读取该碎片的所有z值,这可能较昂贵。在授予Takeda的美国专利No.6,037,946以及欧洲专利申请No.EP1,107,177中描述了其它基于碎片或块的遮挡技术。
发明内容
根据本发明的一些实施例,在包括多行像素的图形显示场中定义多行碎片,各碎片包括至少两行像素中的像素。根据图元的一行碎片的各碎片的代表深度值是否满足通过比较图元的最大深度值和所缓存的遮挡阈深度值而建立的遮挡标准,设置该一行碎片中的各碎片的遮挡标记(例如,赋值以显示未遮挡,可能遮挡,其它遮挡状态)。响应于该遮挡标记,以逐行的方式针对图元,处理与该一行碎片对应的像素行中的像素。该处理可以包括:响应于遮挡标记,处理一行碎片的第一碎片中的一部分像素,随后,在响应于遮挡标记处理第一碎片中的其它像素之前,响应于遮挡标记处理该一行碎片的第二碎片中的像素。该处理可以包括使用Z字形遍历算法处理碎片行中的像素行。
在本发明的其它实施例中,将遮挡标记存储在碎片遮挡信息高速缓存中,该高速缓存被配置为存储一行碎片中的各碎片的各自遮挡标记,为该一行碎片的各碎片存储各自的遮挡阈深度值。设置遮挡标记包括确定一个碎片的图元的最大深度值,比较该最大深度值与在碎片遮挡信息高速缓存中所缓存的该碎片的遮挡阈深度值,并响应于该比较,设置该碎片的遮挡标记。
根据其它实施例,将深度缓冲器配置为:对于图形显示场的各个像素存储各自的遮挡阈深度值。设置遮挡标记包括将碎片的遮挡标记设置为表示未遮挡,并且处理像素包括:检测该碎片的遮挡标记表示未遮挡,并在不从深度缓冲器中提取该像素的遮挡阈深度值的情况下,响应性地处理该碎片中的图元的像素。
该方法还包括:确定该像素的图元的深度值,比较所确定的像素的图元的深度值与在碎片遮挡信息高速缓存中存储的该碎片的遮挡阈深度值,并响应于比较结果,将碎片遮挡信息高速缓存中的该碎片的遮挡阈深度值更新为所确定的该像素的图元的深度值。
在其它实施例中,设置遮挡标记包括将碎片的遮挡标记设置为表示未遮挡,并进行如下处理像素:建立一总体碎片遮挡信息存储器,其被配置为存储所有碎片行的各自遮挡阈深度值;并利用来自该总体碎片遮挡信息存储器的遮挡阈深度值来填充该碎片遮挡信息高速缓存。更新了碎片遮挡信息高速缓存中的该碎片的遮挡阈深度值之后,根据该碎片遮挡信息高速缓存更新总体碎片遮挡信息高速缓存中的遮挡阈深度值。
在本发明的又一实施例中,将遮挡标记存储在碎片遮挡信息高速缓存中,所述高速缓存被配置为存储一行碎片的各碎片的各自遮挡标记、该一行碎片的各碎片的各自遮挡阈深度值,以及该一行碎片的各碎片的各自状态标记。根据该碎片遮挡信息高速缓存,处理该一行碎片中某处的第一行像素,其中第一行像素的处理包括将第一行碎片内的至少一个碎片的遮挡和状态标记设置为表示已经确定了至少一个碎片的遮挡状态。随后,确定下一行像素是否在第一行碎片内。如果是,则使用从第一行像素获得的碎片遮挡信息高速缓存中的信息处理下一行像素。如果不是,则清除碎片遮挡信息高速缓存中的遮挡和状态标记信息、更新碎片遮挡信息高速缓存中的遮挡阈深度值、随后将来自该碎片遮挡信息高速缓存的相应遮挡阈值写入总体碎片遮挡信息存储器中,然后将遮挡阈值从总体碎片遮挡信息存储器读取到与下一行碎片对应的碎片遮挡信息高速缓存中。随后,使用更新后的碎片遮挡高速缓存来对下一行像素进行处理。
根据本发明的其它方面,在图形显示场内定义多行碎片,每个碎片包括多个像素。将一个碎片的遮挡标记设置为表示该碎片中的图元未遮挡。响应于检测到该碎片的遮挡标记表示未遮挡,处理该碎片中的图元的一个像素。可以在不从深度缓冲器中提取该像素的遮挡阈深度值的情况下处理该像素,这可以降低从深度缓冲器中进行读取的频率。
本发明可以实施为方法和设备。例如,本发明可以有利地用于便携式电子设备中,例如移动无线终端、个人数字助理(PDA)等。
附图说明
图1示出了现有技术的Z字形遍历技术。
图2到图8示出了根据本发明一些实施例的示例性图形处理操作和设备。
图9示出了根据本发明其它实施例的包括图形设备的示例性便携式电子设备。
具体实施方式
下面将参照附图更全面地描述本发明,在附图中图示了本发明的示例性实施例。提供这些实施例,以使本申请全面和完整的。在全文中,相同的标号表示相同的单元。
在下文中参考图2至图6所描述的本发明的一些示例性实施例可以以三种新的方式扩展Pineda Z字形遍历方法:
1)可以将z-缓冲器划分成例如8×8像素的非重叠碎片。
2)可以在系统中包括称作tileinfo的存储器(先前称作“总体碎片遮挡信息存储器”),其中存储有与该碎片相关的信息。对于每个碎片,可以存储具有该碎片内所有z值中的最小值的z-min变量。例如,如果画面分辨率为176×144,碎片大小为8×8,则碎片数量为176/8×144/8=22×18=396。因而,tileinfo必需能够保存396个z-min值或396×2=792个字节,如果每个z-min值是2字节的话。为了获取特定碎片的z-min的地址,可以使用该像素的x-坐标和y-坐标。例如,在具有176×144个像素和8×8个碎片的上述示例中,可以将地址计算为(y/8)*22+x/8,其中“/”表示整除。
3)可以包括称作rowtileinfo的高速缓冲存储器(先前称作“碎片遮挡信息高速缓存”),它能够存储一行碎片的相关信息。可以为该行中的每个碎片存储三条信息,即:
·“z-min-cached”,它是可在tileinfo内获得的被高速缓存的z-min。与普通的高速缓存一样,可以在不更新tileinfo中的z-min的情况下更新z-min-cached的值。在处理了整行碎片之后,必需将z-min-cached写回到tileinfo中的z-min。
·“visited”,它是1比特的状态标记;和
·“visible”(先前称作“未遮挡标记”),它也是1比特的标记。
高速缓冲存储器可以足够大以存储与整行碎片相关的信息。例如,如果分辨率是176×144,碎片大小是8×8,则一行碎片等于176/8=22个碎片,rowtileinfo必需能够存储用于22个碎片的“z-min-cached”、“visited”和“visible”。如果z-min-cached占用16比特,则可以仅使用22×(16+1+1)比特,即396比特=49.5字节来创建整个rowtileinfo。因而,rowtileinfo远小于tileinfo,这意味着它可以快速且节省能量地通过片内硬件来实现。还应当指出rowtileinfo始终保存与当前碎片行相关的信息。因而,当从一碎片行内的最后扫描线进行到下一碎片行的第一扫描线时,rowtileinfo和tileinfo被更新。为了计算rowtileinfo中的数据的地址,仅需要该像素的x坐标。可以忽略y坐标的原因在于rowtileinfo仅处理一行碎片。例如,如果相继存储了所有z-min-cached,则可以使用x/8计算地址,其中“/”表示整除。
4)第四个附加方式是基于z-min的选择算法,其利用Z字形遍历方案、碎片结构、tileinfo存储器和rowtileinfo存储器,节省了存储器访问。现在将详细描述该算法如何运行。
将以多个步骤来描述该算法,其中将与先前相比更详细地描述每个步骤:第一步表示如何光栅化三角形;第二步表示如何光栅化扫描线;第三步并且最后步骤表示如何光栅化像素(写入帧缓冲器)。然而,将以说明如何清除缓冲器开始,这是因为这通常在任一三角形的光栅化之前每帧至少执行一次。
清除
在绘制之前,通常通过将所有值设置为预定义的值来清除z-缓冲存储器。通常,该预定义的值是到远平面(far plane)的距离,z_far,在我们的系统中,还通过将z_far代入所有z-min变量来清除tileinfo。还清除rowtileinfo存储器。通过将rowtileinfo中的所有碎片的标记“visited”设置为“false”来执行这一步骤。应当指出,优选地每帧清除一次z-缓冲器和tileinfo,而不是在每个三角形之间。然而,每次清除rowtileinfo,都进行到一新的碎片行,下面参考图2更详细地描述。
三角形的光栅化
根据本发明的一些实施例,可以按照图2的“三角形的处理”来进行光栅化。首先,将rowtileinfo中的所有碎片的“visited”标记设置为false(101)。随后,处理一个扫描线(102)。下面参考图3更详细地描述如何执行该步骤。在处理了扫描线之后,检查下一行是否将是在与当前行不同的碎片内。例如通过检查下式来执行该步骤(103):
                   (y+1)mod tilesize==0;
其中y是当前扫描线的行,mod是取模操作符,tilesize是在y方向上的碎片大小。如果下一行在不同的碎片上,则需要将rowtileinfo中的信息写回到tileinfo内(104)。还希望将所有“visited”标记设置为false(105)。这可以使用下面的伪代码来实现:
for all tiles in rowtileinfo
{
if visited==true
   {
        write back z-min-cached to corresponding z-min in tileinfo;
   }
   visited=false;
}.
在通过上述方式更新了rowtileinfo和tileinfo之后,在y方向上向上前进一个像素(106)。还在x方向上反转步进方向(107)。测试是否已经到达三角形的末端(108)。如果是,则停止,否则返回到处理下一个扫描线(102)。
扫描线的处理
图3示出了当进行到新的扫描线时应当进行的处理。首先在“dir”的相反方向上步进,直到处于三角形的该边沿之外(201)(如果已经在外部,则根本无需步进)。随后,在“dir”方向上步进(202),直到在另一侧上完全处于三角形的外部(203),例如,假如朝右步进,则需要朝右步进,直到整个三角形位于测试的当前位置的左侧。可能仅步进一次是不够的,因为刚刚到达新的扫描线,可能处于三角形外部几个像素。对于各步骤测试是否处于三角形内部(204)。如果不是,则在“dir”方向上再前进一步(202)。如果在内部,则检查rowtileinfo中的相应碎片的已访问标记(205)。如果已访问标记为false,则尚未访问该碎片,必需初始化在该碎片的rowtileinfo中的信息(206)。下面参考图4来详细描述如何执行这一步骤。如果已访问标记为true,则rowtileinfo内的信息已经是最新的,可以使用它。因而,测试可见标记是否为true(207)。如果为true,则可以使用快速方式写入像素,而无需读取z-缓冲器,在此称作“写入可见(write visible)”(209),下文中将参考图5更详细地描述该步骤。如果已访问标记为false,则将使用光栅化像素的常规方式,在此称作“写入常规(write normal)”(208),将参考图6详细描述该步骤。此后,将向回步进到另一像素(202)。
初始化一碎片的rowtileinfo
图4示出了如何初始化一碎片的rowtileinfo。通过将z-min值从tileinfo读取到rowtileinfo中的z-min-cached值来开始。此后,计算称作z-tri-max的数值,它大于或等于在当前碎片中三角形可以假定的所有可能的z值(302)。一种计算z-tri-max的方式是使z-tri-max为三角形顶点的z值中的最大值。如果三角形顶点的坐标是(x_A,y_A,z_A),(x_B,y_B,z_B),(x_C,y_C,z_C),则可以将z-tri-max计算为:
            z-tri-max=max(z_A,max(z_B,z_C))。
另一种方式是使z-tri-max为碎片中三角形平面可以假定的最大z值。在计算出z-tri-max之后,随后检查是否z-tri-max<z-min-cached(303)。如果是,则确定该碎片内的三角形的所有像素将是可见的(未被先前渲染的原始图片所遮挡),因此,将标记“visible”设置为true(304)。否则,可以将“visible”设置为false(305)。最后,将rowtileinfo中的相应碎片的“visited”标记设置为“true”(306)。
“写入可见”--写入已知为可见的像素
图5示出了当对于在与该像素对应的rowtileinfo中的碎片,“visible”和“visited”标记都为true的情况下应当如何写入像素。
如果“visible”标记为true,则可以在不读取z-缓冲器的情况下绘制像素。确保该像素是可见的。然而,因为正在绘制新像素,所以可以绘制z值比当前z-min-cached小的像素。因而,应当相应地更新z-min-cached。通过首先计算z-tri(x,y)(401),随后将z-tri(x,y)写入z-缓冲器(深度缓冲器)并将色彩写入色彩-缓冲器(402),可以执行上述步骤。在此,(x,y)是所处理像素的坐标。接着,检查是否z-tri(x,y)<z-min-cached(403)。如果小于,则应当更新z-min-cached(404)。
写入常规--如果“visited”为false
如果“visited”标记为true,但是“visible”标记为false,则应当读取z-缓冲器以获知是否应当设置色彩。在碰巧将小于z-min-cached的z值写入缓冲器的情况下,还应当更新z-min-cached。这一步骤如图6所示。首先,从z-缓冲器中读出z-buf(501)。随后,计算z-tri(x,y)(502)。接着,检查是否z-tri(x,y)<z-buf(x,y)(503)。如果不是,则该像素不可见,并停止。否则,将z-tri(x,y)写入z-缓冲器,并将色彩写入色彩-缓冲器(504)。还检查是否z-tri(x,y)<z-min-cached(505)。如果是,则应当用z-tri(x,y)更新z-min-cached。否则,完成处理并可以停止。
其它示例性实施例
图7中示出了根据本发明一些其它方面的通用示例性图形处理操作。在图形显示场内定义碎片行,这些碎片包括多行像素(710)。设置一行碎片中的碎片的遮挡标记,即,根据代表深度值是否符合遮挡标准,如上所述地,为图元给出一数值以表示未遮挡或可能遮挡(720)。例如,遮挡标记可以是如上所述的rowtileinfo高速缓存的“visibility”标记。如上所述,可以比较例如图元(例如三角形)的z-max值与所缓存的遮挡阈值z-value,来设置标记。响应于遮挡标记,例如使用如上所述的Z字形遍历算法,逐行地处理碎片行内的像素(730)。应理解在处理(例如提供)该行中的像素之前,不需要对于该碎片行设置所有遮挡标记和/或深度值,因为通常是在处理了该行中的一个或多个像素之后可以更新遮挡标记和/或深度值,如从方框720到方框730的环回所示。如上所述,当通常根据图元的几何图形处理了一扫描线并在进行了其它扫描线的后续处理之后重新访问一些或全部碎片时,逐行处理可能导致一些碎片的部分访问。
图8示出了根据本发明其它方面的其它通用示例性操作。在图形显示场内定义多个碎片(810)。将遮挡标记,如rowtileinfo高速缓存中的“visibility”标记设置为表示图元在碎片中未被遮挡(820)。随后,例如在扫描线遍历中的像素处理过程中,检测出像素所在的碎片具有表示未遮挡的遮挡标记(830)。随后,根据标记状态的检测结果,处理该像素(840)。例如,如在上述实施例中讨论的,如果遮挡标记表示未遮挡,则可以简单地将该像素的色彩值和z值分别写入色彩缓冲器和z-缓冲器,而无需提取该像素的z-缓冲值。如上面所解释的,这可以使得在处理一帧时从z-缓冲器(可以将其存储在较慢的片外存储器内)中进行读取时所消耗的带宽减少。
图9示出了根据本发明其它实施例的示例性设备910,其中可以执行图形处理操作,例如在此参考图2至图8所描述的操作。在此表示为在便携式电子设备900(例如移动无线终端、PDA或类似设备)内实施的设备910包括显示器912和图形处理器910,该图形处理器910被配置为实现参考图2至图8所描述的一个或全部图形处理操作。图形处理器914可以包括以专用集成电路(ASIC)实现的例如微处理器芯片、微控制器芯片、数字信号处理器(DSP)芯片、视频处理器芯片、专用处理器,及其组合。图形处理器914还可以包括存储器,其被配置为存储计算机代码,并被配置为当在图形处理器914中运行时执行在此所述的图形处理操作。存储器例如可以包括:集成在微处理器、DSP、视频处理器芯片或类似计算设备内的片内存储器(例如高速缓冲存储器),其可以用于实现碎片遮挡信息的高速缓存(例如上述的rowtileinfo);以及分立存储器(例如DRAM、SRAM、闪存等),其被配置为与该计算设备交互操作,并可以用于存储更大量的数据,例如存储显示场内的所有像素的z-缓冲器和色彩缓冲器数据。
在本申请中,图2至图9示出了根据本发明实施例的示例性设备和操作。应当理解可以使用例如在诸如无线电话和PDA等便携式电子设备中的图形处理电路中的一个或多个电子电路,来实现这些图中所示的操作及其组合。通常还应当理解,可以在一个或多个电子电路内,例如在一个或更多个分立的电子组件、一个或更多个集成电路(IC)、一个或更多个专用集成电路(ASIC)和专用电路模块内,并通过可以由计算机或诸如微处理器或数字信号处理器(DSP)等其它数据处理设备执行的计算机程序指令,来生成机器以使得在计算机或其它可编程数据处理设备上执行的指令创建实现指定操作的电子电路或其它装置而实现该图中图示的操作及其组合。计算机程序指令还可以在一个或更多个计算机或其它数据处理设备上执行,以使处理器或其它可编程设备执行一系列动作来生成包括指定操作的由计算机实现的处理。
计算机程序指令还可以以计算机程序产品的形式内嵌在计算机可读存储介质中,即作为嵌入由指令执行系统所使用的或与其相结合的介质中的计算机可读程序代码。计算机可读存储介质可以包括但是并不限于电、磁、光或其它存储介质,如磁盘或光盘或集成电路存储设备。例如,计算机程序指令可以嵌入包括在诸如计算机的设备中的存储器中。因此,图2至图9的框图支持执行规定操作的电子电路和其它设备,用于执行指定操作的动作以及配置为执行规定操作的计算机程序产品。
在附图和说明书中,已经公开了本发明的示例性实施例。尽管使用了专用术语,但是这些术语仅是出于总结和描述性的目的,而不是为了限制性的目的。

Claims (19)

1、一种图形处理方法,包括在包括多行像素的图形显示场中定义多行碎片,各个碎片包括来自至少两行像素的像素,所述图形处理方法的特征为:
根据图元的一行碎片中的碎片各自的代表深度值是否满足通过比较图元的最大深度值和所缓存的遮挡阈深度值而建立的遮挡标准,为该一行碎片中的各个碎片设置遮挡标记;
响应于所述遮挡标记,以逐行的方式处理在与所述图元的所述一行碎片对应的像素行中的像素。
2、根据权利要求1所述的方法,其中处理像素的步骤包括:
响应于所述遮挡标记,处理所述一行碎片的第一碎片中的一部分像素;随后
在响应于所述遮挡标记对所述第一碎片中的其它像素进行处理之前,响应于所述遮挡标记对所述一行碎片的第二碎片中的像素进行处理。
3、根据权利要求2所述的方法,其中处理像素的步骤包括使用Z字形遍历算法处理所述一行碎片中的像素行。
4、根据权利要求2所述的方法:
其中将遮挡标记存储在碎片遮挡信息高速缓存中,所述碎片遮挡信息高速缓存被配置为存储一行碎片中的各个碎片的各自遮挡标记,以及该一行碎片中的各个碎片的各自遮挡阈深度值;并且其中设置遮挡标记的步骤包括:
确定一个碎片的图元的最大深度值;
比较所述最大深度值与在所述碎片遮挡信息高速缓存中所高速缓存的所述碎片的遮挡阈深度值;以及
响应于所述比较,设置所述碎片的遮挡标记。
5、根据权利要求4所述的方法,还包括:
建立深度缓冲器,其被配置为存储所述图形显示场的各个像素的各自遮挡阈深度值;并且
其中设置所述遮挡标记的步骤包括将碎片的遮挡标记设置为表示未遮挡;并且
其中处理像素的步骤包括:
检测所述碎片具有表示未遮挡的遮挡标记;以及
在不从所述深度缓冲器中提取所述像素的遮挡阈深度值的情况下,响应性地处理所述碎片中的图元的像素。
6、根据权利要求5所述的方法,还包括建立色彩缓冲器,其被配置为存储所述图形显示场的所述像素的各自色彩值,并且其中在不从所述深度缓冲器中提取所述像素的遮挡阈深度值的情况下响应性地处理所述碎片中的图元的像素的步骤包括:分别在所述色彩缓冲器和所述深度缓冲器中响应性地存储所述图元的色彩值和深度值。
7、根据权利要求6所述的方法,其中将所述遮挡标记存储在碎片遮挡信息高速缓存中,所述碎片遮挡信息高速缓存被配置为存储一行碎片中的各个碎片的各自遮挡标记、该一行碎片中的各个碎片的各自遮挡阈深度值,并且其中所述方法还包括:
确定所述像素的图元的深度值;
比较所确定的像素的图元的深度值与在所述碎片遮挡信息高速缓存中的所述碎片的遮挡阈深度值;以及
响应于所述比较,将在所述碎片遮挡信息高速缓存中的所述碎片的遮挡阈深度值更新为所确定的该像素的图元的深度值。
8、根据权利要求7所述的方法:
其中设置遮挡标记的步骤包括将碎片的遮挡标记设置为表示未遮挡,并且其中通过如下步骤来进行处理像素的步骤:
建立总体碎片遮挡信息存储器,其被配置为存储所有碎片行的各自遮挡阈深度值;以及
利用来自总体碎片遮挡信息存储器的遮挡阈深度值填充所述碎片遮挡信息高速缓存;并且
其中在更新所述碎片遮挡信息高速缓存中的所述碎片的遮挡阈深度值之后,根据所述碎片遮挡信息高速缓存更新所述总体碎片遮挡信息存储器中的遮挡阈深度值。
9、根据权利要求1所述的方法,还包括:
建立深度缓冲器,其被配置为存储所述图形显示场的各个像素的各自遮挡阈深度值;并且
其中设置遮挡标记的步骤包括将碎片的遮挡标记设置为表示可能遮挡;并且
其中处理像素的步骤包括:
检测所述碎片具有表示可能遮挡的遮挡标记;以及
响应于检测出所述碎片具有表示可能遮挡的遮挡标记,比较所述碎片中的像素的图元的深度值与所述深度缓冲器中的所述像素的遮挡阈深度值;
响应于所述比较,处理所述像素;以及
响应于所述像素的写入z值,更新所述碎片遮挡信息高速缓存中的所述碎片的遮挡阈深度值。
10、根据权利要求9所述的方法,还包括建立色彩缓冲器,其被配置为存储所述图形显示场的各个像素的各自色彩值,并且其中处理像素的步骤包括分别在所述色彩缓冲器和所述深度缓冲器中存储色彩值和深度值,如果所述碎片中的像素的图元的深度值与所述深度缓冲器中的所述像素的遮挡阈深度值的比较结果表示未遮挡,则响应于所述像素的写入z值,更新所述碎片遮挡信息高速缓存中的所述碎片的遮挡阈深度值。
11、根据权利要求1所述的方法,其中将遮挡标记存储在碎片遮挡信息高速缓存中,所述碎片遮挡信息高速缓存被配置为存储一行碎片中的各个碎片的各自遮挡标记、该一行碎片中的各个碎片的各自遮挡阈深度值以及该一行碎片中的各个碎片的各自状态标记,其中所述方法还包括:
响应于所述碎片遮挡信息高速缓存,处理第一行像素,其中处理第一行像素的步骤包括将第一行碎片中的至少一个碎片的遮挡标记和状态标记设置为表示已经确定了所述至少一个碎片的遮挡状态;
确定第二行像素是否在所述第一行碎片中;并且
如果第二行像素处于所述第一行碎片中,则使用从所述第一行像素获得的碎片遮挡高速缓存中的信息对第二行像素进行处理。
12、根据权利要求11所述的方法,其中通过如下步骤来处理第一行像素:
建立总体碎片遮挡信息存储器,其被配置为存储所有碎片行中的所有碎片的各自遮挡阈深度值;
将所述碎片遮挡信息高速缓存的遮挡标记和状态标记设置为预定值;以及
将来自所述总体碎片遮挡信息存储器的第一行碎片的遮挡阈深度值存储在所述碎片遮挡信息高速缓存中。
13、根据权利要求1所述的方法,其中将所述遮挡标记存储在碎片遮挡信息高速缓存中,所述碎片遮挡信息高速缓存被配置为存储一行碎片中的各个碎片的各自遮挡标记、该一行碎片中的各个碎片的各自遮挡阈深度值以及该一行碎片中的各个碎片的各自状态标记,其中所述方法还包括:
建立总体碎片遮挡信息存储器,其被配置为存储所述多行碎片的所有碎片的各自遮挡阈深度值;
响应于所述碎片遮挡信息高速缓存,处理第一行像素,其中处理第一行像素的步骤包括将具有第一行像素中的像素的第一行碎片的遮挡标记和状态标记设置为表示已经确定了第一行碎片中的至少一个碎片的至少一个遮挡状态;
确定第二行像素是否在所述第一行碎片内;以及
响应于对于第二行像素在第二行碎片中的确定,将来自碎片遮挡信息高速缓存的遮挡阈深度值写回到碎片遮挡信息高速缓存中的总体碎片遮挡信息,利用来自所述总体碎片遮挡信息存储器的第二行碎片的相应遮挡阈深度值将所述遮挡阈深度值填充到所述碎片遮挡信息高速缓存中,并且使用经过更新的碎片遮挡信息高速缓存处理第二行像素。
14、根据权利要求13所述的方法,其中确定第二行像素是否在第一行碎片中之后,响应于对于第二行像素处于第二行碎片中的确定,利用来自碎片遮挡信息高速缓存的遮挡阈深度值更新所述总体碎片遮挡信息存储器中的第一行碎片的遮挡阈深度值。
15、一种设备,包括显示器和图形处理器,该图形处理器连接到所述显示器并进行操作来在所述显示器的图形显示场中限定多行碎片,各个碎片包括来自至少两行像素的像素,所述设备的特征在于,所述图形处理器进行操作以根据图元的一行碎片的碎片各自的代表深度值是否符合通过比较图元的最大深度值和所缓存的遮挡阈深度值而建立的遮挡标准设置该一行碎片中的各个碎片的遮挡标记,并响应于遮挡标记以逐行的方式处理在与该图元的所述一行碎片对应的像素行中的像素。
16、根据权利要求15所述的设备,其中所述图形处理器进行操作以响应于所述遮挡标记处理该一行碎片的第一碎片中的一部分像素,随后,在响应于所述遮挡标记处理该第一碎片中的其它像素之前,响应于所述遮挡标记,处理该一行碎片的第二碎片中的像素。
17、根据权利要求15所述的设备,其中所述图形处理器进行操作以使用Z字形遍历算法处理所述一行碎片中的像素行。
18、根据权利要求15所述的设备,其中所述代表深度值包括所述碎片中的图元的最大深度,并且其中所述遮挡标准为该碎片中的图元的最大深度是否小于预先建立的该碎片的最小未遮挡深度值。
19、根据权利要求15所述的设备,其中所述显示器和所述图形处理器安装在便携式电子设备中。
CNB2003801064443A 2002-12-20 2003-12-11 使用最小深度遮挡剔除和z字形遍历的图形处理设备及方法 Expired - Lifetime CN100339869C (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US43490002P 2002-12-20 2002-12-20
US60/434,900 2002-12-20
US10/720,042 2003-11-21

Publications (2)

Publication Number Publication Date
CN1739117A CN1739117A (zh) 2006-02-22
CN100339869C true CN100339869C (zh) 2007-09-26

Family

ID=36081257

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2003801064443A Expired - Lifetime CN100339869C (zh) 2002-12-20 2003-12-11 使用最小深度遮挡剔除和z字形遍历的图形处理设备及方法

Country Status (1)

Country Link
CN (1) CN100339869C (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106204407A (zh) * 2014-07-03 2016-12-07 联发科技股份有限公司 图形处理系统及其相关图形处理方法

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9460552B2 (en) 2007-01-24 2016-10-04 Intel Corporation Method, display adapter and computer program product for improved graphics performance by using a replaceable culling program
WO2009035410A2 (en) * 2007-09-12 2009-03-19 Telefonaktiebolaget L M Ericsson (Publ) Depth buffer compression
KR101526866B1 (ko) * 2009-01-21 2015-06-10 삼성전자주식회사 깊이 정보를 이용한 깊이 노이즈 필터링 방법 및 장치
US20110134120A1 (en) * 2009-12-07 2011-06-09 Smart Technologies Ulc Method and computing device for capturing screen images and for identifying screen image changes using a gpu
CN102411793A (zh) * 2011-08-10 2012-04-11 上海福家网络科技有限公司 一种三维场景中的物体显示方法
US9311743B2 (en) * 2013-10-23 2016-04-12 Qualcomm Incorporated Selectively merging partially-covered tiles to perform hierarchical z-culling
GB2520366B (en) 2013-12-13 2015-12-09 Imagination Tech Ltd Primitive processing in a graphics processing system
GB2520365B (en) 2013-12-13 2015-12-09 Imagination Tech Ltd Primitive processing in a graphics processing system
US20150310660A1 (en) * 2014-04-25 2015-10-29 Sony Computer Entertainment America Llc Computer graphics with enhanced depth effect
US9852539B2 (en) * 2015-02-26 2017-12-26 Qualcomm Incorporated Single pass surface splatting
WO2022134125A1 (zh) * 2020-12-27 2022-06-30 华为技术有限公司 一种图形处理方法、装置及电子设备

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1051255A (zh) * 1989-11-21 1991-05-08 国际商业机器公司 多边形表面线条z缓冲器值的调整
CN1116009A (zh) * 1993-07-27 1996-01-31 塔里根特公司 面向目标的再现系统
WO2000010372A2 (en) * 1998-08-20 2000-03-02 Apple Computer, Inc. System, apparatus and method for spatially sorting image data in a three-dimensional graphics pipeline
US6219062B1 (en) * 1995-03-10 2001-04-17 Hitachi, Ltd. Three-dimensional graphic display device
US6473082B1 (en) * 1999-05-18 2002-10-29 S3 Graphics Co., Ltd. System and method for implementing a two-layer z-range buffer
US6577307B1 (en) * 1999-09-20 2003-06-10 Silicon Integrated Systems Corp. Anti-aliasing for three-dimensional image without sorting polygons in depth order

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1051255A (zh) * 1989-11-21 1991-05-08 国际商业机器公司 多边形表面线条z缓冲器值的调整
CN1116009A (zh) * 1993-07-27 1996-01-31 塔里根特公司 面向目标的再现系统
US6219062B1 (en) * 1995-03-10 2001-04-17 Hitachi, Ltd. Three-dimensional graphic display device
WO2000010372A2 (en) * 1998-08-20 2000-03-02 Apple Computer, Inc. System, apparatus and method for spatially sorting image data in a three-dimensional graphics pipeline
US6473082B1 (en) * 1999-05-18 2002-10-29 S3 Graphics Co., Ltd. System and method for implementing a two-layer z-range buffer
US6577307B1 (en) * 1999-09-20 2003-06-10 Silicon Integrated Systems Corp. Anti-aliasing for three-dimensional image without sorting polygons in depth order

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106204407A (zh) * 2014-07-03 2016-12-07 联发科技股份有限公司 图形处理系统及其相关图形处理方法
CN106204407B (zh) * 2014-07-03 2019-09-13 联发科技股份有限公司 图形处理系统及其相关图形处理方法

Also Published As

Publication number Publication date
CN1739117A (zh) 2006-02-22

Similar Documents

Publication Publication Date Title
EP1576542B1 (en) Graphics processing apparatus, methods and computer program products using minimum-depth occlusion culling and zig-zag traversal
US20230102320A1 (en) Tile-Based Graphics
US6714196B2 (en) Method and apparatus for tiled polygon traversal
CN100342403C (zh) 使用图案阴影来产生阴影效果的方法与装置
US5945997A (en) Block- and band-oriented traversal in three-dimensional triangle rendering
CN1114890C (zh) 纹理映射系统及其方法
US6424345B1 (en) Binsorter triangle insertion optimization
CN1287330C (zh) 用于区带渲染的有效图形状态管理
CN100339869C (zh) 使用最小深度遮挡剔除和z字形遍历的图形处理设备及方法
EP3005305B1 (en) Conditional execution of rendering commands based on per bin visibility information with added inline operations
CN1519777A (zh) 像素高速缓存、使用该高速缓存的三维图形加速器及方法
US20100265254A1 (en) Graphics filled shape drawing
WO2003096276A2 (en) Graphics engine converting individual commands to spatial image information, and electrical device and memory incorporating the graphics engine
CN1122945C (zh) 图象处理器及图象处理方法
US8553041B1 (en) System and method for structuring an A-buffer to support multi-sample anti-aliasing
CN1430769A (zh) 拼块式图形结构
CN101103379A (zh) 用于像素采样的方法和装置
CN115294230A (zh) 一种二维纹理贴图的操作方法
US6590579B1 (en) System for low miss rate replacement of texture cache lines
JP2010086008A (ja) 半導体装置、グラフィクスコントローラ、及び情報処理方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CX01 Expiry of patent term

Granted publication date: 20070926

CX01 Expiry of patent term