"3Dコンピュータグラフィックスシステムにおいて頂点パラメータデータを圧縮する方法であって、前記頂点パラメータデータが、複数の頂点に関するデータブロックを含み、前記各頂点に関するデータが、少なくとも1つのパラメータに関する複数のバイトデータを含み、前記複数のバイトデータを個々のバイトに分割するステップと、前記複数の頂点に関する前記データからの対応するバイト位置を有するバイトを互いにグループ化して複数のバイトブロックを形成するステップと、第1の圧縮アルゴリズムを使用して前記バイトブロックの少なくとも1つを圧縮するステップと、を含み、前記圧縮アルゴリズムが、バイトブロック内の少なくとも1つのバイトをバイト原点として記憶し、前記バイトブロック内の残りのバイトの各々を前記原点の1つとの差分値として記憶するステップを含む、ことを特徴とする方法。前記圧縮ステップが、前記第1の圧縮アルゴリズムを使用して第1のバイトブロックを圧縮し、第2の圧縮アルゴリズムを使用して第2のバイトブロックを圧縮するステップを含む、ことを特徴とする請求項1に記載の方法。頂点の各パラメータについての前記頂点パラメータデータが符号ビットを含み、前記方法が、前記分割ステップの前に前記符号ビットを最下位バイトに移動させるステップをさらに含む、ことを特徴とする請求項1又は請求項2に記載の方法。前記バイトブロック内の最も値の小さなバイトがバイト原点として選択される、ことを特徴とする請求項1に記載の方法。前記圧縮ステップが、バイトブロック内の複数のバイトを別個のバイト原点として記憶し、前記バイトブロック内の残りのバイトの各々を前記バイト原点の1つとの差分値として記憶するステップを含む、ことを特徴とする請求項1から請求項4のいずれかに記載の方法。前記圧縮ステップが、バイトブロック内の最小数のバイトを、所定値よりも小さな前記差分値の全てに必要なバイト原点として記憶するステップを含む、ことを特徴とする請求項5に記載の方法。前記圧縮ステップが、aバイトブロックからの第1のバイト及び第2のバイトを、バイト範囲を定める最大バイト値及び最小バイト値として記憶するステップと、b後続のバイト値をチェックし、該後続のバイト値が前記バイト範囲外にある場合、前記最大バイト値又は最小バイト値を前記後続のバイト値に置き換えて、最新の最大バイト値及び最小バイト値、並びに最新のバイト範囲を形成するステップと、c前記バイト範囲を定めるのに必要なビット数が所定のビット数を超えるまで、前記バイトブロック内の各後続のバイトに対してステップbを繰り返すステップと、その後、d前記バイト範囲を、前記所定のビット数又はそれ以下を使用して各々定義可能な2つのバイト範囲に分割するステップと、e各後続のバイト値をチェックし、該後続のバイト値が前記バイト範囲の全ての外にある場合、前記範囲の1つの前記最大バイト値又は最小バイト値を前記後続のバイト値に置き換えて、最新の最大バイト値及び最小バイト値、並びに最新のバイト範囲を形成するステップと、fバイト範囲を定めるのに必要なビット数が前記所定のビット数を超えるまで、前記バイトブロック内の各後続のバイトに対してステップeを繰り返した後、前記バイトブロック内の前記バイトが全てバイト範囲に入るまでステップeを繰り返すステップと、をさらに含み、前記バイトブロック内のバイト範囲の数が、前記圧縮ステップで使用されるバイト原点の数に対応する、ことを特徴とする請求項1から請求項6のいずれかに記載の方法。ステップfの後に、2つのバイト範囲をマージして、マージされたバイト範囲を形成するステップをさらに含む、ことを特徴とする請求項7に記載の方法。前記3Dコンピュータグラフィックスシステムが、タイルベースの3Dコンピュータグラフィックスシステムである、ことを特徴とする請求項1から請求項8のいずれかに記載の方法。前記圧縮ステップの後に、前記バイトブロックをマージして圧縮データブロックを形成するステップをさらに含む、ことを特徴とする請求項1から請求項9のいずれかに記載の方法。3Dコンピュータグラフィックスシステムにおいて頂点パラメータデータを圧縮するための装置であって、前記頂点パラメータデータが、複数の頂点に関するデータブロックを含み、前記各頂点に関するデータが、少なくとも1つのパラメータに関する複数のバイトデータを含み、前記複数のバイトデータを個々のバイトに分割し、前記複数の頂点に関する前記データからの対応するバイト位置を有するバイトを互いにグループ化して複数のバイトブロックを形成するように構成された分割手段と、圧縮アルゴリズムを使用して前記バイトブロックの少なくとも1つを圧縮するように構成された圧縮手段と、を備え、前記圧縮アルゴリズムが、バイトブロック内の少なくとも1つのバイトをバイト原点として記憶し、前記バイトブロック内の残りのバイトの各々を前記原点の1つとの差分値として記憶するステップを含む、ことを特徴とする装置。3Dコンピュータグラフィックスシステムにおいて圧縮頂点パラメータデータを展開して展開データを提供する方法であって、各頂点に関する前記展開データが、少なくとも1つのパラメータに関する複数のバイトデータを含み、各パラメータに関する前記圧縮頂点パラメータデータが、圧縮データの複数の別個のバイトブロックを含み、各バイトブロックが、必要とされる複数のランダム順に選択された頂点からの前記複数のバイトデータの対応するバイト位置を有するバイトに関するデータを含み、前記必要とされる頂点の頂点毎の圧縮データを圧縮データブロッカーブロックから読み取るステップと、各バイトブロックのヘッダ内に示される展開アルゴリズムを使用して各バイトブロックを展開し、展開バイトブロックを提供するステップと、各頂点に関する前記展開バイトブロックからの前記バイトを互いにマージすることにより、前記頂点パラメータデータを再構築するステップと、を含むことを特徴とする方法。3Dコンピュータグラフィックスシステムにおいて頂点パラメータデータを展開するための装置であって、各頂点に関する前記展開データが、少なくとも1つのパラメータに関する複数のバイトデータを含み、各パラメータに関する圧縮頂点パラメータデータが、圧縮データの複数の別個のバイトブロックを含み、各バイトブロックが、必要とされる複数のランダム順に選択された頂点からの前記複数のバイトデータの対応するバイト位置を有するバイトに関するデータを含み、各バイトブロックのヘッダ内に示される各バイトブロックのための展開アルゴリズムを決定して、前記必要とされる選択された頂点の頂点毎の圧縮データを圧縮データブロックから読み取り、前記展開アルゴリズムを使用して前記バイトブロックを展開し、展開バイトブロックを提供するように構成された展開手段と、各頂点に関する前記展開バイトブロックからの前記バイトを互いにマージすることにより、前記頂点パラメータデータを再構築するように構成されたマージ手段と、を備えることを特徴とする装置。3Dコンピュータグラフィックスシステムにおいて頂点パラメータデータを圧縮する方法であって、前記頂点パラメータデータが、複数の頂点に関するデータブロックを含み、前記各頂点に関するデータが、少なくとも1つのパラメータに関する複数のバイトデータを含み、前記複数のバイトデータを個々のバイトに分割するステップと、前記各頂点に関するデータからの対応するバイト位置を有するバイトを互いにグループ化して複数のバイトブロックを形成するステップと、圧縮アルゴリズムを使用して、前記バイトブロックの少なくとも1つを圧縮するステップと、を含み、前記圧縮アルゴリズムが、バイトブロック内の固有バイトを識別するステップと、前記固有バイトの少なくとも1つを、バイトデルタテーブルにRAWバイト原点として記憶するステップと、残りの固有バイトを、前記バイトデルタテーブルに、先行するバイト又は前記バイト原点との差分値として記憶するステップと、前記バイトデルタテーブルを参照することにより、前記バイトブロック内の前記バイトを符号化するバイトインデックスを形成するステップと、を含む、ことを特徴とする方法。前記固有バイトのうちの最初のものを、バイトデルタテーブルにRAWバイト原点として記憶するステップと、後続のバイトと先行するバイト又は先行するバイト原点との差分値が所定値よりも小さい場合、前記後続のバイトを前記差分値として記憶するステップと、後続のバイトと前記先行するバイト又は先行するバイト原点との前記差分値が前記所定値に等しいか又はそれ以上の場合、前記後続のバイトをさらなるRAWバイト原点として記憶するステップと、をさらに含むことを特徴とする請求項14に記載の方法。前記バイトデルタテーブルが、該バイトデルタテーブル内の前記後続のデータがRAWバイト原点であるか、それとも差分値であるかを示す少なくとも1つの制御ビットを含む、ことを特徴とする請求項14又は請求項15に記載の方法。前記圧縮ステップの後に、前記バイトブロックをマージして圧縮データブロックを形成するステップをさらに含む、請求項14から請求項16のいずれかに記載の方法。3Dコンピュータグラフィックスシステムにおいて頂点パラメータデータを圧縮するための装置であって、前記頂点パラメータデータが、複数の頂点に関するデータブロックを含み、前記各頂点に関するデータが、少なくとも1つのパラメータに関する複数のバイトデータを含み、前記複数のバイトデータを個々のバイトに分割し、各頂点に関するデータからの対応するバイト位置を有するバイトを互いにグループ化して複数のバイトブロックを形成するように構成された分割手段と、圧縮アルゴリズムを使用して、前記バイトブロックの少なくとも1つを圧縮するように構成された圧縮手段と、を備え、前記圧縮アルゴリズムが、バイトブロック内の固有バイトを識別するステップと、前記固有バイトの少なくとも1つを、バイトデルタテーブルにRAWバイト原点として記憶するステップと、残りの固有バイトを、前記バイトデルタテーブルに、先行するバイト又は前記バイト原点との差分値として記憶するステップと、前記バイトデルタテーブルを参照することにより、前記バイトブロック内の前記バイトを符号化するバイトインデックスを形成するステップと、を含む、ことを特徴とする装置。本発明の好ましい実施形態は、3Dコンピュータグラフィックスの頂点パラメータデータ圧縮に使用できる無損失圧縮方法及びシステムを含む。これらの方法及びシステムは、グラフィックスの頂点パラメータデータをより小さなメモリ空間に記憶できるようにし、従ってグラフィックス装置のメモリ要件を軽減する。本発明は、単純、高速、かつ記憶バッファ要件が非常に限られたアルゴリズムを使用することができる。また、これらのアルゴリズムは、圧縮後に固定サイズの頂点パラメータデータを有し、これによりプリミティブブロックデータストリーム内の圧縮頂点データのランダムアクセスが可能になり、このことはタイルベースの3Dコンピュータグラフィックスシステムにおいて特に有益である。第1の態様では、本発明は、3Dコンピュータグラフィックスシステムにおいて頂点パラメータデータを圧縮する方法であって、この頂点パラメータデータは、複数の頂点に関するデータブロックを含み、各頂点に関するデータは、少なくとも1つのパラメータに関する複数のバイトデータを含み、複数のバイトデータを個々のバイトに分割するステップと、各頂点に関するデータからの対応するバイトを互いにグループ化して複数のバイトブロックを形成するステップと、圧縮アルゴリズムを使用してバイトブロックを圧縮するステップと、を含む方法を提供する。本明細書で使用する対応するバイトという用語は、複数のバイトデータ内のバイト位置を意味する。従って、各頂点の特定のパラメータを表すデータ値の最上位バイトMSBをグループ化してMSBのバイトブロックを形成する。同様に、このパラメータのデータ値の各々の最下位バイトLSBをグループ化して別のバイトブロックを形成する。本発明者は、グラフィックスの頂点パラメータデータには、複数のバイト値のうちの対応する個々のバイト間に、完全な複数のバイト値間に存在する相関性よりも強い相関性が存在することが多く、従って圧縮の余地が大きいことを見出した。異なるバイトブロックは、その内容に依存して異なる圧縮アルゴリズムを使用して圧縮することができる。例えば、バイトブロック内のバイトが全て等しい場合、このバイトブロックを、広い値の範囲にわたってバイトが分散している場合よりも効率的に圧縮することができる。頂点パラメータデータは、典型的には32ビット浮動小数点データなどの浮動小数点データであるが、固定小数点値データにも本発明を同様に適用することができる。頂点パラメータは、例えば、X、Y及びZ座標、並びにRHW及びテクスチャ座標U、V、S及びTとすることができる。適切な圧縮アルゴリズムを決定できるように、バイトブロックを圧縮するステップは、バイトブロックの内容を評価し、このバイトブロックの内容に基づいて圧縮アルゴリズムを選択するステップを含むことが好ましい。評価ステップは、バイトブロック内の固有バイトの数を求め、これらの固有バイトの分散を特定するステップを含むことが好ましい。頂点の各パラメータの頂点パラメータデータが符号ビットを含む場合、方法は、分割ステップの前に符号ビットを最下位バイトに移動させるステップをさらに含む。通常はMSBの方がLSBよりも強い相関性を有し、従って符号ビットをLSBに移動させるステップは、MSBバイトブロックの圧縮性を高める一方で、LSBバイトブロックの圧縮性には有意に影響を与えないので、このステップは有益である。圧縮ステップは、第1の圧縮アルゴリズムを使用して第1のバイトブロックを圧縮し、第2の圧縮アルゴリズムを使用して第2のバイトブロックを圧縮するステップを含むことができる。1つの好ましい圧縮法は、バイトブロック内の少なくとも1つのバイトをバイト原点として記憶するステップと、バイトブロック内の残りのバイトの各々を、バイト原点との差分値として記憶するステップとを含む。バイトブロック内の最も値の小さなバイトをバイト原点として選択することが好ましい。この方法は、バイトブロック内の複数のバイトを別個のバイト原点として記憶するステップと、バイトブロック内の残りのバイトの各々を、バイト原点の1つとの差分値として記憶するステップとを含むことが好ましい。複数のバイト原点を使用することにより、単一のバイト原点のみを使用して圧縮できないデータを圧縮できるようになる。圧縮ステップは、バイトブロック内の最小数のバイトを、所定値よりも小さな差分値の全てにとって必要なバイト原点として記憶するステップを含むことが好ましい。グラフィックスシステムにより設定される最大数のバイト原点が存在して、この最大数に達するとともに差分値が依然として所定値を超えている場合には、異なる圧縮スキームを使用しなければならないようにしてもよい。所定値を下回る差分値を有するデータブロックを圧縮するために使用できるバイト原点を計算できるように、バイトブロック内のバイトデータは、降順又は昇順で並べ換えられることが好ましい。本発明の方法は、各頂点のパラメータバイトデータが圧縮のために到着した場合、最初の個別のステップにおいてバイトブロックを並べ換える必要なくバイト原点を識別する。圧縮ステップは、aバイトブロックからの第1のバイト及び第2のバイトを、バイト範囲を定める最大バイト値及び最小バイト値として記憶するステップと、b後続のバイト値をチェックし、この後続のバイト値がバイト範囲外にある場合、最大バイト値又は最小バイト値を後続のバイト値に置き換えて、最新の最大バイト値及び最小バイト値、並びに最新のバイト範囲を形成するステップと、cバイト範囲を定めるのに必要なビット数が所定のビット数を超えるまで、バイトブロック内の各後続のバイトに対してステップbを繰り返すステップと、その後、dバイト範囲を、所定のビット数又はそれ以下を使用して各々定義可能な2つのバイト範囲に分割するステップと、e各後続のバイト値をチェックし、この後続のバイト値がバイト範囲の全ての外にある場合、これらの範囲の1つの最大バイト値又は最小バイト値を後続のバイト値に置き換えて、最新の最大バイト値及び最小バイト値、並びに最新のバイト範囲を形成するステップと、fバイト範囲を定めるのに必要なビット数が所定のビット数を超えるまで、バイトブロック内の各後続のバイトに対してステップeを繰り返した後、バイトブロック内のバイトが全てバイト範囲に入るまでステップeを繰り返すステップと、をさらに含み、バイトブロック内のバイト範囲の数が、圧縮ステップで使用されるバイト原点の数に対応することが好ましい。方法は、ステップfの後に、2つのバイト範囲をマージして、マージされたバイト範囲を形成するステップをさらに含むことが好ましい。圧縮ステップは、バイトブロック内の各固有バイトをバイトテーブルに記憶し、このバイトテーブルを参照することにより、バイトブロック内のバイトを符号化するバイトインデックスを形成するステップを含むことができる。圧縮ステップは、バイトブロック内の固有バイトを識別するステップと、固有バイトの少なくとも1つを、バイトデルタテーブルにRAWバイト原点として記憶するステップと、残りの固有バイトを、バイトデルタテーブルに、先行するバイト又はバイト原点との差分値として記憶するステップと、バイトデルタテーブルを参照することにより、バイトブロック内のバイトを符号化するバイトインデックスを形成するステップと、を含むことができる。圧縮ステップは、固有バイトのうちの最初のものを、バイトデルタテーブルにRAWバイト原点として記憶するステップと、後続のバイトと先行するバイト又は先行するバイト原点との差分値が所定値よりも小さい場合、後続のバイトを差分値として記憶するステップと、後続のバイトと先行するバイト又は先行するバイト原点との差分値が所定値に等しいか又はそれ以上の場合、後続のバイトをさらなるRAWバイト原点として記憶するステップと、をさらに含むことができる。複数の固有バイトをRAWバイト原点として記憶することができ、残りのバイトの各々を、これらのRAWバイト原点の1つとの差分値として記憶することができる。この場合、バイトデルタテーブルは、バイトデルタテーブル内の後続のデータがRAWバイト原点であるか、それとも差分値であるかを示す制御ビットを含むことができる。3Dコンピュータグラフィックスシステムは、タイルベースの3Dコンピュータグラフィックスシステムである。本発明は、データを全て展開する必要なく圧縮データへのランダムアクセスを可能にするので、タイルベースのシステムにとって特に有利である。方法は、圧縮ステップの後に、バイトブロックをマージして圧縮データブロックを形成するステップをさらに含むことが好ましい。別の態様では、本発明は、3Dコンピュータグラフィックスシステムにおいて頂点パラメータデータを圧縮するための装置であって、この頂点パラメータデータは、複数の頂点に関するデータブロックを含み、各頂点に関するデータは、少なくとも1つのパラメータに関する複数のバイトデータを含み、複数のバイトデータを個々のバイトに分割し、各頂点に関するデータからの対応するバイトを互いにグループ化して複数のバイトブロックを形成するように構成された分割手段と、圧縮アルゴリズムを使用して、バイトブロックの少なくとも1つを圧縮するように構成された圧縮手段と、を備える装置を提供する。この装置は、バイトブロックの内容を評価して、このバイトブロックの内容に基づいて圧縮アルゴリズムを選択するように構成された評価手段をさらに備えることができる。頂点の各パラメータの頂点パラメータデータは符号ビットを含むことができ、この結果、装置は、分割手段によるデータの分割前に符号ビットを最下位バイトに移動させるように構成された符号ビット移動手段をさらに備えることができる。さらに別の態様では、本発明は、3Dコンピュータグラフィックスシステムにおいて頂点パラメータデータを展開する方法であって、各頂点に関する展開データが、少なくとも1つのパラメータに関する複数のバイトデータを含み、各パラメータに関する圧縮頂点パラメータデータが、圧縮データの複数の別個のバイトブロックを含み、各バイトブロックが、複数の頂点からの複数のバイトデータの対応するバイトに関するデータを含み、各バイトブロックのヘッダ内に示される展開アルゴリズムを使用して各バイトブロックを展開し、展開バイトブロックを提供するステップと、各頂点に関する展開バイトブロックからのバイトを互いにマージすることにより、頂点パラメータデータを再構築するステップと、を含む方法を提供する。展開方法は、基本的に圧縮処理の逆である。従って、展開方法は、圧縮データの性質に依存して、a圧縮バイトデータストリームから複数のバイト原点値を読み取るステップと、b圧縮データから差分値を読み取り、圧縮データからバイト原点のインデックスを読み取り、差分値を対応するバイト原点に加算して元のバイトデータを再構築するステップと、c後続のデータがRAWバイトであるか、それとも差分値であるかを示す制御ビットを読み取り、差分値をRAWバイト原点に加算して固有バイト値を形成することにより、圧縮バイトデータストリームから固有バイトテーブルを構築するステップと、d圧縮データからインデックス値を読み取り、対応する固有バイトテーブルエントリを元のバイトデータとして取得するステップと、eバイトブロックをマージするステップ後、符号ビットを最下位バイトから最上位バイトに移動させるステップと、のうちの1つ又はそれ以上をさらに含むことができる。さらに別の態様では、本発明は、3Dコンピュータグラフィックスシステムにおいて電子頂点パラメータデータを展開するための装置であって、各頂点に関する展開データが、少なくとも1つのパラメータに関する複数のバイトデータを含み、各パラメータに関する圧縮頂点パラメータデータが、圧縮データの複数の別個のバイトブロックを含み、各バイトブロックが、複数の頂点からの複数のバイトデータの対応するバイトに関するデータを含み、各バイトブロックのヘッダ内に示される各バイトブロックのための展開アルゴリズムを決定し、この展開アルゴリズムを使用してバイトブロックを展開し、展開バイトブロックを提供するように構成された展開手段と、各頂点に関する展開バイトブロックからのバイトを互いにマージすることにより、頂点パラメータデータを再構築するように構成されたマージ手段と、を備える装置を提供する。この装置は、a圧縮バイトデータストリームから複数のバイト原点値を読み取る手段と、b圧縮データから差分値を読み取り、圧縮データからバイト原点のインデックスを読み取り、差分値を対応するバイト原点に加算して元のバイトデータを再構築する手段と、c後続のデータがRAWバイトであるか、それとも差分値であるかを示す制御ビットを読み取り、差分値をRAWバイト原点に加算して固有バイト値を形成することにより、圧縮バイトデータストリームから固有バイトテーブルを構築する手段と、d圧縮データからインデックス値を読み取り、対応する固有バイトテーブルエントリを元のバイトデータとして取得する手段と、eバイトブロックをマージするステップ後、符号ビットを最下位バイトから最上位バイトに移動させる手段と、のうちの1つ又はそれ以上をさらに備えることができる。本発明におけるアルゴリズムを使用して圧縮された頂点パラメータデータは固定サイズであるため、3Dコンピュータグラフィックスシステムが局所的なタイル領域内でレンダリングを行うために必要とする選択された頂点のパラメータデータのみを展開することが可能である。このことは、画像全体を展開する必要性を避けることによってメモリ帯域幅を節約するので、タイルベースのレンダリング3Dコンピュータグラフィックスシステムにとって大きな利点である。以下、添付図面を参照しながら本発明の好ましい実施形態を詳細に説明する。図3では、X座標、Y座標、奥行きZ、並びにテクスチャリング及びシェーディングに使用するRHWを含む、頂点パラメータデータの典型的なデータ構造を確認することができる。任意にU、V及びS、Tで示すいくつかのテクスチャ座標セットが存在することができる。X、Y、Z、RHW、並びにテクスチャ座標U、V、S及びTの頂点パラメータデータの値は、IEEEの浮動小数点フォーマットである。IEEEの浮動小数点の値は32ビット4バイトを有し、8ビットが指数部に、23ビットが仮数部に、そして1ビットが符号に使用される。アプリケーションの入力データストリームからのプリミティブは、タイルベースの3Dコンピュータグラフィックスシステムによって時間的に連続して受け取られ、事前処理の後、プリミティブブロックにグループ化される。従って、プリミティブブロック内のプリミティブは、大部分が同じ三角形メッシュからのものである。頂点パラメータデータタイプのデータ分布が、プリミティブブロック内で完全にランダムになる可能性は低い。あるオブジェクトをモデル化するためにアプリケーションが使用する三角形メッシュからは、頂点からのX及びY座標値が、表示画面上の限られた範囲内にあるはずである。通常、奥行き値Zは、モデルからの3D面を内挿した結果であり、従って互いに段階的に変化する値である可能性が非常に高い。一般に、頂点パラメータデータの値間の段階的変化は、RHW及びテクスチャ座標データなどのテクスチャリング及びシェーディングに使用されるデータに当てはまる。コンピュータグラフィックス画面の表示解像度はわずかなピクセル単位に固定され、画面上にレンダリングされるプリミティブからのX及びY座標は限られた範囲内にあるので、元の浮動小数点値からのX値及びY値に精度の低い固定小数点フォーマットを使用してパラメータデータ空間を節約することができる。表1に、16ビットの固定小数点フォーマットを使用して、10個の頂点を含むプリミティブブロック内のX及びY座標を表した頂点パラメータデータの例を示す。表1:プリミティブブロックからの頂点データ典型的なタイルベースの3Dコンピュータグラフィックスシステムでは、プリミティブブロック内の各頂点について頂点パラメータデータが順次出力される。このデータ配列は、3Dレンダリング段階において、特にタイルをレンダリングするために全ての頂点が必要とは限らないタイルベースのレンダリングに対して頂点パラメータデータへのアクセスを容易にする。表1に示す10個の頂点のプリミティブブロックでは、頂点パラメータデータが、X0,Y0,Z0,RHW0,U0,V0,S0,T0,X1,Y1,Z1,RHW1,U1,V1,S1,T1,...X9,Y9,Z9,RHW9,U9,V9,S9,T9として出力される。精度要件が高いので、表1に示す32ビット浮動小数点値の頂点パラメータデータには、0バイト値がほとんど無い。頂点パラメータデータ成分の32ビット値の間のバイトデータ分布には、データ圧縮アルゴリズムに不可欠な明確なパターンは存在しない。例えば、表1に示すプリミティブブロックからの頂点Zのデータのデータブロックは、3F758FB43F76ECC83F748FDF3F76ECE43F738FB43F74CA8F3F76C92D3F718FDF3F72CB793F6DCA8Fである。データ分布のランダム性により、3Dコンピュータグラフィックスシステムからの頂点パラメータデータブロックの高い圧縮結果を達成することは困難である。バイトブロック表1のデータから1つ気付くことは、列内のデータのほとんどに関して最上位バイトMSBが非常に類似しており、場合によっては同じこともある点である。表1に示す10個の頂点では、Z、RHW、V、S及びTにおいてMSBが同じである。UにおけるMSBでも、共通バイト値が0xBF、0x3F、及び0xBEの3つしか存在しない。列内の値では、最下位バイトLSBからのデータ分布は非常にランダムである。図4に、3DコンピュータゲームからのレンダリングにおけるZデータからの、32ビットのIEEE値の中の4バイトのデータ分布を示す。図4では、水平軸は、バイト値を8で除算したものであり、垂直軸は、同じ範囲内にバイト値を有する頂点のパーセンテージである。バイト0は32ビット値からの最下位バイトLSBであり、バイト3は最上位バイトMSBである。図4に403で示すように、MSBバイトバイト3のデータ分布は、あるバイト範囲内にほぼ100存在しており、このことは、Z値からのMSBバイトのほとんどが同じ値であることを意味する。図4には、バイト2のデータ分布を402として示しており、このデータ分布では、バイト値の70があるバイト範囲内に存在する。最下位バイトのバイト1及びバイト0のデータ分布は、図4の401及び400のように非常にランダムである。また、図5に、各バイトのデルタ値の分布を図4と同様に示す。デルタ値とは、プリミティブブロックの2番目の頂点から開始して各バイトに関して計算した、現在の頂点のバイト値とプリミティブブロック内の前の頂点からのバイト値との間の差分のことである。図5の503及び502におけるバイト3及びバイト2のデルタ値の分布は、90を超えるピークを有する。バイト1では、デルタ値の分布に60のピークが存在し、最下位バイトバイト0の分布のみが依然として非常にランダムである。頂点パラメータデータ分布の分析から、最上位バイトは良好な圧縮比を有すると予想されるのに対し、最下位バイトは、圧縮アルゴリズムにうまく応答する可能性が低い。本発明の第1の態様の実施形態では、全ての圧縮アルゴリズムが、32ビット浮動小数点値データブロック全体を圧縮するのではなく、全ての頂点パラメータデータ成分の4つの個々のバイトデータブロックに対して別個に作用する。このように、これらの圧縮アルゴリズムは、32ビット浮動小数点データブロックをうまく圧縮できなくても、MSBバイトのデータ分布を利用してバイトブロックを圧縮することができる。3Dレンダリング処理において頂点パラメータデータがアクセスされると、各バイトを別個に展開した後で、元の32ビット頂点パラメータデータ値が再構築される。各バイトブロックはヘッダワードを含み、この中にブロック内の頂点数が含まれる。バイトブロックベースの圧縮は非常に柔軟性があり、精度の低い固定小数点値データブロックにも適用することができ、例えば、16ビットの固定小数点表現は2つのバイトブロックを有し、24ビット表現は3つのバイトブロックを有する。精度が2倍の浮動小数点値では、64ビット及び8つのバイトブロックが存在する。符号ビットの移動IEEEの浮動小数点値は32ビットを有し、8ビットが指数部に、23ビットが仮数部に、そして1ビットが符号に使用される。符号ビットは最上位ビットを占め、従って最上位バイトは、符号のための1つの先頭ビット及び指数部のための7ビットを有する。指数部が同じで符号が異なる2つの浮動小数点値では、MSBバイト値が128ジャンプすることが容易に理解できる。表1の頂点0及び頂点4からのUのMSBバイトで分かるように、0xBF25A708と0x3F25A708という2つの値は同じ指数部0x7Eを有するが、一方は正の値であり、一方は負の値である。バイトデータ分布の分析から、最上位バイトバイト3はうまく圧縮される可能性が非常に高い。従って、指数部の値のデータ分布の特徴を、負の値における符号ビットの変動から保護すべきである。本発明の第2の態様の実施形態は、テクスチャ座標のような、正の値と負の値が混在している可能性がある頂点パラメータデータ成分のデータブロックを圧縮する前に、32ビット浮動小数点値の符号ビットをビット31からビット1に移動させる。符号ビットを移動させた後には、上記の例からの2つのバイト3の値0xBF及び0x3Fは、表2に示すように同じ0x7Eになる。表1の10個の頂点からのU値のバイト3のバイト値間の最大距離は、表2のように128から1に低減し、従って結果的に圧縮性能が向上するようになる。表2:Uの符号ビットを移動した後のプリミティブブロックからの頂点データ最下位バイトのデータ分布は非常にランダムであり、良好な圧縮結果が得られることは予想されず、従って符号ビットをLSBバイト0の最下位に移動させても、全体的な圧縮比に有意な影響を与えることはない。展開後には、符号ビットをビット1からビット31に戻して、元の32ビット浮動小数点値を再構築する。この符号ビットを移動させて圧縮性能を向上させる方法は、固定小数点フォーマット及び倍精度浮動小数点フォーマットなどの、異なるバイト数で表されるその他のフォーマットの値にも適用することができる。固有バイト本発明の第3の態様の実施形態では、バイトデータブロックからのバイト値が全く同じ場合、圧縮ヘッダデータ内の1バイト、及び圧縮バイトブロックが固有バイトフォーマットであることを示す圧縮ヘッダ内のビットフラグしか必要としない。いくつかの頂点パラメータデータ値のMSBでは、固有バイトフォーマットを使用できる可能性が非常に高い。表2に示す10個の頂点では、Z、RHW、V、S及びTのMSBバイト3が全く同じであり、固有バイト法を使用して圧縮することができる。これらの場合、圧縮データ内には、バイト3内の10個のバイトの代わりに、元のデータの10である1つのバイトしか出力されない。好ましい実施形態では、頂点パラメータデータのバイトブロックからの現在のバイト値がバイトブロック内の前のバイト値と重複していないか比較される。前のバイト値のいずれとも一致しない場合、現在のバイトが共通バイトとして保持される。バイトデータブロック内に共通バイト値が1つしか存在しない場合、固有バイトを圧縮バイトデータとして記憶し、バイトデータブロック内の全てのバイトデータを置き換える。3D処理における展開時には、バイトデータブロックが固有バイトフォーマットである場合、全ての頂点のバイト値に固有バイト値が使用される。この固有バイト法は、バイトデータブロックの圧縮にとって非常に効率的であるが、バイト値が全く同じバイトデータブロックに限られる。バイトデルタブロックバイトデータブロックからのバイト値が全く同じとは限らない場合、固有バイトフォーマットを使用してバイトデータブロックを圧縮することはできない。しかしながら、場合によっては、バイトデータブロックからのバイト値が大きく異ならず、従ってバイトデータブロック内のバイト値が限られた範囲内に存在することもある。本発明の第4の態様の実施形態では、バイトデータブロックからの最小バイト値をバイト原点として使用して、データ範囲が限られたバイトデータブロックを、バイトデルタブロックを使用して圧縮することができる。バイトデータブロック内の各バイトに関して、圧縮バイトデータブロック内に、バイト値自体の代わりにデルタ値バイト値とバイト原点値の差分を出力する。デルタ値に必要なビット数は、バイトデータブロック内のバイト値の範囲に依存する。好ましい実施形態では、圧縮ヘッダ内に最小バイト値がバイト原点として保持される。バイトデータブロック内の全てのデルタ値は正の値となり、従って符号ビットは必要ない。8ビットでは、バイト値の範囲が[0,255]に固定される。バイトデータブロックからのデルタ値の範囲を、8ビット未満を使用して表すことができる場合、バイトデルタブロックアルゴリズムを使用してこのバイトデータブロックを圧縮することができる。表3に、バイトブロック内のデルタ値を表すのに必要なビット数を示す。表3:デルタ範囲に必要なビット数好ましい実施形態では、デルタ値のビット数が、8ビットのバイト原点値とともに圧縮ヘッダに記憶される。バイトデータブロックからの各バイトのデルタ値は、ビット数が固定された圧縮データとして出力される。プリミティブブロック内の頂点からのバイトデータ値の圧縮バイトデルタブロックは、バイト原点値にデルタ値を加算することによって容易に展開して元のバイト値を再構築することができる。表2の10個の頂点のUの32ビット値からのバイト3を例にとる。符号ビットを移動させた後のバイト3は、0x7E,0x7E,0x7E,0x7E,0x7E,0x7D,0x7D,0x7E,0x7D,0x7Dである。固有バイト法を使用してバイト3のバイトデータブロックを圧縮することはできない。0x7E及び0x7Dという2つの共通バイト値が存在する。最小バイト値は0x7Dであり、最大バイト値は0x7Eである。最大値と最小値の間の距離は1であり、1ビットのデルタ値を使用して表すことができる。圧縮データは以下の通りである。バイト原点は、7Dの8ビットである。圧縮バイトデルタブロックは、プリミティブブロック内の10個の頂点の各バイトにつき1ビットであり、1111100100の10ビットである。この総圧縮データはバイト原点を含むのでバイトデルタブロックは18ビットであり、これは元々の80ビットのバイトブロックの22.5である。展開時には、圧縮ヘッダから、Uのバイト3がデルタブロック圧縮フォーマットであり、デルタブロックのビット数がバイト毎に1ビットであることが分かる。この圧縮ヘッダデータからは、8ビットのバイト原点も読み取られる。3D処理でアクセスされる頂点Uの値からのバイト3のブロック内の各バイトに関し、圧縮デルタブロックから1ビットのデルタ値が読み取られる。このデルタ値が原点バイトに加算されて元のバイトデータが再構築される。頂点パラメータデータを圧縮する従来技術のスキームで説明したアルゴリズムは、頂点パラメータデータと頂点原点からのパラメータデータとの間の全値のデルタ値を使用する。多くの場合、32ビット浮動小数点フォーマットの頂点パラメータ成分からのデルタ値は、はるかに大きな範囲内にあり、浮動小数点値のデルタの整数表現には多くのビットが必要になり、従って圧縮性能が低下する場合がある。圧縮では、デルタ値に固定小数点フォーマット表現を使用することができるが、これにより圧縮及び展開アルゴリズムの複雑さが増す。本発明におけるバイトデータブロックアルゴリズムは、従来技術で説明したアルゴリズムとは異なり、個々のバイトデータブロックに基づくものである。図5で分かるように、バイトデータブロックでは、バイトデルタブロックを使用して表される可能性が大きく高まる。MSBバイト3及び2では、デルタ値の90パーセント超が[0,7]の範囲内にある。バイト1でも、デルタ値の60パーセントが[0,7]の範囲内にある。提示するバイトデルタブロックアルゴリズムを使用した圧縮性能の改善は、従来技術で説明したアルゴリズムに優る。バイトデルタブロックアルゴリズムの圧縮及び展開の演算は、8ビットの整数表現範囲内における整数の加算及び減算のみであり、従ってこのアルゴリズムは非常に高速かつ効率的であり、コンピュータハードウェア内での実装が容易である。このアルゴリズムは、3Dコンピュータグラフィックスシステム、特にタイルベースの3Dコンピュータグラフィックスシステムにおける頂点パラメータデータの圧縮に使用するのに適している。複数の原点を含むバイトデルタブロック表2の10個の頂点からのVのバイト1の値が0x76,0x76,0xFB,0xFB,0x76,0x85,0x76,0xFB,0xFB,0x85であることに注目する。0x76、0xFB及び0x85という3つの共通バイト値が存在する。これらの3つの共通バイトにおける最大バイト0xFBと最小バイト0x76の間の距離は0x85であり、これは8ビット整数としてしか表すことができない。この場合、デルタブロックアルゴリズムを使用してバイト1を圧縮することはできない。3つの共通バイト値をさらに分析すると、0x76と0x85の間の距離は0xFであり、これは4ビットのデルタ値を使用して表すことができる。従って、2つの別個の範囲内の4ビットのデルタ値を使用して全体のバイトデータブロックを表すことができる。本発明の第5の態様の実施形態では、複数のバイト原点を含むデルタブロックを使用して、バイトデータブロックのデータを圧縮することができる。上記の例からの2つの範囲のバイト原点は、0x76及び0xFBである。デルタ値がいずれの原点に基づくものであるかを示すために、各圧縮バイトに1つの追加ビットが必要である。バイト1の圧縮データは以下のようになる。2つの原点は、76FBの16ビットである。4ビットをデルタ値とし、1ビットをバイト原点インデックスとする頂点毎に5ビットの圧縮デルタブロックデータは、10個の頂点では50ビットとなる。プリミティブブロック内の10個の頂点のバイト1の圧縮データは、00000,00000,00001,00001,00000,11110,00000,00001,00001,11110の50ビットである。バイト原点及びバイトインデックスブロックデータを含む総圧縮出力データは66ビットであり、これは元々の80ビットのバイトデータブロックの82.5である。展開時には、圧縮ヘッダから、Vのバイト1がデルタブロック圧縮フォーマットであり、バイト原点の数が2であり、デルタブロックのビット数がバイト毎に4ビットであることが分かる。この圧縮ヘッダデータからは、各々8ビットのバイト原点も読み取られる。3D処理でアクセスされる頂点Vの値からの各バイト1に関し、最初に1ビットのバイト原点インデックスが読み取られ、その後、圧縮デルタブロックからの4ビットのデルタ値が読み取られる。このデルタ値が、バイト原点インデックスによって示されるバイト原点に加算されて元のバイトデータが再構築される。別の例として、20個の頂点からのバイトデータブロックを、0x03、0x5B、0x03、0x54、0xF2、0x54、0x03、0x0A、0x5B、0x5B、0x03、0xF2、0xEC、0x0A、0xF2、0x0A、0x0A、0x33、0x0A、0x03とする。0x03、0x5B、0x54、0xF2、0x0A、0xEC、及び0x33という7つの共通バイト値が存在する。これらの7つの共通バイトにおける最大バイト0xF2と最小バイト0x03の間の距離は0xEFであり、これは8ビットの整数としてしか表すことができない。この場合、1つのバイト原点を有するデルタブロックアルゴリズムを使用してバイトブロックを圧縮することはできない。7つの共通バイトにおける最大バイト0xF2とバイト0x54の間の距離は0x9Eであり、これは8ビットの整数としてしか表すことができない。7つの共通バイトにおけるバイト0x5Bと最小バイト0x03の間の距離は0x58であり、これは7ビットの整数としてしか表すことができない。バイト原点のインデックスのための1つの追加ビットが必要であることを考慮すると、2つのバイト原点を含むデルタブロックアルゴリズムによってこのバイトブロックを圧縮することはできない。7つの共通バイト値をさらに分析すると、0x03と0x0Aの間の距離は0x7であり、これは3ビットのデルタ値を使用して表すことができる。0x5Bと0x54の間の距離も0x7であり、0xF2と0xECの間の距離は0x6である。従って、4つの別個の範囲内の3ビットのデルタ値を使用して全体のバイトデータブロックを表すことができる。上記の例からの4つの範囲のバイト原点は、0x03、0x54、0xEC及び0x33である。デルタ値がいずれの原点に基づくものであるかを示すために、各圧縮バイトに2つの追加ビットが必要である。バイトデータブロックの圧縮データは、以下のようになる。4つのバイト原点は、0354EC33の32ビットである。3ビットをデルタ値とし、2ビットをバイト原点インデックスとする頂点毎に5ビットの圧縮デルタブロックは、20個の頂点で100ビットとなる。プリミティブブロック内の20個の頂点の圧縮バイトデータは、00000,11101,00000,00001,11010,00001,00000,11100,11101,11101,00000,11010,00010,11100,11010,11100,11100,00011,11100,00000の100ビットである。バイト原点及びバイトインデックスブロックを含む総圧縮出力データは132ビットであり、これは元々の160ビットのバイトブロックの82.5である。展開時には、圧縮ヘッダから、バイトデータブロックがデルタブロック圧縮フォーマットであり、バイト原点の数が4であり、デルタブロックのビット数がバイト毎に3ビットであることが分かる。この圧縮ヘッダデータからは、各々8ビットのバイト原点も読み取られる。3D処理でアクセスされる20個の頂点値からの各バイトに関し、最初に2ビットのバイト原点インデックスが読み取られ、その後、圧縮デルタブロックからの3ビットのデルタ値が読み取られる。このデルタ値が、バイト原点インデックスによって示されるバイト原点に加算されて元のバイトデータが再構築される。デルタブロックアルゴリズムの圧縮比は、バイトデータブロックのデルタ値を表すのに必要なビット数に依存する。複数のバイト原点を使用して、最大バイト値と最小バイト値の距離を8ビット未満で表すことができない場合、デルタブロックアルゴリズムによってバイトブロックを圧縮することはできない。バイト値の範囲デルタブロックアルゴリズムを使用してバイトデータブロックを圧縮するには、プリミティブブロック内のバイト値の範囲を知る必要がある。バイト値の範囲を8ビット未満のデルタ値で表すことができる場合、デルタブロックアルゴリズムを使用することができる。バイト値の範囲を求めるための理想的な方法は、全てのバイト値を昇順又は降順に並べ換えることである。最大バイト値と最小バイト値の間のデルタ値が8ビット未満の場合には、1つの原点を含むデルタブロック圧縮を使用する。それ以外の場合には、全範囲を、最大値と最小値の間の距離が等しい複数の部分範囲に分割する。デルタ値及びバイト原点インデックスを含めてバイトデータ範囲を8ビット未満で表すことができる場合、複数のバイト原点を含むデルタブロック圧縮を使用してバイトデータブロックを圧縮することができる。バイトデータブロックからのバイト値を並べ換えるには、全バイトブロックのバイトデータ値のための記憶空間が必要である。これにより、コンピュータハードウェア内に実装する場合に余分なコストが加わるようになる。本発明の第6の態様の実施形態では、バイトデータを並べ換えることなく、また余分な記憶領域を使用することなくバイトデータブロックから複数のバイト値範囲を導出する方法を以下のように説明する。プリミティブブロック内の入力された頂点パラメータデータからバイトデータが到来すると、最小及び最大バイト値、並びにこの範囲のデルタ値に必要なビット数を使用して、バイト値の範囲が記憶される。入力された頂点パラメータデータブロックからの新たなバイトが既存の範囲に対してチェックされ、このバイトが範囲内にあるか否かが判定される。バイトが既存の範囲外にある場合、この範囲の最小値又は最大値のいずれかを置き換えることによって範囲が更新され、この範囲のデルタ値に必要なビット数も更新される。この新たなバイト値により、バイト範囲内のデルタ値のビット数が所定の最大ビット数よりも大きくなった場合、新たな範囲を追加して最初の範囲のデルタ値を最大ビット数内に保つ。後続のバイトも、上述した方法と同じ方法を使用して2つの範囲に対してチェックされる。この処理は、例えば4つのバイト原点では4つのバイト範囲のように、範囲数がバイト原点数の限界に達するまで継続される。バイトデータブロックを、バイト範囲内のデルタ値の所定の最大ビット数で表すことができる場合、デルタブロックアルゴリズムを使用してバイトデータブロックを圧縮することができる。バイト値の範囲のマージ評価処理の終了時に、所定の最大デルタビット数の範囲内に2又はそれ以上のバイトデータブロックの範囲が存在する場合、これらの範囲を互いにマージできる可能性が依然として存在する。例えば、6ビットのデルタ値を有する範囲が2つ存在する場合、これらの範囲を、7ビットのデルタを有する1つの範囲にマージすることができる。この例では、2つのバイト原点の場合に6ビットのデルタ1バイトの原点インデックスが必要となる代わりに、1つの原点の場合に7ビットが必要となる。圧縮デルタブロックサイズは同じであるが、後者の場合の第2のバイト原点のための8ビットが節約され、従って終了時に可能な場合には、範囲を互いにマージすることが好ましい。このバイトデルタブロックアルゴリズムは、3Dコンピュータグラフィックス、特にタイルベースの3Dコンピュータグラフィックスシステムにおける頂点パラメータデータの圧縮のための単純で高速かつ効率的な圧縮アルゴリズムである。説明しているバイト範囲評価方法を使用することにより、入力された頂点パラメータデータが到来した時に、バイトデータブロックの範囲を容易に求めることができる。この方法は、3Dコンピュータグラフィックスハードウェアパイプライン内に実装することができ、バイトデータブロックを並べ換えるために大きなデータ記憶領域を必要としない。頂点パラメータデータ及びその他の種類のバイトデータブロックに対して圧縮及び展開演算を効率的に実行することができる。本発明のバイトデルタブロックアルゴリズムを使用して圧縮される頂点データのサイズは、バイト毎に固定のビット数であり、デルタ値のための固定ビット数及びバイト原点インデックスのための固定ビット数を含む。バイトデルタブロックアルゴリズムのその他の利点は、3D処理において圧縮データブロックから圧縮頂点パラメータデータにランダムにアクセスできる点である。圧縮頂点パラメータデータはサイズが固定されているので、圧縮頂点パラメータデータの位置を容易に計算することができる。従って、全プリミティブブロックの頂点パラメータデータをいちいち展開する必要はなく、タイルをレンダリングするのに必要な頂点パラメータデータのみを圧縮データブロックから読み取って展開する。共通バイトテーブル頂点パラメータデータブロックの一部からのバイト値の性質は多様であるため、固有バイト又はバイトデルタブロックアルゴリズムを使用してデータブロックを全て圧縮できるわけではない。一例として、プリミティブブロック内の10個の頂点からのバイト値を、0x03,0x5B,0xF2,0x5B,0x03,0x03,0xEC,0xF2,0x33,0x03とする。共通バイト内の最大バイト0xF2とバイト0x5Bの間の距離は0x97であり、これは8ビットの整数としてしか表すことができない。共通バイト内の0x5Bと最小バイト0x03の間の距離は0x58であり、これは7ビットの整数としてしか表すことができない。バイト原点のインデックスのために1つの追加ビットが必要である。このバイトブロックは、4つのバイト原点0x03、0x5B、0xEC及び0x33を含むデルタブロックアルゴリズムによってしか圧縮することができない。0xF2と0xECの間の距離0x6を表すために3ビットのデルタ値が必要であり、バイト原点のインデックスのために2つの追加ビットが必要である。圧縮データサイズは、4×8ビットのバイト原点に圧縮データの10×32ビットを加えたものであり、合計で82ビットである。従って、バイトデルタブロックアルゴリズムを使用してこのバイトデータブロックを圧縮することはできない。共通バイト数が限られている場合、共通バイトテーブルを使用して共通バイト値を記憶することができる。本発明の第7の態様の実施形態では、バイトデータブロックからの共通バイト値を共通バイトテーブル内に保持することができる。バイトデータブロックを圧縮するために、バイトデータブロック内の各バイトに関し、圧縮バイトデータブロック内にバイト値自体の代わりに共通バイトテーブルへのインデックスを出力する。テーブルインデックスに必要なビット数は、共通バイトテーブル内のエントリ数に依存する。共通バイトテーブル内のエントリ数が圧縮ヘッダに記憶されている場合、プリミティブブロックの展開時に、共通バイトテーブルのデータサイズ及びテーブルインデックスのために必要なビット数を容易に求めることができる。上記の例として、バイトデータブロックを、0x03,0x5B,0xF2,0x5B,0x03,0x03,0xEC,0xF2,0x33,0x03とする。このバイトブロックは、5つの共通バイト値0x03,0x5B,0xF2,0xEC及び0x33を有する。これらの5つの共通バイト値を、バイトデータブロックの共通バイトテーブルに記憶することができ、各頂点における圧縮バイトデータに関して、この共通バイトテーブルに3ビットのインデックスが出力される。バイトテーブルは、U035BF2EC33の40ビットである。プリミティブブロック内の10個の頂点の圧縮バイトデータは、000001010001000000011010100000の30ビットである。合計圧縮出力データは共通バイトテーブルを含み、バイトインデックスブロックは70ビットであり、これは元々の80ビットのバイトブロックの87.5である。展開時には、圧縮ヘッダから、バイトデータブロックが共通バイトテーブルフォーマットであること、共通バイトテーブル内のエントリ数が5であることが分かる。最初に圧縮ヘッダから共通バイトテーブルのバイト値が読み取られて共通バイトテーブルが形成される。3D処理でアクセスされる各頂点データについて、圧縮データブロックから3ビットのテーブルインデックスが読み取られる。次に、このテーブルインデックスを使用して、プリミティブブロック内の元のバイトデータのバイト値を共通バイトテーブル内で参照する。共通バイトテーブルの圧縮比は、バイトデータブロックからの共通バイト値の数に依存する。この共通バイト値の数により、共通バイトテーブルサイズ及びテーブルインデックスのビット数が決まる。好ましい実施形態では、共通バイトテーブルの最大エントリを、例えば16又は32のように事前に定めることができ、従ってテーブルインデックスの最大ビット数はそれぞれ4又は5となる。総圧縮データサイズは、共通バイトテーブルサイズに、頂点パラメータデータバイトブロック内の各バイトのテーブルインデックスを足したものになる。バイトデータブロックからの共通バイト値の数が多い場合、共通バイトテーブルのデータサイズ及び頂点のテーブルインデックスが、バイトデータブロックの元のデータサイズを上回ることがある。この場合、共通バイトテーブルアルゴリズムによってバイトデータブロックを圧縮することはできない。共通バイトデルタテーブル共通バイトテーブルアルゴリズムの圧縮データサイズは、共通バイトテーブルのサイズに依存する。共通バイトテーブル内のエントリ数は、バイトデータブロックからの共通バイト値の数によって決まり、このエントリ数は変更することができない。共通バイトテーブルサイズを縮小するための唯一の方法は、共通バイトテーブルに代わる表現法を使用することである。一例として、10個の頂点を有するプリミティブブロック内のバイトデータブロックからのバイト値を、0x35,0x5B,0x99,0x35,0x04,0xD2,0xD2,0x5B,0x35,0x37とする。6つの共通バイト値0x35、0x5B、0x99、0x04、0xD2及び0x37が存在する。これらの共通バイトを、[0x04,0x37]、[0x5B,0x5B]、及び[0x99,0xD2]という3つの範囲内に配置して、これらの範囲内に6ビットのデルタ値が入るようにすることができる。これらの3つのバイト原点には、頂点毎に2ビットが必要であり、これによりこのバイトデータブロックは、バイトデルタブロックアルゴリズムに適さないものとなる。共通バイトテーブルアルゴリズムを使用するには、共通バイトテーブルのデータサイズが、48ビットに、各頂点におけるテーブルインデックスの3ビットを足したものになる。合計データサイズは78ビットとなり、これは元のデータサイズの80ビットとほぼ同じである97.5。緻密な調査により、共通バイト値はほとんど異なるが、バイト値は、[0x04,0xD2]の全体的範囲内にほぼ均等に分布することが分かる。共通バイトテーブル内のバイト数は数が非常に限られているので、共通バイトテーブル内のバイト値を容易に昇順に並べ換えることができる。並べ換え後、上記の例における共通バイト値は、0x04,0x35,0x37,0x5B,0x99,0xD2となる。共通バイトデルタテーブルを0x04,0x31,0x02,0x24,0x3E,0x39とし、最初のエントリ0x04を8ビットのRAWバイト値とし、残りをバイトデルタテーブルへのデルタ値及び10個の頂点のための30ビットのテーブルインデックスとして形成することができ、これは元の80ビットのバイトデータブロックのデータの85である。本発明の第8の態様の実施形態では、共通バイト値を昇順に並べ換えて、最初の8ビットのRAWバイト値及びビット数が固定されたデルタ値を含む共通バイトデルタテーブルを形成することができる。好ましい実施形態では、最初にバイトデータブロックからの共通バイト値を並べ換え、次に表3の値までの距離値を参照することにより、デルタ値に必要なビット数を導出する。共通バイトテーブル内のエントリ毎のサイズが8ビット未満である場合、この共通バイトテーブルは、共通バイトデルタテーブルに置き換えられる。圧縮時には、共通バイトデルタテーブル内のエントリ数が、デルタ値に使用されるビット数とともに圧縮ヘッダに記憶される。共通バイトデルタテーブル内のエントリは、後にビット数が固定されたデルタ値を伴う先頭の8ビットのバイト値として記憶される。展開時には、圧縮ヘッダから、バイトデータブロックが共通バイトデルタテーブルフォーマットであることが分かる。圧縮ヘッダからは、共通バイトデルタテーブル内のエントリ数及びデルタ値のビット数が最初に読み取られる。共通バイトデルタテーブル内のデルタ値が読み戻されて、元の8ビットのバイト値エントリを有する共通バイトテーブルが再構築される。共通バイトテーブル内のエントリ数から、各頂点における共通バイトデルタテーブルインデックスに使用されるビット数が分かる。圧縮バイトデータブロックから、頂点の頂点パラメータバイトデータのためのテーブルインデックスを読み取って、再構築された共通バイトテーブルから元のバイト値を参照することができる。上記の例のバイトデータブロックでは、バイトデルタテーブル内のエントリ数が6であり、共通バイトデルタテーブル内のデルタ値のビット数も6である。この場合3ビットであるテーブルエントリ数から、テーブルインデックスに使用されるビット数を容易に求めることができる。展開時に共通バイトテーブルを再構築するために、まず共通バイトデルタテーブルからの最初のバイト値が0x04として読み取られる。次にビットデルタ値が0x31としてフェッチされ、これがバイト値0x04に加算され、従って元のバイト0x35が再構築される。別のデルタ値0x02が前のバイト0x35に加算され、元のバイト0x37が形成される。その後、共通バイトデルタテーブルからの全てのデルタ値を使用して、デルタ値を前のバイトに加算することにより元のバイト値が再構築される。終了時には、共通バイトテーブル全体が、0x04,0x35,0x37,0x5B,0x99,0xD2として再構築される。3D処理においてアクセスされる各頂点に関し、圧縮データブロックから、頂点パラメータバイトデータブロックのための3ビットのテーブルインデックス値が読み取られる。次にテーブルインデックスを使用して共通バイトテーブル内の元のバイト値が参照され、プリミティブブロック内の頂点パラメータバイトデータが再構築される。制御コードを含む共通バイトデルタテーブル本発明の第9の態様の実施形態では、共通バイトデルタテーブル内に1ビットの制御コードを導入して、共通バイトデルタテーブル内にデルタ値とRAWバイト値が混在できるようにすることができる。共通バイトデルタテーブル内の各エントリに関し、このエントリがデルタ値であるか、それともRAWバイト値であるかを、例えばRAWバイトの場合には0、デルタ値の場合には1を示す1ビットの制御コードが存在する。共通バイトデルタテーブル内の最初のエントリは常にRAWバイト値であるため、最初のエントリには制御コードビットは不要である。共通デルタバイトテーブル内にデルタ値とRAWバイト値が混在することは、テーブルからの2つの共通バイト値間の距離が大きすぎて8ビット未満のデルタ値で表せない場合に共通バイトテーブルサイズを縮小するために有用な特徴である。一例として、32個の頂点を有するプリミティブブロックからの頂点パラメータバイトデータブロックを、0x03,0x6B,0x03,0x47,0x07,0xF2,0xF1,0xF2,0x47,0x03,0x0A,0x03,0x0A,0x6B,0x6B,0x47,0x03,0x0A,0xF2,0xF2,0xEC,0xEC,0xED,0x0A,0xF2,0x0A,0x03,0x0A,0x33,0x0A,0x03,0x03とする。0x03、0x6B、0x47、0x07、0xF2、0xF1、0x0A、0xEC、0xED、及び0x33という10個の共通バイト値が存在する。これらの共通バイトを、[0x03,0x33]、[0x47,0x6B]、及び[0xEC,0xF2]という3つの範囲内に配置して、6ビットのデルタ値を範囲として有するようにすることができる。これらの3つのバイト原点には、頂点毎に2ビットが必要であり、これによりこのバイトデータブロックは、バイトデルタブロック圧縮に適さないものとなる。共通バイトテーブルアルゴリズムを使用するには、バイトテーブルのデータサイズが、80ビットに、各頂点におけるテーブルインデックスの4ビットを足したものになる。合計データサイズは804×32=208ビットとなり、これは元のデータサイズの256ビットの81.25である。並べ換え後、共通バイト値は、0x03,0x07,0x0A,0x33,0x47,0x6B,0xEC,0xED,0xF1,0xF2となる。共通バイト値のデルタブロックは、0x03,0x04,0x03,0x29,0x14,0x24,0x81,0x01,0x04,0x01である。これから明らかなように、バイト値0x6Bと0xECの間の距離は0x81であり、大きすぎて8ビット未満のデルタ値では表せない。従って、共通バイトデルタテーブルアルゴリズムを使用してこのバイトデータブロックを圧縮することはできない。共通バイトテーブル内の共通バイト値に、制御コードを使用してデルタ値をRAWバイト値と混合するアルゴリズムを適用することにより、大きなデルタ0x33,0x47,0x6B及び0xECを有するバイト値を、最初のバイト0x03と同様にRAWバイトで表すことができる。残りのバイトは、3ビットのデルタ値を使用して表すことができる。RAWバイトのための制御ビットを含む共通バイトデルタテーブルは、03,14,13,033,047,06B,0EC,11,14,11となる。混合された共通バイトデルタテーブルの出力は、0x03、0x33、0x47、0x6B及びOxECという5つのRAWバイトからなる。各々が3ビットの4、3、1、4及び1という5つのデルタ値に加え、テーブル内の最初のエントリを除く全てのエントリのための9ビットの制御ビットも存在する。制御コードを含む共通バイトデルタテーブルでは、総圧縮データサイズが5×85×39=64ビットになる。32個の頂点のテーブルインデックスのための128ビットを加算すると、総圧縮バイトデータサイズは192ビットとなり、これは元の256ビットのバイトデータサイズの75である。共通バイトテーブルアルゴリズムと比較すると、制御コードを使用して、上記の例からのバイトデータブロックの共通バイトデルタテーブル内でRAWバイト値をデルタ値と混合することにより、圧縮比が6.25上昇している。好ましい実施形態では、バイトデータブロックの共通バイトデルタテーブル内のエントリ数が、圧縮時にデルタ値に使用されるビット数とともに圧縮ヘッダに記憶される。上記の例におけるバイトデータブロックでは、共通バイトデルタテーブル内のエントリ数が10であり、デルタ値のビット数が3ビットである。圧縮ヘッダ内には、共通バイトデルタテーブルがRAWバイト値と混在していることを示す1ビットのフラグも存在する。展開時には、圧縮ヘッダから、バイトデータブロックが共通バイトデルタテーブルフォーマットであり、共通バイトデルタテーブル内のエントリ数が10であり、デルタのビット数が3であることが分かる。この圧縮ヘッダからは、共通バイトデルタテーブルが、デルタ値がRAWバイト値と混合されており、最初のエントリを除く各テーブルエントリのための制御ビットが含まれていることも分かる。テーブルインデックスに使用されるビット数は、テーブルエントリ数から、頂点毎に4ビットのテーブルインデックスであると容易に求めることができる。共通バイトテーブルを再構築するために、バイトデルタテーブルの最初のバイト値が、上記の例では0x03として読み取られる。次に、1ビットの制御コードが読み取られて、次の値が8ビットのRAWバイトであるか、それとも3ビットのデルタ値であるかが判定される。好ましい実施形態では、制御コード0がRAWバイトを意味し、制御コード1がデルタ値を意味する。デルタ値の場合には、これが前のバイト値に加算されて、元のバイトが共通バイトテーブルのエントリとして形成される。上記の例では、3D処理でアクセスされるプリミティブブロックからの各頂点データに関し、頂点パラメータバイトデータブロックのための3ビットのテーブルインデックスが圧縮バイトデータブロックから読み取られ、これを使用して、再構築された共通バイトテーブルからプリミティブブロック内の元のバイト値が参照される。上述したように、共通バイトテーブルインデックスのビット数は、共通バイトテーブル内のエントリ数に関連する固定数である。プリミティブブロック内の頂点の圧縮頂点パラメータバイトデータには、圧縮バイトデータブロック内の頂点の圧縮バイトデータの位置を計算することによってアクセスすることができる。共通バイトテーブルアルゴリズムは、特にデータ分布が異なりすぎて、固有バイト及びバイトデルタブロックアルゴリズムを使用して圧縮できない場合に、頂点パラメータバイトデータブロックを圧縮するための効率的な圧縮アルゴリズムである。提示した共通バイトテーブルアルゴリズムは、共通バイトデルタテーブル及びデルタ値をRAWバイトと混合するための制御コードの方法によって拡張され、既存のデータ圧縮アルゴリズムよりも優れた小型の最適化された共通バイトテーブルという利点を有する。共通バイトテーブルアルゴリズムの性能が強化される。特定の実施形態では、圧縮処理が2パスで行われる。第1のパスでは、プリミティブブロックからの入力された頂点パラメータバイトデータブロックを読み取って、入力バイトデータブロック内の共通バイト数及びバイト値範囲などの、バイトデータブロックの統計データを収集する。バイトデータブロックからの最初のバイトは、共通バイトテーブル内の最初のエントリとして記憶される。バイトデータブロックの2番目のバイト以降については、各バイトデータが圧縮ユニットに入ると、これらを共通バイトテーブル内のバイト値と比較する。共通バイトテーブルからのバイトデータが一致しなかった場合、このバイト値を共通バイトテーブルに新たなエントリとして追加する。同時に、バイト値の範囲が、最小及び最大バイト値、並びにこの範囲内のデルタ値に必要なビット数を使用して記憶される。2番目のバイト以降、入力された頂点パラメータデータブロックからの全てのバイトを既存の範囲に対してチェックし、そのバイトが範囲内にあるか否かを判定する。バイトが既存の範囲外にある場合、上述したように、範囲の最小値又は最大値のいずれかを置き換えて、範囲内のデルタ値に必要なビット数も更新することにより、この範囲を更新する。第1のパスの終了時に入力バイトデータブロックから全てのバイトデータが読み取られると、共通バイト数及び共通バイトテーブル内のエントリが分かる。第1のパス後には、バイト値の範囲、及びこのバイト値の範囲内のデルタ値を表すのに必要なビット数も分かる。第2のパスにおけるバイトデータブロック圧縮のための全ての統計情報が形成される。特定の実施形態において、3Dコンピュータグラフィックスシステムにおける頂点パラメータバイトデータブロックの圧縮ユニットを図6に示す。3Dコンピュータグラフィックスシステムの圧縮ユニットに、プリミティブブロック内の頂点パラメータデータからのバイトデータブロック601が入力される。この入力された頂点パラメータデータブロックは、統計データを収集する第1のパス後に記憶することができ、又はハードウェア実装では、これを再び読み取って追加の記憶領域を避けることができる。図6の602のように、入力バイトデータブロックの共通バイト数をチェックする。バイトデータブロック内に固有バイト値が1つしか存在しない場合、固有バイトアルゴリズム603を使用してバイトデータブロックを圧縮する。バイトデータブロック内に複数の共通バイト値が存在する場合、第1のパスで生成されたバイト値範囲が、これらの範囲内にビット数が制限されたデルタ値を使用してバイト値を表している可能性をチェックする604。デルタ値のビット数及びバイト原点インデックスのビット数が8ビット未満の場合、バイトデルタブロックアルゴリズムを使用してこのバイトデータブロックを圧縮することができる。バイトデルタブロックデータへの圧縮前に、最適化された表現を得るために、バイトデータブロックの範囲を範囲のマージの可能性について調べる605。範囲をマージした後に、1つのバイト原点607、又は通常は最大4つのバイト原点608、609及び610である複数のバイト原点を使用してバイトデータブロックを圧縮する。固有バイトアルゴリズム又はバイトデルタブロックアルゴリズムのいずれを使用してもバイトデータブロックを圧縮できない場合、第1のパスで生成された共通バイトテーブル内の所定の最大エントリ数の値に対して共通バイト数をチェックする。好ましい実施形態では、共通バイト数が32以下の場合、図6の611において、このバイトデータブロックに共通バイトテーブル圧縮アルゴリズムを適用する。バイトデータブロックのテーブルインデックスに必要なビット数は、共通バイトテーブル内のエントリ数に依存し、この数は、バイトデータブロックに関して一定の数である。圧縮比は、テーブルインデックスに必要なビット数及び共通バイトテーブルのサイズに依存する。共通バイトテーブルのサイズは、エントリ数に8ビットを乗算したものである。共通バイトデルタテーブルのサイズは、図6のデルタテーブル内のデルタ値のビット数612を使用して、第1のパスで生成された共通バイトテーブル内の共通バイト値から計算される。共通バイトデルタテーブルサイズを最小化する必要がある場合、1ビットの制御コードを使用する。デルタテーブルサイズがRAWバイトテーブルのサイズよりも小さい場合には、圧縮に共通バイトデルタテーブルアルゴリズム614を使用する。その他の場合には、共通バイトテーブルアルゴリズム615を使用してバイトデータブロックを圧縮する。共通バイトデルタテーブルサイズ及びプリミティブブロック内の全ての頂点のテーブルインデックスを含む総圧縮データサイズが、元のバイトデータブロックのサイズよりも小さい場合には、共通バイトデルタテーブルアルゴリズムを使用してバイトデータブロックを圧縮する616。その他の場合には、バイトデータブロックを圧縮せずにRAWバイトデータブロックとして出力する618。同様に、共通バイトテーブルサイズ及びプリミティブブロック内の全ての頂点のテーブルインデックスを含む合計圧縮データサイズが、元のバイトデータブロックのサイズよりも小さい場合には、共通バイトテーブルアルゴリズムを使用してバイトデータブロックを圧縮する617。その他の場合には、バイトデータブロックを圧縮せずにRAWバイトデータブロックとして出力する618。特定の実施形態では、共通バイト値の数が、32などの所定の閾値よりも大きい場合611、バイトデータブロックをRAWバイトデータブロックとして出力する618。圧縮頂点パラメータのデータ構造上述したように、圧縮頂点パラメータデータは、圧縮ヘッダデータ及び圧縮頂点データという2つの部分からなる。各頂点パラメータバイトデータブロックのための圧縮ヘッダデータは、圧縮フォーマット、固有バイト値、バイト原点値、及び共通バイトテーブル又は共通バイトデルタテーブルのデータを含む。圧縮頂点データは、バイトデータブロックの圧縮フォーマットに依存して、各頂点に関して一定のサイズである。表4に、本発明における圧縮アルゴリズムの圧縮頂点パラメータデータ構造を示す。表4:圧縮フォーマット及び圧縮データサイズ圧縮後、圧縮ヘッダデータには、圧縮ユニットによってバイトデータブロックの圧縮フォーマット及び表4に示す他の圧縮ヘッダデータが書き込まれる。表4に示す各圧縮フォーマットの圧縮頂点パラメータデータは、別個の圧縮頂点データブロック内に出力される。プリミティブブロック内の三角形の3D処理において頂点パラメータが必要な場合、最初に頂点パラメータデータの各バイトの圧縮ヘッダデータから圧縮フォーマットを読み取る。表4に示す圧縮フォーマットに従って、追加のヘッダデータを読み取ることもできる。バイトデータブロックがRAWバイトフォーマットである場合、圧縮ヘッダからの追加データは存在せず、圧縮頂点データブロック内に各頂点の8ビットのバイトデータが出力される。展開時には、頂点パラメータデータのバイトが必要な場合、この8ビットのバイトデータが読み取られる。バイトデータブロックが固有バイトフォーマットである場合、圧縮ヘッダ内に8ビットの固有バイト値が出力され、全てのバイト値が圧縮ヘッダ内の固有バイト値と同じであるため、圧縮頂点データブロック内には出力は存在しない。展開時には、プリミティブブロック内の全ての頂点について、8ビットの固有バイトデータが頂点パラメータバイトデータとして使用される。バイトデータブロックがデルタブロックフォーマットである場合、圧縮ヘッダ内に、バイト原点数、バイト原点値及びデルタ値のビット数に関する追加データが存在する。圧縮頂点データブロック内に、頂点パラメータデータの各バイトのデルタ値が出力される。複数のバイト原点の場合、圧縮頂点データブロック内にバイト原点インデックスも出力される。デルタ値及びバイト原点インデックス値は、圧縮ヘッダ内に示されるように、プリミティブブロック内の全ての頂点に関して一定のビット数である。展開時には、圧縮ヘッダから、バイト原点数、デルタビット数及びバイト原点値が読み取られる。3Dレンダリングでアクセスされる各頂点パラメータバイトデータに関しては、圧縮頂点パラメータバイトデータブロックから固定サイズのデルタ値が読み取られる。複数のバイト原点の場合には、圧縮頂点パラメータバイトデータブロックから頂点のバイト原点インデックス値も読み取られる。このバイト原点インデックスによって示されるバイト原点値にデルタ値が追加されて、元のバイトデータが再構築される。バイトデータブロックが共通バイトテーブルフォーマットである場合、圧縮ヘッダ内に、共通バイトテーブル内のエントリ数及びバイト値に関する追加データが存在する。表4に示すように、圧縮頂点データブロック内に、頂点パラメータデータの各バイトのためのテーブルインデックス値が出力される。このテーブルインデックス値は、圧縮ヘッダ内に示されるように、共通バイトテーブル内のエントリ数に依存してプリミティブブロック内の全ての頂点に関して一定のビット数である。展開時には、圧縮ヘッダから、共通バイトテーブルのエントリ数及びバイト値が読み取られる。3Dレンダリングでアクセスされる各頂点パラメータバイトデータに関しては、圧縮頂点パラメータバイトデータブロックから固定サイズのテーブルインデックス値が読み取られ、共通バイトテーブルから元のバイト値が参照される。バイトデータブロックが共通バイトデルタテーブルフォーマットである場合、圧縮ヘッダ内に、共通バイトデルタテーブル内のエントリ数、デルタ値のビット数、共通バイトデルタテーブル内でデルタ値をRAWバイト値と混合するための制御コードが存在するかどうかを示す1ビットのフラグに関する追加データが存在する。圧縮ヘッダ内には、共通バイトデルタテーブルの合計サイズも出力され、従って展開時には、表4に示すように、圧縮ヘッダから共通バイトデルタテーブルのデータを正しく読み取ることができる。共通バイトテーブルフォーマットの場合と同様に、圧縮頂点データブロック内には、頂点パラメータデータの各バイトのテーブルインデックス値が出力される。このテーブルインデックス値は、圧縮ヘッダ内に示されるように、共通バイトデルタテーブル内のエントリ数に依存してプリミティブブロック内の全ての頂点に関して一定のビット数である。展開時には、圧縮ヘッダから、共通バイトデルタテーブルのエントリ数、デルタ値のビット数及び制御コード存在フラグが読み取られる。次に、圧縮ヘッダから固定ビット数のデルタ値が読み取られて、共通バイトテーブル内の前のバイトに加算される。制御コードを使用している場合には、これを最初に読み取って、後続のエントリがデルタ値であるか、それとも8ビットのRAWバイト値であるかを判定する。共通バイトテーブルは、共通バイトデルタテーブルを復号することにより形成することができる。共通バイトテーブルフォーマットと同様に、3Dレンダリングでアクセスされる各頂点パラメータバイトデータに関しては、圧縮頂点パラメータバイトデータブロックから固定サイズのテーブルインデックス値が読み取られて、共通バイトデルタテーブルから再構築された共通バイトテーブルから元のバイト値が参照される。頂点パラメータデータブロックの圧縮及び展開特定の実施形態において、3Dコンピュータグラフィックスシステムにおける32ビット浮動小数点頂点パラメータデータブロックのための圧縮ユニットを図7に示す。プリミティブブロックからの頂点パラメータデータブロック701が3Dコンピュータグラフィックスシステムに到来すると、図7の702において、32ビット浮動小数点フォーマット値の符号ビットを最上位ビットから最下位ビットに移動させる。次に、この浮動小数点頂点パラメータデータブロックを4つのバイトデータブロックに分離して、圧縮ユニット703、704、705及び706内で別個に圧縮する。図7の707のように、4つのバイトデータブロックからの全ての頂点についての圧縮データを互いにマージして、プリミティブブロック内に圧縮頂点パラメータデータを形成する。特定の実施形態において、3Dコンピュータグラフィックスシステムにおける圧縮頂点パラメータデータブロックのための展開ユニットを図8に示す。プリミティブブロックからの圧縮頂点パラメータデータブロック801が3Dコンピュータグラフィックスシステムに到来すると、表4に示す圧縮ヘッダ内の各バイトの圧縮フォーマットに従って、頂点の圧縮頂点パラメータデータを、4バイトの頂点パラメータデータのための4つのデータに分割する。各バイトの4つのデータを、展開ユニット802、803、804及び805内で別個に展開する。この4つのバイトからの全ての頂点についての展開データを互いにマージした後、図8の806において、32ビット浮動小数点フォーマット値の符号ビットを最下位ビットから最上位ビットに移動させる。最後に、図8の807のように、プリミティブブロック内の全ての頂点についての32ビットの頂点パラメータデータを再構築する。図6、図7及び図8に示すように、本発明の好ましい実施形態における圧縮及び展開処理は、コンピュータハードウェア内に実装して、3Dコンピュータグラフィックスシステムパイプライン、特にタイルベースのレンダリングに組み込むことができる。圧縮ユニット内でアルゴリズムを組み合わせることにより、3Dコンピュータグラフィックスシステムからの頂点パラメータデータブロックの圧縮性能が高くなる。3Dゲームからの頂点パラメータデータブロックに対する実験では、90を超える時間にわたって上記のアルゴリズムの1つを使用して頂点パラメータバイトデータブロックを圧縮できることが示された。提示したアルゴリズムを使用して、3Dコンピュータグラフィックスシステムにおける頂点パラメータデータブロックのデータを全体として40削減できると予想される。提示した方法による頂点パラメータデータの圧縮の実現に加え、その他の利点も存在する。元の頂点パラメータデータからの情報損失はなく、この提示したアルゴリズムは全く無損失の圧縮法である。これらの圧縮アルゴリズムは、高品質レンダリング画像を必要とする3Dコンピュータグラフィックスシステムにおける頂点パラメータデータの圧縮に適している。これらの圧縮アルゴリズムでは、バイトデルタブロックアルゴリズムにおけるバイト原点、及び共通バイトテーブルアルゴリズムにおけるバイトテーブル又はバイトデルタテーブルのために、限られた構成可能記憶メモリ空間しか必要としない。提示したアルゴリズムは、3Dコンピュータグラフィックスハードウェア内への実装にとってコスト効率が高い。これらのアルゴリズムでは複雑な計算が必要なく、アルゴリズムからの圧縮及び展開の演算が単純かつ高速である。これらのアルゴリズムは、高速3Dコンピュータグラフィックスレンダリングの生成において使用することができる。これらの圧縮アルゴリズムを使用すると、圧縮データのサイズが、プリミティブブロック内の全ての頂点に関して一定のビット数になるため、プリミティブブロック内のあらゆる頂点からの圧縮頂点データにランダムアクセスすることができる。この特徴は、タイルベースの3Dコンピュータグラフィックスハードウェアシステムにおける頂点パラメータデータの圧縮にとって特に有益である。この場合、タイルベースの3Dコンピュータグラフィックスシステムにおいて、プリミティブブロックからのプリミティブが多くのタイルをカバーすることができる。タイル内のレンダリングに全ての頂点が必要でない場合もあり、従ってレンダリング処理中に頂点パラメータデータブロックにランダムアクセスが可能であることが非常に望ましい。エントロピー符号化などの圧縮アルゴリズムの従来技術で説明したように、いずれかの頂点パラメータデータにアクセスできるようになるには、データブロック全体を展開する必要がある。このことは、タイルベースの3Dコンピュータグラフィックスシステムの性能、特に多くのタイルをカバーするプリミティブブロックに大きな影響を与え、全体的なプリミティブブロックの頂点パラメータデータを何度も展開する必要がある。本発明の圧縮アルゴリズムは、圧縮データブロック内の頂点パラメータデータに対するランダムアクセスを可能にし、従って3Dレンダリング処理において、レンダリングのタイル内で使用される頂点の展開データのみがフェッチされ展開される。本発明の圧縮アルゴリズムは、性能の高さに関して従来の圧縮アルゴリズムに優る利点を有し、タイルベースの3Dコンピュータグラフィックスシステムがこれを使用して、圧縮データブロックから頂点パラメータデータを選択的にフェッチすることができる。"