(57)【要約】ハードウェアでサポートされた圧縮形式を使用してテクスチャのブロックベースの圧縮を行う方法及び装置が提供される。方法は、テクスチャを複数のブロックに分割することと、ブロックと共に使用する変換であって、エラー量を最小化する変換をブロック毎に決定することと、変換の少なくとも１つの特性を、参照コンポーネント値を表すのに利用可能な複数のビットに符号化することと、ブロックを圧縮することと、を含む。【選択図】図１
2017536740.tif 000002
【特許請求の範囲】
【請求項１】
ハードウェアでサポートされた圧縮形式を使用してテクスチャのブロックベースの圧縮を行う方法であって、
テクスチャを複数のブロックに分割することと、
ブロックと共に使用する変換であって、エラー量を最小化する変換をブロック毎に決定することと、
前記変換の少なくとも１つの特性を、参照コンポーネント値を表すのに利用可能な複数のビットに符号化することと、
前記ブロックを圧縮することと、
を含む、方法。
【請求項２】
各ブロックは、ＲＧＢ色空間内の２つのエンドポイントと、エンドポイント間の線上の画素値を表す複数のインデックスと、を有するデータを含み、
前記複数のビットは、前記エンドポイントの上位ビットである、
請求項１の方法。
【請求項３】
前記特性は、各エンドポイントの上位ビットが同じ場合に、前記複数のビットに符号化される、
請求項２の方法。
【請求項４】
第１のブロックを符号化するのに使用される複数のビットの数は、第２のブロックを符号化するのに使用される複数のビットの数と異なる、
請求項１の方法。
【請求項５】
前記ブロックに関連付けられたデータは、前記ハードウェアがサポートする圧縮形式によって直接サポートされていない、
請求項１の方法。
【請求項６】
前記特性は、スケール因子及び指数のうち１つを表す、
請求項１の方法。
【請求項７】
画像を復元する方法であって、
前記画像の選択された領域に関連付けられた複数のブロックを復号化することと、
ブロックと共に使用する変換であって、エラー量を最小化する変換の特性をブロック毎に取得することであって、前記特性は、参照コンポーネント値を表すのに利用可能な複数のビットに符号化される、ことと、
前記ブロックを復元することと、
前記特性を使用して、前記ブロックに適用する前記変換を取得することと、
前記変換を適用することと、
を含む、方法。
【請求項８】
各ブロックは、ＲＧＢ色空間内の２つのエンドポイントと、エンドポイント間の線上の画素値を表す複数のインデックスと、を有するデータを含み、
前記複数のビットは、前記エンドポイントの上位ビットである、
請求項７の方法。
【請求項９】
前記特性は、各エンドポイントの上位ビットが同じ場合に、前記複数のビットに符号化される、
請求項８の方法。
【請求項１０】
第１のブロック内で前記特性を符号化するのに使用される複数のビットの数は、第２のブロック内で前記特性を符号化するのに使用される複数のビットの数と異なる、
請求項７の方法。
【請求項１１】
ハードウェアでサポートされた圧縮形式を使用してテクスチャのブロックベースの圧縮を行うシステムであって、
第１の圧縮形式をサポートするように構成されたプロセッサと、
エンコーダと、を備え、
前記エンコーダは、
ブロックと共に使用する変換であって、前記第１の圧縮形式によってサポートされないデータを含むブロックから生じるエラー量を最小化する変換の特性をブロック毎に決定し、
前記特性を、参照コンポーネント値を表すのに利用可能な複数のビットに符号化し、
前記ブロックを圧縮する、ように構成されている、
システム。
【請求項１２】
各ブロックは、ＲＧＢ色空間内の２つのエンドポイントと、エンドポイント間の線上の画素値を表す複数のインデックスと、を有するデータを含み、
前記複数のビットは、エンドポイントの上位ビットである、
請求項１１のシステム。
【請求項１３】
前記特性は、各エンドポイントの上位ビットが同じ場合に、前記複数のビットに符号化される、
請求項１２のシステム。
【請求項１４】
第１のブロックを符号化するのに使用される複数のビットの数は、第２のブロックを符号化するのに使用される複数のビットの数と異なる、
請求項１１のシステム。
【請求項１５】
前記圧縮されたブロックを復元し、
前記特性を使用して、前記ブロックに適用する前記変換を取得し、
前記変換を適用する、ことを行うように構成されたデコーダをさらに備える、
請求項１１のシステム。
【請求項１６】
ハードウェアでサポートされた圧縮形式を使用してテクスチャのブロックベースの圧縮を実行するための命令のセットであって、コンピューティングデバイスによって実行される命令のセットを記憶するコンピュータ可読記憶媒体であって、
前記命令のセットは、前記コンピューティングデバイスによって実行されると、
テクスチャを複数のブロックに分割することと、
ブロックと共に使用する変換であって、エラー量を最小化する変換をブロック毎に決定することと、
前記変換の少なくとも１つの特性を、参照コンポーネント値を表すのに利用可能な複数のビットに符号化することと、
前記ブロックを圧縮することと、
をコンピューティングデバイスに行わせる命令を含む、
コンピュータ可読記憶媒体。
【請求項１７】
各ブロックは、ＲＧＢ色空間内の２つのエンドポイントと、エンドポイント間の線上の画素値を表す複数のインデックスと、を有するデータを含み、
前記複数のビットは、前記エンドポイントの上位ビットである、
請求項１６のコンピュータ可読記憶媒体。
【請求項１８】
前記特性を、各エンドポイントの上位ビットが同じ場合に、前記複数のビットに符号化される、
請求項１７のコンピュータ可読記憶媒体。
【請求項１９】
第１のブロックを符号化するのに使用される複数のビットの数は、第２のブロックを符号化するのに使用される複数のビットの数と異なる、
請求項１６のコンピュータ可読記憶媒体。
【請求項２０】
前記コンピューティングデバイスによって実行されると、
前記ブロックを復元することと、
前記特性を使用して、前記ブロックに適用する前記変換を取得することと、
前記変換を適用することと、
を前記コンピューティングデバイスに行わせる命令をさらに備える、
請求項１６のコンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
（関連出願の相互参照）
本願は、２０１４年１０月１０日に出願された米国仮特許出願第６２／０６２，２１１号の優先権を主張し、その全ての開示を明示的に援用するものである。
【０００２】
本開示は、概して、ハードウェアがサポートする圧縮形式を用いてテクスチャのブロックベースの圧縮を行う方法及び装置に関し、特に、ソフトウェアを用いて、既存のハードウェアでサポートされた圧縮形式と互換性のないデータの圧縮を可能にする方法及び装置に関する。
【背景技術】
【０００３】
コンピュータグラフィックス処理システムは、通常、大部分の処理を行う１つ以上のグラフィックスプロセシングユニット（ＧＰＵ）を用いて、大量のデータを処理する。ＧＰＵは、レンダリングと呼ばれるプロセスにおいて、画像を構成する画素をそのコンポーネントの高レベルの記述から生成する。ＧＰＵは、通常、コンピューティング要素を用いて連続的なレンダリングを実行して、画素、テクスチャ及び幾何学的データを処理する。コンピューティング要素は、ラスタライザ、セットアップエンジン、カラーブレンダ、隠面消去及びテクスチャマッピングの機能を実行することができる。コンピューティング要素は、シェーダ、シェーダプロセッサ、シェーダアレイ、シェーダパイプ、シェーダパイプアレイ、シェーダパイプライン又はシェーダエンジンと呼ばれることが多い。「シェーダ」は、ソフトウェア命令（より正確には「シェーダプログラム」と呼ばれる）を実行するために使用される実際のハードウェアコンポーネント又はプロセッサを指す場合もある。シェーダプロセッサ又はシェーダプログラムは、データを読み出してレンダリングし、任意のタイプのデータの処理を実行することができる。
【０００４】
複雑なグラフィックシーンを生成することに関わる処理の多くは、テクスチャデータを伴う。テクスチャは、画像データのようなハイトマップデータ、画像データ、色データ若しくは透明度データ、粗さ／平滑度データ、反射率データ、ルックアップテーブル、又は、他のデータ等の様々なタイプのデータの何れかであってもよい。テクスチャは、鏡面反射のような表面のプロパティや、通常のマップやバンプマップのような細かい表面の詳細を含む多くのプロパティを指定することができる。時には、「テクセル（texel）」という用語は、「画素」が画像の素子であるのと同様に、「テクセル」がテクスチャの素子である技術分野において使用される。しかしながら、「テクセル」及び「画素」という用語は、よく区別することなく使用される（「テクセル」は、単に「画素」と呼ばれることがある）。したがって、何れの用語も、本開示内では区別することなく使用され得る。
【０００５】
現実的なコンピュータグラフィックスを提供するには、通常、高品質で詳細なテクスチャを多く必要とする。しかしながら、テクスチャを使用すると、大量のストレージスペースと、メモリからＧＰＵへの帯域幅と、を消費する可能性があり、その結果、テクスチャは、通常圧縮され、ストレージスペース及び帯域幅の使用率が低下する。
【０００６】
したがって、テクスチャ圧縮は、一般的にグラフィックスハードウェア、特に３Ｄグラフィックスハードウェアで広く受け入れられる機能となっている。テクスチャ圧縮の目的は、グラフィックスシステムのストレージコストと帯域幅コストとを削減しながら、元のテクスチャの品質を可能な限り維持することである。多くのテクスチャ圧縮技術は、以下でさらに説明するように、エンドポイントと補間された画素値とを符号化するための様々なブロックベースの圧縮方法のうちの１つを使用する。ＤｉｒｅｃｔＸで使用されるマイクロソフト（登録商標）ＢＣｎ形式は、かかる方法の一例である。これらの形式と他の形式とをより柔軟に使用して、形式が、元々指定されたデータ以外の新しいタイプのデータ（例えば、ハイトマップデータ）の符号化を可能にする方法を開発することが望ましい。
【０００７】
より具体的には、新しいテクスチャ圧縮技術は、開発することと、ハードウェア形態で市場に提供することとに長い時間がかかる。ハードウェアベースの圧縮の或るバージョンから次のバージョンへの移行中に、ソフトウェア開発者は、既存の圧縮技術が不適切な結果をもたらすような、新しい圧縮技術を必要とする新しいタイプのデータを生成する。これは、これらの新しい技術を特定することと、これらを市場に実際に導入することと、の間にギャップを生成する。
【０００８】
したがって、カスタムデータを既存の圧縮技術を使用して符号化し、（画像全体にグローバルに適用するのではなく）ブロック毎に変化させて、ソフトウェアベースの復号化技術とハードウェアベースの復号化技術との柔軟なハイブリッドを開発するのを可能にすることによって、既存のハードウェアを使用する新しいテクスチャ圧縮の可能性を提供する方法が必要とされている。
【発明の概要】
【課題を解決するための手段】
【０００９】
本開示の一実施形態によれば、ハードウェアでサポートされた圧縮形式を使用してテクスチャのブロックベースの圧縮を行う方法が提供される。この方法は、テクスチャを複数のブロックに分割することと、ブロックと共に使用する変換であって、エラー量を最小化する変換をブロック毎に決定することと、前記変換の少なくとも１つの特性を、参照コンポーネント値を表すのに利用可能な複数のビットに符号化することと、ブロックを圧縮することと、を含む。本実施形態の一態様によれば、各ブロックは、ＲＧＢ色空間内の２つのエンドポイントと、エンドポイント間の線上の画素値を表す複数のインデックスと、を有するデータを含み、複数のビットは、エンドポイントの上位ビットである。本態様の変形例では、特性は、各エンドポイントの上位ビットが同じ場合に、複数のビットに符号化される。別の態様では、第１のブロックを符号化するのに使用される複数のビットの数は、第２のブロックを符号化するのに使用される複数のビットの数と異なる。さらに別の態様では、ブロックに関連付けられたデータは、ハードウェアがサポートする圧縮形式によって直接サポートされていない。さらに別の態様では、特性は、スケール因子及び指数のうち１つを表す。
【００１０】
本開示の別の実施形態によれば、画像を復元する方法が提供される。この方法は、画像の選択された領域に関連付けられた複数のブロックを復号化することと、ブロックと共に使用する変換であって、エラー量を最小化する変換の特性をブロック毎に取得することであって、特性は、参照コンポーネント値を表すのに利用可能な複数のビットに符号化される、ことと、ブロックを復元することと、特性を使用して、ブロックに適用する変換を取得することと、変換を適用することと、を含む。本実施形態の一態様によれば、各ブロックは、ＲＧＢ色空間内の２つのエンドポイントと、エンドポイント間の線上の画素値を表す複数のインデックスと、を有するデータを含み、複数のビットは、エンドポイントの上位ビットである。本態様の変形例では、特性は、各エンドポイントの上位ビットが同じ場合に、複数のビットに符号化される。別の態様では、第１のブロック内で特性を符号化するのに使用される複数のビットの数は、第２のブロック内で特性を符号化するのに使用される複数のビットの数と異なる。
【００１１】
本開示のさらに別の実施形態によれば、ハードウェアでサポートされた圧縮形式を使用してテクスチャのブロックベースの圧縮を行うシステムが提供される。このシステムは、第１の圧縮形式をサポートするように構成されたプロセッサと、エンコーダと、を備える。エンコーダは、ブロックと共に使用する変換であって、第１の圧縮形式によってサポートされないデータを含むブロックから生じるエラー量を最小化する変換の特性をブロック毎に決定し、特性を、参照コンポーネント値を表すのに利用可能な複数のビットに符号化し、ブロックを圧縮するように構成されている。本実施形態の一態様によれば、各ブロックは、ＲＧＢ色空間内の２つのエンドポイントと、エンドポイント間の線上の画素値を表す複数のインデックスと、を有するデータを含み、複数のビットは、エンドポイントの上位ビットである。本態様の変形例では、特性は、各エンドポイントの上位ビットが同じ場合に、複数のビットに符号化される。別の態様では、第１のブロックを符号化するのに使用される複数のビットの数は、第２のブロックを符号化するのに使用される複数のビットの数と異なる。さらに別の態様では、圧縮されたブロックを復元し、特性を使用して、ブロックに適用する変換を取得し、変換を適用するように構成されたデコーダを備える。
【００１２】
本開示のさらに別の実施形態によれば、ハードウェアでサポートされた圧縮形式を使用してテクスチャのブロックベースの圧縮を実行するための命令のセットであって、コンピューティングデバイスによって実行される命令のセットを記憶するコンピュータ可読記憶媒体が提供される。命令のセットは、コンピューティングデバイスによって実行されると、テクスチャを複数のブロックに分割することと、ブロックと共に使用する変換であって、エラー量を最小化する変換をブロック毎に決定することと、前記変換の少なくとも１つの特性を、参照コンポーネント値を表すのに利用可能な複数のビットに符号化することと、ブロックを圧縮することと、をコンピューティングデバイスに行わせる命令を含む。本実施形態の一態様によれば、各ブロックは、ＲＧＢ色空間内の２つのエンドポイントと、エンドポイント間の線上の画素値を表す複数のインデックスと、を有するデータを含み、複数のビットは、エンドポイントの上位ビットである。本態様の変形例では、特性は、各エンドポイントの上位ビットが同じ場合に、複数のビットに符号化される。別の態様では、第１のブロックを符号化するのに使用される複数のビットの数は、第２のブロックを符号化するのに使用される複数のビットの数と異なる。さらに別の態様では、コンピューティングデバイスによって実行されると、ブロックを復元することと、特性を使用して、ブロックに適用する変換を取得することと、変換を適用することと、をコンピューティングデバイスに行わせる命令を備える。
【００１３】
実施形態は、以下の図面と共に以下の説明を考慮してより容易に理解される。図面において、同様の参照番号は同様の要素を表す。
【図面の簡単な説明】
【００１４】
【図１】１つ以上の開示された実施形態を実装することができる例示的なデバイスのブロック図である。
【図２】ＲＧＢ色空間内の線として表されるデータブロックの概念図である。
【図３】本開示による、テクスチャを圧縮する方法のフローチャートである。
【図４】本開示による、テクスチャを復元する方法のフローチャートである。
【発明を実施するための形態】
【００１５】
簡潔には、一実施例では、ハードウェアでサポートされた圧縮形式を使用してテクスチャのブロックベースの圧縮を行う方法及び装置が提供される。方法は、テクスチャを複数のブロックに分割することと、ブロックと共に使用する変換であって、エラー量を最小化する変換をブロック毎に決定することと、変換の少なくとも１つの特性を、参照コンポーネント値を表すのに利用可能な複数のビットに符号化することと、ブロックを圧縮することと、を含む。したがって、本開示は、カスタムデータを既存のハードウェアベースの圧縮技術を使用して符号化し、（画像全体にグローバルに適用するのではなく）ブロック毎に変化させるアプローチを提供することによって、ソフトウェアベースの復号化技術とハードウェアベースの復号化技術との柔軟なハイブリッドを開発することを可能にし、既存のハードウェアを使用する新しいテクスチャ圧縮の可能性を提供する。
【００１６】
図１は、１つ以上の開示された実施形態を実装することができる例示的なデバイス１００のブロック図である。特定の実施形態では、デバイス１００は、ゲームデバイス、携帯型デバイス、セットトップボックス、テレビ、携帯電話若しくはタブレット、又は、他のタイプのコンピュータである。デバイス１００は、一般に、プロセッサ１０２と、１つ以上の入力デバイス１０４と、１つ以上の出力デバイス１０６と、１つ以上のストレージデバイス１０８と、１つ以上のメモリデバイス１１０と、を含む。
【００１７】
プロセッサ１０２は、中央処理装置（ＣＰＵ）、グラフィックスプロセッシングユニット（ＧＰＵ）、同じダイ上に配置されたＣＰＵ及びＧＰＵ、又は、１つ以上のプロセッサコアを含むことができ、各プロセッサコアは、ＣＰＵ又はＧＰＵであってもよい。他のタイプの集積回路及びプロセッサも、デジタルシグナルプロセッサ（ＤＳＰ）、アクセラレーテッドプロセッシングユニット（ＡＰＵ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）等を含む本開示の態様を具現化することができる。
【００１８】
入力１０４は、キーボード、キーパッド、タッチスクリーン／パッド、検出器、マイクロフォン、加速度計、ジャイロスコープ、生体スキャナ、又は、ネットワーク接続（例えば、ワイヤレスＩＥＥＥ８０２信号の送信及び／又は受信のためのワイヤレスローカルエリアネットワークカード）のうち１つ以上を含むことができる。出力１０６は、ディスプレイ、スピーカ、プリンタ、触覚フィードバックデバイス、１つ以上の測定器、アンテナ、又は、ネットワーク接続（例えば、ワイヤレスＩＥＥＥ８０２信号の送信及び／又は受信のためのワイヤレスローカルエリアネットワークカード）のうち１つ以上を含むことができる。
【００１９】
ストレージ１０８は、例えばハードディスクドライブ、半導体ドライブ、光ディスク又はフラッシュドライブ等の固定又は取り外し可能なストレージコンポーネントを含むことができる。メモリ１１０は、プロセッサ１０２と同じダイ上に配置されてもよいし、プロセッサ１０２とは別に配置されてもよい。メモリ１１０は、例えばランダムアクセスメモリ（ＲＡＭ）、ダイナミックＲＡＭ又はキャッシュ等の揮発性又は不揮発性のメモリを含むことができる。
【００２０】
例えばデバイス１００等のデバイス用の様々なＧＰＵサポートのテクスチャ圧縮形式は、長年にわたって開発されており、この形式には、ＢＣ１からＢＣ７までの７つの標準形式のセット（つまり、上記で言及したマイクロソフト（登録商標）ＢＣｎ）が含まれる。これらの形式は、テクスチャマップのメモリ使用（ストレージ及び帯域幅）を減らすために、現実的な３Ｄゲーム等で広く使用されている。かかるアプリケーションでは、ディフューズカラー（diffuse color）、法線マップ（normal map）、鏡面ハイライト（specular highlight）、光沢（gloss）、放射グロー（emissive glow）等のより多くのテクスチャを要する高解像度のグラフィックスが必要である。期待される視覚的詳細を達成するためには、非常に大きなメモリ帯域幅を必要とする大量のデータをプロセッサに供給しなければならない。テクスチャ圧縮は、画像データをシェーダコアに提供するために必要なメモリ帯域幅を削減する。
【００２１】
全てのＢＣｎ形式によって可能になるテクスチャ圧縮は、ブロック圧縮、より具体的には、４×４画素のブロックに基づいている。処理される各画像は、これらのブロックに分割され、ブロックは、形式に応じて８バイト又は１６バイトのサイズに固定されている。この標準的なレイアウトとメモリ内のブロックの連続的な記憶とは、ＧＰＵがテクスチャの任意の部分を含むブロックをすばやく見つけてアクセスできるので、効率的なＧＰＵレンダリングを可能にする。
【００２２】
各ブロックは、画像全体のうち小さな領域を表している。多くの画像では、特定の小さな領域（又はブロック）内に非常に限られた色の変化が存在する。一般的に、ブロックは、単色の陰影又は２色間の勾配を含む。ＢＣｎ形式は、ブロック内の色の定義（definition）を空間分布から分離させることによって、この事実を利用する。
【００２３】
本開示の一実施形態では、例えば、マイクロソフト（登録商標）ＢＣ５仕様を用いて、以下に説明する圧縮が、単一のコンポーネントハイトマップテクスチャに対して実行される。かかる実施形態では、ＢＣ５を使用したハイトマップテクスチャの圧縮は、ハイトマップが単一のコンポーネントテクスチャであるため、復元（及び圧縮中の対応する逆変換）中に２コンポーネントテクスチャを１コンポーネントテクスチャに変換するような変換を必要とする。この場合、圧縮されるデータ及びハードウェアでサポートされる形式は、本開示の原理を適用することによって、異なる数のコンポーネント（チャネル）を有することができる。このアプローチは、１チャネル（例えば、赤チャネル（red channel））からの上位ビットを使用して制御ビット（すなわち、変換の少なくとも１つの特性）を伝搬させることによって、ハイトマップテクスチャが１６ビットのフルダイナミックレンジを使用しないという事実を利用する。符号化された特性は、最小化されたエラーを提供するブロックに使用する変換をエンコーダが取得するのを可能にする。
【００２４】
一例として、ＢＣ５デコーダの２コンポーネント出力がＣ１及びＣ２である（すなわち、８．６形式の２つの符号なしチャネル）と仮定すると、以下の表１に示す命令を、本開示の原理にしたがって実装することができる（以下、参照のために行を番号付けする）。
【表１】
2017536740.tif 000003
（２）行目及び（３）行目は、変換パラメータを復号するためのマスクを提供する。この例では、これらは、実装するパラメータのコードを提供するＣ２のビットである（すなわち、ビット７及びビット６は、パラメータコード情報を含むことができる）。（４）行目から（９）行目は、各変換の３つのスケールと、各変換の３つのバイアスと、の例示的な定義を提供する。（１０）行目から（２０）行目は、変換を復号する（すなわち、適用する変換のコードを決定する）ための命令を提供する。本実施形態では、コードは可変長である。ビット７が０の場合には、変換１（何でもよい）を適用する必要がある。これは、（１２）行目に反映される。本実装形態は、変換のコードを符号化するためにＣ２の１ビット（本例では、Ｃ２の最上位ビット（ＭＳＢ））のみを使用するので、他の７ビットは、他の情報を伝えるために利用可能である。ＭＳＢ＝０の場合には、マスクする必要がない。通常、コードを復号した後にはビットがマスクされるが、当該ビットが既にゼロである場合には、その必要がない。ＭＳＢ＝１の場合には、命令は次のビットを評価する。これは、（１３）行目及び（１４）行目に反映される。第２のビットがゼロである場合には、第２の変換が適用される（（１５）行目及び（１６）行目を参照）。最後に、両方のビットが１である場合には、第３の変換を使用して、両方のビットがマスクされる（（１８）行目を参照）。
【００２５】
各ブロックの画素又はテクセルは、ブロックのカラーパレットへのインデックスとしてコード化され、このパレットは、通常、上述したように極めて限定されている。パレットが非常に小さいため、画素当たりで必要とされるビット数が少ない。パレットは、その全ての色が、２つのエンドポイント間に延在するＲＧＢ色空間内の線分（又は補間軸）に沿う等間隔の点に当てはまる、と仮定することによって圧縮される。この仮定を使用すると、線のエンドポイントのみを記憶する必要があり、他の色は、２つのエンドポイントを異なる割合で混ぜ合わせることによって再構成される。
【００２６】
図２は、ＲＧＢ色空間内の上述した線分２００の概念図である。この例は例示的なものであるが、本開示の一実施形態は、例えばマイクロソフト（登録商標）ＢＣ５仕様を用いるハードウェアによってサポートされた２コンポーネント形式を用いて１コンポーネント（スカラー）入力データ圧縮を使用する、ということに留意すべきである。図示したように、ＲＧＢ色空間は、３Ｄデカルト座標系の単位立方体サブセットを含み、Ｒ、Ｇ、Ｂ軸を用いて原色（赤、緑及び青）をマッピングし、原点を黒（光なし）でマッピングする。したがって、モデルが単位立方体であるため、各軸は、０から１の間の強度範囲を有する。線２００は、エンドポイント２０２と、エンドポイント２０４と、を含む。本例では、線２００は、線形補間によって線２００に沿って等間隔に配置された２つの中間点又は画素値２０６をさらに含む。実装に応じて、当業者によって理解されるように、画素値２０６の数は、２つより大きくてもよいし、２つ未満であってもよい。画素値２０６は、線２００に対応するブロックに、３ビットのインデックスの形式のデータとして含まれる。本開示にしたがって、３ビットよりも多く又は３ビット未満の各画素値のインデックスを使用可能であることを理解すべきである。
【００２７】
本開示によれば、エンドポイント２０２、エンドポイント２０４からいくつかのビットの精度を犠牲にすることによって、追加のデータをブロック毎に符号化することが可能であり、これにより、デコーダが、カスタムデータ、又は、既存のハードウェア圧縮技術が対応するように設計されていないデータに対して特別な処理を行うのを可能にする、ということが認識される。例示のみを目的として、８ビット値で特定されるエンドポイント２０２、エンドポイント２０４と、３ビットインデックスを用いて選択された画素値２０６と、を有するデータのチャネル（赤チャネル）を符号化する単一コンポーネント形式を仮定する。ブロック内の任意の画素に対して可能な色は、以下の表２に示すように得られる。
【表２】
2017536740.tif 000004
【００２８】
３ビットインデックスは、ブロック内の各画素について、どの色を使用するのかを選択するために用いられる。返される最終的な値は、０から１の範囲に含まれる。
【００２９】
画素値２０６は線形補間によって得られるので、各エンドポイント２０２，２０４の上位ビットが同じ場合には、画素値２０６の上位ビットはブロックで一定である。また、各エンドポイント２０２，２０４の上位ビットが同じ場合には、これらの上位ビットの値は、データの下位ビットの何れかの補間値に影響を与えない。この結果、いくつかの上位ビット（例えば、エンドポイント＿０及びエンドポイント＿１の各々からの３ビット）は、デコーダによる特別な処理のために予約されてもよい。予約されたビットの数は、ブロック毎に異なってもよいことを理解すべきである。別の言い方をすれば、これらのビットを使用して、ブロックの特別なデータを符号化することができる。
【００３０】
カラー値をテクスチャから取り出した後に、以下の表３に示すソフトウェア復号ステップを、上述したハードウェア復号の後に追加してもよい。
【表３】
2017536740.tif 000005
【００３１】
かかるソフトウェア復号化ステップは、（８つの異なる変更を符号化に提供するのに十分な）３ビットのデータをシェーダに伝える。本開示の一実施形態では、データのビットは、データに適用されるスケール因子又は指数を表す等して、復号されたデータを変換するのに用いられてもよい。当業者には明らかであるように、データのビットを、多くの他の用途に使用することができる。上述した方法は、マルチコンポーネント圧縮形式で使用するために、当業者によって容易に変更され得る（すなわち、ビットは、上述した方法と同じ方法で、独立したコンポーネントのうち任意のものに符号化することができる）ことを理解すべきである。
【００３２】
上記の方法では、カスタムデータを変換して、（カスタムデータを処理するように設計されていない）既存の圧縮技術からより良い結果を得ることができる。データは、圧縮時に変換され、圧縮後（つまり、復元及びレンダリング時）に元の状態に戻されなければならない。異なるブロック毎に変換が異なる場合があることを理解すべきである。このようにして、ブロック単位で最適であると決定された様々な技術を用いることによって、エラー低減及び品質向上を実現することができる。このようなブロック毎の変換を可能にするために、変換を各ブロックのソフトウェアデコーダに渡す必要がある。例えば、画像内の各ブロックについて、エラー量を最小にするために、ブロックと共に使用する変換が特定される。各ブロックと共に使用される変換を決定する方法のさらなる詳細は、２０１２年１０月１２日に出願された「ＲＥＧＩＯＮ−ＢＡＳＥＤ  ＩＭＡＧＥ  ＣＯＭＰＲＥＳＳＩＯＮ」という名称の同時係属中の米国特許出願第１３／６５１，０２０号にて提供されており、その開示全体は、参照によって本明細書に明示的に組み込まれる。本開示の一実施形態では、上述したエンドポイントの上位ビットに変換を含むことによって、当該変換がデコーダに渡される。ブロックの符号化された画素をデコーダが受信すると、パラメータが画素のＭＳＢに提供される。本明細書で説明するように、本変換は、２コンポーネント形式（ＢＣ５）のハードウェア復元からの２つのコンポーネントを、１コンポーネントにまとめることを含む。これに応じて、圧縮器は、単一コンポーネントデータを２コンポーネントデータに変換する。
【００３３】
図３は、本開示の原理による、テクスチャを圧縮する方法３００のフローチャートである。図示したように、ブロック３０２において、圧縮するテクスチャが選択される。ブロック３０４において、テクスチャは、（上述した４×４ブロック等の）複数のブロックに分割される。ブロック３０６において、現在のブロックが圧縮のために選択される。次に、ブロック３０８において、現在のブロックのエンドポイント２０２，２０４の上位ビットが同じか否かが判別され、それにより、かかるエンドポイントが、本明細書で説明した変換で置換されるのを可能にする。上位ビットが同じ場合には、ブロック３１０において、現在のブロックと共に使用される変換が決定される。同じでない場合には、ブロック３０９において、データが丸められ、又は、符号化されたブロック内でビットが使用されるように「空間を生成する」ために変換される。ブロック３１０において、変換が必要でないと判別され、１つ以上のビットを使用して、残りの変換の必要がないと示すことができることに留意されたい。また、可変長コードを特定の実施形態で使用して、（少なくとも１ビットが常に符号化に使用されるが）変換ビット数がブロック毎に異なるように変換を符号化してもよいことも理解されたい。
【００３４】
ブロック３１０において、現在のブロックのエンドポイント２０２，２０４の上位ビットが同じであり、変換パラメータが決定されると、ブロック３１２において、変換は、本発明の技術分野において周知の原理にしたがって、エンドポイント２０２，２０４の上位ビットに符号化される。その後、ブロック３１４において、現在のブロックが圧縮される。次に、ブロック３１６において、全てのブロックが処理されたか否かが判別される。全てのブロックが処理された場合には、プロセスは、ブロック３１８において終了する。そうでない場合には、新たな現在のブロックがブロック３０６において選択され、方法の残りが繰り返される。
【００３５】
図４は、本開示の原理による、テクスチャを復元する方法４００のフローチャートである。図示したように、ブロック４０２において、図３の方法３００にしたがって圧縮されたブロックが受信される。ブロック４０４において、ブロックが復元される。ブロック４０６において、復元されたブロックが変換を含むか否かが判別される。含まれていない場合には、ブロックは、ブロック４０８において復号される。ブロック４０６の判別において、復元されたブロックが変換を含む場合、ブロック４１０において、変換を使用して、ブロックに対応するデータを変換する。その後、ブロック４０８において、ブロックが復号される。
【００３６】
ブロック４１２において、全ての圧縮ブロックが処理されたか否かが判別される。処理された場合、プロセスは、ブロック４１４において終了する。そうでない場合、ブロック４０４において、処理のための次のブロックが復元され、上述した処理が繰り返される。本明細書において、「変換」という用語は、極めて一般的な意味で使用され、任意のデータ処理を含むことを理解すべきである。
【００３７】
上述した方法では、ブロック毎に用いられる圧縮方法に対して細かい修正を行って、より複雑な圧縮方法の実装を可能にし得る。したがって、本開示の方法及び装置は、より複雑な圧縮技術をサポートするように設計されていない既存のグラフィックスハードウェア上で、比較的短時間に、より複雑な圧縮技術を使用するのを可能にする広範囲な可能性のあるアプリケーションを促進する。このようにして、ハイトマップデータ又は現在利用可能なハードウェア圧縮技術が無い他のデータ等の新しいタイプのデータ（又はカスタムデータ）を、既存のハードウェアを使用して処理することができる。他の利点は、当業者には明らかであろう。
【００３８】
上記の詳細な説明及び本明細書で説明した実施例は、例示及び説明のために提示されたものであり、本発明を限定するものではない。したがって、本開示は、上記で開示され、本明細書で特許請求された基本的な原理の趣旨及び範囲に含まれる、任意及び全ての修正物、変形物又は均等物を含むことが意図される。
【図１】
2017536740.tif 000006
【図２】
2017536740.tif 000007
【図３】
2017536740.tif 000008
【図４】
2017536740.tif 000009
【国際調査報告】
2017536740.tif 000010
2017536740.tif 000011