提供用于在3D计算机图形系统中压缩顶点参数数据的方法和设备,其中顶点参数数据是与用于渲染图形的多个顶点相关的数据块。与每个顶点相关的数据包括与至少一个参数相关的多字节数据。所述参数包括X、Y和Z坐标及用于纹理和着色的其他坐标。多字节数据被划分成单字节且具有与每个顶点相关的相应字节位置的字节被组合在一起以形成多个字节块。在一种实施方式中,至少一个字节块通过以下步骤被压缩:将字节块中的至少一个字节存储为字节原点并将该字节块中剩余字节中的每个剩余字节存储为与其中一个字节原点的差值。在第二实施方式中,至少一个字节块通过以下步骤被压缩:识别字节块中的唯一字节,在字节增量表中将唯一字节中的至少一个存储为原始字节原点,在字节增量表中将剩余的唯一字节存储为与先前字节或字节原点的差值,以及通过参考字节增量表形成编码字节块中的字节的字节索引。还提供用于解压缩如此压缩的顶点参数数据的解压缩设备。这些能够随机访问压缩数据而不必读取数据流。
【技术实现步骤摘要】
【国外来华专利技术】
本专利技术涉及用于基于图块(tile based)的3维计算机图形系统中参数数据的无损压缩的方法和装置。
技术介绍
随着技术的快速发展,3维计算机生成的图像的复杂性也以相同速度增加。人们可以使用顶点和三角网格很容易地为非常复杂的3D对象(像人类运动)建立计算机模型。然后这种3D模型可以被发送至3D计算机图形系统,在该系统中,动感的3D图像可以被生成在计算机屏幕上。计算机生成的3D动感图像被广泛地用在3D计算机游戏、导航工具和计算机辅助工程设计工具中。3D计算机图形系统必须处理对更复杂的图形和更快的显示速度的不断需求。随着显示模型中细节的增加,越来越多的图形基元(primitive)和顶点被使用。另外,由于纹理和着色(shading)技术已经逐步发展,尤其随着可编程着色器(shader)语言的使用,越来越多的信息被关联于顶点数据(顶点参数数据)。在一些情况中,顶点参数数据大小可以是每个顶点大约100个32位字,并且在图像的渲染中可能存在百万个顶点。因此,在3D渲染中顶点参数数据的存储空间可以很容易地达到数百MB。由于3D计算机图形系统需要处理大量的顶点参数数据,该系统的性能经常受到顶点参数数据存储宽带的限制。对于基于图块的3D计算机图形系统而言尤其如此,其中被写入内部存储器中的顶点参数数据可以针对不同的图块(tile)而被多次读取,在该不同的图块中来自基元的顶点需要执行渲染。对于3D计算机图形系统来说,通过压缩3D渲染中使用的顶点参数数据来减小顶点参数数据带宽将是非常有益的。正如本领域技术人员所知晓的,基于图块的3D计算机图形系统将渲染表面划分成多个nXm的像素图块。如三角形、直线或点的基元仅仅针对与该基元重叠的图块而被处理。图1中示出在基于图块的3D计算机图形系统中用于平铺(tiling)的主要步骤。在3D渲染中,包含某些共享顶点的基元和在相似位置中的基元可以及时地连续到达。为了使对于顶点参数数据的存储器访问更有效,基于图块的3D计算机图形系统可以在基元的周围定义图块的边界框,并根据边界框中的图块及其包含的基元来限制引入的基元的数量。这允许来自与这些图块重叠的基元的顶点参数数据被一起组合到基元块中。基元通过索引至这些基元块中的索引来构建。为了控制顶点参数数据的缓冲区大小,这里通常存在着顶点的最大数量和包含在基元块中的基元的最大数量的限制,例如32个顶点和64个基元。图2中示出了来自基元块的数据结构。存在着用于基元块中顶点参数数据的定义(如顶点的数量和基元的数量)的位于开始位置处的基元块报头字,如图2中的20所示。在基元块报头字之后是来自基元块中的许多个顶点的顶点参数数据,如图2中的21所示。在该方案中,在3D渲染期间,来自基元块的一些基元可以被一些图块引用,而其他基元可以在其他图块中被引用。对基元块中顶点参数数据的访问要求对来自数据流的基元块进行随机访问。而且,基元块中的顶点参数数据可能被需要用于不同图块中的渲染,所以顶点参数数据被一次写入但可以被多次读取。对3D顶点参数数据压缩算法的常规要求是快速、无损压缩、以及压缩和解压缩算法本身所使用的最小存储器空间。这是因为要求快速和高质量3D计算机图形系统被实施在集成电路中的小硅面积中。对于基于图块的3D计算机图形系统,顶点参数数据压缩算法的附加要求是具备来自被压缩数据流的随机数据访问以及解压缩中快速且简单的算法的能力。一些常规无损压缩算法(如霍夫曼编码/解码)需要常规大小的数据缓冲区以执行压缩。这对于具有有限硅面积的3D计算机图形系统来说是不合适的。运行长度编码不需要用于压缩的额外数据缓冲区,但是像其他熵编码算法,数据压缩在连续访问的数据流(如视频显示中的彩色数据流)上被执行。如果在基于图块的3D计算机图形系统中被使用,用于基元块的整个顶点参数数据流必须在任何顶点数据可以被访问之前被解压缩。这对于基于图块的渲染而言是极其低效的,尤其是如果基元块包含覆盖许多图块的巨大三角形,在这种情况下整个顶点参数数据流被解压缩许多次,即使来自基元块的仅一些顶点被使用。通常,顶点参数数据值在3D计算机图形系统中被存储为32位浮点值。针对浮点顶点数据值使用定点表示可以很好地压缩基元块中的顶点数据。在定点格式中,浮点值可以由整数和固定数量的小数位一起表示。该方法将引起精确度降低,但是可以在来自顶点的X和Y坐标数据上很好地工作。因为计算机图形屏幕上的显示分辨率被固定为像素单元的一部分,因此来自屏幕上所渲染的基元的X和Y坐标被从原始浮点值转换成具有有限分辨率的屏幕值。对于其他顶点参数数据(像用于深度的Z、RHW和纹理坐标设置),数据的高精确度必须通过3D显示管来维持。已渲染图像中的伪像(artifact)可能由这些顶点参数数据中的表示的被降低精确度而引起。一些顶点数据压缩算法根据顶点的几何位置来压缩顶点参数数据值。例如,顶点被选为三角网格中的原点,顶点参数数据与来自原点顶点的参数数据之间的差值(增量值)被存储,而不是存储全部顶点参数数据值。增量值可以由整数或具有减小的范围以压缩数据流的定点值表示。此种算法适用于来自三角网格的顶点,其中顶点之间的顶点参数数据值在有限的范围内。压缩比率与表示增量值所需的位的数量有关。如长三角形带的常用三角网格可以包含具有以下特征的顶点:对于该种顶点,在基元块中顶点数据值的范围是巨大的。在这种情况中,由于需要许多位来存储增量值而使得压缩将是不可能的。为了在基于图块的3D计算机图形系统中降低顶点参数数据存储带宽,来自输入流的所有基元被预处理以移除屏幕外的、背面的、被修剪的或太小而不能显示的任何基元。在预处理之后,剩余基元被合并至具有固定数量的顶点的基元块中并被写入内部参数存储器中以用于3D处理。因此,基元块中的顶点并不保证属于单个三角网格,基元块中顶点参数数据值的范围可能太大而不能利用来自顶点原点的增量值进行压缩。
技术实现思路
本专利技术的优选实施方式包括可以被用于3D计算机图形顶点参数数据压缩的无损压缩方法和系统。其允许图形顶点参数数据被存储至较小的存储器空间中并因此降低图形设备的存储器需求。本专利技术能够采用简单、快速并需要非常有限的存储缓冲区的算法。这些算法还使得压缩后具有固定大小的顶点参数数据,从而允许随机访问基元块数据流中已压缩的顶点数据,这对于基于图块的3D计算机图形系统是特别有益的。在第一方面中,本专利技术提供一种在3D计算机图形系统中压缩顶点参数数据的方法,其中顶点参数数据包括与多个顶点相关的数据块,该与每个顶点相关的数据包括与至少一个参数有关的多字节数据,该方法包括以下步骤:将多字节数据划分成单字节;将来自与每个顶点有关的数据的相应字节组合在一起以形成多个字节块;以及使用压缩方法压缩字节块。这里使用的术语“相应字节”指的是多字节数据中的字节位置。因此,用于描述每个顶点的特定参数的数据值的最高有效字节(MSB)被组合在一起以形成MSB的字节块。类似地,用于那个参数的每个数据值的最低有效字节(LSB)被组合在一起以形成另一个字节块。专利技术人发现在图形顶点参数数据中,与完整的多字节值之间的相关性相比,多字节值的相应单个字节之间通常存在更大的相关性,且因此存在更大的压缩余地。不同字节块可以根据他们的内容使用不同压缩算法而被压缩。例如,字节块中所有字节本文档来自技高网...
【技术保护点】
【技术特征摘要】
【国外来华专利技术】2010.09.10 GB 1015149.61.一种在3D计算机图形系统中压缩顶点参数数据的方法,其中所述顶点参数数据包括与多个顶点相关的数据块,与每个顶点相关的所述数据包括与至少一个参数相关的多字节数据,所述方法包括以下步骤: 将所述多字节数据划分成单字节; 将具有来自与所述多个顶点相关的所述数据的相应字节位置的字节组合在一起以形成多个字节块;以及 使用第一压缩算法压缩所述字节块中的至少一个字节块,所述压缩算法包括将字节块中的至少一个字节存储为字节原点以及将所述字节块中的剩余字节中的每个剩余字节存储为与所述原点中的一个原点的差值。2.根据权利要求1所述的方法,其中所述压缩的步骤包括使用所述第一压缩算法压缩第一字节块及使用第二压缩算法压缩第二字节块。3.根据前述权利要求中任一权利要求所述的方法,其中用于顶点的每个参数的所述顶点参数数据包括符号位,并且所述方法还包括以下步骤:在所述划分的步骤之前将所述符号位移动至最低有效字节。4.根据权利要求1所述的方法,其中所述字节块中具有最小值的字节被选择作为字节原点。5.根据上述权利要求中任一项权利要求所述的方法,其中所述压缩的步骤包括:将字节块中的多个字节存储为单独的字节原点,并将所述字节块中剩余字节中的每个剩余字节存储为与其中一个所述字节原点的 差值。6.根据权利要求5所述的方法,其中所述压缩的步骤包括:将字节块中最小数量的字节存储为字节原点,该字节原点使得所有的差值都小于预定值。7.根据上述权利要求中的任一项权利要求所述的方法,其中所述压缩的步骤还包括: a)将来自字节块的第一字节和第二字节存储为用于定义字节范围的最大字节值和最小字节值; b)核查随后字节的值,并且如果所述随后字节的值不在所述字节范围内,则使用所述随后字节的值替代所述最大字节值或所述最小字节值以形成更新的最大字节值和最小字节值以及更新的字节范围; c)针对所述字节块中的每个随后字节重复步骤b)直至定义所述字节范围所需的位数超出预定位数,然后 d)将所述字节范围拆分成两个字节范围,所述两个范围中的每一个范围能够使用所述预定位数或小于所述预定位数的位数进行定义; e)核查每个随后字节的值,并且如果随后字节的值在所有所述字节范围外,则用该随后字节的值替代所述范围中的一个范围的所述最大字节值或最小字节值以形成更新的最大字节值和最小字节值及更新的字节范围; f)针对所述字节块中的每个随后字节重复步骤e)直至定义字节范围所需的位数超出预定位数,并且然后重复步骤e)直至所述字节块中的所有字节都在字节范围内; 其中字节块中字节范围的数量与所述压缩的步骤中使用的字节原点的数量一致。8.根据权利要求7所述的方法,所述方法还包括以下步骤:在步骤f)后,合并两个字节范围以形成合并的字节范围。9.根据上述权利要求中任一项权利要求所述的方法,所述3D计算机图形系统是基于图块的3D计算机图形系统。10.根据上述权利要求中的任一项权利要求所述的方法,所述方法还包括以下步骤:在所述压缩的步骤之后合并所述字节块以形成压缩的数据块。11.一种用于在3D计算机图形系统中压缩顶点参数数据的设备,其中所述顶点参数数据包括与多个顶点相关的数据块,与每个顶点相关的所述数据包括与至少一个参数相关的多字节数据,所述设备包括: 划分装置,被配置成将所述多字节数据划分成单字节并将具有来自与所述多个顶点相关的所述数据的相应字节位置的字节组合到一起,以形成多个字节块;以及 压缩装置,被配置成使用压缩算法压缩所述字节 块中的至少一个字节块,所述压缩算法包括将字节块中的至少一个字节存储为字节原点...
【专利技术属性】
技术研发人员:X·杨,
申请(专利权)人:想象技术有限公司,
类型:
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。