(57)【要約】【課題】コンピュータグラフィックス描画装置に関し、テクスチャ画像のキャッシングに関する新たな手法を提供する。【解決手段】ミップマップレベルの異なる複数のテクスチャ画像を利用して１つのスクリーン画像を生成する描画装置であって、参照対象のテクスチャ画像の正規化テクスチャ座標を生成し、前記テクスチャ画像の前記正規化テクスチャ座標から、前記テクスチャ画像を構成するテクセルのテクセル座標を、前記テクスチャ画像のミップマップレベルに従って生成し、前記テクスチャ画像の参照対象の画像ブロックについて、前記画像ブロックに対応するキャッシュラインを指すインデックス値を、前記画像ブロックを構成するテクセルのテクセル座標を利用して生成する際に、ミップマップレベルが隣接する２つのテクスチャ画像間において、同じ位置の画像ブロックのインデックス値同士が異なる値となるよう、前記インデックス値を生成する描画装置。【選択図】図１
2009099098.tif 000002
【特許請求の範囲】
【請求項１】
ミップマップレベルの異なる複数のテクスチャ画像を利用して１つのスクリーン画像を生成するコンピュータグラフィックス描画装置であって、
参照対象のテクスチャ画像の正規化テクスチャ座標を生成する第１の座標生成部と、
前記テクスチャ画像の前記正規化テクスチャ座標から、前記テクスチャ画像を構成するテクセルのテクセル座標を、前記テクスチャ画像のミップマップレベルに従って生成する第２の座標生成部と、
前記テクスチャ画像の参照対象の画像ブロックについて、前記画像ブロックに対応するキャッシュラインを指すインデックス値を、前記画像ブロックを構成するテクセルのテクセル座標を利用して生成するインデックス生成部であって、ミップマップレベルが隣接する２つのテクスチャ画像間において、同じ位置の画像ブロックのインデックス値同士が異なる値となるよう、前記インデックス値を生成するインデックス生成部とを備えることを特徴とする描画装置。
【請求項２】
前記インデックス生成部は、ミップマップレベルが隣接するＮ個（Ｎは３以上の整数）のテクスチャ画像間において、同じ位置の画像ブロックのインデックス値同士が異なる値となるよう、前記インデックス値を生成することを特徴とする請求項１記載の描画装置。
【請求項３】
前記インデックス生成部は、前記画像ブロックの前記テクセル座標を利用して１次元のビット列を生成し、１次元の前記ビット列からＫビット（Ｋは２以上の整数）のビット列を切り出し、Ｋビットの前記ビット列のビット列回転を行うことにより、Ｋビットの前記インデックス値を生成することを特徴とする請求項１又は２に記載の描画装置。
【請求項４】
前記インデックス値が指す前記キャッシュラインに前記画像ブロックが存在するか否かを判定する判定処理部を更に備え、
前記判定処理部は、前記画像ブロックが存在しない場合には、前記キャッシュラインに前記画像ブロックをリフィルした後、前記キャッシュラインから前記画像ブロックを読み出し、前記画像ブロックが存在する場合には、前記キャッシュラインに前記画像ブロックをリフィルすることなく、前記キャッシュラインから前記画像ブロックを読み出すことを特徴とする請求項１乃至３のいずれか１項に記載の描画装置。
【請求項５】
ミップマップレベルの異なる複数のテクスチャ画像を利用して１つのスクリーン画像を生成するコンピュータグラフィックス描画方法であって、
参照対象のテクスチャ画像の正規化テクスチャ座標を生成し、
前記テクスチャ画像の前記正規化テクスチャ座標から、前記テクスチャ画像を構成するテクセルのテクセル座標を、前記テクスチャ画像のミップマップレベルに従って生成し、
前記テクスチャ画像の参照対象の画像ブロックについて、前記画像ブロックに対応するキャッシュラインを指すインデックス値を、前記画像ブロックを構成するテクセルのテクセル座標を利用して生成する際に、ミップマップレベルが隣接する２つのテクスチャ画像間において、同じ位置の画像ブロックのインデックス値同士が異なる値となるよう、前記インデックス値を生成することを特徴とする描画方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータグラフィックス描画装置及び描画方法に関する。
【背景技術】
【０００２】
コンピュータグラフィックスの分野では、テクスチャマッピングと呼ばれる手法が広く知られている。テクスチャマッピングでは、画像中の物体の表面にテクスチャ画像を貼り付けることで、画像中の物体にテクスチャ（質感）を持たせることができる。テクスチャマッピングでは、画像処理の高速化を実現すべく、１つのテクスチャ（質感）を表現するのに解像度の異なる複数のテクスチャ画像を使用する事が多い。これらのテクスチャ画像の各々はミップマップと呼ばれ、各テクスチャ画像の解像度の高さはミップマップレベルと呼ばれる数値で表現される。
【０００３】
このようなテクスチャマッピングでは、ミップマップレベルの異なる複数のテクスチャ画像が同時に参照される事がある。このとき、テクスチャキャッシュでは、これらの画像へのアクセスが同時に起こるため、これらの画像間にてキャッシュラインのコンフリクトが生じ得る。すなわち、これらの画像に対し、同じキャッシュラインが使用されてしまう事がある。
【０００４】
一般的には、このようなコンフリクトを避けるために、２ウェイ以上のセットアソシアティブ連想方式（以下「連想方式」と呼ぶ）や、キャッシュを偶数レベルのミップマップ用と奇数レベルのミップマップ用の２セットに分ける方式（以下「分割方式」と呼ぶ）が採用される（非特許文献１等）。しかし、連想方式では、連想度の増加による回路コストの増大が問題となる。また、分割方式では、場合によってはキャッシュの総容量の半分しか使用されない可能性があり、キャッシュの使用効率の低下が問題となる。例えば、大きな物体にテクスチャを与える場合には、ミップマップ機能が採用されていても、レベル０のミップマップしか使用されない。この場合、キャッシュの総容量の半分（奇数レベル用のセット）が全く使用されないことになる。
【０００５】
以上のように、従来の連想方式や分割方式では、回路コストの増大やキャッシュの使用効率の低下のような、テクスチャ画像のキャッシングに関連する無駄が問題となる。
【非特許文献１】Ziyad S. Hakura and Anoop Gupta, Stanford University, "The Design and Analysis of a Cache Architecture for Texture Mapping", International Symposium on Computer Architecture, 1997
【発明の開示】
【発明が解決しようとする課題】
【０００６】
本発明は、コンピュータグラフィックス描画装置及び描画方法に関し、テクスチャ画像のキャッシングに関する新たな手法を提供することを課題とする。
【課題を解決するための手段】
【０００７】
本発明の実施例は例えば、ミップマップレベルの異なる複数のテクスチャ画像を利用して１つのスクリーン画像を生成するコンピュータグラフィックス描画装置であって、参照対象のテクスチャ画像の正規化テクスチャ座標を生成する第１の座標生成部と、前記テクスチャ画像の前記正規化テクスチャ座標から、前記テクスチャ画像を構成するテクセルのテクセル座標を、前記テクスチャ画像のミップマップレベルに従って生成する第２の座標生成部と、前記テクスチャ画像の参照対象の画像ブロックについて、前記画像ブロックに対応するキャッシュラインを指すインデックス値を、前記画像ブロックを構成するテクセルのテクセル座標を利用して生成するインデックス生成部であって、ミップマップレベルが隣接する２つのテクスチャ画像間において、同じ位置の画像ブロックのインデックス値同士が異なる値となるよう、前記インデックス値を生成するインデックス生成部とを備えることを特徴とする描画装置である。
【０００８】
本発明の実施例は例えば、ミップマップレベルの異なる複数のテクスチャ画像を利用して１つのスクリーン画像を生成するコンピュータグラフィックス描画方法であって、参照対象のテクスチャ画像の正規化テクスチャ座標を生成し、前記テクスチャ画像の前記正規化テクスチャ座標から、前記テクスチャ画像を構成するテクセルのテクセル座標を、前記テクスチャ画像のミップマップレベルに従って生成し、前記テクスチャ画像の参照対象の画像ブロックについて、前記画像ブロックに対応するキャッシュラインを指すインデックス値を、前記画像ブロックを構成するテクセルのテクセル座標を利用して生成する際に、ミップマップレベルが隣接する２つのテクスチャ画像間において、同じ位置の画像ブロックのインデックス値同士が異なる値となるよう、前記インデックス値を生成することを特徴とする描画方法である。
【発明の効果】
【０００９】
本発明により、コンピュータグラフィックス描画装置及び描画方法に関し、テクスチャ画像のキャッシングに関する新たな手法が提供される。
【発明を実施するための最良の形態】
【００１０】
本発明の実施例を、図面に基づいて説明する。
【００１１】
図１は、本実施例のコンピュータグラフィックス描画装置１０１のブロック図である。本実施例の描画装置１０１は、Vertex Shader１１１と、Rasterizer１１２と、第１の座標生成部の例であるPixel Shader１１３と、Texture Unit１２１と、Raster Operation Unit１３１と、System Memory１４１とを具備する。Texture Unit１２１は、第２の座標生成部の例であるUV Generator１５１と、インデックス生成部の例であるTag/Index/Offset Generator１５２と、判定処理部の例であるCache Body１５３と、Filter１５４とを具備する。
【００１２】
図１の描画装置１０１は、図２のように、テクスチャ画像を利用してスクリーン画像を生成する。図２には、テクスチャ画像ＩTからスクリーン画像ＩSが生成される様子が図示されている。図２では、テクスチャ画像ＩTおよびスクリーン画像ＩSがそれぞれ、メモリに格納されている。テクスチャ画像ＩTからスクリーン画像ＩSが生成される際には、テクスチャ画像ＩTが一時的にテクスチャキャッシュ２０１に格納される。
【００１３】
図１の描画装置１０１は特に、図３のように、ミップマップレベルの異なる複数のテクスチャ画像（ミップマップ）を利用して１つのスクリーン画像を生成することができる。図３には、レベル０，１，２のテクスチャ画像ＩT0，ＩT1，ＩT2からスクリーン画像ＩSが生成される様子が図示されている。図３では、テクスチャ画像ＩT0，ＩT1，ＩT2およびスクリーン画像ＩSがそれぞれ、メモリに格納されている。テクスチャ画像ＩT0，ＩT1，ＩT2からスクリーン画像ＩSが生成される際には、テクスチャ画像ＩT0，ＩT1，ＩT2が一時的にテクスチャキャッシュ２０１に格納される。
【００１４】
図４には、複数のテクスチャ画像ＩT0，ＩT1，ＩT2，，，ＩT7が図示されている。これらのテクスチャ画像は、共通の原画像に由来する異なるミップマップレベルのテクスチャ画像である。テクスチャ画像ＩT0，ＩT1，ＩT2，，，ＩT7はそれぞれ、ミップマップレベルが０，１，２，，，７のテクスチャ画像である。これらのテクスチャ画像の原画像の画像サイズはここでは、１２８×１２８ピクセルとする。よって、テクスチャ画像ＩT0，ＩT1，ＩT2，，，ＩT7の画像サイズはここではそれぞれ、１２８×１２８テクセル，６４×６４テクセル，３２×３２テクセル，，，１×１テクセルとなる。
【００１５】
図４にはさらに、テクスチャキャッシュ２０１のキャッシュラインとして、キャッシュラインＬ0，Ｌ1，Ｌ2，，，Ｌ63が図示されている。キャッシュラインＬ0，Ｌ1，Ｌ2，，，Ｌ63はそれぞれ、インデックスが０，１，２，，，６３のキャッシュラインである。図１の描画装置１０１では、テクスチャキャッシュ２０１の１つのキャッシュラインに、１つのテクスチャ画像の１つの画像ブロックが格納される。図４には、画像ブロックＢ0，Ｂ1，Ｂ2が例示されている。画像ブロックＢ0，Ｂ1，Ｂ2はそれぞれ、テクスチャ画像ＩT0，ＩT1，ＩT2の画像ブロックである。これらの画像ブロックの画像サイズはここではそれぞれ、８×８テクセルとする。図４にはさらに、キャッシュラインＬ0に格納された画像ブロックのテクセルとして、テクセルＴ0，Ｔ1，Ｔ2，，，Ｔ63が図示されている。テクセルＴ0，Ｔ1，Ｔ2，，，Ｔ63はそれぞれ、オフセットが０，１，２，，，６３のテクセルである。
【００１６】
図５には、１２８×１２８テクセルのテクスチャ画像ＩT0、６４×６４テクセルのテクスチャ画像ＩT1、及び３２×３２テクセルのテクスチャ画像ＩT2が図示されている。図５にはさらに、各テクスチャ画像の正規化テクスチャ座標（ｓ，ｔ）と、各テクスチャ画像のテクセル座標（ｕ，ｖ）とが図示されている。
【００１７】
正規化テクスチャ座標は、テクスチャ画像の一端から他端までの距離を１とする座標系である。正規化テクスチャ座標では、テクスチャ画像の画像サイズやミップマップレベルに関係なく、テクスチャ画像の左上端（又は左下端）の座標が（０，０）となり、テクスチャ画像の右下端（又は右上端）の座標が（１，１）となる。
【００１８】
テクセル座標は、隣接する２つのテクセル間の間隔を１とする座標系である。テクセル座標では、テクスチャ画像の端点の座標が、テクスチャ画像の画像サイズやミップマップレベルに依存する。テクスチャ画像ＩT0においては、画像の左上端（又は左下端）の座標が（０，０）となり、画像の右下端（又は右上端）の座標が（１２８，１２８）となる。また、テクスチャ画像ＩT1においては、画像の左上端（又は左下端）の座標が（０，０）となり、画像の右下端（又は右上端）の座標が（６４，６４）となる。また、テクスチャ画像ＩT2においては、画像の左上端（又は左下端）の座標が（０，０）となり、画像の右下端（又は右上端）の座標が（３２，３２）となる。
【００１９】
あるテクスチャ画像の原画像の画像サイズを、Ｗ×Ｈピクセルとする。この場合、当該テクスチャ画像の正規化テクスチャ座標とテクセル座標との間には、ｕ＝ｓ×Ｗ／２Ｌ及びｖ＝ｔ×Ｈ／２Ｌの関係が成り立つ。但し、Ｌは、当該テクスチャ画像のミップマップレベルを表す。
【００２０】
以下、図１の各ブロックの動作について説明する。
【００２１】
Vertex Shader１１１は、描画するポリゴンの頂点列のデータをSystem Memory１４１から受け取り、頂点単位での座標変換処理や照光処理を行い、各頂点の座標値や各種パラメータを生成する。
【００２２】
Rasterizer１１２は、各頂点の座標値及び各種パラメータをVertex Shader１１１から受け取り、ポリゴン内部のピクセルや各ピクセルの各種パラメータを生成する。
【００２３】
Pixel Shader１１３は、各ピクセルの各種パラメータをRasterizer１１２から受け取り、ピクセル単位での照光処理等を行う。Pixel Shader１１３によるピクセル単位での処理の過程で、必要に応じてテクスチャの参照が行われる。この場合、Pixel Shader１１３は、参照対象のテクスチャ画像の正規化テクスチャ座標を生成して出力する。
【００２４】
UV Generator１５１は、正規化テクスチャ座標をPixel Shader１１３から受け取り、正規化テクスチャ座標から、テクスチャ画像上の座標（テクセル座標）を、テクスチャ画像の画像サイズ及びミップマップレベルに従って生成する。こうして、上記テクスチャ画像の正規化テクスチャ座標から、上記テクスチャ画像を構成するテクセルのテクセル座標が、上記テクスチャ画像の画像サイズ及びミップマップレベルに従って生成される。
【００２５】
Tag/Index/Offset Generator１５２は、参照対象のテクスチャ画像のテクセル座標をUV Generator１５１から受け取る。そして、Tag/Index/Offset Generator１５２は、参照対象のテクスチャ画像について、当該テクスチャ画像に対応するキャッシュ２０１のタグを、当該テクスチャ画像を構成するテクセルのテクセル座標を利用して生成する。
【００２６】
Tag/Index/Offset Generator１５２は更に、上記テクスチャ画像の参照対象の画像ブロックについて、当該画像ブロックに対応するキャッシュラインを指すインデックス値を、当該画像ブロックを構成するテクセルのテクセル座標を利用して生成する。
【００２７】
Tag/Index/Offset Generator１５２は更に、上記テクスチャ画像の参照対象のテクセルについて、当該テクセルに対応するアドレスを指すオフセット値を、当該テクセルのテクセル座標を利用して生成する。ここで、オフセットは、キャッシュライン内におけるテクセルの位置を示す相対アドレスに相当する。
【００２８】
Cache Body１５３は、タグ、インデックス、オフセットをTag/Index/Offset Generator１５２から受け取る。そして、Cache Body１５３は、上記タグに対応するキャッシュ２０１にアクセスし、上記インデックス値が指すキャッシュラインに上記画像ブロックが存在するか否かを判定する。
【００２９】
Cache Body１５３は、キャッシュミスの場合、即ち、上記画像ブロックが存在しない場合には、System Memory１４１から上記キャッシュラインに上記画像ブロックをリフィルした後、上記キャッシュラインから上記画像ブロックを読み出す。所望のテクセルを読み出す際には、上記オフセット値が利用される。
【００３０】
Cache Body１５３は、キャッシュヒットの場合、即ち、上記画像ブロックが存在する場合には、System Memory１４１から上記キャッシュラインに上記画像ブロックをリフィルすることなく、上記キャッシュラインから上記画像ブロックを読み出す。所望のテクセルを読み出す際には、上記オフセット値が利用される。
【００３１】
Filter１５４は、読み出されたテクセルをCache Body１５３から受け取り、テクセルにテクスチャフィルタ処理を施す。フィルタリング済みのテクセルは、Pixel Shader１１３に送られる。Pixel Shader１１３の処理が終了したピクセルは、Raster Operation Unit１３１に送られ、Ｚバッファリング（陰面除去）処理やαブレンディング処理が施された後、System Memory１４１内のフレームバッファに書き込まれる。
【００３２】
図６は、Tag/Index/Offset Generator１５２によるインデックス値及びオフセット値の生成処理について説明するための図である。
【００３３】
図６Ａは、画像ブロックＢを表す。画像ブロックＢの画像サイズは、８×８テクセルである。画像ブロックＢのテクセルＴ0，Ｔ1，Ｔ2，，，Ｔ63のテクセル座標（ｕ，ｖ）はそれぞれ、（ｕ0，ｖ0），（ｕ1，ｖ1），（ｕ2，ｖ2），，，（ｕ63，ｖ63）と表される。画像ブロックＢの任意のテクセルＴiのテクセル座標（ｕ，ｖ）は、（ｕi，ｖi）と表される。ｕi及びｖiはそれぞれ、０乃至１２７の値をとり得る７ビットデータであり、次のように表される。
ｕi＝２6ｕi(6)＋２5ｕi(5)＋２4ｕi(4)＋２3ｕi(3)＋２2ｕi(2)＋２1ｕi(1)＋２0ｕi(0)。
ｖi＝２6ｖi(6)＋２5ｖi(5)＋２4ｖi(4)＋２3ｖi(3)＋２2ｖi(2)＋２1ｖi(1)＋２0ｖi(0)。
【００３４】
画像ブロックＢに関するインデックス値及びオフセット値を生成する際にはまず、画像ブロックＢのテクセル座標（ｕ0，ｖ0）乃至（ｕ63，ｖ63）を利用して１次元のビット列が生成される。図６Ｂには、このようなビット列の例として、ビット列Ｘが示されている。ビット列Ｘは、Ｐ63，，，Ｐ2Ｐ1Ｐ0のような配列のビット列である。Ｐ0，Ｐ1，Ｐ2，，，Ｐ63はそれぞれ、テクセル座標（ｕ0，ｖ0），（ｕ1，ｖ1），（ｕ2，ｖ2），，，（ｕ63，ｖ63）を利用して生成されたビット列である。Ｐiは、ｖi(6)ｕi(6)，，，ｖi(2)ｕi(2)ｖi(1)ｕi(1)ｖi(0)ｕi(0)のような配列のビット列である。
【００３５】
続いて、図６Ｂのように、１次元のビット列Ｘから、１つのＫビットのビット列Ｙと、６４個のＫビットのビット列Ｚ0乃至Ｚ63とが切り出される。Ｋは、２以上の整数であり、ここでは６である。
【００３６】
ビット列Ｚ0，Ｚ1，Ｚ2，，，Ｚ63はそれぞれ、ビット列Ｐ0，Ｐ1，Ｐ2，，，Ｐ63から切り出されたビット列である。ビット列Ｚiは、ビット列Ｐiの０乃至５ビット部分に相当する。本実施例では、ビット列Ｚ0，Ｚ1，Ｚ2，，，Ｚ63が表す値がそれぞれ、テクセルＴ0，Ｔ1，Ｔ2，，，Ｔ63のオフセット値として利用される。
【００３７】
ビット列Ｙは、ビット列Ｐ0から切り出されたビット列である。ビット列Ｙは、ビット列Ｐ0の６乃至１１ビット部分に相当する。ビット列Ｙは、ビット列Ｐ1乃至Ｐ63のいずれかから切り出されたビット列でもよい。本実施例では、ビット列ＹからＫビットのビット列ＹAが生成され、ビット列ＹAからＫビットのビット列ＹBが生成され、ビット列ＹBが表す値が画像ブロックＢのインデックス値として利用される。
【００３８】
ビット列ＹAは、図６Ｂのように、ビット列Ｙを構成する所定のビットのビット反転により生成される。所定のビットは、ここではビット列Ｙの最上位ビットであるが、ビット列Ｙのその他のビットでもよい。図６Ｂには、最上位ビットｖi(5)が反転される様子が示されている。
【００３９】
ビット列ＹBは、図６Ｂのように、ビット列ＹAのビット列回転により生成される。図６Ｂには、ビット列ＹAが左に回転（ローテート）される様子が示されている。ビット列ＹAの回転量はここでは、画像ブロックＢを有するテクスチャ画像ＩのミップマップレベルＬに基づいて決定される（図６Ｃ参照）。ビット列ＹAの回転量はここでは、２Ｌビット分とする。よって、ミップマップレベルが０，１，２の場合の回転量はそれぞれ、０，２，４ビット分となる。
【００４０】
このような処理により、図７，図８，図９に示すようなインデックス値が生成される。図７，図８，図９はそれぞれ、ミップマップレベルが０，１，２のテクスチャ画像ＩT0，ＩT1，ＩT2のインデックスマップの例を表す。
【００４１】
図７乃至図９では、ミップマップレベルが隣接する２つのテクスチャ画像間において、同じ位置の画像ブロックのインデックス値同士が異なる値となっている。すなわち、図７のテクスチャ画像ＩT0と図８のテクスチャ画像ＩT1との間や、図８のテクスチャ画像ＩT1と図９のテクスチャ画像ＩT2との間において、同じ位置の画像ブロックのインデックス値同士が異なる値となっている。
【００４２】
例えば、図８の画像ブロックＢ1のインデックス値は、５０である。
【００４３】
図８の画像ブロックＢ1は、図７の画像ブロックＢ0Aと同じ位置に存在している。画像ブロックＢ0Aのインデックス値は、画像ブロックＢ1のインデックス値とは異なり、１６である。
【００４４】
図８の画像ブロックＢ1は更に、図７の画像ブロックＢ0Bと同じ位置に存在している。画像ブロックＢ0Bのインデックス値は、画像ブロックＢ1のインデックス値とは異なり、１７である。
【００４５】
図８の画像ブロックＢ1は更に、図７の画像ブロックＢ0Cと同じ位置に存在している。画像ブロックＢ0Cのインデックス値は、画像ブロックＢ1のインデックス値とは異なり、１８である。
【００４６】
図８の画像ブロックＢ1は更に、図７の画像ブロックＢ0Dと同じ位置に存在している。画像ブロックＢ0Dのインデックス値は、画像ブロックＢ1のインデックス値とは異なり、１９である。
【００４７】
このような関係は、図８の全ての画像ブロックと図７の対応する画像ブロックとの間に成立している。このような関係は更に、図９の全ての画像ブロックと図８の対応する全ての画像ブロックとの間にも同様に成立している。例えば、図９の画像ブロックＢ2のインデックス値は１１であるのに対し、図８の対応する画像ブロックＢ1A，Ｂ1B，Ｂ1C，Ｂ1Dのインデックス値はそれぞれ１，５，９，１３（≠１１）である。
【００４８】
以上のように、本実施例のTag/Index/Offset Generator１５２は、ミップマップレベルが隣接する２つのテクスチャ画像間において、同じ位置の画像ブロックのインデックス値同士が異なる値となるよう、インデックス値を生成する。このような処理により得られる効果について、図３を参照しながら説明する。
【００４９】
図３には、領域Ｒ0，Ｒ1，Ｒ2が図示されている。領域Ｒ0，Ｒ1，Ｒ2はそれぞれ、テクスチャ画像ＩT0，ＩT1，ＩT2を利用してスクリーン画像ＩSが生成された領域である。図３にはさらに、領域Ｒ0と領域Ｒ1との境界線αと、領域Ｒ1と領域Ｒ2との境界線βとが図示されている。このようなスクリーン画像ＩSの生成処理では、境界線α付近の画像を描画する際に、レベル０及びレベル１の同じ位置の画像ブロックが参照される事が多い。同様に、境界線β付近の画像を描画する際には、レベル１及びレベル２の同じ位置の画像ブロックが参照される事が多い。そのため、同じ位置の画像ブロックのインデックス値同士が同じ値であると、これらの画像ブロック間にてキャッシュラインのコンフリクトが生じてしまう。しかしながら、本実施例では、同じ位置の画像ブロックのインデックス値同士が異なる値となるため、このようなコンフリクトは防止される。
【００５０】
本実施例のTag/Index/Offset Generator１５２は更に、各テクスチャ画像内において、隣り合う画像ブロックのインデックス値同士が異なる値となるよう、インデックス値を生成する。スクリーン画像ＩSの生成処理では、各テクスチャ画像の隣り合う画像ブロックが参照される事が多いからである。これにより、これらの画像ブロック間でのキャッシュラインのコンフリクトが防止される。図７や図８や図９において、隣り合う画像ブロックのインデックス値同士がいずれも異なる値となっている事に留意されたい。
【００５１】
ここで、図６のビット列Ｙとビット列ＹBとを比較する。本実施例では、ビット列ＹBがインデックス値として採用されている。代わりに、ビット列Ｙをインデックス値として採用する事も考えられる。しかしながら、この場合には、ミップマップレベルが隣接する２つのテクスチャ画像間において、同じ位置の画像ブロックのインデックス値同士が同じ値となるような場所がでてくる。例えば、図７のようなテクスチャ画像と図８のようなテクスチャ画像との間においては、四隅の画像ブロックのインデックス値同士がそれぞれ同じ値となってしまう。
【００５２】
そこで、本実施例では、ビット列ＹBがインデックス値として採用されている。ビット列ＹBは、ビット列Ｙにビット反転処理及びビット列回転処理を施すことで生成される。本実施例では、このビット列回転処理により、正規化テクスチャ座標の変化に伴うインデックス値の変化の周期を、ミップマップレベルの異なるテクスチャ画像間で合わせることができる。これにより、本実施例では、ミップマップレベルの異なるテクスチャ画像間において、同じ位置の画像ブロックのインデックス値同士が同じ値となるような事態を回避することができる。
【００５３】
ビット列ＹBは、上述のように、ビット列Ｙにビット反転処理及びビット列回転処理を施すことで生成される。これらの処理は、比較的簡単な回路により実行可能である。そのため、本実施例によれば、ミップマップレベルの異なるテクスチャ画像間において、同じ位置の画像ブロックのインデックス値同士が異なる値となるようなインデックス生成処理を、比較的簡単な回路で実現することができる。よって、本実施例によれば、このような処理を実行する描画装置１０１を、比較的少ないコストで実現することができる。
【００５４】
本実施例では、ビット列ＹB以外のビット列を採用することで、上記のようなインデックス生成処理を実現してもよい。例えば、このようなビット列を、ビット列Ｙに所定の値を加える加算処理と、上記のビット列回転処理とにより生成してもよい。また、このようなビット列を、ビット列Ｙに所定の値を掛ける乗算処理と、上記のビット列回転処理とにより生成してもよい。
【００５５】
以上のように、本実施例のTag/Index/Offset Generator１５２は、ミップマップレベルが隣接する２つのテクスチャ画像間において、同じ位置の画像ブロックのインデックス値同士がいずれも異なる値となるよう、インデックス値を生成する。本実施例では、図４のように、１つの原画像に対してレベル０から７までのテクスチャ画像が存在する。本実施例では、画像ＩT0と画像ＩT1との間、画像ＩT1と画像ＩT2との間、画像ＩT2と画像ＩT3との間、画像ＩT3と画像ＩT4との間、画像ＩT4と画像ＩT5との間、画像ＩT5と画像ＩT6との間、画像ＩT6と画像ＩT7との間の全てにおいて、同じ位置の画像ブロックのインデックス値同士がいずれも異なる値となっていてもよい。一方、本実施例では、これらの一部において、同じ位置の画像ブロックのインデックス値同士がいずれも異なる値となっていてもよい。例えば、本実施例では、レベル０から所定のレベルまでのテクスチャ画像に限り、同じ位置の画像ブロックのインデックス値同士がいずれも異なる値となっていてもよい。以上の内容は、各テクスチャ画像の隣り合う画像ブロックのインデックス値同士についても同様に適用可能である。
【００５６】
本実施例のTag/Index/Offset Generator１５２は更に、ミップマップレベルが隣接するＮ個（Ｎは３以上の整数）のテクスチャ画像間において、同じ位置の画像ブロックのインデックス値同士が異なる値となるよう、インデックス値を生成してもよい。図７乃至図９には、Ｎ＝３の場合の例が記載されている。図７乃至図９では、画像ＩT0と画像ＩT1との間、画像ＩT1と画像ＩT2との間、及び画像ＩT0と画像ＩT2との間において、同じ位置の画像ブロックのインデックス値同士がいずれも異なる値となっている。なお、１つ前の段落に記載の内容は、この段落で説明したような場合に対しても同様に適用可能である。
【図面の簡単な説明】
【００５７】
【図１】本実施例のコンピュータグラフィックス描画装置のブロック図である。
【図２】テクスチャ画像及びスクリーン画像について説明するための図である。
【図３】ミップマップ及びミップマップレベルについて説明するための図である。
【図４】テクスチャキャッシュについて説明するための図である。
【図５】正規化テクスチャ座標及びテクセル座標について説明するための図である。
【図６】インデックス値及びオフセット値について説明するための図である。
【図７】レベル０のテクスチャ画像のインデックスマップの例を表す。
【図８】レベル１のテクスチャ画像のインデックスマップの例を表す。
【図９】レベル２のテクスチャ画像のインデックスマップの例を表す。
【符号の説明】
【００５８】
１０１  コンピュータグラフィックス描画装置
１１１  Vertex Shader
１１２  Rasterizer
１１３  Pixel Shader
１２１  Texture Unit
１３１  Raster Operation Unit
１４１  System Memory
１５１  UV Generator
１５２  Tag/Index/Offset Generator
１５３  Cache Body
１５４  Filter
２０１  テクスチャキャッシュ
【図１】
2009099098.tif 000003
【図２】
2009099098.tif 000004
【図３】
2009099098.tif 000005
【図４】
2009099098.tif 000006
【図５】
2009099098.tif 000007
【図６】
2009099098.tif 000008
【図７】
2009099098.tif 000009
【図８】
2009099098.tif 000010
【図９】
2009099098.tif 000011