説明

コンピュータグラフィックス描画装置及び描画方法

【課題】コンピュータグラフィックス描画装置に関し、テクスチャ画像のキャッシングに関する新たな手法を提供する。
【解決手段】ミップマップレベルの異なる複数のテクスチャ画像を利用して1つのスクリーン画像を生成する描画装置であって、参照対象のテクスチャ画像の正規化テクスチャ座標を生成し、前記テクスチャ画像の前記正規化テクスチャ座標から、前記テクスチャ画像を構成するテクセルのテクセル座標を、前記テクスチャ画像のミップマップレベルに従って生成し、前記テクスチャ画像の参照対象の画像ブロックについて、前記画像ブロックに対応するキャッシュラインを指すインデックス値を、前記画像ブロックを構成するテクセルのテクセル座標を利用して生成する際に、ミップマップレベルが隣接する2つのテクスチャ画像間において、同じ位置の画像ブロックのインデックス値同士が異なる値となるよう、前記インデックス値を生成する描画装置。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、コンピュータグラフィックス描画装置及び描画方法に関する。
【背景技術】
【0002】
コンピュータグラフィックスの分野では、テクスチャマッピングと呼ばれる手法が広く知られている。テクスチャマッピングでは、画像中の物体の表面にテクスチャ画像を貼り付けることで、画像中の物体にテクスチャ(質感)を持たせることができる。テクスチャマッピングでは、画像処理の高速化を実現すべく、1つのテクスチャ(質感)を表現するのに解像度の異なる複数のテクスチャ画像を使用する事が多い。これらのテクスチャ画像の各々はミップマップと呼ばれ、各テクスチャ画像の解像度の高さはミップマップレベルと呼ばれる数値で表現される。
【0003】
このようなテクスチャマッピングでは、ミップマップレベルの異なる複数のテクスチャ画像が同時に参照される事がある。このとき、テクスチャキャッシュでは、これらの画像へのアクセスが同時に起こるため、これらの画像間にてキャッシュラインのコンフリクトが生じ得る。すなわち、これらの画像に対し、同じキャッシュラインが使用されてしまう事がある。
【0004】
一般的には、このようなコンフリクトを避けるために、2ウェイ以上のセットアソシアティブ連想方式(以下「連想方式」と呼ぶ)や、キャッシュを偶数レベルのミップマップ用と奇数レベルのミップマップ用の2セットに分ける方式(以下「分割方式」と呼ぶ)が採用される(非特許文献1等)。しかし、連想方式では、連想度の増加による回路コストの増大が問題となる。また、分割方式では、場合によってはキャッシュの総容量の半分しか使用されない可能性があり、キャッシュの使用効率の低下が問題となる。例えば、大きな物体にテクスチャを与える場合には、ミップマップ機能が採用されていても、レベル0のミップマップしか使用されない。この場合、キャッシュの総容量の半分(奇数レベル用のセット)が全く使用されないことになる。
【0005】
以上のように、従来の連想方式や分割方式では、回路コストの増大やキャッシュの使用効率の低下のような、テクスチャ画像のキャッシングに関連する無駄が問題となる。
【非特許文献1】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
【発明の開示】
【発明が解決しようとする課題】
【0006】
本発明は、コンピュータグラフィックス描画装置及び描画方法に関し、テクスチャ画像のキャッシングに関する新たな手法を提供することを課題とする。
【課題を解決するための手段】
【0007】
本発明の実施例は例えば、ミップマップレベルの異なる複数のテクスチャ画像を利用して1つのスクリーン画像を生成するコンピュータグラフィックス描画装置であって、参照対象のテクスチャ画像の正規化テクスチャ座標を生成する第1の座標生成部と、前記テクスチャ画像の前記正規化テクスチャ座標から、前記テクスチャ画像を構成するテクセルのテクセル座標を、前記テクスチャ画像のミップマップレベルに従って生成する第2の座標生成部と、前記テクスチャ画像の参照対象の画像ブロックについて、前記画像ブロックに対応するキャッシュラインを指すインデックス値を、前記画像ブロックを構成するテクセルのテクセル座標を利用して生成するインデックス生成部であって、ミップマップレベルが隣接する2つのテクスチャ画像間において、同じ位置の画像ブロックのインデックス値同士が異なる値となるよう、前記インデックス値を生成するインデックス生成部とを備えることを特徴とする描画装置である。
【0008】
本発明の実施例は例えば、ミップマップレベルの異なる複数のテクスチャ画像を利用して1つのスクリーン画像を生成するコンピュータグラフィックス描画方法であって、参照対象のテクスチャ画像の正規化テクスチャ座標を生成し、前記テクスチャ画像の前記正規化テクスチャ座標から、前記テクスチャ画像を構成するテクセルのテクセル座標を、前記テクスチャ画像のミップマップレベルに従って生成し、前記テクスチャ画像の参照対象の画像ブロックについて、前記画像ブロックに対応するキャッシュラインを指すインデックス値を、前記画像ブロックを構成するテクセルのテクセル座標を利用して生成する際に、ミップマップレベルが隣接する2つのテクスチャ画像間において、同じ位置の画像ブロックのインデックス値同士が異なる値となるよう、前記インデックス値を生成することを特徴とする描画方法である。
【発明の効果】
【0009】
本発明により、コンピュータグラフィックス描画装置及び描画方法に関し、テクスチャ画像のキャッシングに関する新たな手法が提供される。
【発明を実施するための最良の形態】
【0010】
本発明の実施例を、図面に基づいて説明する。
【0011】
図1は、本実施例のコンピュータグラフィックス描画装置101のブロック図である。本実施例の描画装置101は、Vertex Shader111と、Rasterizer112と、第1の座標生成部の例であるPixel Shader113と、Texture Unit121と、Raster Operation Unit131と、System Memory141とを具備する。Texture Unit121は、第2の座標生成部の例であるUV Generator151と、インデックス生成部の例であるTag/Index/Offset Generator152と、判定処理部の例であるCache Body153と、Filter154とを具備する。
【0012】
図1の描画装置101は、図2のように、テクスチャ画像を利用してスクリーン画像を生成する。図2には、テクスチャ画像ITからスクリーン画像ISが生成される様子が図示されている。図2では、テクスチャ画像ITおよびスクリーン画像ISがそれぞれ、メモリに格納されている。テクスチャ画像ITからスクリーン画像ISが生成される際には、テクスチャ画像ITが一時的にテクスチャキャッシュ201に格納される。
【0013】
図1の描画装置101は特に、図3のように、ミップマップレベルの異なる複数のテクスチャ画像(ミップマップ)を利用して1つのスクリーン画像を生成することができる。図3には、レベル0,1,2のテクスチャ画像IT0,IT1,IT2からスクリーン画像ISが生成される様子が図示されている。図3では、テクスチャ画像IT0,IT1,IT2およびスクリーン画像ISがそれぞれ、メモリに格納されている。テクスチャ画像IT0,IT1,IT2からスクリーン画像ISが生成される際には、テクスチャ画像IT0,IT1,IT2が一時的にテクスチャキャッシュ201に格納される。
【0014】
図4には、複数のテクスチャ画像IT0,IT1,IT2,,,IT7が図示されている。これらのテクスチャ画像は、共通の原画像に由来する異なるミップマップレベルのテクスチャ画像である。テクスチャ画像IT0,IT1,IT2,,,IT7はそれぞれ、ミップマップレベルが0,1,2,,,7のテクスチャ画像である。これらのテクスチャ画像の原画像の画像サイズはここでは、128×128ピクセルとする。よって、テクスチャ画像IT0,IT1,IT2,,,IT7の画像サイズはここではそれぞれ、128×128テクセル,64×64テクセル,32×32テクセル,,,1×1テクセルとなる。
【0015】
図4にはさらに、テクスチャキャッシュ201のキャッシュラインとして、キャッシュラインL0,L1,L2,,,L63が図示されている。キャッシュラインL0,L1,L2,,,L63はそれぞれ、インデックスが0,1,2,,,63のキャッシュラインである。図1の描画装置101では、テクスチャキャッシュ201の1つのキャッシュラインに、1つのテクスチャ画像の1つの画像ブロックが格納される。図4には、画像ブロックB0,B1,B2が例示されている。画像ブロックB0,B1,B2はそれぞれ、テクスチャ画像IT0,IT1,IT2の画像ブロックである。これらの画像ブロックの画像サイズはここではそれぞれ、8×8テクセルとする。図4にはさらに、キャッシュラインL0に格納された画像ブロックのテクセルとして、テクセルT0,T1,T2,,,T63が図示されている。テクセルT0,T1,T2,,,T63はそれぞれ、オフセットが0,1,2,,,63のテクセルである。
【0016】
図5には、128×128テクセルのテクスチャ画像IT0、64×64テクセルのテクスチャ画像IT1、及び32×32テクセルのテクスチャ画像IT2が図示されている。図5にはさらに、各テクスチャ画像の正規化テクスチャ座標(s,t)と、各テクスチャ画像のテクセル座標(u,v)とが図示されている。
【0017】
正規化テクスチャ座標は、テクスチャ画像の一端から他端までの距離を1とする座標系である。正規化テクスチャ座標では、テクスチャ画像の画像サイズやミップマップレベルに関係なく、テクスチャ画像の左上端(又は左下端)の座標が(0,0)となり、テクスチャ画像の右下端(又は右上端)の座標が(1,1)となる。
【0018】
テクセル座標は、隣接する2つのテクセル間の間隔を1とする座標系である。テクセル座標では、テクスチャ画像の端点の座標が、テクスチャ画像の画像サイズやミップマップレベルに依存する。テクスチャ画像IT0においては、画像の左上端(又は左下端)の座標が(0,0)となり、画像の右下端(又は右上端)の座標が(128,128)となる。また、テクスチャ画像IT1においては、画像の左上端(又は左下端)の座標が(0,0)となり、画像の右下端(又は右上端)の座標が(64,64)となる。また、テクスチャ画像IT2においては、画像の左上端(又は左下端)の座標が(0,0)となり、画像の右下端(又は右上端)の座標が(32,32)となる。
【0019】
あるテクスチャ画像の原画像の画像サイズを、W×Hピクセルとする。この場合、当該テクスチャ画像の正規化テクスチャ座標とテクセル座標との間には、u=s×W/2及びv=t×H/2の関係が成り立つ。但し、Lは、当該テクスチャ画像のミップマップレベルを表す。
【0020】
以下、図1の各ブロックの動作について説明する。
【0021】
Vertex Shader111は、描画するポリゴンの頂点列のデータをSystem Memory141から受け取り、頂点単位での座標変換処理や照光処理を行い、各頂点の座標値や各種パラメータを生成する。
【0022】
Rasterizer112は、各頂点の座標値及び各種パラメータをVertex Shader111から受け取り、ポリゴン内部のピクセルや各ピクセルの各種パラメータを生成する。
【0023】
Pixel Shader113は、各ピクセルの各種パラメータをRasterizer112から受け取り、ピクセル単位での照光処理等を行う。Pixel Shader113によるピクセル単位での処理の過程で、必要に応じてテクスチャの参照が行われる。この場合、Pixel Shader113は、参照対象のテクスチャ画像の正規化テクスチャ座標を生成して出力する。
【0024】
UV Generator151は、正規化テクスチャ座標をPixel Shader113から受け取り、正規化テクスチャ座標から、テクスチャ画像上の座標(テクセル座標)を、テクスチャ画像の画像サイズ及びミップマップレベルに従って生成する。こうして、上記テクスチャ画像の正規化テクスチャ座標から、上記テクスチャ画像を構成するテクセルのテクセル座標が、上記テクスチャ画像の画像サイズ及びミップマップレベルに従って生成される。
【0025】
Tag/Index/Offset Generator152は、参照対象のテクスチャ画像のテクセル座標をUV Generator151から受け取る。そして、Tag/Index/Offset Generator152は、参照対象のテクスチャ画像について、当該テクスチャ画像に対応するキャッシュ201のタグを、当該テクスチャ画像を構成するテクセルのテクセル座標を利用して生成する。
【0026】
Tag/Index/Offset Generator152は更に、上記テクスチャ画像の参照対象の画像ブロックについて、当該画像ブロックに対応するキャッシュラインを指すインデックス値を、当該画像ブロックを構成するテクセルのテクセル座標を利用して生成する。
【0027】
Tag/Index/Offset Generator152は更に、上記テクスチャ画像の参照対象のテクセルについて、当該テクセルに対応するアドレスを指すオフセット値を、当該テクセルのテクセル座標を利用して生成する。ここで、オフセットは、キャッシュライン内におけるテクセルの位置を示す相対アドレスに相当する。
【0028】
Cache Body153は、タグ、インデックス、オフセットをTag/Index/Offset Generator152から受け取る。そして、Cache Body153は、上記タグに対応するキャッシュ201にアクセスし、上記インデックス値が指すキャッシュラインに上記画像ブロックが存在するか否かを判定する。
【0029】
Cache Body153は、キャッシュミスの場合、即ち、上記画像ブロックが存在しない場合には、System Memory141から上記キャッシュラインに上記画像ブロックをリフィルした後、上記キャッシュラインから上記画像ブロックを読み出す。所望のテクセルを読み出す際には、上記オフセット値が利用される。
【0030】
Cache Body153は、キャッシュヒットの場合、即ち、上記画像ブロックが存在する場合には、System Memory141から上記キャッシュラインに上記画像ブロックをリフィルすることなく、上記キャッシュラインから上記画像ブロックを読み出す。所望のテクセルを読み出す際には、上記オフセット値が利用される。
【0031】
Filter154は、読み出されたテクセルをCache Body153から受け取り、テクセルにテクスチャフィルタ処理を施す。フィルタリング済みのテクセルは、Pixel Shader113に送られる。Pixel Shader113の処理が終了したピクセルは、Raster Operation Unit131に送られ、Zバッファリング(陰面除去)処理やαブレンディング処理が施された後、System Memory141内のフレームバッファに書き込まれる。
【0032】
図6は、Tag/Index/Offset Generator152によるインデックス値及びオフセット値の生成処理について説明するための図である。
【0033】
図6Aは、画像ブロックBを表す。画像ブロックBの画像サイズは、8×8テクセルである。画像ブロックBのテクセルT0,T1,T2,,,T63のテクセル座標(u,v)はそれぞれ、(u0,v0),(u1,v1),(u2,v2),,,(u63,v63)と表される。画像ブロックBの任意のテクセルTiのテクセル座標(u,v)は、(ui,vi)と表される。ui及びviはそれぞれ、0乃至127の値をとり得る7ビットデータであり、次のように表される。
i=26i(6)+25i(5)+24i(4)+23i(3)+22i(2)+21i(1)+20i(0)。
i=26i(6)+25i(5)+24i(4)+23i(3)+22i(2)+21i(1)+20i(0)。
【0034】
画像ブロックBに関するインデックス値及びオフセット値を生成する際にはまず、画像ブロックBのテクセル座標(u0,v0)乃至(u63,v63)を利用して1次元のビット列が生成される。図6Bには、このようなビット列の例として、ビット列Xが示されている。ビット列Xは、P63,,,P210のような配列のビット列である。P0,P1,P2,,,P63はそれぞれ、テクセル座標(u0,v0),(u1,v1),(u2,v2),,,(u63,v63)を利用して生成されたビット列である。Piは、vi(6)ui(6),,,vi(2)ui(2)vi(1)ui(1)vi(0)ui(0)のような配列のビット列である。
【0035】
続いて、図6Bのように、1次元のビット列Xから、1つのKビットのビット列Yと、64個のKビットのビット列Z0乃至Z63とが切り出される。Kは、2以上の整数であり、ここでは6である。
【0036】
ビット列Z0,Z1,Z2,,,Z63はそれぞれ、ビット列P0,P1,P2,,,P63から切り出されたビット列である。ビット列Ziは、ビット列Piの0乃至5ビット部分に相当する。本実施例では、ビット列Z0,Z1,Z2,,,Z63が表す値がそれぞれ、テクセルT0,T1,T2,,,T63のオフセット値として利用される。
【0037】
ビット列Yは、ビット列P0から切り出されたビット列である。ビット列Yは、ビット列P0の6乃至11ビット部分に相当する。ビット列Yは、ビット列P1乃至P63のいずれかから切り出されたビット列でもよい。本実施例では、ビット列YからKビットのビット列YAが生成され、ビット列YAからKビットのビット列YBが生成され、ビット列YBが表す値が画像ブロックBのインデックス値として利用される。
【0038】
ビット列YAは、図6Bのように、ビット列Yを構成する所定のビットのビット反転により生成される。所定のビットは、ここではビット列Yの最上位ビットであるが、ビット列Yのその他のビットでもよい。図6Bには、最上位ビットvi(5)が反転される様子が示されている。
【0039】
ビット列YBは、図6Bのように、ビット列YAのビット列回転により生成される。図6Bには、ビット列YAが左に回転(ローテート)される様子が示されている。ビット列YAの回転量はここでは、画像ブロックBを有するテクスチャ画像IのミップマップレベルLに基づいて決定される(図6C参照)。ビット列YAの回転量はここでは、2Lビット分とする。よって、ミップマップレベルが0,1,2の場合の回転量はそれぞれ、0,2,4ビット分となる。
【0040】
このような処理により、図7,図8,図9に示すようなインデックス値が生成される。図7,図8,図9はそれぞれ、ミップマップレベルが0,1,2のテクスチャ画像IT0,IT1,IT2のインデックスマップの例を表す。
【0041】
図7乃至図9では、ミップマップレベルが隣接する2つのテクスチャ画像間において、同じ位置の画像ブロックのインデックス値同士が異なる値となっている。すなわち、図7のテクスチャ画像IT0と図8のテクスチャ画像IT1との間や、図8のテクスチャ画像IT1と図9のテクスチャ画像IT2との間において、同じ位置の画像ブロックのインデックス値同士が異なる値となっている。
【0042】
例えば、図8の画像ブロックB1のインデックス値は、50である。
【0043】
図8の画像ブロックB1は、図7の画像ブロックB0Aと同じ位置に存在している。画像ブロックB0Aのインデックス値は、画像ブロックB1のインデックス値とは異なり、16である。
【0044】
図8の画像ブロックB1は更に、図7の画像ブロックB0Bと同じ位置に存在している。画像ブロックB0Bのインデックス値は、画像ブロックB1のインデックス値とは異なり、17である。
【0045】
図8の画像ブロックB1は更に、図7の画像ブロックB0Cと同じ位置に存在している。画像ブロックB0Cのインデックス値は、画像ブロックB1のインデックス値とは異なり、18である。
【0046】
図8の画像ブロックB1は更に、図7の画像ブロックB0Dと同じ位置に存在している。画像ブロックB0Dのインデックス値は、画像ブロックB1のインデックス値とは異なり、19である。
【0047】
このような関係は、図8の全ての画像ブロックと図7の対応する画像ブロックとの間に成立している。このような関係は更に、図9の全ての画像ブロックと図8の対応する全ての画像ブロックとの間にも同様に成立している。例えば、図9の画像ブロックB2のインデックス値は11であるのに対し、図8の対応する画像ブロックB1A,B1B,B1C,B1Dのインデックス値はそれぞれ1,5,9,13(≠11)である。
【0048】
以上のように、本実施例のTag/Index/Offset Generator152は、ミップマップレベルが隣接する2つのテクスチャ画像間において、同じ位置の画像ブロックのインデックス値同士が異なる値となるよう、インデックス値を生成する。このような処理により得られる効果について、図3を参照しながら説明する。
【0049】
図3には、領域R0,R1,R2が図示されている。領域R0,R1,R2はそれぞれ、テクスチャ画像IT0,IT1,IT2を利用してスクリーン画像ISが生成された領域である。図3にはさらに、領域R0と領域R1との境界線αと、領域R1と領域R2との境界線βとが図示されている。このようなスクリーン画像ISの生成処理では、境界線α付近の画像を描画する際に、レベル0及びレベル1の同じ位置の画像ブロックが参照される事が多い。同様に、境界線β付近の画像を描画する際には、レベル1及びレベル2の同じ位置の画像ブロックが参照される事が多い。そのため、同じ位置の画像ブロックのインデックス値同士が同じ値であると、これらの画像ブロック間にてキャッシュラインのコンフリクトが生じてしまう。しかしながら、本実施例では、同じ位置の画像ブロックのインデックス値同士が異なる値となるため、このようなコンフリクトは防止される。
【0050】
本実施例のTag/Index/Offset Generator152は更に、各テクスチャ画像内において、隣り合う画像ブロックのインデックス値同士が異なる値となるよう、インデックス値を生成する。スクリーン画像ISの生成処理では、各テクスチャ画像の隣り合う画像ブロックが参照される事が多いからである。これにより、これらの画像ブロック間でのキャッシュラインのコンフリクトが防止される。図7や図8や図9において、隣り合う画像ブロックのインデックス値同士がいずれも異なる値となっている事に留意されたい。
【0051】
ここで、図6のビット列Yとビット列YBとを比較する。本実施例では、ビット列YBがインデックス値として採用されている。代わりに、ビット列Yをインデックス値として採用する事も考えられる。しかしながら、この場合には、ミップマップレベルが隣接する2つのテクスチャ画像間において、同じ位置の画像ブロックのインデックス値同士が同じ値となるような場所がでてくる。例えば、図7のようなテクスチャ画像と図8のようなテクスチャ画像との間においては、四隅の画像ブロックのインデックス値同士がそれぞれ同じ値となってしまう。
【0052】
そこで、本実施例では、ビット列YBがインデックス値として採用されている。ビット列YBは、ビット列Yにビット反転処理及びビット列回転処理を施すことで生成される。本実施例では、このビット列回転処理により、正規化テクスチャ座標の変化に伴うインデックス値の変化の周期を、ミップマップレベルの異なるテクスチャ画像間で合わせることができる。これにより、本実施例では、ミップマップレベルの異なるテクスチャ画像間において、同じ位置の画像ブロックのインデックス値同士が同じ値となるような事態を回避することができる。
【0053】
ビット列YBは、上述のように、ビット列Yにビット反転処理及びビット列回転処理を施すことで生成される。これらの処理は、比較的簡単な回路により実行可能である。そのため、本実施例によれば、ミップマップレベルの異なるテクスチャ画像間において、同じ位置の画像ブロックのインデックス値同士が異なる値となるようなインデックス生成処理を、比較的簡単な回路で実現することができる。よって、本実施例によれば、このような処理を実行する描画装置101を、比較的少ないコストで実現することができる。
【0054】
本実施例では、ビット列YB以外のビット列を採用することで、上記のようなインデックス生成処理を実現してもよい。例えば、このようなビット列を、ビット列Yに所定の値を加える加算処理と、上記のビット列回転処理とにより生成してもよい。また、このようなビット列を、ビット列Yに所定の値を掛ける乗算処理と、上記のビット列回転処理とにより生成してもよい。
【0055】
以上のように、本実施例のTag/Index/Offset Generator152は、ミップマップレベルが隣接する2つのテクスチャ画像間において、同じ位置の画像ブロックのインデックス値同士がいずれも異なる値となるよう、インデックス値を生成する。本実施例では、図4のように、1つの原画像に対してレベル0から7までのテクスチャ画像が存在する。本実施例では、画像IT0と画像IT1との間、画像IT1と画像IT2との間、画像IT2と画像IT3との間、画像IT3と画像IT4との間、画像IT4と画像IT5との間、画像IT5と画像IT6との間、画像IT6と画像IT7との間の全てにおいて、同じ位置の画像ブロックのインデックス値同士がいずれも異なる値となっていてもよい。一方、本実施例では、これらの一部において、同じ位置の画像ブロックのインデックス値同士がいずれも異なる値となっていてもよい。例えば、本実施例では、レベル0から所定のレベルまでのテクスチャ画像に限り、同じ位置の画像ブロックのインデックス値同士がいずれも異なる値となっていてもよい。以上の内容は、各テクスチャ画像の隣り合う画像ブロックのインデックス値同士についても同様に適用可能である。
【0056】
本実施例のTag/Index/Offset Generator152は更に、ミップマップレベルが隣接するN個(Nは3以上の整数)のテクスチャ画像間において、同じ位置の画像ブロックのインデックス値同士が異なる値となるよう、インデックス値を生成してもよい。図7乃至図9には、N=3の場合の例が記載されている。図7乃至図9では、画像IT0と画像IT1との間、画像IT1と画像IT2との間、及び画像IT0と画像IT2との間において、同じ位置の画像ブロックのインデックス値同士がいずれも異なる値となっている。なお、1つ前の段落に記載の内容は、この段落で説明したような場合に対しても同様に適用可能である。
【図面の簡単な説明】
【0057】
【図1】本実施例のコンピュータグラフィックス描画装置のブロック図である。
【図2】テクスチャ画像及びスクリーン画像について説明するための図である。
【図3】ミップマップ及びミップマップレベルについて説明するための図である。
【図4】テクスチャキャッシュについて説明するための図である。
【図5】正規化テクスチャ座標及びテクセル座標について説明するための図である。
【図6】インデックス値及びオフセット値について説明するための図である。
【図7】レベル0のテクスチャ画像のインデックスマップの例を表す。
【図8】レベル1のテクスチャ画像のインデックスマップの例を表す。
【図9】レベル2のテクスチャ画像のインデックスマップの例を表す。
【符号の説明】
【0058】
101 コンピュータグラフィックス描画装置
111 Vertex Shader
112 Rasterizer
113 Pixel Shader
121 Texture Unit
131 Raster Operation Unit
141 System Memory
151 UV Generator
152 Tag/Index/Offset Generator
153 Cache Body
154 Filter
201 テクスチャキャッシュ

【特許請求の範囲】
【請求項1】
ミップマップレベルの異なる複数のテクスチャ画像を利用して1つのスクリーン画像を生成するコンピュータグラフィックス描画装置であって、
参照対象のテクスチャ画像の正規化テクスチャ座標を生成する第1の座標生成部と、
前記テクスチャ画像の前記正規化テクスチャ座標から、前記テクスチャ画像を構成するテクセルのテクセル座標を、前記テクスチャ画像のミップマップレベルに従って生成する第2の座標生成部と、
前記テクスチャ画像の参照対象の画像ブロックについて、前記画像ブロックに対応するキャッシュラインを指すインデックス値を、前記画像ブロックを構成するテクセルのテクセル座標を利用して生成するインデックス生成部であって、ミップマップレベルが隣接する2つのテクスチャ画像間において、同じ位置の画像ブロックのインデックス値同士が異なる値となるよう、前記インデックス値を生成するインデックス生成部とを備えることを特徴とする描画装置。
【請求項2】
前記インデックス生成部は、ミップマップレベルが隣接するN個(Nは3以上の整数)のテクスチャ画像間において、同じ位置の画像ブロックのインデックス値同士が異なる値となるよう、前記インデックス値を生成することを特徴とする請求項1記載の描画装置。
【請求項3】
前記インデックス生成部は、前記画像ブロックの前記テクセル座標を利用して1次元のビット列を生成し、1次元の前記ビット列からKビット(Kは2以上の整数)のビット列を切り出し、Kビットの前記ビット列のビット列回転を行うことにより、Kビットの前記インデックス値を生成することを特徴とする請求項1又は2に記載の描画装置。
【請求項4】
前記インデックス値が指す前記キャッシュラインに前記画像ブロックが存在するか否かを判定する判定処理部を更に備え、
前記判定処理部は、前記画像ブロックが存在しない場合には、前記キャッシュラインに前記画像ブロックをリフィルした後、前記キャッシュラインから前記画像ブロックを読み出し、前記画像ブロックが存在する場合には、前記キャッシュラインに前記画像ブロックをリフィルすることなく、前記キャッシュラインから前記画像ブロックを読み出すことを特徴とする請求項1乃至3のいずれか1項に記載の描画装置。
【請求項5】
ミップマップレベルの異なる複数のテクスチャ画像を利用して1つのスクリーン画像を生成するコンピュータグラフィックス描画方法であって、
参照対象のテクスチャ画像の正規化テクスチャ座標を生成し、
前記テクスチャ画像の前記正規化テクスチャ座標から、前記テクスチャ画像を構成するテクセルのテクセル座標を、前記テクスチャ画像のミップマップレベルに従って生成し、
前記テクスチャ画像の参照対象の画像ブロックについて、前記画像ブロックに対応するキャッシュラインを指すインデックス値を、前記画像ブロックを構成するテクセルのテクセル座標を利用して生成する際に、ミップマップレベルが隣接する2つのテクスチャ画像間において、同じ位置の画像ブロックのインデックス値同士が異なる値となるよう、前記インデックス値を生成することを特徴とする描画方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate


【公開番号】特開2009−99098(P2009−99098A)
【公開日】平成21年5月7日(2009.5.7)
【国際特許分類】
【出願番号】特願2007−272488(P2007−272488)
【出願日】平成19年10月19日(2007.10.19)
【出願人】(000003078)株式会社東芝 (54,554)
【Fターム(参考)】