(57)【要約】【課題】  カラールックアップテーブルにおいて、アルファ値のパターンを増やすと、ＲＧＢ値のパターンを減らすことになり、色の品質が低下する。【解決手段】  演算部５８は、インデックス形式で与えられたテクスチャのテクセル値を分離部７２に与える。分離部７２は、インデックス形式のテクセル値からインデックス値とアルファ値を分離して取り出し、インデックス値をルックアップテーブル参照部７０に与え、アルファ値を合成部７４に与える。ルックアップテーブル参照部７０は、ルックアップテーブル６４を参照して、インデックス値に対応するＲＧＢ値を取得し、合成部７４に与える。合成部７４は、ＲＧＢ値にアルファ値を合成してテクセルのカラー情報を作成し、演算部５８に与える。演算部５８は、テクセルのカラー情報にもとづいて、テクスチャデータに対するバイリニア補間などのフィルタリング処理を行う。【選択図】  図３
2005301414.tif 000002
【特許請求の範囲】
【請求項１】
参照情報をインデックス番号に対応づけて格納したルックアップテーブルと、
入力されたインデックス値にもとづいて前記ルックアップテーブルを参照し、前記インデックス値に対応する前記参照情報を取得する参照部とを含み、
前記ルックアップテーブルは、画像生成処理演算に必要な複数の情報の内、一部の情報の組み合わせを格納したものであり、前記ルックアップテーブルに格納されない残りの情報は、前記インデックス値に付加する形で直接与えられることを特徴とする画像生成装置。
【請求項２】
前記ルックアップテーブルに格納される前記一部の情報は、前記画像生成処理演算に必要な複数の情報の内、互いに比較的相関の強い情報の組み合わせであり、前記インデックス値に付加する形で直接与えられる情報は、それらの比較的相関の強い情報との間で相関が弱い情報であることを特徴とする請求項１に記載の画像生成装置。
【請求項３】
前記ルックアップテーブルに格納される前記一部の情報は、画素の色を規定する情報であり、前記インデックス値に付加する形で直接与えられる情報は、画素の色以外の特性を規定する情報であることを特徴とする請求項１または２に記載の画像生成装置。
【請求項４】
参照情報をインデックス番号に対応づけて格納したルックアップテーブルと、
入力値からインデックス値と非インデックス値を分離して取り出す分離部と、
前記インデックス値にもとづいて、前記ルックアップテーブルを参照し、前記インデックス値に対応する前記参照情報を取得する参照部と、
前記参照情報と前記非インデックス値を合成する合成部とを含むことを特徴とする画像生成装置。
【請求項５】
画像生成処理演算に必要な複数の情報の内、互いに比較的相関の強い情報の組み合わせが前記参照情報として前記ルックアップテーブルに格納され、それらの比較的相関の強い情報との間で相関が弱い情報が前記非インデックス値として与えられることを特徴とする請求項４に記載の画像生成装置。
【請求項６】
前記参照情報は、画素の色を規定する情報であり、前記非インデックス値は、画素の色以外の特性を規定する情報であり、前記合成部は、前記参照情報と前記非インデックス値を合成することにより、画素の特性を示す情報を求めることを特徴とする請求項４または５に記載の画像生成装置。
【請求項７】
前記非インデックス値は、画素の透過率に関する値であることを特徴とする請求項６に記載の画像生成装置。
【請求項８】
前記非インデックス値は、画素の反射率に関する値であることを特徴とする請求項６に記載の画像生成装置。
【請求項９】
テクスチャに関する参照情報をインデックス番号に対応づけて格納したルックアップテーブルと、
入力値からインデックス値と非インデックス値を分離して取り出す分離部と、
前記インデックス値にもとづいて、前記ルックアップテーブルを参照し、前記インデックス値に対応する前記参照情報を取得する参照部と、
前記参照部により取得された前記参照情報とともに、前記非インデックス値もテクスチャに関する情報として利用して、テクスチャデータを演算処理する演算部とを含むことを特徴とする画像生成装置。
【請求項１０】
前記参照情報は、画素の色を規定する情報であり、前記非インデックス値は、画素の色以外の特性を規定する情報であることを特徴とする請求項９に記載の画像生成装置。
【請求項１１】
付加情報付きのインデックス値の入力を受け、画像生成処理演算に必要な参照情報をインデックス番号に対応付けて格納したルックアップテーブルを参照することにより、インデックス値に対応する前記参照情報を取得し、取得された参照情報に前記付加情報を組み合わせて画像生成処理演算を行うことを特徴とする画像生成方法。
【請求項１２】
入力値からインデックス値と非インデックス値を分離して取り出すステップと、
前記インデックス値にもとづいて、画像生成処理演算に必要な参照情報を格納したルックアップテーブルを参照し、前記インデックス値に対応する前記参照情報を取得するステップと、
前記参照情報と前記非インデックス値を利用して、画像生成処理演算を行うステップとを含むことを特徴とする画像生成方法。
【請求項１３】
画像生成処理演算に必要な複数の情報の内、一部の情報の組み合わせをルックアップテーブルに格納し、前記ルックアップテーブルを参照するためのインデックス値に前記ルックアップテーブルに格納されない残りの情報を付加する形で画像情報を構成し、前記画像情報を符号化することを特徴とする画像生成方法。
【請求項１４】
画像生成処理演算に必要な複数の情報の内、一部の情報の組み合わせを格納したルックアップテーブルを参照するためのインデックス値に前記ルックアップテーブルに格納されない残りの情報を付加する形で構成された画像情報が符号化されてなることを特徴とする画像のデータ構造。
【請求項１５】
テクスチャの色を規定する情報を格納したルックアップテーブルを参照するためのインデックス値にテクスチャの色以外の特性を規定する情報を付加する形で構成された画像情報が符号化されてなることを特徴とするテクスチャ画像のデータ構造。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は画像データを生成する画像生成装置および画像生成方法に関する。
【背景技術】
【０００２】
３次元コンピュータグラフィックスでは、一般的に３次元空間のオブジェクトを多数のポリゴンにより表現するポリゴンモデルが利用される。ポリゴンモデルの描画処理において、光源、視点位置、物体表面の反射率などを考慮してポリゴン表面に陰影をつけるシェーディングが行われる。また、写実性の高い画像を生成するために、ポリゴンモデルの表面にテクスチャ画像を貼り付けるテクスチャマッピングが行われる。
【０００３】
テクスチャ画像のデータ量を少なくするために、各テクセルにカラー値をもたせるのではなく、カラー値のインデックスをもたせておき、テクスチャマッピング時にカラールックアップテーブルを参照して、実際のカラー値に変換するインデックスカラー方式がとられることがある。これはカラーパレットとも呼ばれる方式であり、あらかじめカラー値を定義した色見本をカラールックアップテーブルあるいはカラーパレットとして用意しておき、各テクセルには、カラールックアップテーブルを参照するインデックス情報だけを格納する。たとえば、使用する色見本が２５６色の場合、テクスチャ画像の各テクセルに８ビット分のインデックスを格納するだけでよく、色見本が１６色の場合、４ビット分のインデックスを格納するだけでよいため、テクスチャ画像のデータ量を大幅に削減することができる。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
カラールックアップテーブルの各エントリには、ＲＧＢ値とともに透明度を示すアルファ（α）値を格納することがある。描画プリミティブによっては、描画色と透明度の間に関連性があり、ＲＧＢ値と透明度をカラー情報として１つにまとめ、カラールックアップテーブルに格納することがテクスチャの圧縮効率を高める上で効率がよいことがある。
【０００５】
しかしながら、透明度をポリゴン表面で連続的に変化させたい場合など、アルファ値とＲＧＢ値との関連性がほとんどない場合もある。このような場合に、アルファ値の精度を保ったまま、ＲＧＢ値とアルファ値の組み合わせを格納したカラールックアップテーブルを生成すると、ＲＧＢの３色の組み合わせの数を減らすことになり、色の品質が低下してしまう。逆にＲＧＢの３色の精度を優先してカラールックアップテーブルを構成すると、アルファ値の取りうる値に制限を加えることになり、透明度を連続的に変化させることができなくなり、見映えが悪くなる。
【０００６】
カラールックアップテーブルのエントリ数を増やせば、アルファ値とＲＧＢ値のいろいろな組み合わせを格納することができるようになるが、カラールックアップテーブルを参照するためのインデックスのビット長を大きくすることになり、設計上の制約となる。また、大きなサイズのカラールックアップテーブルを記憶するために記憶容量が余分に必要になり、メモリの面積効率が悪くなる。
【０００７】
本発明はこうした課題に鑑みてなされたものであり、その目的は、限られた記憶容量で効率的に描画データを符号化し、高品質の画像を生成することのできる画像生成装置および画像生成方法を提供することにある。
【課題を解決するための手段】
【０００８】
上記課題を解決するために、本発明のある態様の画像生成装置は、参照情報をインデックス番号に対応づけて格納したルックアップテーブルと、入力されたインデックス値にもとづいて前記ルックアップテーブルを参照し、前記インデックス値に対応する前記参照情報を取得する参照部とを含む。前記ルックアップテーブルは、画像生成処理演算に必要な複数の情報の内、一部の情報の組み合わせを格納したものであり、前記ルックアップテーブルに格納されない残りの情報は、前記インデックス値に付加する形で直接与えられる。
【０００９】
画像生成処理演算の必要な複数の情報は、たとえば、カラー情報、関数値などである。ここで、「カラー情報」は、ＲＧＢ値以外に、透明度を示すアルファ値なども含む広い概念である。
【００１０】
前記ルックアップテーブルに格納される前記一部の情報は、前記画像生成処理演算に必要な複数の情報の内、互いに比較的相関の強い情報の組み合わせであり、前記インデックス値に付加する形で直接与えられる情報は、それらの比較的相関の強い情報との間で相関が弱い情報であってもよい。ここで「相関」とは、２つの情報間の関係の強さをいい、たとえば多変量解析における相関係数により、関係の強さを測ることができる。
【００１１】
前記ルックアップテーブルに格納される前記一部の情報は、画素の色を規定する情報であり、前記インデックス値に付加する形で直接与えられる情報は、画素の色以外の特性を規定する情報であってもよい。画素の色以外の特性を規定する情報は、描画に必要な様々な情報であり、たとえば、透過率、反射率、屈折率などに関する情報や、バンプマッピングにおける高さや法線ベクトルに関する情報などがある。
【００１２】
本発明の別の態様もまた、画像生成装置である。この装置は、参照情報をインデックス番号に対応づけて格納したルックアップテーブルと、入力値からインデックス値と非インデックス値を分離して取り出す分離部と、前記インデックス値にもとづいて、前記ルックアップテーブルを参照し、前記インデックス値に対応する前記参照情報を取得する参照部と、前記参照情報と前記非インデックス値を合成する合成部とを含む。
【００１３】
本発明のさらに別の態様もまた、画像生成装置である。この装置は、テクスチャに関する参照情報をインデックス番号に対応づけて格納したルックアップテーブルと、入力値からインデックス値と非インデックス値を分離して取り出す分離部と、前記インデックス値にもとづいて、前記ルックアップテーブルを参照し、前記インデックス値に対応する前記参照情報を取得する参照部と、前記参照部により取得された前記参照情報とともに、前記非インデックス値もテクスチャに関する情報として利用して、テクスチャデータを演算処理する演算部とを含む。
【００１４】
本発明のさらに別の態様は、画像生成方法である。この方法は、付加情報付きのインデックス値の入力を受け、画像生成処理演算に必要な参照情報をインデックス番号に対応付けて格納したルックアップテーブルを参照することにより、インデックス値に対応する前記参照情報を取得し、取得された参照情報に前記付加情報を組み合わせて画像生成処理演算を行う。
【００１５】
本発明のさらに別の態様もまた、画像生成方法である。この方法は、入力値からインデックス値と非インデックス値を分離して取り出すステップと、前記インデックス値にもとづいて、画像生成処理演算に必要な参照情報を格納したルックアップテーブルを参照し、前記インデックス値に対応する前記参照情報を取得するステップと、前記参照情報と前記非インデックス値を利用して、画像生成処理演算を行うステップとを含む。
【００１６】
本発明のさらに別の態様もまた、画像生成方法である。この方法は、画像生成処理演算に必要な複数の情報の内、一部の情報の組み合わせをルックアップテーブルに格納し、前記ルックアップテーブルを参照するためのインデックス値に前記ルックアップテーブルに格納されない残りの情報を付加する形で画像情報を構成し、前記画像情報を符号化する。
【００１７】
本発明のさらに別の態様は、画像のデータ構造である。このデータ構造は、画像生成処理演算に必要な複数の情報の内、一部の情報の組み合わせを格納したルックアップテーブルを参照するためのインデックス値に前記ルックアップテーブルに格納されない残りの情報を付加する形で構成された画像情報が符号化されてなる。
【００１８】
本発明のさらに別の態様は、テクスチャ画像のデータ構造である。このデータ構造は、テクスチャの色を規定する情報を格納したルックアップテーブルを参照するためのインデックス値にテクスチャの色以外の特性を規定する情報を付加する形で構成された画像情報が符号化されてなる。
【００１９】
なお、以上の構成要素の任意の組合せ、本発明の表現を方法、装置、システム、コンピュータプログラム、データ構造などの間で変換したものもまた、本発明の態様として有効である。
【発明の効果】
【００２０】
本発明によれば、描画データを効率良く符号化し、画像の品質を高めることができる。
【発明を実施するための最良の形態】
【００２１】
図１は、実施の形態に係る画像生成装置２００の構成図である。画像生成装置２００は、描画ブロック１００と制御ブロック１１０と入出力ブロック１２０とがバス１５０で接続されて構成され、入出力ブロック１２０には記憶装置１３０と表示装置１４０が接続される。入出力ブロック１２０は、ネットワーク経由で他の装置と通信して、描画に必要なデータを外部から取得する構成であってもよい。
【００２２】
制御ブロック１１０は、この画像生成装置２００全体を制御するブロックであり、画像生成装置２００内部と、記憶装置１３０、表示装置１４０などの外部周辺装置との間のデータ転送の同期管理、画像生成装置２００内部の各ユニットからの割り込みの処理、タイマーの管理などを行う。
【００２３】
入出力ブロック１２０は、記憶装置１３０に格納された３次元モデル情報や各種パラメータを読み込み、描画ブロック１００に提供する。入出力ブロック１２０は、ネットワーク経由で外部装置から描画に必要なデータを受信して、描画ブロック１００に提供してもよい。入出力ブロック１２０は、描画ブロック１００が出力する描画データを表示装置１４０に表示する。
【００２４】
描画ブロック１００は、入出力ブロック１２０から与えられる３次元モデル情報をもとに描画データを生成し、フレームバッファに書き込むレンダリング処理を行う。
【００２５】
図２は、描画ブロック１００の構成図である。ラスタライザ１０は、入出力ブロック１２０から描画プリミティブの頂点データを受け取る。描画プリミティブは一般的には三角形であり、ラスタライザ１０は、３次元空間上の三角形を投影変換により描画平面上の三角形に変換するビュー変換を行い、さらに、描画平面上の三角形を描画平面の水平方向に沿ってスキャンしながら、１列毎に量子化されたピクセルに変換するラスター処理を行う。ラスタライザ１０により、描画プリミティブがピクセル展開され、各ピクセルについて、ＲＧＢカラー値、α値、Ｚ値を含むピクセル情報が算出される。
【００２６】
ラスタライザ１０は、スキャンラインに沿って所定の大きさのピクセル領域（以下、描画対象領域という）を生成し、後段の描画演算ユニット２０に与える。描画演算ユニット２０には、シェーダユニット３０と、メモリ４０と、テクスチャユニット５０とが含まれる。メモリ４０内には、フレームバッファとテクスチャバッファが設けられる。なお、フレームバッファとテクスチャバッファは、単一のメモリ内に設けられてもよく、物理的に別個のメモリに設けられてもよい。
【００２７】
ラスタライザ１０から描画演算ユニット２０に供給された描画対象領域は、キューにスタックされ、シェーダユニット３０は、キューにスタックされた描画対象領域を順に処理する。
【００２８】
シェーダユニット３０は、ラスタライザ１０により算出されたピクセル情報をもとに、シェーディング処理を行い、テクスチャユニット５０により得られたテクセル情報をもとに、テクスチャマッピング後のピクセル色を定め、メモリ４０内のフレームバッファに描画データを書き込む。シェーダユニット３０は、さらに、フレームバッファに保持された描画データに対して、フォギング、アルファブレンディング等の処理を行い、最終的な描画色を求め、フレームバッファの描画データを更新する。フレームバッファに記憶された描画データは、入出力ブロック１２０により読み出され、表示装置１４０に出力される。
【００２９】
テクスチャユニット５０は、シェーダユニット３０からテクスチャデータを指定するパラメータの入力を受け取り、テクスチャデータのアドレスを算出して、メモリ４０内のテクスチャバッファに対して必要なテクスチャデータを要求する。テクスチャユニット５０は、テクスチャバッファから読み出されたテクスチャデータをキャッシュし、バイリニア補間、トライリニア補間などのフィルタ処理を施して、シェーダユニット３０に出力する。
【００３０】
図３は、テクスチャユニット５０の構成図である。テクスチャユニット５０は、テクスチャ座標値をテクセル座標値に変換してテクスチャバッファ内のアドレスを算出し、算出されたアドレスをもとにテクセル情報を読み出し、ピクセルにマッピングされるテクセルのカラー情報をバイリニアフィルタなどのフィルタリング処理により求める。以下、テクスチャユニット５０の構成を説明する。
【００３１】
演算部５８は、シェーダユニット３０からテクスチャロード命令、パラメータ取得命令などの入力を受け付け、命令を順に処理して、処理結果をシェーダユニット３０に渡す。
【００３２】
テクスチャロード命令にはテクスチャデータを指定するテクスチャパラメータが含まれる。テクスチャパラメータは、テクスチャ座標値、テクセル座標値、ＬＯＤ（level of detail）値などを含む。演算部５８は、指定されたテクスチャデータに対してバイリニア補間などのフィルタリング処理を行う。
【００３３】
記憶部６０は、テクスチャデータ６２とルックアップテーブル６４を記憶する。ここでは、記憶部６０は、メモリ４０から読み出されたテクスチャデータ６２やルックアップテーブル６４を保持するキャッシュとして利用される。記憶部６０は、演算部５８からの要求に応じて、テクスチャデータ６２を演算部５８に供給するが、記憶部６０を介せずに、演算部５８がメモリ４０内のテクスチャバッファから直接テクスチャデータ６２を読み込む構成であってもよい。
【００３４】
ルックアップテーブル６４は、テクセルのカラー情報をインデックスして格納するカラールックアップテーブル（ＣＬＵＴ）として利用される他、必要に応じて他の情報をインデックスして格納する一般的なルックアップテーブル（ＬＵＴ）としても利用される。ルックアップテーブル６４はルックアップテーブル参照部７０により参照される。なお、ルックアップテーブル６４が一般的なルックアップテーブルとして利用される場合、シェーダユニット３０が直接ルックアップテーブル６４を参照することもできる。
【００３５】
テクスチャデータ６２は、各テクセルのカラー値を直接もつのではなく、カラー値に対するインデックスをテクセル値としてもつ。これにより、テクスチャデータ６２の効率的な圧縮が可能となる。インデックス値に対応するカラー値の情報は、ルックアップテーブル６４に参照情報として格納されて与えられる。ルックアップテーブル６４は、カラー情報を記述するエントリをインデックスの番号順に並べたものである。
【００３６】
演算部５８は、インデックス形式で与えられたテクセル値をカラー情報に変換するために、テクセル値を分離部７２に与える。分離部７２は、インデックス形式のテクセル値からインデックス値を分離して取り出し、インデックス値をルックアップテーブル参照部７０に与える。また、分離部７２は、インデックス形式のテクセル値にインデックス値以外の値（以下、非インデックス値という）が付加されている場合は、その非インデックス値を合成部７４に与える。
【００３７】
ルックアップテーブル参照部７０は、ルックアップテーブル６４を参照して、分離部７２から与えられたインデックス値に対応するカラー値を取得し、合成部７４に与える。合成部７４は、分離部７２から非インデックス値が与えられた場合は、ルックアップテーブル参照部７０から与えられたカラー値に、分離部７２から与えられた非インデックス値を合成してテクセルのカラー情報を作成し、そのカラー情報を演算部５８に与える。合成部７４は、分離部７２から非インデックス値が与えられていない場合は、ルックアップテーブル参照部７０から与えられたカラー値をそのままテクセルのカラー情報として演算部５８に与える。演算部５８は、テクセルのカラー情報をもとに、テクスチャデータにバイリニア補間などの演算を施す。
【００３８】
図４（ａ）、（ｂ）は、インデックス形式２１０で与えられるテクセル値が変換される様子を説明する図である。図４（ａ）に示すように、インデックス形式２１０は、インデックス値２１２に非インデックス値２１４が付加された構成を取る。
【００３９】
分離部７２は、インデックス形式２１０で与えられたテクセル値からインデックス値２１２と非インデックス値２１４を分離して取り出し、インデックス値２１２をルックアップテーブル参照部７０に、非インデックス値２１４を合成部７４に与える。ルックアップテーブル参照部７０は、ルックアップテーブル６４を参照し、インデックス値２１２に対応する値（以下、変換値２１６と呼ぶ）を取得して、合成部７４に与える。
【００４０】
合成部７４は、図４（ｂ）に示すように、変換値２１６に、元のインデックス形式２１０に含まれていた非インデックス値２１４を付加して、テクセルのカラー情報２２０を生成し、演算部５８に与える。
【００４１】
ただし、非インデックス値２１４はオプションであり、インデックス形式２１０がインデックス値２１２のみで構成されることもある。まず、インデックス形式２１０がインデックス値２１２のみで構成されている場合を説明する。
【００４２】
図５は、ＲＧＢ値とアルファ値を格納したルックアップテーブル６４の構成を説明する図である。このルックアップテーブル６４は、Ｒ値８１、Ｇ値８２、Ｂ値８３、およびアルファ値８４の組み合わせからなるカラー情報のエントリをインデックス番号順に２５６個格納したものである。各エントリには上から順に８ビットのインデックス値００００００００〜１１１１１１１１が対応する。たとえば、インデックス値００００００１０には、３番目にエントリされたカラー情報８５が対応しており、インデックス値００００００１０を指定して、ルックアップテーブル６４を参照することにより、このカラー情報８５を取り出すことができる。
【００４３】
なお、この例では、８ビットのインデックスを用いたため、ルックアップテーブル６４のエントリ数は２５６であるが、一般にエントリ数はインデックスのビット数に応じて任意に設計することができる。また、各エントリは、Ｒ、Ｇ、Ｂの各色およびアルファ値をそれぞれ８ビットで表現したため、全体で３２ビットで構成されるが、各エントリのビット数も表現すべき色やアルファ値の精度に応じた設計の自由度がある。
【００４４】
図６（ａ）、（ｂ）は、図５のルックアップテーブル６４にもとづいて、インデックス形式で与えられたテクセル値がカラー情報に変換される様子を説明する図である。図６（ａ）に示すように、インデックス値８６のみからなるインデックス形式２３０でテクセル値が与えられた場合、分離部７２は、インデックス値８６をそのままルックアップテーブル参照部７０に与える。
【００４５】
ルックアップテーブル参照部７０は、ルックアップテーブル６４の参照アドレスにインデックス値８６にもとづくオフセット値を加算し、インデックス値８６に対応するエントリをルックアップテーブル６４から読み出す。こうして、ルックアップテーブル参照部７０は、図５のルックアップテーブル６４からインデックス値８６に対応するカラー情報８５を取得し、合成部７４に与える。
【００４６】
合成部７４は、この場合、分離部７２から非インデックス値を与えられていないため、図６（ｂ）に示すように、ルックアップテーブル参照部７０から与えられたカラー情報８５をそのままテクセルのカラー情報２４０として演算部５８に与える。
【００４７】
ＲＧＢ値とアルファ値の間に相関がある場合は、図５のようにＲＧＢ値とアルファ値からなるカラー情報をルックアップテーブル６４に格納するが、ＲＧＢ値とアルファ値の間に相関がないか、相関が弱い場合は、ＲＧＢ値のみをルックアップテーブル６４に格納し、アルファ値は、ルックアップテーブル６４を参照するためのインデックス値に非インデックス値として付加する。以下、インデックス値にアルファ値を付加したインデックス形式を用いる場合を説明する。
【００４８】
図７は、ＲＧＢ値を格納したルックアップテーブル６４の構成を説明する図である。ルックアップテーブル６４は、Ｒ値８１、Ｇ値８２、およびＢ値８３の組み合わせからなるＲＧＢ値のエントリをインデックス番号順に２５６個格納したものである。各エントリには上から順に８ビットのインデックス値００００００００〜１１１１１１１１が対応する。たとえば、インデックス値００００００１０には、３番目にエントリされたＲＧＢ値８８が対応しており、インデックス値００００００１０を指定して、ルックアップテーブル６４を参照することで、このＲＧＢ値８８を取り出すことができる。
【００４９】
図８（ａ）、（ｂ）は、図７のルックアップテーブル６４にもとづいて、インデックス形式で与えられたテクセル値がカラー情報に変換される様子を説明する図である。図８（ａ）に示すように、インデックス値８６とアルファ値８７からなるインデックス形式２５０でテクセル値が与えられた場合、分離部７２は、インデックス形式２５０からインデックス値８６とアルファ値８７を分離して取り出し、インデックス値８６をルックアップテーブル参照部７０に与え、アルファ値８７を合成部７４に与える。
【００５０】
ルックアップテーブル参照部７０は、図７のルックアップテーブル６４を参照して、インデックス値８６に対応するＲＧＢ値８８を読み出し、合成部７４に与える。合成部７４は、図８（ｂ）に示すように、ルックアップテーブル参照部７０がルックアップテーブル６４から読み出したＲＧＢ値８８と、分離部７２がインデックス形式２５０から取り出したアルファ値８７とを合成して、Ｒ値、Ｇ値、Ｂ値、アルファ値からなるテクセルのカラー情報２６０を作成し、演算部５８に与える。
【００５１】
図９は、テクスチャユニット５０によるテクスチャマッピング処理の手順を説明するフローチャートである。
【００５２】
演算部５８は、テクセル座標（ｕ，ｖ）をもとに、記憶部６０内のテクスチャデータ６２を読み出す（Ｓ１０）。
【００５３】
テクスチャデータ６２が、インデックス値にアルファ値が付加されたインデックス形式で与えられた場合（Ｓ１１のＹ）、分離部７２は、テクセル値からインデックス値とアルファ値を取り出す（Ｓ１２）。ルックアップテーブル参照部７０は、図７のタイプのルックアップテーブル６４を参照し、インデックス値をＲＧＢ値に変換する（Ｓ１４）。合成部７４は、ルックアップテーブル６４から得られたＲＧＢ値にアルファ値を合成し、テクセルのカラー情報を作成する（Ｓ１６）。
【００５４】
テクスチャデータ６２が、インデックス値のみからなるインデックス形式で与えられた場合（Ｓ１１のＮ）、分離部７２は、インデックス値をルックアップテーブル参照部７０に与え、ルックアップテーブル参照部７０は、図５のタイプのルックアップテーブル６４を参照し、インデックス値をＲＧＢ値とアルファ値からなるカラー情報に変換する（Ｓ１５）。
【００５５】
演算部５８は、得られたテクセルのカラー情報をもとに、動作モードにしたがってバイリニア補間などのフィルタリングを行う（Ｓ１８）。
【００５６】
アルファ値だけをルックアップテーブル６４に格納しないで、インデックスに直接付加する方法は、描画対象領域においてアルファ値が画素のＲＧＢ値に関係なく、いろいろな値をとりうる場合に特に有効である。以下、そのような例を説明する。
【００５７】
図１０は、複雑な形状を描画する際のアルファ値の設定例を説明する図である。同図のように、４つの点ｖ１〜ｖ４を頂点とする四角形を、２つのトライアングルストリップに分けて描画する。ｖ１、ｖ２、ｖ３を頂点とする三角形と、ｖ２、ｖ３、ｖ４を頂点とする三角形において、複雑な形状３００にテクスチャをマップして描画する。形状３００は細部が複雑な形をしているが、ここでは簡単に図示している。アルファ値が８ビットで表される場合、形状３００の外部ではアルファ値は０であり、形状３００の内部ではアルファ値は２５５である。形状３００の境界ではアルファ値は１から２５４までの中間値をとる。ここでアルファ値が小さいほど透過率が高く、アルファ値が０のとき、完全に透明であり、アルファ値が２５５のとき、完全に不透明である。
【００５８】
樹木や木の葉のように境界線が複雑な形状にテクスチャをマッピングして描画する場合、境界線上で描画対象のアルファ値を連続的に変化させて、背景とブレンドすることにより、見かけ上の解像度を高くすることが行われる。以下、このようなテクスチャの描画手法を「アルファ抜きテクスチャ」と呼ぶ。アルファ抜きテクスチャの場合、描画対象の境界線上でアルファ値が連続的に変化し、たとえば、アルファ値を８ビットで表現する場合、１から２５４の間のほとんどすべての中間値をとりうることになる。このため、境界線上では、アルファ値とＲＧＢ値との関連性はほとんどなくなる。
【００５９】
図１１は、図１０の形状３００の境界線上でアルファ値を決める方法を説明する図である。境界線上の１ピクセル３１０を縦横８個のサブピクセルに分け、合計６４サブピクセルに分割する。１ピクセル３１０内で、図１０の形状３００が同図の斜線で示す位置にあるとして、形状３００がわずかでも内部に存在しているサブピクセルの個数をカウントする。同図の例では、点線よりも右側のサブピクセルについて、形状３００がサブピクセルの内部に存在しており、その数は４１個である。そこで、アルファ値をα＝（４１／６４）×２５５≒１６３と計算する。
【００６０】
図１０において、形状３００の内部では、アルファ値は２５５であり、形状３００にマップされるテクスチャのＲＧＢ値としてはいろいろな値が取り得ても、アルファ値の取り得る値は２５５に限定され、ＲＧＢ値とアルファ値の出現頻度の間には強い相関が現れる。しかしながら、形状３００の境界線上では、図１１で説明したように、アルファ値は１から２５４までのあらゆる値を取り得るため、ＲＧＢ値とアルファ値の出現頻度の間にはほとんど相関が現れなくなる。
【００６１】
このような場合、ＲＧＢ値とアルファ値の両方をルックアップテーブル６４に格納すると、ルックアップテーブル６４のエントリ数を一定にした場合、アルファ値の精度を保つためには、ＲＧＢ値の組み合わせのパターン数を減らして格納することになり、逆にＲＧＢ値の精度を保つためには、アルファ値のパターン数を減らして格納することになる。
【００６２】
そこで、ＲＧＢ値だけをルックアップテーブル６４に格納し、アルファ値をルックアップテーブル６４を参照するインデックス値に付加して直接与えるようにして、アルファ値付きのテクスチャを構成し、テクスチャ画像を圧縮符号化する。こうすれば、記憶容量を効率よく利用して、テクスチャの符号化効率を上げ、同時に描画品質を高めることができる。
【００６３】
以上、本発明を実施の形態をもとに説明した。実施の形態は例示であり、それらの各構成要素や各処理プロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。
【００６４】
そのような変形例を説明する。上記の説明では、インデックス値に付加する非インデックス値としてアルファ値を説明したが、インデックス値に付加する情報はアルファ値に限られない。たとえば、画素の反射率を示す反射係数をインデックス値に付加してもよい。描画対象領域において、ＲＧＢ値と反射係数は関連性が低いため、ＲＧＢ値はルックアップテーブル６４に格納し、反射係数はルックアップテーブル６４に格納せずに、インデックス値に直接付加した方が、ＲＧＢ値の割り当ての自由度を犠牲にせずに、限られたテーブルの容量を有効に活用することができる。
【００６５】
また、上記の説明では、ＲＧＢ値のような色情報と、透過率、反射率などを示す色以外の情報とに分けて、色情報をルックアップテーブル６４に格納し、色以外の情報をインデックス値に付加させたが、必ずしも色情報と色以外の情報で分けなくてもよい。たとえば、Ｒ値、Ｇ値、Ｂ値、アルファ値のうち、Ｇ値、Ｂ値、アルファ値の３つの値の出現頻度の間に相関があり、これら３つの値の出現頻度と、Ｒ値の出現頻度との間には相関が低いといった場合には、Ｇ値、Ｂ値、アルファ値の３つの値をルックアップテーブル６４に格納し、Ｒ値だけをインデックスに付加させて直接与えるようにしてもよい。このように描画対象領域におけるＲＧＢ値、アルファ値などの各要素の出現頻度の相関を統計的に評価し、他の要素との間で相関が比較的低いものについては、ルックアップテーブル６４に格納しないで、インデックスに付加し、ルックアップテーブル６４を介せず直接与えるようにしてもよい。このように画像成分のうち、もっとも出現頻度の相関が低い成分は、ルックアップテーブル６４に格納せずに、そのままの値で直接与えることにより、テクスチャデータの符号化の効率を良くすることができる。
【００６６】
上記の説明では、テクスチャユニット５０がテクセル毎にカラーパレットを参照する例として、ルックアップテーブル６４の構成を説明したが、ルックアップテーブルにはカラー情報以外の情報をもたせてもよい。たとえば、テクスチャの貼り付けられる面の法線ベクトルの情報にインデックスをつけ、インデックス順に法線ベクトルの情報をルックアップテーブルに格納してもよい。法線ベクトルの情報はバンプマッピングに利用される。また、ルックアップテーブルに非線形の数学関数の代表点の値にインデックスをつけ、インデックス順に代表点の値をルックアップテーブルに格納してもよい。この場合、シェーダユニット３０は、ルックアップテーブルを参照して代表点の座標値を取得し、代表点間を適宜補間計算することにより関数値を求める。このようにルックアップテーブル６４を使用する場合においても、他の要素との間で相関の低い要素はルックアップテーブル６４に格納しないで、インデックスに付加する形で直接与えるようにすれば、テーブルの容量を効率よく利用することができる。
【００６７】
上記の説明では、カラールックアップテーブルはインデックス順にカラー値をエントリとして格納したものであったが、カラールックアップテーブルは、インデックス値とカラー値とを対応づけて格納したものであってもよい。その場合、ルックアップテーブル参照部７０は、テクセルのインデックス値をキーとしてカラールックアップテーブルを検索し、インデックス値に対応するカラー値を取得する。さらに、カラールックアップテーブルはハッシュテーブルの構成をとってもよい。その場合、ルックアップテーブル参照部７０は、インデックス値のハッシュ値にもとづいてカラールックアップテーブルを検索する。
【００６８】
実施の形態では、ルックアップテーブルを用いたテクスチャマッピングなどのピクセル演算処理を説明したが、同様の構成のルックアップテーブルは、ジオメトリ演算にも利用することができる。たとえば、ディスプレースメントマッピング（Displacement Mapping）で参照するルックアップテーブルに本発明を適用してもよい。レンダリング過程でのマッピングにより擬似的にポリゴン表面に凹凸をつけるバンプマップとは異なり、ディスプレースメントマッピングは、ジオメトリ演算の過程で頂点データを直接操作することでポリゴン表面に変形を加える。具体的には、ディスプレースメントマッピングでは、ポリゴンモデルに凹凸を表す頂点情報を貼り込む。ベースとなるポリゴン表面に法線データが貼り付けられることで法線方向に頂点の座標値が変化し、より複雑な形状が生成される。このディスプレースメントマッピングに本発明を適用し、頂点情報の内、互いに相関の強い要素をルックアップテーブルの格納し、それ以外の相関の弱い要素をインデックスに付加して直接与えるようにしてもよい。
【図面の簡単な説明】
【００６９】
【図１】実施の形態に係る画像生成装置の構成図である。
【図２】図１の描画ブロックの構成図である。
【図３】図２のテクスチャユニットの構成図である。
【図４】インデックス形式で与えられるテクセル値が変換される様子を説明する図である。
【図５】ＲＧＢ値とアルファ値を格納したルックアップテーブルの構成を説明する図である。
【図６】図５のルックアップテーブルにもとづいて、インデックス形式で与えられたテクセル値がカラー情報に変換される様子を説明する図である。
【図７】ＲＧＢ値を格納したルックアップテーブルの構成を説明する図である。
【図８】図７のルックアップテーブルにもとづいて、インデックス形式で与えられたテクセル値がカラー情報に変換される様子を説明する図である。
【図９】実施の形態に係るテクスチャユニットによるテクスチャマッピング処理の手順を説明するフローチャートである。
【図１０】複雑な形状を描画する際のアルファ値の設定例を説明する図である。
【図１１】図１０の複雑な形状の境界線上でアルファ値を決める方法を説明する図である。
【符号の説明】
【００７０】
１０  ラスタライザ、  ２０  描画演算ユニット、  ３０  シェーダユニット、  ４０  メモリ、  ５０  テクスチャユニット、  ５８  演算部、  ６０  記憶部、  ６２  テクスチャデータ、  ６４  ルックアップテーブル、  ７０  ルックアップテーブル参照部、  ７２  分離部、  ７４  合成部、  １００  描画ブロック、  １１０  制御ブロック、  １２０  入出力ブロック、  １３０  記憶装置、  １４０  表示装置、  １５０  バス、  ２００  画像生成装置。
【図１】
2005301414.tif 000003
【図２】
2005301414.tif 000004
【図３】
2005301414.tif 000005
【図４】
2005301414.tif 000006
【図５】
2005301414.tif 000007
【図６】
2005301414.tif 000008
【図７】
2005301414.tif 000009
【図８】
2005301414.tif 000010
【図９】
2005301414.tif 000011
【図１０】
2005301414.tif 000012
【図１１】
2005301414.tif 000013