説明

タイルベースのレンダリング装置におけるパラメータ圧縮

3次元コンピュータグラフィック・システムのメモリの使用を管理する方法及び装置が提供される。本システムにおいてテクスチャリングされシェーディングされるシーンは、各々がシーンにおける複数のピクチャ要素を含む複数の矩形領域に分割される。各々の矩形領域に対して、シーンにおいて可視であることのできるオブジェクトのリストが引き出される。テクスチャリングされシェーディングされる最終シーンに寄与しないオブジェクトは、次いで、各リストから除去され、矩形領域は、次に、削減されたオブジェクトのリストを用いて、テクスチャリングされシェーディングされる。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、3次元コンピュータグラフィック・システムに関し、具体的には、タイルベースのレンダリング・システム内に格納される中間データの量を削減する方法及び装置に関する。
【背景技術】
【0002】
タイルベースのレンダリング・システムは公知である。このシステムは、レンダリングされる画像を複数の矩形のブロック又はタイルに分解する。これが行われ、続いてテクスチャリング及びシェーディングが実行される方法が、図1に概略的に示される。これは、充分に公知の方法を用いて、画像データをアプリケーションから受信し、それを画面空間に変換する形状処理ユニット2を示す。そのデータは次に、タイリング・ユニット4に供給され、画面空間形状を、一組の定められた矩形領域すなわちタイルのリスト6に挿入する。各リストは、画面の小領域に全体的に又は部分的に存在する基本要素を含む(すなわちタイル)。幾つかのリストはその中にデータを含まないことがあるということを念頭に置くべきではあるが、リストは、画面上の全てのタイルに存在する。
【0003】
データは次に、タイル毎に、オブジェクト内の各々のピクセルにおける深さを、デプスバッファ14内にその時点で格納されている値と比較することにより、各々のオブジェクトの可視性を判断する隠面消去ユニット8(HSR)に送られる。ピクセルが可視であると判断された場合には、デプスバッファはアップデートされ、オブジェクトタグはパス生成制御ユニット10(PSCU)へ送られる。PSCUは、各オブジェクトからの可視タグでタグバッファ12をアップデートし、パスが「生成」されなければならないと判断したとき、可視タグをテクスチャリング及びシェーディング・ユニット16(TSU)へ送る。PSCUが、すでに占有されているタグバッファ位置の中に、半透明オブジェクトのタグを書き込もうとするときに、パスが典型的に生成される。パス生成プロセスの詳細な説明については、特許文献1を参照されたい。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特許番号第46009.GB01号
【発明の概要】
【0005】
画面空間形状リストの存在は、従来の即時モード・レンダリング(IMR)アーキテクチャには必要でないオーバーヘッドをタイルベースのレンダリング・システム(TBR)に課す。このオーバーヘッドは、典型的には、現行のシーンをレンダリングし、それに続く基本要素に用いられるパラメータメモリを解放することによって処理される。この方法は、外部メモリにおいて、メモリを原寸のZバッファのために割り当てることが要求されるという欠点を有する。これに加えて、アンチエリアシングがシーンに適用されている場合には、Zバッファ及びターゲット・レンダリング面は、原寸のアンチエリアシングされる解像度でなければならず、すなわち、シーンが512×512のターゲット解像度をもって4×アンチエリアシングでレンダリングされている場合には、Z及びターゲット面は、1024×1024解像度のために割り当てられなければならない。そうでなければチップ上に残る可能性のある高精度中間レンダリング・ターゲットの使用は、この問題をさらに悪化させる。最終結果は、この手法によってTBRシステムの主要な利点の1つが消去されるということである。
【0006】
上記の手法は、また、シーンによって使用されるメモリ全体は、完全にレンダリングされるまで解放されることはないことを意味する。これは、そのシステムが、シーンが完了するのを待機するときにストールするか、又は単一のレンダリングにおいてメモリ源の半分だけが使用されることを可能にして、レンダリング中にタイリングが続行可能になるようにすることを意味する。
【0007】
この状況は、画面が複数のタイルに細分され、次にタイル又はマクロタイルの矩形グループとして扱われる「マクロタイリング」として公知の技術によって改善される。オブジェクト・データは、通常のタイリング通りに、タイル形状毎のリストに示されるが、オブジェクトの単一の「グローバル」リストの代わりに、各々のマクロタイルにはそれ自体のマクロリストが与えられる。これによって、マクロタイルの粒度上にメモリが割り当てられ解放されることが可能となり、例えば、全パラメータ空間が消費されたとき、シーン全体をレンダリングするのとは対照的に、マクロタイルがレンダリングされて、メモリを解放することができる。この機構は、タイリング及び形状処理ハードウェアが、これらの状況においてアイドル状態のままでいる時間を最小にするが、これは高解像度/精度Zバッファに対して同じ必要性を保持し、上述のようにターゲット・バッファが割り当てられるようにする。
【課題を解決するための手段】
【0008】
タイリングは、可視性試験に先立って全形状に適用されるため、タイリングされたリストが3Dシーンの正しいラスタ化に必要でないデータを含むことは明白である。例えば、シーンが完全に不透明物体から成る場合には、そのシーンを正しくラスタ化するために、パラメータ・バッファ内には最前の可視物体のみが保持されればよい。そのようにこのデータの多くが除去されるため、他のオブジェクトのためにメモリ源を解放することができる。
これは、タイリングされるデータ上で、最終3Dシーンに寄与しない全オブジェクトを除去するラスタ化パスを実行することによって達成される。このパスは画像を生成するのに必要なものではないため、シーンのデプスデータ及びステンシルデータをラスタ化することのみが必要であり、「フル」レンダリングよりもかなり速いものになる。さらに、この場合、保持されたオブジェクト・データは最終画像を正しくレンダリングすることが保証されるため、デプスバッファ及びフレームバッファ画像に付加的な外部記憶装置が必要になることはない。このパスは、「パラメータ圧縮」パスと称することができる。
【0009】
パラメータ圧縮パスは、シーン内の各ピクセルの最前の可視オブジェクトに対する「タグ」のバッファを作ることにより作用する。このバッファの内容は、以下の条件下で最終シーンに必要になると考えられる。
1.タイル/シーンにおける全オブジェクトは、ラスタ化されている
2.パスは、テクスチャ及びシェーディング・ユニットに生成される必要がある
3.「ステンシルバッファ」は、アップデートされている
4.デプスバッファはアップデートされており、アップデートを生じさせたオブジェクトは「タグ」バッファを修正しない。
【0010】
タグバッファの内容が必要であると決定されたとき、正しくシーンをレンダリングするのに必要なオブジェクトに対してのみタイルベースのオブジェクトリストを再生するために、及び依然として参照されるオブジェクトのメモリブロックをマークするために、その内容が処理される。上記の3及び4の場合では、バッファが処理された後、テクスチャ及びシェーディング・ユニットにフラッシュを生じさせたオブジェクトは、それ自体が処理されなければならない。3の場合では、可視でないと判断された場合でさえ、これはオブジェクト自体を含む。
【0011】
ステンシルバッファをアップデートするオブジェクトは、相対的に多数のオブジェクトを保持させるようにすることができるとすると、ステンシルバッファ状態自体を格納することが好ましいといえる。これは、ステンシルバッファ画像をアップデートするオブジェクトが廃棄されることを可能にし、この時に他の有効なオブジェクトをフラッシュする必要性をなくす。随意のオブジェクトがデプスバッファ又はタグバッファをアップデートする時点で、ステンシルバッファ画像は保存される必要がある。その状態に基づいて、保存されたステンシル画像のためのメモリは、パラメータに用いられるのと同じパラメータメモリ管理機構を用いて割り当てられる。同じ機構は、デプスのみのアップデート・オブジェクトに適用され得るが、これらはステンシル・アップデート・オブジェクトより数がかなり少ない傾向があり、大量のメモリを消費する傾向はない。
【0012】
この機構はマクロタイリングと組み合わせて、メモリを消費したマクロタイルが「圧縮」されるのを可能にすることができ、すなわち、システムのメモリがなくなるときに、上述の欠点を被ることなく、メモリを解放することができる。さらに、マクロタイリングはメモリをオブジェクト、すなわちタイルの場所に割り当てるため、メモリブロックがパラメータ圧縮パスによって首尾よく解放される見込みは大幅に増加する。メモリはブロック毎に解放されるため、その方式は、空間を取り戻すためにデータを再編成する必要性はないが、メモリが解放されることになる前に、除去されるブロックに対して全参照を必要とするという欠点を有する。不必要なオブジェクトのデータ・メモリを解放するこのシステムの能力を最大にするために、タイル毎さらにオブジェクト毎のような、これより小さい粒度でメモリを管理することによって、解放されるメモリの量を大きくすることが可能であろう。
【0013】
代替的に、粗粒度のブロックベース方式を保持し、より積極的な圧縮アルゴリズムを条件付きで適用することが可能である。例えば、多数のオブジェクト・ポインタがタイリングされた形状リストから除去されるが、用いられるメモリブロックの数が僅かしか減少しないことをシステムが認識した場合には、このシステムは、次にマクロタイルに第2の圧縮パスを適用することが可能であろう。この第2のパスは、あらゆる解放空間が連続的になり、これが解放されるようにオブジェクト・データをメモリ内で移動させることにより、オブジェクト・データを圧縮することができる。圧縮のこの形態は、極限状況でのみ必要とされる傾向があるため、ソフトウェアによって実行可能である。
本発明は、ここで参照する特許請求の範囲においてより正確に定義される。
【図面の簡単な説明】
【0014】
【図1】上述の従来技術のタイルベースのレンダリング・システムのブロック図を示す。
【図2】本発明の実施形態が、どのようにオブジェクトが保持されるべきかを判断するフローチャートである。
【図3】図2に示すアルゴリズムに対する修正を示す。
【図4】オブジェクトタグバッファが、その内容が最終シーンで必要であると判断されたときに、どのように処理されるかを示す。
【図5】個々のオブジェクトタグが、タグバッファから抽出されたときに、どのように処理されるかを示す。
【図6】全マクロタイルがどのように処理されるかを示す。
【図7】各マクロタイルの終わりで、どのようにメモリが処理される/解放されるかを示す。
【図8】本発明の一実施形態のブロック図である。
【発明を実施するための形態】
【0015】
本発明の好ましい実施形態は、添付図を参照して、一例としてここに詳述される。
説明する実施形態は、メモリが管理される方法について、次の想定をすることを留意されたい。
・オブジェクト・ポインタのメモリは、別個のメモリブロックからオブジェクト・データへ割り当てられる。
・ポインタのメモリブロックは、マクロタイル毎に並置されるようにタイル毎に割り当てられる。
【0016】
図2は、オブジェクトが必要であるか、及びいつタグバッファが処理されるべきか、を判断するために用いられる基本アルゴリズムを示す。22において、オブジェクトがステンシルバッファをアップデートするかどうかについて判断がなされ、アップデートする場合には、上述のルール3に基づいて、全タグバッファが28において処理され、オブジェクト自体は終了前に50において処理される。
【0017】
オブジェクトが、ステンシルバッファをアップデートしない場合には、オブジェクトの可視性は24において判断され、オブジェクトが可視でない場合にはアルゴリズムは終了する。オブジェクトが可視である場合には、26においてオブジェクトがタグバッファをアップデートするかどうか判断され、アップデートしない場合には、ルール4に従って、全タグバッファが28において処理され、オブジェクト自体は終了前に50において処理される。
【0018】
オブジェクトがタグバッファをアップデートする場合には、30において、パスが生成される必要があるかどうか判断され(特許、パス生成、特許文献1を参照されたい)、必要がある場合には、上述のルール2に基づいて、31において、タグバッファはパス生成の要求に応じて処理され、オブジェクトタグは次に32において、タグバッファに書き込まれ、アルゴリズムは終了する。
【0019】
図3は、発明の概要部分で説明されるように、ステンシルバッファの読み込み/格納で置き換えられたステンシルオブジェクトが加えられた、上記で定義される基本アルゴリズムを示す。22において、オブジェクトが図2の通りにステンシルバッファをアップデートするかどうか確かめるために試験が行われるが、この後で、33において、アップデートされるのはステンシルバッファだけであるかどうかを判断するために試験が行われ、そうでない場合には、アルゴリズムは図2において進む。或いは、オブジェクトはステンシルバッファをアップデートするだけで、次いで廃棄される。図2におけるように、オブジェクトの可視性は、24において試験されるが、この後には、オブジェクトの可視性がステンシルバッファの内容に依存するものであったかどうか判断するために、36において付加的な試験が行われる。そうである場合には、37において、現行のタグバッファが処理され、38において、タイルのためのステンシルバッファはメモリに格納される。「読み込みステンシル」オブジェクトは次に、39において、タイル形状毎のリストに挿入される。アルゴリズムは次に図2のように進む。
【0020】
図4は、タグバッファが処理される方法を示す。プロセスの開始40後、42において、タグバッファ80は、有効タグについて走査され、有効タグが見出だされない場合には、プロセスは44において終了する。或いは、46において、42で見出だされたのと同じタグ値をもつタグバッファ内の全タグは無効にされる。どの単一のオブジェクトも多くをカバーすることができるピクセルを表すので、この動作は必要であり、オブジェクトが反復的にタイル形状リストに挿入されないようにするために、タグの全ての例は、最初に見出されたときに無効にされなければならない。オブジェクトタグは、次いで、次の有効タグについて走査するために42に戻る前に、50において処理される。
【0021】
オブジェクトタグが処理されるとき、2つの動作が実行される。最初に、各タグが、オブジェクトリスト・ポインタを再び生じさせるために用いられ、これは次いで、タイルの新しいオブジェクトリストに挿入される。第2に、メモリブロックが依然として必要であることを示すために、タグによって参照される各メモリブロックにフラグが設定される。このプロセスは、図5に示される。
【0022】
52において、オブジェクトに対するポインタがオブジェクトタグから取り出される。54において、次に現行のタイル・オブジェクト・ポインタ・ブロックに空間があるかどうか判断され、ない場合には、56において新しいメモリブロックが割り当てられる。オブジェクトに対するポインタは、次に58において、タイトルリストの中に戻って加えられる。オブジェクトを含むメモリブロックに対するポインタは、60において、取り出され、終了前に62において、「継続参照」アレイにおいて継続使用されるブロックにフラグを立てるために用いられる。
【0023】
マクロタイル全体の処理を図6に示す。処理の開始において、オブジェクトが現在「参照」されているか及びブロックが継続して参照されるべきか(「継続参照」アレイと呼ばれる)を示すフラグの各々のマクロタイルのアレイが、72においてクリアされる。各々のオブジェクトに対して、「参照」されるフラグは、74において、メモリブロックがこのマクロタイルの中で参照されることを示すように設定される。各々のオブジェクトは次に、20において、上述のように処理される。76において、現行のポインタ・メモリブロックにもっと他のオブジェクト・ポインタが存在するかどうか確認するために試験が行われ、ない場合には、78において、現行のブロックは解放リストに戻り、オブジェクト・ポインタが存在する場合には、80において、プロセスは次のブロックに移動する。試験は次に、82においてタイルの中に処理されるべきオブジェクトがもっと他にあるかどうか判断するために行われ、ある場合には、プロセスは、84において次のオブジェクトへ移動し、次いで74に戻る。タイルにもうオブジェクトがない場合には、全タグバッファが上記に定義するように処理される(プロセス40、「タグバッファ処理を開始する」)。プロセスは次に、88において、マクロタイルに処理されるべきタイルが他にあるかどうかチェックする。ある場合には、74に戻る前に、90において、次のタイルに移動する。マクロタイルの中の全タイルが処理されたとき、オブジェクトメモリは、100において処理される。
【0024】
マクロタイルの全タイルが処理されたとき、メモリブロックの「参照」及び「継続参照」フラグアレイは、どのメモリブロックを解放することができるかを判断するために処理される。このプロセスは、図7に示される。
【0025】
このシステムにおける各メモリブロックのために、参照されるアレイからのフラグは、最初に102においてチェックされる。そのフラグが設定されない場合には、プロセスは次に、108における試験へ移動する。或いは、継続参照アレイフラグが104において試験される。継続参照フラグが設定されない場合には、106においてメモリブロックは、解放ブロックのリストへ戻される。或いは、それはシーンによって引き続き必要とされ、プロセスは、108及び110において、必要に応じて次のエントリへ移動する。
【0026】
図8は、好ましい実施形態のブロック図を示す。パラメータフェッチ・ユニット(200)は、タイル毎の入力パラメータリストを読み取り、前項で説明したように、シーンを正しくラスタ化するために、どのオブジェクトが保持される必要があるか又はどのステンシルデータを格納する必要があるかを判断する隠面消去(HSR)ユニット(201)へそれを供給する。HSRユニットは、参照されるメモリブロック・ポインタをメモリ参照ユニット(202)へ送る。これは、参照アレイ(206)に、各参照されるブロックに対するフラグを設定する。HRSユニットはまた、必要なオブジェクトのためのタグを制御ストリーム再生器ユニットへ送り(203)、(メモリマネジャ(205)から要求される)新規に割り当てられるメモリブロックを用いて、オブジェクトの有効リストを再構築する。HSRユニットが、ステンシル状態が格納されるべきと判断する場合には、ステンシルデータをステンシル格納ユニット(204)へ送り、これはステンシルバッファのタイル価値に対してメモリを割り当て、ステンシルデータをメモリ内に格納し、制御ストリーム再生器にステンシル読み込み参照を、タイルオブジェクト毎のリストの中に挿入するように命じる。パラメータフェッチ・ユニット(207)が、全パラメータがマクロタイルのために処理されたと、パラメータ・メモリ・マネジメント・ユニット(205)に信号を送るときに、マクロタイルによって以前に用いられたメモリブロックのリスト(208)を走査し、図7で述べたように、必要に応じてフラグが立てられなくなるものを全て解放ブロックのリスト(209)に戻す。
【0027】
上記は、システムがパラメータメモリを使い切ったときはいつでも、一度に1つのマクロタイルに対して、装置ドライバソフトウェアによって開始される。

【特許請求の範囲】
【請求項1】
3次元コンピュータグラフィック・システムにおけるメモリ使用を管理するための方法であって、
テクスチャリングされシェーディングされるシーンを、各々が前記シーンにおける複数のピクチャ要素を含む複数の矩形領域に分割し、
各々の矩形領域のためのオブジェクトのリストを引き出すステップ
を含み、各々のリストは、前記シーンで可視であることができるオブジェクトを含んでおり、
各々のリストから、テクスチャリングされシェーディングされる最終シーンに寄与しない全てのオブジェクトを除去し、
各々の矩形領域のための、前述のように削減されたオブジェクトのリストを用いて、各々の矩形領域をテクスチャリング及びシェーディングするステップ
を含むことを特徴とする方法。
【請求項2】
各々の矩形領域のためのオブジェクトのリストを引き出す前記ステップは、前記シーンのデプスデータ及びステンシルデータを判断するステップを含むことを特徴とする請求項1に記載の方法。
【請求項3】
前記シーンのためのデプスデータ及びステンシルデータを引き出す前記ステップは、前記シーン内の各々のピクセルに対する最前の可視オブジェクトのためのタグのバッファをコンパイルするステップを含むことを特徴とする請求項1又は請求項2に記載の方法。
【請求項4】
各々のリストから、テクスチャリングされシェーディングされる最終シーンに寄与しない全てのオブジェクトを除去する前記ステップは、前記タグバッファ内に格納されたデータを用いて前記リストを再生成するステップを含むことを特徴とする請求項3に記載の方法。
【請求項5】
オブジェクトが前記タグバッファをアップデートしないときはいつでも、前記シーンがテクスチャリングされシェーディングされるべきかどうかに関して判断がなされることを特徴とする請求項3又は請求項4に記載の方法。
【請求項6】
一度に1つの矩形領域上で動作することを特徴とする前記請求項のいずれかに記載される方法。
【請求項7】
マクロエリアを形成する前記複数の矩形領域上で動作し、各々の前記マクロエリアは、前記シーン全体の領域より小さいことを特徴とする前記請求項のいずれかに記載される方法。
【請求項8】
オブジェクトリストを再生成する前記ステップは、前記矩形領域の新しいオブジェクトリストの中に挿入するためのポインタを作成し、タグによって参照される各々のメモリ位置のためのフラグを設定するステップを含むことを特徴とする請求項4の方法。
【請求項9】
未使用メモリを解放するために、矩形領域に割り当てられたメモリを圧縮するステップを含む前記請求項のいずれかに記載される方法。
【請求項10】
3次元コンピュータグラフィック・システムにおけるメモリ使用を管理するための装置であって、
テクスチャリングされシェーディングされるシーンを、各々が前記シーンにおける複数のピクチャ要素を含む複数の矩形領域に分割するための手段と、
各々の矩形領域のためのオブジェクトのリストを引き出すための手段
を含み、各々のリストは、前記シーンで可視であることができるオブジェクトを含んでおり、
各々のリストから、テクスチャリングされシェーディングされる最終シーンに寄与しない全てのオブジェクトを除去するための手段と、
各々の矩形領域のための、前述のように削減されたオブジェクトのリストを用いて、各々の矩形領域をテクスチャリング及びシェーディングするための手段
を含むことを特徴とする方法。
【請求項11】
各々の矩形領域のためのオブジェクトのリストを引き出すための前記手段は、前記シーンのデプスデータ及びステンシルデータを判断するための手段を含むことを特徴とする請求項10に記載の装置。
【請求項12】
前記シーンのためのデプスデータ及びステンシルデータを引き出すための前記手段は、前記シーン内の各々のピクセルに対する最前の可視オブジェクトのためのタグのバッファをコンパイルするための手段を含むことを特徴とする請求項11に記載の装置。
【請求項13】
各々のリストから、テクスチャリングされシェーディングされる最終シーンに寄与しない全てのオブジェクトを除去するための前記手段は、前記タグバッファ内に格納されたデータを用いて前記リストを再生成するための手段を含むことを特徴とする請求項12に記載の方法。
【請求項14】
オブジェクトリストを再生成するための前記手段は、前記矩形領域の新しいオブジェクトリストの中に挿入するためのポインタを作成するための手段と、タグによって参照される各々のメモリ位置のためのフラグを設定するための手段とを含むことを特徴とする請求項13に記載の装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate


【公表番号】特表2009−541820(P2009−541820A)
【公表日】平成21年11月26日(2009.11.26)
【国際特許分類】
【出願番号】特願2009−514899(P2009−514899)
【出願日】平成19年6月12日(2007.6.12)
【国際出願番号】PCT/GB2007/002209
【国際公開番号】WO2007/144622
【国際公開日】平成19年12月21日(2007.12.21)
【出願人】(501176037)イマジネイション テクノロジーズ リミテッド (59)
【Fターム(参考)】