CN104143990A - 顶点参数数据压缩 - Google Patents
顶点参数数据压缩 Download PDFInfo
- Publication number
- CN104143990A CN104143990A CN201410193721.9A CN201410193721A CN104143990A CN 104143990 A CN104143990 A CN 104143990A CN 201410193721 A CN201410193721 A CN 201410193721A CN 104143990 A CN104143990 A CN 104143990A
- Authority
- CN
- China
- Prior art keywords
- piece
- data
- section
- compression
- summit
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/60—Memory management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T9/00—Image coding
- G06T9/001—Model-based coding, e.g. wire frame
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T9/00—Image coding
- G06T9/005—Statistical coding, e.g. Huffman, run length coding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/20—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using video object coding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/60—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
- H04N19/63—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding using sub-band based transform, e.g. wavelets
- H04N19/64—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding using sub-band based transform, e.g. wavelets characterised by ordering of coefficients or of bits for transmission
- H04N19/647—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding using sub-band based transform, e.g. wavelets characterised by ordering of coefficients or of bits for transmission using significance based coding, e.g. Embedded Zerotrees of Wavelets [EZW] or Set Partitioning in Hierarchical Trees [SPIHT]
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Signal Processing (AREA)
- Compression Of Band Width Or Redundancy In Fax (AREA)
- Image Generation (AREA)
Abstract
本发明的各实施例涉及顶点参数数据压缩。提供了用于压缩顶点参数数据的方法和计算机图形系统。顶点参数数据包括数据块,该数据块包括顶点的与至少一个参数有关的数据。顶点中的每个顶点的数据包括在相应位置的多个数据段。分析数据块中的数据以确定压缩分组方案,顶点的数据段根据该压缩分组方案被一起分组成用于压缩的段块。数据的分析确定适合数据在数据块中的分布的压缩分组方案,以由此提高可以在压缩数据块时实现的压缩比。
Description
技术领域
本发明的各实施例总体上涉及数据压缩,并且更具体地涉及顶点参数数据压缩。
背景技术
计算机图形系统(比如三维(3D)和二维(2D)计算机图形系统)用来处理用于渲染计算机图形的数据。日益需要计算机图形系统用更快的显示速度处理更复杂的图形数据。计算机图形系统的一个示例是用于使用基于瓦片(tile)的渲染来渲染2D或者3D计算机图形图像的基于瓦片的图形系统。作为基于瓦片的渲染技术的一部分,渲染空间被细分成被称为瓦片或者块(这里被称为“瓦片”)的多个区域,每个瓦片包括多个像素。瓦片经常为矩形,但是它们可以是其它形状,比如三角形或者六边形。渲染空间可以对应于用于在屏幕上显示的图像,但是其它渲染目标(比如存储器中的纹理数据)也是可能的。瓦片可以是各种大小,但是作为示例,瓦片可以是16×16个像素。在高屏幕分辨率图像的一个示例中,有1280×1024个像素。因此,作为示例,可以将高屏幕分辨率图像细分成5120个瓦片(每个瓦片包括16×16个像素)。
基于瓦片的渲染器在存储器中的数据块(或者“原语块”)中存储代表几何对象或者其它形状的原语数据。在原语块中的原语数据包括与一个或者多个参数有关的多个顶点的数据以由此描述原语。顶点的数据可以与参数(比如顶点的位置和将向原语应用的纹理)有关。随着图形数据的复杂性和显示速度增加,在用于渲染图像的计算机图形系统中每秒使用的顶点参数数据量增加。在一个示例中,顶点参数数据包括每顶点的多个32比特数据字,并且可以在3D图像的渲染中有百万级的顶点。因此,用于在3D渲染中使用的顶点参数数据的存储器空间可以容易地达到数百万MB。
由于计算机图形系统处理的顶点参数数据量,系统的性能可能受顶点参数数据存储器带宽(即在其中处理顶点参数数据的处理单元与其中存储顶点参数数据的存储器之间的带宽)的影响(例如,限制)。顶点参数数据存储器带宽是针对基于瓦片的3D计算机图形系统的特定问题,在这些3D计算机图形系统中,多次向存储器写入并且可能从存储器读取顶点参数数据以用于处理不同瓦片,其中需要来自原语的顶点以执行渲染。
在用于存储顶点参数数据的存储器中的可用空间以及存储器带宽可能是影响3D计算机图形系统的性能的因素。
为了解决这些问题,可以压缩顶点参数数据。压缩顶点参数数据减少向存储器中写入和从存储器读取的顶点参数数据量并且减少存储顶点参数数据而需要的存储器量。
一些压缩算法有损而一些压缩算法无损。在有损压缩算法用来压缩数据时,丢失数据中的一些数据。例如,可能由于用有损压缩算法压缩而减少数据的准确性。对照而言,在无损压缩算法用来压缩数据时,未丢失数据。也就是说,在用无损压缩算法压缩并且然后用适当解压算法解压数据时,在压缩和解压过程之后的数据与在压缩和解压过程之前的数据相同。与参数中的至少一些参数有关的顶点的数据可以对略微改变很敏感,并且这样以避免在渲染的图像中的非自然成分,无损压缩算法用来压缩顶点参数数据。
发明内容
提供这一发明内容以用简化形式介绍以下在具体实施方式中进一步描述的概念选集。这一发明内容并非旨在于标识要求保护的主题内容的关键特征或者实质特征,也并非旨在于用来限制要求保护的主题内容的范围。
提供了一种压缩计算机图形系统中的顶点参数数据的方法。顶点参数数据包括数据块,该数据块包括顶点的与至少一个参数有关的数据。顶点中的每个顶点的数据包括在相应位置的多个数据段。该方法包括分析数据块中的数据以确定用于将顶点的数据段分组成用于压缩的段块的压缩分组方案。根据确定的压缩分组方案将顶点的数据段分组在一起以形成多个段块。压缩分组方案被确定以使得段块中的每个段块包括顶点中的相应多个顶点的一个或者多个数据段的多个段集合,段集合在顶点中的多个顶点中的每个顶点的数据内具有对应位置。压缩段块中的至少一个段块。在压缩段块中的至少一个段块之后,使用段块以形成压缩的数据块。
可以通过分析数据在数据块中的分布并且基于分析以允许数据块的更大压缩的方式将顶点的数据段分组在一起来改进(即,减少)压缩的数据块的压缩比(即,压缩的数据块的大小除以未压缩的数据块的大小)。有利于压缩的数据分布未必与顶点的数据中的8比特边界对准。数据的分析可以确定适合数据在数据块中的分布的压缩分组方案。
根据这里描述的示例,被一起分组成段块的段集合在多个顶点中的每个顶点的数据内具有对应位置。也就是说,顶点的具有相同显著性的段集合被一起分组成段块。以这一方式,顶点中的每个顶点的最高有效数据段被一起分组段块。相似地,顶点中的每个顶点的最低有效数据段被一起分组段块。
提供了一种计算机图形系统,该计算机图形系统包括被配置用于压缩顶点参数数据的处理单元,其中顶点参数数据包括数据块,该数据块包括顶点的与至少一个参数有关的数据,其中顶点中的每个顶点的数据包括在相应位置的多个数据段。处理单元被配置用于:分析数据块中的数据以确定用于将顶点的数据段分组成用于压缩的段块的压缩分组方案;根据确定的压缩分组方案将顶点的数据段分组在一起以形成多个段块,压缩分组方案被确定以使得段块中的每个段块包括顶点中的相应多个顶点的一个或者多个数据段的多个段集合,段集合在顶点中的多个顶点中的每个顶点的数据内具有对应位置;压缩段块中的至少一个段块;并且在压缩段块中的至少一个段块之后,使用段块以形成压缩的数据块。
提供了一种在计算机图形系统中被配置用于压缩顶点参数数据的数据压缩单元,其中顶点参数数据包括数据块,该数据块包括顶点的与至少一个参数有关的数据,其中顶点中的每个顶点的数据包括在相应位置的多个数据段。该数据压缩单元包括:分析模块,被配置用于分析数据块中的数据以确定用于将顶点的数据段分组成用于压缩的段块的压缩分组方案;分组模块,被配置用于根据确定的压缩分组方案将顶点的数据段分组在一起以形成多个段块;以及压缩模块,被配置用于压缩段块中的至少一个段块并且使用段块以形成压缩的数据块,其中分析模块被配置用于确定压缩分组方案以使得由分组模块形成的段块中的每个段块包括顶点中的相应多个顶点的一个或者多个数据段的多个段集合,段集合在顶点中的多个顶点中的每个顶点的数据内具有对应位置。
还提供了一种解压已经使用这里描述的方法而被压缩的压缩的顶点参数数据的方法(和一种计算机图形系统,该计算机图形系统包括被配置用于解压该压缩的顶点参数数据的处理单元和在计算机图形系统中被配置用于解压该压缩的顶点参数数据的数据解压单元)。
以上特征可以如本领域技术人员将清楚的那样在适当时被组合并且可以与这里描述的示例的方面中的任何方面组合。
附图说明
现在将通过参照附图的方式具体描述示例,在附图中:
图1是计算机图形系统的简化图;
图2是数据块的表示;
图3是用于压缩顶点参数数据的过程的流程图;
图4是在数据块中的顶点参数数据的第一示例;
图5是在数据块中的顶点参数数据的第二示例;
图6是在数据块中的顶点参数数据的第三示例;以及
图7是扩展的数据范围编码的示例。
公共标号在适当时贯穿各图用来指示相似特征。
具体实施方式
现在将仅通过示例的方式描述实施例。
图1示出了计算机图形系统100的示例的简化图。计算机图形系统100是3D基于瓦片的计算机图形系统,该计算机图形系统包括被配置用于处理数据的处理单元102和用于存储数据的参数缓冲器104,参数缓冲器104位于计算机图形系统100中的系统存储器中。系统100可以实施于设备(比如智能电话、平板计算机、膝上型计算机、PC、电视或者其中将处理图形数据的任何其它适当设备)上。3D计算机图形系统100被配置用于例如从应用接收数据、处理数据并且提供经处理数据的输出。可以在硬件或者软件或者其组合中实施处理单元102。例如,处理单元102可以实施于包括被配置用于如这里描述的那样相应地处理数据的电路的固定功能的硬件中。例如,处理单元102可以是图形处理单元(GPU)或者可以是被实施为在可编程设备(比如GPU或者中央处理单元(CPU))上运行的计算机程序。
处理单元102的输入被布置用于例如从应用接收输入图形数据。处理单元102的第一输出耦合到参数缓冲器104的输入。参数缓冲器104的输出耦合到处理单元102的输入。处理单元102的第二输入提供经处理数据作为输出以例如用于在系统100在其中操作的设备的显示器上显示或者用于在设备中的存储器中存储。
处理单元102包括为了清楚而在图1中未示出的用于处理数据的多个功能块。例如,处理单元102可以包括在操作中将渲染空间划分成多个瓦片的瓦片化单元,每个瓦片包括多个像素。瓦片可以是矩形(包括正方形),但是它们可以是其它形状,比如三角形或者六边形。渲染空间可以对应于用于在屏幕上显示的图像,但是其它渲染目标(比如在存储器中的纹理数据)也是可能的。处理单元102的瓦片化单元被布置用于例如从在其上实施系统100的设备上当前运行的应用接收图形数据。图形数据包括定义用于显示的对象的几何数据。瓦片化单元接收几何数据并且从几何数据推导多个原语。原语代表几何对象或者其它几何形状。原语经常为多边形(比如三角形),但是可以具有其它形式,比如线、点或者补丁。原语的顶点的数据用来代表原语。顶点的数据与参数(比如顶点的位置(X、Y和Z值)以及顶点的其它特征如颜色和纹理)有关。描述原语的顶点数据项被分组成数据块(这里也被称为“原语块”)以用于在存储器中存储。每个原语块包含描述可以位于多个瓦片中的多个原语的顶点数据。
对于每个原语,处理单元102的瓦片化单元确定原语至少部分位于瓦片中的哪个瓦片内。也就是说,瓦片化单元确定原语的至少部分是否位于瓦片的可查看区域内。这可以使用多种公知技术来完成。以这一方式,瓦片化单元推导显示列表,该显示列表对于每个瓦片包括标识参数的标识符,这些参数描述部分或者全部位于瓦片内的原语。也就是说,用于瓦片的显示列表包括指向原语块的指针集合,这些原语块包含在瓦片内至少部分可见的几何形状。指针中的每个指针包括掩码,该掩码指示来自该原语块的在存在于瓦片中的原语中包括的顶点子集。以这一方式,用于瓦片的显示列表通过在原语块中提供指向相关顶点的指针来标识处理瓦片所需要的顶点中的每个顶点。
从处理单元102(例如,从在处理单元102内的瓦片化单元)向参数缓冲器104发送原语块以用于在其中存储。
处理单元102包括用于处理图形数据的更多处理块。例如,处理单元102包括图像合成处理器(ISP)块以及纹理和阴影化处理器(TSP)块。从瓦片化单元向在处理单元102内的ISP块提供显示列表。ISP块轮流处理每个瓦片。例如,ISP块实施隐藏表面去除(HSR)以由此在TSP块处理瓦片之前从图像去除将不会影响渲染的图像的片段。为了实施用于瓦片的HSR,ISP块处理在瓦片的显示列表中指示的原语以确定哪些可见而哪些被隐藏。从而使得ISP块可以处理在瓦片内的原语,从参数缓冲器104取读在瓦片的显示列表中包括的顶点的几何数据。TSP块处理瓦片以将纹理化和阴影化应用于在瓦片内可见的对象。向在处理单元102内的TSP块提供来自ISP块的输出以指示TSP块为了处理瓦片而将需要的可见原语。从而使得TSP块可以处理在瓦片内的可见原语,从参数缓冲器104取读用于在瓦片的显示列表中包括的关联原语的纹理化和阴影化的顶点属性数据。TSP块然后例如通过实施纹理化和阴影化来处理瓦片。
处理单元102可以包括在提供经处理数据作为处理单元102的输出之前处理瓦片的更多处理块。由在处理单元102内的更多处理块完成的处理的细节超出本描述的范围,但是更多处理块中的一些处理块可以用与其中ISP块和TSP块如以上描述的那样从参数缓冲器104取读顶点参数数据的方式相似的方式从参数缓冲器104取读顶点参数数据。
因此,从处理单元102(例如,从瓦片化单元)向参数缓冲器104中写入顶点参数数据。另外,顶点参数数据由处理单元102(例如,由ISP和TSP块)从参数缓冲器104读取一次或者多次以用于处理多个瓦片。
顶点参数数据在处理单元102与参数缓冲器104之间的通信可以影响处理单元102能够处理图形数据的速度。例如,参数缓冲器104可以在系统存储器中并且可以未位于与处理单元102相同的物理芯片上。在处理单元102与参数缓冲器104之间的通信与处理单元102可以执行的无需与系统存储器通信的其它过程比较可以很慢。在这里描述的示例中,通过在向参数缓冲器104发送数据之前在处理单元102中压缩顶点参数数据并且在处理单元102中解压从参数缓冲器104读取的顶点参数数据来减少在处理单元102与参数缓冲器104之间通信的数据量。因此,如图1中所示,压缩在处理单元102与参数缓冲器104之间在两个方向上发送的顶点参数数据。这里描述了处理单元102可以实施的用于减少在处理单元102与参数缓冲器104之间通信的数据量的压缩和解压方案的示例。
在3D渲染中,来自应用的输入数据流的原语由基于瓦片的3D计算机图形系统100在时间上依次接收并且在预处理之后被分组成原语块。因此,在原语块以内的原语主要来自相同三角形网,并且在相似位置(例如,与相同瓦片重叠)的原语的顶点数据被一起分组成相应原语块(注意,如这里所用的术语“重叠”将被理解为意味着“至少部分重叠”)。因此,很可能的是在原语块内的一个顶点的数据与在相同原语块内的另一顶点的数据相似。可以有可以在原语块内包含其数据的顶点的最大数目的限制,该最大数目可以例如是64或者256个顶点。图2示出了原语块200的数据结构的简化表示。原语块200包括头部202,头部202包含原语块头部数据,该原语块头部数据用于定义原语块200中的顶点参数数据以例如指示原语块200中的顶点数目和原语数目。原语块200也包括顶点参数数据204,顶点参数数据204包括在原语块200中包括的多个顶点(例如,N个顶点)的数据。在原语块200中的顶点的数据可以被分离地以原语块200中的顶点中的其它顶点的数据为参考。这允许在3D渲染期间参考原语块200中的顶点的数据以用于在处理一些瓦片时使用并且参考原语块200中的顶点中的其它顶点的数据以用于在处理其它瓦片时使用。
顶点的数据可以与描述顶点的多个参数有关。例如,顶点的数据可以包括用于指示屏幕位置的X和Y坐标、用于指示顶点的深度的Z值以及用于纹理化和阴影化的互逆次W(reciprocal homogeneousW,RHW)值。由值(X,Y,Z,W)给出的齐次点(homogenous point)定义顶点在投影空间中的位置。顶点的数据也可以包括可以在可编程阴影化器语言中(例如,由像素阴影化器)用来计算像素的颜色的一个或者多个属性值。特别地,顶点属性数据可以在像素阴影化器中被用作纹理坐标集U、V和S、T、颜色、法线等。U、V、S和T是用来将纹理映射到原语上的纹理坐标。
用于X、Y、Z、RHW以及纹理坐标U、V、S和T的顶点参数数据的值可以是以IEEE浮点格式。IEEE浮点值具有32比特(4字节),其中8比特用于指数并且23比特用于尾数加上1比特用于符号。
如以上描述的那样,在原语块内的原语主要来自相同三角形网,并且顶点参数数据类型的数据分布将在原语块中不太可能完全随机。数据在原语块中的分布模式可以用来压缩顶点参数数据。来自被应用用于被建模的对象的三角形网,来自顶点的X和Y坐标值应当在显示屏幕上的有限范围内。来自三角形网的顶点的深度值(Z)通常是3D表面的来自模型的插值结果,因此它们最可能是值在相互之间逐渐改变。一般而言,对于在原语块(例如,来自三角形网)中的顶点,在不同顶点的值之间的改变很可能对于用来描述顶点的所有参数(例如,X、Y、Z、RHW、U、V、S和T)是逐渐的。
由于计算机图形屏幕的显示分辨率被固定成像素单位的一部分并且来自在屏幕上渲染的原语的X和Y坐标在有限范围内,所以减少准确度的定点格式可以用于来自原有浮点值的X和Y值以节省参数数据空间。
表1示出了顶点参数数据的示例,该顶点参数数据使用16比特定点格式以代表包含十个顶点的数据的原语块中的X和Y坐标。以这一方式,X和Y值可以被一起分组成32比特字,而其它参数各自由用于顶点中的每个顶点的32比特字代表。
顶点 | X和Y | Z | RHW | U | V | S | T |
0 | 715B690B | 3F758FB4 | 3D91E402 | BF25A708 | 3F6276E9 | 415E0316 | 418225A2 |
1 | 72EE6C1F | 3F76ECC8 | 3D69B094 | BF58DA3B | 3F6276E9 | 41895B47 | 41A401A6 |
2 | 747470F7 | 3F748FDF | 3D91D691 | BF25A708 | 3F62FB57 | 415DF274 | 418213F4 |
3 | 742D7C00 | 3F76ECE4 | 3D699F55 | BF58DA3B | 3F62FB57 | 418954F6 | 41A3EFF8 |
4 | 7737775B | 3F738FB4 | 3D91E402 | 3F25A708 | 3F6276E9 | 415E0316 | 418225A2 |
5 | 774C7C00 | 3F74CA8F | 3DCF6776 | BED10AC6 | 3F628536 | 411F0AB4 | 41335B64 |
6 | 4B246FA9 | 3F76C92D | 3DCFD561 | BED08833 | 3F6276E9 | 411EEC6F | 41331A27 |
7 | 487663C6 | 3F718FDF | 3D91D691 | 3F25A708 | 3F62FB57 | 415DF274 | 418213F4 |
8 | 4BCC793B | 3F72CB79 | 3DCF1D82 | BED162ED | 3F62FB57 | 411F335F | 41338770 |
9 | 49136B31 | 3F6DCA8F | 3DCF6776 | BED10AC6 | 3F628536 | 411F0AB4 | 41335B64 |
表1:来自原语块的顶点数据。
如果背对背输出用于原语块中的顶点的顶点参数数据分量的32比特值,则通常在输出的数据中无强模式。例如,来自在图1中所示的原语块的Z值可以被输出为:“3F 75 8F B4 3F 76 EC C8 3F 74 8FDF 3F 76 EC E4 3F 73 8F B4 3F 74 CA 8F 3F 76 C9 2D 3F 71 8F DF3F 72 CB 79 3F 6D CA 8F”。在输出的数据的字节与输出的数据的下一字节之间缺乏强相关性使得难以在如下3D计算机图形系统中为顶点参数数据块实现高压缩结果,在该3D计算机图形系统中,为原语块中的每个顶点背对背输出顶点参数数据分量。
然而,顶点中的每个顶点的数据遵循相同格式,借此顶点中的每个顶点的数据包括在相应位置的多个十六进制数据值(这里可以被称为“数据段”)。也就是说,用于顶点中的每个顶点的数据具有代表参数中的每个参数的相同格式的相同数目的数据段。因此,在顶点的数据在如在表1中那样的表中被一起示出时,该表中的数据段的列包括来自顶点中的每个顶点的与具有相同显著性的相同参数有关的数据段。
数据在原语块中的分布模式可以由无损数据压缩算法用来压缩数据而不丢失任何数据。在表1中可见,对于在原语块中包括的不同顶点内的列中的32比特数据值中的大多数数据值,最高有效字节(MSB)很相似,并且在一些情况下甚至相同。例如,在表1中列举的十个顶点对于Z、RHW、V、S和T的值具有相同MSB。对于用于十个不同顶点的U值的MSB,仅有三个不同字节值:0xBF、0x3F和0xBE。用于32比特数据值的MSB的相似性意味着可以通过将MSB一起分组成“字节块”并且然后压缩字节块来压缩MSB。然而,对于在原语中包括的不同顶点内的列中的32比特数据值,最低有效字节(LSB)不是很相似。因此,经常不能与MSB的字节块一样多地压缩LSB的字节块。“字节块”是从在用于顶点的数据内的对应位置的顶点中的每个顶点取得的一组数据字节。换言之,字节块是来自表1的字节的列,其中顶点的数据在用于不同顶点的行中排列。UK专利公开号GB2483502描述了如下压缩方案,在这些压缩方案中,用于不同顶点的顶点参数数据的对应字节被一起分组成字节块并且然后使用压缩算法来压缩字节块中的至少一个字节块。
然而,对于例如如在表1中所示在原语块中的顶点参数数据的十六进制值,用于压缩的良好数据分布未必与顶点的数据中的8比特(即,字节)边界对准。在这里参照图3至图6描述的示例中,从原语块中的顶点参数数据收集4比特数据段(即,半字节)中的十六进制值的统计信息以发现一种将数据段一起分组成用于压缩的段块(可以具有可变大小)的优化的方式。
图3是用于压缩在原语块中包括的顶点参数数据的方法的流程图。在向参数缓冲器104发送压缩的原语块之前在处理单元102中实施该方法,从而使得如在图1中所示从处理单元102向参数缓冲器104发送压缩的顶点数据。
如以上描述的那样,用于多个原语的顶点数据被一起分组成原语块。在步骤S302中,在处理单元102内的模块接收原语块的顶点数据。以上在表1中示出了在原语块中包括的数据的示例。另外,图4示出了不同示例,在该示例中,在原语块400中包括十六个不同顶点的与参数之一(例如,Z值)有关的32比特数据值。原语块400还包括十六个不同顶点的与参数中的其它参数(例如,X&Y、RHW、U、V、S和T值)有关的32比特数据值,但是为了清楚,在图4中未示出这些更多32位数据值。原语块400包括头部402,头部402包括用来解释在原语块400中包括的数据值的状态数据。在压缩原语块时,与原语块的压缩的版本一起包括这里被称为“压缩的数据头部”的附加头部,该头部包括指示已经如何压缩原语块的信息。
图4中所示的用于顶点中的每个顶点的32比特数据值各自由八个十六进制(4比特)值代表。在这一示例中,十六进制值被解释为顶点的数据的数据段,从而使得图4中所示的用于每个顶点的数据包括八个4比特数据段。
在步骤S304中,分析原语块400中的数据以确定用于将不同顶点的数据段一起分组成用于压缩的段块的压缩分组方案。特别地,分析数据在原语块400中的分布以便确定在原语块400中的数据内存在模式,这些模式可以用来增加可以压缩原语块400的压缩比。数据在原语块400内的分布影响可以实现的原语块400的压缩性能。例如,如果原语块400中的数据段的列都具有相同值(“公共值”),则可以通过一次存储该公共值以代表列中的所有数据段来很高效地压缩那些数据段。因此,在步骤S304中的分析确定是否有都具有与彼此相同的值的数据段的任何列。作为另一示例,如果原语块400中的数据段的列的数据段的值在小范围内,则那些数据段可以能够通过存储起始值并且然后将数据段中的每个数据段表示为从起始值的增量值(或者“偏移”)来被高效地压缩。因此,在步骤S304中的分析也可以确定是否有数据段的任何列具有小的值范围,从而使得它们将适合使用起始和增量值压缩算法来压缩。作为另一示例,如果原语块400中的数据段的列的数据段具有少量不同值(例如,仅两个或者三个不同值),则那些数据段可以能够通过构造不同值的查找表并且然后将数据段中的每个数据段表示为用于参考查找表的索引来被高效地压缩。因此,在步骤S304中的分析也可以确定是否有数据段的任何列具有少量不同值,从而使得它们将适合使用查找表压缩算法来压缩。
在步骤S306中,根据在步骤S304中确定的压缩分组方案将数据段分组在一起,以由此形成多个段块。段块中的每个段块包括顶点中的相应多个(例如,十六个)顶点的一个或者多个数据段的多个(例如,十六个)段集合,其中段集合在顶点中的多个顶点中的每个顶点的数据内具有对应位置。
图4示出了十六个顶点的与参数之一(例如,Z值)有关的八个数据段。图4示出了顶点1的数据段具有十六进制值8、2、4、9、4、B、4和0。根据在步骤S304中确定的压缩分组方案,顶点1的数据段用来形成三个段集合。特别地,顶点1的数据段7、6和0形成第一段集合404;顶点1的数据段5和4形成第二段集合406;并且顶点1的数据段3、2和1形成第三段集合408。原语块400中的其它顶点的数据段用来形成与用于顶点1的图4中所示的段集合对应的段集合。不同顶点的段集合在原语块400中的数据内具有对应位置。因此,在图4中所示的示例中,对于每个顶点,数据段7、6和0用来形成第一段集合;数据段5和4用来形成第二段集合;并且数据段3、2和1用来形成第三段集合。
将不同顶点的在原语块400中的对应位置的段集合分组在一起以成形段块。在图4中所示的示例中,将顶点中的每个顶点的第一段集合(包括数据段7、6和0)分组在一起以形成第一段块412;将顶点中的每个顶点的第二段集合(包括数据段5和4)分组在一起以形成第二段块414;并且将顶点中的每个顶点的第三段集合(包括数据段3、2和1)分组在一起以形成第三段块416。
在步骤S308中,压缩段块中的一个或者多个段块。相互分离地压缩并且可以或者可以不使用相同压缩算法来压缩段块。另外,可以未压缩段块中的一个或者多个段块。选择适当压缩算法以基于在步骤S304中执行的原语块400中的数据的分析来压缩段块。一旦已经压缩了将要压缩的那些段块,然后在步骤S310中,段块被用来形成原语块400的压缩的版本。如以上描述的那样,处理单元102向参数缓冲器104发送原语块400的压缩的版本以用于在其中存储。
例如,第一段块412包括用于顶点的都具有相同值的段集合,即,在段块412内的所有段集合之间有公共值。也就是说,段块412中的所有段集合具有十六进制数据段,这些数据段具有值8、2和0。在这一情况下,通过用公共值代表段块412中的所有段集合来压缩段块412(即存储公共值仅一次以代表原语块400中的所有顶点的第一段集合)。在原语块400的压缩的版本的压缩的数据头部中存储公共值。压缩的数据头部也包括一些压缩格式指示比特,这些压缩格式指示比特指示已经使用公共值来压缩了第一段块412。以下更具体地描述压缩格式指示比特。包括原语块400中的所有十六个顶点的数据段7、6和0的段块412在未压缩的形式中具有共计192比特(也就是说12比特×16个顶点)。然而,在使用公共值压缩算法(如以上描述的那样)压缩段块412时,压缩的段块412在原语块400的压缩的版本的压缩的数据头部中仅有用于代表公共值的十二比特加上用于指示使用公共值压缩算法来压缩段块412的压缩格式指示比特。
第二段块414包括具有都在40至56这一范围内的值的段集合。也就是说,第二段块414中的段集合的最低值为40,并且第二段块414中的段集合的最高值为56。起始和增量值压缩算法用来压缩第二段块414。起始被选择为第二段块414的段集合的最低值。也就是说,起始被选择为十六进制值40。由于段集合的最低值被选择作为起始(注意,在如以下具体描述的那样使用扩展的数据范围的情况下,扩展的范围中的段集合的最低值被选择作为起始),所以偏移值(或者“增量值”)不会为负并且因此在偏移值中无需符号贝特。使用八比特来标识起始的值(例如,在原语块400的压缩的版本的压缩的数据头部中)。对于顶点中的每个顶点,增量值(或者“偏移”)被确定为代表起始与用于特定顶点的段集合的值之差。段块414中的增量值的最大值是可以使用五比特而被代表的十六进制值16。因此,使用五比特来代表用于所有顶点的增量值。例如,对于顶点1的具有值49的段集合406,(从起始40的)增量值是在五比特中被表示为01001的9。因此,在压缩段块414时,它由起始值40(使用八比特来表示)和用于相应十六个顶点的十六个增量值(各自由五比特代表)代表。原语块400的压缩的版本的压缩的数据头部包括压缩格式指示比特,这些压缩格式指示比特指示已经使用起始和增量值压缩算法来压缩了第二段块414。因此,使用88比特(即8+16×5)加上压缩格式指示比特来代表压缩的段块414。这小于用来代表段块414中的未压缩的数据段的比特数目(128)。
在步骤S304中分析用于不同顶点的数据段3、2和1中的数据在原语块400中的分布确定在数据分布中没有可以用来以无损方式压缩这些数据段中的数据的可辨认模式。因此,数据段3、2和1被一起分组成第三段块416,并且未压缩第三段块416。因此,原始数据比特用来代表第三段块416中的顶点的段集合。第三段块416中的每个段集合(例如,顶点1的段集合408)包括十二比特的三个数据段。因此,第三段块416中的所有段集合的原始数据由192比特(也就是12×16比特)代表。原语块400的压缩的版本的压缩的数据段包括指示尚未压缩第三段块416的压缩格式指示比特,即用原始数据值在第三段块416中代表段集合。因此,192比特(加上压缩格式指示位)用来代表第三段块416。
在原语块400的压缩的版本的压缩的数据头部中包括压缩格式指示比特以指示如何压缩原语块中的段块。实现指示如何压缩原语块400中的段块这一目标的任何比特可以用作压缩格式指示比特。如以下更具体描述的那样,支持四个不同压缩格式,并且压缩格式指示比特包括用于每个段块的两比特,这两比特指示用于段块中的每个段块的四个不同压缩格式之一。另外,如以下更具体描述的那样,原语块400的压缩的版本的压缩的数据头部还包括段控制数据,该段控制数据对于数据段中的每个数据段指示根据确定的压缩分组方案将数据段分组成哪个段块。
在UK专利公开号GB2483502中描述的先前压缩方案中,总是将顶点的与参数有关的32比特数据值划分成四个字节块(即四个段块),每个段块包括每个顶点的8比特数据。有可以用于压缩字节块的四个压缩格式,并且两比特可以用来指示四个压缩格式之一。因此,八比特压缩格式字用来指示原语块中的32比特数据值中的四个字节块的压缩格式。也就是说,对于原语块中的32比特数据值中的四个字节块中的每个字节块,两比特用来指示四个压缩方案中的哪个压缩方案用来压缩字节块。例如,如果用于字节块的两比特为‘00’,则这指示字节块尚未被压缩并且是按照原始格式;如果用于字节块的两比特为‘01’,则这指示已经使用公共值压缩算法压缩了字节块;如果用于字节块的两比特为‘10’,则这指示已经使用起始和增量值压缩算法压缩了字节块;并且如果用于字节块的两比特为‘11’,则这指示已经使用查找表压缩算法压缩了字节块。在表2中示出了这一点的概要。
压缩格式比特 | 使用的压缩算法 |
00 | 无压缩,即原始数据 |
01 | 公共值压缩算法 |
10 | 起始和增量值压缩算法 |
11 | 查找表压缩算法 |
表2:压缩格式比特
因此,在UK专利公开号GB2483502中描述的先前压缩方案中,在压缩的原语块的压缩的数据头部中包括八比特压缩格式字以指示已经如何压缩了32比特数据值的四个字节块。
然而,由于这里描述的压缩方案允许在如何将数据段分组成用于压缩的段块时的更大灵活性,所以在原语块400的压缩的版本的压缩的数据头部中使用更多比特以便指示如何在原语块400的压缩的版本中对数据段进行分组和压缩。例如,作为对在UK专利公开号GB2483502中描述的压缩方案的扩展,如果32比特数据值的段块最大数目为四并且如果有可以使用的四个可能的压缩算法,则在原语块400的压缩的版本的压缩的数据头部中包括八比特压缩格式字以由此指示应用于上至四个段块的相应压缩算法。另外,对于32比特数据值中的八个数据段位置中的每个数据段位置,在压缩的数据头部中提供两比特以指示将在段块中的哪个段块中包括在相应位置的数据段。用于八个数据段位置中的每个数据段位置的这些两比特指示形成16比特数据流控制字。在其它示例中,可以将32比特数据值划分成多于四个段块和/或可以有可以使用的多于四个可能的压缩算法,从而使得多于八比特可以用于压缩格式字和/或多于两比特可以用于八个数据段位置的指示中的每个指示。
就图4中所示的原语数据块400的数据值而言,压缩格式字具有以下比特值:
压缩格式字=00 00 10 01,
该压缩格式字指示(参照上表2)使用公共值压缩算法来压缩段块中的第一段块、使用起始和增量值压缩算法来压缩段块中的第二段块、并且未压缩第三和第四段块(即将它们输出为原始数据值)。另外,在这一示例中的数据流控制字将取以下值:
数据流控制字=00 00 01 01 10 10 10 00,
该数据流控制字指示在第一段块(即段块412)中包括数据段7、6和0、在第二段块(即段块414)中包括数据段5和4并且在第三段块(即段块416)中包括数据段3、2和1。在这一示例中,数据段0在原语块400中未与数据段7和6相邻,但是在相同段块(也就是段块412)中包括所有三个这些数据段。这是在使用公共值压缩算法来压缩段块时或者在未压缩(即,以原始格式输出)段块时所允许的。然而,为了简化硬件实施,可以在一些示例中优选地避免在使用起始和增量值算法或者查找表压缩算法来压缩段块时在相同段块中具有非相邻数据段。
因此,以上给定的压缩格式字和数据流控制字指示使用公共值压缩算法来压缩包括数据段7、6和0的段块412;使用起始和增量值压缩算法来压缩包括数据段5和4的段块414;并且未压缩包括数据段3、2和1的段块416。这与如以上描述的那样应用于段块412、414和416的压缩匹配。因此,在原语块400的压缩的版本的压缩的数据头部中包括以上给定的压缩格式字和数据流控制字以正确指示如何在原语块400的压缩的版本中对数据段进行分组和压缩。
因此,在原语块块400的压缩的版本的压缩的数据头部402中有24个压缩格式指示比特(8比特压缩格式字和16比特数据流控制字)。因此,在原语块400的压缩的版本中有共计316比特。316比特包括用于段块412的12比特、用于段块414的88比特、用于段块416的192比特和24个压缩格式指示比特。这与在未压缩原语块400中的512比特数据(也就是32比特×16个顶点)比较。
另外,如果使用在UK专利公开号GB2483502中描述的压缩方案由此总是将32比特数据值划分成用于压缩的四个字节块,则在压缩的原语块中使用以下数目的比特:
·使用公共值压缩算法来压缩字节3(数据段7和6)由此将公共值82压缩成8比特;
·使用起始和增量值压缩算法以与以上描述的方式相同的方式压缩字节2(数据段5和4)由此将值范围压缩成用于具有值40的起始的8比特和用于十六个增量值的80比特(16×5比特),从而给定用于字节2的共计88比特;
·不能使用起始和增量压缩算法或者查找表压缩算法来压缩字节1(数据段3和2),因此使用具有用于字节1的共计128比特(16×8比特)的原始数据值;并且
·不能使用起始和增量压缩算法或者查找表压缩算法来压缩字节0(数据段1和0),因此使用具有用于字节0的共计128比特(16×8比特)的原始数据值。
另外,如以上描述的那样,将在压缩数据头部中使用8比特作为压缩格式字。因此,共计360比特用来使用在UK专利公开号GB2483502中描述的压缩方案来代表压缩的原语块。这多于用来使用这里描述的压缩方案来代表原语块400的压缩的版本的316比特,在这些压缩方案中,可以根据在步骤S304中执行的对数据在原语块400中的分布的分析的结果变化将数据段分组成段块。
因此可见,通过分析数据块中的数据以确定适当压缩分组方案,可以用允许更大压缩原语块400中的数据这样的方式将数据段一起分组成用于压缩的段块。可以通过相应地将数据段分组成段块来优化数据的压缩。
与其中总是将32比特数据值划分成用于压缩的四个字节块的在UK专利公开号GB2483502中描述的压缩方案比较,这里描述的压缩方案(其中可以根据对数据在原语块400中的分布的分析的结果变化将数据段分组成段块)包括将在处理单元102中执行的一些额外处理步骤以便执行在步骤S304中的分析并且生成在原语块400的压缩的版本的压缩的数据头部中需要的额外数据流控制字。然而,这些额外处理步骤通常涉及到待执行的相对简单计算,从而使得在减少用来代表原语块400的压缩的版本的比特数时实现的益处通常超过与需要执行额外处理步骤关联的任何缺点。如以上描述的那样,减少用来代表原语块400的压缩的版本的数据量是在提高系统100的性能时的重要因素,因为这减少在处理单元102与参数缓冲器104之间传递的压缩的顶点参数数据数量并且也减少为了存储压缩的顶点参数数据而在参数缓冲器104中需要的空间。
在步骤S304中执行的分析遵循用于确定如何将数据段一起分组成用于压缩的段块的规则集。作为示例,用于将数据段分组成段块的规则可以是:
1.标识原语块400中的数据段的所有列,在这些数据段的列中,在该列中的数据段都具有公共值。这些数据段的列可以被一起分组成段块并且可以使用以上描述的公共值压缩算法(例如,通过在头部中包括公共值)被压缩。例如,图4中所示的数据段7和6以及数据段0一起分组成段块412并且使用公共值压缩算法被压缩。
2.对于数据段的剩余列(即,在以上规则1中未标识的数据段的列),标识可以使用起始和增量值压缩算法或者使用查找表压缩算法被压缩的数据段的列的任何组合(例如,两个或者更多相邻数据段的列)。例如,如果列的任何组合的数据段具有有限数据值范围,则那些列可以适合使用起始和增量值压缩算法来压缩。例如,图4中的数据段的列5和4都具有在从40到56的范围内的值,因此这些数据段被一起分组成然后使用起始和增量值压缩算法被压缩的段块414。相似地,如果列的任何组合的数据段具有有限数目的不同值,则那些列可以适合使用查找表压缩算法来压缩。
3.对于数据段的剩余列(即,在以上规则1或者2中未标识的数据段的列),标识可以使用起始和增量值压缩算法或者使用查找表压缩算法被压缩的数据段的任何单独列(即,4比特流)。例如,如果任何4比特列的数据段具有有限数据值范围,则那些列可以适合使用起始和增量值压缩算法来压缩。相似地,如果任何4比特列的数据段具有有限数目的不同值,则那些列可以适合使用查找表压缩算法来压缩。例如,图6中所示的用于原语块600中的顶点的数据段的列0都具有值0、4或者C,因此这些数据段被一起分组成然后使用如以下更具体描述的查找表压缩算法来压缩的段块620。
4.对于数据段的剩余列(即,在以上规则1、2或者3中未标识的数据段的列),未压缩数据段的列。换言之,在压缩的原语块中包括数据段的剩余列作为原始数据值。
可以设置进一步条件以及以上给定的四个规则以例如约束用于压缩的段块数目和/或段块中的比特数(例如,如以上关于8比特压缩格式字描述的那样)以由此简化硬件实施。可以在将数据块中的数据段分组成的段块数目的上限的约束内确定基于在步骤S304中的分析而确定的压缩分组方案。例如,将数据块中的数据段分组成的段块数目的上限可以如在以上描述的示例中为四。另外,可以在段集合中的比特数的上限的约束内确定基于在步骤S304中的分析而确定的压缩分组方案。例如,段集合中的比特数的上限可以是十六。
在其它示例中,可以在步骤S304中执行的分析中使用除了以上给定的规则之外的其它规则。
图5示出了另一示例,在该示例中,在原语块500中包括十六个不同顶点的与参数之一(例如,RHW值)有关的32比特数据值。原语块500包括十六个不同顶点的与参数中的其它参数(例如,X&Y、Z、U、V、S和T值)有关的更多32比特数据值,但是为了清楚,在图5中未示出那些更多32比特数据值。注意,例如,如果两个或者更多参数的最高位对于原语块中的所有顶点包括相同值则有可能组合跨越多个参数的公共值。原语块500包括头部502,该头部包括用来解释在原语块500中包括的数据值的状态数据(与在以上参照图4描述的头部402中包括的状态数据相似)。原语块500中的数据的格式与以上关于图4描述的原语块400中的数据的格式相同。因此,图5中所示的用于顶点中的每个顶点的32比特数据值由八个十六进制(4比特)值代表。在这一示例中,十六进制值被解释为顶点的数据的数据段,从而使得图5中所示的用于每个顶点的数据包括八个4比特数据段。
根据这里描述的压缩方案,分析原语块500中的数据,并且基于该分析来确定压缩分组方案。根据压缩分组方案,如图5中所示将原语块500中的顶点的数据段7、6和5(例如,顶点1的段集合504和其它顶点的对应段集合)一起分组成段块510。基于原语块500中的数据的分析,以这一方式将数据段分组成段块510,因为原语块500中的用于所有顶点的数据段7、6和5具有公共值。公共值如图5中所示为7DB。通过将数据段7、6和5一起分组成用于压缩的段块510,公共值压缩算法可以用来压缩段块510。因此,可以将段块510中的数据压缩成十二比特。那些十二比特是代表公共值7DB而需要的比特并且被存储于原语块500的压缩的版本的压缩的数据头部中。
根据压缩分组方案,如图5中所示将原语块500中的顶点的数据段4和3(例如,顶点1的段集合506和其它顶点的对应段集合)一起分组成段块512。基于原语块500中的数据的分析,以这一方式将数据段分组成段块512,但是段集合(包括原语块500中的用于所有顶点的数据段4和3)的值的范围从00到FF,扩展的数据范围限于在从FE到101的范围中。以下更具体地描述扩展的数据范围的使用。通过将数据段4和3一起分组成用于压缩的段块512,起始和增量值压缩算法可以用来压缩段块512。在图5中所示的示例中,增量值在从0到3的范围中并且可以使用12比特被代表。以这一方式,可以将段块512中的数据压缩成四十比特。那些四十比特包括在原语块500的压缩的版本的压缩的数据头部中存储的用于代表起始值FE的八比特和用于十六个顶点中的每个顶点的用于代表用于该顶点的段集合的增量值的两比特。
根据压缩分组方案,如图5中所示将原语块500中的顶点的数据段2、1和0(例如,顶点1的段集合508和其它顶点的对应段集合)一起分组成段块514。基于原语块500中的数据的分析,以这一方式将数据段分组成段块514,因为数据段2、1和0中的用于顶点的数据的分布很广泛。这样,以上描述的无损压缩方案都不能用来减少代表数据段2、1或者0而需要的数据量。因此,未压缩段块514,并且作为替代在压缩的原语块500中包括原始数据比特。因此,段块514包括192比特,这是用于十六个顶点中的每个顶点的十二比特。
如以上描述的那样,原语块500的压缩的版本的压缩的数据头部将包括用于指示原语块500中的数据段的压缩格式的2比特位状态控制数据。特别地,状态控制数据将包括与在如以上关于图4描述的压缩原语块400的压缩的数据头部中包括的压缩格式字和数据流控制字相似的8比特压缩格式字和16比特数据流控制字。
因此,在原语块500的压缩的版本中的总比特数将为268(也就是12+40+192+24比特)。这与在未压缩的原语块500中的512比特比较。另外,如以下更具体描述的那样,如果其中总是将32比特数据值划分成用于压缩的四个字节块的在UK专利公开号GB2483502中描述的压缩方案用来压缩原语块500,则将用304比特(即,比如果这里描述的压缩方案用来压缩原语块500更多的比特)代表压缩的原语块。
例如,如果使用在UK专利公开号GB2483502中描述的压缩方案由此总是将32比特数据值划分成用于压缩的四个字节块,则代表压缩的原语块500的304比特被分解如下:
·使用公共值压缩算法来压缩字节3(数据段7和6)由此将公共值7D压缩成8比特;
·使用查找表压缩算法来压缩字节2(数据段5和4)由此十六比特存储于压缩的数据头部中以代表查找表中的两个值B0和BF,并且16比特用于十六个索引值,这些索引值用来引用查找表,由此给定用于字节2的共计32比特;
·不能使用起始和增量压缩算法或者查找表压缩算法来压缩字节1(数据段3和2),因此使用具有用于字节1的共计128比特(16×8比特)的原始数据值;并且
·不能使用起始和增量压缩算法或者查找表压缩算法来压缩字节0(数据段1和0),因此使用具有用于字节0的共计128比特(16×8比特)的原始数据值。
另外,如以上描述的那样,将在原语块500的压缩的版本的压缩的数据头部中使用8比特作为压缩格式字,由此给定共计304比特(即,8+32+128+128+8比特)。
图6示出了又一示例,在该示例中,在原语块600中包括十六个顶点的与参数之一(例如,RHW值)有关的32比特数据值。原语块600包括十六个不同顶点的与参数中的其它参数(例如,X&Y、Z、U、V、S和T值)有关的更多32波特数据值,但是为了清楚,在图6中未示出那些更多32比特数据值。原语块600包括头部602,头部602包括用来解释在原语块600中包括的数据值的状态数据(与以上参照图4描述的头部402中包括的状态数据相似)。原语块600中的数据的格式与以上关于图4描述的原语块400中的数据的格式相同。因此,图6中所示的用于顶点中的每个顶点的32比特数据值各自由八个十六进制(4比特)值代表。在这一示例中,十六进制值被解释为顶点的数据的数据段,从而使得图6中所示的用于每个顶点的数据包括八个4比特数据段。
根据这里描述的压缩方案,分析原语块600中的数据并且基于该分析来确定压缩分组方案。根据压缩分组方案,如图6中所示将原语块600中的顶点的数据段7和6(例如,顶点1的段集合604和其它顶点的对应段集合)一起分组成段块612。基于原语块600中的数据的分析,以这一方式将数据段分组成段块612,因为原语块600中的用于所有顶点的数据段7和6具有公共值。公共值如图6中所示为7E。通过将数据段7和6一起分组成用于压缩的段块612,公共值压缩算法可以用来压缩段块612。因此,可以将段块612中的数据压缩成八比特。那些八比特是用来代表公共值7E的比特并且被存储于原语块600的压缩的版本的压缩的数据头部中。
根据压缩分组方案,也将原语块600中的顶点的数据段1(例如,顶点1的段集合608和其它顶点的对应段集合)形成为对应段集合。然后如图6中所示将顶点的这些段集合一起分组成段块616。基于原语块600中的数据的分析,以这一方式将数据段分组成段块616,因为仅有用于段块616中的数据段的四个不同值。通过将原语块600中的用于顶点的在位置1的数据段一起分组成用于压缩的段块616,查找表压缩算法可以用来压缩段块616。注意,为了向在查找表中包括的值数目提供灵活性,可以包括一些额外控制比特。在这里描述的示例中,包括三个额外控制比特,这些控制比特允许查找表中的上至八个条目。以这一方式,可以将段块616中的数据压缩成51比特。那些51比特包括在原语块600的压缩的版本的压缩的数据头部中存储的用于代表查找表中的四个不同值0、7、8和9的十六比特,三比特用于指示查找表中有个四个值,并且两比特用于十六个顶点中的每个顶点来代表用于引用查找表的索引。
相似地,根据压缩分组方案,如图6中所示将原语块600中的顶点的数据段0(例如,顶点1的段集合610和其它顶点的对应段集合)一起分组成段块618。基于原语块600中的数据的分析,以这一方式将数据段分组成段块618,因为仅有用于段块618中的数据段的三个不同值。通过将原语块600中的用于顶点的在位置0的数据段一起分组成用于压缩的段块618,查找表压缩算法可以用来压缩段块618。以这一方式,可以将段块618中的数据压缩成47比特。那些47比特包括在原语块600的压缩的版本的压缩的数据头部中存储的用于代表查找表中的三个不同值0、4和C的十二比特,三比特用于指示查找表中有个四个值,并且两比特用于十六个顶点中的每个顶点来代表用于引用查找表的索引。
根据压缩分组方案,如图6中所示将原语块600中的顶点的数据段5、4、3和2(例如,顶点1的段集合606和其它顶点的对应段集合)一起分组成段块614。基于原语块600中的数据的分析,以这一方式将数据段分组成段块614,因为数据段5、4、3和2中的用于顶点的数据的分布很广泛。这样,以上描述的无损压缩方案都不能用来减少代表数据段5、4、3和2而需要的数据量。因此,未压缩段块614,并且作为替代在压缩的原语块600中包括原始数据位。因此,段块614包括256比特,这是用于十六个顶点中的每个顶点的十六比特。
如以上描述的那样,原语块600的压缩的版本的压缩的数据头部将包括用于指示原语块600中的数据段的压缩格式的24比特状态控制数据。特别地,状态控制数据将包括与在如以上关于图4描述的原语块400的压缩的版本的压缩的数据头部中包括的压缩格式字和数据流控制字相似的8比特压缩格式字和16比特数据流控制字。
因此,在压缩的原语块600中的总比特数将为386(也就是8+256+51+47+24比特)。这与在未压缩的原语块600中的512比特比较。另外,如以下更具体描述的那样,如果其中总是将32比特数据值划分成用于压缩的四个字节块的在UK专利公开号GB2483602中描述的压缩方案用来压缩原语块600,则将用400比特(即,比如果这里描述的压缩方案用来压缩原语块600更多的比特)代表压缩的原语块。
例如,如果使用在UK专利公开号GB2483602中描述的压缩方案由此总是将32比特数据值划分成用于压缩的四个字节块,则用来代表压缩的原语块600的400比特被分解如下:
·使用公共值压缩算法来压缩字节3(数据段7和6)由此将公共值7E压缩成8比特;
·不能使用起始和增量压缩算法或者查找表压缩算法来压缩字节2(数据段5和4),因此使用具有用于字节2的共计128比特(16×8比特)的原始数据值;
·不能使用起始和增量压缩算法或者查找表压缩算法来压缩字节1(数据段3和2),因此使用具有用于字节1的共计128比特(16×8比特)的原始数据值;并且
·不能使用起始和增量压缩算法或者查找表压缩算法来压缩字节0(数据段1和0),因此使用具有用于字节0的共计128比特(16×8比特)的原始数据值。
另外,如以上描述的那样,8比特将在压缩的数据头部中用作压缩格式字,由此给定共计400比特(即,8+128+128+128+8比特)。
起始和增量值压缩算法可以适于包括扩展的数据范围(例如,如用来如以上描述的那样压缩原语块500的段块512)。扩展的数据范围可以用来减少用于增量值的比特数,这些增量值用于根据起始值代表原有数据。例如,可以有包括数据值00、01、02、FB、FC和FE(并且仅那些数据值)的段块。根据非扩展的起始和增量值压缩算法,起始将为00(即,最低值)并且数据范围将是用8比特代表的FE-00=FE。因此,增量值将各自具有代表从起始00的偏移的八比特,因此通过以这一方式使用非扩展的起始和增量压缩算法将没有数据减少。
然而,如图7中所示,可以向段集合中的一个或者多个(但是并非所有)段集合添加偏置值以由此减少段块中的段集合的值的范围。偏置值比在段块数据范围中的最大值大一(例如,偏置值可以对于8比特数据段(比如图7中所示的8比特数据段)为十六进制100)并且可以与起始数据值中的一些数据值相加。例如,在图7中的刻度上示出数据值00、01、02、FB、FC和FE并且示出这些数据值在可以用段集合中的两个十六进制值代表的8比特数据范围内。然而,可以通过添加偏置值在8比特范围以外扩展数据值00、01和02。在用于8比特数据的图7中所示的示例中,偏置值为十六进制的100或者十进制的256,从而使得扩展的数据值为100、101和102。数据值然后可以如图7中所示在扩展的数据范围中被表示为(FB,FC,FE,100,101,102),并且扩展的数据范围的数据范围为102-FB=7,从而使得仅3比特用于从起始值FB的增量值中的每个增量值。因此,可以通过使用扩展的数据范围用起始和增量值压缩算法压缩数据。可以实现这一点而未实际执行将偏置值与数据值中的任何数据值相加,但是作为替代通过识别可以将值00、01和02分别解释为与在模为256的系统(比如这里描述的系统)中的值100、101和102相同。
对于段块中的数据值中的每个数据值,可以确定将偏置值(例如,对于8比特值为十六进制100)与数据值相加是否将是有益的。然后选择所得数据值的最小值作为起始。
扩展的数据范围使用硬件考虑用于段块的特定比特数这样的事实。例如,包括具有两个十六进制值(即,8比特)的段集合的段块可以包括在从00到FF的范围中的值。十六进制值100被解释为与十六进制值00相同,因为段块限于包括8比特值。在以上描述的示例中,值FB用作起始,因为它是在扩展的数据范围中的最低值(如图7中所示)。增量值使得用增量值00代表值FB,用增量值01代表值FC,用增量值03代表值FE。对于起始数据00,由于它小于起始值FB,所以在计算增量值之前添加偏置值100,从而使得增量值被计算为100-FB=05。相似地,用于01和02的增量值分别为06和07。
可以以与对于未使用扩展的数据范围的起始和增量值压缩算法相同的方式解压已经如以上描述的那样使用扩展的数据范围被压缩的压缩的值。使用以上给定的示例,在开始解压增量值为05而起始为FB的压缩的值时,增量值(05)与起始值(FB)相加以给定十六进制值100。由于在这一示例中的段块仅包括两个十六进制值(即八比特),所以十六进制值100被解释为00以由此提供正确的解压的值。相似地,值02被压缩以给定增量值07,该增量值当在解压期间与起始(FB)相加时给定将被正确解释为02的十六进制值102。
在以上描述的示例中可见,段集合为可变大小。换言之,每个顶点的在段块中包括的数据段数目未固定。一些段块(例如,段块412和414)包括来自每个顶点的数据的两个数据段(即8比特)。这些段块可以是字节块。然而,其它段块可以是不同大小并且可以例如包括来自每个顶点的数据的一个、三个或者更多数据段。基于原语块中的数据的分布的分析来确定段块的大小以由此优化原语块的段块的压缩。另外,将原语块的每个顶点的32比特数据分组成的段集合数目例如基于原语块中的数据的分布的分析而可变以由此优化段块的压缩。例如,将在图4中所示的原语块400中的数据段分组成四个段块,将在图5中所示的原语块500中的数据段分组成三个段块,并且将在图6中所示的原语块600中的数据段分组成四个段块。
另外,在以上描述的示例中,原语块中的数据的数据段具有四比特,从而使得每个数据段对应于一个十六进制值。然而,更一般地,数据段可以具有任何比特数。例如,数据段可以都具有两比特或者它们可以都具有一比特。在图4至图6中所示的示例中,数据段都具有与彼此相同的比特数。然而,在一些其它示例中,数据段可以未都具有原语块中的相同比特数,例如,一些数据段可以具有三比特而其它数据段可以具有五比特。在每个数据段中具有更少比特和在每个数据段中具有可变比特数允许在如何将原语块中的数据比特一起分组成段块时的更多灵活性。这可以允许原语块中的数据的更大压缩。然而,随着将原语块中的数据分组成段块的方式的灵活性增加,在原语块的压缩的版本的压缩的数据头部中需要的用于指示已经如何压缩了数据的控制状态字数也将增加。因此,有在判决在压缩分组方案中允许多少灵活性时考虑的折衷。
在以上给定的示例中,支持四个压缩格式:(i)公共值压缩算法、(ii)起始和增量值压缩算法、(iii)查找表压缩算法,以及(iv)无压缩,即,原始数据值。然而,在其它示例中,可以使用其它压缩算法,比如在UK专利公开号GB2483502中描述的那些压缩算法。例如,具有多个起始值和用于顶点中的每个顶点的从起始值之一偏移的增量值的压缩算法。在这一压缩算法中,基于段块中的多个段集合的值标识分离的起始。对于段块中的段集合中的每个段集合,确定从起始之一的最小差值和指向使用的起始的索引。另一压缩格式组合起始和增量压缩算法与查找表算法的特征,从而使得确定起始和差值集合,在查找表中存储差值,并且存储索引值以标识用于段块中的段集合中的每个段集合的适当差值。可以用其它特征组合设计更多压缩格式。例如,多个起始值可以与不同值的一个或者多个查找表组合。如果支持多于四个压缩格式,则在原语块的压缩的版本的压缩的数据头部中对于每个段块需要多于两个压缩格式比特以指示该段块的压缩格式。例如,如果有在五个与八个之间的可能的压缩格式可用,则在压缩的原语块的用于每个段块的压缩的数据头部中包括三个压缩格式比特以指示该段块的压缩格式。
如以上描述的那样,原语块可以例如包括64个顶点的数据。在其它示例中,原语块可以包括更多顶点(例如,256个顶点)的数据。可以将原语块中的数据拆分成分节,由此每个分节包括顶点的相应子集(例如,64个)的数据。在这一情况下,将每个分节中的顶点的数据段分离地分组成段块,从而使得每个段块包括在分节中的仅一个分节内的顶点的数据段。通过将原语块拆分成更小分节,更可能的是以上描述的压缩算法(比如公共值算法)可以用来压缩分节中的至少一些分节中的数据。另外,可以基于原语块中的数据的分布的分析对原语块中的顶点数据重新排序以由此增加在分节中的至少一个分节中包括的不同顶点的数据的相似性。例如,可以将具有用于最高有效字节(MSB)的相同值的所有顶点分组成分节,从而使得公共值压缩算法可以用来压缩那些顶点的MSB。如果对原语块中的顶点的数据重新排序,则也将需要执行重新编索引过程以保持可以在哪个原语块中发现顶点中的每个顶点的数据的跟踪。可以用查找表实施重新编索引过程以指示已经如何在原语块中对每个顶点重新编索引。
这里描述了一种用于压缩原语块的数据的无损压缩方案,其中基于原语块中的数据的分析将数据段一起分组成用于压缩的段块。可以在压缩的原语块中对每个顶点的数据分离地进行寻址,由此允许随机访问来自压缩的原语块的压缩的顶点数据。这对于基于瓦片的计算机图形系统特别有用,这些计算机图形系统可以访问原语块中的顶点中的一些(但是未必所有)顶点的数据以用于在处理特定瓦片时使用,并且可以在处理瓦片中的原语时多次访问原语块中的顶点数据的部分。
如以上描述的那样,在处理单元102从参数缓冲器104取回压缩的原语块时,它从压缩的原语块解压与顶点中的一个或者多个顶点有关的数据。例如,为了取回选择的顶点的数据,处理单元102从参数缓冲器104取回包括选择的顶点的数据的压缩的原语块。处理单元102读取压缩数据块的头部(例如,压缩的数据头部)以确定用来将选择的顶点的数据段分组成用于压缩的段块的压缩分组方案(例如,由头部中的数据流控制字指示)并且确定用于解压压缩的数据块的至少一个压缩的段块的解压算法(例如,由头部中的压缩格式字指示)。使用确定的解压算法来解压选择的顶点的在压缩数据块的至少一个压缩段块中的数据段以由此提供选择的顶点的解压的顶点参数数据。
具有32比特(比如在图4至图6中所示的用于顶点的32比特)的IEEE浮点值具有用于指数的8比特和用于尾数的23比特加上用于符号的1比特。如在UK专利公开号GB2483502中描述的那样,符号比特占用最高有效位。因此,顶点的数据段7的值将按照在具有相同指数但是不同符号的两个浮点值之间的大数量跳跃。根据数据分布的分析,最高有效数据段(段7)很可能最容易被压缩。应当保存指数值的数据分布特征免由受对符号位的改变所引起的扰动。因此,可以在压缩数据之前移动符号比特。例如,32位浮点值的符号比特可以在压缩顶点参数数据之前从比特31移向比特0。最低有效数据段的数据分布经常广泛,并且未预计它具有良好压缩结果,因此将符号比特移向最低有效数据段(段0)的底部可以未显著影响总压缩比。一般而言,符号比特可以基于数据的分析而移向在顶点的32比特数据内的任何位置。例如,符号比特可以移向如下位置,该位置基于分析而被确定产生原语块中的数据的最佳总体压缩。
在已经解压压缩的原语块之后,符号比特移回到比特31以重建原有32比特浮点值。
一般而言,可以使用软件、固件、硬件(例如,固定逻辑电路装置)或者这些实现方式的任何组合在模块中(例如,在处理单元102内)实施以上描述的功能、方法、技术或者部件中的任何功能、方法、技术或者部件(例如,图3中所示步骤)。术语“模块”、“功能”、“部件”、“单元”和“逻辑”这里用来一般代表软件、固件、硬件或者其任何组合。
在软件实现方式的情况下,模块、功能、部件或者逻辑代表在处理器(例如,一个或者多个CPU)上执行时执行指定的任务的程序代码。在一个示例中,描述的方法可以由软件配置的计算机执行,该软件以机器可读形式存储于计算机可读介质上。计算机可读介质的一个这样的配置是信号承载介质并且因此被配置用于比如经由网络向计算设备传输指令(例如,作为载波)。计算机可读介质也可以被配置为计算机可读存储介质并且因此不是信号承载介质。计算机可读存储介质的示例包括随机存取存储器(RAM)、只读储存器(ROM)、光盘、闪存、硬盘存储器和其它存储器设备,这些存储器设备可以使用磁、光学和其它技术以存储指令或者其它数据并且可以由机器访问。
软件可以是以包括计算机程序代码的计算机程序的形式,该计算机程序代码用于配置计算机以执行描述的方法的构成部分,或者软件可以是以包括计算机程序代码装置的计算机程序的形式,该程序代码装置适于在程序在计算机上运行时执行这里描述的方法中的任何方法的所有步骤,并且其中计算机程序可以体现于计算机可读介质上。程序代码可以存储于一个或者多个计算机可读介质中。这里免受的技术的特征独立于平台,这意味着可以在具有多种处理器的多种计算平台上实施本技术。
本领域技术人员也将认识到功能、技术或者方法的全部或者部分可以由专用电路、专用集成电路、可编程逻辑阵列、现场可编程门阵列等实现。例如,模块、功能、部件或者逻辑可以包括形式为电路装置的硬件。这样的电路装置可以包括在制造工艺中可用的晶体管和/或其它硬件元件。举例而言,这样的晶体管和/或其它元件可以用来形成实施和/或包含存储器的电路装置或者结构,比如寄存器、触发器或者锁存器、逻辑运算器如布尔运算、数学运算器如加法器、乘法器或者移位器以及互连。这样的元件可以被提供为定制电路或者标准单元库、宏或者在其它抽象水平提供这些元件。可以在具体布置中互连这样的元件。模块、功能、部件或者逻辑可以包括固定功能的电路装置和可以被编程用于执行一个或者多个功能的电路装置;可以从固件或者软件更新或者控制机制提供这样的编程。在示例中,硬件逻辑具有实施固定功能操作、状态机或者过程的电路装置。
也旨在于涵盖如用于设计集成电路或者用于配置可编程芯片以执行希望的功能的软件,该软件“描述”或者定义对以上描述的模块、功能、部件或者逻辑进行实施的硬件配置(比如HDL(硬件描述语言))软件。也就是说,可以提供计算机可读存储介质,该计算机可读存储介质具有在其上编码的计算机可读程序代码,该计算机可读程序代码用于生成被配置用于执行这里描述的方法中的任何方法的处理单元或者用于生成包括这里描述的任何装置的处理单元。
术语“处理器”和“计算机”这里用来指代任何设备或者其部分,该设备具有处理能力,从而使得它可以执行指令,或者指代专用电路,该专用电路能够执行功能或者方法的全部或者部分,或者指代其任何组合。
虽然已经用结构特征和/或方法动作特有的言语描述主题内容,但是将理解在所附权利要求中限定的主题内容未必限于以上描述的具体特征或者动作。实际上,公开以上描述的具体特征和动作作为实施权利要求的示例形式。将理解,以上描述的益处和优点可以与一个示例有关或者可以与若干示例有关。
如本领域技术人员将清楚的那样,可以扩展或者更改这里给定的任何范围或者值而未失去寻求的效果。可以按照任何适当顺序或者在适当时同时执行这里描述的方法的步骤。以上描述的示例的方面可以与描述的其它示例中的任何示例的方面组合以形成更多示例而未失去寻求的效果。
Claims (20)
1.一种压缩计算机图形系统中的顶点参数数据的方法,其中所述顶点参数数据包括数据块,所述数据块包括顶点的与至少一个参数有关的数据,所述顶点中的每个顶点的所述数据包括在相应位置的多个数据段,所述方法包括:
分析所述数据块中的所述数据以确定用于将所述顶点的数据段分组成用于压缩的段块的压缩分组方案;
根据确定的所述压缩分组方案将所述顶点的数据段分组在一起以形成多个段块,所述压缩分组方案被确定以使得所述段块中的每个段块包括所述顶点中的相应多个顶点的一个或者多个数据段的多个段集合,所述段集合在所述顶点中的所述多个顶点中的每个顶点的所述数据内具有对应位置;
压缩所述段块中的至少一个段块;以及
在所述压缩所述段块中的至少一个段块之后,使用所述段块以形成压缩的数据块。
2.根据权利要求1所述的方法,其中所述压缩所述段块中的至少一个段块包括基于所述数据块中的所述数据的所述分析来选择压缩算法。
3.根据权利要求1或者2所述的方法,其中所述压缩所述段块中的至少一个段块包括使用第一压缩算法来压缩所述段块中的第一段块并且使用第二压缩算法来压缩所述段块中的第二段块。
4.根据任一前述权利要求所述的方法,其中在所述段块中的第一段块中包括的每个顶点的数据段数目不同于在所述段块中的第二段块中包括的每个顶点的数据段数目。
5.根据任一前述权利要求所述的方法,其中如果在段块中包括的所述多个顶点的所述段集合具有公共值,则通过用所述公共值表示在所述段块中的全部所述段集合来压缩所述段块。
6.根据任一前述权利要求所述的方法,其中所述压缩所述段块中的至少一个段块包括:
基于段块中的至少一个段集合的值标识起始,并且
为所述段块中的所述段集合中的每个段集合确定从起始的差值。
7.根据权利要求6所述的方法,其中所述段块中的具有最低值的所述段集合的值被选择作为起始,或者其中偏置值与所述段块中的所述段集合中的一个或者多个段集合相加以由此减少所述段块中的所述段集合的值的范围。
8.根据权利要求6或者7所述的方法,其中所述压缩所述段块中的至少一个段块包括:
基于段块中的多个段集合的值标识分离的起始,并且
为所述段块中的所述段集合中的每个段集合确定从所述起始之一的最小差值和指向使用的所述起始的索引。
9.根据权利要求6至8中的任一权利要求所述的方法,其中所述压缩所述段块中的至少一个段块包括:
为所述段块中的所述段集合的所述差值构造查找表,并且
为所述段块中的所述段集合中的每个段集合确定用于引用所述查找表的索引。
10.根据任一前述权利要求所述的方法,其中所述压缩所述段块中的至少一个段块包括:
为段块中的所述段集合的差值构造查找表,并且
为所述段块中的所述段集合中的每个段集合确定用于引用所述查找表的索引。
11.根据任一前述权利要求所述的方法,还包括形成所述压缩的数据块的头部,其中所述头部包括指示所述压缩的数据块内的所述段块的压缩格式的压缩格式数据,
其中所述压缩的数据块的所述头部还包括为所述数据段中的每个数据段指示根据确定的所述压缩分组方案将所述数据段分组成哪个段块的段控制数据。
12.根据任一前述权利要求所述的方法,其中(i)在将所述数据块中的所述数据段分组成的段块数目的上限的约束内,或者(ii)在段集合中的比特数的上限的约束内,确定所述压缩分组方案。
13.根据任一前述权利要求所述的方法,其中基于所述数据块中的所述数据的所述分析来确定所述压缩分组方案,从而使得将所述多个顶点的在所述多个顶点中的每个顶点的所述数据内具有对应位置并且都具有相同值的段集合一起分组成段块。
14.根据任一前述权利要求所述的方法,还包括将所述数据查找表拆分成分节,其中每个分节包括所述顶点的相应子集的所述数据,其中将每个分节中的所述顶点的所述数据段分离地分组成段块,从而使得每个段块包括在所述分节中的仅一个分节内的顶点的数据段。
15.根据权利要求14所述的方法,还包括基于所述数据块中的所述数据的所述分析对在所述数据块内的所述顶点的所述数据重新排序以由此增加在所述分节中的至少一个分节中包括的不同顶点的所述数据的相似性。
16.一种计算机图形系统,包括被配置用于压缩顶点参数数据的处理单元,其中所述顶点参数数据包括数据块,所述数据块包括顶点的与至少一个参数有关的数据,其中所述顶点中的每个顶点的所述数据包括在相应位置的多个数据段,所述处理单元被配置用于:
分析所述数据块中的所述数据以确定用于将所述顶点的数据段分组成用于压缩的段块的压缩分组方案;
根据确定的所述压缩分组方案将所述顶点的数据段分组在一起以形成多个段块,所述压缩分组方案被确定以使得所述段块中的每个段块包括所述顶点中的相应多个顶点的一个或者多个数据段的多个段集合,所述段集合在所述顶点中的所述多个顶点中的每个顶点的所述数据内具有对应位置;
压缩所述段块中的至少一个段块;并且
在压缩所述段块中的至少一个段块之后,使用所述段块以形成压缩的数据块。
17.根据权利要求16所述的系统,其中所述处理单元还被配置用于基于所述数据块中的所述数据的所述分析来选择压缩算法。
18.根据权利要求16或者17所述的系统,其中所述处理单元还被配置用于通过使用第一压缩算法压缩所述段块中的第一段块并且使用第二压缩算法压缩所述段块中的第二段块来压缩所述段块中的至少一个段块。
19.一种计算机可读介质,在其上编码有计算机可读程序代码,所述计算机可读程序代码用于生成被配置用于执行根据权利要求1至15中的任一权利要求所述的方法的处理单元。
20.一种在计算机图形系统中的数据解压单元,所述数据解压单元被配置用于解压已经使用根据权利要求1至15中的任一权利要求所述的方法而被压缩的压缩的顶点参数数据以提供选择的顶点的解压的顶点参数数据,所述数据解压单元包括:
读取模块,被配置用于读取所述压缩的数据块的头部以确定用来将所述选择的顶点的所述数据段分组成用于压缩的段块的所述压缩分组方案,并且确定用于解压所述压缩的数据块的至少一个压缩的段块的解压算法;以及
解压模块,被配置用于使用确定的所述解压算法来解压所述压缩的数据块的所述至少一个压缩的段块中的所述选择的顶点的所述数据段,以由此提供所述选择的顶点的所述解压的顶点参数数据。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB1308298.7A GB2507838B (en) | 2013-05-09 | 2013-05-09 | Vertex parameter data compression |
GB1308298.7 | 2013-05-09 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104143990A true CN104143990A (zh) | 2014-11-12 |
CN104143990B CN104143990B (zh) | 2018-03-23 |
Family
ID=48627481
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410193721.9A Active CN104143990B (zh) | 2013-05-09 | 2014-05-08 | 顶点参数数据压缩 |
Country Status (4)
Country | Link |
---|---|
US (1) | US9478002B2 (zh) |
CN (1) | CN104143990B (zh) |
DE (1) | DE102014006734A1 (zh) |
GB (1) | GB2507838B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106127671A (zh) * | 2015-05-06 | 2016-11-16 | 联发科技股份有限公司 | 顶点数据压缩方法和装置及相关的顶点数据解压缩方法和装置 |
CN108848082A (zh) * | 2018-05-31 | 2018-11-20 | 深圳市腾讯网络信息技术有限公司 | 数据处理方法、装置、存储介质及计算机设备 |
CN111508056A (zh) * | 2019-01-29 | 2020-08-07 | 畅想科技有限公司 | 利用扩展变换级掩码的图形处理系统 |
CN112287391A (zh) * | 2020-11-18 | 2021-01-29 | 广东新禾道信息科技有限公司 | 基于区块链的数据安全存储方法及系统 |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2526598B (en) | 2014-05-29 | 2018-11-28 | Imagination Tech Ltd | Allocation of primitives to primitive blocks |
US20160035128A1 (en) * | 2014-08-03 | 2016-02-04 | Mediatek Singapore Pte. Ltd. | Graphics processing system for performing deferred vertex attribute shading based on split vertex bitstreams and related graphics processing method |
US10235338B2 (en) * | 2014-09-04 | 2019-03-19 | Nvidia Corporation | Short stack traversal of tree data structures |
US20160173895A1 (en) * | 2014-12-12 | 2016-06-16 | Stmicroelectronics (Grenoble 2) Sas | Method and device for storing and reading data, particularly video data, in storage blocks |
US9748972B2 (en) * | 2015-09-14 | 2017-08-29 | Leco Corporation | Lossless data compression |
US10062143B2 (en) * | 2016-09-12 | 2018-08-28 | Advanced Micro Devices, Inc. | Method and apparatus for compressing randomly accessed data |
US10282889B2 (en) | 2016-11-29 | 2019-05-07 | Samsung Electronics Co., Ltd. | Vertex attribute compression and decompression in hardware |
GB2567436B (en) * | 2017-10-10 | 2019-10-02 | Imagination Tech Ltd | Geometry to tiling arbiter for tile-based rendering system |
GB2569342B (en) * | 2017-12-14 | 2019-12-11 | Imagination Tech Ltd | Multi-view Primitive blocks |
US11461275B2 (en) * | 2019-05-31 | 2022-10-04 | Apple Inc. | Compression techniques for vertices of graphic models |
GB2607692B (en) | 2019-08-23 | 2023-08-02 | Imagination Tech Ltd | Random accessible image data compression |
US12014527B2 (en) * | 2020-06-22 | 2024-06-18 | Advanced Micro Devices, Inc. | Delta triplet index compression |
US20230004533A1 (en) * | 2021-07-01 | 2023-01-05 | Microsoft Technology Licensing, Llc | Hybrid intermediate stream format |
US20230281876A1 (en) * | 2022-03-04 | 2023-09-07 | Tencent America LLC | Mesh compression with constrained geometry dynamic range |
CN116521063B (zh) * | 2023-03-31 | 2024-03-26 | 北京瑞风协同科技股份有限公司 | 一种hdf5的试验数据高效读写方法及装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2483502A (en) * | 2010-09-10 | 2012-03-14 | Imagination Tech Ltd | Compressing Vertex Parameter Data |
CN102754103A (zh) * | 2010-02-16 | 2012-10-24 | 西门子产品生命周期管理软件公司 | 用于边界表示的面和边连通性的压缩的方法和系统 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7085319B2 (en) * | 1999-04-17 | 2006-08-01 | Pts Corporation | Segment-based encoding system using segment hierarchies |
US20080175475A1 (en) * | 2007-01-23 | 2008-07-24 | Chih-Ta Star Sung | Method of image frame compression |
-
2013
- 2013-05-09 GB GB1308298.7A patent/GB2507838B/en active Active
-
2014
- 2014-05-02 US US14/268,162 patent/US9478002B2/en active Active
- 2014-05-08 DE DE102014006734.3A patent/DE102014006734A1/de active Pending
- 2014-05-08 CN CN201410193721.9A patent/CN104143990B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102754103A (zh) * | 2010-02-16 | 2012-10-24 | 西门子产品生命周期管理软件公司 | 用于边界表示的面和边连通性的压缩的方法和系统 |
GB2483502A (en) * | 2010-09-10 | 2012-03-14 | Imagination Tech Ltd | Compressing Vertex Parameter Data |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106127671A (zh) * | 2015-05-06 | 2016-11-16 | 联发科技股份有限公司 | 顶点数据压缩方法和装置及相关的顶点数据解压缩方法和装置 |
CN108848082A (zh) * | 2018-05-31 | 2018-11-20 | 深圳市腾讯网络信息技术有限公司 | 数据处理方法、装置、存储介质及计算机设备 |
CN111508056A (zh) * | 2019-01-29 | 2020-08-07 | 畅想科技有限公司 | 利用扩展变换级掩码的图形处理系统 |
CN111508056B (zh) * | 2019-01-29 | 2023-04-18 | 畅想科技有限公司 | 利用扩展变换级掩码的图形处理系统 |
US11640648B2 (en) | 2019-01-29 | 2023-05-02 | Imagination Technologies Limited | Graphics processing systems with expansion transformation stage masks |
CN112287391A (zh) * | 2020-11-18 | 2021-01-29 | 广东新禾道信息科技有限公司 | 基于区块链的数据安全存储方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
GB2507838A (en) | 2014-05-14 |
US9478002B2 (en) | 2016-10-25 |
US20140354666A1 (en) | 2014-12-04 |
DE102014006734A1 (de) | 2014-11-13 |
GB201308298D0 (en) | 2013-06-12 |
CN104143990B (zh) | 2018-03-23 |
GB2507838B (en) | 2014-09-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104143990A (zh) | 顶点参数数据压缩 | |
US11610358B2 (en) | Data structures, methods and tiling engines for hierarchically storing tiling information in a graphics processing system | |
US11532115B2 (en) | Data structures, methods and tiling engines for storing tiling information in a graphics processing system | |
US10600142B2 (en) | Compression and decompression of indices in a graphics pipeline | |
US11694367B2 (en) | Compressing texture data on a per-channel basis | |
US11978234B2 (en) | Method and apparatus of data compression | |
EP3843080A1 (en) | Methods and systems for storing variable length data blocks in memory | |
CN115836317A (zh) | 增量三元组索引压缩 | |
US9741155B2 (en) | Apparatus and method for tile-based graphic data rendering | |
US11164373B2 (en) | Graphics processing apparatus | |
CN116820580B (zh) | 指令的执行方法、系统及装置、图形处理器及电子设备 | |
CN117953175B (zh) | 一种虚拟世界数据模型的构建方法、系统、设备及介质 | |
CN105474266A (zh) | 图形数据表示 | |
CN117611693A (zh) | 数据处理方法、装置、计算机可读存储介质和电子装置 | |
CN113643191A (zh) | 用于体素模型的平滑方法、装置及电子设备 | |
CN114972676A (zh) | 网格构建方法、装置、电子设备和计算机可读存储介质 | |
CN111062856A (zh) | 一种优化的OpenGL图形属性排布方法 | |
CN116150100A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |