(57)【要約】  ３次元コンピュータグラフィック・システムのメモリの使用を管理する方法及び装置が提供される。本システムにおいてテクスチャリングされシェーディングされるシーンは、各々がシーンにおける複数のピクチャ要素を含む複数の矩形領域に分割される。各々の矩形領域に対して、シーンにおいて可視であることのできるオブジェクトのリストが引き出される。テクスチャリングされシェーディングされる最終シーンに寄与しないオブジェクトは、次いで、各リストから除去され、矩形領域は、次に、削減されたオブジェクトのリストを用いて、テクスチャリングされシェーディングされる。【選択図】図８
2009541820.tif 000002
【特許請求の範囲】
【請求項１】
３次元コンピュータグラフィック・システムにおけるメモリ使用を管理するための方法であって、
テクスチャリングされシェーディングされるシーンを、各々が前記シーンにおける複数のピクチャ要素を含む複数の矩形領域に分割し、
各々の矩形領域のためのオブジェクトのリストを引き出すステップ
を含み、各々のリストは、前記シーンで可視であることができるオブジェクトを含んでおり、
各々のリストから、テクスチャリングされシェーディングされる最終シーンに寄与しない全てのオブジェクトを除去し、
各々の矩形領域のための、前述のように削減されたオブジェクトのリストを用いて、各々の矩形領域をテクスチャリング及びシェーディングするステップ
を含むことを特徴とする方法。
【請求項２】
各々の矩形領域のためのオブジェクトのリストを引き出す前記ステップは、前記シーンのデプスデータ及びステンシルデータを判断するステップを含むことを特徴とする請求項１に記載の方法。
【請求項３】
前記シーンのためのデプスデータ及びステンシルデータを引き出す前記ステップは、前記シーン内の各々のピクセルに対する最前の可視オブジェクトのためのタグのバッファをコンパイルするステップを含むことを特徴とする請求項１又は請求項２に記載の方法。
【請求項４】
各々のリストから、テクスチャリングされシェーディングされる最終シーンに寄与しない全てのオブジェクトを除去する前記ステップは、前記タグバッファ内に格納されたデータを用いて前記リストを再生成するステップを含むことを特徴とする請求項３に記載の方法。
【請求項５】
オブジェクトが前記タグバッファをアップデートしないときはいつでも、前記シーンがテクスチャリングされシェーディングされるべきかどうかに関して判断がなされることを特徴とする請求項３又は請求項４に記載の方法。
【請求項６】
一度に１つの矩形領域上で動作することを特徴とする前記請求項のいずれかに記載される方法。
【請求項７】
マクロエリアを形成する前記複数の矩形領域上で動作し、各々の前記マクロエリアは、前記シーン全体の領域より小さいことを特徴とする前記請求項のいずれかに記載される方法。
【請求項８】
オブジェクトリストを再生成する前記ステップは、前記矩形領域の新しいオブジェクトリストの中に挿入するためのポインタを作成し、タグによって参照される各々のメモリ位置のためのフラグを設定するステップを含むことを特徴とする請求項４の方法。
【請求項９】
未使用メモリを解放するために、矩形領域に割り当てられたメモリを圧縮するステップを含む前記請求項のいずれかに記載される方法。
【請求項１０】
３次元コンピュータグラフィック・システムにおけるメモリ使用を管理するための装置であって、
テクスチャリングされシェーディングされるシーンを、各々が前記シーンにおける複数のピクチャ要素を含む複数の矩形領域に分割するための手段と、
各々の矩形領域のためのオブジェクトのリストを引き出すための手段
を含み、各々のリストは、前記シーンで可視であることができるオブジェクトを含んでおり、
各々のリストから、テクスチャリングされシェーディングされる最終シーンに寄与しない全てのオブジェクトを除去するための手段と、
各々の矩形領域のための、前述のように削減されたオブジェクトのリストを用いて、各々の矩形領域をテクスチャリング及びシェーディングするための手段
を含むことを特徴とする方法。
【請求項１１】
各々の矩形領域のためのオブジェクトのリストを引き出すための前記手段は、前記シーンのデプスデータ及びステンシルデータを判断するための手段を含むことを特徴とする請求項１０に記載の装置。
【請求項１２】
前記シーンのためのデプスデータ及びステンシルデータを引き出すための前記手段は、前記シーン内の各々のピクセルに対する最前の可視オブジェクトのためのタグのバッファをコンパイルするための手段を含むことを特徴とする請求項１１に記載の装置。
【請求項１３】
各々のリストから、テクスチャリングされシェーディングされる最終シーンに寄与しない全てのオブジェクトを除去するための前記手段は、前記タグバッファ内に格納されたデータを用いて前記リストを再生成するための手段を含むことを特徴とする請求項１２に記載の方法。
【請求項１４】
オブジェクトリストを再生成するための前記手段は、前記矩形領域の新しいオブジェクトリストの中に挿入するためのポインタを作成するための手段と、タグによって参照される各々のメモリ位置のためのフラグを設定するための手段とを含むことを特徴とする請求項１３に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、３次元コンピュータグラフィック・システムに関し、具体的には、タイルベースのレンダリング・システム内に格納される中間データの量を削減する方法及び装置に関する。
【背景技術】
【０００２】
タイルベースのレンダリング・システムは公知である。このシステムは、レンダリングされる画像を複数の矩形のブロック又はタイルに分解する。これが行われ、続いてテクスチャリング及びシェーディングが実行される方法が、図１に概略的に示される。これは、充分に公知の方法を用いて、画像データをアプリケーションから受信し、それを画面空間に変換する形状処理ユニット２を示す。そのデータは次に、タイリング・ユニット４に供給され、画面空間形状を、一組の定められた矩形領域すなわちタイルのリスト６に挿入する。各リストは、画面の小領域に全体的に又は部分的に存在する基本要素を含む（すなわちタイル）。幾つかのリストはその中にデータを含まないことがあるということを念頭に置くべきではあるが、リストは、画面上の全てのタイルに存在する。
【０００３】
データは次に、タイル毎に、オブジェクト内の各々のピクセルにおける深さを、デプスバッファ１４内にその時点で格納されている値と比較することにより、各々のオブジェクトの可視性を判断する隠面消去ユニット８（ＨＳＲ）に送られる。ピクセルが可視であると判断された場合には、デプスバッファはアップデートされ、オブジェクトタグはパス生成制御ユニット１０（ＰＳＣＵ）へ送られる。ＰＳＣＵは、各オブジェクトからの可視タグでタグバッファ１２をアップデートし、パスが「生成」されなければならないと判断したとき、可視タグをテクスチャリング及びシェーディング・ユニット１６（ＴＳＵ）へ送る。ＰＳＣＵが、すでに占有されているタグバッファ位置の中に、半透明オブジェクトのタグを書き込もうとするときに、パスが典型的に生成される。パス生成プロセスの詳細な説明については、特許文献１を参照されたい。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特許番号第４６００９．ＧＢ０１号
【発明の概要】
【０００５】
画面空間形状リストの存在は、従来の即時モード・レンダリング（ＩＭＲ）アーキテクチャには必要でないオーバーヘッドをタイルベースのレンダリング・システム（ＴＢＲ）に課す。このオーバーヘッドは、典型的には、現行のシーンをレンダリングし、それに続く基本要素に用いられるパラメータメモリを解放することによって処理される。この方法は、外部メモリにおいて、メモリを原寸のＺバッファのために割り当てることが要求されるという欠点を有する。これに加えて、アンチエリアシングがシーンに適用されている場合には、Ｚバッファ及びターゲット・レンダリング面は、原寸のアンチエリアシングされる解像度でなければならず、すなわち、シーンが５１２×５１２のターゲット解像度をもって４×アンチエリアシングでレンダリングされている場合には、Ｚ及びターゲット面は、１０２４×１０２４解像度のために割り当てられなければならない。そうでなければチップ上に残る可能性のある高精度中間レンダリング・ターゲットの使用は、この問題をさらに悪化させる。最終結果は、この手法によってＴＢＲシステムの主要な利点の１つが消去されるということである。
【０００６】
上記の手法は、また、シーンによって使用されるメモリ全体は、完全にレンダリングされるまで解放されることはないことを意味する。これは、そのシステムが、シーンが完了するのを待機するときにストールするか、又は単一のレンダリングにおいてメモリ源の半分だけが使用されることを可能にして、レンダリング中にタイリングが続行可能になるようにすることを意味する。
【０００７】
この状況は、画面が複数のタイルに細分され、次にタイル又はマクロタイルの矩形グループとして扱われる「マクロタイリング」として公知の技術によって改善される。オブジェクト・データは、通常のタイリング通りに、タイル形状毎のリストに示されるが、オブジェクトの単一の「グローバル」リストの代わりに、各々のマクロタイルにはそれ自体のマクロリストが与えられる。これによって、マクロタイルの粒度上にメモリが割り当てられ解放されることが可能となり、例えば、全パラメータ空間が消費されたとき、シーン全体をレンダリングするのとは対照的に、マクロタイルがレンダリングされて、メモリを解放することができる。この機構は、タイリング及び形状処理ハードウェアが、これらの状況においてアイドル状態のままでいる時間を最小にするが、これは高解像度／精度Ｚバッファに対して同じ必要性を保持し、上述のようにターゲット・バッファが割り当てられるようにする。
【課題を解決するための手段】
【０００８】
タイリングは、可視性試験に先立って全形状に適用されるため、タイリングされたリストが３Ｄシーンの正しいラスタ化に必要でないデータを含むことは明白である。例えば、シーンが完全に不透明物体から成る場合には、そのシーンを正しくラスタ化するために、パラメータ・バッファ内には最前の可視物体のみが保持されればよい。そのようにこのデータの多くが除去されるため、他のオブジェクトのためにメモリ源を解放することができる。
これは、タイリングされるデータ上で、最終３Ｄシーンに寄与しない全オブジェクトを除去するラスタ化パスを実行することによって達成される。このパスは画像を生成するのに必要なものではないため、シーンのデプスデータ及びステンシルデータをラスタ化することのみが必要であり、「フル」レンダリングよりもかなり速いものになる。さらに、この場合、保持されたオブジェクト・データは最終画像を正しくレンダリングすることが保証されるため、デプスバッファ及びフレームバッファ画像に付加的な外部記憶装置が必要になることはない。このパスは、「パラメータ圧縮」パスと称することができる。
【０００９】
パラメータ圧縮パスは、シーン内の各ピクセルの最前の可視オブジェクトに対する「タグ」のバッファを作ることにより作用する。このバッファの内容は、以下の条件下で最終シーンに必要になると考えられる。
１．タイル／シーンにおける全オブジェクトは、ラスタ化されている
２．パスは、テクスチャ及びシェーディング・ユニットに生成される必要がある
３．「ステンシルバッファ」は、アップデートされている
４．デプスバッファはアップデートされており、アップデートを生じさせたオブジェクトは「タグ」バッファを修正しない。
【００１０】
タグバッファの内容が必要であると決定されたとき、正しくシーンをレンダリングするのに必要なオブジェクトに対してのみタイルベースのオブジェクトリストを再生するために、及び依然として参照されるオブジェクトのメモリブロックをマークするために、その内容が処理される。上記の３及び４の場合では、バッファが処理された後、テクスチャ及びシェーディング・ユニットにフラッシュを生じさせたオブジェクトは、それ自体が処理されなければならない。３の場合では、可視でないと判断された場合でさえ、これはオブジェクト自体を含む。
【００１１】
ステンシルバッファをアップデートするオブジェクトは、相対的に多数のオブジェクトを保持させるようにすることができるとすると、ステンシルバッファ状態自体を格納することが好ましいといえる。これは、ステンシルバッファ画像をアップデートするオブジェクトが廃棄されることを可能にし、この時に他の有効なオブジェクトをフラッシュする必要性をなくす。随意のオブジェクトがデプスバッファ又はタグバッファをアップデートする時点で、ステンシルバッファ画像は保存される必要がある。その状態に基づいて、保存されたステンシル画像のためのメモリは、パラメータに用いられるのと同じパラメータメモリ管理機構を用いて割り当てられる。同じ機構は、デプスのみのアップデート・オブジェクトに適用され得るが、これらはステンシル・アップデート・オブジェクトより数がかなり少ない傾向があり、大量のメモリを消費する傾向はない。
【００１２】
この機構はマクロタイリングと組み合わせて、メモリを消費したマクロタイルが「圧縮」されるのを可能にすることができ、すなわち、システムのメモリがなくなるときに、上述の欠点を被ることなく、メモリを解放することができる。さらに、マクロタイリングはメモリをオブジェクト、すなわちタイルの場所に割り当てるため、メモリブロックがパラメータ圧縮パスによって首尾よく解放される見込みは大幅に増加する。メモリはブロック毎に解放されるため、その方式は、空間を取り戻すためにデータを再編成する必要性はないが、メモリが解放されることになる前に、除去されるブロックに対して全参照を必要とするという欠点を有する。不必要なオブジェクトのデータ・メモリを解放するこのシステムの能力を最大にするために、タイル毎さらにオブジェクト毎のような、これより小さい粒度でメモリを管理することによって、解放されるメモリの量を大きくすることが可能であろう。
【００１３】
代替的に、粗粒度のブロックベース方式を保持し、より積極的な圧縮アルゴリズムを条件付きで適用することが可能である。例えば、多数のオブジェクト・ポインタがタイリングされた形状リストから除去されるが、用いられるメモリブロックの数が僅かしか減少しないことをシステムが認識した場合には、このシステムは、次にマクロタイルに第２の圧縮パスを適用することが可能であろう。この第２のパスは、あらゆる解放空間が連続的になり、これが解放されるようにオブジェクト・データをメモリ内で移動させることにより、オブジェクト・データを圧縮することができる。圧縮のこの形態は、極限状況でのみ必要とされる傾向があるため、ソフトウェアによって実行可能である。
本発明は、ここで参照する特許請求の範囲においてより正確に定義される。
【図面の簡単な説明】
【００１４】
【図１】上述の従来技術のタイルベースのレンダリング・システムのブロック図を示す。
【図２】本発明の実施形態が、どのようにオブジェクトが保持されるべきかを判断するフローチャートである。
【図３】図２に示すアルゴリズムに対する修正を示す。
【図４】オブジェクトタグバッファが、その内容が最終シーンで必要であると判断されたときに、どのように処理されるかを示す。
【図５】個々のオブジェクトタグが、タグバッファから抽出されたときに、どのように処理されるかを示す。
【図６】全マクロタイルがどのように処理されるかを示す。
【図７】各マクロタイルの終わりで、どのようにメモリが処理される／解放されるかを示す。
【図８】本発明の一実施形態のブロック図である。
【発明を実施するための形態】
【００１５】
本発明の好ましい実施形態は、添付図を参照して、一例としてここに詳述される。
説明する実施形態は、メモリが管理される方法について、次の想定をすることを留意されたい。
・オブジェクト・ポインタのメモリは、別個のメモリブロックからオブジェクト・データへ割り当てられる。
・ポインタのメモリブロックは、マクロタイル毎に並置されるようにタイル毎に割り当てられる。
【００１６】
図２は、オブジェクトが必要であるか、及びいつタグバッファが処理されるべきか、を判断するために用いられる基本アルゴリズムを示す。２２において、オブジェクトがステンシルバッファをアップデートするかどうかについて判断がなされ、アップデートする場合には、上述のルール３に基づいて、全タグバッファが２８において処理され、オブジェクト自体は終了前に５０において処理される。
【００１７】
オブジェクトが、ステンシルバッファをアップデートしない場合には、オブジェクトの可視性は２４において判断され、オブジェクトが可視でない場合にはアルゴリズムは終了する。オブジェクトが可視である場合には、２６においてオブジェクトがタグバッファをアップデートするかどうか判断され、アップデートしない場合には、ルール４に従って、全タグバッファが２８において処理され、オブジェクト自体は終了前に５０において処理される。
【００１８】
オブジェクトがタグバッファをアップデートする場合には、３０において、パスが生成される必要があるかどうか判断され（特許、パス生成、特許文献１を参照されたい）、必要がある場合には、上述のルール２に基づいて、３１において、タグバッファはパス生成の要求に応じて処理され、オブジェクトタグは次に３２において、タグバッファに書き込まれ、アルゴリズムは終了する。
【００１９】
図３は、発明の概要部分で説明されるように、ステンシルバッファの読み込み／格納で置き換えられたステンシルオブジェクトが加えられた、上記で定義される基本アルゴリズムを示す。２２において、オブジェクトが図２の通りにステンシルバッファをアップデートするかどうか確かめるために試験が行われるが、この後で、３３において、アップデートされるのはステンシルバッファだけであるかどうかを判断するために試験が行われ、そうでない場合には、アルゴリズムは図２において進む。或いは、オブジェクトはステンシルバッファをアップデートするだけで、次いで廃棄される。図２におけるように、オブジェクトの可視性は、２４において試験されるが、この後には、オブジェクトの可視性がステンシルバッファの内容に依存するものであったかどうか判断するために、３６において付加的な試験が行われる。そうである場合には、３７において、現行のタグバッファが処理され、３８において、タイルのためのステンシルバッファはメモリに格納される。「読み込みステンシル」オブジェクトは次に、３９において、タイル形状毎のリストに挿入される。アルゴリズムは次に図２のように進む。
【００２０】
図４は、タグバッファが処理される方法を示す。プロセスの開始４０後、４２において、タグバッファ８０は、有効タグについて走査され、有効タグが見出だされない場合には、プロセスは４４において終了する。或いは、４６において、４２で見出だされたのと同じタグ値をもつタグバッファ内の全タグは無効にされる。どの単一のオブジェクトも多くをカバーすることができるピクセルを表すので、この動作は必要であり、オブジェクトが反復的にタイル形状リストに挿入されないようにするために、タグの全ての例は、最初に見出されたときに無効にされなければならない。オブジェクトタグは、次いで、次の有効タグについて走査するために４２に戻る前に、５０において処理される。
【００２１】
オブジェクトタグが処理されるとき、２つの動作が実行される。最初に、各タグが、オブジェクトリスト・ポインタを再び生じさせるために用いられ、これは次いで、タイルの新しいオブジェクトリストに挿入される。第２に、メモリブロックが依然として必要であることを示すために、タグによって参照される各メモリブロックにフラグが設定される。このプロセスは、図５に示される。
【００２２】
５２において、オブジェクトに対するポインタがオブジェクトタグから取り出される。５４において、次に現行のタイル・オブジェクト・ポインタ・ブロックに空間があるかどうか判断され、ない場合には、５６において新しいメモリブロックが割り当てられる。オブジェクトに対するポインタは、次に５８において、タイトルリストの中に戻って加えられる。オブジェクトを含むメモリブロックに対するポインタは、６０において、取り出され、終了前に６２において、「継続参照」アレイにおいて継続使用されるブロックにフラグを立てるために用いられる。
【００２３】
マクロタイル全体の処理を図６に示す。処理の開始において、オブジェクトが現在「参照」されているか及びブロックが継続して参照されるべきか（「継続参照」アレイと呼ばれる）を示すフラグの各々のマクロタイルのアレイが、７２においてクリアされる。各々のオブジェクトに対して、「参照」されるフラグは、７４において、メモリブロックがこのマクロタイルの中で参照されることを示すように設定される。各々のオブジェクトは次に、２０において、上述のように処理される。７６において、現行のポインタ・メモリブロックにもっと他のオブジェクト・ポインタが存在するかどうか確認するために試験が行われ、ない場合には、７８において、現行のブロックは解放リストに戻り、オブジェクト・ポインタが存在する場合には、８０において、プロセスは次のブロックに移動する。試験は次に、８２においてタイルの中に処理されるべきオブジェクトがもっと他にあるかどうか判断するために行われ、ある場合には、プロセスは、８４において次のオブジェクトへ移動し、次いで７４に戻る。タイルにもうオブジェクトがない場合には、全タグバッファが上記に定義するように処理される（プロセス４０、「タグバッファ処理を開始する」）。プロセスは次に、８８において、マクロタイルに処理されるべきタイルが他にあるかどうかチェックする。ある場合には、７４に戻る前に、９０において、次のタイルに移動する。マクロタイルの中の全タイルが処理されたとき、オブジェクトメモリは、１００において処理される。
【００２４】
マクロタイルの全タイルが処理されたとき、メモリブロックの「参照」及び「継続参照」フラグアレイは、どのメモリブロックを解放することができるかを判断するために処理される。このプロセスは、図７に示される。
【００２５】
このシステムにおける各メモリブロックのために、参照されるアレイからのフラグは、最初に１０２においてチェックされる。そのフラグが設定されない場合には、プロセスは次に、１０８における試験へ移動する。或いは、継続参照アレイフラグが１０４において試験される。継続参照フラグが設定されない場合には、１０６においてメモリブロックは、解放ブロックのリストへ戻される。或いは、それはシーンによって引き続き必要とされ、プロセスは、１０８及び１１０において、必要に応じて次のエントリへ移動する。
【００２６】
図８は、好ましい実施形態のブロック図を示す。パラメータフェッチ・ユニット（２００）は、タイル毎の入力パラメータリストを読み取り、前項で説明したように、シーンを正しくラスタ化するために、どのオブジェクトが保持される必要があるか又はどのステンシルデータを格納する必要があるかを判断する隠面消去（ＨＳＲ）ユニット（２０１）へそれを供給する。ＨＳＲユニットは、参照されるメモリブロック・ポインタをメモリ参照ユニット（２０２）へ送る。これは、参照アレイ（２０６）に、各参照されるブロックに対するフラグを設定する。ＨＲＳユニットはまた、必要なオブジェクトのためのタグを制御ストリーム再生器ユニットへ送り（２０３）、（メモリマネジャ（２０５）から要求される）新規に割り当てられるメモリブロックを用いて、オブジェクトの有効リストを再構築する。ＨＳＲユニットが、ステンシル状態が格納されるべきと判断する場合には、ステンシルデータをステンシル格納ユニット（２０４）へ送り、これはステンシルバッファのタイル価値に対してメモリを割り当て、ステンシルデータをメモリ内に格納し、制御ストリーム再生器にステンシル読み込み参照を、タイルオブジェクト毎のリストの中に挿入するように命じる。パラメータフェッチ・ユニット（２０７）が、全パラメータがマクロタイルのために処理されたと、パラメータ・メモリ・マネジメント・ユニット（２０５）に信号を送るときに、マクロタイルによって以前に用いられたメモリブロックのリスト（２０８）を走査し、図７で述べたように、必要に応じてフラグが立てられなくなるものを全て解放ブロックのリスト（２０９）に戻す。
【００２７】
上記は、システムがパラメータメモリを使い切ったときはいつでも、一度に１つのマクロタイルに対して、装置ドライバソフトウェアによって開始される。
【図１】
2009541820.tif 000003
【図２】
2009541820.tif 000004
【図３】
2009541820.tif 000005
【図４】
2009541820.tif 000006
【図５】
2009541820.tif 000007
【図６】
2009541820.tif 000008
【図７】
2009541820.tif 000009
【図８】
2009541820.tif 000010
【国際調査報告】
2009541820.tif 000011
2009541820.tif 000012
2009541820.tif 000013