(57)【特許請求の範囲】
【請求項１】
タイルベースのレンダリングシステム内でコンピュータグラフィック画像をテクスチャリングするのに用いるためにテクスチャ画像データの一部分からテクスチャ画像のミップマップチェーンを自動的に生成するための装置であって、
景色データを供給するための手段と、
前記景色データを複数のタイルに分解するための手段と、
各タイルの前記データをタイルバッファに記憶するための手段と、
前記タイルバッファの内容を各タイル毎にフィルタリングし、次に、前記景色データから少なくとも１つのより低いレベルのミップマップデータを生成するための手段と、
より低いレベルのミップマップデータの各々を前記タイルバッファに一時的に記憶するための手段と、
より低いレベルのミップマップデータの各々をシステム主メモリに記憶するための手段と、
を含むことを特徴とする装置。
【請求項２】
画像データをフレームバッファに書き込む前にそれを一時的に記憶するためのタイルバッファが用いられることを特徴とする請求項１に記載の装置。
【請求項３】
前記フレームバッファは、前記主メモリの一部分であることを特徴とする請求項２に記載の装置。
【請求項４】
前記フィルタリング手段はまた、次に低いミップマップレベルを生成する前に、前記より低いレベルのミップマップを前記タイルバッファに記憶することを特徴とする請求項１、請求項２、又は請求項３に記載の装置。
【請求項５】
処理は、全ての望ましいミップマップレベルが生成されるまで所定の回数反復されることを特徴とする請求項４に記載の装置。
【請求項６】
タイルベースのレンダリングシステム内でコンピュータグラフィック画像をテクスチャリングするのに用いるために画像データの一部分からテクスチャ画像のミップマップチェーンを自動的に生成する方法であって、
景色データを供給する段階と、
前記景色データを複数のタイルに分割する段階と、
前記データを各タイル毎にタイルバッファ内にレンダリングする段階と、
各タイルに対して、次に、前記タイルバッファの内容をフィルタリングして前記景色データから少なくとも１つのより低いレベルのミップマップデータを生成する段階と、
各レベルのミップマップデータを前記タイルバッファに一時的に記憶する段階と、
各レベルのミップマップデータをシステム主メモリに記憶する段階と、
を含むことを特徴とする方法。
【請求項７】
前記テクスチャ画像データをフィルタリングする段階は、前記一時的バッファからのデータをフィルタリングする段階と、該このようにフィルタリングされたデータを該一時的バッファ及び主メモリに記憶する段階とを含むことを特徴とする請求項６に記載の方法。
【請求項８】
前記フィルタリングする段階は、全ての望ましいミップマップレベルが生成されるまで所定回数実行されることを特徴とする請求項７に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、三次元コンピュータグラフィック画像のテクスチャリングに関し、特に、画像のテクスチャリング処理中にテクスチャ画像のミップマップチェーンが自動的に生成される技術に関する。
【背景技術】
【０００２】
テクスチャマッピングは、コンピュータグラフィックにおいて公知の技術であり、それを用いて、隠されている対象物に対してその描写の写実性を向上させるためにテクスチャ画像のビットマップを適用する。テクスチャ画像は、メモリに記憶されるビットマップである。
画像のレンダリング中、テクスチャが画面ピクセルにつき１つしかサンプリングされなければ、エイリアシングが重大な問題になることになる。図１は、ピクセルにつき単一のテクスチャサンプルで遠方に後退していくテクスチャを示している。図に示すように、より小さなサンプルは、目に見えるほどのエイリアシングアーチファクトを見せ始める。
【０００３】
ミップマッピングは、テクスチャマッピングにおけるエイリアシングアーチファクトを低減するように用いられる公知の技術である。基本的に、ミップマッピングは、異なる視点で、描写されているソースデータのフィルタリングバージョンを記憶する段階を伴っている。これらの視点は、一般的に対象物までの異なる距離を表すものである。従って、典型的なミップマップは、オリジナルテクスチャに加えて、更に１／２、１／４、１／８などの解像度のコピーから成るであろう。これらの低解像度をもたらすために、各ピクセルは、２番目に高い解像度のミップマップからの例えば４つのピクセルのフィルタリングされた平均値である。テクスチャの前及び後フィルタリングは、エイリアシング及びリンギングアーチファクトを更に低減することにより、レンダリングされた画像の品質を更に改善することができる。
【０００４】
ミップマップ及びテクスチャマップがメモリに記憶されると、空間的に関連するデータが一緒に記憶されることを保証するためにトゥイドリングと呼ばれる方法を用いることが公知である。これは、例えばテクスチャデータの一部分の読取り内の改ページ数を低減することによりメモリ帯域幅利用を大きく改善することができる。更に、メモリ帯域幅要件は、タイルベースのレンダリングシステムとして公知のシステムを用いることによって得ることができる。これは、レンダリングされる画像が一組のより小さな矩形領域又はタイルに分解される技術である。各タイルは、タイル内に見ることができる対象物に対して個々に処理され、これによってメモリ帯域幅要件及び従ってあらゆる内部ストレージバッファの大きさが低減される。立体環境マッピングとして公知の技術を用いることにより、レンダリングされた３Ｄ対象物に照明及び反射を適用することができる。これは、例えば、対象物の表面から外向きに見た場合に見えるであろう景色を最初に環境マップテクスチャ内にレンダリングすることによって作動する。このテクスチャは、次に対象物の表面上にマップされる。
【０００５】
立体マップと呼ばれることもある立体環境マップは、対象物が立体の中心にあるかのように対象物を囲む景色を描写する画像データを含むテクスチャである。立体環境マップの各面は、水平及び垂直に９０度の視野を網羅し、立体マップにつき６面ある。各面は、３Ｄ空間においてＸ／Ｙ、Ｙ／Ｚ、又はＸ／Ｚ平面に直角である。これらのマップは、一連のテクスチャオブジェクトとして実施される。アプリケーションは、立体環境マッピングに対して静止画像を用いることができ、又はアプリケーションは、立体マップの表面内にレンダリングして動的環境マッピングを実行することができる。
【発明の開示】
【０００６】
本発明の好ましい実施形態は、テクスチャマップからミップマップチェーンを自動的に生成する技術を提供する。公知の直接モードレンダリング装置（ＩＭＲ）においては、この効果は、一般的に、最初にトップレベルのミップマップを読取り、次にミップマップレベルの縮小バージョンを生成し、全てのマップレベルが生成されるまでこの処理を反復することにより達成されるであろう。これは、一般的に、既存の３Ｄグラフィックハードウエアパイプラインを用いるか、又は１つの専用スケーリングハードウエアを用いるかのいずれかで達成される。これには、３Ｄハードウエアが用いられる場合のラスタ化時間、又は付加的なハードウエアが用いられる場合の外部メモリからの付加的な読取又は書込帯域幅を消費するという欠点がある。
【０００７】
ミップマップデータを自動的に生成する機能は、動的環境マップのような動的に生成されるテクスチャが用いられている時に特に有用である。これらは、まさしくその性質上、利用可能な予備生成ミップマップチェーンを持っていない。公知のシステムを使用すると、これは、３Ｄハードウエアにおいてラスタ化時間が増加されるか、又は付加的なハードウエアが用いられる場合に外部メモリからの付加的な読取及び書込帯域幅が要求されない限り不可能である。
【０００８】
本出願人は、タイルベースの３Ｄグラフィックエンジンの内部ストレージを使用することにより、例えば付加的なハードウエアパスのない動的環境テクスチャマップに対していくつかのミップマップレベルを生成することができることを認めている。次に、その後に要求される更に別のいずれのミップマップレベルも、ＩＭＲシステムに付随する帯域幅コストの僅かな部分で生成することができる。
好ましくは、タイルベースの３Ｄグラフィックエンジンにおいては、タイルバッファとして公知のメモリバッファが、ミップマップレベルが生成される時のそれらの一時的なストレージのために用いられる。通常の使用法においては、タイルバッファを使用して、レンダリングされている画像の矩形部分を記憶する。
【０００９】
本発明の好ましい実施形態を使用して、ビデオストリーム及びユーザ供給ビットマップのような他のソースから供給されたデータに対するミップマップを生成することもできる。ユーザ供給ビットマップの場合、ミップマップの生成は、直接メモリアクセス（ＤＭＡ）バッファからフレーム記憶装置にデータをコピーする処理中に実行され、これによってホストからフレームバッファメモリへのデータの追加のコピーを省くことができる。
【００１０】
本発明の実施形態はまた、フィルタリングをミップマップ生成の前及び後に実行することを可能にすることにより、供給されたデータストリームの視覚的品質の改善を探求するものである。
本発明は、ここで参照すべき特許請求の範囲のその様々な態様に規定されている。
ここで、本発明の好ましい実施形態を添付図面を参照して例示的に以下に詳細に説明する。
【発明を実施するための最良の形態】
【００１１】
ここで説明する実施形態は、以前の場合よりも少ないいずれかのドライバ又はアプリケーションソフトウエアによる割込で、ミップマップチェーンが動的にかつ実質的にリアルタイムで生成されることを可能にする。これは、動的ミップマップ生成用の専用ハードウエアを用いることで達成され、それは、ソフトウエアでこのタスクを実施する従来の方法よりも速く、付加的な帯域幅要件又は既存のハードウエアで示されるハードウエア競合問題を最小限にもする。
【００１２】
図２は、ミップマップチェーンを動的に生成するのに必要なハードウエアを概略で示している。主として、これは、低レベルミップマップの生成のための入力データのフィルタリング出力を作り出すために、ローカルストレージバッファ２及びボックスフィルタ４を含む。
入力データストリームは、ローカルストレージバッファ２に記憶され、コピーが主テクスチャメモリ（図示せず）に書き込まれる。ローカルストレージバッファからのデータは、次に、Ｘ及びＹ方向に原寸の半分まで、従って、その解像度の半分までフィルタリングされ、フィードバックループを通してローカルストレージバッファ２の中に再度記憶され、並びに主外部テクスチャメモリに出力される。この作動は、全ての要求されたミップマップレベルが生成され、主テクスチャメモリに記憶されるまで反復される。
【００１３】
カウンタがフィードバックループに使用され、正確な数のミップマップデータレベルが生成されることを保証する。
ローカルストレージバッファは、異なるストレージ位置における全ての異なるミップマップレベルを記憶するほど十分に大きいとすることができる。代替的に、それの大きさは小さいとすることができ、データは、各ミップマップレベルが生成される時に上書きされることが可能である。
その最小の大きさは、最高レベルのミップマップの大きさになることになる。
【００１４】
最高ミップマップレベルにおいて大きなオリジナルテクスチャ画像データに対しては、性能は、これをタイルベースレンダリングに用いられるのと同様の方法でより小さくより扱いやすいデータの塊に分解し、これらのタイルの各々を個々に処理することにより改善することができる。これは、作動を実行するのに必要なストレージ量を低減する。例えば、より大きな矩形ミップマップは、最初に４つのより小さな塊に分解することができ、これらの各々が次に個々に処理される。これが実施されると、好ましくは、この４つの塊の各々は、次に各ミップマップレベルで既知の位置に記憶される。ミップマップがテクスチャリングの目的で取り出されると、要求されたレベルの４つの部分全てが取り出され、完全なミップマップレベルを生成するように再結合される。
【００１５】
図３の構成はまた、出力フィルタ８と共に入力フィルタ６を示している。これらは、選択的に作動させることができる。付加的な前及び後フィルタリングにより、ユーザは、データの品質を改善することができる。
この特定的な実施例においては、単純なボックス（平均化）フィルタが用いられる。しかし、これは、より複雑なフィルタタイプに交換することができるであろう。この実施例における前−後フィルタの目的は、データをエイリアス除去することにより、ミップマップ画像の品質を改善することである。これは、特にビデオデータソースに有用であり、その理由は、ビデオデータソースが一般的にミップマップなしで供給され、このようなソースの性質のために、それらがグラフィックアプリケーションに供給される前にフィルタリングされていないからである。これらが、それらが供給された形態で用いられる場合、これらは、バンディング及びリンギングアーチファクトを受けやすい。
【００１６】
動的ミップマップ生成の一実施例において、入力テクスチャデータは、１０２４×１０２４ピクセルのサイズである画像として提供される。これは、ミップマップチェーンにおけるトップ画像を表すものである。これは、次に、各々が３２×３２ピクセルの寸法であるタイルに分解される。各タイルは、ローカルバッファに記憶される前にフィルタリングされてデータの品質を改善する。例えば、入力データがビデオ画像であれば、それは、ローパスフィルタリングされてソース画像に存在する目に見えるエイリアシングを改善することができる。
【００１７】
各タイルに対して、次に、ローカルストレージバッファ２に記憶された画像データの３２×３２部分（ミップマップＡ）は、ボックスフィルタにより１６×１６画像（ミップマップＢ）にフィルタリングされ、その結果は、関連のストレージバッファ２に再度記憶され、並びに外部メモリに書き込まれる。この後に１６×１６画像の８×８画像への更に別のフィルタリングが続く。画像が１×１ピクセルマップに低減されるまで処理は反復される。
この実施例のようにタイル画像上でミップマップ生成を実行することにより、作動に対するストレージ容量は１０２４の１に低減され、その理由は、一度に１つのタイルしか処理する必要がなく、従って、ローカルストレージバッファの最小サイズが３２×３２ピクセルであるからである。
【００１８】
テクスチャのトゥイドルストレージは、テクセルに隣接するブロックをメモリ内の物理的ブロックにまとめることによりメモリ改ページを低減する。４つのテクセルのグループは、２×２のブロックを形成するように最初に編成される。これら２×２ブロックのうちの４つは、次に、４×４のブロックに編成される。４×４ブロックのうちの４つは、次に、１６×１６ブロックに編成されるなどである。これは、メモリアドレスの水平及び垂直座標をビット割込することにより達成される。この処理は、タイルベースのレンダリング３Ｄグラフィックエンジンとの関連で簡単に理解することができる。このようなシステムにおいては、タイルバッファとして公知のストレージバッファが既に存在する。これを使用して、レンダリングされた画像の矩形タイルをそれがレンダリングされている時に記憶する。そのようなシステムにおけるタイル基底によりタイル上にレンダリングされた画像は、各ピクセルに対して考慮する必要があるオブジェクトの数を低減する。
【００１９】
このタイルバッファは、ミップマップの自動生成のために図２のローカルストレージバッファ２として使用することができる。第１のパスにおいて、オリジナル画像（大きさが１タイルまで）がこのバッファに記憶される。ボックスフィルタ２は、次に、その寸法の１／２まで画像をフィルタリングし、その結果をタイルバッファに記憶する。オリジナルデータが１タイルの大きさであったので、この画像は、バッファの１／４しか占めない。新たなデータが、次に再びフィルタリングされ、その結果は、今度はオリジナルデータの大きさの１／１６でタイルバッファに記憶される。最終ミップマップレベル（一般的に１ピクセル×１ピクセル）が生成されるまでこの処理は反復される。各段階の後に、ミップマップレベル生成は、一時的にタイルバッファに記憶され、次に、主システムメモリに記憶される。その後のミップマップレベルの各々は、タイルバッファの前のレベルの少なくとも一部を上書きする。
【００２０】
好ましくは、データは、トゥイドルフォーマットで記憶される。これは、次に、更に別のフィルタ入力がバッファに連続して記憶されることを必要とし、これによってデータを読み取ってその結果を再度書き込む作動を単純化する。
代替的な実施形態では、単純ボックスフィルタは、より複雑なフィルタと交換することができ、また、タイルの大きさよりも大きなバッファを設けることができるであろう。これは、より複雑なフィルタリング画像／データ処理技術の実行、自動エッジ検出、高級化及びノイズ低減技術を可能にすると考えられる。
【００２１】
図３は、本発明の実施形態に用いることができる種類のテクスチャ信号処理ユニットのテクスチャリング部分を示している。ここでは、テクスチャは、テクスチャメモリ２０からテクスチャキャッシュ２２の中に読み取られる。要求されるあらゆるテクスチャフィルタリングは、次に、蓄積バッファ２８に記憶されてテクスチャが適用されているピクセルに対するあらゆる既存データとテクスチャが配合される前に、テクスチャフィルタリングユニット２４で実行される。この配合は、テクスチャ配合ユニット２６で実施される。蓄積バッファは、テクスチャリングされている画像の矩形タイルを記憶する。タイルに関連する画像データは、テクスチャリング前に事前に得られていたものである。テクスチャリングが実施された状態で、画像データが完成することになり、データは、次にフレームバッファ３０に書き込むことができる。
テクスチャメモリ２０及びフレームバッファメモリ３０は、通常は両方ともグラフィックシステムの主メモリの一部である。これは、フレームバッファ及び要求されるテクスチャを記憶するのに十分な大きさである。公知のシステムにおいては、テクスチャは、各ピクセルに対して最高から最低解像度までのミップマップ形式で記憶される。
【００２２】
本発明の実施形態においてシステムが変更されると、テクスチャメモリは、各テクスチャの最高解像度バージョンしか記憶する必要がない。次に、タイルの画像データが既知であると、システムは、完全テクスチャリングを実行するのに要求される低レベル解像度ミップマップを生成するように構成することができる。これは、高解像度ミップマップを変更された蓄積バッファに直接通すことにより達成され、そこでは、低レベル解像度ミップマップの生成が実行されることになる。
【００２３】
変更された蓄積バッファ２８が図４に示されている。これは、高解像度ミップマップに対して必要なあらゆる記憶前フィルタリングを実施するように構成された記憶前フィルタリングユニットを含む。高解像度ミップマップは、次に、書込及び読取アドレス復号器ユニット３４によって受け取られる。これは、高解像度ミップマップのアドレスを復号し、これらをタイルバッファ３６に供給するものである。ここから、それらは、スケーリング論理回路３８を通じて、それらを外部メモリに送る出力に読み取ることができる。これは、フレームバッファにデータを書き込むために通常用いられるのと同じ出力である。しかし、フレームバッファは、主外部メモリの分割された部分であるから、スケーリング論理回路は、それらを一時的記憶用のそのメモリの自由領域に送るように変更することができる。
【００２４】
同時に、スケーリング論理回路は、テクスチャデータに対してフィルタリング演算を実行する。テクスチャデータは、次に、書込及び読取アドレス復号器３４のフィードバック制御論理回路部分を用いてタイルバッファ３６の中にフィードバックされる。このフィルタリング演算は、一般的にオリジナルミップマップの解像度の半分の低解像度ミップマップを生成する。これは、次に、スケーリング論理回路３８を通じて外部メモリに読み出され、同時に次に低いレベルのミップマップがスケーリング論理回路３８により生成され、読取及び書込アドレス復号器３４を通じてタイルバッファにフィードバックされる。この処理は、要求される全てのミップマップレベルが生成されるまで続く。
【００２５】
代替的に、スケーリング論理回路は、それが、より高レベルの解像度ミップマップが既にテクスチャメモリに記憶されており、従ってシステムに利用可能であることに基づいて、第１の反復において２番目に低い解像度ミップマップを読み出すように構成することができる。第２のレベルは、次に、タイルバッファ３６に記憶され、次の反復において、第３のレベルが生成されてスケーリング論理回路３８によりメモリに読み出される。
テクスチャミップマップが特定のタイルをテクスチャリングするのに必要な全てのテクスチャに対して生成された状態で、これらは、次に、図３の構成を用いて特定のタイルに可視の表面をテクスチャリングするために、図３のテクスチャ信号処理ユニットによって用いられる。この作業は、当業者には公知であろう。
【００２６】
従って、ミップマップ形式で適用される全てのテクスチャデータを永久に記憶する必要はないことが認められるであろう。その代わりに、各テクスチャの最高解像度を記憶することのみが必要である。また、このような構成の使用は、テクスチャリングに用いられる付加的なデータを読取るための汎用性をシステムに与えるものである。これは、テクスチャデータの大きなライブラリを有する必要はなく、その代わりに、レンダリングされている各画像又は画像シーケンスが、レンダリングが始まる前にシステムに読み込まれたテクスチャデータの独自のライブラリを有することができることを意味している。
好ましい実施形態では、レンダリングされる画像又は画像シーケンスに対して、その画像又は画像シーケンスに必要な全てのテクスチャミップマップは、画像全体のテクスチャリングが始まる前に生成されて主メモリに記憶されることになる。代替的に、これは、タイル毎に実行することができる。
【図面の簡単な説明】
【００２７】
【図１】上述のように遠方に後退するテクスチャデータのサンプルを示す図である。
【図２】本発明を実施するのに必要なハードウエアのブロック図である。
【図３】公知のテクスチャ処理ユニットのブロック図である。
【図４】本発明を具現化する図３の蓄積バッファに対する変更を示す図である。
【符号の説明】
【００２８】
３４  書込及び読取アドレス復号器ユニット
３６  タイルバッファ
３８  スケーリング論理回路
【図１】
0004624995.tif 000002
【図２】
0004624995.tif 000003
【図３】
0004624995.tif 000004
【図４】
0004624995.tif 000005