用于减少图形绘示系统的记忆体流量的设备及其方法

文档序号:6423891阅读:144来源:国知局
专利名称:用于减少图形绘示系统的记忆体流量的设备及其方法
技术领域
本发明是有关于一种电脑图形的产生与显示,且特别是有关于一种在产生和显示图形影像步骤中减少对z缓冲区的必要存取的电脑图形显示方法。
背景技术
电脑图形显示系统是允许图形影像显示在像素输出设备。请参阅图1所示,是简单绘示一系统的半概要方区块的示意图,该系统包括一处理器10、一框架缓冲器12、显示监视器14与显示控制器16。显示监视器14包括用于显示多数个像素的一萤光幕。在电子萤幕中,像素一般是最小的可定址的元素。在萤光幕上单独的像素是被定址于x和y座标中,类似于将点定址在图形或矩阵中的方式。框架缓冲器12是存在主记忆体18中,并储存对应于像素数字地图的一图形影像。像素数字地图可藉由像方格(或像矩阵)的像素阵列来表示,其中每一像素是被赋予颜色和明暗值。
当设计显示系统时,考虑肉眼是相当重要的。肉眼有三类型光感受细胞,其是被称之为锥体。三类型锥体中的每一个对应到不同波长的光。相应的,具有不同波长内容的光是被感受为不同颜色的光。彩色显示系统长期存在人类如何感受工作的知识;然而,在电子系统上显示颜色的方式则还在继续发展。
一个基本的彩色显示系统使用一个RGB颜色系统。在这样系统中,R对应于一个红颜色来源、G对应于一个绿色来源以及B对应于一个蓝色颜色来源。藉由选择RGB颜色来源的波长内容,可以涵盖整个颜色的范围。因此,藉由混合或结合不同数量的红色、绿色或蓝色来源,可达到一大范围的颜色。从整个颜色的范围,其以数学来表示一颜色至一颜色集是如此重要的。这样的数学表示法称颜色空间。
RGB是一叠加性颜色系统,其中是以三原色红色、绿色和蓝色的加总来形成希望的颜色。在一个典型的RGB彩色空间中,每一组的范围是为0至255。当三个来源为零时,其结果颜色是黑色;当三个来源是255时,其结果颜色是白色。
对于RGB颜色系统而言,其是可能使用RGB彩色空间。然而,其它彩色空间也可利用包括YIQ、YUV、YCbCr和CMYK。数学转换可能用来将一彩色空间转换至另一个。在目前特殊兴趣的发明上,不但YCbCr彩色空间常用在广播和电视系统上,而且也用于电脑图形的实施。
历史上,不同的彩色空间为不同的应用作演变。在每个案子中,彩色空间的被选择也许不再是可适用的原因。在一个特殊彩色空间上,由于数学元素可更加简单或更加快速的被处理,也许可做出一个选择。而由于减少记忆体体需求或减少在数位式汇流排(即总线,以下均称为汇流排)上的频宽,也许可做出一个选择。
关于YCbCr彩色空间,其发展如部份ITU-R BT.601中世界数位式组成影视标准,并被使用于电视的传输。YCbCr是代表YUV彩色空间中对称和偏差的层级,其中Y代表辉度(或亮度)、U代表颜色,以及V代表饱和值。在YCbCr彩色空间中,RGB彩色空间被分离成亮度部份,Y,以及二个色差部份,Cb和Cr。在历史上,选择YCbCr超过RGB的原因是减少减少储存和频宽的需求。
在开发YCbCr彩色空间时,其是考虑到肉眼对亮度的改变比对颜色的改变要来的敏感。工程师发现辉度或亮度的百分之60到70是被视为“绿色”,相应地,在色差部份,Cb和Cr,亮度资讯是可从蓝色和红色中被移除。
为了在RGB格式中产生相同的颜色,所有三颜色组成需具有相等的频宽。此时则需要更多储存空间和频宽。而且,处理在RGB空间中的一个影像是更加复杂的,因为任一像素的颜色的改变都必须去读取所有的RGB值、执行演算,以及然后储存。但是,颜色资讯被储存在强度与颜色格式中,所以一些处理步骤可能更快。结果是,Cb和Cr提供颜色的色调与饱和资讯,且Y提供颜色的亮度资讯。Y的范围被定义在16至235,而Cb和Cr的范围被定义在16至240,且128是等于零。由于肉眼对Cb和Cr是较不敏感的,工程师认为对于Cr和Cb,不需以和Y一样高的比率传送其资讯(即数据)。且其仅需较少储存空间和频宽,并减少设计成本。
因此,储存和频宽是设计时需考虑的地方,所以许多现代数位式图形系统都较喜欢YCbCr彩色空间。在YCbCr彩色空间之内,其包括各种的格式包括有4:4:4、4:2:2、4:1:1和4:2:0格式。这些格式是提供具有某些交替的不同等级的压缩。特别是,4:2:0格式提供某些压缩优点但是因为这样的执行方式,所以,记忆体频宽将成为一个问题。典型显示系统在执行4:2:0格式时是使用储存元件(例如,静态随机存取记忆体(Static RandomAccess Memory,简称SRAM)或是动态随机存取记忆体(Dynamic RandomAccess Memory,简称DRAM)),其中,Y、Cb和Cr资讯被储存记忆体中不同的分页。而且,典型的系统检索资讯用于二个像素时,其是一次检索Y资讯的二个项目,和每个Cb和Cr资讯的一个项目。因而,在现有习知系统中,检索一对像素的颜色资讯时,其是要求三分页。令人满意的是,因此提供改善过记忆体频宽的电脑显示系统。更令人满意的是,在显示一影像时可减少需求记忆体分页数量的电脑显示系统。
请继续参阅图1所示,当一个新图形影像将被显示时,处理器10计算和更新在框架缓冲器12中像素值。在显示步骤期间,显示控制器16作为框架缓冲器12与显示监视器14间的一个介面,其是藉由取得在框架缓冲器12中的像素值与将他们转换成为用于绘示在显示监视器14的影视信号。
在处理一个三维图形目标时,经常将目标的深度属性称之为z-值(z-value),且其是被考虑更新所有在框架缓冲器12中的像素值。考虑如果新目标被处理是配置在已显示目标后边且部份地遮掩,只有新目标可看见的部份应被显示。但如果新目标被已显示目标完全地遮掩,框架缓冲器12则不必要更新,且新目标将不被绘示在显示监视器14。
三维目标经常藉由一顶点集合来定义多边形表面。每一顶点由对应于抽象X-、Y-和Z-轴的x、y和z维度来定义。著名地,X-和Y-轴定义一投影平面,Z-轴则代表到投影平面的一个距离。因此,z座标值表示由具体x和y座标所定义出的一目标在像素区的深度。一般来说,它代表从观测点到人观察显示监视器14的一个抽象距离的一个距离。
请进一步来参阅图1所示,z缓冲区20被配置储存用于每一像素的z-值,即每一像素的深度值。用这些z-值,可以执行一个三维目标的深度分析。这分析经常被称为一个隐藏面移除步骤。由于隐藏面不会被绘示在显示监视器14,他们可能被考虑移除。例如,当一个新目标移动进入投影平面显示部份时,即判断新目标是否是可看见的,以及是否应该被显示,或新目标是否被在投影平面的已显示目标所掩藏而不需要显示。现有习知系统一般是为根据像素对像素来判断新目标是否应该被显示。因而,对被绘示的每一像素,其是藉由X、Y座标以及新目标的深度值(例如z-值)与现在以显示目标的深度值(例如z-值)的比较来定义。
例如,如果比较后表示新像素需被绘示于在z缓冲区20中的旧像素前面(例如新z-值比旧z-值少)时,则以新z-值替换z-值,且颜色系统(例如RBG或YCbCr)中,框架缓冲器12内旧像素显示的地方将被用于新像素的参数所覆写。相反地,如果比较后表示新像素配置在z缓冲区20中的旧像素后面(例如新z-值比旧z-值多)时,其将被掩藏且不需要被显示。在这个情况下,z-值被保留在z缓冲区,而新z-值被摈除。其是表示继续显示旧像素,且不会被新像素替换。
上述现有习知步骤存在有以下几个缺点。首先,对时间和记忆体频宽来说,将z缓冲区20中每一像素初始化成常数值(一般是背景的数值)是昂贵的。此外,像素对像素分析在目标的显示期间需要对读取z缓冲区以对旧像素和新像素的z-值作比较。由于z缓冲区很大且无法被储存在晶片中,因此需要一外在储存器来作存取,而值得注意的是z-数值比较将降低绘示步骤的速度。另外,在执行像素对像素比较时,计算周期是相当耗时的。相对地,需要电脑图形产生和显示系统和方法,其中执行隐藏面移除时将耗费较少计算周期和记忆体频宽。

发明内容
本发明的目的在于,本发明特别定位于减少上述与现有习知相关的缺点。特别的是,本发明包括在电脑图形显示系统之内被使用来消除z缓冲区初始化的设备。另外,通过对本发明的用途,此系统以像素群为单位执行z-比较,而不是计算密集的像素对像素比较,以减少执行影像绘示时z缓冲区存取的次数,从而更加适于实用。
本发明的目的及解决其技术问题是采用以下的技术方案来实现的。依据本发明提出的一种绘示图形基本资料至框架缓冲器的方法,适用于显示之用,该框架缓冲器被分成大小相等的多数个像素区块,每一该像素区块具有至少二深度层,该框架缓冲器具有相对应用于该框架缓冲器中每一像素之一深度值的一z缓冲区,该深度值是用以判断显示时每一该像素的可见性,该方法包括判断在该框架缓冲器内的该些像素区块受到该图形基本资料影响与否;对每一受影响区块,调整每一受影响区块的深度层,判断用于每一受影响区块的该图形基本资料的任一像素与每一受影响区块的任一深度层相交与否,而将每一受影响区块分成大小相等的多数个子区块,每一该子区块具有一子区块遮罩,该子区块遮罩包括用于每一该子区块的一位元;以及如果用于每一受影响区块的该图形基本资料的任一像素与任一深度层相交时,即设定一旗标来表示该z缓冲区要求一次区块更新,以及形成一像素遮罩来表示在每一受影响区块内的该些像素为相交像素,并且合并该子区块遮罩与该像素遮罩来判断哪些子区块具有该相交像素;再次判断在该框架缓冲器内的该些区块受到该图形基本资料影响与否;以及对每一受影响区块,调整每一受影响区块的深度层,判断每一受影响区块的更新旗标是否被设定,如果该更新旗标未被设定,则根据被调整的深度层将可见像素绘示至该框架缓冲器;如果该更新旗标被设定,则根据该子区块遮罩对被影响的每一受影响区块的每一该些子区块判断每一该子区块受到该些相交像素的影响与否;以及当该子区块受到影响时,则读取该z缓冲区、调整该相交像素的可见性项目与将任一可见像素绘示至该框架缓冲器。
本发明的目的及解决其技术问题还可采用以下技术措施进一步实现。
前述的绘示图形基本资料至框架缓冲器的方法,其中所述的每一受影响区块是具有一前深度层与一后深度层,并且在每一受影响区块中,该前深度层与该后深度层的该深度值各具有其范围,并具有最小值与最大值,且最小值是为较接近值;以及其中该图形基本资料具有用于在每一受影响区块中的像素的该深度值的范围,该些像素是受该图形基本资料所影响,该图形基本资料的范围具有最小值与最大值。
前述的绘示图形基本资料至框架缓冲器的方法,其中一遮罩是与该区块有关,该遮罩描述在每一区块中的哪些像素是属于该前深度层与该后深度层。
前述的绘示图形基本资料至框架缓冲器的方法,其中一遮罩是与该图形基本资料有关,该遮罩描述在每一区块中的哪些像素是受该图形基本资料所影响。
前述的绘示图形基本资料至框架缓冲器的方法,其中在每一受影响区块中受该图形基本资料影响的该些像素是与该前深度层及该后深度层均相交;其中该像素遮罩是表示在每一受影响区块中全部受影响的该些像素为该些相交像素;其中该前深度层与该后深度层的该深度值均被调整至具有一范围,该范围介于(i)该图形基本资料的最小值与该前深度层最小值之间的最小值以及(ii)该图形基本资料的最大值与该后深度层最大值之间的最大值,且包括该前深度层、该后深度层与在每一受影响区块中受该图形基本资料所影响的该些像素。
前述的绘示图形基本资料至框架缓冲器的方法,其中在该区块中受该图形基本资料所影响的该些像素是与该前深度层相交而非该后深度层;其中该像素遮罩是表示该前深度层的哪些像素为相交像素;其中若在每一受影响区块中受影响的该些像素是全部涵盖该区块中的该后深度层,该前深度层与该后深度层的该深度值的范围则被调整介于(i)该图形基本资料的最小值与该前深度层最小值之间的最小值以及(ii)该图形基本资料的最大值与该前深度层最大值之间的最大值,且包括该前深度层的像素与在每一受影响区块中受该图形基本资料影响的该些像素;其中若在每一受影响区块中受影响的该些像素非全部涵盖该区块中的该后深度层,该前深度层的该深度值的范围则被调整介于(i)该图形基本资料的最小值与该前深度层最小值之间的最小值,(ii)该图形基本资料的最大值与该前深度层的最大值之间的最大值,用以包含在该前深度层中受该图形基本资料影响的所有像素;以及该后深度层的该深度值的范围未改变且仅包括未受该图形基本资料影响的该些像素所涵盖的像素。
前述绘示图形基本资料至框架缓冲器的方法,其中在每一区块中的受该图形基本资料影响的该些像素是与该后深度层相交,而非该前深度层,并且该前深度层非完全涵盖受该图形基本资料影响的该些像素;其中该像素遮罩是表示该后深度层的哪些像素为相交像素;其中该后深度层被调整的范围是介于(i)该图形基本资料的最小值与该后深度层最小值之间的最小值,(ii)该图形基本资料的最大值与该后深度层的最大值之间的最大值,用以包含在该后深度层中受该图形基本资料所影响的所有像素;以及其中该前深度层的范围未改变。
本发明的目的及解决其技术问题还采用以下的技术方案来实现。依据本发明提出的一种图形绘示设备,其包括一框架缓冲器,用于储存多数个像素,该框架缓冲器被分成大小相等的多数个像素区块,每一该些像素区块被分成大小相等的多数个子区块;一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缓冲区。图形处理器被配置作为(i)判断区块中的像素是否受图形基本资料影响以及区块中的像素的深度值是否受图形基本资料影响,然后再据以设定第一暂存器的区域;(ii)判断区块中受图形基本料影响的像素是否相交前深度层、后深度层或两层;(iii)如果为了区块必须读取z缓冲区时,即设定一旗标;(iv)根据区块中被图形基本资料影响的像素调整z范围缓冲区中前和后深度层的范围及受影响像素的深度值范围;(v)如果旗标未设定,根据所调整的前和后深度层绘示可看见的像素至框架缓冲器;(vi)如果旗标已设定,判断在区块中哪一个像素需要对z缓冲区作读取,且根据相交判断来设定第二暂存器中的区域,其中相交判断是为判断区块中的哪个子区块需要z缓冲区被读取及相应地设定z范围缓冲区的区域,而读取z缓冲区是为获得子区块的深度值,且根据所获得子区块的深度值绘示可看见的像素至框架缓冲器。
如此一来,本发明的读取操作显著地减少了某些z-范围缓冲区演算法的执行。而且,在本发明中将不会有冲突,且z-缓冲区操作被消除。很多绘示演算也会被消除。
这样,被通过的实施,冲突不是存在在之内的地方子区块,经由上述可知,本发明是一种绘示图形基本资料的系统与方法。其是可用两个通行方法来达成,在第一通行中,对于受图形基本资料所影响的每一区块,判断其中的像素是否相交于该区块的前及/或后深度层。如果他们与区块中的像素相交,即设定一旗标来表示需要读取z缓冲区,以判断区块中受影响的像素的可见度。在第二通行中,再次试验区块受图形基本资料影响与否。如果旗标未设定,则根据区块的前和后深度层绘示可见像素至框架缓冲器。如果旗标已设定,则对于受图形基本资料影响的每一个子区块去读取z缓冲区与根据由z缓冲区读出的资料,将可见像素绘示至框架缓冲器。
综上所述,本发明用于减少图形绘示系统的记忆体流量的设备及其方法,可克服现有技术存在的缺点。特别是本发明包括在电脑图形显示系统之内被使用来消除z缓冲区初始化的设备。另外,通过对本发明的用途,此系统以像素群为单位执行z-比较,而不是计算密集的像素对像素比较,而可以减少执行影像绘示时z缓冲区存取的次数。其具有上述诸多的优点及实用价值,并在同类产品及方法中未见有类似的结构设计及方法公开发表或使用而确属创新,在技术上有较大的进步,从而更加适于实用,而具有产业的广泛利用价值,诚为一新颖、进步、实用的新设计。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并为了让本发明的上述和其他目的、特征和优点能更明显易懂,以下特举一较佳实施例,并配合附图,详细说明如下。


图1是简单绘示现有习知一种绘示显示系统的半概要方区块的示意图。
图2是简单绘示将绘示显示系统分割成8对8像素显示区块的半概要方区块的示意图。
图3是绘示依照本发明一较佳实施例的一种z范围缓冲区的概念性布局图。
图4A是绘示用于储存最大和最小z-值的像素遮罩的资料结构与显示区块中三角形的位元遮罩值的概念性布局图。
图4B是绘示一读取z缓冲区遮罩的资料结构的概念性布局图,其是用于储存在显示区块中一三角形的位元遮罩值。
图5是绘示依照本发明一较佳实施例的一种电脑图形显示例行程序的步骤流程方区块图。
图6A-6G是绘示Z范围缓冲区子程式的步骤流程方区块图。
图7A-7D是绘示比前深度层更靠近观测点的三角形与涵盖所有区块中的像素的示意图。
图8A-8D是绘示比前深度层更靠近观测点的三角形与至少涵盖前深度层中的像素的示意图。
图9A-9D是绘示比前深度层更靠近观测点的三角形与至少转换后深度层中的像素的示意图。
图10A-10H是绘示比前深度层更靠近观测点的三角形与涵盖属于前和后深度层部份像素的示意图。
图11A-11D是绘示三角形中的像素的示意图,其中z-值是与前和后深度层的z范围相交。
图12A-12D是绘示比观测点到前深度层远,但比观测点到后深度层近的一三角形的示意图,其中是完全涵盖前深度层的像素。
图13A-13D是绘示比观测点到前深度层远,但比观测点到后深度层近的一三角形的示意图,其中是完全涵盖后深度层的像素。
图14A-14H是绘示比观测点到前深度层远,但比观测点到后深度层近的一三角形的示意图,其中是不完全涵盖后深度层与不完全涵盖前深度层。
图15A-15H是绘示三角形中的像素的示意图,其中z范围与前深度层的z范围相交,而非后深度层,并涵盖所有后深度层的像素。
图16A-16H是绘示三角形中的像素的示意图,其中z范围与后深度层的z范围相交,而非前深度层,并藉由前深度层全部涵盖像素。
图17A-17C是绘示读取z缓冲区遮罩RZMASK的形成示意图,其中RZMASK=CZMASK,且有关于ZTEST值。
图18A-18C是绘示是绘示读取z缓冲区遮罩RZMASK的形成示意图,其中RZMASK=CZMASK& RZMASK,且有关于ZTEST值。
图19A-19C是绘示是绘示读取z缓冲区遮罩RZMASK的形成示意图,其中RZMASK=CZMASK&~RZMASK,且有关于ZTEST值。
图20A-20C是绘示是绘示读取z缓冲区遮罩RZMASK的形成示意图,其中RZMASK、CZMASK与RZMASK是与图20A-20C所示相同,且与子区块相关的ZTEST值是被选定为不同于图20A-20C。
10处理器 12框架缓冲器14显示监视器 16显示控制器18记忆体 20z缓冲区30三角形 32像素34区块 301ZTEST302FMIN304FMAX306BMIN308BMAX310RMASK 402CMIN404CMAX406CMASK412RZMASK 500主程式501~548各个步骤流程 600子程式605~650各个步骤流程 72~92各个步骤流程93~98各个步骤流程 102~116各个步骤流程117~128各个步骤流程 132~144各个步骤流程200已显示目标 202显示区块204、210、212目前三角形218、219目前三角形221、225、226目前三角形234、238、244目前三角形208、214后深度层 220、230、236后深度层240、246后深度层 216前深度层222、223、224、227前深度层 232、242、248前深度层具体实施方式
为更进一步阐述本发明为达成预定发明目的所采取的技术手段及功效,以下结合附图及较佳实施例,对依据本发明提出的用于减少图形绘示系统的记忆体流量的设备及其方法其具体实施方式
、结构、方法、步骤、特征及其功效,详细说明如后。
概括地说,本发明为提供一个在一个三维图形目标的产生和显示期间减少z缓冲区存取次数的系统和方法。其是可藉由辨认形成目标的像素群的最小和最大深度值(例如z-值)来完成。然后进行极端z-值(例如最小及/或最大)的Z比较,而非群里面所有的z-值而因此达成在计算周期内进行储存。因为没有z-读取请求需要递交给显示控制器16(如图1所示),因此可保存记忆体频宽。藉由仅在极端z-值作Z比较,因此可使群里面残余的像素有准确归纳的z-值。如果无法完成这样的归纳,则稍后执行群里面所有像素的像素对像素的Z比较。由于像素对像素的比较一般仅有几个显示区块需要,然而已达到效能的增进。
在本发明的较佳实施例中,三维目标是由定义三角形表面的一顶点集合来表示。然而,熟悉该项技艺人士也许会认为其他类型的多边形较佳,包括可以用来表示一三维目标的圆形、正方形、五边形或六角形。不过,熟悉该项技艺人士还是可以由本发明的教授延伸至其他形式的多边形。
在本发明的较佳实施例中,显示萤幕被分成一个或多个显示区块,接着探测每一区块的深度特性。请参阅图2所示,是萤幕被区分为8像素对8像素(8×8)、包含64个像素的显示区块示意图。二者则一的应用还可以例如是8×4、16×4、4×8,4×4或16×8个区块。
在一实施例中,在显示区块中的每一像素是部份或全部与前深度层或后深度层相关。前深度层包括与萤幕的前景相关的像素;后深度层包括萤幕的后景相关的像素。在惯例中,如果显示区块只有一层来表示,其可以表示成该后深度层代替前深度层。最初,一区块是空的且所有属于背景的像素是为表示后深度层。如一新的多边形,在本实施例中将描述一三角形,其是可能被显示区块采用来作显示,此系统比较z-值的极值,实际上,是为用于新三角形的z-值的范围。该z范围被比较是为前及/或后深度层。如此,系统判断在新三角形中的像素是否为可见的,以及是否被已在显示区块中其他三角形所遮掩。
一般来说,如果目前的三角形的z-值没有与前深度层及/或后深度层的z范围相交,在显示区块中的可见像素可在没有执行z缓冲区读取的情况下,辨认其是否为已经被显示的三角形或新三角形。在这里所提到的“相交”是为目前三角形或在显示区块中的影像的z范围与前深度层或后深度层的二者之一或全部的z范围部份重叠。另一方面,如果z范围相交,则现有习知像素对像素的z比较将用以决定新三角形的哪个像素在旧三角形之前以及新三角形的哪个像素在旧三角形之后。在新三角形中的像素是将与前深度层或后深度层二者其中之一相关。
常见地,如果像素是在前深度层前面,其是与前深度层有关。如果像素是在前深度层和后深度层之间,其通常是与二层中较靠近的相关。如果像素是在后深度层后面,其变成与后深度层相关。例如,如果新三角形位于在前深度层前面,所有新三角形中的像素是可看见的,且应该被显示。如果这个三角形并未涵盖区块中所有的像素,其将与区块中的前深度层相关。
群Z比较是经由z范围缓冲区(范围缓冲区)的比较来完成的。相对于储存每一像素的z-值的z缓冲区,范围缓冲区只储存用于显示区块的四个z-值(1)区块的前深度层的最小z-值,(2)区块的前深度层的最大z-值,(3)区块的后深度层的最小z-值,(4)区块的后深度层的最大z-值。另外,范围缓冲区储存用于区块中像素的位元遮罩,以表示是否属于前深度层或后深度层的一个特别像素。由于在晶片中z范围缓冲区充足地紧凑接触,且外部没有读取记忆体的需要。此则巨大的增加了处理速度和减少汇流排流量。
在本发明的较佳实施例中,每一显示区块被分成好几个显示子区块。显示区块可能被分成2像素对8像素(2×8)包含16个像素的显示子区块。其他的维度应用还可以例如是2×2、2×4、2×16、8×4、16×4、4×8、4×4或16×8个区块。图17-20是表示一些2×8和8×2子区块的例子。
请参阅图3所示,是广义描述范围缓冲区的图。FMIN区域302和FMAX区域304分别储存显示区块的前深度层的最小和最大的z-值。同样,BMIN区域306和BMAX区域308分别储存显示区块的后深度层的最小和最大的z-值。在图3的实施例中,FMIN、FMAX、BMIN和BMAX区域302-308是分别占了15位元的储存空间。像素遮罩区域RMASK 310占了64位元的储存空间,且每一位元对应于8×8区块中的一个像素。RMASK区域310中每一位元相对应的显示区块中的像素是分别根据是否属于后深度层或前深度层将其设定为0与1其中之一。ZTEST区域301的4个位元是被提供用于储存区块34的子区块资讯,其中位元值为1是表示为了相对应的子区块必须执行z缓冲区的读取,且位元值为0是表示不须执行z缓冲区的读取。以下将进一步解释ZTEST区域。
请参阅图4A所示,是广义描述如图2所示的用于储存新三角形30的最小和最大z-值及位元遮罩值的资料结构,并请参考显示区块34。CMIN区域402和CMAX区404各自代表受三角形30影响的区块34中像素的最小和最大z-值。CMIN和CMAX区域402与404是分别占了16位元的储存空间。CMASK区域406是位元遮罩,且代表由三角形30接触的在显示区块34中的像素32。CMASK区域406占了64位元的储存空间。请参阅图4B所示是广义描述如图2所示的用于储存目前的三角形30的位元遮罩值的图,且其是与必须执行z缓冲区读取的显示区块34有关。
重要的是,本发明所揭露的技术可以延伸至超过二层的执行。例如,本发明的教授可延伸至一个使用四层显示的系统。在这样系统中,范围缓冲区是被配置以四对极值。而且,在这样系统中,位元遮罩是被配置每像素至少包括二位元。相对地,例如用于一个64像素显示区块中,一适当的位元遮罩将会有与其相关的至少128位元(例如每像素二位元)。用于新影像的范围缓冲区和位元遮罩会同样被修改。的确,在不脱离本发明的精神下,其可以具有多种变化。
请参阅图5所示是绘示根据本实施例所描述的步骤500的流程图。步骤500根据电脑程式惯例作描述,但那些技巧的技术特征可使用在逻辑电路上,以更加快速地完成此步骤。的确,本发明的实施例可以被实施在数位电路拓扑结构。数位电路拓扑结构包括逻辑闸和记忆体元件,并可以逻辑闸和记忆体元件在单一积体电路上形成一z范围缓冲区,以提供能与现有习知作区别的显著改善的功效。
图5的步骤500开始,其是为一个空白萤幕并将每一区块的FMIN、FMAX、BMIN和BMAX值初始化至最大可能z-值,例如,背景的z-值。在本实施例中,最大的z-值是为“1.0”,且最小的z-值是为“0.0”。相对地,可允许的z-值是包含在0.0和1.0之间的正常化的集合值。熟习此技艺者还可将其应用于其他的范围。用于每一区块的RMASK区域也被初始化为0,以描述所有属于后深度层的像素最初是为背景,例如,对应于每个区块的每个RMASK区域的每个位元被设定为0,且用于每一子区块的ZTEST区域被初始化为0,以描述没有子区块是被标记来要求执行读取Z-缓冲区子程式。
在第一通行阶段之后,此步骤接着询问是否进行在所有三角形表面编造一三维目标的处理(步骤502),以决定哪个子区块要求执行读取Z-缓冲区子程式,并且将对应的ZTEST区域标记为“1”(步骤504~512)。如果有,第一通行证阶段末端和第二个通行证阶段的步骤随后而来(步骤520),以执行用于必要子区块的Z缓冲区子程式;例如,那些子区块具有对应的ZTEST区域标记为“1”(步骤522~548)。否则,将采用一个新三角形的步骤(步骤504),如一即时三角形,并试验即时三角形可涵盖显示区块(步骤506~512)。如果所有区块已全部被试验则由步骤506分支是来表示,而如果在步骤502中没有多的三角形要试验,则在步骤504中处理下一个三角形。否则,步骤采用一个新区块(步骤508),并询问涵盖显示区块的即时三角形现在正被试验(步骤510)。Z范围缓冲区子程式(步骤512)引用一个肯定的答案,以给ZTEST区域适当的值。如果答案是负的,则表示藉由分支否到决策方块510,如果在步骤506中有任何方块需要进一步试验,步骤则前进到下一个方块步骤508。
在第一通行阶段中,所有三角形被试验后,步骤进入第二通行阶段(步骤520)。此步骤接着询问是否在第二通行阶段进行在所有三角形表面编造一三维目标的处理在框架缓冲器中的像素资料已准备用于显示。否则,将采用一个新三角形的步骤(步骤524),如一即时三角形,并试验即时三角形可涵盖显示区块(步骤526~548)。如果所有区块已全部被试验则由步骤526分支是来表示,而如果在步骤522中没有多的三角形要试验,则在步骤524中处理下一个三角形。否则,步骤采用一个新区块(步骤528),并询问涵盖显示区块的即时三角形现在正被试验(步骤530)。Z范围缓冲区子程式(步骤532)引用一个肯定的答案,以决定是否读取Z范围缓冲区。如果答案是负的,则表示藉由分支否到决策方块534,如果在步骤526中有任何方块需要进一步试验,步骤则在没有预先执行Z缓冲区子程式的情况下,进一步将可见像素绘示至框架缓冲器(步骤536),然后在步骤528中前进到新方块。否则,则表示由分支是到决策方块534,此步骤则进一步采用一新子区块(步骤542),并因此试验ZTEST值(步骤544)直到在目前区块中所有子区块均已被试验(步骤540)。在步骤544中,如果ZTEST=1,这意味在试验子区块中读取Z缓冲区子程式是必要的,从而导致执行Z缓冲区子程式(步骤546),以决定哪个像素应该被显示(可见像素),且因此将他们绘示至框架缓冲器(步骤548)。如果ZTEST=0,其是表示我们在没有执行Z缓冲区子程式的情况下可决定可见像素,并在步骤548中直接将他们绘示至框架缓冲器。
进一步细节如以下所述,在第二通行阶段中(步骤532),Z范围缓冲区子程式判断用于子区块的ZTEST值,并设定READ_Z_BUFFER为真或假二者其中之一,且为必要的子区块执行Z缓冲区子程式。READ_Z_BUFFER是用来判断像素对像素的z比较是否是必要的。ZTEST区域判断哪个子区块要求执行Z缓冲区子程式。在执行Z缓冲区子程式(步骤532)的判断后,图5的主要步骤是为检查读取READ_Z_BUFFER(步骤534)。如果READ_Z_BUFFER被设定为真,且子区块所属的ZTEST=1,此步骤则引用Z缓冲区子程式(步骤546)用于进行像素对像素的比较。步骤然后进行写入像素的z-值,其中像素的z-值由Z缓冲区取得,并在显示器上将这些像素绘示在旧像素的地方。另一方面,如果READ_Z_BUFFE被设定为假,像素对像素的z-值比较则就不是那要必要的了(参见步骤534的分支否),但是其仍然必须将像素绘示至框架缓冲器(步骤536)。在二者择一的实施例中,然而,在某个方面我们能简单地记录可见像素,而不是将他们绘示至框架缓冲器(步骤548或536),并稍后将他们绘示至框架缓冲器(未绘示在流程图中)。
请参阅图6A-6G所示,是绘示图5的Z范围缓冲区子程式600(步骤512、532)的步骤流程示意图。图6A是Z范围缓冲区的主要流程图,并藉由判断是否目前影像被绘示的比前深度层更靠近作开始(步骤605)。如果答案为是,则执行子程式B(步骤610);否则,子程式进一步判断目前影像是否与前深度层和后深度层均相交(步骤615)。如果答案为是,执行子程式C(步骤620);否则,子程式进一步判断目前影像是否比前深度层远,而比后深度层近(步骤625)。如果答案为是,执行子程式D(步骤630);否则,子程式进一步判断目前影像是否与前深度层相交,而非与后深度层相交(步骤635)。如果答案为是,执行子程式E(步骤640);否则,子程式进一步判断目前影像是否与后深度层相交,而非与前深度层相交(步骤645)。如果答案为是,执行子程式F(步骤650);否则,结束子程式600并返回主流程500。
在步骤605中,当目前影像被绘示的比前深度层更接近时,则采用子程式B 610。其是发生在当CMAX值少于FMIN值时(例如CMAX<FMIN)。当显示区块中的目前三角形比前深度层更靠近观测点时,则对其测试,如果新影像的确比前深度层更靠近时(例如在步骤605的是),READ_Z_BUFFER被设定为假,并且目前三角形的区块中的像素是被拒绝作不需要的像素对像素的z缓冲区比较。之前提过不具执行像素对像素比较提供真实的功效优点。新像素可因此在未执行密集计算与密集记忆体操作的情况下显示在旧像素的地方。
图6B的子程式B 610通过步骤74至92的操作进行范围缓冲区的下次更新。在步骤74中,子程式B询问目前影像是否涵盖显示区块的所有像素(例如,CMASK的所有位元被设定为1)。在图7A显示区块202中已显示目标200被目前三角形204所掩藏而无法看到,且目前三角形204是涵盖整个显示区块202。图7B是概略绘示图7A的z范围与新像素在x、y方向的间距(被占了的区域)、图7A所谈到的前深度层和后深度层的顶视图。在图7B中,可以看见前深度层涵盖目前区块202的左边部份,后深度层涵盖目前区块202的右边部份,且这两层构成区块202。前深度层在FMIN和FMAX之间有一范围,且后深度层在BMIN和BMAX之间有一个范围。新像素涵盖整个区块202,且因此跨越左边至右边。新像素在CMIN和CMAX之间有一范围,且这个范围不与前深度层相交,亦即,目前形式为CMAX<FMIN。图7C说明在考虑目前三角形的新像素的影响后,前和后深度层在区块202中的RMASK的变动,即是考虑到新像素的影响。如先前所述,只一层存在这情况,即,藉由新三角形204建立的层在步骤76中被设定,其如后深度层藉由设定一值0到RMASK区域。另外,在步骤76中,前和后深度层的最小z-值,FMIN和BMIN,是被设定新三角形最小的z-值CMIN,且在步骤76中前和后深度层的最大z-值,BMAX和FMAX,是被设定为新三角形最大的z-值CMAX。图7D是概略绘示图7C的z范围与前深度层及后深度层在x、y方向的间距(被占据的区域)的顶视图。然后子程式B回到图5的步骤500。
然而,如果新三角形未涵盖显示区块的所有像素,子程式B为了调查新三角形是否至少涵盖属于前深度层的所有像素而进行步骤78。此情节是在图8A和图8B作说明,且图8B是为图8A的概略顶视图,其中,前深度层206和部份后深度层是由目前三角形210所遮掩。图8B是为图8A的概略顶视图。在这情况下,在步骤80中,新像素藉由使RMASK=CMASK而成为新前深度层。相对地,在步骤80中,FMIN被设定为CMIN,FMAX被设定为CMAX。后深度层208的最小和最大值则保持为相同。图8C说明在考虑目前三角形的新像素的影响后,RMASK的变动,且图8D是为图8C的概略顶视图。然后子程式B回到图5的步骤500。
如果目前新三角形未至少涵盖属于前深度层的像素,在步骤82中,子程式B其次试验目前新三角形是否至少涵盖属于后深度层的所有像素。此情节是在图9A和图9B作说明,且图9B是为图9A的概略顶视图,其中,后深度层是为配置在先前显示区块202的背景的地方。目前三角形212涵盖所有后深度层214和部份的前深度层216。在这个情况下,在步骤84中,旧前深度层216的范围藉由使BMIN=FMIN和BMAX=FMAX成为新的后深度层。如先前的例子,显示区块202中的像素是被目前三角形212所涵盖,然后藉由使RMASK=CMASK成为新的前深度层。而且,FMIN和FMAX值是分别被设定为CMIN和CMAX值。图9C说明在考虑目前三角形的新像素的影响后,RMASK的变动,且图9D是为图9C的概略顶视图。子程式B回到图5的步骤500。
如果前或后深度层不完全被新三角形所涵盖,在步骤86中,子程式B其次询问新三角形是否涵盖部份前深度层和部份后深度层,以及FMIN和CMAX之间的距离是否少于或等于BMIN和FMAX之间的距离,亦即,FMIN-CMAX<=BMIN-FMAX。请合并参阅图10所示,此距离检查是与和旧前深度层222一样较靠近的目前三角形218有关,其中是为至少前深度层222的部份或旧前深度层222是否与显示区块202中的后深度层220有关。在步骤86中,检查旧前深度层222是否将与显示区块202中的后深度层220有关系包括新三角形218。基本上,前深度层的新范围成为那些旧前深度层222和目前三角形218的综合。同样地,新前深度层的间距成为那些旧前深度层222和目前三角形218的综合。在步骤88中,其更包括藉由从还未包括旧RMASK值的CMASK完成任何新像素的新RMASK值(例如,RMASK不等于CMASK)。而且,新FMIN值成为CMIN和FMIN值的最小值,且新FMAX值成为CMAX和FMAX值的最大值。BMIN和BMAX值依然保持是88。图10C说明在考虑目前三角形的新像素的影响后,RMASK的变动,且图10D是为图10C的概略顶视图。子程式B回到图5的步骤500。
但是,如决策方块86中所询问,如果FMIN和CMAX之间的距离大于BMIN和FMAX之间的距离,亦即,FMIN-CMAX>BMIN-FMAX,而像素与前深度层222(如图10E和图10F所示)相关变成像素与后深度层220相关,其中,前深度层222是未被目前三角形219所涵盖。相对地,在步骤92中,RMASK被设定与CMASK相等。然后新像素成为新的前深度层。这两层最小和最大z-值是藉由设定BMIN=FMIN、BMAX=BMAX(例如,未改变)、FMIN=CMIN与FMAX=CMAX 92作更新。图10G说明在考虑目前三角形的新像素的影响后,RMASK的变动,且图10H是为图10G的概略顶视图。子程式B回到图5的步骤500。
提到回到图6A的步骤605,如果在显示区块的新三角形未比前深度层更靠近观测点,子程式进行步骤615藉由CMIN比FMAX小以及CMAX是否大于BMIN(例如,CMIN<FMAX)来询问新影像是否与前和后深度层相交。如果答案为是,Z范围缓冲区子程式600更进一步到子程式C 620,其中如图11A与11B所绘示的目前三角形221的z范围与前深度层223和后面层219的z范围相交。因而,请合并参阅图6C所示,z缓冲区读取必须用来执行像素对像素的比较与判断哪个像素自投影掩藏及哪个像素不是。相对地,在步骤93中,READ_Z_BUFFER被设定为真。一个读取z缓冲区遮罩,RZMASK,例如是与CMASK相同大小,是被提供作为一位元遮罩来记录用于目前区块202的每一像素的一位元,以判断如果z缓冲区读取是必要的,其中像素是执行像素对像素的z比较。如果目前三角形的新像素与在范围内的前深度层或后深度层均相交,则将RZMASK的位元设定为“1”。在目前的情况下,目前三角形的新像素与在范围内的前深度层与后深度层均相交,因此RZMASK=CMASK。如图17A-17C所示的一个例子。子程式C进一步到决策方块95以检查目前是哪个阶段。如果它在第一通行阶段,在步骤96中,我们必须决定用于显示区块202中所有子区块的ZTEST值,以便在第二个通行阶段可以使用ZTEST值。特殊子区块的ZTEST值可藉由执行对应于此子区块的所有RZMASK位元的按位元(bit-wise)逻辑或闸操作来获得。因为RZMASK记录要求执行Z-BUFFER子程式的所有位元,ZTEST区域记录介入执行Z-BUFFER子程式的所有子区块。如图17A-17C所示的例子,显示区块包括四个子区块、SUB-BLOCK 0、SUB-BLOCK 1、SUB-BLOCK 2和SUB-BLOCK 3,且ZTEST是 。此结果可解释成如果子区块包含要求执行z缓冲区子程式的像素,对应的ZTEST区域会被设定为“1”;否则,对应的ZTEST区域会被设定为“0”,且没有z缓冲区子程式是必须的。否则在步骤95中的答案否即表示已完成第一通行阶段,且已设定ZTEST区域。在步骤98中,子程式C进行更新范围缓冲区。此新像素和与前深度层相关的像素藉由使所有像素的RMASK=“0”,而变成新的后深度层。在步骤98中,新的BMIN和FMIN值被设定为小于旧的CMIN和FMIN值。在步骤98中,新的BMAX和FMAX值被设定为大于旧的CMAX和BMAX值。图11C说明在考虑目前三角形的新像素的影响后,RMASK的变动,且图11D是为图11C的概略顶视图。子程式B回到图5的步骤500。
回到图6A的步骤605,如果新影像未与前和后深度层相交(例如,步骤615的分支否),子程式其次询问新影像是否比前深度层远,而比后深度层近且未相交在步骤625中,如果CMIN>FMAX和CMAX<BMIN,则代表是。这个情况证实目前影像紧密地位于前和后深度层间,且子程式进一步到子程式D630。请参阅图6D所示。由于z范围不相交,在步骤102中,子程式D将READ_Z_BUFFER设定为假。接着,在步骤104中,子程式D由首先询问是否整个新像素被前深度层所涵盖,如图12A和12B所示,来更新范围缓冲区。目前三角形225完全地涵盖在前深度层224的投影,因而藉由图5的主步骤将不会显示。图12C说明在考虑目前三角形的新像素的影响后,RMASK的变动,且图12D是为图12C的概略顶视图。在这种情况下,更新对范围缓冲区不是必要的,且子程式D简单地回到图5的步骤500。
否则,如果整个新像素未被前深度层所涵盖,在步骤106中,子程式D其次询问在后深度层中,新三角形是否涵盖所有像素。请参阅如图13所示,未被前深度层227涵盖的目前三角形226的新像素是可见的;因此,那些像素可以被显示,并做成背景后深度层。而且,新三角形226涵盖后深度层230与显示区块中未被涵盖的像素,亦即,未被涵盖的旧前深度层会成为新前深度层。因而,在步骤108中,RMASK值与前深度层最小值和最大值依然相同。然而,由于新像素现在是与新后深度层108相关,所以BMIN和BMAX值是分别被设定为CMIN和CMAX。图13C说明在考虑目前三角形的新像素的影响后,RMASK的变动,且图13D是为图13C的概略顶视图。然后子程式D回到图5的步骤500。
在步骤106中,步骤以负响应处理步骤110。在步骤110中,步骤询问新影像是否均未整个被前深度层与后深度层所涵盖,且较靠近前深度层(例如CMIN和FMAX值之间的差异是小于或等于BMIN和CMAX值之间的差异,或更加精确地,CMIN-FMAX小于等于BMIN-CMAX)。图14A和14B说明是的反应。由于前深度层232最多仅覆盖做成目前三角形234的部份新像素,未被涵盖的像素是可见的,且因而被显示。在这个例子中,目前三角形234未被前深度层232涵盖,且未被后深度层236涵盖。因此,在步骤110中,对询问的答案为是,因为新三角形是离前深度层较近,则子程式D进行将像素设定为由目前三角形234所覆盖,如前深度层232的部份。换句话说,新像素和前深度层合并入新前深度层在此范围和此间距。在步骤112中,这是由使RMASK综合旧的RMASK和CMASK(例如,RMASK不等于CMASK,或RMASK|=RMASK|CMASK)做成。而且,在步骤112中,新FMIN值成为CMIN和FMIN值的最小值,以及新FMAX值成为CMAX和FMAX值的最大值。BMIN和BMAX值则保持不变。图14C说明在考虑目前三角形的新像素的影响后,RMASK的变动,且图14D是为图14C的概略顶视图。然后子程式D回到图5的步骤500。
若步骤110的答案为否,即,新三角形较靠近后深度层,如图14E和图14F所示(例如,FMIN和CMAX之间的距离大于BMIN和FMAX之间的距离,或更加精确地,CMIN-FMAX>BMIN-CMAX),前深度层未改变,且RMASK值保持与步骤116相同。因此,新像素是与后深度层相关。前深度层的最小和最大值也依然是相同。但新BMIN值被设定为旧BMIN和CMIN值的最小值,且新BMAX值被设定为旧BMAX和CMAX值的最大值。图14G说明在考虑目前三角形的新像素的影响后,RMASK的变动,且图14H是为图14G的概略顶视图。然后子程式D回到图5的步骤500。
请回到图6所示的子程式600的决策方块625,对决策方块635为否的回应,其中子程式询问目前新影像是否与前深度层相交,而不是后深度层(例如,在步骤635中,CMIN<FMAX与CMAX<BMIN)。如果答案为是,步骤进行到子程式E 640,其中新像素的z范围与前深度层的z范围相交,而不是后深度层。因此,请参阅图6E所示,在步骤117中,READ_Z_BUFFER被设定为真,且因此要求读取z缓冲区。
然后子程式E进行到步骤118,以设定RZMASK的值来判断哪个像素要求执行像素对像素的z缓冲区比较。在目前情况下,目前三角形与前深度层相交,且因此,使相交的像素可以用于判断与藉由在CMASK和RMASK上按位元逻辑及闸的操作来设定,也因此RZMASK=CMASK & RMASK。如图18A-18C所示的例子。子程式E进一步到决策方块119来检查目前在哪一个阶段。如果在第一通行阶段,在步骤120中,我们必须判断在显示区块202中用于所有子区块的ZTEST值,以便在第二个通行阶段使用ZTEST值。特殊子区块的ZTEST值是可藉由执行对应此子区块所有RZMASK位元的按位元逻辑或闸的操作来获得。如图18A-18C所示的例子,显示区块包括四个子区块、SUB-BLOCK 0、SUB-BLOCK 1、SUB-BLOCK 2、和SUB-BLOCK 3,且ZTEST为 。此结果可解释为如果子区块包含要求执行z缓冲区子程式的像素,对应的ZTEST区域会被设定为“1”;否则,对应的ZTEST区域会被设定为“0”,且没有z缓冲区子程式是必须的。否则在步骤119中的答案否,即表示已完成第一通行阶段,且已设定ZTEST区域。,步骤进一步由在步骤122中询问图15A和15B所示的目前三角形238是否涵盖在后深度层的所有像素来更新范围缓冲区。在这个特殊例子中,后深度层240是显示区块202的背景部份,且未被前深度层242所涵盖。如果答案为是,在步骤124中,将RMASK值的每位元设定为“0”。因此,三角形238是由新像素构成,且在前深度层242中的像素被合并为单一层的范围和间距内,且变成区块的新的后深度层。在步骤124中,新BMIN和FMIN值均为小于CMIN和旧FMIN值的集合。在步骤124中,新BMAX和FMAX值均为大于CMAX和旧FMAX值的集合。图15C说明在考虑目前三角形的新像素的影响后,RMASK的变动,且图15D是为图15C的概略顶视图。然后子程式E回到图5的步骤500。
然而,如果对步骤122的答案为否,即,如图15E和15F所示,新三角形未涵盖在后深度层中的所有像素,新像素增加为前深度层的一部份(例如,RMASK不等于CMASK或RMASK=RMASK|CMASK),在步骤128中。新FMIN值成为CMIN和FMIN值的最小值,且在步骤128中,新FMASK值成为CMAX和FMA的最大值。BMIN和BMAX值依然是保持在128。图15G说明在考虑目前三角形的新像素的影响后,RMASK的变动,且图15H是为图15G的概略顶视图。然后子程式E回到图5的步骤500。
回到图6A的步骤635,这询问之否的分支导致子程式进一步在步骤645询问新影像是否与后深度层相交,而不是前深度层(例如,CMIN大于等于FMAX,& CMIN<BMAX,& CMAX>BMIN)。如果反应为是即表示新像素z范围与后深度层的z范围相交,而不是前深度层的z范围,且步骤进一步到子程式F 650。请参阅图6F所示。子程式F然后进行步骤132询问前深度层是否盖构成目前三角形的所有新像素。在步骤134中,由于新像素被前深度层遮掩,所以将READ_Z_BUFFER的变数设定为假。如图16A和16B所示,新像素的z-值构成与后深度层246相交的目前三角形244。但是,那些像素由前深度层248的投影所掩藏。相对地,不需要更进一步的动作。图16C说明在考虑目前三角形的新像素的影响后,RMASK的变动,且图16D是为图16C的概略顶视图。在这种情况下,更新对范围缓冲区不是必要的,且子程式F简单地回到图5的步骤500。
在步骤132中,否的回应导致子程式F在步骤136中询问前深度层是否为涵盖所有新像素。在这种情况下,在步骤138中,由于新像素的z-值的像素对像素的比较,READ_Z_BUFFER被设定为真,其中,在z缓冲区的z-值必须被执行。子程式F然后进行到步骤138中来设定RZMASK的值,以判断哪个像素需要被执行像素对像素的z缓冲区比较。在目前的情况下,目前三角形与后深度层相交,使相交的像素可以用于判断与藉由在CMASK和~RMASK(“~RMASK”是表示RMASK的按位元的倒数)上按位元逻辑及闸的操作来设定,也因此,RZMASK=CMASK & RMASK。如图19A-图19C所示的例子。子程式F进一步到决策方块140来检查目前在哪一个阶段。如果在第一通行阶段,在步骤142中,我们必须判断在显示区块202中用于所有子区块的ZTEST值,以便在第二个通行阶段使用ZTEST值。特殊子区块的ZTEST值是可藉由执行对应此子区块所有RZMASK位元的按位元逻辑或闸的操作来获得。如图19A-19C所示的例子,显示区块包括四个子区块、SUB-BLOCK 0、SUB-BLOCK 1、SUB-BLOCK 2、和SUB-BLOCK 3,且ZTEST为 。二者择一地,如图20A-20C所示的例子,显示区块和目前三角形与图19A-19C那些相同,但是四个子区块的配置是不同,如SUB-BLOCK 0’、SUB-BLOCK1’、SUB-BLOCK 2’和SUB-BLOCK 3’,且ZTEST为 。此结果可解释为如果子区块包含要求执行z缓冲区子程式的像素,对应的ZTEST区域会被设定为“1”;否则,对应的ZTEST区域会被设定为“0”,且没有z缓冲区子程式是必须的。否则在步骤140中的答案否,即表示已完成第一通行阶段,且已设定ZTEST区域。此步骤其次在步骤144中藉由将新BMIN值设定为小于旧BMIN和CMIN值,以及将新BMAX值设定为大于旧BMAX和CMAX值来更新范围缓冲区,如图16E-16H所示。RMASK、FMIN和FMAX值与114保持一样。子程式F然后回到图5的主要步骤500。
请参阅图6A-6F所示,是具有介绍目前影像的子程式。通过图6A-图6F的描述,第一次描述最接近投影的目前影像(例如图6A所示),直到新影像是最进一步从投影平面(例如图6D所示)。此方法学提供了一个可理解的连续。以对图6A-图6F的子程式的充分的理解,图6G所示的一个概略步骤600G可被了解。图6G所示是为READ_Z_BUFFER被设定为真的情况,以及分开的,READ_Z_BUFFER被设定为假的情况。如图所示,当READ_Z_BUFFER被设定为假且z缓冲区不须被读取时,其是有三个情况。其中,本发明是提供最能改善效能的情况。当目前新影像比前深度层更接近时,READ_Z_BUFFER将被设定为假(步骤605),此新影像是在前和后深度层之间,且未相交(步骤625),且新影像未与前深度层相交,而与后深度层相交(步骤645),且被前深度层完全涵盖(步骤132的是的分支)。如图6G所示,这些步骤是分别对应到先前所描述的子程式B、D和F。在READ_Z_BUFFER被设定为假后,此步骤根据以下所描述的情况分别设定RMASK、BMIN、BMAX、FMIN与FMAX。相反地,当READ_Z_BUFFER被设定为真且z缓冲区必须被读取时,其是有三个情况。其中,本发明是提供最能改善效能的情况。当新影像与前深度层相交而未与后深度层相交(步骤635);当新影像未与前深度层相交而与后深度层相交(步骤645),且不完全被前深度层所覆盖(步骤132的分支否);以及当新影像与前和后深度层相交(步骤615)。这些步骤是分别对应到先前所描述的子程式E、D和C。对这些情况,READ_Z_BUFFER被设定为真,例如,z缓冲区读取因此被执行、读取z缓冲区位元遮罩RZMASK被判断与第一通行阶段中对应于子区块的ZTEST区域进一步被判断,如方块中所形成的粗中心线所示。这个机制提供在原始的资料结构大小一种方法,以从第一通行阶段中那些不要求执行z缓冲区读取的来告诉子区块哪些要求执行z缓冲区读取,当只执行用于在可识别的子区块中的这些新像素的z缓冲区读取,则在第一通行阶段不执行z缓冲区读取,而不是整个显示区块。虽然用于读取三角形资料的汇流排流量费用,读取两次只比各自读取一次增加一点,然而,此功效是由于改进有限,而不是为裁决冲突读取所有三角形资料,因为只有一些子区块而不是整体显示区块被包含,所以汇流排流量也因为z缓冲区读取而被减少。通过对图6G的子程式600G的理解,演算法的量化可达到实施本发明。此外,在图6G中,流程600G的决策方块605、615、625、635和645是为平行而不是串联,如图6A的流程600G。实际上,在图6G的流程600G中决策方块605、615、625、635和645的条件是为互相唯一,且因此最多只有一个条件会发生;因此,没有特殊序列是必须的。因此图6A的流程600所示的序列是为简单地选择可能当中的一个。
虽然已在某些特殊实施例中描述本发明,熟习该项技艺者在不脱离本发明的精神和范围内,当可作些许的更动与润饰。例如,只使用二层来代替相对应的前和后深度层,一熟习该项技艺者可能只想使用区块中之一、三或更多层来比较z范围值。一熟习该项技艺者可能只想储存被使用的所有层的最小和最大z-值,其中,z范围缓冲区将必须被修改。
以上所述,仅是本发明的较佳实施例而已,并非对本发明作任何形式上的限制,虽然本发明已以较佳实施例揭露如上,然而并非用以限定本发明,任何熟悉本专业的技术人员,在不脱离本发明技术方案范围内,当可利用上述揭示的方法及技术内容作出些许的更动或修饰为等同变化的等效实施例,但是凡是未脱离本发明技术方案的内容,依据本发明的技术实质对以上实施例所作的任何简单修改、等同变化与修饰,均仍属于本发明技术方案的范围内。
权利要求
1.一种绘示图形基本资料至框架缓冲器的方法,适用于显示之用,其特征在于该框架缓冲器被分成大小相等的多数个像素区块,每一该像素区块具有至少二深度层,该框架缓冲器具有相对应用于该框架缓冲器中每一像素之一深度值的一z缓冲区,该深度值是用以判断显示时每一该像素的可见性,该方法包括判断在该框架缓冲器内的该些像素区块受到该图形基本资料影响与否;对每一受影响区块,调整每一受影响区块的深度层,判断用于每一受影响区块的该图形基本资料的任一像素与每一受影响区块的任一深度层相交与否,而将每一受影响区块分成大小相等的多数个子区块,每一该子区块具有一子区块遮罩,该子区块遮罩包括用于每一该子区块的一位元;以及如果用于每一受影响区块的该图形基本资料的任一像素与任一深度层相交时,即设定一旗标来表示该z缓冲区要求一次区块更新,以及形成一像素遮罩来表示在每一受影响区块内的该些像素为相交像素,并且合并该子区块遮罩与该像素遮罩来判断哪些子区块具有该相交像素;再次判断在该框架缓冲器内的该些区块受到该图形基本资料影响与否;以及对每一受影响区块,调整每一受影响区块的深度层,判断每一受影响区块的更新旗标是否被设定,如果该更新旗标未被设定,则根据被调整的深度层将可见像素绘示至该框架缓冲器;如果该更新旗标被设定,则根据该子区块遮罩对被影响的每一受影响区块的每一该些子区块判断每一该子区块受到该些相交像素的影响与否;以及当该子区块受到影响时,则读取该z缓冲区、调整该相交像素的可见性项目与将任一可见像素绘示至该框架缓冲器。
2.根据权利要求1所述的绘示图形基本资料至框架缓冲器的方法,其特征在于其中所述的每一受影响区块是具有一前深度层与一后深度层,并且在每一受影响区块中,该前深度层与该后深度层的该深度值各具有其范围,并具有最小值与最大值,且最小值是为较接近值;以及其中该图形基本资料具有用于在每一受影响区块中的像素的该深度值的范围,该些像素是受该图形基本资料所影响,该图形基本资料的范围具有最小值与最大值。
3.根据权利要求2所述的绘示图形基本资料至框架缓冲器的方法,其特征在于其中一遮罩是与该区块有关,该遮罩描述在每一区块中的哪些像素是属于该前深度层与该后深度层。
4.根据权利要求2所述的绘示图形基本资料至框架缓冲器的方法,其特征在于其中一遮罩是与该图形基本资料有关,该遮罩描述在每一区块中的哪些像素是受该图形基本资料所影响。
5.根据权利要求2所述的绘示图形基本资料至框架缓冲器的方法,其特征在于其中在每一受影响区块中受该图形基本资料影响的该些像素是与该前深度层及该后深度层均相交;其中该像素遮罩是表示在每一受影响区块中全部受影响的该些像素为该些相交像素;其中该前深度层与该后深度层的该深度值均被调整至具有一范围,该范围介于(i)该图形基本资料的最小值与该前深度层最小值之间的最小值以及(ii)该图形基本资料的最大值与该后深度层最大值之间的最大值,且包括该前深度层、该后深度层与在每一受影响区块中受该图形基本资料所影响的该些像素。
6.根据权利要求2所述的绘示图形基本资料至框架缓冲器的方法,其特征在于其中在该区块中受该图形基本资料所影响的该些像素是与该前深度层相交而非该后深度层;其中该像素遮罩是表示该前深度层的哪些像素为相交像素;其中若在每一受影响区块中受影响的该些像素是全部涵盖该区块中的该后深度层,该前深度层与该后深度层的该深度值的范围则被调整介于(i)该图形基本资料的最小值与该前深度层最小值之间的最小值以及(ii)该图形基本资料的最大值与该前深度层最大值之间的最大值,且包括该前深度层的像素与在每一受影响区块中受该图形基本资料影响的该些像素;其中若在每一受影响区块中受影响的该些像素非全部涵盖该区块中的该后深度层,该前深度层的该深度值的范围则被调整介于(i)该图形基本资料的最小值与该前深度层最小值之间的最小值,(ii)该图形基本资料的最大值与该前深度层的最大值之间的最大值,用以包含在该前深度层中受该图形基本资料影响的所有像素;以及该后深度层的该深度值的范围未改变且仅包括未受该图形基本资料影响的该些像素所涵盖的像素。
7.根据权利要求2所述的绘示图形基本资料至框架缓冲器的方法,其特征在于其中在每一区块中的受该图形基本资料影响的该些像素是与该后深度层相交,而非该前深度层,且该前深度层非完全涵盖受该图形基本资料影响的该些像素;其中该像素遮罩是表示该后深度层的哪些像素为相交像素;其中该后深度层被调整的范围是介于(i)该图形基本资料的最小值与该后深度层最小值之间的最小值,(ii)该图形基本资料的最大值与该后深度层的最大值之间的最大值,用以包含在该后深度层中受该图形基本资料所影响的所有像素;以及其中该前深度层的范围未改变。
8.一种图形绘示设备,其特征在于其包括一框架缓冲器,用于储存多数个像素,该框架缓冲器被分成大小相等的多数个像素区块,每一该些像素区块被分成大小相等的多数个子区块;一z缓冲区,与该框架缓冲器相关,该z缓冲区储存该框架缓冲器中每一该些像素的一深度值,该深度值是用以决定显示时的每一该像素的可见度;以及一图形处理器,用于处理该z缓冲区和该框架缓冲器中的该些像素,该图形处理器包括一z范围缓冲区,具有多数个栏位用以表示该些区块其中之一前深度层的一深度值范围与一后深度层的一深度值范围,一遮罩是用以表示该些区块其中之一的哪些像素位在该前深度层中与该后深度层中;以及用于储存该些子区块资讯的栏位,该些子区块资讯用于表示该些子区块的该z缓冲区需被读取与否;一第一暂存器,具有用于表示在该些区块其中之一的哪些像素是受一图形基本资料所影响的栏位,且用于表示在该些区块其中之一的该些像素的该深度值是受该图形基本资料的影响;一第二暂存器,具有用于表示在该些区块其中之一中的该些像素需要z缓冲区读取的栏位;以及一旗标,用于表示为了该些区块其中之一,该z缓冲区需要被读取。
9.根据权利要求8所述的图形绘示设备,其特征在于其中所述的图形处理器是被配置于判断在该些区块其中之一中的哪些像素是受该图形基本资料影响,并且在该些区块其中之一中的该些像素的该深度值是受该图形基本资料影响,以作为设定该第一暂存器的依据;判断在该些区块其中之一中受图形基本资料影响的该些像素相交于该前深度层、该后深度层或两者与否;若该z缓冲区需要被读取,则设定该旗标;根据在该些区块其中之一中受该图形基本资料影响的该些像素与受影响的该些像素的该深度值来调整在该z缓冲器中该前深度层与该后深度层的范围;如果该旗标未被设定,根据被调整的该前深度层与该后深度层将一可见像素绘示至该框架缓冲器;如果该旗标已被设定,则根据相交的判断来判断在区块中的哪些像素要求读取该z缓冲区,并相对地设定在该第二暂存器的栏位、判断在该些区块其中之一中的哪些子区块要求读取该z缓冲区,并相对地设定该z缓冲区的栏位、读取该z缓冲区以获得用于该些子区块其中之一的该深度值,以及根据由z缓冲区中得到的该些子区块其中之一的该深度值将可见像素绘示至该框架缓冲器。
全文摘要
本发明是关于一种用于减少图形绘示系统的记忆体流量的设备及其方法,是一种绘示图形基本资料的系统与方法。其是可用两个通行方法来达成,在第一通行中,对于受图形基本资料所影响的每一区块,判断其中的像素是否相交于该区块的前及/或后深度层。如果他们与区块中的像素相交,即设定一旗标来表示需要读取z缓冲区,以判断区块中受影响的像素的可见度。在第二通行中,再次试验区块受图形基本资料影响与否。如果旗标未设定,则根据区块的前和后深度层绘示可见像素至框架缓冲器。如果旗标已设定,则对于受图形基本资料影响的每一个子区块去读取z缓冲区与根据由z缓冲区读出的资料,将可见像素绘示至框架缓冲器。
文档编号G06T15/40GK1560830SQ20041007035
公开日2005年1月5日 申请日期2004年7月29日 优先权日2003年9月23日
发明者洪洲, 洲 洪 申请人:旭上绘图股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1