(57)【要約】【課題】  単一のカラールックアップテーブルを用いたテクスチャマッピングは、メモリの利用効率が良くない。【解決手段】  演算部５８は、記憶部６０内のテクスチャデータ６２を参照してインデックスカラー形式のテクセル情報を取得する。統合ルックアップテーブル６４は、描画対象領域の詳細度（ＬＯＤ）別のカラールックアップテーブルが複数格納された構造をもつ。ルックアップテーブル参照部７０は、ＬＯＤ算出部６８により求められたテクセルのＬＯＤ値にもとづいて、統合ルックアップテーブル６４に格納されたＬＯＤ別のカラールックアップテーブルを選択的に参照し、テクセルのインデックス値に対応するカラー情報を取得し、演算部５８に出力する。演算部５８は、テクセルのカラー情報をもとにバイリニア補間などのフィルタ処理を施し、処理後のテクセル情報を出力する。【選択図】図４
2005301758.tif 000002
【特許請求の範囲】
【請求項１】
単一の記憶領域を複数のブロックに分けて、各ブロックに個別ルックアップテーブルを割り当てた統合ルックアップテーブルと、
前記統合ルックアップテーブル内のいずれかのブロックの位置を指定することにより、前記統合ルックアップテーブル内の複数の前記個別ルックアップテーブルのいずれかを選択的に参照し、画像生成処理演算に必要な参照情報を取得する参照部とを含むことを特徴とする画像生成装置。
【請求項２】
前記個別ルックアップテーブルは、インデックス番号順に前記参照情報を格納したものであり、
前記参照部は、前記演算部により指定された前記インデックス番号に対応する前記参照情報を前記個別ルックアップテーブルから取得することを特徴とする請求項１に記載の画像生成装置。
【請求項３】
前記複数のブロックは、それぞれ異なる描画詳細度に対応づけられており、前記参照部は、描画対象領域の描画詳細度に応じたブロックの位置を指定することにより、前記描画対象領域の描画詳細度に対応する個別ルックアップテーブルを選択的に参照することを特徴とする請求項１または２に記載の画像生成装置。
【請求項４】
前記複数の個別ルックアップテーブルに格納される前記参照情報の個数は、前記描画詳細度に応じて異なることを特徴とする請求項３に記載の画像生成装置。
【請求項５】
前記参照情報はカラー情報であることを特徴とする請求項１から４のいずれかに記載の画像生成装置。
【請求項６】
単一の記憶領域を複数のブロックに分けて、テクスチャに関する参照情報の異なる組み合わせを格納した個別ルックアップテーブルを各ブロックに割り当てた統合ルックアップテーブルと、
前記統合ルックアップテーブル内の複数の前記個別ルックアップテーブルのいずれかを選択的に参照し、前記参照情報を取得する参照部と、
前記参照部により取得された前記参照情報を利用して、テクスチャデータを演算処理する演算部とを含むことを特徴とする画像生成装置。
【請求項７】
前記統合ルックアップテーブルのブロック割り当てに関する設定情報を格納するレジスタをさらに含み、
前記参照部は、前記レジスタに設定された前記ブロック割り当てに関する設定情報をもとに、特定の個別ルックアップテーブルの割り当て位置を取得することを特徴とする請求項６に記載の画像生成装置。
【請求項８】
前記複数の個別ルックアップテーブルは、それぞれ、描画詳細度別に前記テクスチャに関する参照情報の異なる組み合わせを格納したものであり、
前記参照部は、テクスチャデータのマッピング先の描画対象領域の描画詳細度を指定することにより、指定された描画詳細度に対応する個別ルックアップテーブルを選択的に参照することを特徴とする請求項６または７に記載の画像生成装置。
【請求項９】
前記テクスチャデータのマッピング先の描画対象領域の描画詳細度を、ピクセル座標の局所変化に対するテクスチャのテクセル座標の局所変化により算出する詳細度算出部をさらに含むことを特徴とする請求項８に記載の画像生成装置。
【請求項１０】
前記テクスチャデータは、レイヤの異なる複数のテクスチャを含み、
前記複数の個別ルックアップテーブルは、それぞれ、前記レイヤ別に前記テクスチャに関する参照情報の異なる組み合わせを格納したものであり、
前記参照部は、前記演算部において利用されるテクスチャのレイヤを指定することにより、指定されたレイヤに対応する個別ルックアップテーブルを選択的に参照することを特徴とする請求項６または７に記載の画像生成装置。
【請求項１１】
前記テクスチャデータは、解像度レベルの異なる複数のテクスチャを含み、
前記複数の個別ルックアップテーブルは、それぞれ、前記解像度レベル別に前記テクスチャに関する参照情報の異なる組み合わせを格納したものであり、
前記参照部は、前記演算部において利用されるテクスチャの解像度レベルを指定することにより、指定された解像度レベルに対応する個別ルックアップテーブルを選択的に参照することを特徴とする請求項６または７に記載の画像生成装置。
【請求項１２】
前記個別ルックアップテーブルは、インデックス番号順にカラー情報を格納したものであり、
前記参照部は、前記演算部により指定された前記インデックス番号に対応する前記カラー情報を前記個別ルックアップテーブルから取得することにより、インデックス形式で与えられたテクセル色に関する情報をカラー情報に変換することを特徴とする請求項６から１１のいずれかに記載の画像生成装置。
【請求項１３】
単一の記憶領域を複数のブロックに分けて、各ブロックに個別ルックアップテーブルを割り当てた統合ルックアップテーブルにおいて、参照アドレスをオフセットすることにより、複数の前記個別ルックアップテーブルのいずれかに切り替えて参照し、画像生成に必要な参照情報を取得することを特徴とする画像生成方法。
【請求項１４】
前記複数の個別ルックアップテーブルは、それぞれ、描画詳細度別に画像生成に必要な参照情報を格納したものであり、前記参照アドレスのオフセットにより、描画対象領域の描画詳細度に対応する個別ルックアップテーブルが選択的に参照されることを特徴とする請求項１３に記載の画像生成方法。
【請求項１５】
単一の記憶領域を複数のブロックに分けて、各ブロックに個別ルックアップテーブルを割り当てた統合ルックアップテーブルのブロック割り当てに関する設定情報をレジスタに設定するステップと、
前記レジスタに設定された前記ブロック割り当てに関する設定情報をもとに、特定の個別ルックアップテーブルの割り当て位置を求め、参照先の個別ルックアップテーブルを切り替えるステップと、
前記特定の個別ルックアップテーブルを参照して、画像生成に必要な参照情報を取得するステップとを含むことを特徴とする画像生成方法。
【請求項１６】
前記複数の個別ルックアップテーブルは、それぞれ、描画詳細度別に画像生成に必要な参照情報を格納したものであり、
前記切り替えるステップは、描画対象領域の描画詳細度に応じて、前記参照先の個別ルックアップテーブルを切り替えることを特徴とする請求項１５に記載の画像生成方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は画像データを生成する画像生成装置および画像生成方法に関する。
【背景技術】
【０００２】
３次元コンピュータグラフィックスでは、一般的に３次元空間のオブジェクトを多数のポリゴンにより表現するポリゴンモデルが利用される。ポリゴンモデルの描画処理において、光源、視点位置、物体表面の反射率などを考慮してポリゴン表面に陰影をつけるシェーディングが行われる。また、写実性の高い画像を生成するために、ポリゴンモデルの表面にテクスチャ画像を貼り付けるテクスチャマッピングが行われる。
【０００３】
テクスチャ画像のデータ量を少なくするために、各テクセルにカラー値をもたせるのではなく、カラー値のインデックスをもたせておき、テクスチャマッピング時にカラールックアップテーブルを参照して、実際のカラー値に変換するインデックスカラー方式がとられることがある。これはカラーパレットとも呼ばれる方式であり、あらかじめカラー値を定義した色見本をカラールックアップテーブルあるいはカラーパレットとして用意しておき、各テクセルには、カラールックアップテーブルを参照するインデックス情報だけを格納する。たとえば、使用する色見本が２５６色の場合、テクスチャ画像の各テクセルに８ビット分のインデックスを格納するだけでよく、色見本が１６色の場合、４ビット分のインデックスを格納するだけでよいため、テクスチャ画像のデータ量を大幅に削減することができる。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
インデックスカラー形式で与えられたテクスチャ画像を用いてテクスチャマッピングを行う場合、カラールックアップテーブルのサイズはできるだけ小さくした方がメモリ効率がよいが、高い描画品質を保つためには、色見本としてある程度の色数が必要である。一方、あまり詳細に描画する必要のない領域では色数は少なくてよい。一般には、色数の多い方に合わせて１つの大きなカラールックアップテーブルを用意し、詳細に描画する必要のない領域でも同じパレットを利用してカラー値のインデキシングを行うことが行われており、メモリの利用効率がよくない。
【０００５】
本発明はこうした課題に鑑みてなされたものであり、その目的は、記憶容量と計算量の面で効率よく描画処理を行うことのできる画像生成装置および画像生成方法を提供することにある。
【課題を解決するための手段】
【０００６】
上記課題を解決するために、本発明のある態様の画像生成装置は、単一の記憶領域を複数のブロックに分けて、各ブロックに個別ルックアップテーブルを割り当てた統合ルックアップテーブルと、統合ルックアップテーブル内のいずれかのブロックの位置を指定することにより、統合ルックアップテーブル内の個別ルックアップテーブルを選択的に参照し、画像生成処理演算に必要な参照情報を取得する参照部とを含む。「参照情報」は、一例としてカラー情報、関数値などであり、画像生成処理演算の際に参照されるいろいろな情報である。ここで、「カラー情報」は、ＲＧＢ値以外に、透過率を示すα値なども含む広い概念である。
【０００７】
本発明の別の態様もまた、画像生成装置である。この装置は、単一の記憶領域を複数のブロックに分けて、テクスチャに関する参照情報の異なる組み合わせを格納した個別ルックアップテーブルを各ブロックに割り当てた統合ルックアップテーブルと、統合ルックアップテーブル内の複数の個別ルックアップテーブルのいずれかを選択的に参照し、参照情報を取得する参照部と、参照情報を利用して、テクスチャデータを演算処理する演算部とを含む。
【０００８】
複数の個別ルックアップテーブルは、それぞれ、描画詳細度別にテクスチャに関する参照情報の異なる組み合わせを格納したものであり、参照部は、テクスチャデータのマッピング先の描画対象領域の描画詳細度を指定することにより、指定された描画詳細度に対応する個別ルックアップテーブルを選択的に参照してもよい。「描画対象領域」とは、たとえば、描画対象のオブジェクトの部分領域、ポリゴンモデルにおける各ポリゴンの表面、所定サイズのピクセル領域など、特に大きさを特定しない描画領域である。「描画詳細度」とは、描画対象領域を描画する際に求められる詳細度である。
【０００９】
本発明のさらに別の態様は、画像生成方法である。この方法は、単一の記憶領域を複数のブロックに分けて、各ブロックに個別ルックアップテーブルを割り当てた統合ルックアップテーブルにおいて、参照アドレスをオフセットすることにより、複数の個別ルックアップテーブルのいずれかに切り替えて参照し、画像生成に必要な参照情報を取得する。
【００１０】
本発明のさらに別の態様もまた、画像生成方法である。この方法は、単一の記憶領域を複数のブロックに分けて、各ブロックに個別ルックアップテーブルを割り当てた統合ルックアップテーブルのブロック割り当てに関する設定情報をレジスタに設定するステップと、レジスタに設定されたブロック割り当てに関する設定情報をもとに、特定の個別ルックアップテーブルの割り当て位置を求め、参照先の個別ルックアップテーブルを切り替えるステップと、特定の個別ルックアップテーブルを参照して、画像生成に必要な参照情報を取得するステップとを含む。
【００１１】
なお、以上の構成要素の任意の組合せ、本発明の表現を方法、装置、システム、コンピュータプログラムなどの間で変換したものもまた、本発明の態様として有効である。
【発明の効果】
【００１２】
本発明によれば、品質の高い描画データを高速に生成することができる。
【発明を実施するための最良の形態】
【００１３】
実施の形態１
図１は、実施の形態１に係る画像生成装置２００の構成図である。画像生成装置２００は、描画ブロック１００と制御ブロック１１０と入出力ブロック１２０とがバス１５０で接続されて構成され、入出力ブロック１２０には記憶装置１３０と表示装置１４０が接続される。入出力ブロック１２０は、ネットワーク経由で他の装置と通信して、描画に必要なデータを外部から取得する構成であってもよい。
【００１４】
制御ブロック１１０は、この画像生成装置２００全体を制御するブロックであり、画像生成装置２００内部と、記憶装置１３０、表示装置１４０などの外部周辺装置との間のデータ転送の同期管理、画像生成装置２００内部の各ユニットからの割り込みの処理、タイマーの管理などを行う。
【００１５】
入出力ブロック１２０は、記憶装置１３０に格納された３次元モデル情報や各種パラメータを読み込み、描画ブロック１００に提供する。入出力ブロック１２０は、ネットワーク経由で外部装置から描画に必要なデータを受信して、描画ブロック１００に提供してもよい。入出力ブロック１２０は、描画ブロック１００が出力する描画データを表示装置１４０に表示する。
【００１６】
描画ブロック１００は、入出力ブロック１２０から与えられる３次元モデル情報をもとに描画データを生成し、フレームバッファに書き込むレンダリング処理を行う。
【００１７】
図２は、描画ブロック１００の構成図である。ラスタライザ１０は、入出力ブロック１２０から描画プリミティブの頂点データを受け取る。描画プリミティブは一般的には三角形であり、ラスタライザ１０は、３次元空間上の三角形を投影変換により描画平面上の三角形に変換するビュー変換を行い、さらに、描画平面上の三角形を描画平面の水平方向に沿ってスキャンしながら、１列毎に量子化されたピクセルに変換するラスター処理を行う。ラスタライザ１０により、描画プリミティブがピクセル展開され、各ピクセルについて、ＲＧＢカラー値、α値、Ｚ値を含むピクセル情報が算出される。
【００１８】
ラスタライザ１０は、スキャンラインに沿って所定の大きさのピクセル領域（以下、描画対象領域という）を生成し、後段の描画演算ユニット２０に与える。描画演算ユニット２０には、シェーダユニット３０と、メモリ４０と、テクスチャユニット５０とが含まれる。メモリ４０内には、フレームバッファとテクスチャバッファが設けられる。なお、フレームバッファとテクスチャバッファは、単一のメモリ内に設けられてもよく、物理的に別個のメモリに設けられてもよい。
【００１９】
ラスタライザ１０から描画演算ユニット２０に供給された描画対象領域は、キューにスタックされ、シェーダユニット３０は、キューにスタックされた描画対象領域を順に処理する。
【００２０】
シェーダユニット３０は、ラスタライザ１０により算出されたピクセル情報をもとに、シェーディング処理を行い、テクスチャユニット５０により得られたテクセル情報をもとに、テクスチャマッピング後のピクセル色を定め、メモリ４０内のフレームバッファに描画データを書き込む。シェーダユニット３０は、さらに、フレームバッファに保持された描画データに対して、フォギング、アルファブレンディング等の処理を行い、最終的な描画色を求め、フレームバッファの描画データを更新する。フレームバッファに記憶された描画データは、入出力ブロック１２０により読み出され、表示装置１４０に出力される。
【００２１】
テクスチャユニット５０は、シェーダユニット３０からテクスチャデータを指定するパラメータの入力を受け取り、テクスチャデータのアドレスを算出して、メモリ４０内のテクスチャバッファに対して必要なテクスチャデータを要求する。テクスチャユニット５０は、テクスチャバッファから読み出されたテクスチャデータをキャッシュし、バイリニア補間、トライリニア補間などのフィルタ処理を施して、シェーダユニット３０に出力する。
【００２２】
図３は、描画演算ユニット２０の詳細な構成を説明する図である。描画演算ユニット２０内のシェーダユニット３０は、非同期動作する複数のシェーダクラスタ３２をもち、それぞれが担当するピクセルデータを処理することでピクセルの描画処理を並列に実行する。
【００２３】
分配部１２は、キューにスタックされた描画対象領域の処理を担当するシェーダクラスタ３２を決定し、各種パラメータを生成して、描画対象領域とパラメータをそのシェーダクラスタ３２に与える。
【００２４】
描画演算ユニット２０内には、１つのテクスチャユニット５０が設けられており、各シェーダクラスタ３２は、テクスチャデータを指定するためのテクスチャパラメータを含むテクスチャロード命令をテクスチャユニット５０に入力し、テクスチャユニット５０からテクスチャマッピング処理後のテクスチャデータの出力を受け取る。
【００２５】
シェーダクラスタ３２は、フラットシェーディング、グーローシェーディングなどのシェーディングを行い、各描画ピクセルのカラー値を決定し、メモリ４０内のフレームバッファに書き込む。さらに、シェーダクラスタ３２は、テクスチャユニット５０から出力されたテクスチャデータをもとに、ピクセルにマッピングされたテクセルのカラー値をフレームバッファから読み出されたピクセルのカラー値にブレンドする。シェーダクラスタ３２は、ピクセルのピクセル色、テクセル色、アルファ値、フォグ値が決まると、最終的な描画ピクセルデータをフレームバッファに書き込む。メモリアクセス部３４は、シェーダクラスタ３２によるフレームバッファに対するピクセルデータの読み書きを制御する。
【００２６】
なお、テクスチャユニット５０は、シェーダクラスタ３２からテクスチャロード命令を受けると、テクスチャのアドレス計算、メモリアクセスおよびフィルタリングの処理を行うため、シェーダクラスタ３２における演算に比べて出力が得られるまでに時間がかかる。そのため、シェーダクラスタ３２はテクスチャロード命令の実行後、処理中の描画対象領域以外の描画対象領域の処理を行い、実行効率を上げる。
【００２７】
図４は、テクスチャユニット５０の構成図である。テクスチャユニット５０は、テクスチャ座標値をテクセル座標値に変換してテクスチャバッファ内のアドレスを算出し、算出されたアドレスをもとにテクセル情報を読み出し、ピクセルにマッピングされるテクセルのカラー情報をバイリニアフィルタなどのフィルタリング処理により求める。以下、テクスチャユニット５０の構成を説明する。
【００２８】
演算部５８は、複数のシェーダクラスタ３２からテクスチャロード命令、パラメータ取得命令などの入力を受け付け、命令を順に処理して、処理結果をシェーダクラスタ３２に渡す。
【００２９】
テクスチャロード命令にはテクスチャデータを指定するテクスチャパラメータが含まれる。テクスチャパラメータは、テクスチャ座標値、テクセル座標値、ＬＯＤ（level of detail）値などを含む。このＬＯＤ値はシェーダクラスタ３２により計算されたものであり、後述のテクスチャユニット５０内で計算されるＬＯＤ値と区別するために、シェーダクラスタ３２により与えられるＬＯＤ値を外部入力ＬＯＤ値と呼び、後者のテクスチャユニット５０内で計算されるＬＯＤ値を内部生成ＬＯＤ値と呼ぶ。
【００３０】
外部入力ＬＯＤ値はテクスチャパラメータとして与えられることも、与えられないこともある。また、外部入力ＬＯＤ値は描画オブジェクト単位に与えても、ピクセル単位で与えてもよい。外部入力ＬＯＤ値が与えられる場合は、外部入力ＬＯＤ値が内部生成ＬＯＤ値に優先して利用される。内部生成ＬＯＤ値は、後述のようにテクスチャがマッピングされるポリゴン表面の傾きによって決まる値であり、テクセルの奥行きに応じた値となる。一般には遠いほど詳細度を下げてテクスチャを描画するが、遠くのオブジェクトを詳細度を上げて描画する場合もある。そのような場合に、外部入力ＬＯＤ値を与えて、内部生成ＬＯＤ値に優先させることができる。以下では、混乱の生じない限り、内部生成ＬＯＤ値を単にＬＯＤ値と呼んで説明する。
【００３１】
コンフィグレーションレジスタ群５２は、テクスチャユニット５０の動作を規定する各種設定情報をコンフィグレーション情報として保持するコンフィグレーションレジスタの集まりである。コンフィグレーションレジスタ群５２は設定された値を保持するため、同じモードや条件を直前の設定のままで続けて使用する場合は、改めて設定し直す必要はない。コンフィグレーションレジスタ群５２には、テクスチャを使用するための動作モードやパラメータをそれぞれ保持するレジスタの他、後述の統合ルックアップテーブル６４を使用するためのフラグ、統合ルックアップテーブル６４の基準アドレス、テーブル内の個別カラールックアップテーブルの割り当て形式や割り当て位置に関する情報などをそれぞれ保持するレジスタがある。
【００３２】
演算部５８は、コンフィグレーションレジスタ群５２に記憶された設定情報にもとづいてテクスチャデータに対してバイリニア補間などのフィルタリング処理を行う。
【００３３】
記憶部６０は、テクスチャデータ６２と統合ルックアップテーブル６４を記憶する。記憶部６０は、メモリ４０から読み出されたテクスチャデータ６２や統合ルックアップテーブル６４を保持するバッファとして利用される。記憶部６０は、演算部５８からの要求に応じて、テクスチャデータ６２を演算部５８に供給するが、記憶部６０を介せずに、演算部５８がメモリ４０内のテクスチャバッファから直接テクスチャデータ６２を読み込む構成であってもよい。
【００３４】
統合ルックアップテーブル６４は、テクセルのカラー情報をインデックスして格納するカラールックアップテーブル（ＣＬＵＴ）として利用される他、必要に応じて他の情報をインデックスして格納する一般的なルックアップテーブル（ＬＵＴ）としても利用される。カラールックアップテーブルはルックアップテーブル参照部７０により参照される。また、一般的なルックアップテーブルの場合、シェーダクラスタ３２が直接ルックアップテーブルを参照することもできる。
【００３５】
テクスチャデータは、各テクセルのカラー値を直接もつのではなく、カラー値に対するインデックスをテクセル値としてもつ。これにより、テクスチャデータの効率的な圧縮が可能となる。インデックス値に対応するカラー値の情報は、統合ルックアップテーブル６４に参照情報として格納されて与えられる。統合ルックアップテーブル６４は、カラー情報を記述するエントリをインデックスの番号順に並べたカラールックアップテーブルを複数格納したものである。
【００３６】
演算部５８は、インデックス形式で与えられたテクセル色を実際のカラー値に変換するために、テクセルのインデックス値をルックアップテーブル参照部７０に入力として与える。ルックアップテーブル参照部７０は、統合ルックアップテーブル６４を参照して、テクセルのインデックス値に対応するカラー情報を取得し、演算部５８に出力する。
【００３７】
図５は、統合ルックアップテーブル６４の構成を説明する図である。統合ルックアップテーブル６４は、単一の記憶領域を複数のブロックに分割し、ブロック毎に個別ルックアップテーブル６５ａ〜６５ｎ（以下、総称して個別ルックアップテーブル６５という）を格納した構成をもつ。ルックアップテーブル参照部７０は、ブロック番号を指定して、統合ルックアップテーブル６４内の複数の個別ルックアップテーブル６５のいずれかを選択的に参照することができる。
【００３８】
統合ルックアップテーブル６４の記憶領域の各ブロックの割り当て位置に関する情報は、コンフィグレーションレジスタ群５２内の所定のレジスタに設定される。割り当て位置は、統合ルックアップテーブル６４の記憶領域の基準アドレスから各ブロックの先頭アドレスまでのオフセット値で与えられる。ルックアップテーブル参照部７０は、コンフィグレーションレジスタ群５２の所定のレジスタに設定されたブロックの割り当て位置に関する情報を取得して、ブロック番号で指定された個別ルックアップテーブル６５の基準アドレスを計算し、その基準アドレスをもとに、指定された個別ルックアップテーブル６５を参照する。
【００３９】
ＬＯＤ算出部６８は、演算部５８からテクセルの座標値（ｕ，ｖ）とそのテクセルのマッピング先のピクセルの座標値（ｘ，ｙ）の情報を得て、ピクセル座標の局所変化に対するテクスチャのテクセル座標の局所変化をもとに、テクセルを描画する際の詳細度を示すＬＯＤ値を算出する。以下、ＬＯＤ値の算出方法を説明する。
【００４０】
図６は、ピクセルにマッピングされるテクセルを説明する図である。縦横２ピクセルの画素領域において、第１ピクセル２１０にはテクセル座標（Ｕ００，Ｖ００）がマッピングされるとする。同様に、第２ピクセル２１１にはテクセル座標（Ｕ１０，Ｖ１０）、第３ピクセル２１２にはテクセル座標（Ｕ０１，Ｖ０１）、第４ピクセル２１３にはテクセル座標（Ｕ１１，Ｖ１１）がマッピングされるとする。
【００４１】
ＬＯＤ算出部６８は、ピクセル座標（ｘ，ｙ）の変化に対するテクセル座標（ｕ，ｖ）の変化量ｄｕ／ｄｘ、ｄｕ／ｄｙ、ｄｖ／ｄｘ、ｄｖ／ｄｙを次式で求める。
ｄｕ／ｄｘ＝（ｆ（Ｕ１０−Ｕ００）＋ｆ（Ｕ１１−Ｕ０１））×０．５
ｄｕ／ｄｙ＝（ｆ（Ｕ０１−Ｕ００）＋ｆ（Ｕ１１−Ｕ１０））×０．５
ｄｖ／ｄｘ＝（ｆ（Ｖ１０−Ｖ００）＋ｆ（Ｖ１１−Ｖ０１））×０．５
ｄｖ／ｄｙ＝（ｆ（Ｖ０１−Ｖ００）＋ｆ（Ｖ１１−Ｖ１０））×０．５
ここで、ｆ（ｘ）＝｜ｘ｜またはｆ（ｘ）＝ｘであり、前者の場合、上記の式において、隣接ピクセルとのテクセル座標値の差の絶対値が得られ、後者の場合は差が得られる。コンフィグレーションレジスタ群５２の設定により、絶対値を取るかどうかを切り替えることができる。
【００４２】
ＬＯＤ算出部６８によるＬＯＤ計算には、イソトロピックフィルタ計算と、アニソトロピックフィルタ計算とがあり、イソトロピックフィルタ計算には、さらにユークリッド距離をもとにした計算モードと、マンハッタン距離をもとにした計算モードがあり、コンフィグレーションレジスタ群５２の設定により切り替えることができる。
【００４３】
イソトロピックフィルタによるユークリッド距離計算モードでは、次式によりＬＯＤ値が計算される。
Ｐｘ＝［（ｄｕ／ｄｘ）２＋（ｄｖ／ｄｘ）２］１／２
Ｐｙ＝［（ｄｕ／ｄｙ）２＋（ｄｖ／ｄｙ）２］１／２
ＬＯＤ＝Ｋ＋ｌｏｇ２（ｍａｘ（Ｐｘ、Ｐｙ））
ここでＫはバイアスであり、視点からテクスチャが貼り付けられる描画プリミティブまでの距離に依存して決まる。この計算により、テクスチャが貼り付けられる描画プリミティブの傾きがＬＯＤ値に反映される。
【００４４】
イソトロピックフィルタによるマンハッタン距離計算モードでは、次式によりＬＯＤ値が計算される。
Ｐｘ＝ａｂｓ（ｄｕ／ｄｘ）＋ａｂｓ（ｄｖ／ｄｘ）
Ｐｙ＝ａｂｓ（ｄｕ／ｄｙ）＋ａｂｓ（ｄｖ／ｄｙ）
ＬＯＤ＝Ｋ＋ｌｏｇ２（ｍａｘ（Ｐｘ、Ｐｙ））
ここでａｂｓ（）は引数の絶対値を返す関数である。
【００４５】
アニソトロピックフィルタによるモードでは、次式によりＬＯＤ値が計算される。
Ｐｘ＝ａｂｓ（ｄｕ／ｄｘ）＋ａｂｓ（ｄｖ／ｄｘ）
Ｐｙ＝ａｂｓ（ｄｕ／ｄｙ）＋ａｂｓ（ｄｖ／ｄｙ）
Ｐｍａｘ＝ｍａｘ（Ｐｘ，Ｐｙ）
Ｐｍｉｎ＝ｍｉｎ（Ｐｘ，Ｐｙ）
Ａｎｉｓｏｔｒｏｐｙ＝ｍｉｎ（ｃｅｉｌ（Ｐｍａｘ／Ｐｍｉｎ），ＭＡＸＴＡＰ）
ＬＯＤ＝Ｋ＋ｌｏｇ２（Ｐｍａｘ／Ａｎｉｓｏｔｒｏｐｙ）
ここでｃｅｉｌ（）は、引数に対して、それ以上で、最小の整数値を返す関数である。ＭＡＸＴＡＰは、最大のタップ数である。
【００４６】
図７は、統合ルックアップテーブル６４の一実施例として、ＬＯＤ別のカラールックアップテーブルを複数格納した統合ルックアップテーブル６４を説明する図である。統合ルックアップテーブル６４の記憶領域は、一例として、１７のブロックに分割され、各ブロックにＬＯＤ別のカラールックアップテーブルが割り当てられる。同図において、ＬＯＤ０〜ＬＯＤ１６は、ＬＯＤ値を示すもので、ＬＯＤの後の数字が大きいほど詳細度が低い。第１のブロックには、カラー値を２５６エントリ格納することのできるＬＯＤ０用のカラールックアップテーブル３００が割り当てられ、第２〜第１７のブロックには、それぞれカラー値を１６エントリ格納することのできるＬＯＤ１〜ＬＯＤ１６用のカラールックアップテーブル３０１〜３１６が割り当てられる。各ブロックとＬＯＤ値の対応関係は、コンフィグレーションレジスタ群５２に設定される。
【００４７】
図８（ａ）、（ｂ）は、統合ルックアップテーブル６４に格納されたＬＯＤ別のカラールックアップテーブルを説明する図である。図８（ａ）は、ＬＯＤ０用のカラールックアップテーブル３００であり、ＲＧＢ値とα値からなるカラー値（Ｒ，Ｇ，Ｂ，α）を１つのエントリとして、（Ｒ１，Ｇ１，Ｂ１，α１）〜（Ｒ２５６，Ｇ２５６，Ｂ２５６，α２５６）までの２５６エントリが格納される。図８（ｂ）は、ＬＯＤ１用のカラールックアップテーブル３０１であり、（Ｒ１，Ｇ１，Ｂ１，α１）〜（Ｒ１６，Ｇ１６，Ｂ１６，α１６）までの１６エントリが格納される。各カラールックアップテーブルには、異なるカラー値のエントリが格納される。ＬＯＤ別のカラールックアップテーブルは、詳細度に応じて異なるカラー値を格納したカラーパレットとして利用される。
【００４８】
ＬＯＤ別の統合ルックアップテーブル６４は、これ以外にもいろいろな構成が可能である。たとえば、ＬＯＤ値が大きくなるほど、すなわち詳細度が低くなるほど、カラールックアップテーブルのエントリ数が減るように統合ルックアップテーブル６４を構成してもよい。
【００４９】
ＬＯＤ算出部６８は、算出したＬＯＤ値をルックアップテーブル参照部７０に与える。ルックアップテーブル参照部７０は、ＬＯＤ算出部６８から与えられたＬＯＤ値にもとづいて、統合ルックアップテーブル６４内の参照すべきカラールックアップテーブルを特定する。具体的には、ルックアップテーブル参照部７０は、コンフィグレーションレジスタ群５２の設定情報をもとに、ＬＯＤ値からブロック番号を求め、ブロックのオフセットアドレスを統合ルックアップテーブル６４の基準アドレスに加算することで、そのブロックの参照アドレスを求める。
【００５０】
ルックアップテーブル参照部７０は、該当ブロックの参照アドレスにもとづいて、ＬＯＤ算出部６８から与えられたＬＯＤ値に対応したカラールックアップテーブルを統合ルックアップテーブル６４内で選択し、その選択されたカラールックアップテーブルにおいて、テクセルのインデックス値を参照アドレスのオフセットに用いて、インデックス値に対応するカラー値を読み出す。これにより、インデックス形式で与えられたテクセル値が実際のカラー値に変換され、演算部５８に与えられる。
【００５１】
図９は、テクスチャユニット５０によるテクスチャマッピング処理の手順を説明するフローチャートである。
【００５２】
テクスチャマッピング処理に先立ち、テクスチャユニット５０の動作モードや各種パラメータなどの設定情報がコンフィグレーションレジスタ群５２に設定される（Ｓ１０）。
【００５３】
演算部５８は、テクスチャロード命令からテクスチャ座標（ｓ，ｔ）を取得し、テクスチャサイズを乗じることにより、テクセル座標（ｕ，ｖ）を計算する（Ｓ１２）。次に、演算部５８は、テクセル座標をもとにして、記憶部６０内のテクスチャデータ６２を参照するためのアドレスを計算する（Ｓ１４）。
【００５４】
演算部５８は、記憶部６０内のテクスチャデータ６２を参照し、計算されたアドレスにあるテクセル値を取得する（Ｓ１６）。テクスチャデータ６２は、インデックスカラー形式で与えられているため、テクセル値はインデックス番号である。ＬＯＤ算出部６８は、そのテクセルのＬＯＤ値を上述の方法で算出する（Ｓ１８）。
【００５５】
ルックアップテーブル参照部７０は、統合ルックアップテーブル６４の中から、計算されたＬＯＤ値に対応するＬＯＤ別のカラールックアップテーブルを選択し、テクセルのインデックス番号に対応するカラー値をそのＬＯＤ別のカラールックアップテーブルから取得する（Ｓ２０）。演算部５８は、得られたテクセルのカラー値をもとに、動作モードにしたがってバイリニア補間などのフィルタリングを行う（Ｓ２２）。
【００５６】
描画対象領域に対して、一連のテクスチャマッピング処理が終わるまで（Ｓ２４のＮ）、ステップＳ１２に戻り、ステップＳ１２〜Ｓ２２の処理を続け、その描画対象領域に対するテクスチャマッピング処理が終わると（Ｓ２４のＹ）、終了する。
【００５７】
ステップＳ２０において、ＬＯＤ値により、統合ルックアップテーブル６４内の異なるカラールックアップテーブルを参照するが、その際、コンフィグレーションレジスタ群５２の再設定は不要である。統合ルックアップテーブル６４内に複数のカラールックアップテーブルが格納されており、統合ルックアップテーブル６４の基準アドレスは変更されることがなく、単に参照アドレスをオフセットすることで、参照すべきカラールックアップテーブルを置き換えることができるからである。すなわち、ステップＳ１０において設定されたコンフィグレーションレジスタ群５２の設定を変更することなく、そのまま用いることができる。したがって、コンテキスト切り替えに伴う処理のオーバーヘッドをなくし、ＬＯＤ値によってカラールックアップテーブルを適宜切り替えながら、テクスチャマッピングを行うことができる。
【００５８】
本実施の形態によれば、テクスチャを貼り付けるポリゴン表面の傾きにもとづいて計算されるＬＯＤ値に応じてカラールックアップテーブルを切り替えることができる。たとえば、視点から遠い位置にあるテクセルに対しては、色数の少ないカラールックアップテーブルを適用し、詳細度を下げてテクセル色を決め、近い位置にあるテクセルに対しては、色数の多いカラールックアップテーブルを適用し、詳細度を上げてテクセル色を決めることにより、テクスチャの描画品質を保つことができる。また詳細度の低いテクセルには色数の少ないカラールックアップテーブルを用いることで、インデックス形式のテクスチャデータの圧縮効率を向上することができる。
【００５９】
コンフィグレーションレジスタ群５２には、統合ルックアップテーブル６４内の個別のカラールックアップテーブルの割り当て位置に関する情報などが保持されているため、コンフィグレーションレジスタ群５２の設定情報すなわちコンテキストを変更することなく、単に統合ルックアップテーブル６４の参照アドレスを変えるだけで、ＬＯＤ値に応じたカラールックアップテーブルを選択的に参照することができる。これにより、コンテキストの切り替えによるオーバーヘッドなしで、テクスチャを貼り付ける面のＬＯＤ値に変化に応じて、細かくカラーパレットを切り替えてテクセル色を決めることができる。頻繁にカラーパレットを切り替えても、処理効率が悪化しないため、処理速度を保ちながら、描画品質の向上を図ることができる。
【００６０】
上記の説明では、テクスチャユニット５０は、テクスチャデータとして、２次元テクスチャを用いたが、複数の２次元テクスチャをレイヤ構造でもたせた３次元レイヤテクスチャを用いることもできる。
【００６１】
図１０は、３次元レイヤテクスチャ３５０の構成を説明する図である。３次元レイヤテクスチャ３５０は（ｕ，ｖ，ｗ）座標で表され、（ｕ，ｖ）座標で規定される複数の２次元テクスチャがｗ軸方向に重なって構成される。同図の例では、レイヤ０からレイヤ１５までの複数の２次元テクスチャ３２０〜３３５がｗ軸方向にレイヤ構造をなしており、ｗ値として、レイヤ番号を指定することで、いずれかのレイヤの２次元テクスチャを選択的に参照することができる。
【００６２】
図１１は、レイヤ別のカラールックアップテーブルを格納した統合ルックアップテーブル６４の構成を説明する図である。この統合ルックアップテーブル６４は、図１０の３次元レイヤテクスチャ３５０の各レイヤに対応して、２５６エントリを格納するレイヤ０用のカラールックアップテーブル３４０と、それぞれ１６エントリを格納するレイヤ１〜レイヤ１５用のそれぞれのカラールックアップテーブル３４１〜３５５とを含む。
【００６３】
３次元レイヤテクスチャの各レイヤは、ＬＯＤ値に対応づけて利用することができる。たとえば、レイヤ番号が大きくなるほど、ＬＯＤ値が大きいとし、レイヤ０には、詳細度が高い場合に使用するテクスチャを格納し、レイヤ１以下には、順に詳細度が低い場合のテクスチャを格納しておく。これにより、ＬＯＤ値によって異なるテクスチャを選択してテクスチャマッピングを行うことができる。もっとも、３次元レイヤテクスチャのレイヤをＬＯＤ値には特に関連づけずに、レイヤを指定して異なるパターンのテクスチャを使用するようにしてもよい。
【００６４】
この実施例によれば、３次元レイヤテクスチャにおいてレイヤを切り替えてテクスチャを参照する際、コンテキストの切り替えをせずに、各レイヤ毎に用意されたカラールックアップテーブルを切り替えて参照することができ、処理コストを削減することができる。
【００６５】
さらに、テクスチャユニット５０は、テクスチャデータとして、解像度の異なる複数の２次元テクスチャを含むレベルミップマップテクスチャを用いて、ミップマッピングを行うこともできる。
【００６６】
図１２は、ミップマップテクスチャ３８０の構成を説明する図である。ミップマップテクスチャ３８０は、あらかじめフィルタをかけて縮小したテクスチャを縮小レベル毎に段階的に複数もたせたものである。同図の例では、レベル０のテクスチャ３６０、レベル１のテクスチャ３６１、レベル２のテクスチャ３６２、レベル３のテクスチャ３６３の順で解像度が低くなるミップマップテクスチャの構造が示されている。ミップマッピングでは、テクスチャマッピング時に、ミップマップのレベルが指定され、ポリゴンの解像度に合ったテクスチャが選択されてポリゴン表面に貼り付けられる。
【００６７】
図１３は、解像度レベル別のカラールックアップテーブルを格納した統合ルックアップテーブル６４の構成を説明する図である。この統合ルックアップテーブル６４は、図１２のミップマップテクスチャ３８０の各解像度レベルに対応して、２５６エントリを格納するレベル０用のカラールックアップテーブル３７０、１２８エントリを格納するレベル１用のカラールックアップテーブル３７１、６４エントリを格納するレベル２用のカラールックアップテーブル３７２、および６４エントリを格納するレベル３用のカラールックアップテーブル３７３を含む。
【００６８】
演算部５８が、ミップマップテクスチャ３８０のレベル０のテクスチャ３６０を使用してテクスチャマッピングを行う場合、ルックアップテーブル参照部７０は、統合ルックアップテーブル６４内のレベル０用のカラールックアップテーブル３７０を参照し、インデックス形式のテクセル値をカラー値に変換する。同様に、演算部５８が、ミップマップテクスチャ３８０のレベル１のテクスチャ３６１を使用してテクスチャマッピングを行う場合、ルックアップテーブル参照部７０は、レベル１用のカラールックアップテーブル３７１を参照するなど、ミップマップテクスチャ３８０のレベルに合ったカラールックアップテーブルを統合ルックアップテーブル６４から選択的に参照し、インデックス形式のテクセル値をカラー値に変換する。
【００６９】
この実施例によれば、コンテキストの切り替えのオーバーヘッドなしで、ミップマップのレベルに合ったカラールックアップテーブルを統合ルックアップテーブル６４から選択的に参照し、ミップマッピングを行うことができ、処理の効率化を図ることができる。
【００７０】
以上、本発明を実施の形態をもとに説明した。実施の形態は例示であり、それらの各構成要素や各処理プロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。
【００７１】
そのような変形例を説明する。シェーダユニット３０の各シェーダクラスタ３２内には、同期動作によりピクセルデータを並列に処理する複数のシェーダパイプが含まれてもよい。この構成により、描画演算ユニット２０内でピクセルデータのパイプライン処理を行うことができる。
【００７２】
上記の説明では、テクスチャユニット５０がテクセル毎にカラーパレットを参照する例として、統合ルックアップテーブル６４の構成を説明したが、ルックアップテーブルにはカラー情報以外の情報をもたせてもよい。たとえば、テクスチャの貼り付けられる面の法線ベクトルの情報にインデックスをつけ、インデックス順に法線ベクトルの情報をルックアップテーブルに格納してもよい。法線ベクトルの情報はバンプマッピングに利用される。また、ルックアップテーブルに非線形の数学関数の代表点の値にインデックスをつけ、インデックス順に代表点の値をルックアップテーブルに格納してもよい。この場合、シェーダクラスタ３２は、ルックアップテーブルを参照して代表点の座標値を取得し、代表点間を適宜補間計算することにより関数値を求める。
【００７３】
上記の説明では、カラールックアップテーブルはインデックス順にカラー値をエントリとして格納したものであったが、カラールックアップテーブルは、インデックス値とカラー値とを対応づけて格納したものであってもよい。その場合、ルックアップテーブル参照部７０は、テクセルのインデックス値をキーとしてカラールックアップテーブルを検索し、インデックス値に対応するカラー値を取得する。さらに、カラールックアップテーブルはハッシュテーブルの構成をとってもよい。その場合、ルックアップテーブル参照部７０は、インデックス値のハッシュ値にもとづいてカラールックアップテーブルを検索する。
【００７４】
ミップマップテクスチャにおいて、各レベルのテクスチャを３次元レイヤテクスチャで構成してもよい。この場合、統合ルックアップテーブル６４は、複数のミップマップのレベル別のカラールックアップテーブルを含み、さらに各カラールックアップテーブルが複数のレイヤ別のカラールックアップテーブルを含むといった入れ子構造であってもよく、ルックアップテーブル参照部７０は、ミップマップレベルとレイヤを組み合わせて指定することにより、統合ルックアップテーブル６４内の特定のカラールックアップテーブルを選択的に参照することができる。
【００７５】
実施の形態では、ルックアップテーブルを用いたテクスチャマッピングなどのピクセル演算処理を説明したが、同様の構成のルックアップテーブルは、ジオメトリ演算にも利用することができる。たとえば、ディスプレースメントマッピング（Displacement Mapping）で参照するルックアップテーブルに本発明を適用してもよい。レンダリング過程でのマッピングにより擬似的にポリゴン表面に凹凸をつけるバンプマップとは異なり、ディスプレースメントマッピングは、ジオメトリ演算の過程で頂点データを直接操作することでポリゴン表面に変形を加える。具体的には、ディスプレースメントマッピングでは、ポリゴンモデルに凹凸を表す頂点情報を貼り込む。ベースとなるポリゴン表面に法線データが貼り付けられることで法線方向に頂点の座標値が変化し、より複雑な形状が生成される。このディスプレースメントマッピングにおいて、ＬＯＤ別のルックアップテーブルに頂点情報を格納し、ＬＯＤ値によってルックアップテーブルを切り替えるようにしてもよい。
【図面の簡単な説明】
【００７６】
【図１】実施の形態に係る画像生成装置の構成図である。
【図２】図１の描画ブロックの構成図である。
【図３】図２の描画演算ユニットの詳細な構成を説明する図である。
【図４】図３のテクスチャユニットの構成図である。
【図５】図４の統合ルックアップテーブルの構成を説明する図である。
【図６】ピクセルにマッピングされたテクセルを説明する図である。
【図７】ＬＯＤ別のカラールックアップテーブルを格納した統合ルックアップテーブルを説明する図である。
【図８】ＬＯＤ別のカラールックアップテーブルを説明する図である。
【図９】実施の形態に係るテクスチャユニットによるテクスチャマッピング処理の手順を説明するフローチャートである。
【図１０】３次元レイヤテクスチャの構成を説明する図である。
【図１１】３次元レイヤテクスチャのレイヤ別のカラールックアップテーブルを格納した統合ルックアップテーブルを説明する図である。
【図１２】ミップマップテクスチャの構成を説明する図である。
【図１３】ミップマップテクスチャの解像度レベル別のカラールックアップテーブルを格納した統合ルックアップテーブルを説明する図である。
【符号の説明】
【００７７】
１０  ラスタライザ、  １２  分配部、  ２０  描画演算ユニット、  ３０  シェーダユニット、  ３２  シェーダクラスタ、  ３６  メモリアクセス部、  ４０  メモリ、  ５０  テクスチャユニット、  ５２  コンフィグレーションレジスタ群、  ５８  演算部、  ６０  記憶部、  ６２  テクスチャデータ、  ６４  統合ルックアップテーブル、  ６５  個別ルックアップテーブル、  ６８  ＬＯＤ算出部、  ７０  ルックアップテーブル参照部、  １００  描画ブロック、  １１０  制御ブロック、  １２０  入出力ブロック、  １３０  記憶装置、  １４０  表示装置、  １５０  バス、  ２００  画像生成装置。
【図１】
2005301758.tif 000003
【図２】
2005301758.tif 000004
【図３】
2005301758.tif 000005
【図４】
2005301758.tif 000006
【図５】
2005301758.tif 000007
【図６】
2005301758.tif 000008
【図７】
2005301758.tif 000009
【図８】
2005301758.tif 000010
【図９】
2005301758.tif 000011
【図１０】
2005301758.tif 000012
【図１１】
2005301758.tif 000013
【図１２】
2005301758.tif 000014
【図１３】
2005301758.tif 000015
【手続補正書】
【提出日】平成17年4月1日(2005.4.1)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】００６３
【補正方法】削除
【補正の内容】
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００６５
【補正方法】変更
【補正の内容】
【００６５】
さらに、テクスチャユニット５０は、テクスチャデータとして、解像度の異なる複数の２次元テクスチャを含むミップマップテクスチャを用いて、ミップマッピングを行うこともできる。