纹理映射系统及其方法

文档序号:6414106阅读:661来源:国知局
专利名称:纹理映射系统及其方法
技术领域
本发明涉及一种纹理映射系统及其方法,尤其涉及一种使用最小容量和最小存取时间的纹理高速缓冲存储器的纹理映射系统及其方法。
通常,在三维(3D)图形场中,屏幕上的大多数像素是通过纹理映射产生的,因此,图形的性能取决于纹理映射的性能。


图1表示传统的纹理映射的图形处理器的一个实施例。该图形处理器包括几何处理器100、帧像器(rasterizer)110、监视器120、和帧缓冲存储器/纹理存储器130。几何处理器100计算待以多边形为单位描绘的物体的几何信息的变化,并转换其结果,以将其投射到监视器120的屏幕上。帧像器110从投射的多边形中计算形成帧像(rasterization)所需的参数,并使用该参数来产生各多边形中的像素值。用于存储形成图像的每个像素的亮度数据的帧缓冲存储器/纹理存储器130将其一部分作为存储待被纹理映射的纹理素(texel)数据的纹理存储器区。在图1所示的结构中,存储器带宽较窄,因此降低了纹理素数据的读取(fetch)速度。
为了解决该问题,可将用于存储待被纹理映射的图像数据的纹理存储器与帧缓冲存储器分离地设置。因此,可增加存储器带宽,然而,访问外部存储器的数据读取速度仍受到限制。此外,可将能够存储一个纹理的存储器嵌入帧像器中,其中一个画面由几十或几百个纹理图像构成。这里,存储器读取速度增大,然而,帧像器需要具有足以容纳纹理图像数据的容量的存储器。
如上所述,在纹理映射中,从纹理存储器读取纹理素时存在瓶颈,纹理素是指用于纹理映射的数据。最好,通过使用纹理高速缓冲存储器快速读取数据而提高纹理素的读取速度。然而,纹理图像数据是二维的,并且待被纹理映射的每个物体是随眼睛位置的改变而时刻变化的。因此,预读取纹理素的地址值是不可预测的。
为了解决上述问题,本发明的一个目的是提供一种纹理映射系统和纹理映射方法,该纹理映射系统包括纹理高速缓冲存储器,用于减小存储器容量,并减少数据存取次数,从而提高纹理映射速度。
因此,为了实现上述目的,用于通过纹理映射来产生显示在屏幕上的像素的纹理映射系统包括纹理高速缓冲存储器,用于对一个扫描行存储从帧缓冲存储器读取的纹理图像数据,其中纹理高速缓冲存储器包括列结构,由存储纹理图像数据的图像坐标值(u,v)的标记(tag)区域、存储相应于标记区域的图像坐标值的纹理图像数据的重填行区域(refill line regton)、和表示是否存取重填行区域的数据的有效位区域组成;和行结构,其数量与覆盖待被纹理映射的至少一个扫描行的最大长度的图像的纹理图像补丁数据(texture imagepatch data)的和数量相同,用于存储待被纹理映射的纹理图像补丁数据。
最好,在重填行区域中,通过数据压缩方法和表示其纹理素的颜色和透明度的每个像素的位数(bits perpixel,bpp)来确定一个行的容量,并且图像坐标周围的纹理素数据被存储在每个行中。
最好,有效位区域包括第一有效仁区域,用于存储表示重填行区域的纹理图像补丁数据是否用于先前扫描行纹理映射的数据;和第二有效位区域,用于写入表示重填行区域的纹理图像补丁区域是否用于当前扫描行纹理映射的数据,并在当前扫描行纹理映射之后将存储的数据移位到第一有效位区域。
为了实现上述目的,提供一种使用纹理高速缓冲存储器的纹理映射方法,该高速缓冲存储器用于相对于一个扫描行图像存储从待被纹理映射的帧缓冲存储器读取的纹理图像数据,该方法包括如下步骤a)将表示存储在相应的纹理高速缓冲存储器行中的纹理图像补丁数据是否用于先前扫描行纹理映射的第二有效位区域的数据移位到作为纹理高速缓冲存储器中的另一个存储器的第二有效位区域,并当开始新扫描行的纹理映射时,将第二有效位区域的数据进行复位;b)检查用于存储待被纹理映射的纹理素数据的图像坐标(u,v)的标记区域是否包括与对当前扫描行的一个图像产生的(u,v)地址相同的地址;c)当标记区域不包括与对当前扫描行的一个图像产生的(u,v)地址相同的地址时,从帧缓冲存储器读取(u,v)地址周围的纹理图像数据补丁,并将纹理图像数据补丁存储在第一有效位区域被复位的重填行区域中;d)当标记区域包括与对当前扫描行的一个图像产生的(u,v)地址相同的地址时或在执行步骤c)后,读取相应的重填行区域的纹理图像补丁数据的值,并设置相应行的第二有效位区域的数据;和e)当待被纹理映射的像素是当前扫描行的最后一个像素时,结束当前扫描行的纹理映射数据存取,而当不是时,从步骤b)重复进行处理。
为了实现上述目的,提供一种纹理映射系统,包括几何处理器,用于计算待被以多边形为单位描绘的物体的几何信息的变化,并转换其结果,以将其投射到监视器屏幕上;帧缓冲存储器,用于存储相对于形成图像的每个像素的亮度值的数据;纹理高速缓冲存储器,其包括列结构和行结构,该列结构由标记区域、重填行区域、和有效位区域组成,其中该标记区域在对覆盖一个扫描行的图像进行纹理映射期间存储从帧缓冲存储器读取的纹理图像数据的图像坐标值(u,v),该重填行区域存储相应于标记区域的图像坐标值的纹理图像数据,该有效位区域表示是否存取重填行区域的数据,该行结构的数量与覆盖待被纹理映射的至少一个扫描行的最大长度的图像的纹理图像补丁数据的数量相同,用于存储待被纹理映射的纹理图像补丁数据;和帧像器,用于使用由几何处理器产生的信号和从纹理高速缓冲存储器读取的纹理图像补丁数据来形成帧像。
通过参照附图详细描述本发明的优选实施例,本发明的上述目的和优点将变得更加清楚,附图中图1表示传统图形处理器的一实施例;图2表示本发明纹理映射系统;图3表示本发明纹理高速缓冲存储器的结构;图4表示用于解释本发明的纹理图像;和图5是本发明纹理映射方法的流程图。
参照图2,纹理映射系统包括几何处理器200、帧像器210、纹理高速缓冲存储器220、和帧缓冲存储器230。几何处理器200计算待被以多边形为单位描绘的物体的几何信息的变化,并对结果进行转换,以投射到监视器的屏幕上。帧像器210从投射的多边形中计算形成帧像所必需的参数,并使用该参数采产生多边形中的像素值。帧缓冲存储器230存储相对于形成图像的每个像素的亮度值的数据。纹理高速缓冲存储器220在对覆盖一个扫描行的图像进行纹理映射期间存储由帧像器210从帧缓冲存储器230读取的纹理图像数据。纹理高速缓冲存储器220(一种典型的高速缓冲存储器)确定用于先前扫描行的纹理映射的纹理图像数据是否包括待被用于当前扫描行纹理映射的纹理图像数据。当存储于纹理高速缓冲存储器220并在先前扫描行的纹理映射中从帧缓冲存储器230读取的纹理图像数据包括待被用于当前扫描行的纹理映射的数据时,将引起高速缓冲存储器命中(hit),从而提高数据存取速度,然而,当出现高速缓冲存储器未命中(miss)时,则从帧缓冲存储器230中读取相应的纹理图像数据,以将其存储到纹理高速缓冲存储器220。
图3表示本发明纹理高速缓冲存储器220的结构,纹理高速缓冲存储器220包括第一有效位区域300、第二有效位区域301、标记区域310、和重填(refill)区域320。
第一有效位区域300存储表示相应的重填区域的纹理图像读取数据是否用于对先前扫描行进行纹理映射。例如,当图3的‘第一有效位0’被置位时,它表示存储在‘重填0’中的纹理图像读取数据被用于先前扫描行纹理映射。当‘第一有效位2’被复位时,它表示存储在‘重填2’中的纹理图像读取数据未被用于先前扫描行纹理映射。第二有效位区域301存储表示存储在相应的重填行区域320中的纹理图像读取数据是否被用于当前扫描行纹理映射。当当前扫描行纹理映射完成时,存储在第二有效位区域301中的数据被移位到第一有效位区域300,然后被复位。
用于管理高速缓冲存储器以在对下一个扫描行进行纹理映射时产生最大高速缓冲存储器命中的第一和第二有效位区域300和301,可减小向纹理高速缓冲存储器220读取帧缓冲存储器230的纹理素数据的时间及其次数。其中第一有效位被置位的重填行的数据可在当前扫描行的纹理映射中被再次存取。也就是说,提高了高速缓冲存储器命中概率。然而,由于其中对应行的第一有效位被复位的重填行的数据不被用于先前扫描行的纹理映射,因此,不可能出现高速缓冲存储器命中。因此,纹理高速缓冲存储器220采用从帧缓冲存储器230中读出的新数据更新。换言之,表示对应重填行区域的数据是否用于先前扫描行纹理映射的数据被存储在第一有效位区域300。存储在第一有效位区域300中的数据确定在当前扫描行的纹理映射期间新数据是否被更新到对应行的重填行区域。表示重填行区域的数据是否被用于当前扫描行的纹理映射的数据被存储在第二有效位区域301,而第二有效位区域30l的所有数据在下一个扫描行纹理映射开始之前被移位到第一有效位区域300。然后,第二有效位区域301被复位。
纹理数据的图像坐标(u,v)被存储在标记区域310中。为扫描行纹理映射计算出的坐标(u,v)与存储在标记区域中的坐标(u,v)进行比较,从而确定相应于为扫描行纹理映射所计算出的坐标(u,v)的纹理数据是否存在于纹理高速缓冲存储器220中。这里,计算出的值(u,v)与标记区域310的所有数据同时进行比较。当纹理高速缓冲存储器220包括为纹理映射所计算出的图像坐标值时,则出现高速缓冲存储器命中,而当不包括时,则出现高速缓冲存储器未命中。当高速缓冲存储器未命中时,帧缓冲存储器230的数据被以补丁(patch)为单位读到纹理高速缓冲存储器。
标记的位数取决于应用中的屏幕分辨率及图像压缩方法。例如,当纹理图像的尺寸为1280×1024时,构成坐标(u,v)的位数分别为11和10。此时,当采用JPEG方法压缩纹理图像时,8×8个像素被压缩成一个块组(blockpackage),并被存储到图2的纹理高速缓冲存储器的重填行区域320。因此,表示一个数据补丁的地址的位数是分别从11和10中减去LSB 3位而获得的8和7,而存储在标记区域中的标记数据(或u,v坐标)的位数是通过将8与7相加而得到的15。
重填行区域320存储相应于标记区域的图像坐标的纹理图像补丁数据。一个重填行的尺寸是通过压缩方法和基于纹理素的颜色和透明度信息的每个像素的位数(bpp)而确定的。
参照图4,纹理图像的尺寸是128×128。当bpp是16位并采用JPEG方法进行压缩时,覆盖一个扫描行需要32个补丁数据。因此需要有存储32或更多的8×8×16的纹理素数据的存储容量。在图4的图像中,纹理映射最多需要32个补丁数据,而不必考虑对整个128×128×16的纹理图像的扫描方向。例如,在图4中,扫描行在覆盖图像最大长度的部分进行延伸,并且16×2个补丁数据沿着该扫描行排成一直线。如图3所述,用于先前扫描行的纹理映射的纹理图像补丁数据仍旧存储在纹理高速缓冲存储器中而未被刷新,从而当在当前扫描行的纹理映射中出现高速缓冲存储器未命中时,存储新数据的空间就显不足。因此,存储器空间必须大于用于存储一个扫描行的纹理映射所需的最大补丁数据数量的空间。考虑到覆盖一个扫描行的补丁数据量及与和它相邻的扫描行共享的补丁数据量(即由于高速缓冲存储器命中而不必通过外部存取而存储的补丁数据量),对于纹理高速缓冲存储器22O还需要补丁数据最大量的一半。图4的图像的纹理高速缓冲存储器的行(lines或rows)的数量是48,这是补丁最大数据量的1.5倍,因此纹理高速缓冲存储器220大约需要6KB的存储器。
用于对图4的图像进行纹理映射的传统纹理存储器需要可存储65536个像素的数据的容量。而图2的纹理高速缓冲存储器最多仅需要存储8×8×48(即3072)个像素的数据的容量,其中,8×8表示补丁数据,而48表示重填行数目。这表明,帧像器的纹理高速缓冲存储器的容量减少到传统的纹理存储器容量的4.68%。
在图5中,当新扫描行开始时,第二有效位区域301的数据被移位到第一有效位区域300(步骤500)。第二有效位区域301的数据被复位(步骤501)。确定包含在当前扫描行中的像素的(u,v)地址是否存在于纹理高速缓冲存储器的标记区域310中(步骤520)。当没有相应的(u,v)地址时,则从外部存储器(即图2的帧缓冲存储器230)读出(u,v)地址周围的纹理图像补丁数据,以将数据存入第一有效位区域300的数据被复位的一行的重填行区域320(步骤530)。第一有效位区域中的相应行的数据被置成‘1’(步骤540)。当在步骤520中标记区域中存在(u,v)地址时或进行步骤530后,相应行的重填行区域320的纹理图像补丁数据的值被读取(步骤550),并且相应的第二有效位区域301的数据被置位(步骤560)。确定待被纹理映射的像素是否为最后的像素(步骤570)。如果该像素是最后一个,则结束当前扫描行的纹理图像数据的存取,而如果不是,则从步骤520起重复进行该处理。
根据本发明的包括纹理高速缓冲存储器的纹理映射系统和纹理高速缓冲存储器的数据加载方法,减小了图形处理芯片的纹理存储器容量,进而降低了芯片成本,并且由于高速缓冲存储器的命中而大大减小了数据存取时间,从而提高了进行纹理映射的速度。
权利要求
1.一种用于通过纹理映射来产生显示在屏幕上的像素的纹理映射系统,包括纹理高速缓冲存储器,用于对一个扫描行存储从帧缓冲存储器读取的纹理图像数据,其中纹理高速缓冲存储器包括列结构,由存储纹理图像数据的图像坐标值(u,v)的标记区域(tag region)、存储相应于标记区域的图像坐标值的纹理图像数据的重填行区域(refill line region)、和表示是否存取重填行区域的数据的有效位区域组成;和行结构,其数量与覆盖待被纹理映射的至少一个扫描行的最大长度的图像的纹理图像补丁数据(texture image patch data)的数量相同,用于存储待被纹理映射的纹理图像补丁数据。
2.如权利要求l所述的系统,其中所述行结构具有相对于待被纹理映射的一个扫描行的最大纹理图像补丁数据量的1.5倍。
3.如权利要求1所述的系统,其中在重填行区域中,通过数据压缩方法和表示纹理素的颜色和透明度的每个像素的位数(bits per pixel,bpp)来确定一个行的容量,并且图像坐标周围的纹理素(texel)数据被存储在每个行中。
4.如权利要求1所述的系统,其中所述有效位区域包括第一有效位区域,用于存储表示重填行区域的纹理图像补丁数据是否用于先前扫描行纹理映射的数据;和第二有效位区域,用于写入表示重填行区域的纹理图像补丁区域是否用于当前扫描行纹理映射的数据,并在当前扫描行纹理映射之后将存储的数据移位到第一有效位区域。
5.一种使用纹理高速缓冲存储器的纹理映射方法,所述纹理高速缓冲存储器用于相对于一个扫描行图像存储从待被纹理映射的帧缓冲存储器读取的纹理图像数据,所述方法包括如下步骤a)将表示存储在相应的纹理高速缓冲存储器行中的纹理图像补丁数据是否用于先前扫描行纹理映射的第二有效位区域的数据移位到作为纹理高速缓冲存储器中的另一个存储器的第一有效位区域,并当开始新扫描行的纹理映射时,将第二有效位区域的数据进行复位;b)检查用于存储待被纹理映射的纹理素数据的图像坐标(u,v)的标记区域是否包括与对当前扫描行的一个图像产生的(u,v)地址相同的地址;c)当标记区域不包括与对当前扫描行的一个图像产生的(u,v)地址相同的地址时,从帧缓冲存储器读取(u,v)地址周围的纹理图像数据补丁,并将纹理图像数据补丁存储在第一有效位区域被复位的重填行区域中;d)当标记区域包括与对当前扫描行的一个图像产生的(u,v)地址相同的地址时或在执行步骤c)后,读取相应的重填行区域的纹理图像补丁数据的值,并置位相应行的第二有效位区域的数据;和e)当待被纹理映射的像素是当前扫描行的最后一个像素时,结束当前扫描行的纹理映射数据存取,而当不是时,从步骤b)重复进行处理。
6.一种纹理映射系统,包括几何处理器,用于计算待被以多边形为单位描绘的物体的几何信息的变化,并转换其结果,以将其投射到监视器屏幕上;帧缓冲存储器,用于存储相对于形成图像的每个像素的亮度值的数据;纹理高速缓冲存储器,包括列结构和行结构,所述列结构由标记区域、重填行区域、和有效位区域组成,其中所述标记区域在对覆盖一个扫描行的图像进行纹理映射期间存储从帧缓冲存储器读取的纹理图像数据的图像坐标值(u,v),所述重填行区域存储相应于标记区域的图像坐标值的纹理图像数据,所述有效位区域表示是否存取重填行区域的数据,所述行结构的数量与覆盖待被纹理映射的至少一个扫描行的最大长度的图像的纹理图像补丁数据的数量相同,用于存储待被纹理映射的纹理图像补丁数据;和帧像器(rasterizer),用于使用由几何处理器产生的信号和从纹理高速缓冲存储器读取的纹理图像补丁数据来形成帧像(rasterization)。
全文摘要
通过纹理映射产生屏幕上的像素的纹理映射系统及其方法,该系统包括纹理高速缓冲存储器,其存储对一个扫描行从帧缓冲存储器读取的纹理图像数据,其中包含由标记区域、重填行区域和有效位区域组成的列结构和数量与相对于覆盖待被纹理映射的至少一扫描行的最大长度的图像的纹理图像补丁数据量相同的行结构。采用该系统和数据加载方法,图形处理芯片容量减小,因此芯片成本降低,进而减小了数据存取速度,从而快速进行纹理映射。
文档编号G06T15/00GK1212412SQ9810776
公开日1999年3月31日 申请日期1998年4月30日 优先权日1997年9月19日
发明者崔相吉 申请人:三星电子株式会社
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1