(57)【特許請求の範囲】
【請求項１】
グラフィックス処理に使用されるテクスチャデータエレメントの集合をエンコードする方法であって、
テクスチャデータエレメントの前記集合を、テクスチャデータブロックとしてエンコーダを使用してエンコードする段階と、
前記テクスチャデータブロックがエンコードするいくつかのテクスチャエレメントをカバーする1つまたは複数のパスであって、その上で前記テクスチャエレメント用のデータ値が補間される前記1つまたは複数のパスを指定するデータを、前記テクスチャデータブロックにエンコーダを使用して含める段階と、を具備する方法。
【請求項２】
前記テクスチャエレメント用のデータ値が補間される前記1つまたは複数のパスについての端点データ値を指定するデータを、前記テクスチャデータブロックの中に含ませる段階を具備する、請求項1に記載の方法。
【請求項３】
前記テクスチャエレメント用のデータ値が補間される前記1つまたは複数のパスについて使用される前記補間の方法を指定するデータを、前記テクスチャデータブロックの中に含ませる段階を具備する、請求項1または2に記載の方法。
【請求項４】
前記テクスチャデータブロックがエンコードするいくつかのテクスチャエレメントをカバーする1つまたは複数のパスを指定する前記データは、前記補間のパスと端点間に続くパスとの端点を指定する、請求項1から3のいずれか一項に記載の方法。
【請求項５】
テクスチャデータブロックの前記テクスチャデータエレメントに適用される補間パスの予め定義された1つまたは複数の集合を使用する、請求項1から4のいずれか一項に記載の方法。
【請求項６】
前記テクスチャデータブロックは、相互に独立に再現される複数の異なるテクスチャデータエレメントの副集合を示し、
前記方法は、テクスチャデータエレメントの副集合のそれぞれに適用される補間パスを指定するデータを前記テクスチャデータブロックの中に含ませる段階を具備する、請求項1から5のいずれか一項に記載の方法。
【請求項７】
グラフィックス処理に使用されるテクスチャデータエレメントの集合をエンコードするテクスチャデータのブロックをデコードする方法であって、
前記テクスチャデータブロックがエンコードする少なくとも1つのテクスチャエレメントに使用されるデータ値を、前記テクスチャデータブロックがエンコードするいくつかのテクスチャエレメントをカバーするパスに沿う前記テクスチャエレメントの位置に基づいて、前記テクスチャエレメントに使用されるデータ値を補間することによって、デコーダを使用して決定する段階を具備する方法。
【請求項８】
前記テクスチャエレメント用のデータ値が補間される前記1つまたは複数のパスについての端点データ値を指定するデータを、前記テクスチャデータブロックから決定する段階を具備する、請求項7に記載の方法。
【請求項９】
前記テクスチャエレメント用のデータ値が補間される前記1つまたは複数のパスについて使用される前記補間の方法を指定するデータを、前記テクスチャデータブロックから決定する段階を具備する、請求項7または8に記載の方法。
【請求項１０】
前記補間のパスと端点間に続く前記パスとの前記端点を、前記テクスチャデータブロックから決定する段階を具備する、請求項7から9のいずれか一項に記載の方法。
【請求項１１】
テクスチャデータブロックの前記テクスチャデータエレメントに適用される補間パスの予め定義された1つまたは複数の集合を使用し、
前記方法は、前記テクスチャデータブロックの前記テクスチャデータエレメントに適用される補間パスの集合を、前記テクスチャデータブロックから決定する段階を具備する、請求項7から10のいずれか一項に記載の方法。
【請求項１２】
前記テクスチャデータブロックは、相互に独立に再現される複数の異なるテクスチャデータエレメントの副集合を示し、
前記方法は、テクスチャデータエレメントの副集合のそれぞれに適用される補間パスを指定するデータを前記テクスチャデータブロックから決定する段階を具備する、請求項7から11のいずれか一項に記載の方法。
【請求項１３】
前記テクスチャデータエレメントのそれぞれは、テクスチャエレメントに使用される色値を表す、請求項1から12のいずれか一項に記載の方法。
【請求項１４】
前記各テクスチャデータブロックは、テクスチャマップの一部分をエンコードする、請求項1から13のいずれか一項に記載の方法。
【請求項１５】
グラフィックス処理に使用されるテクスチャデータエレメントの集合をエンコードする装置であって、
テクスチャデータエレメントの前記集合を、テクスチャデータブロックとしてエンコードする手段と、
前記テクスチャデータブロックがエンコードするいくつかのテクスチャエレメントをカバーする1つまたは複数のパスであって、その上で前記テクスチャエレメント用のデータ値が補間される1つまたは複数のパスを指定するデータを、前記テクスチャデータブロックに含める手段と、を具備する装置。
【請求項１６】
前記テクスチャエレメント用のデータ値が補間される前記1つまたは複数のパスについての端点データ値を指定するデータを、前記テクスチャデータブロックの中に含ませる手段を具備する請求項15に記載の装置。
【請求項１７】
前記テクスチャエレメント用のデータ値が補間される前記1つまたは複数のパスについて使用される前記補間の方法を指定するデータを、前記テクスチャデータブロックの中に含ませる手段を具備する請求項15または16に記載の装置。
【請求項１８】
前記テクスチャデータブロックがエンコードするいくつかのテクスチャエレメントをカバーする1つまたは複数のパスを指定する前記データは、前記補間のパスと端点間に続くパスとの端点を指定する、請求項15から17のいずれか一項に記載の装置。
【請求項１９】
テクスチャデータブロックの前記テクスチャデータエレメントに適用される補間パスの予め定義された1つまたは複数の集合を使用する、請求項15から18のいずれか一項に記載の装置。
【請求項２０】
前記テクスチャデータブロックは、相互に独立に再現される複数の異なるテクスチャデータエレメントの副集合を示し、
前記装置は、テクスチャデータエレメントの副集合のそれぞれに適用される補間パスを指定するデータを前記テクスチャデータブロックの中に含ませる手段を具備する、請求項15から19のいずれか一項に記載の装置。
【請求項２１】
グラフィックス処理に使用されるテクスチャデータエレメントの集合をエンコードするテクスチャデータのブロックをデコードする装置であって、
前記テクスチャデータブロックがエンコードする少なくとも1つのテクスチャエレメントに使用されるデータ値を、前記テクスチャデータブロックがエンコードするいくつかのテクスチャエレメントをカバーするパスに沿う前記テクスチャエレメントの位置に基づいて、前記テクスチャエレメントに使用されるデータ値を補間することによって、決定する手段を具備する装置。
【請求項２２】
前記テクスチャエレメント用のデータ値が補間される前記1つまたは複数のパスについての端点データ値を指定するデータを、前記テクスチャデータブロックから決定する手段を具備する、請求項21に記載の装置。
【請求項２３】
前記テクスチャエレメント用のデータ値が補間される前記1つまたは複数のパスについて使用される前記補間の方法を指定するデータを、前記テクスチャデータブロックから決定する手段を具備する、請求項21または22に記載の装置。
【請求項２４】
前記補間のパスと端点間に続く前記パスとの前記端点を、前記テクスチャデータブロックから決定する手段を具備する、請求項21から23のいずれか一項に記載の装置。
【請求項２５】
テクスチャデータブロックの前記テクスチャデータエレメントに適用される補間パスの予め定義された1つまたは複数の集合を使用し、
前記装置は、前記テクスチャデータブロックの前記テクスチャデータエレメントに適用される補間パスの集合を、前記テクスチャデータブロックから決定する手段を具備する、請求項21から24のいずれか一項に記載の装置。
【請求項２６】
前記テクスチャデータブロックは、相互に独立に再現される複数の異なるテクスチャデータエレメントの副集合を示し、
前記装置は、テクスチャデータエレメントの副集合のそれぞれに適用される補間パスを指定するデータを前記テクスチャデータブロックから決定する手段を具備する、請求項21から25のいずれか一項に記載の装置。
【請求項２７】
請求項1から14のいずれか一項に記載の方法を使用するグラフィックスプロセッサ。
【請求項２８】
請求項15から26のいずれか一項に記載の装置を含むように構成されたグラフィックスプロセッサ。
【請求項２９】
コンピュータプログラムエレメントであって、前記プログラムエレメントがデータ処理手段上で実行された場合に請求項1から14のいずれか一項に記載の方法を実施するコンピュータソフトウェアコード部分を具備するコンピュータプログラムエレメント。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データをエンコードする方法および装置に関し、特に、コンピュータグラフィックスシステムにおいてテクスチャデータを圧縮(および圧縮解除)することに用いられる、そのような方法および装置に関する。
【背景技術】
【０００２】
コンピュータグラフィックスシステムにおいては、表示する画像のピクセルのテクスチャおよび色の生成を、描画する表面にいわゆるテクスチャまたはテクスチャデータを貼り付けることによって行うのが一般的である。たとえば、3次元(3D)コンピュータグラフィックスにおいて、物体のレンダリング画像に「テクスチャ」(たとえば、ファブリック)の外観を与える場合は、一般に、物体を表すポリゴンの集合に「テクスチャ」(ファブリックの断片の画像など)を貼り付けることによって、物体の表面詳細を追加する。そのようなテクスチャは、典型的には、それぞれが所与のテクスチャ(たとえば、色、輝度、および/または光/影など)の値を表すテクスチャエレメント(「テクセル」)の配列を保存し、そのテクセルを、表示する画像の中の、対応するエレメント(たとえば、(かつ、まったく典型的には)ピクセル)にマッピングすることによって、貼り付けられる。
【０００３】
そのような構成は、高画質をもたらすことが可能であるが、いくつかの欠点がある。具体的には、テクスチャデータを保存し、使用時にそのテクスチャデータにアクセスすることは、たとえば、グラフィックス処理装置に保存および帯域幅の高い要件を課す可能性がある(逆に、そのような要件が満たされない場合にはパフォーマンスが低下する可能性がある)。このことは特に、グラフィックス処理を実行するモバイル装置やハンドヘルド装置において顕著である。そのような装置は、本来的に、たとえば、保存、帯域幅、および電力のリソースおよび能力が限られているからである。
【０００４】
したがって、装置に課されうる、たとえば、保存および帯域幅の負担の軽減をはかるべく、そのようなテクスチャデータを「圧縮」形式にエンコードする試みが知られている。
【０００５】
既知のそのようなテクスチャデータ圧縮手法の1つは、たとえば所与のシーンに使用する色の集合またはパレットを決定し、シーン内のテクスチャエレメント(テクセル)ごとに、そのテクセルに使用する色を示すインデックスを色の集合またはパレットの中に保存する。この手法の利点は、テクセルごとに、(たとえば)色の完全な値ではなくインデックスだけを保存すればよいことである。これは、たとえばテクスチャデータの保存要件の軽減に役立つが、画質の低下や、必要なデータ処理などの観点で、いくつかの欠点が残る。
【０００６】
別の既知のテクスチャ圧縮手法は、いわゆるブロック切り詰め符号化(block truncation coding、BTC)を行うことである。この手法では、シーンまたは画像の全体についてのテクスチャ配列をより小さい(たとえば、4×4テクセルの)ブロックに細分し、そのようなブロックごとに、いくつかの(典型的には、2つの)ベース色(基調色)(またはプライマリ色(原色))の値を決定し、そのブロック内の各テクセルを、そのベース色値の1つに設定する。これも、保存およびアクセスされるべきデータの節約になるが、代償として画質が低下する。
【０００７】
S3 Incorporated of California, USAは、その米国特許第5956431号明細書で、改良されたブロック切り詰め符号化手法を提案している。この手法でも、テクセルブロックごとに2つのベース色を保存するが、それら2つのベース色からさらに(たとえば、それらの色を線形ブレンドすることによって)そのブロックに使用する2つの追加色を導出する。このようにして、そのテクセルブロックに対して4色を「パレット」として与えるが、そのブロックについて保存する必要があるのは2つの色値だけである。その後、4つのブロック「色」のどれをそのテクセルに使用するかを示すために、ブロック内の各テクセルを2ビットでエンコードする。このシステムは、ベーシックなブロック切り詰め符号化より改善された画質を提供するが、ブロックあたりのデータをより多く必要とする。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】米国特許第5956431号
【発明の概要】
【発明が解決しようとする課題】
【０００９】
出願人らは、データのエンコードおよび圧縮の手法について、特にグラフィックス処理用のテクスチャデータへの使用に関しては、いまだ改善の余地があると考える。
【課題を解決するための手段】
【００１０】
本発明の第1の態様によれば、グラフィックス処理に使用されるテクスチャデータエレメントの集合をエンコードする方法が提供され、この方法は、
テクスチャデータエレメントの集合を、テクスチャデータのブロックとしてエンコードする段階と、
テクスチャデータブロックの中に、
ブロックが表すテクスチャエレメントに使用されるデータ値の集合の生成方法を指定するデータと、
ブロックが表す各テクスチャエレメントに使用されるデータ値を、ブロック用に生成されたデータ値の集合を使用して生成するために用いられる方法を指定するデータと、を含める段階と、を具備する。
【００１１】
本発明の第2の態様によれば、グラフィックス処理に使用されるテクスチャデータエレメントの集合をエンコードする装置が提供され、この装置は、
テクスチャデータエレメントの集合を、テクスチャデータのブロックとしてエンコードする手段と、
ブロックが表すテクスチャエレメントに使用されるデータ値の集合の生成方法を指定するデータを、テクスチャデータブロックの中に含める手段と、
ブロックが表す各テクスチャエレメントに使用されるデータ値を、ブロック用に生成されたデータ値の集合を使用して生成するために用いられる方法を指定するデータを、テクスチャデータブロックの中に含める手段と、を具備する。
【００１２】
本発明の第3の態様によれば、グラフィックス処理に使用されるテクスチャデータエレメントの集合を表すテクスチャデータのブロックが提供され、このブロックは、
ブロックが表すテクスチャエレメントに使用されるデータ値の集合の生成方法を指定するデータと、
ブロックが表す各テクスチャエレメントに使用されるデータ値を、ブロック用に生成されたデータ値の集合を使用して生成するために用いられる方法を指定するデータと、を具備する。
【００１３】
本発明のテクスチャデータエンコードシステムにおいては、周知のブロック切り詰め符号化手法の場合のように、テクスチャデータエレメントの集合が、テクスチャデータのブロックとしてエンコードされる。しかしながら、本発明では、テクスチャデータの各ブロックは、とりわけ、当該ブロック用のデータ値の集合の生成方法を指定するデータと、テクスチャデータブロックによって表される各テクスチャエレメントに使用されるデータ値を、その生成されたデータ値の集合を使用して生成するために用いられる方法を指定するデータと、を含む。
【００１４】
後で詳述するように、出願人らは、このエンコード形式が、良好な再現画質を容易に実現しながら、比較的かつ十分に高いデータ圧縮レートをも可能にすることを見いだした。テクスチャデータをこのようにエンコードすることにより、たとえば、エンコード済みデータから画像を再現する際に使用されるデータ値(色値など)を、ブロックごとに変調および変更することが可能である。これにより、(たとえば、データ圧縮を容易にするために)用意されるデータ値(たとえば、色)の集合またはパレットの全体が限られたものであっても、再現可能なデータ値(たとえば、色)における柔軟性は高くなる。
【００１５】
本発明により、任意の好適な形式のテクスチャデータをエンコードすることが可能である。前述のように、オリジナルのローまたは未エンコード形式のデータが、典型的には、テクスチャエレメント(テクセル)の配列の形式に構成され、したがって、特に好ましい実施形態では、本発明を用いて、テクスチャデータエレメント(テクセル)の配列がエンコードされる。そのような配列は、当該技術分野において周知のとおり、典型的には2次元であるが、3次元配列のエンコードに(または、実際は、(たとえば、正しい順序および/または位置のデータを再現できるように、エンコード処理およびデコード処理が構成されている場合には)通常の配列の形式ではないデータのエンコードに)本発明を用いることも可能である。
【００１６】
テクスチャデータエレメントは、当該技術分野において周知のとおり、任意の好適なテクスチャデータ(たとえば、色、輝度、バンプマップ、影マップ(光マップ)など)を表すことが可能である。特に好ましい実施形態では、各テクスチャデータエレメントは、テクスチャエレメント用の色値を表すが、これは必須ではない。
【００１７】
当業者であれば理解されるように、テクスチャエレメントに与えられる実際のデータ値は、オリジナルの未エンコードのロー形式であっても、エンコード済み形式であっても(または、少なくとも、オリジナルデータの表現を再現するためにエンコード済みデータがデコードされている場合には)、テクスチャエレメントが定義または表現しようとしている「テクスチャ」の形式に依存する。
【００１８】
したがって、たとえば、使用される色をテクスチャエレメントが定義する場合には、オリジナルの未エンコード形式のテクスチャデータエレメントは、それぞれが、色値の集合(赤、緑、青(RGB))、または色値と透明度値の集合(赤、緑、青、アルファ(RGBa))を含み、エンコード済みデータは、デコード(再現)時には、対応する色値の集合を生成する。
【００１９】
たとえば、影(光)マップの場合には、テクスチャデータエレメントは、それぞれが、たとえば、そのテクスチャエレメントが光の中にあるか、影の中にあるかと、そのテクスチャエレメントに対応する光または影の量(および/または色)とを示すデータ値の集合を含むか、表す。同様に、法線マップ(バンプマップ)の場合、各テクスチャエレメント用のデータは、そのテクスチャエレメントにおいて光が反射する方向を示す値の集合である。
【００２０】
テクスチャデータエレメントはさらに、たとえば、z値(深さ値)、ステンシル値、輝度値(輝度テクスチャ)、輝度アルファテクスチャ、および/またはグロスマップ(すなわち、テクスチャエレメント位置の面に光沢があるかどうか)などを表すことも可能である。
【００２１】
必要に応じて、各テクスチャデータブロックが、オリジナルデータの再現に必要なデータ値のうちの(全部ではない)一部を生成するのに必要なデータだけをエンコードし、残りのデータ値が、データ再現処理の一環として(たとえば、それらのデータから)導出されるようにすることも可能である。したがって、好ましい実施形態では、エンコード済みテクスチャデータブロックは、オリジナルのテクスチャデータの一部を代表するデータをエンコードし、オリジナルデータの他の部分を代表するデータは、デコード処理時に、エンコード済みデータから導出される。
【００２２】
たとえば、法線マップの場合には、エンコード済みテクスチャデータは、たとえば、法線方向成分のうちの2つ(たとえば、dxおよびdy)だけをエンコードし、第3の成分(dz)は、データのデコード時にこれら2つの値から導出されることが可能である(各成分の二乗の合計が1(1=dx2+dy2+dz2)でなければならないことがわかっているため(それらの成分は長さ1の法線ベクトルを定義するため))。
【００２３】
各テクスチャエレメントがエンコードして表す実際のデータ値、したがって、テクスチャデータブロック用のデータ値の集合として生成され、エンコード済みテクスチャエレメントごとに再現されるデータ値は、したがって、エンコード済みテクスチャエレメントが表すテクスチャデータに依存する。
【００２４】
したがって、たとえば、色データの場合には、各データ値は、たとえば、色値(すなわち、RGB値またはRGBa値)の集合を含むか、表す(すなわち、テクスチャデータブロック用として「色」の集合が生成され、デコード済みテクスチャエレメントごとに色(すなわち、RGB値またはRGBa値の集合)が生成される)。輝度テクスチャの場合には、データ値は、輝度値を表す(すなわち、テクスチャデータブロック用として輝度値の集合が生成され、デコード済みテクスチャエレメントごとに輝度値が生成される)。法線マップの場合は、各データ値が法線ベクトル(すなわち、ベクトル成分dx、dy、dz)に対応し、したがって、テクスチャデータブロック用として法線ベクトルの集合が生成され、デコード済みテクスチャエレメントごとに法線ベクトル(すなわち、ベクトル成分の集合:dx、dy、dz)が生成される。他の場合も同様である。
【００２５】
したがって、本明細書における「色」または「輝度」などへの言及は、当業者であれば理解されるように、当該の色または輝度などを(たとえば、ディスプレイに)再現することを可能にするデータ値の集合を意味することを、この時点で留意されたい。これらのデータ値は、任意の好適な色または輝度などの集合、すなわち、前述のRGBa値の集合のようなデータを含むことが可能である。同様に、エンコード済みテクスチャデータブロック用にデータ値の集合を生成すること、および個々のテクスチャエレメントに使用されるデータ値への言及は、それぞれが値の組み合わせ(必要に応じて、色値(RGBまたはRGBa)の集合など)を具備するか含むデータ値を包含する。
【００２６】
本発明に従ってエンコードされるテクスチャデータエレメントの集合または配列は、任意の好適な、または所望の、そのような集合であることが可能である。たとえば、エンコード済みテクスチャデータブロックは、必要であれば、再現されるべきシーンまたは画像(またはテクスチャマップ)の全体を表すことが可能である。
【００２７】
しかしながら、特に好ましい実施形態では、各テクスチャデータブロックは、従来のブロックエンコード手法と同様に、当該のシーンまたは画像またはテクスチャマップの、より小さな部分(ブロック)をエンコードする。そのような場合、テクスチャデータブロックは、オリジナルのテクスチャデータエレメントのうちの選択された集合または配列(テクセルの4×4配列など)をエンコードして表す。
【００２８】
そのような構成では、オリジナルのテクスチャデータ(テクスチャデータエレメント)の集合の全体をエンコードするために、複数のそのような個々のテクスチャデータブロックが必要であることを理解されたい。したがって、特に好ましい実施形態では、本発明はさらに、(たとえば、シーンの)テクスチャデータエレメントの集合を、複数の、テクスチャデータエレメントの副集合に細分し、次に、テクスチャデータエレメントの各副集合を、本発明に従って、1つのテクスチャデータブロックとしてエンコードする段階を含む。そのような構成では、各副集合が同数の(かつ、たとえば、配列の)テクスチャデータエレメントを表し、各テクスチャデータブロックのサイズが同じであること、すなわち、固定レートのエンコードスキームが用いられることが好ましい。これにより、当該技術分野において周知のとおり、エンコードおよびデコードの処理が容易になる。したがって、たとえば、シーンを複数の4×4テクセル配列に分割し、そのような各配列を、独立したテクスチャデータブロックとしてエンコードすることが可能である。
【００２９】
したがって、さらに、複数のテクスチャデータブロックがエンコードされる場合には、個々のブロックが、ブロック内で(たとえば、データ(ビット位置)順序などに関して)共通のフォーマットを有することが好ましい(これによって、やはり、エンコードおよびデコードの処理が容易になる)。
【００３０】
より大きなシーンまたは画像(またはテクスチャエレメントの集合または配列)(またはその一部)を、複数のテクスチャデータブロックを用いてエンコードする場合、そのシーンまたは画像をより小さなブロックに実際に細分する方法、およびテクスチャブロックにエンコードする順序は、所望どおりに選択可能である。好ましい実施形態では、ブロック(データの副集合)は、モートン順序でエンコードされるが、他の構成も、もちろん可能である。
【００３１】
特に好ましい実施形態では、テクスチャデータの単一ブロックとしてエンコードされたテクスチャエレメントの集合はさらに、そのテクスチャデータブロック内で、たとえば、テクスチャデータ「サブブロック」に細分される。たとえば、テクスチャデータブロックを用いてテクスチャエレメントの8×4配列をエンコードすることが可能だが、このエンコードは、テクスチャエレメントの配列を、テクスチャデータブロック内で2つの4×4テクスチャエレメントサブブロックとして有効にエンコードするものになるであろう。実際、本発明の好ましい実施形態では、各テクスチャデータブロックが、オリジナルのテクスチャエレメントの集合(たとえば、シーンまたは画像)から2つの4×4テクスチャエレメント配列(すなわち、8×4テクスチャエレメント)をエンコードする(表す)。
【００３２】
特に好ましいそのような実施形態では、テクスチャデータブロックのサブブロック同士は、ブロック用のデータ値(たとえば、色)の集合の生成方法と、テクスチャエレメント用にデータ値(たとえば、色)を生成するために用いられる方法とを指定する同じデータを共有するが、再現は別々に行われる(すなわち、テクスチャデータブロックによって表されるテクスチャエレメントに使用されるデータ値(たとえば、色)は、(ブロックのデコード時に)ブロック全体としてではなくサブブロックごとに生成される)。
【００３３】
これらの構成は、テクスチャデータブロック内の「サブブロック」同士が一部のブロック情報を有効に共有することが可能であるという利点を有し、これによって、より高いデータ圧縮レートが容易に得られ、なおかつ、テクスチャエレメントのより大きな配列の全体としてのデコードが不要になる。
【００３４】
そのような構成は、それ自体で新規かつ有利であろうと考えられている。したがって、本発明の第4の態様によれば、グラフィックス処理に使用されるテクスチャデータエレメントの集合をエンコードする方法が提供され、この方法は、
テクスチャデータエレメントの集合を、そのようなエレメントの、複数の副集合に分割する段階と、
テクスチャデータエレメントの副集合のうちの2つ以上を、単一のテクスチャデータブロックとしてエンコードする段階であって、そのテクスチャデータブロックにおいて、テクスチャデータエレメントの各副集合が、テクスチャデータエレメントの他の副集合とは独立に再現される、段階と、を具備する。
【００３５】
本発明の第5の態様によれば、グラフィックス処理に使用されるテクスチャデータエレメントの集合をエンコードする装置が提供され、この装置は、
テクスチャデータエレメントの集合を、そのようなエレメントの、複数の副集合に分割する手段と、
テクスチャデータエレメントの副集合のうちの2つ以上を、単一テクスチャデータブロックとしてエンコードする手段であって、そのテクスチャデータブロックにおいて、テクスチャデータエレメントの各副集合が、テクスチャデータエレメントの他の副集合とは独立に再現される、手段と、を具備する。
【００３６】
本発明の第6の態様によれば、グラフィックス処理に使用されるテクスチャデータエレメントの集合を表すエンコード済みテクスチャデータのブロックが提供され、このブロックは、
テクスチャデータエレメントの集合の、互いに独立に再現されるべき2つ以上の副集合を表すデータを具備する。
【００３７】
本発明のこれらの態様および実施形態は、当業者であれば理解されるように、本明細書に記載の、本発明の好ましい特徴およびオプションの特徴のうちの任意の1つまたは複数、またはすべてを含むことが可能である。したがって、たとえば、テクスチャデータブロックは、テクスチャデータエレメントの2つの(そして2つだけの)副集合をエンコードすることが好ましい。同様に、エンコード済みテクスチャデータブロックは、好ましくは、ブロックに使用されるデータ値(たとえば、色)の集合の生成方法と、ブロックのテクスチャエレメント用にデータ値を生成するために用いられる方法とを指定する、共通の、単一のデータ集合を含み、このデータは、ブロックのテクスチャデータエレメントの副集合用として共有される(すなわち、同じそのようなデータが、ブロックによってエンコードされたテクスチャデータエレメントの各副集合に使用される)。
【００３８】
エンコード済みテクスチャデータブロックに含まれて、ブロックが表すテクスチャエレメントに使用されるデータ値(たとえば、色)の集合の生成方法を指定するデータは、任意の好適な、そのようなデータであることが可能である。これは、たとえば、データ値の生成に用いられる計算またはアルゴリズムを指定することが可能である。
【００３９】
特に好ましい実施形態では、このデータは、データ値のベース(またはプライマリ)集合またはテーブル(パレット)からデータ値の集合を生成する方法を指定する。このことは、テクスチャデータの圧縮を容易にすることに役立つ。それは、たとえば、データ値のベースまたはプライマリ集合が、オリジナルの未エンコードのテクスチャデータの集合におけるデータ値を表す、より少ない数のデータ値の集合であることが可能なためであり(そして実際、好ましく)、かつ/または、たとえば、複数の個々のテクスチャデータブロックによって共有されることが可能なためである。たとえば、色テクスチャの場合、データ値のベースまたはプライマリ集合は、オリジナルの画像またはテクスチャマップで使用されている色を表す、より少ない数の色の集合(パレット)(色値の集合)を具備することが可能である。
【００４０】
この構成では、使用されるデータ値のベース集合は、所望どおりに生成されることが可能であり、たとえば、当該技術分野において周知のとおり、オリジナルのテクスチャデータ(すなわち、エンコードおよび圧縮されるべきデータ)に存在するデータ値を評価して、そこから、オリジナルのデータ値を表すか、かつ/またはオリジナルのデータ値を導出するために用いられることが可能な、データ値の集合を導出することによって、生成されることが可能である。より少ない数のデータ値の集合(すなわち、オリジナルデータより少ない数のデータ値を含む集合(たとえば、オリジナルデータで使用されているデータ値の集合の副集合である集合))が導出され、データ値のベース集合に使用されることが最も好ましく、これによって、オリジナルデータの圧縮が容易になる。これには、任意の好適な手法を用いることが可能であり、たとえば、誤差比較手法を用いて、オリジナルのデータ値の集合と最もよく一致する、より少ない数のデータ値の集合を決定することなどが可能である。これは、実質的には、1つまたは複数のテクスチャデータブロックに使用されるべき、あらかじめ定義された、またはあらかじめ決められた、データ値のベース集合を与えることになる。
【００４１】
データ値のベース集合は、たとえば、ブロックごとに決定されることが可能である。たとえば、色データの場合には、従来のブロック切り詰め符号化手法の場合と同様に、1つのテクスチャブロックに対して1つまたは2つ(またはそれ以上)のベース代表色が決定されることが可能であり、次に、その色が、テクスチャブロックの再現時に使用される色の集合を生成する際に使用されるベース色パレットとして動作する。この場合、そのブロック用のデータ値パレット内のベースデータ値は、たとえば、従来の手法の場合と同様に、テクスチャブロック用データの一部として与えられる(すなわち、テクスチャデータブロック自体に含まれる)ことが可能である。
【００４２】
しかしながら、特に好ましい実施形態では、データ値の単一のベース集合(たとえば、色のパレット)が、複数のテクスチャブロックに対して共通に決定され、使用される(すなわち、複数のテクスチャブロックが、同じデータ値のベース集合を共有して使用する)。データ値(たとえば、色)のベース集合は、画像作成されるべきテクスチャ全体(たとえば、テクスチャマップ)に対して決定されることが最も好ましい。このことは、実質的に、(たとえば、シーン用の)複数のテクスチャブロックによって共有される、データ値の「グローバル」ベース集合(たとえば、色パレット)を決定することになり、この集合から、個々のテクスチャブロック用のデータ値(たとえば、色)が生成(かつ、たとえば、ブロックごとに変更または変調)されることが可能である。
【００４３】
複数のテクスチャデータブロック(たとえば、シーン全体)に、データ値の「共有」ベース集合を使用することの利点として、個々のブロックのそれぞれは、比較的高いテクスチャ圧縮レートを達成しながら、より広い範囲のデータ値から選択して、自身のデータ値の集合を生成する(それによって、たとえば、より高い、データ値の柔軟性および画質を実現する)ことを許可されることが可能である。これにより、さらに、たとえば色の場合には、アルファ(透明度)の階調度の使用が容易になる。これは、「グローバル」色パレットの使用によって、たとえば、より複雑なアルファ値の使用が容易になるためである。
【００４４】
そのような、データ値(たとえば、色)の「グローバル」(共有)パレットを使用する場合は、パレット内のデータ値の数を、所望どおりに選択することが可能である。1〜128個のデータ値が使用されることが好ましく、32〜64個のデータ値が使用されることが最も好ましい。特に好ましい実施形態では、特に、シーン全体が単一の、データ値のベース集合を共有する場合には、64個のデータ値(たとえば、色)が使用されるが、他の構成(たとえば、データ値が32個、16個、8個、または4個などである構成)も可能である。
【００４５】
本発明の重要な利点として、本発明は、そのようなベースデータ値(たとえば、色)を、より低い精度(たとえば、オリジナル画像より低い精度)で保存しながら、比較的かつ十分に高い再現画質を達成することを容易にすることを、ここで留意されたい。出願人らは、たとえば、64個のベース色を16ビット精度で保存しても(RGB565またはRGBA4444)、非常に良好な画像再構築が可能であることを見いだした。したがって、本発明は、実際に、比較的多数のデータ値エントリを含む「グローバル」(または共有)ベースデータ値パレットの使用を容易にし、したがって、画質向上を容易にする。
【００４６】
したがって、好ましい実施形態では、ベースデータ値(たとえば、色)は、オリジナルデータの場合より低い精度でエンコードされる。やはり、これによって、オリジナルデータの圧縮が容易になる。
【００４７】
複数の個々のテクスチャデータブロックによって共有されるデータ値(たとえば、色)のベース集合が使用される場合、そのデータ値のベース集合は、(たとえば、個々のテクスチャデータブロックのそれぞれに含まれるのではなく)個々のテクスチャデータブロックとは別に、エンコードおよび提供されることが好ましい。たとえば、この、データ値のベース集合は、たとえば、それを共有するテクスチャデータブロックの集合に関連付けられた、独立したデータブロックとしてエンコードおよび提供されることが可能である(そして、実際、そのように提供されることが好ましい)。したがって、それは、たとえば、それを共有するテクスチャデータブロックのストリームに対するヘッダ(またはフッタ)データブロックとして提供されることが可能である。
【００４８】
そのような構成は、それ自体で新規かつ有利であろうと考えられている。したがって、本発明の第7の態様によれば、グラフィックス処理に使用されるテクスチャデータをエンコードする方法が提供され、この方法は、
テクスチャデータを表すデータ値の集合を決定し、そのデータ値の集合をデータブロックとしてエンコードする段階と、
そのテクスチャデータを複数のブロックに分割する段階と、
各テクスチャデータブロックをデータブロックとしてエンコードし、そのような各データブロックの中に、当該テクスチャデータブロックに使用されるべき1つまたは複数のデータ値をデータ値ブロックから指定するデータを含める段階と、を具備する。
【００４９】
本発明の第8の態様によれば、グラフィックス処理に使用されるテクスチャデータをエンコードする装置が提供され、この装置は、
テクスチャデータを表すデータ値の集合を決定し、そのデータ値の集合をデータブロックとしてエンコードする手段と、
そのテクスチャデータを複数のブロックに分割する手段と、
各テクスチャデータブロックをデータブロックとしてエンコードし、そのような各データブロックの中に、当該テクスチャデータブロックに使用されるべき1つまたは複数のデータ値をデータ値ブロックから指定するデータを含める手段と、を具備する。
【００５０】
本発明の第9の態様によれば、グラフィックス処理に使用されるテクスチャデータをエンコードするエンコード済みテクスチャデータの集合が提供され、このブロックは、
エンコード済みテクスチャデータの集合に使用されるデータ値の集合をエンコードするデータブロックと、
それぞれが、テクスチャデータの集合の副集合をエンコードし、それぞれが、当該のテクスチャデータの副集合に使用されるべき1つまたは複数のデータ値をデータ値ブロックから指定するデータを含む、複数のデータブロックと、を具備する。
【００５１】
やはり、当業者であれば理解されるように、本発明の前述の実施形態および態様は、本明細書に記載の、本発明の好ましい特徴およびオプションの特徴のうちの任意の1つまたは複数、またはすべてを、必要に応じて含むことが可能である。したがって、たとえば、各テクスチャデータブロックは、別々に再現されるべき、テクスチャデータの2つの(そして2つだけの)サブブロックをエンコードすることが好ましい。したがって、この構成では、実質的に、3つのレベルのエンコード済みテクスチャデータが存在し、それらは、ベースデータ値のブロックの形式である「グローバル」データと、各テクスチャデータブロックの共有データの形式であるセミローカルデータと、テクスチャデータブロック内の個々のサブブロックのそれぞれのためのデータの形式であるローカルデータとである。
【００５２】
本発明の第10の態様によれば、グラフィックス処理に使用されるテクスチャデータをエンコードする方法が提供され、この方法は、
テクスチャデータを、テクスチャデータの複数の副集合に分割する段階と、
テクスチャデータを複数のテクスチャデータブロックとしてエンコードする段階であって、各テクスチャデータブロックが、テクスチャデータの副集合のうちの2つ以上をエンコードし、テクスチャデータの各副集合に固有のデータと、テクスチャデータブロックによってエンコードされたテクスチャデータの副集合によって共有されるデータとを含む、段階と、
テクスチャデータブロックによって共有されるデータを含むデータブロックをエンコードする段階と、を具備する。
【００５３】
本発明の第11の態様によれば、グラフィックス処理に使用されるテクスチャデータをエンコードする装置が提供され、この装置は、
テクスチャデータを、テクスチャデータの複数の副集合に分割する手段と、
テクスチャデータを複数のテクスチャデータブロックとしてエンコードする手段であって、各テクスチャデータブロックが、テクスチャデータの副集合のうちの2つ以上をエンコードし、テクスチャデータの各副集合に固有のデータと、テクスチャデータブロックによってエンコードされたテクスチャデータの副集合によって共有されるデータとを含む、手段と、
テクスチャデータブロックによって共有されるデータを含むデータブロックをエンコードする手段と、を具備する。
【００５４】
本発明の第12の態様によれば、グラフィックス処理に使用されるエンコード済みテクスチャデータの集合が提供され、この集合は、
複数のテクスチャデータブロックであって、各テクスチャデータブロックが、テクスチャデータの2つ以上の副集合をエンコードし、テクスチャデータの各副集合に固有のデータと、テクスチャデータブロックによってエンコードされたテクスチャデータの副集合によって共有されるデータとを含む、複数のテクスチャデータブロックと、
テクスチャデータブロックによって共有されるデータを含むデータブロックと、を具備する。
【００５５】
やはり、本発明のこれらの態様および実施形態は、本明細書に記載の、本発明の好ましい特徴およびオプションの特徴のうちの任意の1つまたは複数、またはすべてを含むことが可能である。
【００５６】
本発明のこれらの態様および実施形態の好ましい構成では、テクスチャデータの副集合によって共有されたデータは、たとえば、テクスチャデータの副集合(サブブロック)に使用されるデータ値(たとえば、色)の集合へのインデックスを表すか、定義(または生成することを可能に)する。所与の副集合に固有のデータは、データ値へのインデックスを同様に定義することが可能であり、さらに(またはその代わりに)他の情報(副集合のテクスチャエレメント用の他のデータ値からデータ値を補間または導出する方法など)を定義することも可能である。
【００５７】
テクスチャデータブロックに使用されるデータ値が、(データ値のベース集合が、ブロックごとに定義されている場合であれ、よりグローバルに定義されている場合であれ)、データ値のベース集合から生成される場合、テクスチャデータブロックに含まれている、使用されるデータ値の集合の生成方法を指定するデータは、ブロックに使用されるデータ値の集合を、任意の好適な、または所望の様式で生成するための、データ値のベース集合の中のデータ値の使用方法を指定することが可能である。
【００５８】
したがって、このデータは、たとえば(そして実際、そのようにすることが好ましいが)、ブロック用のデータ値の集合が、データ値のベース集合から直接取得された1つまたは複数のデータ値を含むべきであり、かつ/またはデータ値のベース集合の中の1つまたは複数のデータ値から導出または補間された1つまたは複数のデータ値、またはそのようなデータ値の組み合わせを、含むべきであることを指定することが可能である。データ値が、データ値のベース集合から導出されるべきである場合、この導出は、たとえば、データ値のベース集合から直接取得された1つまたは複数のデータ値をブレンドすること、および/または、データ値のベース集合から直接取得された1つまたは複数のデータ値を調節すること、および/または、これらの手法の組み合わせによって行われることが可能である。好ましい実施形態では、ブロック用のデータ値の集合の生成方法を指定するデータは、これらの選択肢のうちの任意の1つを指定することが可能である。
【００５９】
特に好ましい実施形態では、テクスチャデータブロックに使用されるデータ値の集合の生成方法を指定するデータは、選択された(好ましくは、あらかじめ決められた)複数のデータ値集合生成手法または方法のうちのどれをブロックに使用するかを指定する。これの利点として、この目的のためにテクスチャデータブロックに含まれるデータは、どのデータ値集合生成方法を使用するかを指定するだけでよい。すなわち、このデータは、実質的に、使用するデータ値集合生成方法へのインデックスとして動作し、テクスチャデータブロックは、たとえば、データ値の集合の生成方法をより包括的に記載したデータを含む必要はない。
【００６０】
そのような構成では、あらかじめ決められたデータ値集合生成方法は、前述の方法のうちの1つまたは複数またはすべてを含むことが好ましい。したがって、それらは、好ましくは、データ値の定義済みベース集合から直接取得された1つまたは複数のデータ値、および/または、データ値のベース集合から取得された1つまたは複数のデータ値をブレンドすることによって生成された1つまたは複数のデータ値、および/または、データ値のベース集合から取得された1つまたは複数のデータ値を調節することによって生成された1つまたは複数のデータ値、および/または、これらの手法の組み合わせを含む、ブロック用のデータ値の集合を含む。最も好ましくは、テクスチャデータブロックが「選択」することが可能な、あらかじめ定義されたデータ値生成方法は、データ値のベース集合からデータ値が直接取得される、少なくとも1つのモードと、データ値が、データ値のベース集合から直接取得された1つまたは複数のデータ値、およびデータ値のベース集合から取得された1つまたは複数のデータ値から(たとえば、それらのデータ値をブレンドおよび/または調節することによって)導出された1つまたは複数のデータ値の両方を含む、別のモードとを具備する。
【００６１】
特に好ましい、そのような実施形態では、あらかじめ定義された(あらかじめ決められた)データ値生成方法は4つある。最も好ましくは、これらの方法のうちの1つは、データ値のベース集合から直接取得されたデータ値を使用し、他の3つは、データ値のベース集合に基づいて導出された(好ましくは、ブレンドまたは調節された)少なくともいくつかのデータ値を使用する。最も好ましくは、後の3つのデータ値生成方法は、いくつかのブレンドされたデータ値と、さらにいくつかの調節されたデータ値とを使用する。この構成の利点として、テクスチャデータブロックに含まれるデータ値生成データは、(4つのデータ値集合生成方法のうちのどれを使用するかを指定する)2ビットのインデックスを含むことが可能であり、これによって、必要なデータ容量が比較的少なくなり、なおかつ、比較的高い再現画質の達成が可能である。
【００６２】
テクスチャデータブロック用のデータ値の集合で使用されるデータ値が、データ値のベース集合から取得された1つまたは複数のデータ値をブレンドすることによって形成される場合、そのようなブレンドは、任意の所望の、かつ適切な方式で実行されることが可能である。たとえば、2つのデータ値の単純な線形ブレンド(たとえば、50:50、1/3:2/3、または3/8:5/8(またはその逆))を使用することが可能である。ブレンドされるデータ値は、たとえば、データ値のベース集合から直接取得された1つまたは複数のデータ値、ブロック用として他の方法で生成された1つまたは複数のデータ値(たとえば、ブロック用として既に生成されている、ブレンドまたは調節されたデータ値)、および/またはこれらの組み合わせを含むこと、またはすべてがこれらからなることが可能である。したがって、たとえば、ブレンドされたデータ値は、データ値のベース集合から直接取得されたデータ値と、当該テクスチャブロック用に生成された、別のブレンドまたは調節されたデータ値とのブレンドを含むことが可能である。
【００６３】
ブレンドされたデータ値が使用される場合、テクスチャデータブロック用のデータ値の集合の生成方法を指定するデータは、任意のブレンドされたデータ値の生成方法を指定することが好ましい。前述のような、あらかじめ定義されたデータ値生成方法が用いられる場合は、1つまたは複数のブレンドモードが、データ値生成方法の一部としてあらかじめ定義されることが可能であり、そのようになされることが好ましい。
【００６４】
テクスチャデータブロック用のデータ値の集合で使用されるデータ値が、データ値を調節することによって生成される場合、そのような調節は、1つまたは複数のデータ値(たとえば、色の場合であれば、RGB値またはRGBa値の集合)を、そのデータ値が特定の(好ましくは、あらかじめ決められた)様式で調節されるように、修正することを含むことが好ましい。たとえば、調節されたデータ値(集合)を与えるために、調節されるべきデータ値のデータ値集合に対し、選択された値を加算(または減算)することが可能である。調節されるべきデータ値は、たとえば、データ値のベース集合から直接取得されることが可能であり、または、たとえば、テクスチャデータブロック用に生成されるか生成されている、ブレンドまたは調節されたデータ値であることが可能である。
【００６５】
ここでも、「調節された」データ値が使用される場合、テクスチャブロック用のデータ値の集合の生成方法を指定するデータは、任意のそのような「調節された」データ値の生成方法を指定することが好ましい。あらかじめ定義されたデータ値生成方法が用いられる場合、行われるべき「調節」は、ここでも、データ値生成方法の一部としてあらかじめ定義されることが可能であり、そのようになされることが好ましい。
【００６６】
所与のテクスチャブロック用に生成されたデータ値の集合は、任意の所望の、かつ好適な数のデータ値を含むことが可能である。この集合は、やはり、(たとえば、オリジナルデータで使用されているデータ値の集合と比較して)限られた(または、より少ない)数のデータ値の集合を含み、そのように含むことが好ましい。したがって、たとえば、テクスチャデータブロック用に生成されたデータ値の集合は、オリジナルデータ値、および/またはデータ値のベース集合のデータ値(与えられている場合)より少ない数のデータ値(たとえば、それらの副集合)を含むことが好ましい。やはり、これによって、オリジナルデータの圧縮が容易になる。
【００６７】
テクスチャデータブロック用に生成されたデータ値の集合には、1〜8個のデータ値が含まれることが好ましく、2〜4個のデータ値が含まれることが最も好ましい。特に好ましい実施形態では、4つのデータ値が生成される。出願人らは、所与のテクスチャブロック用に4つのデータ値の集合を生成すれば、十分に高い再現画質が得ることができ、なおかつ、デバイスのデータ記憶およびデータ処理のリソースにとって過負荷にならないことがわかった。各テクスチャデータブロックに対しては、同じ数のデータ値を生成することが好ましい。
【００６８】
前述のように、テクスチャデータブロックに使用されるデータ値の集合のために生成され、かつ、必要に応じてデータ値のベース集合に使用される、実際のデータ値は、(たとえば、それらのフォーマット、およびそれらが表すものに関しては)エンコードされるテクスチャデータの性質に依存する。たとえば、前述のように、色データおよび色マップの場合には、各データ値は、所与の色を表し、たとえば、RGB値やRGBa値のような色値の集合を含む。一方、輝度マップの場合には、各データ値は、単一の輝度値を含み、表すことが可能である。法線マップ(バンプマップ)の場合には、各データ値は、法線ベクトルを表す成分の集合を含み、影(光)マップの場合には、各データ値は、たとえば、光または影の有無および量を指定する値の集合を含み、表す。他の場合も同様である。
【００６９】
エンコード済みテクスチャデータブロックに含まれ、ブロック用に生成されたデータ値の集合を使用して、ブロックに対してエンコードされた各テクスチャエレメントに使用されるデータ値(たとえば、色)を生成するために用いられる方法を指定するデータは、同様に、任意の好適な、そのようなデータであることが可能である。これは、たとえば、データ値の生成に用いられる計算またはアルゴリズムを指定することが可能である。
【００７０】
特に好ましい実施形態では、このデータは、各テクスチャエレメントに使用されるデータ値(たとえば、色)を、テクスチャデータブロック用に生成されたデータ値(たとえば、色)の集合から直接取得するか、それらのデータ値から何らかの方法で補間または導出するかを指定する。
【００７１】
たとえば、色の場合(すなわち、エンコード済みテクスチャデータが各テクスチャエレメントの色を表す場合)、それらの色(データ値)が、テクスチャデータブロック用に生成された色の集合から直接取得される構成は、典型的には人工的なドローイングに見られるような、多数の異なる色を有し、周波数が高いテクスチャデータの場合に、よりよい画像再現をもたらすことがわかっている。一方、テクスチャエレメントの色が、テクスチャデータブロック用に生成された色の集合から補間される構成は、典型的には写真のようにリアルなテクスチャに見られるような、多数の類似色を有し、周波数が低いテクスチャデータの場合に、よりよい画像再現をもたらすことがわかっている。
【００７２】
所与のテクスチャエレメントに使用されるデータ値が、テクスチャデータブロック用に生成されたデータ値の集合から何らかの方法で補間または導出される場合、それは、たとえば、それらのデータ値の1つまたは複数をブレンドまたは調節することによってなされることが可能であり、たとえば、前述の、データ値のベース集合からテクスチャデータブロック用のデータ値の集合を生成する場合と同様の様式により可能である。
【００７３】
しかしながら、特に好ましい、そのような構成では、テクスチャエレメントに使用されるデータ値は、ブロックが表すいくつかのテクスチャエレメントをカバーする1つまたは複数のパスに沿ってそれらのデータ値を補間することによって生成される。最も好ましくは、複数のテクスチャエレメントをカバーするテクスチャエレメントパスが、その端点データ値(たとえば、色)とともに定義され、そのパスの端点の中間のテクスチャエレメントのデータ値(たとえば、色)が、そのテクスチャエレメントの位置に関して、端点データ値間で、適切な、または選択された様式で補間されることによって決定される。たとえば、4つのテクスチャエレメントの行をカバーする、直線のテクスチャエレメントパスが、データ値が、テクスチャデータブロック用に生成されたデータ値の集合から直接取得されたデータ値に設定された、端点テクスチャエレメントと、データ値が、その2つの端点データ値から(たとえば、単純な線形補間によって)補間された、2つの中間テクスチャエレメントと、ともに定義されることが可能である。
【００７４】
そのような構成は、実質的に、フェーディングパスまたはフェーディングスキームをテクスチャエレメントに適用し、出願人らは、そのような構成が、少なくとも色データの場合には、写真のようにリアルなテクスチャについて特に良好な色再現をもたらすことを見いだした。
【００７５】
したがって、そのような構成は、それ自体で新規かつ有利であろうと考えられている。したがって、本発明の第13の態様によれば、グラフィックス処理に使用されるテクスチャデータエレメントの集合をエンコードする方法が提供され、この方法は、
テクスチャデータエレメントの集合を、テクスチャデータブロックとしてエンコードする段階と、
テクスチャデータブロックがエンコードするいくつかのテクスチャエレメントをカバーする1つまたは複数のパスであって、その上でテクスチャエレメント用のデータ値が補間される1つまたは複数のパスを指定するデータを、テクスチャデータブロックに含める段階と、を具備する。
【００７６】
本発明の第14の態様によれば、グラフィックス処理に使用されるテクスチャデータエレメントの集合をエンコードする装置が提供され、この装置は、
テクスチャデータエレメントの集合を、テクスチャデータブロックとしてエンコードする手段と、
テクスチャデータブロックがエンコードするいくつかのテクスチャエレメントをカバーする1つまたは複数のパスであって、その上でテクスチャエレメント用のデータ値が補間される1つまたは複数のパスを指定するデータを、テクスチャデータブロックに含める手段と、を具備する。
【００７７】
本発明の第15の態様によれば、グラフィックス処理に使用されるテクスチャデータエレメントの集合をエンコードするテクスチャデータブロックが提供され、このテクスチャデータブロックは、
テクスチャデータブロックがエンコードするいくつかのテクスチャエレメントをカバーする1つまたは複数のパスであって、その上でテクスチャエレメント用のデータ値が補間される1つまたは複数のパスを指定するデータを具備する。
【００７８】
やはり、本発明のこれらの態様および実施形態は、本明細書に記載の、本発明の好ましい特徴およびオプションの特徴のうちの任意の1つまたは複数、またはすべてを含むことが可能である。したがって、たとえば、いくつかのテクスチャエレメントをカバーするパスを指定するデータは、好ましくは、複数のテクスチャエレメントをカバーするパスと、そのパスの端点データ値と、オプションで、そのパスに沿って用いられる補間スキームと、を定義または指定する。
【００７９】
そのような補間構成が用いられる場合には、エンコード済みテクスチャデータブロックは、使用される1つまたは複数の補間パスがカバーするテクスチャエレメントを指定することが好ましい。これは、補間パスの端点と、(たとえば、直線であれ、ジグザグであれ、その他であれ)それらの端点の間をたどるパスとを指定することによって、なされることが好ましい。
【００８０】
その1つまたは複数の補間パスでカバーされるテクスチャエレメントに使用されるデータ値が決定される方法も、指定されることが好ましい。好ましい実施形態では、これは、テクスチャデータブロック用に生成されたデータ値の集合から端点データ値を直接取得し、中間テクスチャエレメントに使用されるデータ値を、それらのデータ値から(好ましくは、線形)補間することによってなされる。しかしながら、他の(たとえば、より複雑な)構成も、必要であれば可能である。好ましくは、この構成は、所与の補間パスに対して、半数のテクスチャエレメントのデータ値が、テクスチャデータブロック用に生成されたデータ値の集合から直接選択され、残り半数のテクスチャエレメントのデータ値が、それらの選択されたデータ値から補間されるような構成である。
【００８１】
したがって、好ましい実施形態では、テクスチャデータブロックがエンコードする1つまたは複数のテクスチャエレメントに使用されるデータ値(たとえば、色)は、複数のテクスチャエレメントをカバーするパスに沿うテクスチャエレメントの位置と、たとえば、そのパスに対して指定された端点データ値(たとえば、色)とに基づく。この場合、所与のテクスチャエレメント用のデータ値は、そのパスの端点データ値を決定し、そのパスに沿うテクスチャエレメントの位置を決定し、それらに応じて、テクスチャエレメント用のデータ値を補間または導出することによって決定される。
【００８２】
補間パスがカバーするテクスチャエレメントの数は、所望どおりに選択されることが可能であり、たとえば、各テクスチャデータブロックがエンコードするテクスチャエレメントの数に基づかなければならない。好ましい実施形態では、各補間パスは、ブロックの4つのテクスチャエレメントをカバーする(たとえば、好ましくは、これら4つのテクスチャエレメントのうち、2つは、補間パスの端点であり、テクスチャデータブロック用に生成されたデータ値の集合から直接取得されたデータ値を有し、2つは、「中間」エレメントであり、したがって、端点データ値から補間されたデータ値を有する)。
【００８３】
特に好ましい実施形態では、テクスチャデータブロックのテクスチャデータエレメント(または、テクスチャデータエレメントの副集合)に適用される補間パスの、1つまたは複数の集合が定義されることが可能であり、定義されることが好ましい。これは、たとえば、所与のテクスチャデータブロックが表すテクスチャデータエレメントのすべてまたは副集合を一緒にカバーする、関連する補間パスの集合を定義することを含むことが可能である。たとえば、4×4テクスチャエレメントブロックの場合は、それぞれがブロック内の1行(4つ)のテクスチャエレメントをカバーする、4つの補間パスの集合が、ブロックに適用される補間パスの集合として定義されることが可能である。これは、実質的に、テクスチャデータブロックが表す(エンコードする)テクスチャエレメントに適用されるフェーディングパターンまたはシェーディングパターンを定義する。
【００８４】
したがって、特に好ましい実施形態では、ブロックのテクスチャエレメント用にデータ値を生成するために用いられる方法を指定するデータは、ブロックに使用される特定のフェーディングパターンを指定し、このフェーディングパターンは、ブロックが表すテクスチャエレメントに適用される補間パスの集合を定義する。そのような構成では、各補間パスは、同じ数(たとえば、4つ)のテクスチャエレメントをカバーすることが好ましい。そのような構成においては、フェーディングパターンでカバーされるテクスチャエレメントの半数が、テクスチャデータブロック用に生成されたデータ値の集合からデータ値を直接取得し、残りのテクスチャエレメントが、それらのデータ値から補間されたデータ値を有することも好ましい。
【００８５】
特に好ましい実施形態では、複数の補間スキームおよび複数のフェーディングパターンが使用されることが可能であり、たとえば、あらかじめ定義され、そのデータは、ブロック内の各テクスチャエレメント用にデータ値を生成する方法を指定し、次に、たとえば、そのような、あらかじめ定義された(または、あらかじめ決められた)フェーディングパターンおよび/または補間スキームのどれを使用するかを指定する。たとえば、そのような各フェーディングパターンは、異なる補間(フェーディング)パス、または異なる、補間(フェーディング)パスの集合を使用することが可能である(そして実際、使用することが好ましい)。好ましい実施形態では、それぞれが、異なる組み合わせの補間パスを有する、8つのフェーディングパターンが使用される。これは、少なくとも色データの場合には、たとえば、写真のようにリアルな画像の、特に良好な再現を容易にすることがわかっている。
【００８６】
複数の補間スキームおよび/またはフェーディングパターンが使用される場合、各フェーディングパターンなどは、好ましくは、同じ数のテクスチャエレメントをカバーし、同じデータ値補間処理を行う(すなわち、フェーディングパターンは、たとえば、そのフェーディング方向およびフェーディングパスに関してのみ、異なる)。これは、エンコードおよびデコードの処理を簡略化することに役立つ。
【００８７】
フェーディングパターン(または補間スキーム)が使用される場合、そのフェーディングパターン(または補間スキーム)は、テクスチャデータブロックが表すすべてのテクスチャエレメント、または、たとえば、それらのエレメントの副集合だけをカバーすることが可能である。前述のように、テクスチャデータブロックが、テクスチャデータエレメントの、別々に再現されるべき副集合をエンコードする場合、フェーディングパターン(または補間スキーム)は、テクスチャエレメントの単一の副集合をカバーすることが好ましい(すなわち、フェーディングパターン(または補間スキーム)は、テクスチャエレメントの各副集合に別々に適用される必要がある)。
【００８８】
最も好ましくは、そのような構成において、エンコード済みテクスチャデータブロックは、テクスチャエレメントの各副集合に異なるフェーディングパターン(または補間スキーム)が適用されることを指定することが可能である。これにより、たとえば、テクスチャデータブロックの異なるサブブロックに、異なるフェーディングパターンが適用されることが可能になる。したがって、たとえば、テクスチャデータブロックが、テクセルの8×4配列を2つの4×4サブブロックとしてエンコードする場合は、その2つの4×4サブブロックのそれぞれに異なるフェーディングパターンを適用することが可能であることが好ましい。
【００８９】
特に好ましい実施形態では、テクスチャデータブロックのテクスチャエレメント用のデータ値を生成するために用いられる方法を指定するデータは、選択された(好ましくは、あらかじめ決められた)複数のデータ値生成方法のうちのどれをブロックに使用するかを指定する。これの利点として、この目的のためにテクスチャデータブロックに含まれるデータは、どのデータ値生成方法を使用するかを指定するだけでよい。すなわち、このデータは、実質的に、使用するデータ値生成方法へのインデックスとして動作し、テクスチャデータブロックは、たとえば、データ値の生成方法をより包括的に記載したデータを含む必要はない。
【００９０】
そのような構成では、あらかじめ決められたデータ値生成方法は、前述の方法のうちの1つまたは複数またはすべてを含むことが好ましい。したがって、それらは、好ましくは、ブロック用に生成されたデータ値の集合から直接取得される、ブロックのテクスチャエレメント用のデータ値、および/または、ブロック用に生成された(たとえば、好ましくは、ブロックにフェーディングパターンが適用される)データ値の集合から導出または補間される、テクスチャエレメント用のデータ値、および/またはこれらの手法の組み合わせを含む。最も好ましくは、テクスチャデータブロックが「選択」することが可能な、あらかじめ定義されたデータ値生成方法は、テクスチャエレメントのデータ値が、ブロック用に生成されたデータ値の集合から直接取得される、少なくとも1つの方法と、テクスチャエレメントのデータ値が、生成されたデータ値の集合から直接取得された1つまたは複数のデータ値、および生成されたデータ値の集合から導出された1つまたは複数のデータ値(たとえば、前述のような、フェーディングパターンの適用など)の両方を含む、別の方法とを具備する。
【００９１】
特に好ましい、そのような実施形態では、あらかじめ定義された(あらかじめ決められた)基本的なデータ値生成方法は2つある。最も好ましくは、これらの方法のうちの1つが、テクスチャデータブロック用に生成された色の集合から直接取得されたデータ値を使用し、もう1つが、ブロック用に生成されたデータ値の集合から導出された少なくともいくつかのデータ値を使用する。特に好ましい実施形態では、導出されたデータ値を使用する方法は、1つまたは複数の(そして好ましくは複数の、最も好ましくは8つの)、前述のタイプのあらかじめ定義されたフェーディングパターンを使用するか、使用することが可能であり、テクスチャデータブロックは、そのようなフェーディングパターンのどれを使用するかを指定するデータを含む。
【００９２】
前述のように、各テクスチャエレメント用に生成された実際のデータ値は、(たとえば、それらのフォーマット、およびそれらが表すものに関しては)やはり、エンコードされるテクスチャデータの性質に依存する。したがって、たとえば、前述のように、色データおよび色マップの場合には、各データ値は、所与の色を表し、たとえば、RGB値やRGBa値のような色値の集合を含む。一方、輝度マップの場合には、各データ値は、単一の輝度値を含み、表すことが可能である。法線マップ(バンプマップ)の場合には、各データ値は、法線ベクトルを表す成分の集合を含み、影マップ(光マップ)の場合には、各データ値は、たとえば、光または影の有無および量を指定する値の集合を含み、表す。他の場合も同様である。
【００９３】
特に好ましい実施形態では、テクスチャデータブロックによってエンコードされるテクスチャエレメントに使用されるデータ値の集合の生成方法を指定するデータ、および各テクスチャエレメント用にデータ値を生成するために用いられる方法を指定するデータの両方が、テクスチャデータブロックに使用される、あらかじめ定義されたデータ値集合生成モード、およびデータ値生成方法を、それぞれ指定する。
【００９４】
特に好ましい、そのような構成では、(ブロックに使用されるデータ値の集合を生成する)1つまたは複数の、あらかじめ定義されたデータ値集合生成モードが、(ブロック用に生成されたデータ値の集合からテクスチャエレメントのデータ値を生成する)1つまたは複数の、あらかじめ定義されたデータ値生成方法に関連付けられ、エンコード済みテクスチャデータブロックは、データ値集合生成モードおよびテクスチャエレメントデータ値生成方法のどの組み合わせを使用するかを指定するデータを含む。最も好ましくは、データ値集合生成モードおよびテクスチャエレメントデータ値生成方法の4つの組み合わせが、あらかじめ定義されている。これにより、使用されるべき組み合わせが、エンコード済みテクスチャデータブロック内の2ビットのインデックスによって指定されることが可能である。
【００９５】
そのような構成では、データ値集合生成モードおよびテクスチャエレメントデータ値生成方法の組み合わせは、所望どおりに選択されることが可能である。好ましい実施形態では、データ値集合生成モードは、前述のように、ブロックに使用されるデータ値がデータ値のベース集合から直接取得されるモードと、データ値がデータ値のベース集合から導出される1つまたは複数のモードとを含む。同様に、テクスチャエレメントデータ値生成方法は、データ値が、ブロック用に生成されたデータ値の集合から直接取得される、方法と、データ値が、テクスチャブロック用に生成されたデータ値の集合から補間または導出される、1つまたは複数の方法と、を含むことが好ましい。
【００９６】
特に好ましい実施形態では、データ値集合生成モードおよびテクスチャエレメントデータ値生成方法の、あらかじめ定義された、選択可能な組み合わせの1つが、データ値がデータ値のベース集合から直接取得されるデータ値集合生成方法と、データ値が、ブロック用に生成されたデータ値の集合から直接取得されるテクスチャエレメントデータ値生成方法とを含み、あらかじめ定義された、選択可能な組み合わせの別の1つ(そして、好ましくは、残りの、あらかじめ定義された組み合わせのすべて)が、データ値のうちの1つまたは複数がデータ値のベース集合から導出されるデータ値集合生成方法と、データ値のうちの少なくともいくつかが、ブロック用に生成されたデータ値の集合から導出または補間されるテクスチャエレメントデータ値生成方法とを含む。
【００９７】
当業者であれば理解されるように、テクスチャデータブロック用データ値の集合の生成方法と、個々のテクスチャエレメント用のデータ値を生成するために用いられる方法とを設定する、前述のデータと同様に、他のデータをエンコード済みテクスチャデータに含めることも必要である場合があり(そして実際、典型的には必要であり)、そのデータは、たとえば、ブロック用に生成されたデータ値の集合を使用して、個々のテクスチャエレメント用のデータ値を生成する方法と、ブロックに対して定義されたテクスチャエレメントデータ値生成方法とを厳密に指定するデータである。たとえば、前述のように、2ビットのインデックスを使用してデータ値集合生成モードおよびテクスチャエレメントデータ値生成方法を指定する場合、所与のテクスチャエレメント用の実際のデータ値が導出されることを可能にするさらなる情報を提供することが必要である場合がある。
【００９８】
したがって、特に好ましい実施形態では、本発明のエンコード方法および装置は、ブロック用に生成されたデータ値の集合を使用して、ブロックがエンコードする個々のテクスチャエレメントのそれぞれに使用されるデータ値が生成されることを可能にするデータと、ブロックに対して定義されたテクスチャエレメントデータ値生成方法とを、テクスチャデータブロックに含める段階または手段をさらに含む。
【００９９】
このデータの厳密な本質は、たとえば、ブロック用に生成されたデータ値の集合からテクスチャエレメント用のデータ値を生成するために用いられる方法に応じて変化する。たとえば、個々のテクスチャエレメントのデータ値が、ブロック用に生成されたデータ値の集合から直接取得される場合、このデータは、たとえば、そのようなデータ値のどれを各テクスチャエレメントに使用するかを指定するデータを含むことが可能である(そのデータは、たとえば、テクスチャデータブロック用に生成されたデータ値の集合への、テクスチャエレメントごとのインデックスを含むことが可能であり(そして実際、含むことが好ましい)、または、少なくともそのインデックスが導出されることを可能にする)。一方、たとえば、ブロックによってエンコードされたテクスチャエレメントに使用されるデータ値を、フェーディングパターンを使用して導出する場合は、たとえば、使用される、厳密なフェーディングパターン、および、たとえば、フェーディング方向を指定するデータを含むことも必要になる場合がある(または、含むことが代わりに必要になる場合がある)(たとえば、データ値を生成するために用いられる方法を指定するデータが、フェーディングパターンが使用されるべきであることを指定するだけで、フェーディングパターンの詳細を指定しない場合)。
【０１００】
特に好ましい実施形態では、このデータは、少なくとも、ブロックが表すテクスチャエレメントに使用されるために生成されたデータ値の集合からデータ値を指定する。最も好ましくは、ブロックがエンコードするいくつかのテクスチャエレメントに使用されるデータ値が指定される。一実施形態では、ブロックが表す(エンコードする)すべてのテクスチャエレメントに使用されるデータ値が指定される。これは、たとえば、すべてのテクスチャエレメントに使用されるデータ値が、ブロック用に生成されたデータ値の集合から直接取得される場合には適切であろう。別の構成では、ブロックがエンコードする、選択された数のテクスチャエレメントに使用されるデータ値だけが指定される(たとえば、個々のテクスチャエレメントに使用されるデータ値が、フェーディングパターンまたは補間パスを用いて導出される場合には、「端点」テクスチャエレメント)。このデータは、やはり、そのようなテクスチャエレメントごとのデータ値インデックスの形式で与えられるか、少なくとも、そのようなインデックスが導出されることを可能にする。
【０１０１】
したがって、特に好ましい実施形態では、本発明のテクスチャデータブロックは、ブロックが表すテクスチャエレメントに使用されるデータ値(たとえば、色)の集合の生成方法を指定するデータと、ブロックが表す、指定された1つまたは複数のテクスチャエレメントに対し、生成されたデータ値(たとえば、色)の集合から、どの1つまたは複数のデータ値(たとえば、1つまたは複数の色)を使用するかを指定するデータと、ブロック用に生成されたデータ値(たとえば、色)の集合、および指定された1つまたは複数のテクスチャエレメントに対して指定された1つまたは複数のデータ値(たとえば、1つまたは複数の色)を使用して、ブロックが表す各テクスチャエレメントに使用されるデータ値(たとえば、色)を生成するために用いられる方法を指定するデータと、を含む。
【０１０２】
特に好ましい実施形態では、テクスチャデータブロックは、テクスチャエレメントの8×4配列を好ましくは2つの4×4副配列(またはブロック)としてエンコードする64ビットブロックとしてエンコードされる。エンコードされたデータは、好ましくは、あらかじめ定義されたデータ値集合生成モードおよびテクスチャエレメントデータ値生成方法の、あらかじめ決められた4つの組み合わせの集合のうちのどれを、ブロックによってエンコードされたテクスチャエレメントの再現に使用するかを指定する、2ビットのインデックスと、その次に、個々のテクスチャエレメントに使用されるデータ値を指定する、残りの62ビットと、必要に応じて、エンコード済みテクスチャエレメントの再現時に使用される他のデータ(補間(フェーディング)のパスまたは方向など)と、を含む。最も好ましくは、そのようなテクスチャデータブロックのストリームが、エンコードされ、たとえば、テクスチャデータブロック用のデータ値(の集合)の生成時に使用されるデータ値のベース集合またはパレットを指定するデータブロックとの組み合わせで与えられる。
【０１０３】
本発明のエンコード処理(すなわち、前述の形式のエンコード済みデータブロックの集合を生成する処理)は、任意の好適な様式で、エンコードされるべきオリジナルのテクスチャデータに対して実行されるか、そのオリジナルのテクスチャデータを使用して実行される。たとえば、周知の先行技術の処理の場合と同様に、オリジナルデータは、ブロックに分割されることが可能であり、その各ブロックは、利用可能な(すなわち、実質的には、エンコード済みテクスチャデータブロックが表すことができる)、多様なエンコード方式によってエンコードされる。これにより、可能性があるエンコード済みブロックの集合が与えられ、それらのブロックがオリジナルデータと比較されて、どのエンコード済みバージョン(ブロック)のデータが、オリジナルデータと比較されたときに(再現時の)誤差が最も少ないかが決定される(それによって、エンコード時にそのオリジナルのテクスチャデータブロックに使用されるべきエンコード構成が選択されることが可能である)。
【０１０４】
ここまで、本発明を、特にテクスチャデータのエンコードとの関連で説明してきたが、当業者であれば理解されるように、本発明はまた、逆方向のデコード処理にも拡張される。すなわち、デコード処理では、エンコード済みテクスチャデータブロックを使用して、グラフィックス処理に使用されるテクスチャデータエレメントの配列が生成される。この処理は、本質的にはエンコード処理の逆であり、したがって、たとえば、ブロックに使用されるデータ値(たとえば、色)の集合の生成方法を、エンコード済みテクスチャデータブロックから決定する段階と、そのデータ値(たとえば、色)の集合を生成する段階と、生成されたデータ値(たとえば、色)の集合から、各テクスチャエレメント用のデータ値(たとえば、色)を生成する方法を、エンコード済みテクスチャデータブロックから決定する段階と、それに従って、個々のテクスチャエレメント用のデータ値(たとえば、色)を生成する段階と、を具備する。この処理はさらに、本明細書に記載の、本発明の、様々な、好ましい特徴およびオプションの特徴を含むことが可能であり、実際、含むことが好ましく、それには、たとえば、補間パスまたはフェーディングパターンを使用して、テクスチャエレメントに使用されるデータ値を導出することが含まれる。
【０１０５】
したがって、本発明の第16の態様によれば、グラフィックス処理に使用されるテクスチャデータエレメントの集合をエンコードするテクスチャデータブロックをデコードする方法が提供され、この方法は、
ブロックが表すテクスチャエレメントに使用されるデータ値の集合の生成方法を、テクスチャデータブロックから決定する段階と、
その決定に基づき、ブロックが表すテクスチャエレメントに使用されるデータ値の集合を生成する段階と、
ブロック用に生成されたデータ値の集合を使用して、ブロックが表す各テクスチャエレメントに使用されるデータ値を生成するために用いられる方法を、テクスチャデータブロックから決定する段階と、
ブロック用に生成されたデータ値の集合と、各テクスチャエレメント用のデータ値を生成するために用いられることが決定された方法とを用いて、ブロックが表す各テクスチャエレメントに使用されるデータ値を生成する段階と、を具備する。
【０１０６】
本発明の第17の態様によれば、グラフィックス処理に使用されるテクスチャデータエレメントの集合をエンコードするテクスチャデータブロックをデコードする装置が提供され、この装置は、
ブロックが表すテクスチャエレメントに使用されるデータ値の集合の生成方法を、テクスチャデータブロックから決定する手段と、
その決定に基づき、ブロックが表すテクスチャエレメントに使用されるデータ値の集合を生成する手段と、
ブロック用に生成されたデータ値の集合を使用して、ブロックが表す各テクスチャエレメントに使用されるデータ値を生成するために用いられる方法を、テクスチャデータブロックから決定する手段と、
ブロック用に生成されたデータ値の集合と、各テクスチャエレメント用のデータ値を生成するために用いられることが決定された方法とを用いて、ブロックが表す各テクスチャエレメントに使用されるデータ値を生成する手段と、を具備する。
【０１０７】
本発明の第18の態様によれば、グラフィックス処理に使用されるテクスチャデータエレメントの複数の副集合をエンコードするテクスチャデータブロックをデコードする方法が提供され、この方法は、
テクスチャデータエレメントの各副集合を、テクスチャデータエレメントの他の副集合とは独立に再現する段階を具備する。
【０１０８】
本発明の第19の態様によれば、グラフィックス処理に使用されるテクスチャデータエレメントの複数の副集合をエンコードするテクスチャデータブロックをデコードする装置が提供され、この装置は、
テクスチャデータエレメントの各副集合を、テクスチャデータエレメントの他の副集合とは独立に再現する手段を具備する。
【０１０９】
本発明の第20の態様によれば、グラフィックス処理に使用されるテクスチャデータをエンコードするテクスチャデータブロックをデコードする方法が提供され、この方法は、
テクスチャデータブロック用のデータ値として使用されるデータ値の集合を、独立したデータブロックとしてエンコードされたデータ値の集合から導出する段階を具備する。
【０１１０】
本発明の第21の態様によれば、グラフィックス処理に使用されるテクスチャデータをエンコードするテクスチャデータブロックをデコードする装置が提供され、この装置は、
テクスチャデータブロック用のデータ値として使用されるデータ値の集合を、独立したデータブロックとしてエンコードされたデータ値の集合から導出する手段を具備する。
【０１１１】
本発明の第22の態様によれば、グラフィックス処理に使用されるテクスチャデータエレメントの複数の副集合をエンコードするテクスチャデータブロックをデコードする方法が提供され、この方法は、
テクスチャデータブロック用のデータ値として使用されるデータ値の集合を、独立したデータブロックとしてエンコードされたデータ値の集合から導出する段階と、
テクスチャデータブロックによってエンコードされたテクスチャデータの各副集合に固有のデータと、テクスチャデータブロックによってエンコードされたテクスチャデータの副集合によって共有されるデータとを、エンコード済みテクスチャデータブロックから導出する段階と、を具備する。
【０１１２】
本発明の第23の態様によれば、グラフィックス処理に使用されるテクスチャデータエレメントの複数の副集合をエンコードするテクスチャデータブロックをデコードする装置が提供され、この装置は、
テクスチャデータブロック用のデータ値として使用されるデータ値の集合を、独立したデータブロックとしてエンコードされたデータ値の集合から導出する手段と、
テクスチャデータブロックによってエンコードされたテクスチャデータの各副集合に固有のデータと、テクスチャデータブロックによってエンコードされたテクスチャデータの副集合によって共有されるデータとを、エンコード済みテクスチャデータブロックから導出する手段と、を具備する。
【０１１３】
本発明の第24の態様によれば、グラフィックス処理に使用されるテクスチャデータエレメントの集合をエンコードするテクスチャデータのブロックをデコードする方法が提供され、この方法は、
テクスチャデータブロックがエンコードする少なくとも1つのテクスチャエレメントに使用されるデータ値を、テクスチャデータブロックがエンコードするいくつかのテクスチャエレメントをカバーするパスに沿うそのテクスチャエレメントの位置に基づいて、そのテクスチャエレメントに使用されるデータ値を補間することによって、決定する段階を具備する。
【０１１４】
本発明の第25の態様によれば、グラフィックス処理に使用されるテクスチャデータエレメントの集合をエンコードするテクスチャデータのブロックをデコードする装置が提供され、この装置は、
テクスチャデータブロックがエンコードする少なくとも1つのテクスチャエレメントに使用されるデータ値を、テクスチャデータブロックがエンコードするいくつかのテクスチャエレメントをカバーするパスに沿うそのテクスチャエレメントの位置に基づいて、そのテクスチャエレメントに使用されるデータ値を補間することによって、決定する手段を具備する。
【０１１５】
本発明のこれらの態様および構成は、本明細書に記載の、本発明の好ましい特徴および実施形態のうちの任意の1つまたは複数、またはすべてを、必要に応じて含むことが可能である。たとえば、デコード済みブロックに使用されるデータ値の集合は、それらのデータ値をデータ値のベース集合から直接取得すること、および/またはそれらのデータ値をデータ値のベース集合から導出することによって、生成されることが可能である。同様に、個々のテクスチャエレメントのデータ値は、それらを、ブロック用に生成されたデータ値の集合から直接取得すること、またはそれらのデータ値をそのデータ値の集合から導出することによって、生成されることが可能である。
【０１１６】
前述の内容から理解されるように、これらのデコード構成では、テクスチャデータブロック用および各テクスチャエレメント用に使用されるデータ値の集合用に生成される実際のデータ値は、(たとえば、それらのフォーマット、およびそれらが表すものに関しては)やはり、エンコードされるテクスチャデータの性質に依存する。したがって、たとえば、色データや色マップの場合には、各データ値は、所与の色を表し、たとえば、色値(RGB値やRGBa値など)の集合を含むのに対し、輝度マップの場合には、各データ値は、単一の輝度値その他を含み、表すことが可能である。
【０１１７】
本発明の方法および装置は、任意の適切な様式で(たとえば、ハードウェアまたはソフトウェアのかたちで)、かつ、任意の適切なデバイスまたは部品のかたちで(かつ、これらに含まれて)、実装されることが可能である。好ましい実施形態では、それらはグラフィックスプロセッサ内に実装され、したがって、本発明はさらに、本発明の方法を用いるように構成されたグラフィックスプロセッサ、または本発明の装置を含むグラフィックスプロセッサに拡張される。好ましい実施形態では、本発明の方法および装置は、ハードウェアのかたちで実装され、好ましくは、単一の半導体プラットフォーム上に実装される。
【０１１８】
ここまで、本発明を、特にグラフィックスプロセッサ用のテクスチャデータのエンコード(およびデコード)との関連で説明してきたが、当業者であれば理解されるように、本発明は、他の形式のデータのエンコードおよびデコードにも同様に適用可能であり、特に、(同様の)データエレメント(たとえば、値が、共通または類似のフォーマットに従うか、かつ/または、類似または同一の目的に使用されるか使用されることが可能であるか、または類似の情報を表すデータエレメント)の配列またはブロックの形式である(またはその形式で表されることが可能である)データに適用可能である。これは特に、ランダムアクセスが必要なデータのエンコードに適用可能である。
【０１１９】
そのような「非グラフィックス」データは、たとえば、シミュレーションに使用されるベクトルフィールド、流体の流れ方向や衝撃の跳ね返り方向などを表すデータ(このデータは、たとえば、グラフィックスデータに関連して前述された法線マップ(バンプマップ)と類似している)、熱マップ、音データなどを含むことが可能である。
【０１２０】
そのような構成では、データは、本明細書に記載のテクスチャデータと類似する様式でエンコードおよびデコードされることが可能である。
【０１２１】
したがって、本発明の第26の態様によれば、データエレメントの集合をエンコードする方法が提供され、この方法は、
データエレメントの集合を、データのブロックとしてエンコードする段階と、
データブロックの中に、
ブロックが表すデータエレメントに使用されるデータ値の集合の生成方法を指定するデータと、
ブロックが表す各データエレメントに使用されるデータ値を、ブロック用に生成されたデータ値の集合を使用して生成するために用いられる方法を指定するデータと、を具備する。
【０１２２】
本発明の第27の態様によれば、データエレメントの集合をエンコードする装置が提供され、この装置は、
データエレメントの集合を、データのブロックとしてエンコードする手段と、
ブロックが表すデータエレメントに使用されるデータ値の集合の生成方法を指定するデータを、データブロックの中に含める手段と、
ブロックが表す各データエレメントに使用されるデータ値を、ブロック用に生成されたデータ値の集合を使用して生成するために用いられる方法を指定するデータを、データブロックの中に含める手段と、を具備する。
【０１２３】
本発明の第28の態様によれば、データエレメントの集合を表すデータのブロックが提供され、このブロックは、
ブロックが表すデータエレメントに使用されるデータ値の集合の生成方法を指定するデータと、
ブロックが表す各データエレメントに使用されるデータ値を、ブロック用に生成されたデータ値の集合を使用して生成するために用いられる方法を指定するデータと、を具備する。
【０１２４】
本発明の第29の態様によれば、データエレメントの集合をエンコードする方法が提供され、この方法は、
データエレメントの集合を、そのようなエレメントの、複数の副集合に分割する段階と、
データエレメントの集合を、単一のデータブロックとしてエンコードする段階であって、その単一のデータブロックにおいてデータエレメントの各副集合が、データエレメントの他の副集合とは独立に再現される、段階と、を具備する。
【０１２５】
本発明の第30の態様によれば、データエレメントの集合をエンコードする装置が提供され、この装置は、
データエレメントの集合を、そのようなエレメントの、複数の副集合に分割する手段と、
データエレメントの集合を、単一のデータブロックとしてエンコードする手段であって、その単一のデータブロックにおいてデータエレメントの各副集合が、データエレメントの他の副集合とは独立に再現される、手段と、を具備する。
【０１２６】
本発明の第31の態様によれば、データエレメントの集合を表すエンコード済みデータのブロックが提供され、このブロックは、
2つ以上の、データの集合を具備し、データの各集合は、データエレメントの集合の他の副集合とは独立に再現される、データエレメントの集合の副集合を表す。
【０１２７】
本発明の第32の態様によれば、データをエンコードする方法が提供され、この方法は、
データを表すデータ値の集合を決定し、そのデータの集合をデータブロックとしてエンコードする段階と、
そのデータを複数のブロックに分割する段階と、
各データブロックを、独立したエンコード済みデータブロックとしてエンコードし、そのような各エンコード済みデータブロックの中に、当該エンコード済みデータブロックに使用されるべき1つまたは複数のデータ値をデータ値データブロックから指定するデータを含める段階と、を具備する。
【０１２８】
本発明の第33の態様によれば、データをエンコードする装置が提供され、この装置は、
データを表すデータ値の集合を決定し、そのデータ値の集合をデータブロックとしてエンコードする手段と、
そのデータを複数のブロックに分割する手段と、
各データブロックを、独立したエンコード済みデータブロックとしてエンコードし、そのような各エンコード済みデータブロックの中に、当該エンコード済みデータブロックに使用されるべき1つまたは複数のデータ値をデータ値データブロックから指定するデータを含める手段と、を具備する。
【０１２９】
本発明の第34の態様によれば、エンコード済みデータの集合が提供され、この集合は、
エンコード済みデータの集合に使用されるデータ値の集合をエンコードするデータブロックと、
それぞれが、データの集合の副集合をエンコードし、それぞれが、当該のデータ副集合に使用されるべき1つまたは複数のデータ値をデータ値データブロックから指定するデータを含む、複数のデータブロックと、を具備する。
【０１３０】
本発明の第35の態様によれば、データをエンコードする方法が提供され、この方法は、
データを、データの複数の副集合に分割する段階と、
データを複数のデータブロックとしてエンコードする段階であって、各データブロックが、データの副集合のうちの2つ以上をエンコードし、データの各副集合に固有のデータと、データブロックによってエンコードされたデータの副集合によって共有されるデータとを含む、段階と、
データブロックによって共有されるデータを含むデータブロックをエンコードする段階と、を具備する。
【０１３１】
本発明の第36の態様によれば、データをエンコードする装置が提供され、この装置は、
データを、データの複数の副集合に分割する手段と、
データを複数のデータブロックとしてエンコードする手段であって、各データブロックが、データの副集合のうちの2つ以上をエンコードし、データの各副集合に固有のデータと、データブロックによってエンコードされたデータの副集合によって共有されるデータとを含む、手段と、
データブロックによって共有されるデータを含むデータブロックをエンコードする手段と、を具備する。
【０１３２】
本発明の第37の態様によれば、エンコード済みデータの集合が提供され、この集合は、
複数のデータブロックであって、各データブロックが、データの2つ以上の副集合をエンコードし、データの各副集合に固有のデータと、データブロックによってエンコードされたデータの副集合によって共有されるデータとを含む、複数のデータブロックと、
データブロックによって共有されるデータを含むデータブロックと、を具備する。
【０１３３】
本発明の第38の態様によれば、データエレメントの集合をエンコードする方法が提供され、この方法は、
データエレメントの集合を、テクスチャデータブロックとしてエンコードする段階と、
データブロックがエンコードするいくつかのデータエレメントをカバーする1つまたは複数のパスであって、その上でデータエレメント用のデータ値が補間される1つまたは複数のパスを指定するデータを、データブロックに含める段階と、を具備する。
【０１３４】
本発明の第39の態様によれば、データエレメントの集合をエンコードする装置が提供され、この装置は、
データエレメントの集合を、データブロックとしてエンコードする手段と、
データブロックがエンコードするいくつかのエレメントをカバーする1つまたは複数のパスであって、その上でデータエレメント用のデータ値が補間される1つまたは複数のパスを指定するデータを、データブロックに含める手段と、を具備する。
【０１３５】
本発明の第40の態様によれば、データエレメントの集合をエンコードするデータブロックが提供され、このブロックは、
データブロックがエンコードするいくつかのデータエレメントをカバーする1つまたは複数のパスであって、その上でデータエレメント用のデータ値が補間される1つまたは複数のパスを指定するデータを具備する。
【０１３６】
本発明の第41の態様によれば、データエレメントの集合をエンコードするデータブロックをデコードする方法が提供され、この方法は、
ブロックが表すデータエレメントに使用されるデータ値の集合の生成方法を、データブロックから決定する段階と、
その決定に基づき、ブロックが表すデータエレメントに使用されるデータ値の集合を生成する段階と、
ブロック用に生成されたデータ値の集合を使用して、ブロックが表す各データエレメントに使用されるデータ値を生成するために用いられる方法を、データブロックから決定する段階と、
ブロック用に生成されたデータ値の集合と、各データエレメント用のデータ値を生成するために用いられることが決定された方法とを用いて、ブロックが表す各データエレメントに使用されるデータ値を生成する段階と、を具備する。
【０１３７】
本発明の第42の態様によれば、データエレメントの集合をエンコードするデータブロックをデコードする装置が提供され、この装置は、
ブロックが表すデータエレメントに使用されるデータ値の集合の生成方法を、データブロックから決定する手段と、
その決定に基づき、ブロックが表すデータエレメントに使用されるデータ値の集合を生成する手段と、
ブロック用に生成されたデータ値の集合を使用して、ブロックが表す各データエレメントに使用されるデータ値を生成するために用いられる方法を、データブロックから決定する手段と、
ブロック用に生成されたデータ値の集合と、各データエレメント用のデータ値を生成するために用いられることが決定された方法とを用いて、ブロックが表す各データエレメントに使用されるデータ値を生成する手段と、を具備する。
【０１３８】
本発明の第43の態様によれば、データエレメントの複数の副集合をエンコードするデータブロックをデコードする方法が提供され、この方法は、
データエレメントの各副集合を、データエレメントの他の副集合とは独立に再現する段階を具備する。
【０１３９】
本発明の第44の態様によれば、データエレメントの複数の副集合をエンコードするデータブロックをデコードする装置が提供され、この装置は、
データエレメントの各副集合を、データエレメントの他の副集合とは独立に再現する手段を具備する。
【０１４０】
本発明の第45の態様によれば、複数のデータをエンコードするデータブロックをデコードする方法が提供され、この方法は、
データブロック用のデータ値として使用されるデータ値の集合を、独立したデータブロックとしてエンコードされたデータ値の集合から導出する段階を具備する。
【０１４１】
本発明の第46の態様によれば、複数のデータをエンコードするデータブロックをデコードする装置が提供され、この装置は、
データブロック用のデータ値として使用されるデータ値の集合を、独立したデータブロックとしてエンコードされたデータ値の集合から導出する手段を具備する。
【０１４２】
本発明の第47の態様によれば、データの複数の副集合をエンコードするデータブロックをデコードする方法が提供され、この方法は、
データブロック用のデータ値として使用されるデータ値の集合を、独立したデータブロックとしてエンコードされたデータ値の集合から導出する段階と、
データブロックによってエンコードされたデータの各副集合に固有のデータと、データブロックによってエンコードされたデータの副集合によって共有されるデータとを、エンコード済みデータブロックから導出する段階と、を具備する。
【０１４３】
本発明の第48の態様によれば、データの複数の副集合をエンコードするデータブロックをデコードする装置が提供され、この装置は、
データブロック用のデータ値として使用されるデータ値の集合を、独立したデータブロックとしてエンコードされたデータ値の集合から導出する手段と、
データブロックによってエンコードされたデータの各副集合に固有のデータと、データブロックによってエンコードされたデータの副集合によって共有されるデータとを、エンコード済みデータブロックから導出する手段と、を具備する。
【０１４４】
本発明の第49の態様によれば、データエレメントの集合をエンコードするデータのブロックをデコードする方法が提供され、この方法は、
データブロックがエンコードする少なくとも1つのデータエレメントに使用されるデータ値を、データブロックがエンコードするいくつかのデータエレメントをカバーするパスに沿うそのデータエレメントの位置に基づいて、そのデータエレメントに使用されるデータ値を補間することによって、決定する段階を具備する。
【０１４５】
本発明の第50の態様によれば、データエレメントの集合をエンコードするデータのブロックをデコードする装置が提供され、この装置は、
データブロックがエンコードする少なくとも1つのデータエレメントに使用されるデータ値を、データブロックがエンコードするいくつかのデータエレメントをカバーするパスに沿うそのデータエレメントの位置に基づいて、そのデータエレメントに使用されるデータ値を補間することによって、決定する手段を具備する。
【０１４６】
やはり、本発明のこれらの態様および実施形態は、本明細書に記載の、本発明の好ましい特徴およびオプションの特徴のうちの任意の1つまたは複数、またはすべてを、必要に応じて含むことが可能である。したがって、たとえば、デコード済みブロックに使用されるデータ値の集合は、それらのデータ値をデータ値のベース集合から直接取得すること、および/またはそれらのデータ値をデータ値のベース集合から導出することによって、生成されることが可能である。同様に、個々のデータエレメントのデータ値は、それらを、ブロック用に生成されたデータ値の集合から直接取得すること、またはそれらのデータ値をそのデータ値の集合から導出することによって、生成されることが可能である。
【０１４７】
当業者であれば理解されるように、本明細書に記載の、本発明のすべての態様および実施形態は、本明細書に記載の、本発明の好ましい特徴およびオプションの特徴のうちの任意の1つまたは複数、またはすべてを、必要に応じて含むことが可能である。
【０１４８】
本発明による方法は、少なくとも部分的には、ソフトウェア(たとえば、コンピュータプログラム)により実装可能である。したがって、本発明を別の面から見た場合、本発明は、データ処理手段にインストールされた場合に、本明細書に記載の方法を実施するように特に適合されたコンピュータソフトウェアと、データ処理手段上で実行された場合に、本明細書に記載の方法を実施するコンピュータソフトウェアコード部分を具備するコンピュータプログラムエレメントと、データ処理システム上で実行された場合に、本明細書に記載の1つまたは複数の方法のすべての段階を実施するように適合されたコード手段を具備するコンピュータプログラムと、を提供することが理解されるであろう。本発明はさらに、データ処理手段を具備するデータエンコードまたはデコードシステムを操作するために用いられる場合に、前記データ処理手段とともに、本発明の方法の諸段階を前記システムに実施させるようなソフトウェアを含むコンピュータソフトウェア運搬体に拡張される。そのようなコンピュータソフトウェア運搬体は、ROMチップ、CD-ROM、またはディスクのような物理的記憶媒体であることが可能であり、または、ワイヤを伝わる電子信号、光信号、または衛星などに向けられるような無線信号のような信号であることも可能である。
【０１４９】
さらに理解されるように、本発明の方法のすべての段階がコンピュータソフトウェアによって実施されなければならないわけではなく、したがって、さらに広い面から見ると、本発明は、本明細書に記載の方法の諸段階のうちの1つを少なくとも実施する、コンピュータソフトウェアおよびコンピュータソフトウェア運搬体にインストールされるそのようなソフトウェアを提供する。
【０１５０】
本発明は、したがって、コンピュータシステムとともに使用されるコンピュータプログラム製品として、適切に実施されることが可能である。そのような実施態様は、コンピュータ可読媒体(たとえば、ディスケット、CD-ROM、ROM、またはハードディスク)のような有形媒体に固定されるか、モデムまたは他のインターフェースデバイスを介して、光通信線またはアナログ通信線を含み、これらに限定されない有形媒体を通るか、マイクロ波、赤外線、または他の伝送技術を含み、これらに限定されない無線技術を用いて無形の形態で、コンピュータシステムに伝送されることが可能な、一連のコンピュータ可読命令を具備することが可能である。この一連のコンピュータ可読命令は、本明細書で既に説明された機能性のすべてまたは一部を実施する。
【０１５１】
当業者であれば理解されるように、そのようなコンピュータ可読命令は、多様なコンピュータアーキテクチャまたはオペレーティングシステムで使用される複数のプログラミング言語で書かれることが可能である。さらに、そのような命令は、半導体、磁気、または光を含み、これらに限定されない、現行または今後の任意のメモリ技術を用いて保存されるか、光、赤外線、またはマイクロ波を含み、これらに限定されない、現行または今後の任意の通信技術を用いて伝送されることが可能である。そのようなコンピュータプログラム製品は、印刷文書または電子文書を添付されたリムーバブル媒体(たとえば、収縮包装されたソフトウェア)として販売されるか、コンピュータシステムの、たとえば、システムROMまたは固定ディスクにプリロードされるか、ネットワーク(たとえば、インターネットまたはワールドワイドウェブ)を介してサーバまたは電子掲示板から配布されることが可能であることが想定される。
【０１５２】
以下では、添付図面を参照しながら、本発明の、いくつかの好ましい実施形態を、あくまで例として説明する。
【図面の簡単な説明】
【０１５３】
【図１】本発明の実施形態による、複数のエンコード済みデータブロックとしての、画像データの配列のエンコードを概略的に示す図である。
【図２】本発明の、記載された好ましい実施形態における、画像が分割された各ブロックのエンコード順序を概略的に示す図である。
【図３】本発明の好ましい実施形態による、エンコード済みデータの基本的なデコード処理を示す図である。
【図４】本発明の好ましい実施形態において用いられる色生成プロセスを概略的に示す図である。
【図５】本発明の好ましい実施形態において用いられる色補間処理を概略的に示す図である。
【発明を実施するための形態】
【０１５４】
以下では、色マップの形式でグラフィックス処理に用いるテクスチャデータ(すなわち、色データ)のエンコードに関して、本発明の好ましい実施形態について説明する。しかしながら、前述のように、かつ、当業者であれば理解されるように、本発明は、一般的なデータエンコードおよびデコードに適用可能であり、したがって、本実施例のテクスチャ色データエンコードに限定されると見なされるべきではない。
【０１５５】
図１は、本実施形態の基本的なエンコード処理を示す。図１に示すように、テクスチャデータエレメント(テクセル)のオリジナル画像または配列1(テクスチャ「マップ」)を、複数の8×4テクスチャエレメントブロック2に細分する。8×4テクスチャエレメントブロック2のそれぞれは、2つの4×4テクスチャエレメントサブブロック3、4をエンコードする。
【０１５６】
本実施形態では、オリジナルテクスチャマップデータ配列(画像)内の各テクスチャエレメントが、それぞれのテクスチャエレメントの場所で使用される色を表し、したがって、その場所に、色値(たとえば、赤、緑、青(RGB))と、オプションでアルファ値(透過度)との集合を含むデータ値を割り当てている。言い換えると、本実施形態では、エンコード、生成、その他が行われるデータ値は、それぞれが色(色値の集合)に対応し、色を表す。したがって、以降の説明では、便宜上、主として「色」について言及するが、そのような言及は、当該の色を表す色値の集合を含むデータ値を示すことを理解されたい。
【０１５７】
本実施形態では、色データの配列をその完全なオリジナルの形式で保存するのではなく、各8×4テクスチャエレメントブロック2を、そのオリジナルの未エンコード形式のテクスチャデータに比べてサイズが小さいテクスチャデータブロック5にエンコードする。これにより、オリジナルのテクスチャデータは実質的に圧縮され、その保存および処理が、より容易かつ効率的になる。
【０１５８】
エンコードされ、サイズが小さくなった各テクスチャデータブロック5は、当該技術分野において周知のとおり、当該の8×4テクスチャエレメントブロックのオリジナルの未エンコードデータに対応するデータ(またはそれを表すデータ)を再現することが可能であるための、十分かつ適切なデータを含まなければならない。
【０１５９】
本実施形態では、これを達成するために、特に、かつ、本発明に従って、エンコード済みデータブロック5が表すテクスチャエレメントに使用される色(すなわち、色値)の集合の生成方法を指定するデータと、さらに、その生成された色集合を使用して個々のテクスチャエレメントの色を生成するために用いられる方法を指定するデータとを、各エンコード済みテクスチャデータブロック5に含める。各エンコード済みテクスチャブロック5はさらに、そのブロックがエンコードする個々のテクスチャエレメントのそれぞれの色がデコード処理(後述)において再現されることを可能にするために必要な他の情報を含む。
【０１６０】
したがって、図１に示されるように、各エンコード済みテクスチャデータブロック5は、いくつかのデータフィールド、すなわち、方法および色モードを定義する2ビットと、色データを定義する22または24ビットと、8×4テクスチャエレメントブロックの第1の4×4サブブロックのデータを定義する20または19ビットと、テクスチャデータブロック5によってエンコードされる第2の4×4サブブロックのデータを定義する20または19ビットと、を含む。
【０１６１】
後で詳述するように、本実施形態における各エンコード済みテクスチャデータブロックの「方法および色モード」フィールドは、エンコード済みブロックに使用される色集合の生成方法と、その色集合を使用して、そのブロックがエンコードした個々のテクスチャエレメントのそれぞれの色を生成するために用いられる方法と、を定義する。色データフィールドは、(典型的には)テクスチャデータブロックがエンコードする4×4サブブロックによって共有される(両4×4サブブロックに使用される)色テーブル(パレット)インデックスおよびデルタ値(後述)を定義し、サブブロックデータフィールドは、各エンコード済み4×4サブブロックに固有のデータ(たとえば、後述されるように、テクスチャエレメント色のフェード方向および色インデックスなど)を定義する。本実施形態の色モード0(後述)では、色データフィールドに22ビットがあり、各サブブロックデータフィールドに20ビットがある。他の色モードでは、色データフィールドに24ビットがあり、各サブブロックデータフィールドに19ビットがある。
【０１６２】
各エンコード済みテクスチャデータブロック5は、64ビットを使用してその8×4テクスチャエレメントブロックをエンコードし、したがって、エンコードレートは、オリジナルのテクスチャエレメントあたり2ビットである(しかしながら、他の構成も、もちろん可能である)。
【０１６３】
本実施形態では、前述のように、オリジナルの、テクスチャデータエレメントのテクスチャマップ(配列)1を複数の8×4ブロック2に細分し、それらをそれぞれ、個々のテクスチャデータブロック5としてエンコードするだけでなく、ベース色(またはプライマリ色)の集合(色テーブル)を、テクスチャデータ配列(マップ)のエンコード用として生成する。このプライマリ色テーブルは、オリジナルデータにある色を最もよく表すために見つけられた64色の集合を定義し、後で詳述されるように、個々のエンコード済みテクスチャデータブロック5のそれぞれを再現する際に使用される色を生成するために使用される。
【０１６４】
プライマリ色テーブルで定義された64色は、たとえば、オリジナルのテクスチャエレメント配列にある色を解析し、そこから64色の適切に代表的な集合を選択することによって、所望どおりに選択および生成されることが可能である。
【０１６５】
本実施形態では、すべてのミップマップを含む画像全体が同じ単一のプライマリ色テーブルを使用するように、プライマリ色テーブルは、(すべてのミップマップを含む)画像全体から導出される。
【０１６６】
このプライマリ色テーブルは、画像のテクスチャデータエレメントを表す一連のエンコード済みテクスチャデータブロックの前にあるヘッダデータブロックに保存され、それぞれが16ビット精度で定義された64個の「プライマリ」色からなる。色の数、および色の精度の両方に関して、他の構成も、もちろん可能である。
【０１６７】
本実施形態では、プライマリ色テーブルを定義するヘッダは、136バイトからなり、以下の基本フォーマットを有する。
【０１６８】
【表１】
0005419947.tif 000002
【０１６９】
このヘッダでは、データフィールド「マジック」は、ファイルの識別に用いられる。
【０１７０】
第3のバイト「ファイルフォーマットバージョン」は、ファイルフォーマットを定義し、特に、プライマリ色の定義のされ方を定義する。本実施形態では、この「ファイルフォーマットバージョン」データフィールドは、次の値のいずれかを有することが可能である。
【０１７１】
【表２】
0005419947.tif 000003
【０１７２】
したがって、プライマリ色テーブルにおけるプライマリ色は、RGB565値として定義されるか、RGBA4444値として定義されることが可能である。
【０１７３】
第4のバイトは、ミップマップサイズを定義する。
【０１７４】
ここで、本実施形態においては、エンコード済みテクスチャデータをミップマップの形式(すなわち、オリジナルのテクスチャデータ配列の、それぞれが異なるレベルのディテール(分解能)を有する複数のバージョンを、使用のために保存する形式)で保存することが可能であり、そのように保存することが好ましいことに注意されたい。ミップマップは、メモリ内に互いに順々に保存されることが好ましく、各ミップマップレベルは、当該技術分野において周知のとおり、オリジナル配列(画像)の(2倍単位で)ダウンスケールされた表現(画像)である。ミップマップは、分解能が低くなる順(すなわち、n×n、・・・、16×16、8×8、4×4、2×2、1×1)に保存される。小さなミップマップ(<8×8)は、それぞれが個別に、別々のエンコード済みデータブロックに保存される。
【０１７５】
ミップマップサイズは、log2(幅)で定義される。(本実施形態では、正方形のミップマップだけがサポートされるように)ミップマップの高さは、定義された幅と等しく設定される。
【０１７６】
第5のバイトは、「ミップマップが存在」フィールドであり、「0」または「1」の値を有することが可能である(それ以外の値は違反である)。この「ミップマップが存在」バイトの値が「1」であることは、分解能がだんだん低くなる、一連のエンコード済みテクスチャマップ(すなわち、テクスチャデータ配列)が、現ファイルの最後において分解能1×1まで続くこと(すなわち、ミップマップの集合が存在すること)を示す。
【０１７７】
バイト6および7は予約されており、値「0」を有するように設定される。
【０１７８】
残りのバイトは、プライマリ色テーブルを構成する64個のプライマリ色を定義する。
【０１７９】
プライマリ色テーブルを定義し、これをデータブロックとして提供することについて、他の構成を使用することも、もちろん可能である。
【０１８０】
したがって、本実施形態では、各エンコード済みテクスチャデータファイルは、特に、エンコード済みテクスチャデータに使用されるプライマリ色テーブルを定義する、前述の形式のヘッダと、その後に、テクスチャデータエレメントの配列(画像データ)をエンコードした個々のテクスチャデータブロックのシーケンスと、を含む。これを以下に示す。
【０１８１】
【表３】
0005419947.tif 000004
【０１８２】
ファイル内のテクスチャデータブロックの数は、エンコードされるテクスチャマップ(テクスチャデータ配列)のサイズと、データがミップマップ形式で保存されるかどうかに依存する。ミップマップが使用される場合、テクスチャマップ分解能の第1のレベルが「n」個のテクスチャデータブロックを使用してエンコードされるとすると、その下のミップマップレベルのテクスチャデータブロックは「n/4」個であり、次のミップマップでは「n/16」個のブロックであり、その次は「n/64」個であり、さらにその次は「n/256」個であり、以降も、サイズ1×1のミップマップレベルに達するまで同様に続く(ただし、各レベルとも1ブロック以上である)。
【０１８３】
したがって、たとえば、256×256配列のテクスチャデータエレメント(テクセル)からなるテクスチャマップを、ミップマップが存在するとしてエンコードする場合、エンコード済みテクスチャデータファイルは、とりわけ、データ値(たとえば、色)のベース集合またはプライマリ集合をエンコードしたヘッダデータブロックと、その後に、フルサイズのテクスチャマップ(256×256配列)をエンコードした、4096個のテクスチャデータブロックのシーケンスを含み、その後に、128×128ミップマップをエンコードした、1024個のテクスチャデータブロックと、64×64ミップマップをエンコードした、256個のテクスチャデータブロックと、32×32ミップマップをエンコードした、64個のテクスチャデータブロックと、16×16ミップマップをエンコードした、8個のテクスチャデータブロックと、8×8ミップマップをエンコードした、2個のテクスチャデータブロックと、4×4ミップマップをエンコードした、1個のテクスチャデータブロックと、2×2ミップマップをエンコードした、1個のテクスチャデータブロックと、1×1ミップマップをエンコードした、1個のテクスチャデータブロックと、を含む。
【０１８４】
本実施形態では、データブロック内のすべてのマルチバイト値が、リトルエンディアンのバイト順で保存される。したがって、たとえば、個々のテクスチャデータエレメントブロックのそれぞれが、リトルエンディアンの64ビット値として保存される。しかしながら、他の構成も、もちろん可能である。
【０１８５】
本発明では、個々のテクスチャデータブロックはさらに、テクスチャデータブロックによってエンコードされた4×4テクスチャエレメントサブブロックがモートン順序になるように、並べられる。したがって、テクセル位置がx,yであって、x15〜x0およびy15〜y0がx,yの各ビットであれば、ブロック位置(バイト単位)はy15x15y14x14...y3x3y2<<2であり、ブロック内のテクセル位置はx2y1x1y0x0である。このブロックレイアウトの、32×32配列(マップ)の場合の例を、図２に示す。
【０１８６】
ここで個々のエンコード済みテクスチャデータブロックに戻ると、前述のように、これらのブロックに含まれる「方法および色モード」データフィールドは、第1に、エンコード済みテクスチャデータブロックに使用される色集合の生成方法を定義し、第2に、テクスチャエレメントブロックが再現されるとき(すなわち、ブロックがデコードされるとき)に、テクスチャエレメントブロック用に生成された色集合を使用して、個々のテクスチャエレメントに使用される色を生成するために用いられる方法を定義する、2ビットフィールドである。本実施形態では、4つの異なる色集合生成モードを、個々のテクスチャエレメントの色を生成する2つの異なる基本方法とともに、示すことが可能である。これら4つの色集合生成モードおよび2つの色生成方法のどれを使用するかは、次のように、2ビットの「方法および色モード」データフィールドによって指定される。
【０１８７】
【表４】
0005419947.tif 000005
【０１８８】
後で詳述するように、2ビットの「方法および色モード」データフィールドで指定される色モードは、基本的に、当該のテクスチャデータブロック5がエンコードするテクスチャエレメントを再現するときに使用される4つの色の集合を生成するための処理を指定する。4つの色モードのそれぞれは、基本的に、(前述のように)エンコードされるべき画像またはテクスチャデータエレメント配列について既に定義されているプライマリ色(ベース色)集合から選択された1つまたは複数の色を使用して、4つの色の集合を生成する。
【０１８９】
本実施形態では、色モード0は、テクスチャデータブロック用の色集合を、事前定義されたプライマリ色テーブルからそれらの色を直接取得することによって生成する(すなわち、プライマリ色テーブルへの直接マッピングを使用する)のに対し、色モード1〜3は、それらの4つの色の集合を、プライマリ色テーブルから2つ、3つ、または4つの色を直接取得することによって、かつ、プライマリ色テーブルから直接取得された色を補間または調節して1つまたは複数の追加色を生成することによって、生成する。各エンコード済みテクスチャデータブロックに対して、これらの異なるモードの色集合生成を行うことが可能であることにより、デコード処理は、ベース色(プライマリ色)テーブルの色表現より高い精度の色を再構築することが可能である。
【０１９０】
前述のように、テクスチャデータブロックの「方法および色モード」データフィールドで定義された方法は、(テクスチャデータブロックによってエンコードされたテクスチャエレメントを再現するために使用される4つの色の集合が、定義された色モードに従って生成された後)テクスチャデータブロックがエンコードする個々のテクスチャエレメントのそれぞれに使用される色を生成するために用いられる。
【０１９１】
本実施形態では、2つの色生成方法を定義することが可能である。第1のそのような方法(方法0)では、各テクスチャエレメントに対し、そのテクスチャデータブロック用に生成された色集合から直接取得された色を使用する。この場合、各テクスチャデータエレメントは、実質的には、テクスチャデータブロック用に生成された4つの色から選択するためのインデックスである。この、個々のテクスチャエレメントの色生成方法は、(典型的には、人工的なドローイングに見られるように)多数の異なる色を有し、周波数が高い配列の場合に非常に効果的であることがわかっており、本実施形態では、色集合生成モード0との組み合わせで使用される。
【０１９２】
第2のテクスチャエレメント色生成方法(方法1)では、テクスチャデータブロック用に生成された4つの色から補間または導出された色を使用する。具体的には、本実施形態では、テクスチャデータブロックによってエンコードされた各4×4テクスチャエレメントサブブロックにおいて、半数のテクスチャエレメントが、それらの色を、テクスチャデータブロック用に生成された4つの色の集合から直接選択するが、残りのテクスチャエレメントの色は、それらの色から、そのサブブロック用に指定されているフェーディングパターン(実際には、8つの異なる事前定義済みフェーディングパターンのうちの1つ)で補間することによって生成される。この色生成方法は、写真のようにリアルなテクスチャのような、多数の類似色を有し、周波数が低いテクスチャエレメントブロックの再構築に、より適することがわかっており、本実施形態では、色集合生成モード1〜3との組み合わせで使用される。
【０１９３】
これらの配列については、後で詳述する。
【０１９４】
したがって、この、色集合生成モードとテクスチャエレメント色生成方法との組み合わせは、任意に与えられた8×4テクスチャエレメントブロックが、プライマリ色テーブルを使用してオリジナルのテクスチャエレメントの色を最もよく表す色を再構築する、4つの異なる方法の1つを使用してエンコードされることを可能にし、さらにオプションで、(たとえば、鋭いエッジを有する画像の場合に)色を、エンコード済みテクスチャデータブロック用に生成された色集合から、テクスチャデータブロックがエンコードする個々のテクスチャエレメントに直接マッピングすること、または、個々のテクスチャデータブロック用に生成された4つの色の集合の中の再構築された色および追加色から選択されたいくつかのシェーディングパターンまたはフェーディングパターンの1つを使用することを可能にする。
【０１９５】
他の構成を使用することも、もちろん可能であり、たとえば、より多くの色集合生成モードおよびテクスチャエレメント色生成方法を定義すること、またはそのようなモードおよび方法の組み合わせを変えることなどが可能である。
【０１９６】
前述の内容からわかるように、本実施形態の基本的なデコード処理では、最初に、エンコード済みテクスチャデータブロックの「方法および色モード」データフィールドで指定された色集合生成モードを使用して、エンコード済みテクスチャデータブロック用の色集合を生成し、次に、その生成された色集合を使用し、「方法および色モード」データフィールドで指定されたテクスチャエレメント色生成方法を使用して、ブロックがエンコードする個々のテクスチャエレメントのそれぞれに用いられる色を生成する。
【０１９７】
図３は、このデコード処理を示す。
【０１９８】
デコード処理の第1段階は、色セットアップ段階10であり、この段階では、エンコード済みテクスチャデータブロック5の「方法および色モード」データフィールドで指定された色モードを、テクスチャデータブロック5で定義された色データとともに使用して、テクスチャデータブロック5がエンコードする個々のテクスチャエレメントに使用される4つの色の集合を生成する。この段階10の結果は、テクスチャブロック5がエンコードする8×4テクスチャエレメント配列を最もよく表すものとして、エンコード段階で見つけられた4つの色である。
【０１９９】
エンコード済み8×4テクスチャエレメント配列用の、この4つの色の集合が生成(再構築)された後、ブロックによってエンコードされた個々のテクスチャエレメントのそれぞれに用いられるデータが、生成された4つの色の集合を素地として用いて再構築される。図３に示されるように、テクスチャデータブロック5によってエンコードされた各4×4テクスチャエレメントサブブロックは、「方法および色モード」データフィールドで指定されたテクスチャエレメント色生成方法と、エンコード済みテクスチャデータブロック5で定義された関連するサブブロックデータとを使用して、(デコード段階11、12で)独立してデコードされる。これにより、再構築された8×4配列のテクスチャエレメント13が得られ、これを使用して、当該技術分野において周知であるように、表示されるべき画像をレンダリングすることが可能である。
【０２００】
このようにして、画像に対して用意された、各エンコード済みテクスチャデータブロックがデコードされる。このデコード処理の効果は、各8×4テクスチャエレメントブロックが独立してデコードされることである。このデコード処理は、エンコード処理があらゆる様々な符号化の選択肢をフル活用することを可能にし、テクスチャ圧縮比に関して妥協することを必要とせずに高品質画像を提供することがわかっている。
【０２０１】
以下では、本実施形態で使用される4つの異なる色モード(すなわち、テクスチャデータブロックに使用される色集合の生成方法)を詳細に説明する。
【０２０２】
前述のように、本実施形態で使用される色集合生成モードのそれぞれは、テクスチャデータブロックによってエンコードされたテクスチャエレメントに用いられる4つの色の集合を、独立したヘッダデータブロックの中に用意されたプライマリ色テーブルから取り出す。本質的には、所与のテクスチャデータブロックに用いられる色集合の生成は、プライマリ色テーブルから1つまたは複数の色をフェッチし、必要であれば、それらの色をより正確な色に調整して、各ブロックの個々のテクスチャエレメント用の色の生成に用いられる(col[0-3]で示される)4つの色の集合を提供することによって行われる。
【０２０３】
色モードに応じて、2個、3個、または4個の色(pri[0-3])が、この目的のためにプライマリ色テーブルから選択される。これは、プライマリ色テーブルから選択される色を識別する2つまたは3つのインデックス(priindex[0]およびpriindex[2](および、必要に応じてpriindex[3]))と、必要に応じて、使用される2つのデルタ値(pridelta[1]およびpridelta[3])とを、他のプライマリインデックスとの組み合わせで使用して、プライマリ色テーブルから選択される他の色を識別するインデックスを導出することによって行われる。使用されるインデックスおよびデルタ値の厳密な組み合わせは、次のように、色モードに依存する。
【０２０４】
【表５】
0005419947.tif 000006
【０２０５】
これらのインデックスを使用して、次のように、テクスチャデータブロックに用いられる2〜4個の初期色が、プライマリ色テーブル(「primaries」と称する)から選択される。
pri[x]=primaries[priindex[x]]
ただし、
x∈{0,1,2,3}(色モード=0の場合)
x∈{0,2,3}(色モード=1の場合)
x∈{0,2}(色モード∈{2,3}の場合)
【０２０６】
色モード0では、プライマリ色テーブル(色のベース集合)から選択された初期色(プライマリ色)が直接使用される。すなわち、
col[x]=pri[x]、ただし、x∈[0-3]
【０２０７】
これを図４に示す。したがって、図４に示されるように、テクスチャデータブロック用に定義されたpriindex[0]およびpriindex[2]を用いて、ブロックに用いられる色col[0]およびcol[2]がプライマリ色テーブル20から直接選択される。priindex[0]およびpridelta[1]は、priindex[1]を導出するために使用され、priindex[1]は、col[1]をプライマリ色テーブル20から選択するために使用される。また、priindex[2]およびpridelta[3]は、priindex[3]を導出するために使用され、priindex[3]は、col[3]をプライマリ色テーブル20から選択するために使用される。
【０２０８】
一方、色集合生成モード1〜3は、調整手法を用いて、プライマリ色テーブルから選択された色からより正確な色を作成する。これを行うために、成分あたり2ビットの符号付き値(coldelta-bits[0]およびcoldelta-bits[2]、6ビット5:0 RRGGBBフォーマット)が拡張されて、成分あたりフルのデルタ値(coldelta[0]およびcoldelta[2])が形成される。これは、各成分に属する2ビットを各成分の最上位ビット位置に置き、すべての下位ビットを0でパディングし、その結果を、以下のような、色モード固有のビット量だけ(符号を維持したまま)右シフトすることによって行われる。
【０２０９】
【表６】
0005419947.tif 000007
【０２１０】
たとえば、coldelta-bits[0] = 0x36であれば、これは、R:G:B成分のそれぞれに対応して、0x3、0x1、0x2に分割される(R:G:B 2:2:2フォーマット)。8ビット成分値の場合、これは、色モード1および3の場合は0xF8、0x08、0xF0に拡張され、色モード2の場合は0xF0、0x10、0xE0に拡張される。coldelta-bits[0]から再構築されたデルタ値は、coldelta[0]として保存され、coldelta-bits[2]から再構築されたデルタ値は、coldelta[2]として保存される。
【０２１１】
これらのデルタ値は、ベース色値に直接加算される(各成分の最小/最大値のそれぞれにクランプされる)(アルファ値は、デルタ値をまったく与えられない)。
【０２１２】
色モード1では、プライマリ色テーブルの3つの色が選択され、これを用いて、テクスチャデータブロックに使用される4つの色の集合が生成される。この場合は、選択された色のうちの2つが、その集合の色のうちの2つを与えるために直接使用され、1つが、その集合の別の色を与えるためにデルタ値を用いて調整され、その調整された色が、その集合の第4の色を与えるために、他の色のうちの1つとブレンドされる。したがって、この色モードでは、次式のようになる。
【０２１３】
【数１】
0005419947.tif 000008
【０２１４】
色モード2では、プライマリ色テーブルの2つの色が選択される。これらの色の両方が、テクスチャデータブロックに使用される4つの色の集合のうちの2つの色を与えるために、調整される。これらの調整された色は、そのブロックに使用される他の2つの色を与えるために、異なる比率でブレンドされる。
【０２１５】
このモードでは、coldelta[0]が、各成分を2ビット右シフトすることにより、coldelta-bits[0]から構築され、coldelta[2]が、各成分を3ビット右シフトすることにより、coldelta-bits[2]から構築される。
【０２１６】
したがって、次式のようになる。
【０２１７】
【数２】
0005419947.tif 000009
【０２１８】
色モード3は、色モード2とよく似ている。
【０２１９】
したがって、やはり、次式のようになる。
【０２２０】
【数３】
0005419947.tif 000010
【０２２１】
しかしながら、このモードでは、coldelta[0]が、各成分を3ビット右シフトすることにより、coldelta-bits[0]から構築され、coldelta[2]が、各成分を4ビット右シフトすることにより、coldelta-bits[2]から構築される。
【０２２２】
以下では、エンコード済みテクスチャエレメントの再現時に、テクスチャデータブロック用に生成された4つの色の集合を使用して、個々のテクスチャエレメントのそれぞれの色を生成するために、本実施形態で使用されることが可能な方法について、詳細に説明する。
【０２２３】
前述のように、本実施形態では、2つのそのような方法が、個々のテクスチャエレメントの色を生成するために指定されることが可能であり、テクスチャデータブロック用として指定された方法は、テクスチャエレメントの各4×4サブブロックに独立に適用される(すなわち、同じ色生成方法が、テクスチャデータブロックがエンコードする各4×4サブブロックに対して用いられるが、各4×4テクスチャエレメントサブブロックに対して別々に適用される)。
【０２２４】
第1のテクスチャエレメント色生成方法(方法0)は、テクスチャデータブロック用に生成された色集合から直接取得された色を使用し、ドローイングの再現に使用されることを意図している。
【０２２５】
このテクスチャエレメント色生成方法では、エンコード済み4×4テクスチャエレメントブロック内のテクスチャエレメントが、次の順序で並べられる。
【０２２６】
【表７】
0005419947.tif 000011
【０２２７】
これらのテクスチャエレメントの位置を、本明細書では、ピクセル番号(pixelnr)と称する。これらのテクスチャエレメントのそれぞれに、そのテクスチャエレメントの下位インデックスと呼ばれる1ビットが割り当てられる。これらの下位インデックスビットは、indexlowと呼ばれる配列に保存され、indexlow[pixelnr]として参照される。
【０２２８】
次に、その4×4テクスチャエレメントブロックが、2×2テクスチャエレメントブロックに細分され、次の順序で並べられる。
【０２２９】
【表８】
0005419947.tif 000012
【０２３０】
次に、そのような2×2テクスチャエレメントブロックのそれぞれに、上位インデックスと呼ばれる別のビットが割り当てられる。このインデックスは、2×2ブロックの4個すべてのテクスチャエレメントに対して同一である。これらの上位インデックスは、indexhighと呼ばれる配列に保存され、各テクスチャエレメントに対してindexhigh[pixelnr>>2]として参照される。
【０２３１】
再現時に特定のテクスチャエレメントに用いられる色を生成するために、そのテクスチャエレメントの上位インデックスが、その下位インデックスと結合されて、次式のような完全な色インデックスにされる。
indexcolor[pixelnr]=(indexhigh[pixelnr>>2]<<1)|indexlow[pixelnr]
【０２３２】
次に、このインデックスを用いて、次式のように、当該テクスチャデータブロック用に生成された4色ルックアップテーブル(すなわち、色集合)で、使用されるべき色がルックアップされる。
color[pixelnr]=col[indexcolor[pixelnr]]
【０２３３】
本実施形態で使用される第2のテクスチャエレメント色生成方法(方法1)では、各4×4サブブロック内の、半数の、エンコードされたテクセルの色を、テクスチャデータブロック用に生成された4つの色の集合から直接選択することによって生成するが、残りのテクスチャエレメントの色は、テクスチャエレメントの値と値の間を、サブブロック固有のフェーディングパターンで補間することによって生成される。この方法では、全部で8つのフェーディング方向が使用可能である。このテクスチャエレメント色生成方法は、写真のようにリアルなテクスチャに使用される。
【０２３４】
このテクスチャエレメント色生成方法では、ブロック内のいくつかのテクスチャエレメントをカバーするいくつかの補間パスを含む、サブブロック固有のフェーディングパターンが、テクスチャデータブロックによってエンコードされたテクスチャエレメントについて定義され、適用される。具体的には、フェーディングパターンの補間パスごとに、その補間パスの端点のテクスチャエレメントの色が、テクスチャデータブロック用に生成された4つの色の集合から直接取得され、その補間パスに沿う中間テクスチャエレメントの色が、端点の色から線形補間される。
【０２３５】
図５は、本実施形態で使用可能なフェーディングパターンとして想定されるものを示す。図に見られるように、各フェーディングパターンは、それぞれが個別に、4×4テクスチャエレメントサブブロック内の4つのテクスチャエレメントをカバーする、4つの補間パスの集合を備える(したがって、これら4つの補間パスは、一緒になって、4×4配列内のすべてのテクスチャエレメントをカバーする)。
【０２３６】
図５からわかるように、全部で8つのフェーディングパターンがあり、これらは、2つの主方向(水平および垂直)と、4つの副方向とによって定義される。この構成では、フェーディングパターンの「垂直」方向は、テクスチャエレメント配列内の各テクスチャエレメントのx成分およびy成分が入れ替わる以外は、「水平」方向とまったく同じである。
【０２３７】
このテクスチャエレメント色生成方法とともに使用されるフェーディング方向をエンコードするために、フェーディングパターンの方向が、テクスチャデータブロック内で識別され、エンコードされる。このエンコードは、フェーディングパターンの各端点の色と、フェーディングパターンの方向とを、テクスチャデータブロック内に含めることからなる(すなわち、図５に示される、フェーディングパターンの主方向および副方向が使用される)。このエンコードでは、フェーディングパターンの主方向を指定するために1ビットを使用し、副方向を指定するために(すなわち、4つの副方向のどれを使用するかのインデックスとして)2ビットを使用する。次に、フェーディング方向内の補間パスの端点ごとに、その終点のテクスチャエレメントに使用される色が、テクスチャデータブロック用に生成される4つの色の集合への2ビットインデックスを用いてエンコードされる。
【０２３８】
これを行うために、図５に示されるように、補間パスの各端点に番号(nr)が与えられる。端点番号は、0から7までの8つである。次に、それら端点の色インデックスが、indexesと呼ばれる、エレメントあたり2ビットの配列に保存され、indexes[nr]によってインデックス付けされる(indexes[0]は、最も低い2ビットを指定する)。これらの2ビットは、端点の色を、テクスチャデータブロック用に生成された4色(テーブル)の中でインデックス付けするために使用される。端点の、最終的な端点色は、endpointcolor[nr]=col[indexes[nr]]である。
【０２３９】
各補間パスの中間部に残る2つのテクスチャエレメントの色は、その補間パスの各端点色の間で線形補間を行うことにより、生成される。したがって、すべてのケース(任意のフェーディング方向またはフェーディングパターン)において、所与の補間パスによってカバーされる4つのテクスチャエレメントの最終的な色は、次式のとおりである。
【０２４０】
【数４】
0005419947.tif 000013
【０２４１】
したがって、たとえば、端点2および6を有する方向1(図５を参照)の場合、以下のテクスチャエレメントは、以下の値を取得する。
【０２４２】
【表９】
0005419947.tif 000014
【０２４３】
前述の内容から理解されるように、各テクスチャデータブロック5内でエンコードされる実際のデータは、とりわけ、当該のテクスチャデータブロックに使用される色集合生成モードおよびテクスチャエレメント色生成方法に依存する。しかしながら、エンコード済みテクスチャデータブロック内のビット順序は、各32ビット4×4エンコード済みテクスチャエレメントサブブロックにおいてすべてのビット位置が同じになるような順序である。これにより、デコード処理は、より容易になる。
【０２４４】
本実施形態で使用される、テクスチャデータブロック5用の実際のビットレイアウトは、次のとおりである。
【０２４５】
【表１０】
0005419947.tif 000015
【０２４６】
他の構成も、もちろん可能である。
【０２４７】
前述の内容は、主として、本発明の、この好ましい実施形態において行われるデコード処理について説明したものである。当業者であれば理解されるように、エンコード処理は、対応する逆方向の様式で実施される。したがって、任意の所与の、テクスチャデータエレメントの配列をエンコードする実際の方法は、たとえば、当該技術分野において周知のとおり、想定される各エンコード構成を用いて配列をエンコードし、次に、そのようにエンコードされたテクスチャデータブロックを再現し、再現されたデータとオリジナルデータとを比較して、どのエンコード構成がオリジナルデータとの最もよい一致を与えるかを調べることによって選択されることが可能である。次に、そのエンコード処理を用いて、当該のテクスチャデータエレメント配列用のエンコード済みテクスチャデータブロックを生成する。
【０２４８】
前述の実施形態は、色の形式のテクスチャデータに関して説明されているが、前述のとおり、また、当業者であれば理解されるとおり、本発明は、他の形式のテクスチャデータ(たとえば、輝度マップやバンプマップなど)や他の非テクスチャデータにも適用可能である。そのような構成では、データは、有利な様式でエンコードまたはデコードされることが可能であるが、各データ値は、色ではなく、たとえば、輝度値や法線ベクトルなどを表す。
【０２４９】
前述の内容からわかるように、本発明は、少なくとも、その好ましい実施形態においては、エンコード済みデータへのランダムアクセスが必要とされる応用分野での使用(たとえば、ハードウェアグラフィックスアクセラレーションにおけるテクスチャマップ用)に特に適するデータ圧縮フォーマットを提供する。本発明は、高い圧縮レート(たとえば、少なくとも、その好ましい実施形態においては、テクスチャエレメントあたり2ビットの固定レートのフォーマット)を提供し、したがって、これは、電力、帯域幅、および保存容量に限りがあると考えられる携帯応用分野に有利である。本発明のデータ圧縮フォーマットの、圧縮レートが比較的高いこと、ならびに小型であるという性質にもかかわらず、たとえば、様々な種類の画像、および特に、現実世界の画像とドローイングとの両方を、ほとんど品質を損なわずに圧縮する能力は非常に高い。
【０２５０】
したがって、本発明は、高い圧縮レートを可能にすること、したがって、メモリのリソースおよび帯域幅が限られたデバイスに好適であることから、特に、モバイルゲーム市場に応用される。高い圧縮レートはさらに、たとえば、ゲームのダウンロードまたは他の応用を容易にする。これは、ダウンロード時間を増やすか、ダウンロード時間に関連する、ネットワーク帯域幅およびエンドユーザコストの問題を軽減できるためである。
【０２５１】
さらに、これは、高画質を実現しながら、達成されることが可能である(これは、当該技術分野において周知のとおり、画面サイズに限りがある小型モバイルデバイスにはクリティカルなことである(当該技術分野において周知のとおり、画面のサイズが小さくなり、分解能が低くなるほど、知覚される画質に対するノイズまたは他のエラーの影響が大きくなるからである))。本発明の手法はさらに、たとえば、アルファ(透明度)値を有する、高いコントラストのシナリオ(たとえば、ドローイング)およびテクスチャを含む、広い範囲のテクスチャマップに使用されることが可能である。
【０２５２】
これは、少なくとも、好ましい実施形態においては、エンコード済みの個々のテクスチャデータブロックに使用される実際のデータ値(たとえば、色)を作成するために、ベーステーブルのデータ値(たとえば、色)が、様々な方法で変更または変調されることを可能にする情報を、エンコード済みの個々のテクスチャデータブロックに含めることによって達成される。これにより、ベースデータ値またはプライマリデータ値(たとえば、色)のテーブルによって提供されるデータ値(たとえば、色)の範囲を、ブロックごとに、所望どおりに拡大することが可能である。
【０２５３】
さらに、少なくとも、その好ましい実施形態においては、各エンコード済みテクスチャデータブロックは、オリジナルブロックを最もよく表すデータ値をベースデータ値テーブルから再構築する4つの方法のうちの1つを使用することが可能である。鋭いエッジを有する画像については、データ値テーブルへの直接マッピングが用いられるのに対し、写真のようにリアルな画像を表す場合は、シェーディングパターンが用意され、追加データ値が生成されることが可能である。これにより、高品質の再現画像が得られることがわかっており、なおかつ、テクスチャ圧縮比に関しての大幅な妥協は不要である。
【符号の説明】
【０２５４】
1  オリジナル画像または配列
2  8×4テクスチャエレメントブロック
3、4  4×4テクスチャエレメントサブブロック
5  エンコードされたテクスチャデータブロック
10  色セットアップ段階
11、12  デコード段階
13  再構築された8×4配列のテクスチャエレメント
20  プライマリ色テーブル
【図１】
0005419947.tif 000016
【図２】
0005419947.tif 000017
【図５】
0005419947.tif 000018
【図３】
0005419947.tif 000019
【図４】
0005419947.tif 000020