JP4027463B2 - テクセル・データを記憶する方法およびテクセル・データを記憶するシステム - Google Patents
テクセル・データを記憶する方法およびテクセル・データを記憶するシステム Download PDFInfo
- Publication number
- JP4027463B2 JP4027463B2 JP16704097A JP16704097A JP4027463B2 JP 4027463 B2 JP4027463 B2 JP 4027463B2 JP 16704097 A JP16704097 A JP 16704097A JP 16704097 A JP16704097 A JP 16704097A JP 4027463 B2 JP4027463 B2 JP 4027463B2
- Authority
- JP
- Japan
- Prior art keywords
- data set
- level
- memory
- data
- map
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/60—Memory management
Description
【発明の属する技術分野】
本発明は、コンピュータ・グラフィックス・システムにおけるキャッシュの一貫性を維持する方法に関するもので、特に、テクスチャ・マッピング・コンピュータ・グラフィックス・システムのテクスチャ・マップのソフトウェア・メモリ管理に関するものである。
【0002】
【従来の技術】
テクスチャ・マッピングの従来技術は、アメリカ合衆国特許出願第08/486,447号に記載されているが、その内容は、ユーザのテクスチャのコピーをテクスチャ照会メカニズムを提供するソフトウェアに記憶し、一度にすべてのテクセルを収納することのできる十分なメモリがない場合でもハードウェア上のテクセルのキャッシュの実行を可能にさせる技術に関するものである。
【0003】
典型的なコンピュータ・グラフィックス・システムにおいては、表示画面上に表されるべきオブジェクトは、複数のグラフィックス・プリミティブに分解される。プリミティブは、グラフィックス・ピクチャの基本コンポーネントであって、点、線、ベクトルおよび三角形のような多角形を含む場合がある。典型的には、ハードウェア/ソフトウェア方式の実施によって、画面上に表される1つまたは複数のオブジェクトの像を表すグラフィックス・プリミティブが、2次元表示画面上に描画(すなわちレンダリング)される。
【0004】
描画されるべき3次元オブジェクトを定義するプリミティブは、典型的には、プリミティブ・データとして各プリミティブを定義するホスト・コンピュータから提供される。例えば、プリミティブが三角形である場合、ホスト・コンピュータは、各頂点をx,y,z座標およびR,G,Bカラー値を使用して表すことによってそのプリミティブを定義する。各プリミティブを表すためオンにセットされるべき表示画面ピクセルおよび各ピクセルに関するR,G,B値を計算する際に、レンダリング・ハードウェアはプリミティブ・データを補間する。
【0005】
初期のグラフィックス・システムは、画像表示のため、複雑な3次元オブジェクトを表現またはモデル化できる十分現実的な方法を持つことができなかった。そのようなシステムによって画面表示される画像は、円滑な表面の欠如したテクスチャ、でっぱり、ひっかき傷、陰影またはその他モデル化されているオブジェクトに存在する表面細部を露出させた。その結果、表面細部を改善した画像を表示するため種々の方法が開発された。テクスチャ・マッピングは、そのような方法の1つである。この方法は、ソース画像(本明細書では「テクスチャ」と呼ぶ)を3次元オブジェクト表面上へマップし、その後その3次元オブジェクトを2次元グラフィックス表示画面へマップすることによって、画像表示を行う。一般的にはマップされたテクスチャである表面細部属性は、カラー、鏡面反射、ベクトル摂動、反射、透明度、影、表面不規則および階調を含む。
【0006】
テクスチャ・マッピングは、1つまたは複数の点からなるテクスチャ・エレメント(すなわち「テクセル」)を、テクスチャをマップする対象であるオブジェクトの表示部分の各点エレメント(すなわち「ピクセル」)に当てはめることを伴う。テクスチャ・マッピング・ハードウェアは、テクスチャ・マップにおけるテクセルがオブジェクトを表現する表示画面上のピクセルにどのように対応するかを示す情報を伝統的に備えている。テクスチャ・マップにおける各テクセルは、2次元テクスチャ・マップにおけるその位置を識別するSおよびT座標によって定義される。各ピクセル毎に、それにマップする対応する1つまたは複数のテクセルが、テクスチャ・マップから取り出され、表示画面上でテクスチャ・オブジェクトを表現するピクセルのために生成される最終的R,G,B値に組み込まれる。
【0007】
オブジェクト・プリミティブの各ピクセルがテクスチャ・マップにおける単一のテクセルと必ずしも一対一で対応しない点は注意されるべきである。例えば、オブジェクトが表示画面に表される視認ポートに接近すればする程、オブジェクトは大きく拡大される。オブジェクトが表示画面上で拡大されるにつれ、テクスチャの表示は次第に詳細になる。従って、オブジェクトが表示画面のかなりの部分を消費する時、そのオブジェクトを表示画面で表すため多数のピクセルが使用され、オブジェクトを表す各ピクセルがテクスチャ・マップにおける単一のテクセルと一対一の対応関係でマップ(対応づけ)するか、あるいは単一のテクセルが複数のピクセルにマップする。しかし、オブジェクトが表示画面の比較的小さい部分を占める時、オブジェクトを表すため比較的少数のピクセルが使用され、その結果、テクスチャの表現は粗くなり、各ピクセルが複数のテクセルにマップする。更に、1つのテクスチャがオブジェクトの小さい部分にマップされる時、各ピクセルは複数のテクセルにマップするかもしれない。複数のテクセルにマップするピクセルの各々毎に、目的のテクセル・データが計算される。1つのピクセルが複数のテクセルにマップするのが一般的であるので、1つのピクセルに対応するテクセル・データは、典型的には、そのピクセルにマップする複数テクセルの平均を表現する。
【0008】
テクスチャ・マッピング・ハードウェア・システムは、典型的には、レンダリングされているオブジェクトに関するテクスチャを表現するデータを記憶するローカル・メモリを含む。上述の通り、1つのピクセルは複数のテクセルに対応する。テクスチャ・マッピング・ハードウェアが1つのピクセルに対応する多数のテクセルをローカル・メモリから読み取って平均値を生成しなければならないとすれば、多数のメモリ読取りと多くのテクセル値の平均算出が必要となり、そのため、処理時間の浪費とシステム性能の低下を生む。
【0009】
この問題を克服するため、各テクスチャに関して「MIP」マップと呼ばれる一連のマップを作成してこれを利用する方式が開発された(MIPは、狭い場所に多数のものを意味する"multum in parvo"の頭文字をとったものである)。この方式は、レンダリングされつつあるオブジェクトに関連するテクスチャの一連のMIPマップをテクスチャ・マッピング・ハードウェアのローカル・メモリに記憶する。あるテクスチャに関するMIPマップは、テクスチャ・マップに直接対応する基底マップ(すなわち「レベル0」マップ)および一連の後続のマップを含む。後続マップの各々のサイズは、テクスチャ・マップの各次元において、先行マップに対して2単位減少する。図1に、1つのMIPマップ・セットの例が示されている。このMIPマップは、サイズが8×8テクセルである(レベル0の)基底マップ100と共に、サイズ的にそれぞれ4×4テクセルであるレベル1、2×2テクセルであるレベル2および1×1テクセルであるレベル3を表す一連のマップ102、104および108を含む。
【0010】
レベル1の4×4マップ102は、レベル1マップ102の中の各テクセルがレベル0基底マップ100の4つのテクセルの平均に対応するように、基底マップ100をボックス・フィルタリング(すなわち比例縮小)することによって生成される。例えば、レベル1マップ102のテクセル110は、レベル0基底マップ100のテクセル112−115の平均に等しい。同様に、レベル1マップ102のテクセル118および120は、それぞれレベル0基底マップ100のテクセル121−124および125−128の平均に等しい。同様に、レベル2の2×2マップ104は、レベル2マップ104の中のテクセル130がレベル1マップ102のテクセル110および118−120の平均に等しくなるように、レベル1マップ102をボックス・フィルタリングすることによって生成される。レベル3マップ108における単一テクセルは、レベル2マップ104における4つのテクセルを平均して生成される。
【0011】
従来技術のグラフィックス・システムは、一般的に、表示画面上に描画されるべきプリミティブに関して使用されるはずのすべてのテクスチャのための完全なMIPマップ・セットを、ホスト・コンピュータのメイン・メモリからテクスチャ・マッピング・ハードウェアのローカル・メモリへ、ダウンロードする。当業者には理解されることであろうが、完全なMIPマップ・セットとは、レベル0からレベルNまでの(但しレベルNは1×1MIPマップ)すべてのMIPマップを意味する。このようにして、テクスチャ・マッピング・ハードウェアは、一連のMIPマップのどのレベルのマップからでもテクスチャ・データを取り出すことができる。特定のピクセルに関してテクセル・データを取り出すためどのマップにアクセスすべきかの決定は、ピクセルがマップするテクセルの数に基づく。例えば、ピクセルが、テクスチャ・マップにおける単一のテクセルと一対一の対応関係でマップする場合、基底マップ100がアクセスされる。しかしながらピクセルが4、16または64のテクセルへマップするとすれば、マップ102、104および108がそれぞれアクセスされる。なぜならば、それらのマップは、テクスチャ・マップにおける4、16および64のテクセルの平均を表現しているテクセル・データをそれぞれ記憶しているからである。
【0012】
理解される通り、一連のテクスチャMIPマップは記憶のため多量のシステム・ソフトウェア・メモリを必要とする。例えば、1024×1024のテクセルのテクスチャ基底マップを持つテクスチャのための一連のMIPマップは、MIPマップされたテクスチャの1コピーを記憶するため5メガバイト以上のシステム・ソフトウェア・メモリを必要とする。従って、MIPマップされたテクスチャの複数コピーの記憶は、膨大な量のシステム・ソフトウェア・メモリを使用する。
【0013】
システム・ソフトウェア・メモリは、数ギガバイトまでのソフトウェア・データを記憶することができるが、考慮されなければならないもう一つの問題は、MIPマップを実際にどこへ記憶するかである。特に、グラフィックス画像の高速描画を達成するためには、テクセル情報を適切なレベルのMIPマップからグラフィックス・ディスプレイへ可能な限り迅速に転送することができることが重要である。すべてのレベルの位置が前もってわかっていれば最善ではあるが、典型的なグラフィックス適用業務プログラム・インターフェース(すなわちAPI)稼働形態はそのタスクを非常に困難にさせる。特に、ヒューレット・パッカード社から提供されている"OpenGL"と呼ばれるグラフィックスAPIは、ユーザがMIPマップをダウンロードする際種々のレベルをどのようなレベルの順序でもメモリに送ることを可能にする。
【0014】
【発明が解決しようとする課題】
現在までは、オペレーティング・システムのメモリ割り当てルーチンによって要求元に返されるメモリを各レベル毎の記憶位置として使用して、そのようなMIPマップ・レベルを個別にメモリに記憶する形態がとられて来た。このように、MIPマップのレベルが記憶されるメモリの実際の位置は、オペレーティング・システムに委ねられた。従って、個々のレベルが必要とされる時点で記憶位置を特定しなければならず、そのためシステム動作速度の一般的低下をもたらしている。従って、複数のレベルのMIPマップを整合性のある形態でメモリに記憶することが必要とされている。
【0015】
【課題を解決するための手段】
本発明は、上記課題を解決するため、データの完全性を維持しながら、MIP化されたOpenGLテクスチャ・マップの複数レベルを連続的メモリに記憶することを可能にするメカニズムを提供する。それによって、本発明は、完全にMIP化されたテクスチャ・マップをハードウェアにダウンロードする際あるいはテクスチャ・マッピングがソフトウェア・ラスタライゼーションを使用する際に発生する可能性のあるメモリ・キャッシュ・ミスを減少あるいは除去する。また、たとえデータが現在時の完全MIPマップ記述に適合しない場合でも、本発明は、ダウンロードされつつあるデータの完全性を維持する。
【0016】
本発明のアルゴリズムは、コンピュータ・グラフィックス・システムにおける連続的メモリにテクセル・データをダウンロードする方法を提供する。該方法は、ダウンロードされる最初のテクセル・データのMIPマップのレベル番号およびサイズを基にして、当該テクスチャに関連するすべてのMIPマップに必要な連続的メモリ量を割り当て、上記最初のMIPマップに関するデータを、レベル番号およびサイズを基にして計算するオフセット値に従ってそのレベル番号にとって適切な上記連続的メモリ位置に記憶する。更に、本発明のアルゴリズムは、いくつかの後続のMIPマップがダウンロードされるにつれて、それらの各々が上記最初にダウンロードされたMIPマップとレベル番号およびサイズの観点から整合しているか否かを判断し、上記判断の結果整合していれば、それらレベル番号に基づいて計算されるオフセット値が示す上記連続的メモリ位置へそれらレベルのデータを記憶し、上記判断の結果整合していない場合、それらレベルのデータを一時的メモリへ記憶する。上記後続のMIPマップにおいて基底レベルのデータがダウンロードされる毎に、上記一時的メモリに記憶されたデータを検査して、当該基底レベルと整合性があるレベルのデータがあれば、それらを当該基底レベルが記憶される連続的メモリへ移動する。
【0017】
【発明の実施の形態】
本発明に従って、図2ないし図6に示される本発明の方法10は、テクスチャ・データを連続的メモリに記憶することを目的とする。上述の通り、テクスチャ・データは、レベル0からレベルNまでのすべてのレベルに関連するデータから構成される(但しレベルNは1×1配列である)。先ず第1に、すべてのテクセル・データを単一メモリ・ブロックに記憶できる十分なメモリが存在するか否かを決定しなければならない。この決定は図2のブロック14で行われる。十分なメモリがあるかどうか判明しない場合、必要とされる連続メモリ・ブロックのサイズを計算し(ブロック16)、そのメモリを割り当て(ブロック18)なければならない。例としてレベル0MIPマップが8×8マップであると仮定すれば、それは64個の「位置」を占有するが、実際のメモリ量はテクセルあたりのバイト数(×64)によって決定される。この場合、レベル1MIPマップは4×4すなわち16の位置を占め、レベル2MIPマップは2×2すなわち4つの位置を占め、レベル3MIPマップは1×1すなわち1つの位置を占める。かくして、位置の総数は85で、メモリ量はテクセルあたりのバイト数×85である。レベル2MIPマップが2×2マップであるということは基底マップが8×8マップであることを意味する点は容易に理解されるであろう。従って、MIPマップのレベルとサイズを所与とすれば、完全なMIPマップを記憶するために必要な連続メモリ・ブロックのサイズは容易に決定することができる。
【0018】
十分なメモリを割り当てることができないと判断すれば(ブロック20)、エラー条件が発生する(ブロック22)。そうではなく十分なメモリを割り当てることができると判断すれば(ブロック20)、基底マップ(レベル0)が記憶される(ブロック24)。次に、本発明の好ましい実施形態では、"LevelOK"と呼ばれるフラグが0にセットされ(ブロック26)、レベル情報がOKか否かが判断される(ブロック28)。これは、ロードされつつあるMIPマップ・レベルに関する情報が、MIPマップに関する既知の情報と整合しているか否かに関して判断することを意味する。例を用いて説明すれば、4×4のサイズを持つ「レベル1」MIPマップがダウンロードされ、次に8×8のサイズを持つ「レベル0」MIPマップがダウンロードされれば、データは整合していて、レベルはOKである。これとは相違して、4×4のサイズを持つ「レベル1」MIPマップがダウンロードされ、次に4×4のサイズを持つ「レベル0」MIPマップがダウンロードされれば、データは整合してなく、レベルはOKではない。データが以前にダウンロードされたデータと整合していれば、LevelOKフラグは「1」にセットされる。
【0019】
LevelOKが「0」であれば、そのMIPマップが基底マップ(レベル0)に関するものであったか否かが判断される(ブロック32)。もしもそうではなく、あるいはLevelOKが「1」に等しかったならば、処理の流れは図5の"C"へ進む。そのMIPマップが基底マップ(レベル0)に関するもので、LevelOKフラグが「1」にセットされていれば(ブロック34)、図3のブロック38(記号"A")へ進み、基底レベル情報および既存メモリへのポインタを記憶し(ブロック50および40)、次に、連続メモリのサイズが計算され(ブロック42)、連続メモリが割り当てられる(ブロック44)。連続メモリが正しく割り当てられたか否かを検証し(ブロック46)、エラーがあったと判断すれば、それ以上の動作は行われない。
【0020】
次に、後続のループにおいて繰り返し動作を行うため、カウンタ、増分式および検証プロシージャ56が設定される(ブロック52、54および56)。本発明の好ましい実施形態において、ループは、現在時レベルへのポインタを入手するステップ(ブロック62)、および現在時レベルがまだメモリ64のいかなる位置をもポイントしていないことを判断するステップ(ブロック64)を含む。このループは繰り返され、繰り返し毎にループ・カウンタが増分され(ブロック54)、潜在的にサポートされているレベルの最大数に対応する回数に達するまでループは繰り返される。本発明の実施形態において、現行使用されるハードウェアおよびメモリ容量に基づけば、16を越えるレベルはサポートされない。従って、ループ処理は最高15回であるが、将来のハードウェアおよびメモリが一層大きいMIPマップ・レベルの使用を示せば、この回数は増加する点は当業者に理解されることであろう。
【0021】
現在時レベルがメモリをポイントしていると判断されれば(ブロック64)、現在時レベルのサイズが計算され(ブロック70)、LevelOKが「0」にセットされて、データが正しくないことが示される(ブロック72)。次に、正確性についてレベル・データが検査され(ブロック74)、レベル・データが正確であると判断されれば、LevelOKは、レベル・データが正確であることを示す「1」にセットされ(ブロック88)、そのレベルに関して、基底マップの連続メモリへのオフセットが計算される(ブロック90)。次に、現在時レベルのテクセルが連続メモリの適切な位置にコピーされる(ブロック92)。
【0022】
この時点において、ポインタ・フラグがセットされているか否かを検査して(ブロック94)、セットされていなければ、図3の上記ループへ記号"E"の位置から再度入る。一方、ポインタ・フラグが「1」にセットされていれば、このレベルに関するメモリを解放し(ブロック96)、ポインタ・フラグを「0」にセットし(ブロック97)、現在時レベルのメモリ・オフセットを記憶する(ブロック98)。次に、図3の上記ループへ記号"E"の位置から再度入る。
【0023】
ブロック74でレベル・データが正しくないと判断され、ポインタ・フラグが「1」にセットされていれば(ブロック76)、図3の上記ループへ記号"E"の位置から再度入る。一方、ブロック74でレベル・データが正しくないと判断され、ポインタ・フラグが「0」にセットされていれば(ブロック76)、ポインタ・フラグを「1」にセットし(ブロック78)、このレベルのため一時的記憶ブロックを割り当て(ブロック80)、メモリが正しく割り当てられたことを確認する(ブロック82)。メモリ割り当ての際エラーが発生すればこれ以上の動作は行われない(ブロック84)。メモリが割り当てられれば、このレベルのデータが一時メモリにコピーされ(ブロック86)、図3の上記ループへ記号"E"の位置から再度入る。 図2に戻って、ブロック32において、レベルが基底ブロックでない場合、処理は図5の記号"C"へ進む。また、基底レベルであるが、LevelOKフラグが「0」にセットされていなければ(ブロック34)、処理は同様に図5の記号"C"へ進む。
【0024】
図5のブロック13において、レベル情報が正しいか否かが判断される。正しくなければ、レベル・サイズを計算し(ブロック15)、ポインタ・フラグを「1」にセットし(ブロック17)、このレベルのため一時的記憶ブロックを割り当てる(ブロック19)。次に、メモリが正しく割り当てられたことを確認する(ブロック21)。メモリ割り当ての際エラーが発生すればこれ以上処理は行わない。メモリが正しく割り当てられれば、記号"D"へ進む。
【0025】
上記ブロック13において、レベル情報が正しいと判断される場合、ブロック27においてポインタ・フラグが「1」にセットされているか否かが検査される。「1」にセットされていれば、このレベルのための一時メモリが解放され(ブロック28)、ポインタ・フラグを「0」にセットし(ブロック31)、このレベルに関する連続メモリへのオフセットを計算する(ブロック33)。次に処理は記号"D"へ進む。ブロック27において、ポインタ・フラグが「0」にセットされていれば、このレベルに関する基底マップの連続メモリへのオフセットを計算するだけで(ブロック33)、記号"D"へ進む。
【0026】
図3のループに戻って、ループが15回の繰り返しを完了すると、古い連続メモリが解放され(ブロック60)、処理は記号"D"へ進む。図6の記号"D"へ進んで、レベル情報が記憶され(ブロック39)、ポインタ・フラグが「1」にセットされているか否かが判断される(ブロック41)。「1」であれば、処理は終了する(ブロック47)。ポインタ・フラグが「0」にセットされていれば、オフセットが0を越えているかどうかが更に検査される。オフセットが0であれば、処理は終了する(ブロック47)。ポインタ・フラグが「0」にセットされていて、オフセットが0を越えていれば、このレベルに関するオフセットを記憶しなければならない(ブロック45)。次に処理は終了する(ブロック47)。
【0027】
以下の表1ないし表4に、本発明の動作様態を示すいくつかの特定の例を示す。以下の諸例の各々において、ダウン・ロード・シーケンスは所与であり、各ダウン・ロード・シーケンスは、そのレベルに関するレベル番号、幅×高さのレベル・サイズおよびポインタ・フラグ値を含む。
【0028】
【表1】
例1
レベル番号 レベル・サイズ ポインタ・フラグ
0 8×8 0
1 4×4 0
2 2×2 0
3 1×1 0
【0029】
例1において、レベル0、1、2および3に対応する4つのレベル・マップがダウンロードされ、それらはそれぞれ8×8、4×4、2×2および1×1マップである。従って、レベル0(すなわち基底マップ)に関する最初のレベル・マップのダウンロードに際して連続的メモリの全ブロックを割り当てることができるので、問題はない。すべてのレベルが順序正しくダウンロードされ、レベル・サイズのすべてが完全に整合しているので、これは最も簡単な場合である。
【0030】
【表2】
例2
レベル番号 レベル・サイズ ポインタ・フラグ
2 1×1 0
1 2×2 0
0 4×4 0
【0031】
例2においては、レベル2、1および0に対応する3つのレベル・マップがダウンロードされ、それらはそれぞれ1×1、2×2および4×4マップである。
最初のレベル2に関するレベル・マップがダウンロードされる際、連続的メモリ・ブロック全体を割り当てることが可能であり、また、レベル番号およびレベル・サイズのすべてが整合しているので、問題に出会うことはない。
【0032】
【表3】
例3
レベル番号 レベル・サイズ ポインタ・フラグ
0 4×4 0
1 16×16 1
2 1×1 0
1 2×2 0
【0033】
例3においては、レベル0、1、2および1に対応する4つのレベル・マップがダウンロードされ、それらはそれぞれ4×4、16×16、1×1および2×2マップである。最初のレベル0に関するレベル・マップがダウンロードされる時、連続的メモリ・ブロック全体が割り当てられるが、その際次に2×2マップのレベル1、4×4マップのレベル2等々のレベル・マップを受け取るであろうと仮定される(注:受け取るマップの数は不明である)。しかしながら、16×16のレベル1のダウンロードの際、整合性のないことが検出される。従って、レベル1の16×16マップは一時的メモリに記憶され、問題が存在することを示すためポインタ・フラグは1にセットされる。更に第3および第4のレベルがダウンロードされる時、それら(1×1および2×2マップ)は最初のレベル0と整合性があるので、問題は解消する。従って、元のダウンロードされた16×l6の「レベル1」は破棄し、一時的メモリを解放することができる。注:この例では、最初のレベルのダウンロードに基づく初めの連続メモリ・ブロックが使用されている。
【0034】
【表4】
例4
レベル番号 レベル・サイズ ポインタ・フラグ
0 8×8 0
1 2×2 1
2 1×1 1
0 4×4 0
【0035】
例4においては、レベル0、1、2および0に対応する4つのレベル・マップがダウンロードされ、それらはそれぞれ8×8、2×2、1×1および4×4マップである。レベル0(すなわち基底マップ)に関する最初のレベル・マップがダウンロードされる際、連続メモリ・ブロック全体が割り当てられる。しかしながら、次にダウンロードしされるレベル1のサイズはレベル0と整合していないので、レベル1(2×2マップ)データは一時的メモリに記憶され、ポインタ・フラグが1にセットされる。3番目のレベルであるレベル2は、1×1マップであり、これもまた最初のレベル0と整合性がないため、一時的メモリに記憶され、ポインタ・フラグが1にセットされる。最後の第4の新たなレベル・ゼロは既にロードされているレベル1およびレベル2と整合性があるので、本発明に従って、それらレベル1およびレベル2は、第4の新しいレベル0と共に、連続メモリへ記憶される。
【0036】
上述の通り、本発明の方法は、どのレベルのマップの受領に際してもすべてのレベルに対して連続的メモリ・ブロックを割り当てる手段を提供する。追加のレベル・マップがダウンロードされる時、本発明は、先行したメモリ割り当てと整合性があることを確認し、整合性がない場合、整合性のあるレベルのマップがダウンロードされるまで、それら整合性のないマップ情報を一時的メモリに記憶する方法を提供する。整合性のあるレベル・マップ・セットの受領を確認すると、すべての整合性のあるレベル・マップのデータは単一の連続メモリ・ブロックへ記憶される。
【0037】
以下の表5ないし表11は、本発明の詳細を更に理解する上での参照のため、本発明の好ましい実施形態に関してCプログラミング言語で書かれたサンプル・ソース・コードを含む。以下のプログラムの著作権はヒューレット・パッカード・カンパニーにあり、ヒューレット・パッカード・カンパニーの書面による承諾なしに、保存目的の場合を除いて、これらプログラムを複製することは禁止されている。
【0038】
【表5】
【0039】
【表6】
【0040】
【表7】
【0041】
【表8】
【0042】
【表9】
【0043】
【表10】
【表11】
【0044】
本発明には、例として次のような実施様態が含まれる。
(1)コンピュータ・グラフィックス・システムにおいて連続的メモリ・ブロックをテクセル・データへ割り当てる方法であって、ダウンロードされる最初のレベル・マップに関するテクセル・データに対応するデータを受け取るステップと、上記ダウンロードされる最初のレベル・マップのサイズおよびレベル番号に基づいて、完全なMIPマップを記憶することのできる連続的メモリ・ブロックを割り当てるステップと、上記ダウンロードされる最初のレベル・マップに関する上記テクセル・データのレベル番号に基づいて、上記ダウンロードされる最初のレベル・マップに関連するデータを記憶する上記連続的メモリ・ブロックのあらかじめ定められた適切な位置を表すオフセット値を決定するステップと、上記ダウンロードされる最初のレベル・マップに関する上記テクセル・データを上記オフセット値によってポイントされる連続的メモリ・ブロック内の位置に記憶するステップと、上記ダウンロードされる最初のレベル・データを受け取った後、更に別のレベル・マップに関する付加的テクセル・データを繰り返し受け取り、それら受け取ったレベル・データのそれぞれ毎に、当該レベル・データが上記ダウンロードされた最初のテクセル・データと整合しているか否かを確認し、整合している場合上記連続的メモリ・ブロックに対するオフセットを計算してそのオフセットによってポイントされる上記連続的メモリ・ブロック内の位置へ当該テクセル・データを記憶し、整合していない場合、当該テクセル・データを一時的メモリへ記憶すると共にテクセル・データが一時的メモリにあることを示す値にポインタ・フラグをセットし、すべての上記付加的レベル・データについて上記処理を繰り返した後、上記一時メモリを連続的メモリ・ブロックへ移動することによって整合性のあるテクセル・データのセットが完成する場合にはそれらテクセル・データを連続的メモリ・ブロックへ移動するステップと、を含むテクセル・データへの連続的メモリ割り当て方法。
【0045】
(2)コンピュータ・グラフィックス・システムにおける連続的メモリにテクセル・データをダウンロードする方法であって、ダウンロードされる最初のテクセル・データのMIPマップのレベル番号およびサイズを基にして、当該テクスチャに関連するすべてのMIPマップに必要な連続的メモリ量を割り当てるステップと、上記最初のMIPマップに関するデータを、レベル番号およびサイズを基にして計算するオフセット値に従ってそのレベル番号にとって適切な上記連続的メモリ位置に記憶するステップと、更にいくつかの後続のMIPマップがダウンロードされるにつれて、それらの各々が上記最初にダウンロードされたMIPマップとレベル番号およびサイズの観点から整合しているか否かを判断するステップと、上記判断の結果整合していれば、それらレベル番号に基づいて計算されるオフセット値が示す上記連続的メモリ位置へそれらレベルのデータを記憶するステップと、上記判断の結果整合していない場合、それらレベルのデータを一時的メモリへ記憶するステップと、上記後続のMIPマップにおいて基底レベルのデータがダウンロードされる毎に、上記一時的メモリに記憶されたデータを検査して、当該基底レベルと整合性があるレベルのデータがあれば、それらを当該基底レベルが記憶される連続的メモリへ移動するステップと、を含む、連続的メモリへのテクセル・データのダウンロード方法。
【0046】
【発明の効果】
本発明によって、データの完全性を維持しながら、MIP化されたテクスチャ・マップの複数レベルを連続的メモリに記憶することが可能となり、それによって、完全にMIP化されたテクスチャ・マップをハードウェアにダウンロードする際あるいはテクスチャ・マッピングがソフトウェア・ラスタライゼーションを使用する際のメモリ・キャッシュ・ミスが減少あるいは除去される。
【図面の簡単な説明】
【図1】テクスチャMIPマップのセットを示す図式である。
【図2】図3、図4、図5および図6と共に、本発明の方法の動作を示す流れ図である。
【図3】図2、図4、図5および図6と共に、本発明の方法の動作を示す流れ図である。
【図4】図2、図3、図5および図6と共に、本発明の方法の動作を示す流れ図である。
【図5】図2、図3、図4および図6と共に、本発明の方法の動作を示す流れ図である。
【図6】図2、図3、図4および図5と共に、本発明の方法の動作を示す流れ図である。
【符号の説明】
100 基底マップ(レベル0マップ)
102 レベル1マップ
104 レベル2マップ
108 レベル3マップ
110、112、120、128 テクセル
Claims (12)
- コンピュータ・グラフィックス・システムにおいてテクスチャ・マッピング・ハードウェアの連続するメモリブロックにテクセル・データを記憶する方法であって、
テクスチャ・マッピング・ハードウェアによって、テクスチャマップの第1のレベルに対応する第1のデータセットを受け取り、
テクスチャ・マッピング・ハードウェアによって、前記第1のデータセットを分析して前記第1のデータセットのサイズおよびレベル番号を求め、
テクスチャ・マッピング・ハードウェアによって、テクスチャマップの第2のレベルに対応する第2のデータセットを受け取り、
テクスチャ・マッピング・ハードウェアによって、前記第2のデータセットを分析して前記第2のデータセットのサイズおよびレベル番号を求め、
テクスチャ・マッピング・ハードウェアによって、前記第2のデータセットの前記サイズおよび前記レベル番号と、前記第1のデータセットの前記サイズおよび前記レベル番号とを比較し、
テクスチャ・マッピング・ハードウェアによって、前記比較に基づいて、前記第2のデータセットが、前記第1のデータセットと整合しているか否かを判定し、
テクスチャ・マッピング・ハードウェアによって、前記判定において前記第2のデータセットが前記第1のデータセットと整合すると判定されたとき、前記連続するメモリブロックにおける前記第2のデータセットの前記レベル番号に基づく位置に前記第2のデータセットを記憶する、
ことを含む連続するメモリブロックにテクセル・データを記憶する方法。 - 前記判定するステップにおいて前記第2のレベルが前記第1のデータセットと整合しないと判定されたとき、前記第2のデータセットを廃棄することをさらに含む、請求項1記載のテクセル・データを記憶する方法。
- 前記判定するステップにおいて前記第2のデータセットが前記第1のデータセットと整合しないと判定されたとき、前記第2のデータセットをメモリに記憶することをさらに含み、前記メモリは前記連続するメモリブロックの外にある、請求項1記載のテクセル・データを記憶する方法。
- 前記第1のデータセットの前記サイズおよび前記レベル番号に基づいて、前記テクスチャマップを記憶するのに十分なメモリ量を求め、
少なくとも前記テクスチャマップを記憶するのに十分な前記メモリ量の前記連続するメモリブロックを割り当てること、
をさらに含む請求項1記載のテクセル・データを記憶する方法。 - 前記第1のデータセットを廃棄することをさらに含む、請求項3記載のテクセル・データを記憶する方法。
- 前記第1のデータセットの前記サイズおよび前記レベル番号に基づいて、前記テクスチャマップのレベル番号を求めることをさらに含む、請求項4記載のテクセル・データを記憶する方法。
- テクセル・データをコンピュータグラフィックシステムの連続するメモリブロックに記憶するシステムであって、
テクスチャマップの第1のレベルに対応する第1のデータセットを受け取る手段と、
前記第1のデータセットを分析して前記第1のデータセットのサイズおよびレベル番号を求める手段と、
テクスチャマップの第2のレベルに対応する第2のデータセットを受け取る手段と、
前記第2のデータセットを分析して前記第2のデータセットのサイズおよびレベル番号を求める手段と、
前記第1のデータセットの前記サイズおよび前記レベル番号と前記第2のデータセットの前記サイズおよび前記レベル番号とを比較する手段と、
前記比較する手段に基づいて、前記第2のデータセットが前記第1のデータセットと整 合するか否かを判定する手段と、
前記判定する手段によって前記第2のデータセットが前記第1のデータセットと整合すると判定されたとき、前記連続するメモリブロックにおける前記第2のメモリブロックの前記レベル番号に基づく位置に前記第2のデータセットを記憶する手段と、
を備える、前記システム。 - 前記判定する手段によって、前記第2のデータセットが前記第1のデータセットと整合しないと判定されたとき、前記第2のデータセットを廃棄する手段をさらに備える請求項7記載のシステム。
- 前記判定する手段によって、前記第2のデータセットが前記第1のデータセットと整合しないと判定されたとき、前記第2のデータセットをメモリヘ記憶する手段をさらに備え、前記メモリは前記連続するメモリブロックの外部である、請求項7記載のシステム。
- 前記第1のデータセットの前記サイズおよび前記レベル番号に基づいて前記テクスチャマップを記憶するのに十分なメモリ量を求める手段と、
少なくとも前記テクスチャマップを記憶するのに十分な前記メモリ量の前記連続するメモリブロックを割り当てる手段と、
を備える、請求項7記載のシステム。 - 前記第1のデータセットを廃棄する手段をさらに備える、請求項9記載のシステム。
- 前記第1のデータセットの前記サイズおよび前記レベル番号に基づいて前記テクスチャマップのレベル番号を求める手段をさらに備える、請求項10記載のシステム。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US690,432 | 1991-04-24 | ||
US08/690,432 US5781197A (en) | 1996-07-26 | 1996-07-26 | Method for maintaining contiguous texture memory for cache coherency |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH10111948A JPH10111948A (ja) | 1998-04-28 |
JP4027463B2 true JP4027463B2 (ja) | 2007-12-26 |
Family
ID=24772430
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP16704097A Expired - Fee Related JP4027463B2 (ja) | 1996-07-26 | 1997-06-24 | テクセル・データを記憶する方法およびテクセル・データを記憶するシステム |
Country Status (4)
Country | Link |
---|---|
US (2) | US5781197A (ja) |
JP (1) | JP4027463B2 (ja) |
DE (1) | DE19723063B4 (ja) |
GB (1) | GB2315968B (ja) |
Families Citing this family (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5781197A (en) * | 1996-07-26 | 1998-07-14 | Hewlett-Packard Company | Method for maintaining contiguous texture memory for cache coherency |
JP3586991B2 (ja) * | 1996-08-30 | 2004-11-10 | ソニー株式会社 | テクスチャ・データ読出装置およびレンダリング装置 |
JP3885262B2 (ja) * | 1996-12-17 | 2007-02-21 | 株式会社セガ | テクスチャマップ上の複数画素を混合する方法及び、これを用いた複数画素混合回路と画像処理装置 |
JPH10326352A (ja) * | 1997-05-27 | 1998-12-08 | Mitsubishi Electric Corp | 多角形塗り潰し方法及び記録媒体 |
US6046747A (en) * | 1997-08-04 | 2000-04-04 | Hewlett-Packard Company | Graphics application programming interface avoiding repetitive transfer of texture mapping data |
US6040837A (en) * | 1998-04-22 | 2000-03-21 | Ati Technologies, Inc. | Method and apparatus for space variable texture filtering |
US7518616B1 (en) * | 1998-07-17 | 2009-04-14 | 3Dlabs, Inc. Ltd. | Graphics processor with texture memory allocation system |
US6184894B1 (en) | 1999-01-29 | 2001-02-06 | Neomagic Corp. | Adaptive tri-linear interpolation for use when switching to a new level-of-detail map |
US6750872B1 (en) * | 1999-09-17 | 2004-06-15 | S3 Graphics, Co., Ltd. | Dynamic allocation of texture cache memory |
US6894796B1 (en) | 2000-05-12 | 2005-05-17 | International Business Machines Corporation | Method, system, and logic for selecting line work and control data for a pixel from multiple objects of line work data provided for the pixel |
US6850338B1 (en) | 2000-05-12 | 2005-02-01 | International Business Machines Corporation | Method, system, program, and data structure for generating raster objects |
US6804411B1 (en) | 2000-05-15 | 2004-10-12 | International Business Machines Corporation | Method, system, and program for decompressing and aligning line work data from multiple objects |
US7394568B1 (en) | 2000-05-15 | 2008-07-01 | Infoprint Solutions Company Llc | Method, system, and logic for selecting pixel data from multiple objects |
US6961134B1 (en) | 2000-05-15 | 2005-11-01 | International Business Machines Corporation | Method, system, and logic using multiplexers to select data for pixels from multiple objects |
US6449328B1 (en) | 2000-05-15 | 2002-09-10 | International Business Machines Corporation | Method and apparatus for shifting data from registers |
US6917364B2 (en) * | 2001-01-31 | 2005-07-12 | International Business Machines Corporation | Method and apparatus for managing texture memory in a data processing system |
US8766998B1 (en) * | 2008-08-22 | 2014-07-01 | Aechelon Technology, Inc. | Sampling of non-planar display surfaces |
US9652815B2 (en) * | 2012-09-11 | 2017-05-16 | Nvidia Corporation | Texel data structure for graphics processing unit programmable shader and method of operation thereof |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5097427A (en) * | 1988-07-06 | 1992-03-17 | Hewlett-Packard Company | Texture mapping for computer graphics display controller system |
GB2240015A (en) * | 1990-01-15 | 1991-07-17 | Philips Electronic Associated | Texture memory addressing |
GB2240016A (en) * | 1990-01-15 | 1991-07-17 | Philips Electronic Associated | Texture memories store data at alternating levels of resolution |
US5222205A (en) * | 1990-03-16 | 1993-06-22 | Hewlett-Packard Company | Method for generating addresses to textured graphics primitives stored in rip maps |
US5623693A (en) * | 1994-02-17 | 1997-04-22 | International Business Machines Corporation | System for performing action by sorting actions into immediate and deferred queues, processing immediate queue while still sorting, and appending deferred queue to immediate after sorting |
CA2144914A1 (en) * | 1994-04-01 | 1995-10-02 | Raymond L. Fitzgerald | Computer graphics texture paging system with fragmentary mip map selection |
US5790130A (en) * | 1995-06-08 | 1998-08-04 | Hewlett-Packard Company | Texel cache interrupt daemon for virtual memory management of texture maps |
US5781197A (en) * | 1996-07-26 | 1998-07-14 | Hewlett-Packard Company | Method for maintaining contiguous texture memory for cache coherency |
-
1996
- 1996-07-26 US US08/690,432 patent/US5781197A/en not_active Expired - Lifetime
-
1997
- 1997-06-02 DE DE19723063A patent/DE19723063B4/de not_active Expired - Fee Related
- 1997-06-24 JP JP16704097A patent/JP4027463B2/ja not_active Expired - Fee Related
- 1997-06-24 GB GB9713353A patent/GB2315968B/en not_active Expired - Fee Related
-
1998
- 1998-02-10 US US09/023,668 patent/US5917497A/en not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
JPH10111948A (ja) | 1998-04-28 |
DE19723063A1 (de) | 1998-01-29 |
DE19723063B4 (de) | 2009-05-07 |
GB9713353D0 (en) | 1997-08-27 |
US5781197A (en) | 1998-07-14 |
GB2315968B (en) | 2000-11-08 |
GB2315968A (en) | 1998-02-11 |
US5917497A (en) | 1999-06-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4027463B2 (ja) | テクセル・データを記憶する方法およびテクセル・データを記憶するシステム | |
US6046747A (en) | Graphics application programming interface avoiding repetitive transfer of texture mapping data | |
US7142215B1 (en) | Method and apparatus for processing stencil data using a programmable graphics processor | |
US6078332A (en) | Real-time lighting method using 3D texture mapping | |
US8125480B2 (en) | Flat texture volume rendering | |
EP0875860B1 (en) | Precise gradient calculation system and method for a texture mapping system of a computer graphics system | |
US7027046B2 (en) | Method, system, and computer program product for visibility culling of terrain | |
US8823724B2 (en) | Sparse texture systems and methods | |
US7015914B1 (en) | Multiple data buffers for processing graphics data | |
US20080170082A1 (en) | Graphics engine and method of distributing pixel data | |
US8072456B2 (en) | System and method for image-based rendering with object proxies | |
WO2005098759A1 (en) | Shorter footprints for anisotropic texture filtering | |
US7012614B2 (en) | Texture roaming via dimension elevation | |
KR20060125269A (ko) | 그래픽스 처리장치와 처리방법, 및 그 기록 매체 | |
KR102659643B1 (ko) | 레지던시 맵 디스크립터 | |
US6768492B2 (en) | Texture tiling with adjacency information | |
US7489318B1 (en) | Apparatus and method for managing memory to generate a texture from a render target when forming graphical images | |
US6756989B1 (en) | Method, system, and computer program product for filtering a texture applied to a surface of a computer generated object | |
JPH04213175A (ja) | 大域レンダリングで使用するための分散処理装置 | |
US10726610B2 (en) | Efficient graphics processing using metadata | |
US20110157205A1 (en) | Sparse texture systems and methods | |
US20110157207A1 (en) | Sparse texture systems and methods | |
KR20160068204A (ko) | 메시 지오메트리를 위한 데이터 처리 방법 및 이를 기록한 컴퓨터 판독 가능 저장 매체 | |
JP4311877B2 (ja) | 副標本化テクスチャ端縁部のアンチエイリアシング | |
US7379599B1 (en) | Model based object recognition method using a texture engine |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20040621 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20040621 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20041029 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20070214 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20070507 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20070510 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20070809 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20070911 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20071010 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101019 Year of fee payment: 3 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |