CN1560797A - 减少z缓冲区流量的三维图形处理机制 - Google Patents
减少z缓冲区流量的三维图形处理机制 Download PDFInfo
- Publication number
- CN1560797A CN1560797A CNA2004100577053A CN200410057705A CN1560797A CN 1560797 A CN1560797 A CN 1560797A CN A2004100577053 A CNA2004100577053 A CN A2004100577053A CN 200410057705 A CN200410057705 A CN 200410057705A CN 1560797 A CN1560797 A CN 1560797A
- Authority
- CN
- China
- Prior art keywords
- shadow
- former
- brick
- mentioned
- buffer zone
- 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
Links
- 230000007246 mechanism Effects 0.000 title claims abstract description 145
- 238000012545 processing Methods 0.000 title abstract description 13
- 230000006835 compression Effects 0.000 claims abstract description 55
- 238000007906 compression Methods 0.000 claims abstract description 55
- 239000011449 brick Substances 0.000 claims description 219
- 238000000034 method Methods 0.000 claims description 192
- 230000008569 process Effects 0.000 claims description 123
- 230000009471 action Effects 0.000 claims description 16
- 239000013598 vector Substances 0.000 description 92
- 230000000875 corresponding effect Effects 0.000 description 19
- 238000010586 diagram Methods 0.000 description 14
- 230000008859 change Effects 0.000 description 7
- 230000006870 function Effects 0.000 description 6
- 230000008901 benefit Effects 0.000 description 5
- 238000009795 derivation Methods 0.000 description 5
- 238000006467 substitution reaction Methods 0.000 description 4
- 238000010276 construction Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 239000012467 final product Substances 0.000 description 3
- 238000010998 test method Methods 0.000 description 3
- 230000007547 defect Effects 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 238000007689 inspection Methods 0.000 description 2
- 230000009021 linear effect Effects 0.000 description 2
- 238000012856 packing Methods 0.000 description 2
- 238000012937 correction Methods 0.000 description 1
- 230000002596 correlated effect Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000007613 environmental effect Effects 0.000 description 1
- 210000002837 heart atrium Anatomy 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- NHDHVHZZCFYRSB-UHFFFAOYSA-N pyriproxyfen Chemical compound C=1C=CC=NC=1OC(C)COC(C=C1)=CC=C1OC1=CC=CC=C1 NHDHVHZZCFYRSB-UHFFFAOYSA-N 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 238000012956 testing procedure Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/005—General purpose rendering architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T11/00—2D [Two Dimensional] image generation
- G06T11/40—Filling a planar surface by adding surface attributes, e.g. colour or texture
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/10—Geometric effects
- G06T15/40—Hidden part removal
- G06T15/405—Hidden part removal using Z-buffer
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Graphics (AREA)
- Geometry (AREA)
- Image Generation (AREA)
- Image Processing (AREA)
Abstract
本发明由于图形处理中使用一压缩机制以减少Z缓冲区内储存的资讯量,并据此减少Z缓冲区流量。上述的压缩机制可为一差分Z压缩机制,其是于Z缓冲区内储存差分向量而非实际的Z值,其中上述的差分向量可于稍后推导得知Z值。以差分向量取代实际Z值后,本发明所提供的压缩机制是可大幅减少需要储存于Z缓冲区的资讯量,据此,当需要自Z缓冲区读取或写入的资讯量减少后,则Z缓冲区的流量亦随的减少。若欲更进一步减少Z缓冲区流量,则可将某些差分向量储存于图形处理机制的区域储存区,而非Z缓冲区。将部分差分向量储存于区域储存区是可避免自Z缓冲区读取或写入差分向量,据此可更进一步减少Z缓冲区流量。
Description
技术领域
本发明是关于图形处理,特别是关于一减少Z缓冲区流量的三维图形处理机制。
背景技术
于三维图形处理时,萤幕上的每个像素(pixel)通常皆包含一Z值,此Z值标示此像素所表示的物体在萤幕上的“深度”。例如,假设代表一旧物体(比如为一棵树的一部分)的一像素正显示于萤幕中,上述像素的Z值设为Z0,之后又有一新物体(比如为一部车的一部分)移入上述旧物体所在的同一像素空间中,而此新物体的Z值设为Z1。当此二物体皆于萤幕显示时,上述的像素是无法同时表现此二物体,亦即,系统同时仅能于两者之间择一显示。于决定显示何者时,系统是比较此二物体的Z值,若Z1小于Z0(意即此新物体的深度不若上述的旧物体,新物体在旧物体的“上”),则上述的像素应显示上述的新物体,且上述像素的Z值是应被更新为Z1;反之若Z1大于Z0(意即此新物体的深度大于上述的旧物体,新物体在旧物体的“下”)则上述的像素应显示上述的旧物体,且上述像素的Z值是应维持为Z0。依上述的显示方法,某像素的Z值是为对应至该像素的最浅物体的Z值。
一显示器中像素的Z值通常被储放于Z缓冲区(Z buffer)中。因每一像素皆具有一Z值,据此,若一显示器具有X个水平像素与Y个垂直像素,则Z缓冲区具有X乘上Y个Z值。对于高解析度显示器而言,Z缓冲区是为相当大的资讯量,且每当要显示一新画面时,系统皆需存取上述的Z缓冲区。于存取Z缓冲区内的资料时,将会造成大量资料在上述Z缓冲区与一图形处理器(GPU,Graphics Processing Unit)之间移动。上述的图形处理器是利用Z缓冲区内的资料以产生所欲显示的画面,然而大量的资料流量将会影响上述图形处理器的处理速度。据此,减少Z缓冲区的流量是可增进系统的处理速度。
先前已有人尝试著减少Z缓冲区的流量,这些努力已发展出下列的方法,例如阶层式Z法(hierarchical z)、两步骤绘图法(two-passrendering),以及影像式Z压缩法(image-based z compression)等。然而是由于诸多理由,比如低压缩比、低效率,以及使用上的限制(有些应用程序仅能读取而无法写入缓冲区),上述这些先前发展的方法是不能达成令人满意的结果。有监于此,发展一能更有效减少Z缓冲区流量的机制是属必要。
发明内容
本发明的目的在于,提供一种减少Z缓冲区流量的三维图形处理机制,于一种实作方式中,上述的压缩机制是为一种差分Z压缩法(delta-based z compression),此压缩法是于Z缓冲区内储存压缩形态的资料(例如差分向量)而非实际的Z值,其中上述的差分向量可于稍后推导得知Z值。以差分向量取代实际Z值后,此压缩机制是可大幅减少需要储存于Z缓冲区的资讯量,据此,当自Z缓冲区读取或写入的资讯量减少后,则Z缓冲区的流量亦随的减少。
若欲更进一步减少Z缓冲区流量,本实施例的一种实作方式是为将某些压缩资讯(例如差分向量)储存于一图形处理机制的区域储存区而非Z缓冲区内。令上述差分向量储存于此区域储存区内是可避免自Z缓冲区读取或写入上述差分向量,据此可更进一步减少Z缓冲区流量。
本发明一减少Z缓冲区流量的方法,其特征在于,该减少Z缓冲区流量的方法包含:
接收一目前影原的资讯;
将该目前影原描绘至一影砖,且该影砖具有一相对应于该影砖的缓冲区段以储存该影砖的资讯;
判断该影砖是否被一大型影原所完全包含;以及
当该判断结果是为该影砖被一大型影原所完全包含时,自一区域储存区而非自该相对应的缓冲区段获得该影砖的资讯,藉此以减少Z缓冲区流量。
其中上述的判断动作还包含:
处理一相对应于该影砖的码以判断该影砖是否被一大型影原所完全包含。
其中上述的自该区域储存区所获得的该影砖的资讯包含一压缩形态的资讯。
其中上述的影砖包含一个或一个以上的像素,且该压缩形态的资讯是可用于推导该影砖中至少一个像素的Z值。
其中上述的压缩形态的资讯是包含根据差分Z压缩法所推导而得的Z值相关资讯。
该减少Z缓冲区流量的方法还包含:
判断该影砖是否处于初始状态;以及
当判断结果是为该影砖处于初始状态时,存取该相对应的缓冲区段。
其中上述的关于该影砖是否处于初始状态的判断动作还包含:
处理一相对应于该影砖的码以判定该码是否指出该影砖是处于初始状态。
其中上述的影砖包含一个或一个以上像素,且该减少Z缓冲区流量的方法还包含:
当该关于该影砖是否处于初始状态的判断结果是为真时,设定一初始Z值至该影砖的一个或一个以上的像素。
该减少Z缓冲区流量的方法还包含:
当该判断结果是为该影砖是未被一大型影原所完全包含时,自该相对应的缓冲区段获得该影砖的资讯。
该减少Z缓冲区流量的方法还包含:
判断该目前影原是否为一大型影原;
判断该目前影原是否完全包含该影砖;以及
当该判断结果是为该目前影原确是为一大型影原且该目前影原完全包含该影砖时,将一该影砖的更新资讯储存于该区域储存区而非该相对应的缓冲区段中。
该减少Z缓冲区流量的方法还包含:更新一相对应于该影砖的码以指明该影砖被一大型影原完全包含。
该减少Z缓冲区流量的方法还包含:
当该判断结果是为该目前影原是非一大型影原,或该目前影原未完全包含该影砖,或该目前影原既是非一大型影原且亦未完全包含该影砖时,则将该影砖的更新资讯储存于该相对应的缓冲区段中。
其中上述的目前影原是属于一目前影格,且该减少Z缓冲区流量的方法还包含:
根据该目前影格内的影原的尺寸决定用以界定一后续影格中的大型影原的一临界值。
本发明一减少Z缓冲区流量的图形处理机制,其特征在于,该减少Z缓冲区流量的图形处理机制包含:
一用以接收一目前影原的资讯的机制;
一用以将该目前影原描绘至一影砖的机制,该影砖具有一相对应于该影砖的缓冲区段以储存该影砖的资讯;
一用以判断该影砖是否被一大型影原所完全包含的机制;以及
一机制以当该判断结果是为该影砖被一大型影原所完全包含时,自一区域储存区而非该相对应的缓冲区段获得该影砖的资讯,藉此以减少Z缓冲区流量。
其中上述的用以判断该影砖是否被一大型影原所完全包含的机制还包含:
一机制以处理一相对应于该影砖的码并据以判断该影砖是否被一个大型影原所完全包含。
其中上述的自该区域储存区所获得的该影砖的资讯包含一压缩形态的资讯。
该减少Z缓冲区流量的图形处理机制还包含:
一判断该影砖是否处于初始状态的机制;以及
一机制以当该判断结果是为该影砖确是处于初始状态时存取该相对应的缓冲区段。
该减少Z缓冲区流量的图形处理机制还包含:
一机制以当该判断结果是为于该影砖是未被一大型影原所完全包含时,自该相对应的缓冲区段获得该影砖的资讯。
该减少Z缓冲区流量的图形处理机制还包含:
一判断该目前影原是否为一大型影原的机制;
一判断该目前影原是否完全包含该影砖的机制;以及
一机制以当该判断结果是为该目前影原确是为一大型影原且该目前影原完全包含该影砖时,将一该影砖的更新资讯储存于该区域储存区而非该相对应的缓冲区段中。
附图说明
为进一步说明本发明的技术内容,以下结合实施例及附图详细说明如后,其中:
图1是为一影原描绘至一影砖的一部分的示意图;
图2是为一储存差分向量资讯的Z缓冲区段的示意图,此图是用于表示使用差分Z压缩法后的存储器节省情况;
图3是为多个重叠影原描绘至一影砖的示意图;
图4是为一储存多个差分向量的Z缓冲区段的示意图,其中上述的多个差分向量是对应至不同影原;
图5是为一有多个标头列的Z缓冲区段的示意图,其中上述多个标头列是储存多组差分向量与多组影原遮罩;
图6是为一描绘至复数个影砖的大型影原的示意图,其中上述的大型影原是完全包含某些影砖;
图7是为一根据本发明一实施例所提供的系统的功能方块示意图;
图8是为一根据图7所示的系统运作的工作流程示意图;以及
图9与图10是为根据本发明一实施例所提供的Z处理的工作流程示意图。
具体实施方式
本发明在此所探讨的方向为一种减少Z缓冲区流量的三维图形处理机制。为了能彻底地了解本发明,将在下列的描述中提出详尽的步骤及其组成。显然地,本发明的施行并未限定于熟知该项技艺者所熟习的特殊细节。另一方面,众所周知的组成或步骤并未描述于细节中,以避免造成本发明不必要的限制。本发明的较佳实施例会详细描述如下,然而除了这些详细描述之外,本发明还可以广泛地施行在其他的实施例中,且本发明的范围不受限定,其以之后的专利范围为准。
基础观念:
基本名词定义:
显示器(display):显示器是为给使用者观看的一视讯绘图装置(例如阴极射线管及液晶显示器等)。上述的显示器包含复数个像素(pixel),其是以水平排列与垂直排列的方式形成一像素阵列。显示器可个别操作每个像素以显示任何影像。
影格(frame):影格是为于任意特定时刻由显示器绘图显示的一完整视讯影像。上述的影格包含组成此视讯影像的所有像素资讯。影格的改变会令显示器所显示的视讯影像随的更动。
影砖(tile):影砖是为显示器的像素阵列的一子集合。一影砖通常包含一由水平及垂直像素组成的较小集合(例如一个八乘八的正方形像素阵列)。一个由影砖组成的完全集合将可完整组成显示器的像素阵列。
影原(primitive):影原是为建构视讯影像中物件的一逻辑元件。在图形处理的领域内,经常被使用的影原是为多边形(polygon),而上述的多边形中最常被使用的是为三角形(triangle),且每个物件皆能够以一个或一个以上的三角形表现。例如一部汽车是能够以复数个三角形表现。影原是可被描绘(rasterize)至影砖或像素上以供显示器绘图(rendering)使用。一影原可能完全位于单一影砖内,或跨越多个影砖(亦即,影原横越影砖的边界),换言的,一影原可能涵盖单一影砖内的所有像素,抑或仅围绕部分像素。差分Z压缩法(Delta-based Z compression)
导致Z缓冲区高流量的因素的一是有大量资讯储存于Z缓冲区。若能减少此资讯量,则Z缓冲区的资讯流量亦将随的减少。差分Z压缩法的一目的即为减少所需储存的资讯量。透过下述范例是为了解差分Z压缩法的最佳方式。
参考图1所示,其是为一包含64个像素104的八乘八的影砖102。请注意:上述尺寸八乘八是便于范例说明,差分Z压缩法可用于任何p乘q的影砖,其中p与q皆为整数。一影原106是描绘至上述影砖102的一部分,于此范例中,该影原所描绘的形状是为一三角形。请注意:差分Z压缩法是可应用于任何形态的影原,包括但不限于点(point)、线(line),以及任何其z值具有线性性质(linear property)的多边形;于此范例中使用三角形是便于说明之故。上述影原106包含了上述影砖102中的部分像素104。在未压缩的情形下,Z缓冲区需为上述的影砖102储存64组Z值(因为上述的影砖102包含64个像素104)。然而经过差分Z压缩之后,Z缓冲区所需储存的资讯将大幅减少。
如图1所示,此影原106有三个顶点(vertex),分别为108(0)、108(1),与108(2),且顶点108(0)的座标为X0,Y0,Z0、顶点108(1)的座标为X1,Y1,Z1、以及顶点108(2)的座标为X2,Y2,Z2。利用上述座标,可求解下列方程以推导出一组相对应于上述影原106的差分向量(deltas):
Z0=ZS+ZX*X0+ZY*Y0; 第一方程
Z1=ZS+ZX*X1+ZY*Y1; 第二方程
Z2=ZS+ZX*X2+ZY*Y2; 第三方程
其中上述的差分向量为ZS,ZX,ZY。请注意上述的第一方程、第二方程,与第三方程基本上是为同一方程所衍生(亦即Z=ZS+ZX*X+ZY*Y),而其是为不同的座标值分别代入变数X,Y,Z所得的结果。换言之,代入上述顶点108(0)的座标值可得上述的第一方程,代入上述顶点108(1)的座标值可得上述的第二方程,代入上述顶点108(2)的座标值可得上述的第三方程。
上述的差分向量经推导而得知后,即可用以计算上述影原106所包含的像素104的Z值。更精确地说,Z值可透过下列方程来计算:
Zn=ZS+ZX*Xn+ZY*Yn; 第四方程
其中上述的Xn与Yn是为像素104的X与Y的座标值,而Zn是为像素104经计算得出的Z值。因上述影原106所包含的像素104的Z值可由推导得知,据此,Z缓冲区内即不需储存Z值,故Z缓冲区内仅需储存差分向量。换言的,仅需差分向量即可于稍后推导出Z值,故当实施上述的压缩法时,Z缓冲区内仅需储存较少量资讯。
透过差分Z压缩法所节省的储存空间于图2中更加明显,其中图2示出者是为图1所示的影砖102所对应的一Z缓冲区段(Z buffersection)202。(于一种实作方式中,每个影砖102皆有一对应的Z缓冲区段202。)上述的Z缓冲区段202包含一标头列(headerentry)204,此标头列204中是储存上述影原106的差分向量206(亦即ZS,ZX,ZY)。然而,仅储存上述的差分向量206仍无法提供足够资讯,因其无法指出上述的差分向量206可应用于哪些像素104(亦即被上述影原106所包含的像素104)之上。
为提供此类资讯,Z缓冲区亦须于上述的标头列204中储存一影原遮罩(primitive mask)208与一Z遮罩)z mask)210。上述的影原遮罩208是用以标示被此影原106所包含的像素104。上述的Z遮罩是用以标示未被此影原106所包含的像素104。若一像素104未被任何影原106所包含,则此像素104的Z值为系统初始(system startup)时指定给全部像素104的初始值(initial value)。一种实作方式是为,此影原遮罩208与Z遮罩210是为一长度为64比特的比特遮罩(bit mask),其中每个比特是代表上述影砖102中的64个像素104之一。于上述的影原遮罩208中,代表一像素104的比特是可标示出其所代表的像素104是否被上述影原106所包含。于上述的Z遮罩210中,代表一像素104的比特是可标示出其所代表的像素104是否被任何影原106所包含。结合上述二者,亦即影原遮罩208与Z遮罩210,即可精确判断出任一像素104是否为任一个影原106所包含。
从图1到图2可明显示出差分Z压缩法可节省储存空间。Z缓冲区不需储存上述影砖102的64个Z值,仅需储存上述差分向量206(亦即ZS,ZX,ZY)与上述的两个64比特长度的影原遮罩208与Z遮罩210。若描绘至一影砖102内的影原106数量不多,则上述的压缩方法可大幅度减少储存空间,一般而言此种情况甚为常见。若描绘至一影砖102内的影原106数量超过一特定数量(此特定数量依特定的实作而有所不同),则储存实际的Z值要比使用差分Z压缩法更有效率。于一实作方式中,于上述的Z缓冲区段202中是否要采用差分Z压缩法端赖其是否较具效率而定。
图1仅示出单一影原106描绘至单一影砖102的情况。于更复杂的情况下,是可能有多个影原106描绘至同一影砖102,图3所示的实施例即为此类情形。其中,一第二影原306亦被描绘至上述影砖102,且此第二影原306是与上述的影原106部份重叠。于此实施例中,类似上述的原理亦可应用于差分Z压缩法。
更精确地说,同上述影原106一般,此第二影原306亦有三个顶点308(0),308(1),308(2)。上述的每个顶点分别具有一相关的X,Y,Z座标值((X3,Y3,Z3),(X4,Y4,Z4),(X5,Y5,Z5))。利用上述座标值,可求解下列方程以得出一组针对上述的第二影原306的差分向量(deltas):
Z3=ZS+ZX*X3+ZY*Y3; 第五方程
Z4=ZS+ZX*X4+ZY*Y4; 第六方程
Z5=ZS+ZX*X5+ZY*Y5; 第七方程
经推导而得知上述的差分向量(ZS,ZX,ZY)后,即可利用先前提供的第四方程计算上述的第二影原306所包含的任何像素104的Z值,其中上述第四方程中的Xn与Yn是为像素104的X与Y的座标值,而Zn是为像素104经计算得出的Z值。因Z值是可由推导得知,则Z缓冲区仅需储存上述第二影原306的差分向量而不需储存实际的Z值。
参考图4所示,其是为图3所示的影砖102的Z缓冲区段202的内容示意图。因上述的影原106与第二影原306是描绘至同一影砖102,据此,Z缓冲区段202需储放两组差分向量,一即针对上述影原106的差分向量206,另一为针对上述第二影原306的差分向量402。于加入上述第二影原306后,原图2中所示的影原遮罩208与Z遮罩210需加以更新。先前已述此Z遮罩210是用以标示未被任何影原所包含的像素104,因上述第二影原306是包含了更多像素104,据此,上述的Z遮罩210需排除被上述第二影原306所包含的像素104。
上述的影原遮罩208亦须加以更新,一种实作方式是为,上述两组差分向量206与差分向量402是共用此一影原遮罩208。就每组差分向量各设置一个独立的影原遮罩亦属可行,然而上述以两组以上的差分向量共用同一影原遮罩208将节省更多空间,据此得以提供更佳的压缩率。于上述的共用的影原遮罩208中,每个比特是用于标示其所代表的像素104为某一差分向量所包含。例如,若一比特值是为0,则此比特所代表的像素104是适用于上述差分向量206,亦即此比特所代表的像素104是为上述影原106所包含;反之,若一比特值为1,则此比特所代表的像素104是适用于上述差分向量402,亦即此比特所代表的像素104是为上述第二影原306所包含。就那些既不被上述影原106与上述第二影原306所包含的像素104而言,其所对应的比特值是为一特定的内定值(default value),比如此内定值是可为0。乍看下,上述比特的内定值会让上述影原的一包含更多像素104,然而,先前所述的Z遮罩210已然指出有那些比特是不被任何影原所包含。据此,利用上述Z遮罩210以处理上述的影原遮罩208可过滤出不被任何影原所包含的像素。
如图3所示,有些像素同时被上述影原106与第二影原306所包含,据此,于上述的影原遮罩208中是无法明确指出上述的像素为哪个影原所包含。于一实作方式中,一比较Z值的方法是用以决定上述的像素为哪个影原所包含。举例而言,如图3所示的一像素104(z)是同时为上述影原106与第二影原306所包含。首先,一上述像素104(z)的Z值是利用上述影原106的差分向量206计算而得出,接着,另一上述像素104(z)的Z值是利用上述影原306的差分向量402计算而得出,然后比较上述两个Z值何者较小(亦即计算出上述影原106与第二影原306何者较浅,较浅的影原将可包含上述像素104(z))。若利用上述差分向量206所计算得出的Z值较小,则此像素104(z)是为上述影原106所包含;若利用上述差分向量402所计算得出的Z值较小,则此像素104(z)是为上述第二影原306所包含;于是,上述影原遮罩208中代表此像素104(z)的比特值是可据此加以设定。上述比较Z值的方法亦可应用于每一个同时为上述影原106与第二影原306所包含的像素,据以决定此像素所属的影原为何。
图3仅示出两个影原106与306,于实际情况中是可能有更多影原被描绘至上述影砖102内。参考图5所示,其为于上述的情况下,将差分Z压缩法所需资讯储存于上述Z缓冲区段202的示意图。于一实作方式中,若有一图3未示出的第三影原被描绘至上述影砖102,则上述Z缓冲区段202将加入一标头列502,且针对上述第三影原的一差分向量504与一影原遮罩506会被加入于上述的标头列502中。若有一图3未示出的第四影原被描绘至上述影砖102,则上述Z缓冲区段202将加入针对上述第四影原的一差分向量508于上述的标头列502中。如图5所示,于一实作方式中,一个影原遮罩是对应至两组差分向量,且每一个标头列204、502是包含两组差分向量与其所对应的一个影原遮罩。据此,若有六个影原被描绘至上述的影砖102内,则上述Z缓冲区段202是将储存一图5未示出的第三个标头列,且此第三个标头列是将包含两组分别对应至第五个与第六个影原的差分向量与一影原遮罩。
因上述Z缓冲区段202可包含不定数目的标头列,据此,于上述标头列204中包含一栏位510以储存一整数n,据以表示于上述Z缓冲区段202中的标头列总数。在图5中,因有两个标头列204/502位于上述Z缓冲区段202中,故此时此整数n的值是为2。若有更多影原被描绘至上述影砖102内,则上述的n值将会增加。比如若有六个影原被描绘至上述影砖102内,则须有第三个标头列以储存相关的差分向量与影原遮罩,故上述的n值将为3。以此方式在上述标头列204中储存此整数n,是有助于得知在上述Z缓冲区段202是有多少个标头列需被读取以取得差分Z压缩法所需的全部资讯。
由理论上观之,无论有多少影原被描绘至上述的影砖102,皆可适用前述所揭露的压缩法。然而先前已述,于实用上是存在一实用的影原上限数目,若所欲描绘至一影砖的影原数目超过上述的影原上限,则储存实际的Z值将比使用上述的压缩法更节省空间。于一实作方式中,于施行上述的压缩法前需检测被描绘至同一影砖的影原数目是否达到上述的影原上限数目,若此检测的结果为真,则不施作差分Z压缩法于此一影砖。
于一实作方式中,先前揭露的压缩法是采每两组差分向量共同利用一影原遮罩的方式,然而,上述的压缩法并非必然以一影原遮罩对应至两组差分向量以及此影原遮罩仅对上述两组差分向量提供必要资讯的方式实作(虽然此方式是为一可能的实作方式)。反之,于一实作方式中,所有于Z缓冲区段202内的影原遮罩的资讯是可结合,以供所有于Z缓冲区段202内的差分向量提供资讯。
更进一步而言,于一实作方式中,每一个影原遮罩是为一比特形式的遮罩,其中的每一比特是代表一影砖内的一特定像素,且每一比特仅有两种可能的值,分别是0与1。若有二个以上的影原被描绘至此一影砖102,亦即于Z缓冲区段202中需储存二个以上的差分向量,据此,即不可能仅用一比特以唯一表示其所代表像素的所属的影原为何者。图5示出四组差分向量206、402、504,与508,仅用一比特是无法表示其所代表像素所属的影原是为此四者之一,因一比特是仅有二种可能值。如图5中,请注意是有两个影原遮罩208、506提供资讯至上述四个差分向量206、402、504与508。若结合上述二影原遮罩208、506的比特,是有可能唯一表示某像素所属的差分向量为何。
举例而言,上述的影原遮罩208包含一比特代表此影砖102的左上角像素,且上述影原遮罩506亦包含一比特代表此影砖102左上角的同一像素。若此二比特结合为一两比特长度的值,亦即其值是可能为00、01、10与11其中之一,则每一可能值即可唯一表示上述的四个差分向量的其中之一。比如,若上述的两比特长度值为00,则此左上角像素即适用上述差分向量206;若上述的两比特长度值为01,则此左上角像素即适用上述差分向量402;若上述的两比特长度值为10,则此左上角像素即适用上述差分向量504;若上述的两比特长度值为11,则此左上角像素即适用上述差分向量508。据此,以此种比特包裹(bit packing)方式结合上述二影原遮罩的比特,是可唯一表示其所代表像素的所属的差分向量为何。以此类推,以上述比特包裹方式是可适用于具有三个影原遮罩与六个差分向量的情况,亦可适用于具有四个影原遮罩与八个差分向量的情况,且可继续推广至具有更多影原遮罩与差分向量的情况。依上述方式实作时,每个影原遮罩非仅提供资讯给两个差分向量,反之,每个影原遮罩是于Z缓冲区段202中一提供资讯给全部差分向量的整体影原遮罩(overall mask)的一部分。依上述方法实作时会有一缺点,亦即于一新影原遮罩加入时,必须更动先前加入的一个或一个以上的影原遮罩。比如,当上述的影原遮罩506加入时,上述的影原遮罩208可能须加以更动;亦即原先上述的影原遮罩208仅提供上述二差分向量206、402的资讯,而上述的影原遮罩506加入时,此影原遮罩208是成为一整体影原遮罩的一部分,且此整体影原遮罩是提供三或四个差分向量206、402、504与508的资讯。上述作法的一优点在于当差分向量的数目超出影原遮罩208所包含的差分向量数目时才需要施作上述的比特包裹法,并且上述整体影原遮罩的大小是随著差分向量数目的增加才增加。
大型影原与全域差分向量(global delta)。
先前所述的差分Z压缩法是透过减少Z缓冲区内资讯量的方式以减少Z缓冲区的流量。进一步而言,Z缓冲区流量的减少亦可由减少Z缓冲区的存取次数而达成。若于某些适当的环境条件下,专利申请人业已观察到有许多Z缓冲区的存取是可进一步省略,据此,Z缓冲区流量更可进一步减少。
参考图6所示,其是为一大型影原602被描绘至复数个影砖的示意图,参考此图是可了解如何省略Z缓冲区的存取次数。上述的影原602是完全包含复数个影砖102(1)至102(13),亦部分包含了其他影砖的像素。缘其简单之故,假设上述的每一影砖是皆有一对应的Z缓冲区段,且上述的差分Z压缩法亦皆应用于此复数个Z缓冲区段。
就上述被此大型影原602完全包含的十三个影砖102(1)至102(13)而言,其所对应的十三个Z缓冲区段皆须储存下列资讯:
(1)一对应于上述影原602的差分向量;
(2)一影原遮罩以指明此影砖内的所有像素皆被上述影原602所包含;
(3)一Z遮罩以指明此影砖内没有任何像素是未被任何影原包含;
(4)一整数n,且其值为1。请注意,上述资讯于上述十三个影砖102(1)至102(13)内皆是相同的。据此,若上述资讯须储存于上述十三个影砖所对应的十三个Z缓冲区段内,亦即同样的资讯将写入Z缓冲区十三次;与此相类,当要读取Z缓冲区的资讯时,同样的资讯将被读取十三次。上述的重复的写入与读取动作是无效率,并且平白增加额外非必要的Z缓冲区流量。
于一实作方式中,大型影原的差分向量资讯是不储放于Z缓冲区内以减少重复存取及Z缓冲区的流量。反之,大型影原的差分向量资讯(在此称为全域差分向量)是被储存于一图形处理机制(GPM,GraphicsProcessing Mechanism)内的区域储存区(l0cal storage)。据此,当需要读取上述的全域差分向量资讯时,上述的图形处理机制可从上述的区域储存区获得而不经由Z缓冲区;与此相类,当需要更动上述的全域差分向量资讯时,上述的图形处理机制可更新上述的区域储存区而非更动Z缓冲区;据此,将可避免对Z缓冲区的重复性读写动作,并且Z缓冲区的流量亦随的减少。于大多数的影格中,专利申请业已观察到大型影原是包含一大比例的影砖,据此,避免为上述影砖而存取Z缓冲区将可显著减少Z缓冲区流量。
较佳实施范例
参考图7,其是为一根据本发明一实施例所建构的图形处理系统700的方块示意图。缘其简单之故,图7仅示出与本发明相关的元件。此图形处理系统700是可能包含一个或一个以上额外的图形处理元件。
如图7所示,此图形处理系统700包含一Z缓冲区702以储存与一显示器内所有影砖(图7未示出)相关的Z值资讯。一实作方式是为,上述的Z缓冲区702包含一m个数目的存储器区段202,其中m是一整数。上述每个存储器区段202是对应至一显示器内的一影砖,亦即影砖与存储器区段202具有一对一(one-to-one)的关系。因上述的Z缓冲区702具有m个存储器区段202,据此,上述的显示器是具有m个影砖,且每一存储器区段202是用于储存其所对应的影砖的Z值相关资讯。于一实作方式中,上述的Z值相关资讯是可为实际Z值的形态(亦即未压缩的形态),亦可为压缩的形态。更精确而言,此处所谓压缩形态的资讯是广泛地指称能够以直接或间接方式计算或推导出像素的实际Z值的资讯。缘其简单之故,于以下讨论时将假定任何储存于存储器区段202的压缩形态的资讯是为差分Z压缩法的形式,亦即于先前讨论的图2、图4、与图5所示的形式。然而,上述的压缩方式非属必要,其他种压缩形式亦可能达成相同效果。
此图形处理系统700还包含一图形处理机制(GPM)706与上述的Z缓冲区702相接。于一实作方式中,上述图形处理机制706会进行相关必要的图形处理动作以产生影格供上述的显示器绘图,据此,上述图形处理机制706必须使用与更新上述Z缓冲区702中的资讯,亦即对上述的Z值相关资讯进行压缩与解压缩的动作。除此之外,上述的图形处理机制706亦负责储存与处理全域差分向量及压缩码(compression code)。就整体而言,于一实作方式中,上述的图形处理机制706可实作本发明的各项功能。此图形处理机制706的动作将于稍后详细说明。如图7所示,此图形处理机制706是为一独立元件,然而,上述图形处理机制706的各项功能亦可利用复数个独立元件实作,且上述每个独立元件是实作一个或一个以上的功能,本发明亦可适用于此种分散式的实作方式。
上述图形处理机制706的各项功能亦可利用任何已知技术加以实作。例如,上述图形处理机制706是可以硬体逻辑元件的方式实作,比如上述图形处理机制706是可为一特殊应用集成电路(ASIC,application specified integrated circuit);除此之外,上述图形处理机制706的各项功能亦可以软体的方式实作,比如上述图形处理机制706是可为一组处理器执行指令的形态。本发明是可适用于以上所述及其他所有可能之上述图形处理机制706实作方式。
如图7所示,此图形处理机制706包含一区域储存区708。此区域储存区708是可为上述图形处理机制706的一部分,比如此区域储存区708与上述图形处理机制706是位于同一晶片上;除此之外,此区域储存区708是可与上述图形处理机制706分开。只要符合上述图形处理机制706可存取上述区域储存区708的实作方式皆符合本发明。
上述的区域储存区708包含复数个纪录(entry)720。如图7所示,此区域储存区708具有K+1个纪录720,其中K是为一整数。上述K值是小于上述的m值,亦即上述显示器的影砖数目是多于上述复数个纪录的数目。于一实作方式中,每个纪录是可用于储存一个影原的相关压缩资讯,此相关压缩资讯是可以任何形态存在,然而于一实作方式中,此相关压缩资讯是为一组根据上述差分Z压缩法针对一影原所产生的全域差分向量。上述的区域储存区708的使用方式将于稍后加以详述。
上述图形处理系统700还包含一连接至上述图形处理机制706的压缩码缓冲区(compression code buffer)704。此压缩码缓冲区704是可为上述Z缓冲区702的一部分,亦或为一独立的存储器。上述压缩码缓冲区704包含复数个压缩码缓冲区段710。于一实作方式中,每个压缩码缓冲区段710是对应至一上述的特定影砖与一上述的特定存储器区段202,亦即此压缩码缓冲区段710与上述的影砖,以及压缩码缓冲区段710与上述的存储器区段202皆具有一对一(one-to-one)的关系。据此,此图形处理系统700具有m个影砖、m个存储器区段202与m个压缩码缓冲区段710。
上述的压缩码缓冲区段710是用于储存与其相对应的影砖及存储器区段202的相关资讯,此相关资讯是用于指示上述图形处理机制706该读取何处的资讯,以及如何处理上述被读取的资讯。一种实作方式是为,储存于此压缩码缓冲区段710的资讯是为一具有八个比特长度的码(code),其值是可能为以下四种形态(type)之一:
(1)0 0 0 0 0 0 0 0 影砖处于初始状态
(2)0 xxxxxxxZ缓冲区段的资讯是为压缩形态
(3)1 1 1 1 1 1 1 1 Z缓冲区段的资讯是非压缩形态
(4)1 xxxxxxx 自区域储存区读取压缩形态的资讯
若此码的内容是全为0,亦即第一形态码,则代表其所对应的影砖是处于初始状态,换言的,并无任何影原被描绘至所对应的影砖。据此,于其所对应的影砖内的所有像素的Z值是该被设定为系统的初始Z值,故上述图形处理机制706是不须存取其所对应的存储器区段202以获得关于此影砖的Z值资讯,反之,上述图形处理机制706仅须将系统的初始Z值填入此影砖的所有像素即可。
若上述码的值是以0为首并且接着以七个非全为0的比特,亦即第二形态码,则此码代表著其所对应的影砖的Z值相关资讯是位于其所对应的存储器区段202内,除此之外,此码亦代表着上述的Z值相关资讯是为压缩形态。据此,上述图形处理机制706是可得知其须自此码所对应的存储器区段202读取关于此码所对应的影砖的Z值相关资讯;同时,上述图形处理机制706亦可得知上述Z值相关资讯是为压缩形态,亦即须进行解压缩动作以推导出此影砖内像素的实际Z值。于一实作方式中,此码内于0之后的七个比特是用以指示此码所对应的存储器区段202的标头列数目,据此是可获得此存储器区段202内的全部压缩资讯。
若上述码的值是全为1,亦即第三形态码,则此码代表著此码所对应的影砖的Z值相关资讯是以非压缩形态存在于此码所对应的存储器区段202内,亦即此码所对应的存储器区段202内的Z值相关资讯是为实际Z值。据此,上述图形处理机制706可得知其须自此码所对应的存储器区段202读取关于此码所对应的影砖的Z值相关资讯;同时,上述图形处理机制706并不须对上述Z值相关资讯进行解压缩动作。
若上述码的值是以1为首并且接着以七个非全为1的比特,亦即第四形态码,则此码代表着其所对应的影砖是完全为一大型影原所包含。据此,关于此码所对应的影砖的Z值相关资讯是不存在于此码所对应的存储器区段202内,而是存在于上述区域储存区708的一纪录720内。根据此码,上述图形处理机制706是可得知其应存取上述的区域储存区708而非存取此码所对应的存储器区段202以获得此码所对应的影砖的Z值相关资讯。于一实作方式中,此码于1之后的七个比特是可指定上述区域储存区708的一纪录720以获得Z值相关资讯,上述图形处理机制706是可根据此码更快且更容易地存取此纪录720内的Z值相关资讯。
如上所述,此图形处理机制706可利用位于上述压缩码缓冲区段710的一码以快速获得此码所对应的影砖与存储器区段202的Z值相关资讯。于某些情况下,上述码是可令此图形处理机制706避免对上述Z缓冲区702进行存取动作,据此,Z缓冲区702的流量是可大幅度地减少。
运作范例(Sample Operation)
参考图8、图9,与图10,其是为根据本发明的一实施例所建构的一图形处理系统700的工作流程示意图。参考图7到图10所示,本实施例将详述于下。
参考图8,首先进行步骤804,本实施例开始进行系统初始的动作,此动作是进行一些初始化(initialization)的工作。更进一步而言,如图7所示,位于此压缩码缓冲区704的此压缩码缓冲区段710的所有码皆被设定为0 0 0 0 0 0 0 0以指明所有影砖皆处于初始状态。除此之外,其他元件如上述的图形处理机制706、Z缓冲区702,与区域储存区708亦可能需要进行初始化的工作。
于系统初始动作后,接着进行步骤808,上述的图形处理机制706进行一影格的图形处理动作,此影格是被称为目前影格(currentframe)以利后续讨论的便。为处理目前影格,接着进行步骤812,上述的图形处理机制706自一图中未示出的主机(host)接收一组属于此影格的有关于一影原的资讯。于一实作方式中,此影原是为三角形的形态,并且上述关于此影原的资讯是包含此三角形三个顶点的座标值。此影原是被称为目前影原(current primitive)以利后续讨论之便。
于自上述的主机获得资讯后进行步骤816,上述的图形处理机制706会计算上述的目前影原的大小,亦即上述的目前影原的面积,依此尺寸与一大型影原的临界值(threshold)相较,据以判断上述的目前影原是否为一大型影原。于系统初始时,上述的大型影原大小的临界值是已被设定为一初始值。此初始值是用以与第一个影格中的影原相较,然而,上述的大型影原临界值于每个影格处理完毕后皆须更新,且更新后的临界值是用以与下一影格的影原相较,稍后于进行步骤840时将会详加叙述此一动作。除了判定上述的目前影原是否为一大型影原以外,上述的图形处理机制706亦针对上述目前影原的面积加以分类。于一实作方式中,上述的分类动作是将目前影原编派至复数个篮框(bucket)的其中之一,其中,每个篮框是依分类而包含具有特定面积范围的影原。
接着进行步骤820,上述的图形处理机制706将上述目前影原对应(mapped)至一个或一个以上的影砖,换言的,上述的图形处理机制706判定有哪些影砖会被上述目前影原所对应。先前已述,一影原的描绘范围可能跨越多个影砖,据此,上述的目前影原是可能描绘至复数个影砖。于决定上述目前影原的描绘范围后,接着进行步骤824,上述的图形处理机制706会择定一个被上述目前影原所描绘的影砖。于步骤828中,上述的图形处理机制706对此被择定的影砖进行Z处理(z processing),此Z处理将于图9与图10的讨论中详加叙述。
于进行Z处理后,接着进行步骤832,上述的图形处理机制706找寻并判断上述的目前影原是否尚描绘至其他影砖;若找寻结果为真,则上述的图形处理机制706将重复进行步骤824以后的步骤,即选择下一影砖并且对其执行上述的Z处理;反之,若所有被上述的目前影原描绘至的影砖已皆处理完毕,则对于上述目前影原的处理业已完毕。接着上述的图形处理机制706将进行步骤836以判定上述目前影格中是否仍有未经处理的影原;若尚有影原未经处理,则上述的图形处理机制706将针对上述未经处理的影原重复步骤812以后的流程(步骤812至步骤836);若针对目前影格的处理工作皆已完毕,则上述的图形处理机制706将接着进行步骤840。
于步骤840中,上述的图形处理机制706将决定于下一影格中用以与影原比较之上述大型影原临界值。于一实作方式中,上述大型影原临界值是取决于上述区域储存区708的容量与目前影格中影原的面积大小。先前已述,当处理目前影格中的每个影原时,每个影原皆会被编派至上述复数个篮框之一。据此,当目前影原的所有影原皆被处理后,上述的所有影原亦以面积大小被分类完毕。于一实作方式中,上述的图形处理机制706将为下一影格决定一特定尺寸作为上述大型影原临界值,使得大于此一特定尺寸的已分类影原数目最接近但不超过上述区域储存区708的容量。例如,若上述区域储存区708的容量是为128笔纪录,则上述的图形处理机制706将择定一特定尺寸,于此目前影格中,其尺寸大于此一特定尺寸的影原数目最接近但不超过128。据上述的方式替下一影格择定此临界值的步骤是奠基于下一影格是与上述的目前影格相似的假设,而就绝大部分的情况而言,上述的假设是可成立的。
于决定下一影格的大型影原临界值后,上述的图形处理机制706将清除所有篮框以便供下一影格的分类步骤使用。接着,此流程将回到步骤808以处理下一影格,此流程(步骤808至步骤840)将持续重复以处理每一个影格。
如图8所示,上述的Z处理是被示于单一个步骤828当中。图9与图10将更近一步详细说明此步骤828。于一实作方式中,Z处理是包含两阶段(phase):
(1)获得并且处理Z值相关资讯;以及
(2)更新Z值相关资讯。第一阶段是示于图9中,且第二阶段示于图10中。
当进行Z处理时,一特定影格,一目前影原与一影砖已被择定。据此,如图9所示,首先进行步骤904,上述的图形处理机制706存取图7所示的压缩码缓冲区段710以获得一上述被择定影砖的相关码。如前所述,上述相关码是为四种形态之一,依据码的形态不同,上述的图形处理机制706的处理亦有所不同。
更精确地说,进行步骤908,上述的图形处理机制706判断所读取的码是否为第一形态码(亦即为0 0 0 0 0 0 0 0),若结果为真,则上述被择定影砖是处于初始状态。据此,上述的图形处理机制706即不须至相关的Z缓冲区段202获得相关的Z值相关资讯;接着进行步骤912,上述的图形处理机制706只须将一初始Z值设定到上述被择定影砖的每个像素即可。据此,上述的图形处理机制706不须产生任何Z缓冲区流量即可推导出上述被择定影砖内所有像素的Z值。
若步骤908的结果为非,则接着进行步骤916,上述的图形处理机制706判断所读取的码是否为第四形态码(亦即1 xxxxxxx),若结果为真,则上述被择定影砖是被一大型影原所包含。据此,上述的图形处理机制706即不须至相关的Z缓冲区段202获得相关的Z质相关资讯;接着进行步骤920,上述的图形处理机制706是自上述区域储存区708中的一纪录720取得一组压缩资讯,其中,此纪录720的位置是存在于上述第四形态码之后七个比特。于一实作方式中,储存于此纪录720的压缩资讯是为包含上述被择定影砖的大型影原的全域差分向量。利用第四方程与上述的全域差分向量,上述的图形处理机制706不须产生任何Z缓冲区流量即可推导出上述被择定影砖内所有像素的Z值,如步骤924。
若步骤916的结果为非,则接着进行步骤928,上述的图形处理机制706判断所读取的码是否为第三形态码(亦即1 1 1 1 1 1 11),若结果为真,则上述被择定影砖的Z值相关资讯是以非压缩的形态储存于上述Z缓冲区段202之中。据此,进行步骤932,上述的图形处理机制706从相关的Z缓冲区段202中读取被择定影砖的实际Z值相关资讯。
若步骤928的结果为非,则接着进行步骤936,上述的图形处理机制706判断所读取的码是否为第二形态码(亦即0 xxxxxxx),若结果为真,则上述被择定影砖的Z值相关资讯是以压缩的形态储存于上述Z缓冲区段202之中,同时,上述的图形处理机制706亦可从此码之后七个比特得知于上述Z缓冲区段202内有几组标头列204。据此,接着进行步骤940,上述的图形处理机制706从相关的Z缓冲区段202中读取被择定影砖压缩形态的Z值相关资讯。接着进行步骤944,利用已获得的Z值相关资讯,上述的图形处理机制706推导之上述被择定影砖的Z值。于一实作方式中,就推导Z值的过程中,上述的图形处理机制706可能需要处理一Z遮罩(如图5所示)以得知哪些像素未被任何影原所包含。就此类像素而言,须设定一初始Z值。除此之外,就推导Z值的过程中,上述的图形处理机制706亦可能需要处理一个或一个以上的影原遮罩以决定哪些像素被何影原所包含。若有多个影原遮罩,则所有上述的影原遮罩将可能需要组成一个多比特的整体影原遮罩,据此,则可建立像素对影原的对应关系,上述的图形处理机制706将可利用第四方程与上述影原的差分向量推导出任一像素的Z值。
依据上述具有不同形态的码,以执行上述步骤之一,上述的图形处理机制706是可推导出上述被择定影砖的目前Z值。接着可进行步骤948,上述的图形处理机制706是进行一Z测试程序(Z testingprocedure),此Z测试程序是比较一个或一个以上的目前Z值与上述目前影原的Z值,以决定何者须被更新。一种实作上述Z测试程序的方式亦须推导计算目前影原的差分向量。若上述被择定影砖的任何像素的Z值须被更新,则上述的图形处理机制706是接着进行图10所示的更新程序。
于此更新程序中,首先进行步骤1004,上述的图形处理机制706将决定此目前影原是否为一大型影原,而上述结果已经于图8所示的步骤816得出,故直接沿用上述结果。若此结果为真,则接着进行步骤1008,上述的图形处理机制706判断此目前影原是否包含整个被择定的影砖,亦即判断被择定影砖的每个像素的Z值是否皆由此目前影原所决定。
若上述的结果为真,接着进行步骤1012,上述的图形处理机制706判断此目前影原的压缩资讯是否已经储存于上述区域储存区708内。于一实作方式中,上述目前影原的压缩资讯是包含此目前影原的全域差分向量。因此目前影原是为一大型影原,故此目前影原是可能完全包含复数个影砖,据此,此目前影原的全域差分向量可能已于处理其他影砖时先储存于上述区域储存区708内。若此目前影原的全域差分向量已先储存于上述区域储存区708内,则不须再度储存此项资讯,据此,上述的图形处理机制706是接着进行步骤1024。
若上述区域储存区708内并无此目前影原的全域差分向量,则接着进行步骤1016,上述的图形处理机制706判断上述区域储存区708内是否还有任何一笔空的纪录720。若上述结果为真,则接着进行步骤1020,上述的图形处理机制706将此目前影原的全域差分向量储存于一笔空白纪录720中。接着,进行步骤1024,上述的图形处理机制706将相对应于此目前影砖的压缩码缓冲区段710的码更新为一第四形态码,以指出此目前影砖是为一大型影原所完全包含。再者,此码之后七比特将指出上述此目前影原的全域差分向量是储存于哪个压缩码缓冲区段710。此目前影砖的Z值相关资讯是依据上述程序被更新。请注意上述程序并不须存取相对应的Z缓冲区段202,故不产生任何Z缓冲区的流量。
于一实作方式中,若此目前影原并非一大型影原,亦或此目前影原不包括此目前影砖,亦或上述的区域储存区已无任何空白纪录,则上述的图形处理机制706需要将Z值相关资讯储存于此目前影砖所相对应的Z缓冲区段202内。接着,进行步骤1028,上述的图形处理机制706判断上述的Z值相关资讯是否以非压缩的形态储存,而此判断过程是依据图9所示的步骤928所决定,故可沿用至此。若其结果为真,则接着进行步骤1032,上述的图形处理机制706是储存非压缩形态的Z值相关资讯于此目前影砖所相对应的Z缓冲区段202内,亦即将实际Z值储存于相对应的Z缓冲区段202。上述目前影砖的Z处理至此结束。
若上述步骤1028中,上述的图形处理机制706对于上述的Z值相关资讯是以非压缩的形态储存的判断为否,则接着进行步骤1036,上述的图形处理机制706将更进一步判断当此目前影原描绘至上述被择定的影砖后,描绘影原的总数是否超过原先设定的影原上限。先前已述,当有某特定数量以上的影原描绘至同一影砖时,于相对应的Z缓冲区段202储存实际Z值较采用差分Z压缩法来得有效率。于步骤1036中,上述的图形处理机制706会进行上述的影原上限的检查动作(亦即检查于上述Z缓冲区段202的差分向量的数量,或是检查标头列中的整数n的值)。若影原的数量超过上述的影原上限,则接着进行步骤1040,上述的图形处理机制706将上述的Z值相关资讯以非压缩的形态(亦即实际Z值)储存于上述Z缓冲区段202中。接着,进行步骤1044,上述的图形处理机制706将相对应的压缩码区段710内的码设定为第三形态码,用以指明储存于上述Z缓冲区段202中的Z值相关资讯是以非压缩的形态储存于上述Z缓冲区段202中。
若上述步骤1036的检查动作结果为否,则接着进行步骤1048,上述的图形处理机制706将压缩形态的Z值相关资讯储存于上述被择定影砖相对应的Z缓冲区段202中。上述步骤可能牵涉到Z遮罩的更新(如图5所示的范例)以指明上述被择定影砖中有哪些像素未被任何影原所包含。上述步骤亦可能牵涉到新差分向量(由上述的目前影原推导出的差分向量)的增加,据此可能需要增加一新纪录与更新标头列中的整数n的值。除此之外,上述步骤尚可能需要加入与更新一个或一个以上的影原遮罩以指明哪些像素是被哪些影原与相关的差分向量所包含。若加入一新的影原遮罩,上述步骤即可能需要更新一个或一个以上的影原遮罩(如上述的比特包裹的方式)。上述更新压缩形态的Z值相关资讯的过程更可能需要移除多余不必要的差分向量。例如,若一影原遮罩或于比特包裹法下的多个影原遮罩指出一差分向量是不包括任何像素,则上述的差分向量须自Z缓冲区段202中删除。以上所述的各种可能做法是于此步骤中加以实作。
接着进行步骤1052,上述的图形处理机制706更新上述目前影砖所对应的压缩码缓冲区段710。若上述压缩码缓冲区段710中的码是非第二形态码,则上述步骤需将此码更新为第二形态码,并且上述步骤须更新此码之后七比特以便指明须自上述Z缓冲区段202读取多少笔纪录。于上述码被更新完毕后,关于上述目前影砖的Z处理是完全结束。
根据以上述的方式,Z处理是为一非常节省Z缓冲区流量的过程,所有可能产生Z缓冲区流量的处皆已避免(例如处理大型影原以及位于初始状态的影砖)。甚至于当存取Z缓冲区时,流量皆是因Z值相关资讯为压缩形态(当压缩形态为最经济时)的缘故而减至最少。透过上述方式以最小化Z缓冲区流量,系统的整体性能表现会显著提升。
显然地,依照上面实施例中的描述,本发明可能有许多的修正与差异。因此需要在其附加的权利要求项的范围内加以理解,除了上述详细的描述外,本发明还可以广泛地在其他的实施例中施行。上述仅为本发明的较佳实施例而已,并非用以限定本发明的申请专利范围;凡其它未脱离本发明所揭示的精神下所完成的等效改变或修饰,均应包含在本发明的申请专利范围内。
Claims (19)
1.一减少Z缓冲区流量的方法,其特征在于,该减少Z缓冲区流量的方法包含:
接收一目前影原的资讯;
将该目前影原描绘至一影砖,且该影砖具有一相对应于该影砖的缓冲区段以储存该影砖的资讯;
判断该影砖是否被一大型影原所完全包含;以及
当该判断结果是为该影砖被一大型影原所完全包含时,自一区域储存区而非自该相对应的缓冲区段获得该影砖的资讯,由此以减少Z缓冲区流量。
2.如权利要求1所述的减少Z缓冲区流量的方法,其特征在于,其中上述的判断动作还包含:
处理一相对应于该影砖的码以判断该影砖是否被一大型影原所完全包含。
3.如权利要求1所述的减少Z缓冲区流量的方法,其特征在于,其中上述的自该区域储存区所获得的该影砖的资讯包含一压缩形态的资讯。
4.如权利要求3所述的减少Z缓冲区流量的方法,其特征在于,其中上述的影砖包含一个或一个以上的像素,且该压缩形态的资讯是可用于推导该影砖中至少一个像素的Z值。
5.如权利要求3所述的减少Z缓冲区流量的方法,其特征在于,其中上述的压缩形态的资讯是包含根据差分Z压缩法所推导而得的Z值相关资讯。
6.如权利要求1所述的减少Z缓冲区流量的方法,其特征在于,该减少Z缓冲区流量的方法还包含:
判断该影砖是否处于初始状态;以及
当判断结果是为该影砖处于初始状态时,存取该相对应的缓冲区段。
7.如权利要求6所述的减少Z缓冲区流量的方法,其特征在于,其中上述的关于该影砖是否处于初始状态的判断动作还包含:
处理一相对应于该影砖的码以判定该码是否指出该影砖是处于初始状态。
8.如权利要求6所述的减少Z缓冲区流量的方法,其特征在于,其中上述的影砖包含一个或一个以上像素,且该减少Z缓冲区流量的方法还包含:
当该关于该影砖是否处于初始状态的判断结果是为真时,设定一初始Z值至该影砖的一个或一个以上的像素。
9.如权利要求1所述的减少Z缓冲区流量的方法,其特征在于,该减少Z缓冲区流量的方法还包含:
当该判断结果是为该影砖是未被一大型影原所完全包含时,自该相对应的缓冲区段获得该影砖的资讯。
10.如权利要求1所述的减少Z缓冲区流量的方法,其特征在于,该减少Z缓冲区流量的方法还包含:
判断该目前影原是否为一大型影原;
判断该目前影原是否完全包含该影砖;以及
当该判断结果是为该目前影原确是为一大型影原且该目前影原完全包含该影砖时,将一该影砖的更新资讯储存于该区域储存区而非该相对应的缓冲区段中。
11.如权利要求10所述的减少Z缓冲区流量的方法,其特征在于,该减少Z缓冲区流量的方法还包含:
更新一相对应于该影砖的码以指明该影砖被一大型影原完全包含。
12.如权利要求10所述的减少Z缓冲区流量的方法,其特征在于,该减少Z缓冲区流量的方法还包含:
当该判断结果是为该目前影原是非一大型影原,或该目前影原未完全包含该影砖,或该目前影原既是非一大型影原且亦未完全包含该影砖时,则将该影砖的更新资讯储存于该相对应的缓冲区段中。
13.如权利要求10所述的减少Z缓冲区流量的方法,其特征在于,其中上述的目前影原是属于一目前影格,且该减少Z缓冲区流量的方法还包含:
根据该目前影格内的影原的尺寸决定用以界定一后续影格中的大型影原的一临界值。
14.一减少Z缓冲区流量的图形处理机制,其特征在于,该减少Z缓冲区流量的图形处理机制包含:
一用以接收一目前影原的资讯的机制;
一用以将该目前影原描绘至一影砖的机制,该影砖具有一相对应于该影砖的缓冲区段以储存该影砖的资讯;
一用以判断该影砖是否被一大型影原所完全包含的机制;以及
一机制以当该判断结果是为该影砖被一大型影原所完全包含时,自一区域储存区而非该相对应的缓冲区段获得该影砖的资讯,藉此以减少Z缓冲区流量。
15.如权利要求14所述的减少Z缓冲区流量的图形处理机制,其特征在于,其中上述的用以判断该影砖是否被一大型影原所完全包含的机制还包含:
一机制以处理一相对应于该影砖的码并据以判断该影砖是否被一个大型影原所完全包含。
16.如权利要求14所述的减少Z缓冲区流量的图形处理机制,其特征在于,其中上述的自该区域储存区所获得的该影砖的资讯包含一压缩形态的资讯。
17.如权利要求14所述的减少Z缓冲区流量的图形处理机制,其特征在于,该减少Z缓冲区流量的图形处理机制还包含:
一判断该影砖是否处于初始状态的机制;以及
一机制以当该判断结果是为该影砖确是处于初始状态时存取该相对应的缓冲区段。
18.如权利要求14所述的减少Z缓冲区流量的图形处理机制,其特征在于,该减少Z缓冲区流量的图形处理机制还包含:
一机制以当该判断结果是为于该影砖是未被一大型影原所完全包含时,自该相对应的缓冲区段获得该影砖的资讯。
19.如权利要求14所述的减少Z缓冲区流量的图形处理机制,其特征在于,该减少Z缓冲区流量的图形处理机制还包含:
一判断该目前影原是否为一大型影原的机制;
一判断该目前影原是否完全包含该影砖的机制;以及
一机制以当该判断结果是为该目前影原确是为一大型影原且该目前影原完全包含该影砖时,将一该影砖的更新资讯储存于该区域储存区而非该相对应的缓冲区段中。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/648,496 | 2003-08-25 | ||
US10/648,496 US7218317B2 (en) | 2003-08-25 | 2003-08-25 | Mechanism for reducing Z buffer traffic in three-dimensional graphics processing |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1560797A true CN1560797A (zh) | 2005-01-05 |
CN100378762C CN100378762C (zh) | 2008-04-02 |
Family
ID=34273319
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2004100577053A Expired - Lifetime CN100378762C (zh) | 2003-08-25 | 2004-08-11 | 减少z缓冲区流量的三维图形处理装置 |
Country Status (3)
Country | Link |
---|---|
US (1) | US7218317B2 (zh) |
CN (1) | CN100378762C (zh) |
TW (1) | TWI297469B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102208112A (zh) * | 2011-05-25 | 2011-10-05 | 威盛电子股份有限公司 | 景深消隐方法、三维图形处理方法及其装置 |
CN103314393A (zh) * | 2012-01-13 | 2013-09-18 | 松下电器产业株式会社 | 图像生成装置、图像生成方法、图像生成程序及集成电路 |
CN109509244A (zh) * | 2017-09-12 | 2019-03-22 | 三星电子株式会社 | 一种执行路径渲染的图形处理器及其操作方法 |
Families Citing this family (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8269769B1 (en) * | 2003-12-22 | 2012-09-18 | Nvidia Corporation | Occlusion prediction compression system and method |
US8854364B1 (en) | 2003-12-22 | 2014-10-07 | Nvidia Corporation | Tight depth range occlusion prediction system and method |
US8390619B1 (en) | 2003-12-22 | 2013-03-05 | Nvidia Corporation | Occlusion prediction graphics processing system and method |
US20060209065A1 (en) * | 2004-12-08 | 2006-09-21 | Xgi Technology Inc. (Cayman) | Method and apparatus for occlusion culling of graphic objects |
US9123173B2 (en) * | 2005-12-15 | 2015-09-01 | Nvidia Corporation | Method for rasterizing non-rectangular tile groups in a raster stage of a graphics pipeline |
US8878849B2 (en) * | 2007-12-14 | 2014-11-04 | Nvidia Corporation | Horizon split ambient occlusion |
KR101443221B1 (ko) * | 2008-01-18 | 2014-09-24 | 삼성전자주식회사 | 렌더링 장치 및 방법 |
US8553041B1 (en) * | 2008-09-10 | 2013-10-08 | Nvidia Corporation | System and method for structuring an A-buffer to support multi-sample anti-aliasing |
US8130223B1 (en) | 2008-09-10 | 2012-03-06 | Nvidia Corporation | System and method for structuring an A-buffer to support multi-sample anti-aliasing |
US8654135B1 (en) | 2008-09-10 | 2014-02-18 | Nvidia Corporation | A-Buffer compression for different compression formats |
US10089774B2 (en) * | 2011-11-16 | 2018-10-02 | Qualcomm Incorporated | Tessellation in tile-based rendering |
US9330475B2 (en) | 2012-05-01 | 2016-05-03 | Qualcomm Incorporated | Color buffer and depth buffer compression |
US9196014B2 (en) | 2012-10-22 | 2015-11-24 | Industrial Technology Research Institute | Buffer clearing apparatus and method for computer graphics |
US10438314B2 (en) * | 2012-10-26 | 2019-10-08 | Nvidia Corporation | Two-pass cache tile processing for visibility testing in a tile-based architecture |
US10008029B2 (en) | 2013-05-31 | 2018-06-26 | Nvidia Corporation | Updating depth related graphics data |
US9418400B2 (en) | 2013-06-18 | 2016-08-16 | Nvidia Corporation | Method and system for rendering simulated depth-of-field visual effect |
GB2520365B (en) | 2013-12-13 | 2015-12-09 | Imagination Tech Ltd | Primitive processing in a graphics processing system |
US8952963B1 (en) | 2014-02-13 | 2015-02-10 | Raycast Systems, Inc. | Computer hardware architecture and data structures for a grid traversal unit to support incoherent ray traversal |
GB2526598B (en) * | 2014-05-29 | 2018-11-28 | Imagination Tech Ltd | Allocation of primitives to primitive blocks |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5682441A (en) * | 1995-11-08 | 1997-10-28 | Storm Technology, Inc. | Method and format for storing and selectively retrieving image data |
US6052125A (en) * | 1998-01-07 | 2000-04-18 | Evans & Sutherland Computer Corporation | Method for reducing the rendering load for high depth complexity scenes on a computer graphics display |
US6362818B1 (en) * | 1998-01-07 | 2002-03-26 | Evans & Sutherland Computer Corporation | System and method for reducing the rendering load for high depth complexity scenes on a computer graphics display |
JPH11328438A (ja) * | 1998-03-18 | 1999-11-30 | Sun Microsyst Inc | 高効率浮動小数点zバッファリングの方法および装置 |
US6492991B1 (en) * | 1998-08-28 | 2002-12-10 | Ati International Srl | Method and apparatus for controlling compressed Z information in a video graphics system |
US6552723B1 (en) * | 1998-08-20 | 2003-04-22 | Apple Computer, Inc. | System, apparatus and method for spatially sorting image data in a three-dimensional graphics pipeline |
US6380935B1 (en) * | 1999-03-17 | 2002-04-30 | Nvidia Corporation | circuit and method for processing render commands in a tile-based graphics system |
JP2000268191A (ja) * | 1999-03-17 | 2000-09-29 | Hitachi Ltd | 隠面処理方法 |
US6473082B1 (en) * | 1999-05-18 | 2002-10-29 | S3 Graphics Co., Ltd. | System and method for implementing a two-layer z-range buffer |
US6421053B1 (en) * | 1999-05-24 | 2002-07-16 | International Business Machines Corporation | Block rendering method for a graphics subsystem |
US6411295B1 (en) * | 1999-11-29 | 2002-06-25 | S3 Graphics Co., Ltd. | Apparatus and method for Z-buffer compression |
US6819321B1 (en) * | 2000-03-31 | 2004-11-16 | Intel Corporation | Method and apparatus for processing 2D operations in a tiled graphics architecture |
US6580427B1 (en) * | 2000-06-30 | 2003-06-17 | Intel Corporation | Z-compression mechanism |
US6724391B1 (en) * | 2000-06-30 | 2004-04-20 | Intel Corporation | Mechanism for implementing Z-compression transparently |
US6900800B2 (en) * | 2001-02-27 | 2005-05-31 | David Robert Baldwin | Tile relative origin for plane equations |
US6914610B2 (en) * | 2001-05-18 | 2005-07-05 | Sun Microsystems, Inc. | Graphics primitive size estimation and subdivision for use with a texture accumulation buffer |
US6999076B2 (en) * | 2001-10-29 | 2006-02-14 | Ati Technologies, Inc. | System, method, and apparatus for early culling |
-
2003
- 2003-08-25 US US10/648,496 patent/US7218317B2/en active Active
-
2004
- 2004-07-16 TW TW093121255A patent/TWI297469B/zh active
- 2004-08-11 CN CNB2004100577053A patent/CN100378762C/zh not_active Expired - Lifetime
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102208112A (zh) * | 2011-05-25 | 2011-10-05 | 威盛电子股份有限公司 | 景深消隐方法、三维图形处理方法及其装置 |
CN102208112B (zh) * | 2011-05-25 | 2015-08-05 | 威盛电子股份有限公司 | 景深消隐方法、三维图形处理方法及其装置 |
CN103314393A (zh) * | 2012-01-13 | 2013-09-18 | 松下电器产业株式会社 | 图像生成装置、图像生成方法、图像生成程序及集成电路 |
CN103314393B (zh) * | 2012-01-13 | 2016-06-15 | 松下知识产权经营株式会社 | 图像生成装置、图像生成方法及集成电路 |
CN109509244A (zh) * | 2017-09-12 | 2019-03-22 | 三星电子株式会社 | 一种执行路径渲染的图形处理器及其操作方法 |
CN109509244B (zh) * | 2017-09-12 | 2023-11-14 | 三星电子株式会社 | 一种执行路径渲染的图形处理器及其操作方法 |
Also Published As
Publication number | Publication date |
---|---|
CN100378762C (zh) | 2008-04-02 |
TWI297469B (en) | 2008-06-01 |
US7218317B2 (en) | 2007-05-15 |
US20050057564A1 (en) | 2005-03-17 |
TW200426709A (en) | 2004-12-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1560797A (zh) | 减少z缓冲区流量的三维图形处理机制 | |
CN1534511A (zh) | 视窗和背景图形接口 | |
EP2464093B1 (en) | Image file generation device, image processing device, image file generation method, and image processing method | |
CN1252648C (zh) | 三维图象绘制方法 | |
CN1320816C (zh) | 由一组投影仪形成一个集群的方法 | |
CN1138234C (zh) | 图象生成的方法与设备 | |
CN1308895C (zh) | 用于生成图形数据的可视表示和数字文档处理的系统和方法 | |
CN1288603C (zh) | 图像处理器及其组件、和渲染方法 | |
CN1893564A (zh) | 图像特效设备、图形处理器和记录介质 | |
CN1969299A (zh) | 图像生成装置及图像生成方法 | |
CN1655192A (zh) | 基于深度图像的三维图形数据的高速显像的装置和方法 | |
CN1534476A (zh) | 矢量图形的标记语言和对象模型 | |
CN1707522A (zh) | 使用边缘数据位元遮罩的色彩压缩系统与方法 | |
CN1162832C (zh) | 图像显示装置 | |
CN1959803A (zh) | 动态图像显示装置和动态图像显示方法 | |
CN1648948A (zh) | 将位样型或比特流中数据压缩的方法 | |
CN1905000A (zh) | 用于高效图像旋转的方法和装置 | |
CN1267859C (zh) | 用于在二维屏幕上绘制图像的绘制方法 | |
CN1496535A (zh) | 图像处理装置和图像处理方法、存储介质及计算机程序 | |
CN1838725A (zh) | 记录数据记录装置和记录数据记录方法 | |
CN1744684A (zh) | 视频显示控制设备和视频显示控制方法 | |
CN101061514A (zh) | 可见性数据压缩方法、解压缩方法、解码器、压缩系统 | |
CN1282128C (zh) | 图像处理装置及其方法 | |
CN1266582C (zh) | 大视图分块缓冲显示方法 | |
CN1442996A (zh) | 数码相机、图像处理装置、图像处理方法、图像处理系统及程序 |
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: 20080402 |
|
CX01 | Expiry of patent term |