(57)【特許請求の範囲】
【請求項１】
グラフィックスシステムにおいて、スクリーン空間に表現されるグラフィックプリミティブを走査し、描画する、コンピュータによって実施される方法であって、
ａ）ブロック寸法を決定するステップと、
ｂ）前記ブロック寸法に従って前記スクリーン空間を細分して、複数のブロックを規定するステップと、
ｃ）少なくとも前記グラフィックプリミティブの一部を含む各ブロックに対して、
c.1）前記ブロック内に複数のスパンを規定するステップであって、前記スパンは集合して、前記ブロックに対応する前記グラフィックプリミティブの一部分を表現することからなるステップと、
c.2）各規定されたスパンについてテクスチャマッピング処理を実行するステップとを含み、
前記各規定されたスパンについての前記テクスチャマッピング処理が、
規定された各スパンについて、テクスチャマップ内の対応するテクスチャ空間のラインセグメントを決定するステップであって、テクスチャマップデータはページモードメモリであるテクスチャメモリに格納されている、該ステップと、
前記テクスチャマップから前記テクスチャ空間のラインセグメントを表すラインセグメントデータを取り出すステップであって、前記テクスチャメモリからテクスチャキャッシュ内への前記ラインセグメントデータの転送によって行われ、前記テクスチャキャッシュは、前記ブロック寸法に基づいて決定された最大長を有するテクスチャ空間のラインセグメントを記憶するのに十分な寸法である、該ステップと、
前記テクスチャキャッシュからデータを選択的に取り出すステップとを含むことを特徴とする方法。
【請求項２】
前記ステップc.1）が、エッジ及びスパンウォーキング走査法を使用して実行される、請求項１の方法。
【請求項３】
前記テクスチャメモリからテクスチャキャッシュ内への前記ラインセグメントデータの転送が、バーストモードアクセスを使用して前記テクスチャマップからデータを取り出すことを含む、請求項１の方法。
【請求項４】
前記テクスチャマップが、複数のテクスチャマップ区分にさらに分割され、前記テクスチャメモリからテクスチャキャッシュ内への前記ラインセグメントデータの転送が、バーストモードアクセスを使用して前記テクスチャマップからデータを取り出して、選択されたテクスチャマップ区分に対応するデータを取り出すことを含む、請求項３の方法。
【請求項５】
各テクスチャマップ区分が矩形である、請求項４の方法。
【請求項６】
各テクスチャマップ区分が正方形である、請求項４の方法。
【請求項７】
b.1）前記グラフィックプリミティブの少なくとも一部を含む各ブロックについて、前記ステップｃ）を実行するための走査経路を規定するステップをさらに含む、請求項１の方法。
【請求項８】
前記ステップb.1）が、横方向の走査順序と縦方向の走査順序を選択するステップ含む、請求項７の方法。
【請求項９】
グラフィックスシステムにおいて、スクリーン空間に表現されるグラフィックプリミティブを走査し、描画する、コンピュータによって実施される方法であって、
ａ）ブロック寸法を決定するステップと、
ｂ）前記ブロック寸法に従って前記スクリーン空間を細分して、複数のブロックを規定するステップと、
ｃ）少なくとも前記グラフィックプリミティブの一部を含む各ブロックに対して、
c.1）前記ブロック内に複数のスパンを規定するステップであって、前記スパンは集合して、前記ブロックに対応する前記グラフィックプリミティブの一部分を表現することからなるステップと、
c.2）各規定されたスパンについてテクスチャマッピング処理を実行するステップとを含み、
前記ステップc.2）が、multum in parvoマップテクスチャマッピング処理を実行するステップを含み、
前記ステップc.2）が、
c.2.1）少なくとも１つの利用可能なテクスチャ空間と前記規定されたスパンの寸法に応答して、適切なスケーリングファクタを決定するステップと、
c.2.2）前記決定されたスケーリングファクタに応答して、複数のテクスチャマップ表現から１つのテクスチャマップ表現を選択するステップと、
c.2.3）前記選択されたテクスチャマップ表現からデータを取り出すステップを含み、
前記ステップc.2.2）が、
c.2.2.1）前記スケーリングファクタの対数を求めるステップと、
c.2.2.2）小数部を含む前記対数の値に応答して、前記対数の値を最も近い整数値に丸めるステップと、
c.2.2.3）前記対数の値に対応するテクスチャマップ表現を選択するステップを含むことを特徴とする方法。
【請求項１０】
グラフィックスシステムにおいて、スクリーン空間に表現されるグラフィックプリミティブを走査し、描画する、コンピュータによって実施される方法であって、
ａ）ブロック寸法を決定するステップと、
ｂ）前記ブロック寸法に従って前記スクリーン空間を細分して、複数のブロックを規定するステップと、
ｃ）少なくとも前記グラフィックプリミティブの一部を含む各ブロックに対して、
c.1）前記ブロック内に複数のスパンを規定するステップであって、前記スパンは集合して、前記ブロックに対応する前記グラフィックプリミティブの一部分を表現することからなるステップと、
c.2）各規定されたスパンについてテクスチャマッピング処理を実行するステップとを含み、
前記ステップc.2）が、multum in parvoマップテクスチャマッピング処理を実行するステップを含み、
前記ステップc.2）が、
c.2.1）少なくとも１つの利用可能なテクスチャ空間と前記規定されたスパンの寸法に応答して、適切なスケーリングファクタを決定するステップと、
c.2.2）前記決定されたスケーリングファクタに応答して、複数のテクスチャマップ表現から１つのテクスチャマップ表現を選択するステップと、
c.2.3）前記選択されたテクスチャマップ表現からデータを取り出すステップを含み、
前記ステップc.2.2）が、
c.2.2.1）前記スケーリングファクタの対数を求めるステップと、
c.2.2.2）小数部を含む前記対数の値に応答して、前記対数の値を切り捨ててすぐ下の整数値にするステップと、
c.2.2.3）前記対数の値に対応するテクスチャマップ表現を選択するステップを含むことを特徴とする方法。
【請求項１１】
グラフィックスシステムにおいて、スクリーン空間に表現されるグラフィックプリミティブを走査し、描画する、コンピュータによって実施される方法であって、
ａ）ブロック寸法を決定するステップと、
ｂ）前記ブロック寸法に従って前記スクリーン空間を細分して、複数のブロックを規定するステップと、
ｃ）少なくとも前記グラフィックプリミティブの一部を含む各ブロックに対して、
c.1）前記ブロック内に複数のスパンを規定するステップであって、前記スパンは集合して、前記ブロックに対応する前記グラフィックプリミティブの一部分を表現することからなるステップと、
c.2）各規定されたスパンについてテクスチャマッピング処理を実行するステップとを含み、
前記ステップc.2）が、multum in parvoマップテクスチャマッピング処理を実行するステップを含み、
前記ステップc.2）が、
c.2.1）少なくとも１つの利用可能なテクスチャ空間と前記規定されたスパンの寸法に応答して、適切なスケーリングファクタを決定するステップと、
c.2.2）前記決定されたスケーリングファクタに応答して、複数のテクスチャマップ表現から１つのテクスチャマップ表現を選択するステップと、
c.2.3）前記選択されたテクスチャマップ表現からデータを取り出すステップを含み、
前記ステップc.2.2）が、
c.2.2.1）前記スケーリングファクタの対数を求めるステップと、
c.2.2.2）小数部を含む前記対数の値に応答して、
c.2.2.2.1）前記対数の値に近い整数値を有する２つのテクスチャマップ表現を取り出すステップと、
c.2.2.2.2）前記２つの取り出されたテクスチャマップ表現について重み付きフィルタリングを実施することにより、フィルタリングされたテクスチャマップ表現を得るステップと、
c.2.2.2.3）前記フィルタリングされたテクスチャマップ表現を選択するステップを実行するステップと、c.2.2.3）小数部を含まない前記対数の値に応答して、前記対数の値に対応するテクスチャマップ表現を選択するステップを含むことを特徴とする方法。
【請求項１２】
スクリーン空間に表現されるグラフィックプリミティブを走査し、描画するためのシステムであって、
グラフィックプリミティブの表現を規定し、記憶するためのプリミティブセットアップモジュールと、
前記プリミティブセットアップモジュールに記憶されたグラフィックプリミティブについてエッジウォーキング走査を実行して複数のスパンを規定するための、前記プリミティブセットアップモジュールに結合されたエッジウォークモジュールと、
前記エッジウォークモジュールによって規定されたスパンについてスパンウォーキング走査を実行するための、前記エッジウォークモジュールに結合されたスパンウォークモジュールと、
テクスチャマップを記憶するためのページモードメモリであるテクスチャメモリと、
前記テクスチャメモリのうちの選択された再分割部を記憶するために前記テクスチャメモリに結合されたテクスチャキャッシュと、
前記テクスチャキャッシュに対するバーストモードアクセスを使用してテクスチャマッピングを実行するために、前記スパンウォータモジュールと前記テクスチャキャッシュに結合されたテクスチャマッピングエンジンと、
テクスチャマッピングされたデータを受け取るために、前記テクスチャマッピングエンジンに結合されたフレームバッファメモリとを備え、
前記テクスチャマッピングエンジンは、規定された各スパンについて、テクスチャマップ内の対応するテクスチャ空間のラインセグメントを決定するべく構成され、かつ前記テクスチャメモリから前記テクスチャキャッシュへと前記テクスチャ空間のラインセグメントを表すラインセグメントデータを転送することによって前記テクスチャマップから前記ラインセグメントデータを取り出すべく構成されており、
前記テクスチャキャッシュは、前記ブロック寸法に基づいて決定された最大長を有するテクスチャ空間のラインセグメントを記憶するのに十分な寸法であることを特徴とするシステム。
【請求項１３】
前記テクスチャマッピングされたデータを表示するために、前記フレームバッファメモリに結合されたディスプレイをさらに含む、請求項１２のシステム。
【請求項１４】
テクスチャマッピングされた画素データを処理し、前記フレームバッファに処理されたデータを書き込むために、前記テクスチャマッピングエンジンと前記フレームバッファメモリに結合された画素処理モジュールをさらに含む、請求項１２のシステム。
【発明の詳細な説明】
発明の背景
１．発明の分野
本発明は、一般に、グラフィックシステムにおけるテクスチャマッピングに関連し、より詳細には、かかるシステムにおいて帯域幅を改善するための、ブロック及びバンド志向走査に関するシステム及び方法に関連する。
２．従来技術の説明
テクスチャマッピングは、３次元グラフィックシステムにおける表面上に画像をマッピングするプロセスである。この技術は、当該技術分野において周知であり、例えば、J.Foley他による「Computer Graphics:Principles and Practice」（Addison-Wesley第２版、1990、741-744頁）に記載されている。
図１に、従来技術によるテクスチャマッピングの例を示す。マッピングされる画像をテクスチャマップ１０１と呼び、その個々の要素をテクセルと呼ぶ。テクスチャマップ１０１は、一般的に、（ｕ，ｖ）で指定される矩形座標系において記述され、通常は、例えば、従来のページモードダイナミックランダムメモリ（DRAM）や他のページメモリのような従来のメモリのある領域に格納される。図１の例では、４つのページ１１０、１１１、１１２、１１３が示されており、それぞれのページは、テクスチャマップ１０１の対応する部分を含む画像領域の一部に対応する。
３次元空間における表面１０４は、それ自身の座標系（ｓ，ｔ）を有する。典型的な３次元グラフィックシステムでは、表面１０４をポリゴンのようなプリミティブとすることができる。このような多くのポリゴンを３次元空間で定義して、３次元の物体または光景を形成することができる。この場合、このようなポリゴンの各々は、図１に示した表面１０４に類似したそれ自身の座標系（ｓ，ｔ）を有する。３次元空間内での表面１０４の配向と、「カメラ」の位置及び配向に基づいて、表面１０４は、コンピュータシステムで表示するために、フレームバッファ内に記憶された２次元表示グリッド１０３にマッピングされる。表示グリッド１０３への表面１０４のマッピングは、当該技術分野において周知であるマトリックス変換によって行われる。表示グリッド１０３は、座標系（ｘ，ｙ）を有しており、一般的には、ビデオランダムアクセスメモリ（ビデオRAM）のようなビデオ表示用に予約されたメモリの領域に配置されている。このビデオRAMは、例えば、VRAMまたは同期式グラフィックスランダムアクセスメモリ（SGRAM）である。表示グリッド１０３は、ビデオRAM内の個別のメモリ位置によって表される、画素（ピクセル）として知られる個々の要素を含んでいる。
表示グリッド１０３上の座標は、「スクリーン（画面）空間」内にあるものとみなされることが多い。同様に、表面１０２内の座標は、「表面空間」内にあるものとみなされ、テクスチャマップ１０１内の座標は、「テクスチャ空間」内にあるものとみなされることが多い。各座標系の原点は、任意の位置に配置することができるが、スクリーン空間の原点は、一般的に、最下部左側または最上部右側のいずれかに配置される。
表示グリッド１０３のある領域内の各画素は、表面１０４上のある点（ポイント）にマッピングし、テクスチャマップ１０１内のある点にもマッピングする。従って、図１の例では、表示グリッド１０３の点Axyは、表面１０２の座標内の点Ａstとテクスチャマップ１０１における点Ａuvにマッピングするか、あるいは、テクスチャマップ１０１内のある領域を形成する一群の点にマッピングする。表示グリッド１０３、表面１０２、及びテクスチャマップ１０１間のそれぞれマッピングを、点対点、点対領域、領域対点あるいは、領域対領域とすることができる。従来のテクスチャマッピングシステムでは、表示グリッド１０３から表面１０４への、そして、テクスチャマップ１０１へのマッピングは、また、特定のテクセルに対する詳細レベルを表す値ｄを生成する。一般的に、ｄは、フレームバッファ内のポイントに対するｚ値によって決定されるような、テクスチャマップ内の認識されたポイントの距離の測定値である。より遠くにあるものとして認識されたポイントの詳細レベルはより低く、それは、解像度がより小さいことを表している。テクスチャマップ１０１からテクセルを取り出す際に、ｄは、圧縮マッピング（multum in parvo：MIPマップ）方式を実施するために使用される。この方式では、いくつかのテクセルを平均化し、あるいは、それ以外のフィルタリングを施して、フレームバッファの１つの画素上にマッピングすることができる。このフィルタリングは、動作中に実行することができるが、フィルタリングする画素をいくつかの指定された解像度レベルで事前に計算して、後で取り出すために記憶して、性能を改善することができる。ｄの値が大きくなる程、詳細レベルは低くなり、より多くの画素フィルタリングが実行される。極限的には、テクスチャマップ全体を、フレームバッファ内の１つの画素に集約することが理論上は可能である。
従来のラスター化エンジンは、ポリゴン及びラインのような既知のプリミティブの走査変換技法によって、画像をフレームバッファ内に描く（例えば、Folay他を参照）。走査変換は、それの入力を、頂点及び配向で規定されたプリミティブと見なし、その出力を、スクリーン（画面）上に描かれるべき一連の画素として出力する。各画素が走査変換によって生成されると、ラスター化エンジンは、テクスチャマップ１０１のどのテクセルが、その画素に対応するかを決定するために、必要なマッピング計算を実行する。次に、ラスター化エンジンは、テクスチャフェッチ、ｚ−フェッチ、ｚ−ライトバック、色フェッチ、色ライトバック等の、メモリ参照が要求されるあらゆるものを発行して、処理中の画素に書き込むためのテクセル情報を取り出す。従って、メモリ参照は、走査変換によって生成された順番で発行される。従来、かかるメモリ参照は、FIFOキューを使用した先入れ先出し（FIFO）方式に従って、記憶され、管理されている。
従来のページモードDRAMコンポーネントが、異なるメモリページからメモリ位置をアクセスするときは、アクセスタイムのペナルティを被るということが知られている。例えば、SGRAMのようないくつかのメモリアーキテクチャでは、開いているページに対するアクセスには、１サイクルを必要とし、開いていないページからの読み出しには、９サイクル、開いていないページへの書き込みには、６サイクル、異なるバンク上の開いているページへのアクセスには３サイクルが必要である。従って、走査変換によって生成された順番でメモリ参照を発行する上述の方式では、このようなペナルティを被る場合がある。なぜなら、テクスチャマップ１０１の参照領域は、異なるページに存在しうるからである。実際に、使用する特定のマッピング変換によって生じるテクスチャ境界の歪みに依存して、走査変換の順に生成される参照は、「スラッシング」としても知られる、ページ切換の頻繁な繰り返しを必要とする場合がある。メモリ帯域幅は、一般的に、３次元画像を高速に生成する際のボトルネックであるので、そのように頻繁にページ切換を行うことは性能を低下させることになる。
さらに、多くのメモリシステムが、バーストモードアクセス方式を使用する。この方式では、１つのプロセスに対して、特定の時間期間、共有メモリリソースが利用可能にされ、このリソースが他のプロセスにサービスしている間は、当該プロセスには利用不能となる。データ転送を最大にするためには、バースト内のページブレークを回避することが有効である。本質的に、いったん、プロセスが、共有メモリリソースにアクセスすると、所望のデータセグメントが、転送されるまで、プロセスがアクセスを保持するのが有効である。ページブレークによってアクセスが他のプロセスに移動し、このために、パフォーマンスがさらに低下する。
バーストモードアクセスにおけるデータ転送を改善することにおいて、及び、ページブレークを少なくすることにおいて、タイリングが有用であることが分かっている。図１には、テクスチャ空間１０１が、メモリ内のページに対応する４つの領域１１０、１１１、１１２、１１３に分割されて示されている。これは、典型的なタイリング方式の例であり、各領域（すなわち、タイル）は、タイル内で実施されたどの走査もページブレークを起こさないように、１ページのメモリに記録される。一般に、ページブレークは、１つのタイルの走査が完了し、他のタイルの走査が開始するときにのみ生じる。一般的に、タイリングによる記憶方式により、線形走査に比べてページブレークが少ない、改善された走査経路が生じる。
タイル及び関連するページは、任意の大きさとすることができ、例えば、32×３２画素、すなわち、全部で1024画素である。１６ビット画素の場合は、これは、２ＫＢのページサイズに相当する。
図１Ａ及び１Ｂに、タイリングによるアドレス指定方式（tiled addressing scheme）の利点の１例を示す。図１Ａは、線形アドレス指定方式で表されたプリミティブ１２０を示す。フレームバッファの幅及びページサイズに依存して、各走査ライン１２１を、それ自身のページのメモリ内に表すことができる。例えば、幅が１０２４で高さが７６８のフレームバッファにおいて、各画素の幅が１６ビットの場合は、２ＫＢのページは１つの走査ラインを保持する。従って、プリミティブ１２０の各ラインセグメントは、異なるページに記憶され、プリミティブ１２０を描画するために、最高８個のページブレークが必要とされる。
これとは対照的に、図１Ｂは、タイリングによるアドレス指定方式で表されたプリミティブ１２０を示している。プリミティブ全体が、１つのタイル１２２にぴったり合えば、プリミティブ１２０を描写するためにページブレークは必要とされない。プリミティブ１２０が、複数のタイルにまたがるものであっても、図１Ａの線形アドレス指定方式よりは、必要なページブレークは一般的に少ない。
上述したタイリングによるアドレス指定方式を、画像記憶に適用することができ、また、色バッファ及び／または、ｚ−バッファにも拡張することができる。
従来技術では、線形アクセス方式とタイリングによるアクセス方式の両方に対して、ページブレークを最小限にするために、他の技法も試みられてきた。１つの例は、従来のページモードメモリコンポーネントの代わりに専用のメモリを使用することである。例えば、H.FuchsとJ.Poultonの「Pixel-Planes:AVLSI-Oriented Design for a Raster Graphics Engine,」（VLSI Design,vol.2.,no.3,1981）、M.Deering他の「FBRAM:A New Form of Memory Optimized for 3D Graphics,」（Computer Graphics,Proceedings of SIGGRAPH,1995）、A.Schilling他の「Texram:A Smart Memory for Texturing,」（IEEE Computer Graphics and Applications,1996）を参照されたい。このようなシステムは、例えば、特定用途向け集積回路（ASIC）上でメモリを処理に直接関連付けることによって、または、DRAMチップ上でロジックをメモリに直接関連付けることによって、一般的にメモリの帯域幅を改善する。A.Schilling他を参照されたい。しかしながら、このような技法は、従来のページモードDRAMよりも一般的に高価な、高度に専用化されたコンポーネントを必要とする。
メモリ帯域幅を低減する別の試みが、K.Akeleyの「Reality Engine Graphics」（Computer Graphics,Proceedings of SIGGRAPH,1993）に記載されている。Akeleyは、極端なメモリインターリービングシステムについて記載している。この技法は、従来のメモリシステムが必要とするものよりも非常に多くのメモリチップを必要とし、結果として、より高価なものとなる。
テクスチャマップへのアクセス帯域幅を改善するために、テクスチャキャッシュを使用することができる。しかし、テクスチャキャッシュのヒット率は、テクセル参照の局在性によって制限される。局在性が不十分であると、テクスチャキャッシュ内外へのテクセルのスワッピングが非常に多くなる可能性がある。従来の走査ライン志向走査（traversal）アルゴリズムでは、局在性が不十分になる場合があり、テクスチャプリミティブが変わった形状である場合は特にそうである。例えば、従来のように、三角形がテクスチャプリミティブとして使用され、非常に長く、細い三角形がｘまたはｙ軸に沿って十分な長さにわたってのびるような場合は、スパン（全長）を走査し終わるときには、スパンの開始点はもはやテクスチャキャッシュ内にはキャッシュされていない。従って、次のスパンの走査（横断）が開始されるときには、要求されたテクセルはもはやキャッシュされておらず、メインのテクスチャメモリから取り出さなければならない。すなわち、局在性に基づくテクスチャキャッシュのスワップアウトは、（長く、細い三角形のような）所定の形状を描画する場合に、不十分なヒット率を招く。
局在性を改善するために、テクセル再順序付け技法（reordering techniques）を使用することができる。しかし、このアプローチの効果は、アクセスバッファの大きさによって制限され、グラフィックスプリミティブが変則的な形状であるいくつかの状況では、テクスチャ空間の局在性の問題を解決するのに依然として失敗することがある。２つ以上の走査ラインを１つのグループとして走査することによってテクセルの再順序付けを向上させ、局在性を改善することができる。このアプローチは、次にどの走査ラインを処理するかを決定する際に、スケジュール調整の問題が生じるので、より複雑なものとなる。かかる改善されたテクセルの再順序付けは、また、並べ替えアルゴリズムから多くのフィードバックを必要とし、待ち時間及び検証に起因する重大なハードウェア設計の問題を生じる可能性がある。
上述の技法は、描画効率をある程度改善することにおいて効果があるが、不要なページ切換が依然として生じる。特に、テクスチャ空間へのバーストモードアクセスは、テクセル参照の不十分な局在性のために、不要なページスラッシングを引き起こし、かつ、キャッシュ領域の再使用を制限することになる。
バーストモードアクセスを、テクスチャ記憶部をアクセスするために使用する場合には、別の問題が生じる。バーストモードは、一般的に、メモリバスの幅（例えば、64ビット、または128ビット）に対応する固定長を有するデータセグメントを取り出す。従って、テクスチャ空間へのバーストモードアクセスは、一般的に、すぐに必要としているデータより多くのデータを取り出す。従来のテクスチャ記憶メカニズムは、後で再使用するための不要なデータを十分にキャッシュするものではない。従って、このデータへの追加のアクセスが生成される。しかしながら、局在性を改善することにより、より効率の良いキャッシング、及び、以前取り出されたデータセグメントの再使用がもたらされるであろう。
コンポーネントの数、または、全体のコストを実質的に増加させることなく、広範にわたるクライアントのアルゴリズム用に、グラフィックエンジンの性能を改善するために、従来のページモードメモリにおけるページ切換を最小限にすることによってメモリ帯域幅を低減するシステムが必要とされている。特に、既存のエッジ−ウォーキング及びスパン−ウォーキング走査技法に対するテクセル参照の局在性を改善するシステム、及び、取り出されたデータの再使用を改善するテクスチャ空間の改善されたバーストアクセス方式が必要とされている。
発明の要約
本発明によれば、ページ切換を最小限にし、かつ、グラフィックエンジンの性能を改善するために、３次元グラフィックシステムにおいて三角形のプリミティブを描画する際に、ブロック及びバンド（ベルト）志向走査に関するシステム及び方法が提供される。
本発明は、テクスチャマップに対するアクセス帯域幅を改善するために、テクスチャキャッシュを利用する。以前に取り出されたデータの再使用を改善する方式において、高速のキャッシュメモリへのバーストモードアクセスを使用することにより、最大の帯域幅が実現される。テクスチャキャッシュは、改善されたアクセスに対する特定の領域に関連したテクセルを記憶する。テクスチャ空間における局在性は、各画素のテクスチャ座標によって決まる。テクスチャキャッシュは、有限の大きさであり、従って、キャッシュの一部分は、それが、すぐにアクセスされる可能性が低くなったときには、スワップアウトされる。スワップアウトは、局在性に応じて実行される。従って、テクスチャキャッシュを参照することによってテクセルをアクセスする速度を表す、テクスチャキャッシュのヒット率は走査の局在性が改善されると向上する。本発明は、テクスチャキャッシュのヒット率を改善するために、特にバーストモードアクセスと併用して、テクセル参照の局在性を改善することを目的としている。
三角形の描画は、既知のエッジウォーキング、及びスパンウォーキング技法を使用して実現される。三角形の各スパンが決定され、次に走査される。
上述の問題に対処するために、本発明は、タイリング、改善されたテクスチャ記憶方式、及び、修正された走査技法を利用し、これにより、テクセル参照の局在性を改善し、その結果としてヒット率を上げる。
タイリングは、上述したように、スクリーン空間走査の局在性を改善する。一般的に、スクリーン空間におけるプリミティブの描画において、タイリングによるアドレス指定方式が使用される場合には、ページブレークが少なくなる。
本発明は、改善されたテクスチャ記憶方式をさらに利用し、これによって、テクスチャ空間を、４×４テクセルのような、ある固定した大きさの「正方形（スクエア）」（実際には、正方形である必要はなく、矩形、または、他の任意の形状でもよい）に分割する。テクスチャスクエア（正方形）の各々は、連続したメモリ領域において表される。規定されたビット配置及びメモリバス幅に従ったバーストモードアクセスにより、処理される特定のラインセグメントを描画するために必要とされるデータより多くのデータを取り出すことになる。取り出されたデータセグメントは、後で使用するためにキャッシュされる。改善されたテクスチャ記憶方式は、テクスチャ空間内の特定のラインセグメントの対角配向を利用することにより、キャッシュされたデータセグメントに対するヒット率を高める。特に、テクスチャスクエアは、テクスチャキャッシュが走査されるときに、ページブレークを低減するように機能する。
最後に、本発明は、テクスチャアクセスの改善された局在性を提供するスクリーン空間走査方式を利用する。本発明の方法は、画像をスクリーン空間における複数のブロックまたはバンドに分割する。各ブロックまたはバンドの幅と高さは一定であり、例えば、８×８画素または１６×１６画素である。三角形のような画像プリミティブは、スクリーン空間において任意の数のブロックまたはバンドにまたがること場合がある。従って、任意の特定のブロッまたはバンドに横たわるプリミティブの一部を、各スパンがブロックまたはバンドの一定幅に対応する最大幅を有するところの複数の水平スパンとして表すことができる。特定の走査経路は、描画されるプリミティブの幾何学的特徴に従って選択される。
MIPマップテクスチャマッピング方式は、利用可能なテクスチャ空間と、描画されるプリミティブのセグメントの大きさに基づいて決定される適切な詳細レベル（LOD）を利用する。従って、LODは、テクスチャ空間の単一のテクセルのテクセル値を得るために、スクリーン空間の一組の画素についての画素値の平均化、または（それ以外の）フィルタリングを行うことによって実施されるスケーリングファクタを表す。計算速度は、LODスケーリングファクタを２のべき乗に制限することによって高速になるが、それは、本発明の要件ではない。
スクリーン空間内の各スパンは、テクスチャ空間内のラインセグメントに対応する。MIPマップテクスチャマッピング方式が与えられると、テクスチャ空間のラインセグメントの長さは、1.41ｗ以下に必然的に制限される。ここで、ｗは、スクリーン空間におけるブロックまたはバンドの一定寸法である。
スクリーン空間の８画素の一定寸法については、テクスチャ空間のラインセグメントの最大長は1.41×8＝11.28であり、これは、12テクセルに切り上げられる。より詳細に後述するように、スケーリングの小数部が、丸めではなくて切り捨てによって処理されるいくつかの場合においては、テクスチャ空間の最大のラインセグメントは、１６画素に達する場合がある。従って、１２×１２（または、切り捨てが採用される場合は、１６×１６）テクセルの寸法を有するテクスチャキャッシュは、任意のプリミティブのブロックまたはバンドを細分したものの全幅または全高を確実に記憶することができ、このため、細分されたプリミティブの走査は、テクスチャキャッシュのスワップアウトを必要としない。
テクスチャ空間の任意のセグメントの固定された最大寸法（上記例では、１２画素、または１６画素）が与えられた場合は、メモリの局在性を保証するために、所定数のテクスチャキャッシュスクエアが、連続アクセスのために使用できなければならない。テクスチャ空間のセグメントの配向が水平か垂直である最良の場合では、テクスチャ空間の最大セグメント長をテクスチャキャッシュスクエアの寸法で割ることによって、テクスチャキャッシュスクエアの数を決定することができる。従って、上記の例において、セグメントが垂直または水平に配向している場合には、３つの隣り合う４×４のテクセルスクエアによって、１２テクセルの最大セグメント長を表すことができる。セグメントがテクスチャ空間で４５度配向している最悪の状況では、全部で１３スクエアの４×４寸法が必要である。従って、１３のテクスチャキャッシュスクエアが提供されて、連続アクセスに利用できる場合は、スクリーン空間の８画素のスクエアについてのすべてのラインセグメント及びバンドに対して、メモリの局在性が保証される。
８画素幅のブロックまたはバンドを使用する本発明の他の利点は、上記分割されたものが必然的にページ境界に整列し、これによって、ｚ−バッファに良好な局在性を生ずることである。
【図面の簡単な説明】
図１は、従来技術によるテクスチャマッピングを示す図である。
図１Ａは、従来技術による線形アドレス指定方式を示す図である。
図１Ｂは、従来技術のタイリングによるアドレス指定方式を示す図である。
図２Ａは、従来技術による、スクリーン空間における三角形プリミティブを示す図である。
図２Ｂは、従来技術による、テクスチャ空間におけるテクスチャ画像の図である。
図２Ｃは、従来技術による、スクリーン空間におけるテクスチャマッピングされた三角形プリミティブの図である。
図３は、従来技術による、エッジ及びスパンウォーキングの方法のフローチャートである。
図４Ａは、本発明による、スクリーン空間における三角形プリミティブの図である。
図４Ｂは、本発明による、スクリーン空間における走査用のブロックを示す図である。
図４Ｃは、図４Ｂのブロックに対応するテクスチャ空間内の領域を示す図である。
図４Ｄは、本発明による、スクリーン空間内の走査用のバンドを示す図である。
図５は、本発明の１実施態様によるMIPマップテクスチャマッピングの１例を示す図である。
図６は、正方形を使用したテクスチャマップの実施を示す図である。
図７Ａ及び７Ｂは、テクスチャ空間のラインセグメントを示す図である。
図８は、本発明を実施するためのシステムのブロック図である。
図９Ａは、コンポーネントのラインセグメントを有する、スクリーン空間内の三角形プリミティブを示す図である。
図９Ｂは、テクスチャ空間内のラインセグメントを示す図である。
図９Ｃは、線形アドレス指定方式を使用するテクスチャ空間内のラインセグメントのバーストモードによる取り出しを示す図である。
図９Ｄは、正方形中に細分されたテクスチャ空間内のラインセグメントのバーストモードによる取り出しを示す図である。
図１０は、テクスチャ空間内のラインセグメントの１例を示す詳細図である。
図１１Ａから１１Ｄは、スクリーン空間における走査経路を示す図である。
図１２は、走査経路を選択する方法のフローチャートである。
図１３は、画素の走査順番を含む、スクリーン空間における走査経路を示す図である。
発明の詳細な説明
図８に、本発明を実施するためのシステム８００を示す。テクスチャメモリ８０１は、プリミティブ上にマッピングされるテクスチャの２次元表現を含む。キャッシュ８０２は、より詳細に後述するように、アクセス速度を改善するために、テクスチャメモリ８０１の一部の一時的な記憶を提供する。グラフィックプリミティブは、メモリのプリミティブ記憶部（不図示）に記憶され、三角形や他の多角形のような表示されるグラフィック要素の大きさと形状を規定する。後述する走査及び横断技法を実施するために、プリミティブは、三角形セットアップモジュール８１０によって処理され、エッジウォークモジュール８０９とスパンウォークモジュール８０８を使用して走査される。テクスチャマッピングエンジン８０３は、テクスチャメモリ８０１に記憶されたテクスチャをプリミティブにマッピングする処理を実行する。次に、画素処理モジュール８０７が、ｚ-バッファリング（z-buffering）、テクスチャライティング（lighting）、かぶり効果（fogging）、アルファ混合（alpha blending）、及び他の画素処理を実行して、その結果として描画された画像をフレームバッファメモリ８０５、または、他のビデオメモリに書き込む。フレームバッファ８０５内の画像は、ディスプレイ８０６に送られる。本発明は、テクスチャマッピングエンジン８０３の動作と、図８の他のコンポーネントとのそれの関係に関連する。
図２Ａに、テクスチャ空間のテクスチャマップ２１９をアクセスすることによって、スクリーン空間に描画される三角形プリミティブ２００を示す。プリミティブ２００は、一般的には、ディスプレイスクリーン８０６上のグラフィック画像のある要素を表しており、テクスチャマップ２１９は、プリミティブ２００にマッピングされる、あるグラフィックパターンすなわち画像２２０を含む。テクスチャマップ２１９内の画像２２０は、３次元空間においてある角度で見るという効果を与えるために、プリミティブ２００にマッピングされるときに、変形される場合がある。例えば、ビデオゲームにおいて、プリミティブ２００は、空間を飛行する宇宙船のある部分を表すことができ、テクスチャマップ２１９は、その宇宙船の部分の模様及び他の表面形状のグラフィック画像を含むことができる。３次元動作の効果を与えるために、プリミティブ２００によって表された宇宙船の部分を引き伸ばし、あるいは、ひずませて、これによって、それを３次元空間においてある角度からながめたように見せる。テクスチャ画像２２０は、プリミティブ２００にマッピングされると、効果を保持して強化するために、同じように、引き伸ばされ、ひずまされる。
エッジ及びスパンウォーキング
テクスチャ画像２２０をプリミティブ２００にマッピングするために、エッジ及びスパンウォーキングとして既知の技法が一般的に使用される。図３に、エッジ及びスパンウォーキング処理のフローチャートを示す。スクリーン空間においてプリミティブ２００が規定される（３０１）と、スクリーン空間における水平画素行のスパン２０２が規定される。各スパンは、画素の行を表す固有のｙ値、すなわち、ｘ軸からの距離を有している。各スパンは、プリミティブ２００の２つのエッジによって仕切られ、２つのエッジの各々は、一次方程式によって規定することができる。例えば、図２Ａにおいて、スパン２０３は、「高さ」すなわちスパンの行数を表すｙ値２０６によって規定される。スパンの仕切り（境界）は、プリミティブ２００のエッジ２０４と２０５を記述する一次方程式によって規定されるが、それは、プリミティブ２００を規定する３つの３角形の点から導くことができる。従って、スパン２０２を規定するために、エッジがプリミティブ２００の特徴に基づいて規定され（３０２）、スパン２０２が、エッジに基づいて規定される（３０３）。各スパン２０２は、仕切り用のエッジ座標間の差に依存して、特定数の画素を含む。
プリミティブ２００は、スパンごとに走査され、各スパンについて、そのスパン内の画素は、左から右に向かう順番で処理される。第１のスパン２０２が選択され（３０４）、選択されたスパン２０２内の第１の画素が指定される（３０５）。一般的には、第１のスパンの第１の画素は、一番上のスパンの最も左側の画素を表すが、図１１Ａから１１Ｄを参照して詳細に後述するように、他のスパンウォーキング及び／またはエッジウォーキング方式を使用することもできる。
次に、選択された画素に対応するテクスチャマップ２１９のテクセルが取り出される（３０６）（図２Ｂも参照）。MIPマップテクスチャマッピングを使用すると、当該技術分野では知られているように、選択された画素の値を生成するために、平均化または他のあるフィルタリング技法を使用して、複数のテクスチャマップ２１９のテクセルを結合することができる。この方法では、種々の詳細レベルがサポートされており、極めて小さなプリミティブ２００に対する、不要なテクセルデータの不要な取り出しが回避されるようになっている。いくつかの実施態様では、テクスチャマップ画像２２０のいくつかのバージョンを、種々の詳細レベルで記憶することができ、これによって、所望の詳細レベルでのフィルタリングされた画素値を生成するために、実行時に計算することが不要となる。
例示のために、現在説明しているエッジ及びスパンウォーキングでは、テクセルのフィルタリングが起こらないと仮定している。従って、単一のテクセルが取り出され、それのデータが、プリミティブ２００の選択された画素について描画される。例えば、プリミティブ２００の画素２０１は、テクスチャ画像２２０のテクセル２２１に対応することができ、これによって、テクセル２２１を取り出して、スクリーン空間で画素２０１を描画する際に使用することができる。プリミティブ２００の他の画素も同様に処理される。
現在のスパンの終了まで到達したかどうかを判定するために、チェック３０７が実行される。このチェックは、例えば、現在選択されている画素のｘ座標と、プリミティブ２００の境界エッジ２０５を比較することによって実行することができる。スパンの終わりにまだ到達していない場合は、スパン内の次の画素を選択し（３０８）、テクセルの取り出し（３０６）を繰り返すことによってスパンウォーキングが継続される。１実施態様では、画素毎ではなくて、バーストモードアクセスによって各スパンを取り出して処理することにより、性能が改善される。バーストモードアクセスについては、図９Ａから９Ｄを参照して、さらに詳しく後述する。
スパンウォーキング中の連続するテクセルに対するテクセルの取り出し（３０６）は、スクリーン空間の単一の画素移動に対応するテクスチャ空間のテクセルウォークベクトル（walk vector）を決定することによって容易になる。テクセルウォークベクトルは、スクリーン空間のｘ方向における単一の画素走査に対応する、テクスチャ空間における走査の距離及び方向を表す。従って、テクセルウォークベクトルは、スクリーン空間のプリミティブ２００とテクスチャマップ２２０の相対的な大きさと配向に依存する。スクリーン空間における単一の画素走査は、テクスチャ空間における１つのテクセル走査より小さいので、一般的に、図２Ａに示すような比較的大きなプリミティブ２００は、比較的小さなテクセルウォークベクトルを生じる。従って、２つ以上の連続する画素をテクスチャ画像２２０内の同じテクセルにマッピングすることができる。逆に言えば、比較的小さなプリミティブ２００は、比較的大きなテクセルウォークベクトルを生じる。なぜなら、テクスチャマップは縮小され、個々のテクセルがスキップされうるからである。
スパンの終わりに到達すると、スパン２０２がさらに存在するかどうかを判定するためにチェックが実施される（３０９）。このチェックは、例えば、現在のスパンのｙ値と、プリミティブ２００のｙ値指標を比較することによって実施することができる。他にスパンが存在する場合は、次のスパンが選択され（３１０）、上述したように走査される。他にスパンが存在しない場合には、プリミティブは完全に描画されたことになり、表示の準備が整ったことになる。
図２Ｃに、プリミティブ２００と同じ形状を有するが、今や、テクスチャマップ画像２２０をプリミティブ２００にマッピングすることによって生成されたパターンを含む、描画されたプリミティブ２４０の一例を示す。
上記のスパンウォーキング法は、水平走査が各画素を順にアクセスするので、一般に、画素を順次的に処理するものである。メモリへの画素データの記憶は、一般的に、左から右へのパターンに追従して行われ、隣の画素は隣のメモリ位置に記憶される。従って、スパンウォーキングの水平走査は、一般的に、スクリーンメモリ８０５内の連続するメモリ位置をアクセスすることによって実施される。メモリの局在性は、個々のスパンに対するスパンウォーキング処理の間保持され、パフォーマンスを改善するために、ページブレークが全体的に回避される。
しかし、スパンの終わりに到達して次のスパンが処理されることになると、画素データのメモリアドレスの取り出しに不連続が生じる場合がある。すなわち、所定のスパンにおける最後の画素に対するメモリ位置は、次のスパンにおける最初の画素に対するメモリ位置の隣にはない場合がある。スパンが十分に長いと、あるスパンから次のスパンへのジャンプによってページブレークが生じ、そのため、上述したように、パフォーマンスが劣化する場合がある。
ブロック及びバンド志向走査
図４Ａに、前に図２Ａに示したのと同様の大きさ及び形状を有する、スクリーン空間内のプリミティブ２００を示す。一定のｘ及びｙ寸法を有するブロック４０１を利用して、スクリーン空間とプリミティブ２００を細分する。１実施態様では、ブロック４０１の寸法は、８画素×８画素であるが、任意の適切な寸法を使用することもできる。
メモリの局在性を改善し、ページブレークを少なくするために、スパンウォーキングは、ブロック毎の走査方式を使用して行われる。図４Ｂに、走査に必要なブロック４０２と共に、スクリーン空間内のプリミティブ２００を示す。ブロック４０２は、例示のために、８画素の幅×８画素の高さのものとして示されている。スパン４０３は、上述したように規定されるが、ブロック境界の追加のデリミタを備えている。ブロック境界のデリミタによって、すべてのスパンが、ブロックの水平寸法に対応する最大長を有することが保証される。ある走査ラインから次ぎの走査ラインにジャンプするときに、ページブレークが起こらないように、この寸法を十分小さなものとして選択することができる。
代替の実施態様では、ブロック４０１の代わりにバンドが使用される。バンドは、一定のｘ寸法、または、一定のｙ寸法を有する。図４Ｄに、以前に図２Ａに示したのと同様の寸法と形状を有する、スクリーン空間内のプリミティブ２００を示す。ここでは、バンド４０５が、ブロック４０１の代わりに規定される。バンドの境界は、スパンの走査に対してデリミタとして機能し、最大のスパン長がバンドの寸法に対応することを保証する。ブロックの寸法に関しては、ある走査ラインから次ぎの走査ラインにジャンプするときに、ページブレークが起こらないように、バンドの寸法を選択することができる。
当業者には明らかなことであるが、本発明の思想または本質的な特性から逸脱することなく、水平のバンドまたは種々の形状のブロックの如き他の形式の細分化を利用する代替実施態様を使用することができる。
好ましい実施態様では、ブロックまたはバンドによる走査が実行される場合に、４つの異なる走査経路から走査経路が選択される。図１１Ａ〜１１Ｄに、タイル１２２を走査するための走査経路１１０１を示す。図１１Ａは左から右へ、上から下への、図１１Ｂは右から左へ、上から下への、図１１Ｃは左から右へ、下から上への、図１１Ｄは右から左へ、下から上への走査をそれぞれ示している。類似の走査経路を、タイリングによる細分化にも同様に適用することができる。水平走査ラインではなくて、垂直走査ラインを伴う走査経路を実施することも可能である。
図１２に、本発明の１実施態様に従う、どの走査経路を使用するかを決定するための方法を示す。各頂点が、スクリーン空間におけるｘ座標とｙ座標を有する、３つの頂点を有する三角形のようなプリミティブを想定する。説明のために、最上部左側の角に原点（ｘ、ｙ＝０，０）があると仮定する。
３つの頂点は、それらのｙ座標によって並べ替えられて、ラベル０、１、２を付される（１２０１）。従って、頂点１は、頂点０と２のｙ座標の間にｙ座標を有する。頂点１が、頂点０と２に接続したラインセグメントの右側にある場合（１２０２）は、左から右への走査が選択される（１２０３）。この選択がされると、頂点０と２のｘ座標が比較される（１２０４）。頂点２のｘ座標が、頂点０のｘ座標より小さい場合は、下から上への走査が選択される（１２０５）。これは、図１１Ｃに示した走査経路である。そうでなければ、上から下への走査が選択される（１２０７）が、これは、図１１Ａに示した経路である。
１２０２で、頂点１が、頂点０と２に接続されているラインセグメントの右側にない場合は、右から左への走査が選択される（１２０８）。この選択が行われると、頂点０と２のｘ座標が比較される（１２０９）。頂点２のｘ座標が頂点０のｘ座標よりも小さい場合は、上から下への走査が選択される（１２０７）。これは、図１１Ｂに示す走査経路である。そうでない場合は、下から上への走査が選択される（１２０５）が、これは図１１Ｄに示す経路である。
図１１Ａから１１Ｄに示す走査経路をブロックまたはバンドと呼ぶ。ブロックまたはバンド内で、個々の画素が走査される。１実施態様では、個々の画素の走査は、ブロック走査経路に類似した経路に従って実行されるが、他の経路を使用することもできる。図１３に、左から右、下から上への走査経路に従う個々の画素走査の例を示す。個々の画素の描画順序を、番号１〜１１７で示す。
図４Ｂを再度参照すると、ブロック４０２は、ブロック４０２の縦の寸法によって制限された複数の走査ライン４０３を含んでいる。前述したように、各走査ラインの幅は、ブロック４０２の横（水平）寸法によって制限される。例に示すように、これらの寸法の各々は８画素である。図４Ｃに、図２Ｂを参照して上述したテクスチャ画像２２０を含むテクスチャマップ２１９を示す。テクスチャ空間スクエア４２０は、図４Ｂのブロック４０２に対応するテクスチャ画像２２０の領域を表す。従って、テクスチャ空間スクエア４２０に含まれるテクセルは、ブロック４０２を走査するプロセスにおいて順次アクセスされる。テクスチャキャッシュ８０２が実施される場合は、テクスチャ空間における局在性が改善されと、個々のテクセルをアクセスする性能も改善されることになる。テクスチャ空間メモリアクセスにおいてページブレークを回避し、かつ、テクスチャキャッシュ８０２を最大限に使用するために、スクエア４２０内のテクセルのテクセル表現を含むメモリ位置が、互いに十分に近接していることは利点である。特に、十分なメモリアドレスの局在性と連続性が与えられた場合には、テクスチャキャッシュ８０２へのバーストモードアクセスが容易になる。当該技術分野において周知のように、バーストモードアクセスは、検索（取り出し）動作における性能を著しく改善するものである。
好ましい実施態様では、スクエア４０２の寸法とテクスチャキャッシュのサイズは、上記の目的を達成するために、テクスチャ空間の局在性を考慮して選択される。例えば、８画素のスクエア４０２の寸法に対しては、スクリーン空間の最大スパン長は８画素である。テクスチャマッピングを実行するときに、スケーリング（拡大縮小）を使用することができるので、８画素のスパンを、スケーリングファクタに依存して、テクスチャ空間の任意の長さのスパンに対応させることができる。最大テクスチャ空間のスパン長の不確定性を除去するために、かつ、テクスチャマップスケーリングの効率を改善するために、MIPマップテクスチャマッピングが使用される。
MIPマップテクスチャマッピング
図５に、MIPマップテクスチャマッピングの例を示す。図示のテクスチャマップ５０１は、５１２テクセル×５１２のテクセルの寸法を有する。テクスチャ画像は、テクスチャマップ５０１にフルサイズで記憶される。テクスチャ画像の別の表現５０２、５０３を示すが、これらは、詳細レベルが順次少なくなっている。値ｄによって表される詳細レベルは、テクスチャマッピングで使用されることになるスケーリングファクタを表す。例えば、テクスチャ画像が、より大きな認識距離を有するような比較的小さなプリミティブ上に描画されるときは、テクスチャ画像が、より大きなプリミティブ上に描画されるときよりも必要な詳細度は低い。より小さく表現された５０２、５０３は、フルサイズ画像５０１内の隣接する画素を平均化するか、あるいは、フィルタリングすることによって生成される。例えば、２５６テクセルスのスクエア表現５０２を、２×２スクエアのテクセル値をフィルタリングすることによってフルサイズ画像５０１から生成して、より小さな表現における単一のテクセルのテクセル値を得る。フィルタリング処理は、詳細レベルが減少するに従い、順次的により大きなテクセルの組に対して実行される（１２８テクセルのスクエアが、４×４スクエアをフィルタする等）。一般的に、Ｍ×ＭスクエアにおけるＮテクセルのテクセル値は、より小さな表現における１画素を生成するためにフィルタリング（平均化）される。ここで、
Ｍ＝（フルサイズ画像の幅）／（より小さい画像の幅）  （式１）
Ｎ＝Ｍ2                                             （式２）
である。
１実施態様では、テクセルを描画のために取り出しながら、「実行中」にテクセルをフィルタリングする。他の実施態様では、テクセルのフィルタリングを事前に実行して、異なるサイズの複数の表現を記憶する。こうして、複数の詳細レベルを計算キャッシュに記憶し、種々の解像度でテクスチャ画像を収容する。この技法は、複数のテクセル表現用に追加の記憶空間を使用することを伴うが、「実行中」のスケーリング計算のオーバーヘッドが回避されるので、性能が改善される。計算を簡単にするために２のべき乗に対応する寸法が好ましいが、必須ではない。例示の目的のために、正方形のテクスチャ画像を示したが、三角形や矩形のような他の形状を使用することもできる。特に、ｕ軸とｖ軸に沿ってスケーリングファクタが等しくなく、その結果、実際には、一方の軸に沿った圧縮比が他方の軸に沿った圧縮比よりも高くなるような場合には、矩形のテクスチャ画像を使用することができる。これは、例えば、特定の画像が、垂直軸よりも水平軸に沿って解像度を上げることを要求する場合に有益である。しかし、以下の説明では、スケーリングファクタは両軸に沿って一様であると仮定している。
上述のMIPマップスケーリング技法によれば、テクスチャ空間内の最大スパン長を予測する精度が大きく向上する。一般的に、スクリーン空間における１画素のウォーク（walk）は、テクスチャ空間におけるＬ画素のウォークに相当する。ここで、Ｌは、使用するテクスチャ空間表現の詳細レベル（ｄ）に依存する。具体的には、Ｌとｄは、以下の式によって関連付けられる。
Ｌ＝２d                                             （式３）
あるいは、逆にして、
ｄ＝log2Ｌ                                          （式４）
１実施態様では、MIPマップの表現の集合からのテクスチャマップ表現は、ｄに基づいて選択される。図５を再度参照すると、フルサイズ表現５０１は０として指定され、表現５０２は１として指定され、表現５０３は２として指定されており、順次的に小さくなる表現は、順次的に大きくなるｄの値として指定される。このように、Ｌが２のべき乗である場合は、ｄは整数値であり、適切なテクスチャマップ表現を選択して、スクリーン空間内の画素寸法に等しいテクセル寸法を有するようにすることができる。
例えば、Ｌ＝４の場合は、スクリーン空間内の８画素スパンは、４×８＝３２なので、フルサイズのテクスチャマップ表現の３２テクセルに対応する。しかし、フルサイズのテクスチャマップ表現を使用せずに、ｄ＝log2４＝２の値に対応するスケーリングされた表現を使用する。表現２は、フルサイズ表現の１／４サイズの線形寸法を有する。従って、８画素のスクリーン空間スパンは、８画素のテクスチャ空間スパンに対応する。一般的に、MIPマップスケーリングで、Ｌが２のべき乗の値である場合は、スクリーン空間スパンの画素寸法は、対応するテクスチャ空間スパンのテクセルの寸法に常に等しい。
Ｌが２のべき乗の値に限定されない場合は、ｄ＝log2Ｌは小数部を有する。この場合、ｄは次の式によって表すことができる。
ｄ＝ｉｄ＋ｆｄ                                      （式５）
ここで、ｉｄは整数部であり、ｆｄは小数部である。上述したように、テクセルマップ表現は、それぞれが、ｄの値に対応する指定を有する。１実施態様では、ｄが整数でない場合は、ｄの値に一番近い指定を有するテクセルマップ表現が選択される。従って、ｆｄが０．５より小さい場合は、ｉｄの指定を有するテクセルマップ表現が使用され、ｆｄが０．５以上の場合は、ｉｄ＋１の指定を有するテクセルマップ表現が使用される。このように、所望の詳細レベルを最も良く近似するテクセルマップ表現が選択される。
ｆｄが０．５より小さく、テクセルマップ表現ｉｄが使用される場合は、テクスチャ空間スパンの最大寸法は、以下のように表される。
（最大スクリーン空間スパン）×２d／２id            （式６）
これは、次のように表すことができる。
（最大スクリーン空間スパン）×２（id+fd）／２id     （式７）
整理すると、
（最大スクリーン空間スパン）×２fd                  （式８）
２fdの最大値は、２0.5＝１．４１であり、従って、最大テクスチャ空間スパンは、最大スクリーン空間スパンの１．４１倍以下である。
ｆｄが０．５以上で、テクセルマップ表現ｉｄ＋１が使用される場合は、テクスチャ空間スパンの最大寸法は、以下のように表される。
（最大スクリーン空間スパン）×２d／２id+1           （式９）
これは、次のように表すことができる。
（最大スクリーン空間スパン）×２（id+fd）／２id+1   （式１０）
整理すると、
（最大スクリーン空間スパン）×２fd-1                （式１１）
２fd-1の最小値は、２-0.5＝０．７１であり、従って、最大テクスチャ空間スパンは、最大スクリーン空間スパンの０．７１倍以上である。
従って、MIPマップ方式によれば、テクスチャ空間スパンが、０．７１×（スクリーン空間スパン）と１．４１×（スクリーン空間スパン）の間にあることが保証される。８画素の固定ブロック幅、従って、８画素の最大スクリーン空間スパンの場合は、テクスチャ空間スパンの幅は、１．４１×８＝１１．２８テクセルを決して越えない。切り上げると、テクスチャ空間スパン幅は、１２テクセルの最大寸法を有する。このため、１２テクセルのスパン幅を設けることによって、テクスチャキャッシュのスワップアウトを回避することができる。一般的に、MIPマップ方式は、テクスチャキャッシュ８０２が、スクリーン空間ブロック幅の１．４１倍のスパンを許容する場合は、ページブレークすなわちスワップアウトが任意の所与のブロックの走査中に生じないということを保証する。
代替実施態様では、２fdが、２1.0＝２．００の最大値を有するように、小数部を丸めるのではなくて切り捨てる。この場合は、最大テクスチャ空間スパンは、最大スクリーン空間スパンの２倍以下である。従って、スクリーン空間の８画素最大長は、１６テクセルの最大テクセル長を生じる。
丸めを用いる方式または切り捨てを用いる方式のいずれにおいても、異なる表現を使用することができるようにｄの値が変化するときに、不連続性が認識される場合がある。なめらかな動きが所望されるビデオゲームのようないくつかのアプリケーションでは、不連続性の効果によって不快な感じが与えられることがある。従って、さらに別の実施態様では、３−一次（tri-linear）テクスチャマッピング方式が使用されるが、この場合は、２つの最も近い表現の両方を平均化して（またはフィルタリングして）、ｄの値にさらに近い新しい表現を生成する。従って、例えば、ｄ＝２．９の場合、２．０と３．０に対する表現が取り出されて、フィルタリング技法を使用して結合される。
例えば、各表現の４つのテクセルを平均化して、２つのテクセル値ｔ2.0とｔ3.0を生成する。この場合は、以下のように、新しい値は、ｔ2.0とｔ3.0から重み付き平均を使用して生成される。
ｔ2.9＝０．１（ｔ2.0）＋０．９（ｔ3.0）
あるいは、より一般的に、
ｔd＝（１−ｆｄ）（ｔid）＋ｆｄ（ｔid+1）
３−１次マッピング方式により、あるMIPマップ表現から次の表現へのより緩やかな移動が行われ、上述した不連続性の認識が回避される。
テクスチャマップスクエア：バーストモードアクセス
１実施態様では、テクスチャマップ１０１は、マップが「スクエア（正方形）」にさらに分割され、テクスチャキャッシュ８０２がスクエア毎にテクスチャマップ１０１のセグメントを記憶するアーキテクチャに従って実施される。「スクエア」という用語を、テクスチャマップを細分化したものを意味するために使用して、前述したタイルまたはブロックと区別する。しかし、「スクエア」は、実際には任意の形状とすることができ、特に、正方形でない矩形とすることができる。
図６に、スクエア６０１を有するテクスチャマップ１０１を示す。各スクエア６０１は、多くのテクセル６０２を含む。例示の目的のために、図では、１６のテクセルが４×４配列で１つのスクエア６０１を構成しているが、任意の数を使用することができる。テクスチャキャッシュ８０２は、複数のキャッシュライン６０４を設けることによって、スクエア毎にスクエア上のテクスチャマップ１０１の一部分を記憶し、各キャッシュラインは、１つのスクエア６０１を表すデータを記憶することができる。この例では、１６ビットの６０３が、各キャッシュライン６０４内に示されているが、これは、スクエア６０１内の１６のテクセル６０２に対応している。テクスチャキャッシュ８０２のスワップアウトは、スワップアウトが生じたときに、キャッシュライン６０４全体を新しいデータで置き換えるように、スクエア毎にスクエア上で生じる。
本発明のこのような状況における細分されたテクスチャマップ１０１の実施が意味することは以下のようである。図９Ａ〜９Ｄに、バーストモードアクセスと共に使用される細分されたテクスチャマップ１０１の動作例を示す。図９Ａに、スクリーン空間１０３における三角形プリミティブ１２０の単純化した例を示す。単一の水平ラインセグメント９０１を示すが、これは、プリミティブ１２０を描くときに、スクリーン空間に描画される。
図９Ｂには、テクスチャ空間１０１内のラインセグメント９０２を示す。ラインセグメント９０２は、上述した従来のテクスチャマッピング技法に従って、ラインセグメント９０１に対応する。テクスチャマッピング動作では一般的であるように、対応するスクリーン空間のラインセグメント９０１は水平であるが、テクスチャ空間のラインセグメント９０２は斜めである。
図９Ｃには、テクスチャマッピング動作の実行中におけるテクスチャマップ１０１に対するバーストモードアクセスの例を示す。ラインセグメント９０２内の各テクセルをアクセスするために、多くの連続するテクスチャ空間アクセスを実行することが必要とされる。バーストモードアクセスを使用する規定された固定幅（例えば６４ビット幅）のメモリバスの場合、かかるテクスチャ空間アクセスの各々は、規定された幅に対応するテクスチャ空間ラインセグメント９０３を取り出す。従って、図示の例では、各ラインセグメント９０３は、バイト整列された、６４ビットの連続するテクスチャメモリの領域を表す。バーストモードアクセスは、一般的に、すべてのテクスチャアクセスがこのようにして生じることを要求し、このため、各アクセスが、描画すべきラインセグメント９０２の一部分と、すぐには使用されないテクスチャ空間１０１の領域を含むようになっている。取り出された各ラインセグメント９０３の未使用部分を、後で使用するためにテクスチャキャッシュに記憶することができる。しかし、続いて起こるテクスチャアクセスは、一般的に、隣接する行（同じ行の他の部分ではなくて）を必要とするので、テクスチャキャッシュのヒット率は比較的小さい。従って、図９Ｃの行ベースの線形（１次）アクセス方式では、テクスチャキャッシュに対するヒット率は低く、キャッシュされた部分のほとんどは、再使用されるのでなく、破棄されることになる。特定のラインセグメント９０３への続くアクセスは、テクスチャキャッシュがクリアされた後のずっと後に起こることが多く、そのために、キャッシュの利益を受けることなく再ロードすることが必要になる。
図９Ｄには、細分されたテクスチャマップを有するテクスチャマップ１０１に対するバーストモードアクセスの例を示す。この場合は、テクスチャマップ１０１に対するアドレス指定方式は、テクセルの水平行ではなく、「スクエア」９０４に基づいている。例えば、６４ビットバーストは、１６画素のラインセグメントではなく、４×４スクエアのテクセルを提供する。バス幅に関連するスクエアの実際のサイズは、テクセルのビットの深さに依存する。
各スクエア９０４は、テクスチャキャッシュ８０２のキャッシュラインに記憶され、キャッシュ記憶について既知のように、取り出されるかまたは破棄される。テクスチャマップ１０１の特定の部分に対するバーストモードアクセスは、水平のラインセグメントではなくスクエアを取り出す。図９Ｄの例に示すように、取り出されたバーストの未使用部分は、続くラインセグメント９０２の部分のためにより効率的に再利用される。一般的に、テクスチャ空間１０１内のラインセグメントは斜めに傾いているので、同じスクエア内にあることが多いラインセグメントの続く部分は、以前にキャッシュされた部分であり、従って、図９Ｃに例示した線形アドレス指定方式よりも、良好な局在性及びヒット率を生じる。
さらに、細分したテクスチャ空間方式により、ヒット率を犠牲にすることなく、より少ないテクスチャキャッシュラインを容易に使用することができるようになる。スクエアの細分化構成によりヒット率が向上するので、各テクスチャキャッシュラインをより大きくすることができる。より少ないキャッシュラインを使用すれば、キャッシュを保持するときに必要とされる比較回数を低減することにより性能が改善される。
図７Ａに、それぞれが４×４構成に１６テクセルを含むスクエア６０１を有するテクスチャマップ１０１の例を示す。上述したように、スクリーン空間内の８画素のラインセグメントは、最大１２テクセルのテクスチャ空間セグメントに対応する。従って、テクスチャキャッシュのスワップアウトが発生しないことを保証するためには、テクスチャキャッシュ８０２は、１２テクセルのラインセグメントを記憶するのに十分なサイズであることが望ましい。図７Ａに、ラインセグメントが３つのテクセルスクエア６０１内に含まれるように、配向して配置された１２テクセルのラインセグメント７０１を示す。従って、かかる配置では、３つのキャッシュライン６０４が、１２テクセルのラインセグメントをマッピングするために必要なすべてのテクセルを記憶するために必要になる。
しかし、他の配置では、３つのキャッシュライン６０４は、１２テクセルのラインセグメントに十分なものではない場合がある。例えば、図７Ｂでは、ラインセグメント７０２は、長さが１２テクセルであるが、４５度だけ傾いており、このため、７つのテクセルスクエア６０１にまたがっている。従って、かかる配置では、７つのキャッシュライン６０４が、１２テクセルのラインセグメントをマッピングするために必要なすべてのテクセルを記憶するために必要である。
図１０に、テクスチャマップ配置の最悪の場合の例を詳細に示す。この場合は、スクリーン空間における８画素ウォークがテクスチャ空間上にマッピングされる。図示のラインセグメント１００１は、スクリーン空間の８画素スパンを表す８つのドット１０２１、１０２２、…、１０２８を含んでいる。上述したように、切り捨てられた小数部を利用するMIPマップ方式では、スクリーン空間内の１画素ウォーク毎に、２つのテクセルの最小テクスチャ空間ウォークが生成される。従って、図１０のドット１０２１、１０２２、…、１０２８間には２テクセル分の間隔がある。ライン１００１は、４５度傾き、４つのテクセルスクエア１００３、１００４、１００５、１００６の交差部に終点を有しており、これは、最悪の場合の配置を表している。ドット１０２１の値は、４つの隣り合うテクセルをフィルタリングすることにより決定されるが、これらのテクセルは、それぞれ異なるテクセルスクエアに存在する。同様に、各ドット１０２２、１０２３、…、１０２８の値は、対応するドットに隣り合う４つのテクセルをフィルタリングすることによって決定される。従って、テクセルスクエア１００３、１００４、１００５、…、１０１５には、ラインセグメント１００１内のすべての８つのドットの値を決定することが要求されるということが分かる。これは、この最悪の配置の場合、全部で１３のテクセルスクエアであることを表している。
例示的な目的のために、隣の走査ラインを表す、第２のラインセグメント１００２を示す。この例から、ラインセグメント１００２は、７つのテクセルスクエア１００５、１００６、１００８、１００９、１０１１、１０１２及び１０１４を再使用し、５つの新しいテクセルスクエアに対するアクセスを要求するということが分かる。従って、再使用により、従来のラインベースのテクスチャキャッシュ方式に対して大きな改善が行われる。
一般的に、最悪の場合の配置において、丸めの代わりに切り捨てが使用される場合、テクセルスクエアの最大数は１３である。本発明の１実施態様では、テクスチャのスワップアウトが生じないことを保証するために、少なくとも１３のキャッシュライン６０４が、スクリーン空間内の８画素のブロックサイズに対して設けられる。１６のキャッシュラインが、アドレス指定を簡単にするために設けられることが多い。
上記の例は、単に実施態様を例示するためのものである。他のスクリーンブロックサイズ、テクセルスクエアサイズ、及びキャッシュライン長を、本発明の本質的な特性から逸脱することなく使用することができる。さらに、代替の実施態様では、テクスチャキャッシュ８０２が、スクエア毎ではなくテクセル毎に動作するように、タイリングされないテクスチャマップを使用する。この場合は、上記実施例の細部は適用できない場合がある。
本発明を実施することに関連する待ち時間の問題は、関連出願第08/780,787号に記載されているようなFIFOキューを使用する従来の方法で対処される。１実施態様では、テクスチャキャッシュ８０２は、予測される動作の待ち時間を処理するのに十分な深さのFIFOを有する。
要約すると、本発明の細分されたテクスチャ空間方式は、各バーストアクセスに対して、１次元のラインセグメントではなく正方形（あるいは、他の矩形）領域を生成し、これによって、テクスチャのヒット率と再利用性を改善し、並びに、より少ないキャッシュラインの使用を容易にするものである。
上述したように、本発明の１実施態様は、テクスチャ空間のラインセグメントの長さを最大１．４１ｗに制限するMIPマップテクスチャマッピング方式を使用する。ここで、ｗは、スクリーン空間におけるラインセグメントの最大長である。この制限は、本明細書に記載した細分されたテクスチャ空間アーキテクチャと結合されると、十分なサイズのテクスチャキャッシュが利用可能な場合は、局在性を保証するものである。特に、MIPマップテクスチャマッピングにより、スクリーン空間用にフィルタリングされた画素値を生成するために、（２×２グリッド内に）隣り合うテクセルを４つ以上必要としないことが保証される。前に説明した改善された走査方式では、テクスチャ空間内のラインセグメントの絶対長を、テクスチャキャッシュのヒット率と性能を所定のレベルで保証するために制限することができる。
他の利点
当業者には理解されるように、本発明で使用するような固定寸法の画素ブロックは、いくつかのグラフィック描画方式において他の利点を提供する。具体的には、いくつかのグラフィックスシステムにおいては、当該技術分野で周知のように、３次元空間で何重にも重なり合った物体を描画するために、ｚ−バッファを使用して可視表面アルゴリズム（visible-surface algorithm）を実施する。例えば、J.Foley他による66872を参照されたい。ｚ−バッファアクセスは、性能を改善するためにバーストモードで行うことが好ましく、各キャッシュライン６０４は、キャッシュライン６０４毎に４つの４倍長ワード（quadword）を有するViRGE-2グラフィックスエンジン内で実施することができるような単一のバーストで取り出される。前述したように、本発明のテクセルスクエア方式により、バーストモードアクセス方式の性能が改善される。ほとんどのメモリアーキテクチャは、送信と取り出しが２のべき乗で整列した未加工のメモリ境界に沿って起こるバーストモードを利用するので、本明細書において１例として説明した８画素のブロック寸法により、高速のｚ−バッファ要求を容易にするという他の利益が提供される。バーストモードにおけるｚ−バッファ要求は、４倍長ワード（８×８画素ブロックに対応する６４ビット単位）で記述することができる。同じ様に整列されたメモリセグメント及びバーストモードアクセスと共に任意の他の２のべき乗を使用して、同様な利点を実現することができる。
タイリングされたｚ−バッファ及びタイリングされた宛先に関連して使用される１実施態様では、ブロック寸法は、ｚ−バッファ及び宛先のタイル寸法が、水平及び垂直の両方のブロック寸法の偶数倍になるように選択される。こにれよって、各ブロックに対するｚ−バッファと宛先をアクセスするときに、ページブレークを最小限にして、１ブロックにつき最大１つのページブレークとする。
本発明の他の利点は、テクスチャマッピングされない画素の順番が、宛先に極めて良好に整列されることである。ViRGE-2では、ブロック境界は、４倍長ワード境界上に整列される。これによって、宛先FIFOへの４倍長ワード編成が簡単明瞭になる。
これまでの説明から、本明細書に開示された本発明が、グラフィックスシステムにおいて、ブロック及びバンド志向走査に関する新規で有利なシステム及び方法を提供して、帯域幅と性能を改善するものであることが明らかであろう。これまでの説明は、本発明の方法と実施態様を単に例示的に開示し、及び記載したものである。当業者には明らかなように、本発明を、その思想または本質的な特性から逸脱することなく、他の特定の形態で具現化することができる。具体的には、スクリーン及びテクスチャの細分のために他の寸法及びアーキテクチャを利用することができ、他のプリミティブのタイプ、他の原点位置、及び配向を使用することができる。従って、本発明の開示事項及び例示した図は、請求の範囲に記載した本発明の範囲を例示することを意図したものであって限定することを意図したものではい。
【図１】
0004203128.tif 000002
【図１Ａ】
0004203128.tif 000003
【図１Ｂ】
0004203128.tif 000004
【図２Ａ】
0004203128.tif 000005
【図２Ｂ】
0004203128.tif 000006
【図２Ｃ】
0004203128.tif 000007
【図３】
0004203128.tif 000008
【図４Ａ】
0004203128.tif 000009
【図４Ｂ】
0004203128.tif 000010
【図４Ｃ】
0004203128.tif 000011
【図４Ｄ】
0004203128.tif 000012
【図５】
0004203128.tif 000013
【図６】
0004203128.tif 000014
【図７Ａ】
0004203128.tif 000015
【図７Ｂ】
0004203128.tif 000016
【図８】
0004203128.tif 000017
【図９Ａ】
0004203128.tif 000018
【図９Ｂ】
0004203128.tif 000019
【図９Ｃ】
0004203128.tif 000020
【図９Ｄ】
0004203128.tif 000021
【図１０】
0004203128.tif 000022
【図１１Ａ】
0004203128.tif 000023
【図１１Ｂ】
0004203128.tif 000024
【図１１Ｃ】
0004203128.tif 000025
【図１１Ｄ】
0004203128.tif 000026
【図１２】
0004203128.tif 000027
【図１３】
0004203128.tif 000028