説明

三次元コンピュータ映像を発生するシステムのためのメモリマネージメントの改良

【課題】メモリの占有面積を減少すると共に性能を改善するメモリマネージメントシステム及び方法を提供する。
【解決手段】映像を複数の長方形エリアに細分化する手段と、各長方形エリアに対するオブジェクトデータを記憶する第1部分と深さデータを記憶する第2部分を有するメモリを準備する手段と、メモリの第1部分にオブジェクトデータを記憶する手段と、オブジェクトデータから深さデータを導出する手段と、深さデータをメモリの第2部分に記憶する手段と、置き換えるようにメモリの第1部分にオブジェクトデータをロードする手段と、記憶された深さデータを検索するステップと、記憶された深さデータから更新された深さデータを導出し、置き換えるように記憶する手段と、メモリにロードすべきオブジェクトデータがなくなるまで前記4つのステップを繰り返す手段と、表示のために、映像データ及び陰影付けデータを深さデータから導出する手段と、を備える。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、三次元コンピュータ発生映像を発生するためのシステムに使用するメモリマネージメントに係る。
【背景技術】
【0002】
本出願人のUK特許第2281682号には、各オブジェクトが、無数の表面のセットで画成されたものとして見えると考えられる多角形のための3Dレンダリングシステムが説明されている。映像が表示されるべきスクリーンの各基本的エリア(例えば、ピクセル)は、視点からこれを通して3Dスクリーンへと光線が投影される。次いで、投影される光線と各表面とが交差する位置が決定される。これらの交差から、基本的エリアにおいて交差表面が見えるかどうか決定することができる。次いで、基本的エリアは、その決定の結果に基づき表示のために陰影付けされる。
【0003】
表面との交差の計算を各々遂行できる多数のセルを備えたパイプライン形式のプロセッサにおいてシステムを具現化することができる。従って、非常に多数の表面交差を同時に計算することができる。各セルには、交差テストを遂行すべき表面を画成する係数のセットがロードされる。
【0004】
この構成に対する改良が、本出願人のUK特許第2298111号に説明されている。この文書では、映像がサブ領域又はタイルに分割され、それらのタイルを順次に処理することができる。可変のタイルサイズを使用し、完全なオブジェクトの周りに境界ボックスを投影して、その境界ボックス内に入るタイルだけ処理すればよいようにすることが提案されている。これは、適切なタイルサイズを選択するために、可視スクリーン上でのオブジェクトの分布を決定することによって行われる。次いで、種々のオブジェクトを画成する表面が、表示リストとして知られているリストに記憶され、これにより、タイルごとに同一の表面を記憶する必要性を回避している。というのは、多数の表面で作られる1つのオブジェクトが多数のタイルにおいて現れるからである。表示リスト内のオブジェクトを識別するオブジェクトポインタも記憶される。タイルごとに1つのオブジェクトポインタリストがある。タイルは、各タイル内の全てのオブジェクトが処理されるまで、前記光線投射技術を使用して順次にレンダリングすることができる。これは、特定のタイルにおいて見えないことが分かっているオブジェクトをレンダリングするために何の努力も必要としないので、有用な方法である。
【0005】
このシステムに関する更なる改良が、本出願人の国際特許出願第PCT/GP99/03707号に提案されており、ここでは、特定のオブジェクトを表示するために必要とされない境界ボックス内のタイルが、レンダリングの前に破棄される。
【0006】
図1は、上述した既存のシステムに使用される形式のプロセッサ101を示す。本質的に、3つのコンポーネントがある。タイル加速ユニット(TA)103は、タイル処理動作を遂行し、即ち適当なタイルサイズを選択し、可視スクリーンをタイルに分割し、そしてタイル情報、即ち各タイルの3Dオブジェクトデータを表示リストメモリ105へ供給する。映像合成プロセッサ(ISP)107は、表示リストメモリ内の3Dオブジェクトデータを使用して、上述した光線/表面交差テストを遂行する。これは、可視スクリーンの各基本的エリアに対する深さデータを発生する。その後、ISP107からの導出された映像データは、テクスチャ及び陰影付けプロセッサ(TSP)109へ供給され、このプロセッサは、見えるものとして決定された表面にテクスチャ及び陰影付けデータを適用し、そして映像及び陰影付けデータをフレームバッファメモリ111へ出力する。従って、表示の各基本的エリアの見掛けは、3D映像を表すように決定される。
【0007】
上述したシステムでは、レンダリングされるべきシーンの複雑さが増すにつれて問題が生じることがある、複雑なシーンは、表示リストメモリに記憶されるべきタイルごとに、より多くの3Dオブジェクトデータを必要とし、これは、記憶要件が高くなることを意味する。表示リストメモリのスペースが尽きた場合には、シーンの部分を単にレンダリングすることができず、この形式の映像崩壊は、益々受け容れられなくなる。
【0008】
この問題を解決するために、本出願人の国際特許出願第PCT/GB01/02536号は、部分的レンダリングのアイデアを提案している。システム(ISP及びTSP)の状態は、タイルのレンダリングが完了する前にメモリに記憶され、そしてこの状態は、後で、レンダリングを終了するために再ロードされる。このプロセスは、「z/フレームバッファロード及び記憶」と称される。
【0009】
スクリーンは、マクロタイルと称される多数の領域に分割され、各マクロタイルは、スクリーンの長方形領域で構成される。次いで、表示リストのメモリがブロックに分割され、それらが空き記憶リストに列挙される。次いで、空き記憶部からのブロックが、必要に応じて、マクロタイルに割り当てられる。タイル処理動作は、各ブロックの各マクロタイルに関連したデータを記憶する。(TAにより遂行されるタイル処理動作は、表示リストメモリを埋め、従って、時々、メモリ割り当てとも称される。)表示リストメモリがいっぱいになるか又はある規定のスレッシュホールドに到達すると、システムは、マクロタイルを選択し、z/フレームバッファのロードを遂行し、そしてマクロタイルのコンテンツをレンダリングした後に、z/フレームバッファ記憶動作を使用してそれをセーブする。従って、マクロタイルに対する深さデータは、それまで表示リストにロードされたデータに基づいて記憶される。このようなレンダリングが完了すると、システムは、そのマクロタイルに関連したメモリブロックを解放し、これにより、それらブロックを更なる記憶に利用できるようにする。(レンダリングプロセスは、表示リストメモリのスペースを解放するので、メモリ割り当て解除として知られている。)従って、各タイルに対するシーンは、多数のタイル処理及びそれに続く部分的レンダリングにより構成される。各部分的レンダリングは、記憶された深さデータを更新する。これは、メモリ消費の上限境界が課せられると共に、システムにより消費されるメモリ帯域巾が最小にされることを意味する。
【0010】
部分的レンダリングシステムに使用される形式のプロセッサの一実施例が図2に示されている。これは、図1の変形例であることが明らかであろう。zバッファメモリ209は、z圧縮/解凍ユニット211を経てISP207にリンクされる。これは、システムが複雑なシーンをレンダリングし、且つ表示リストメモリ205が、特定のタイルに対して処理される必要のある全ての表面を含むに充分な大きさでないときに、動作に入る。表示リストには、それが実質的にいっぱいになるまで(又は規定のスレッシュホールドに到達するまで)全てのタイルについてTA203によってデータがロードされる。しかしながら、これは、初期データの一部分を表すに過ぎない。この映像は、ISP207により、一度に1タイル、レンダリングされる。各タイルに対する出力データは、TSP213に与えられ、これは、テクスチャデータを使用して、タイルをテクスチャ処理する。それと同時に、映像データが不完全であるから、ISP207からの結果(即ち、深さデータ)は、一時的記憶のために圧縮/解凍ユニット211を経てバッファメモリ209に記憶される。次いで、残りのタイルのレンダリングは、全てのタイルがレンダリングされてフレームバッファメモリ215及びzバッファメモリ209に記憶されるまで、不完全な映像データで続けられる。
【0011】
次いで、表示リストの第1部分が破棄されて、付加的な映像データがそこに読み込まれる。処理は、ISP207によりタイルごとに順次に行われるので、zバッファメモリ209からのデータの関連部分がz圧縮/解凍ユニット18を経てロードされて、表示リストメモリ205からの新たな映像データと合成することができる。次いで、各タイルに対する新たな深さデータがTSP213へ供給され、これは、このデータをテクスチャデータと合成した後に、フレームバッファ215へ供給する。
【0012】
このプロセスは、シーンにおける全てのタイルに対して、全ての映像データがレンダリングされるまで続けられる。従って、zバッファメモリは一時的記憶部を埋め、これは、特に複雑なシーンをレンダリングするのに必要なものより小さな表示リストメモリを使用できるようにする。圧縮/解凍ユニット211は、任意であるが、小さなzバッファメモリを使用できるようにする。
【0013】
従って、国際特許出願第PCT/GB01/02536号に述べられたように、表示リストメモリがいっぱいになるか又はあるスレッシュホールドに到達すると、システムは、レンダリングすべきマクロタイルを選択して、ある表示リストメモリを解放する。前記出願において、レンダリングすべきマクロタイルの選択は、多数のファクタに依存し、例えば、ほとんどのメモリを空き記憶部へと解除するマクロタイルを選択することができる。
【発明の概要】
【発明が解決しようとする課題】
【0014】
本発明の発明者は、このシステムにおけるメモリマネージメントに対して種々の改良をなすことができると分かった。
【0015】
本発明の目的は、上述した既知のシステムに比したときに、メモリの占有面積を減少すると共に性能を改善するメモリマネージメントシステム及び方法を提供することである。本発明の更に別の目的は、同時に実行される多数のアプリケーションを取り扱うことのできるメモリマネージメントシステム及び方法を提供することである。
【課題を解決するための手段】
【0016】
本発明の第1の態様によれば、三次元コンピュータ映像を発生するシステムに使用するためのメモリマネージメントシステムにおいて、a)映像を複数の長方形エリアに細分化する手段と、b)各長方形エリアに対するオブジェクトデータを記憶する1つ又は複数の第1部分、及びオブジェクトデータから導出される深さデータを記憶する1つ又は複数の第2部分をいつでも有しているメモリと、c)メモリの1つ又は複数の第1部分にオブジェクトデータを記憶する手段と、d)オブジェクトデータから各長方形エリアに対する深さデータを導出する手段と、e)各長方形エリアに対する深さデータをメモリの1つ又は複数の第2部分に記憶する手段と、f)既存のコンテンツの少なくとも一部分に置き換えるようにメモリの1つ又は複数の第1部分のうちの1つ以上に更なるオブジェクトデータをロードする手段と、g)記憶された深さデータを検索する手段と、h)新たなオブジェクトデータ及び記憶された深さデータから各長方形エリアの各画素に対する更新された深さデータを導出し、そしてその更新された深さデータを、以前に記憶された深さデータに置き換えるように記憶する手段と、i)メモリにロードすべき更なるオブジェクトデータがなくなるまで前記特徴e)、f)、g)及びh)で機能を繰り返し遂行させる手段と、j)表示のために、映像データ及び陰影付けデータを深さデータから導出する手段と、を備えたシステムが提供される。
【0017】
従って、オブジェクトデータ及び深さデータは、単一のメモリに記憶される。従って、メモリ要件を緩和することができる。オブジェクトデータに割り当てられる1つ又は複数の部分は、前記特徴がそれらの機能を遂行するときにオブジェクトデータに要求されるメモリの量が変化するので、固定されないことに注意されたい。特定の時間に、メモリの2つ以上の部分がオブジェクトデータに割り当てられる場合には、それらの部分がメモリ内で隣接されてもよいし、又は異なる目的で割り当てられたメモリの他の部分と散在してもよい。同様に、深さデータに割り当てられる1つ又は複数の部分も、前記特徴がそれらの機能を遂行するときに深さデータに要求されるメモリの量が変化するので、固定されない。特定の時間に、メモリの2つ以上の部分が深さデータに割り当てられる場合には、それらの部分がメモリ内で隣接されてもよいし、又は異なる目的で割り当てられたメモリの他の部分と散在してもよい。
【0018】
映像を複数の長方形エリアに細分化する手段は、発生されるべき特定の映像に基づいて長方形エリアのサイズを選択するように構成できる。長方形エリアは、サイズ及び形状が等しくてもよいし又は異なってもよい。
【0019】
好ましくは、メモリの1つ又は複数の第1部分、及びメモリの1つ又は複数の第2部分は、要件に基づいてメモリの未使用部分から割り当てられ、前記特徴c)、d)、e)、f)、g)、h)及びi)がそれらの機能を遂行するときに、メモリ内における1つ又は複数の第1及び第2部分のサイズと、1つ又は複数の第1及び第2部分の位置が、動的に変化するようにする。
【0020】
好ましくは、少なくとも1つの長方形エリアの深さデータに対して1つ又は複数の第2部分が常に予約されて、メモリに記憶されたオブジェクトデータがある場合に、前記特徴d)及びe)が常にそれらの機能を遂行できるようにする。
【0021】
別の実施形態において、前記特徴e)は、深さデータを、それが記憶される前に圧縮するための手段を備え、そして少なくとも2つの長方形エリアの深さデータに対して1つ又は複数の第2部分が常に予約されて、メモリに記憶されたオブジェクトデータがある場合に、前記特徴d)及びe)が常にそれらの機能を遂行できるようにする。
【0022】
このようにメモリの適当な区分を予約することにより、更なる深さデータを導出して、メモリの1つ又は複数の第2部分にそれを記憶することが常に可能となる。しかしながら、これは、映像が複雑でも、常に発生できることを意味する。一実施形態では、予約される量は、1つのマクロタイルの各画素エリアの深さデータにとって充分なものである。別の実施形態では、予約される量は、2つのマクロタイルの各画素エリアの深さデータにとって充分なものである。
【0023】
一実施形態において、メモリの1つ又は複数の第1部分にオブジェクトデータを記憶する手段は、1つの長方形エリアのみに入るオブジェクトデータを、その長方形エリアに割り当てられたメモリのブロックに記憶し、且つ2つ以上の長方形エリアに入るオブジェクトデータを、2つ以上の長方形エリアに入るオブジェクトデータを記憶するためのグローバルリストとして割り当てられたメモリのブロックに記憶するように構成される。このケースでは、特定の長方形エリアに対する映像データ及び陰影付けデータは、そのマクロタイルに対する深さデータから及びグローバルリスト内の深さデータからも、導出される。映像データ及び陰影付けデータが特定の長方形エリアに対して導出されると、その長方形エリアの深さデータに対して割り当てられたメモリのそのブロックを、空きとマークすることができる。映像データ及び陰影付けデータが全ての長方形エリアに対して導出されると、グローバルリストも、空きとしてマークすることができる。
【0024】
又、本発明の第1の態様によれば、三次元コンピュータ映像を発生するシステム内でメモリをマネージする方法において、a)映像を複数の長方形エリアに細分化するステップと、b)各長方形エリアに対するオブジェクトデータを記憶する1つ又は複数の第1部分、及びオブジェクトデータから導出される深さデータを記憶する1つ又は複数の第2部分をいつでも有しているメモリを準備するステップと、c)メモリの1つ又は複数の第1部分にオブジェクトデータを記憶するステップと、d)オブジェクトデータから各長方形エリアに対する深さデータを導出するステップと、e)各長方形エリアに対する深さデータをメモリの1つ又は複数の第2部分に記憶するステップと、f)既存のコンテンツの少なくとも一部分に置き換えるようにメモリの1つ又は複数の第1部分のうちの1つ以上に更なるオブジェクトデータをロードするステップと、g)記憶された深さデータを検索するステップと、h)新たなオブジェクトデータ及び記憶された深さデータから各長方形エリアの各画素に対する更新された深さデータを導出し、そしてその更新された深さデータを、以前に記憶された深さデータに置き換えるように記憶するステップと、i)メモリにロードすべき更なるオブジェクトデータがなくなるまで前記ステップe)、f)、g)及びh)を繰り返すステップと、j)表示のために、映像データ及び陰影付けデータを深さデータから導出するステップと、を備えた方法も提供される。
【0025】
本発明の第1の態様の方法に関連して述べる態様は、本発明の第1の態様のシステムに適用することもでき、又、本発明の第1の態様のシステムに関連して述べる態様は、本発明の第1の態様の方法に適用することもできる。
【0026】
本発明の第2の態様によれば、三次元コンピュータ映像を発生するシステムに使用するためのメモリマネージメントシステムにおいて、a)映像を複数の長方形エリアに細分化する手段と、b)各長方形エリアに入る映像のオブジェクトに関するオブジェクトデータを記憶するメモリであって、i)各長方形エリアのオブジェクトに関するオブジェクトデータを記憶するために各長方形エリアに割り当てられる少なくとも1つの部分、及びii)2つ以上の長方形エリアに入るオブジェクトに関するオブジェクトデータを記憶するためのグローバルリストとして割り当てられる少なくとも1つの部分を含むメモリと、c)メモリにオブジェクトデータを記憶する手段と、d)各長方形エリアに対する映像データ及び陰影付けデータをオブジェクトデータから導出するための導出手段と、e)各長方形エリアに対するオブジェクトデータを、メモリの各部分から、且つ長方形エリアが少なくとも1つの他の長方形エリアに入るオブジェクトも含む場合にはグローバルリストからも、導出手段へ供給するための手段と、f)導出手段により導出された映像データ及び陰影付けデータを表示のために記憶する手段と、を備えたシステムが提供される。
【0027】
メモリの一部分をグローバルリストとして割り当てることは、2つ以上の長方形エリアに入るオブジェクトのオブジェクトデータをメモリに一度書き込むだけでよいことを意味する。これは、必要とされるメモリの量を減少すると共に、このようなオブジェクトデータを記憶するのに要する時間も短縮する。
【0028】
好ましくは、各長方形エリアに割り当てられるメモリの少なくとも一部分、及びグローバルリストとして割り当てられるメモリの少なくとも一部分が、要件に基づいてメモリの未使用部分から割り当てられて、前記特徴c)、d)及びe)がそれらの機能を遂行するときに、各長方形エリアに割り当てられるメモリの少なくとも一部分のサイズ及び位置と、グローバルリストとして割り当てられるメモリの少なくとも一部分のサイズ及び位置とが動的に変化するようにする。
【0029】
好ましくは、導出手段は、オブジェクトデータから各長方形エリアに対する深さデータを導出する手段と、その深さデータから映像データ及び陰影付けデータを導出する陰影付け手段とを含む。
【0030】
好都合なことに、グローバルリストは、2つ以上の長方形エリアに入るオブジェクトに関するオブジェクトデータと、単一の長方形エリアに入るが別の長方形エリアとの境界に接近したオブジェクトに関するオブジェクトデータも、記憶するように構成される。これは、マクロタイル間の境界の近くに入る基本的エリアに対する処理を改良する。
【0031】
しかしながら、この場合は、どのオブジェクトデータがグローバルリストに記憶され、又、どれが適当な長方形エリアに割り当てられた部分に記憶されるか判断することが必要になる。一実施形態では、長方形エリア間の境界の各側で、単一の長方形エリアに入るオブジェクトを含む連続する基本的エリアの数は、境界からの距離が増加するにつれて増加し、そして単一の長方形に入るオブジェクトを含む連続する基本的エリアの数が所定のスレッシュホールドに交差するところの基本的エリアと境界との間に入るオブジェクトのオブジェクトデータは、グローバルリストに記憶される。スレッシュホールドは、シーンにおけるオブジェクトの数を含む多数のファクタにより決定することができる。
【0032】
本発明の第2の態様によれば、三次元コンピュータ映像を発生するシステム内でメモリをマネージする方法において、a)映像を複数の長方形エリアに細分化するステップと、b)各長方形エリアに入る映像のオブジェクトに関するオブジェクトデータをメモリに記憶するステップであって、i)各長方形エリアにメモリの少なくとも一部分を割り当て、その部分に、各長方形エリアのオブジェクトに関するオブジェクトデータを記憶し、そしてii)メモリの少なくとも一部分をグローバルリストとして割り当て、そのグローバルリストに、2つ以上の長方形エリアに入るオブジェクトに関するオブジェクトデータを記憶することにより行うステップと、c)各長方形エリアのオブジェクトデータを、メモリの各部分から、及び長方形エリアが少なくとも1つの他の長方形エリアに入るオブジェクトも含む場合にはグローバルリストからも、導出手段へ供給するステップであって、該導出手段は、各長方形エリアに対する映像データ及び陰影付けデータを導出するものであるステップと、d)導出手段において映像データ及び陰影付けデータを導出するステップと、e)映像データ及び陰影付けデータを表示のために記憶するステップと、を備えた方法が提供される。
【0033】
メモリの一部分をグローバルリストとして割り当てる効果は、2つある。第1に、オブジェクトデータが一度記憶されるだけであり、これは、必要なメモリの量を減少させる。第2に、オブジェクトデータが一度記憶されるだけであるから、2つ以上の長方形エリアに入るオブジェクトに対するオブジェクトデータは、メモリに一度書き込まれるだけでよく、即ちメモリの各マクロタイル部分ではなく、グローバルリストに書き込まれるだけでよい。
【0034】
好ましくは、各長方形エリアに割り当てられたメモリの少なくとも一部分、及びグローバルリストとして割り当てられたメモリの少なくとも一部分は、要件に基づいてメモリの未使用部分から割り当てられて、前記ステップc)、d)及びe)が遂行されるときに、各長方形エリアに割り当てられるメモリの少なくとも一部分のサイズ及び位置と、グローバルリストとして割り当てられるメモリの少なくとも一部分のサイズ及び位置とが動的に変化するようにする。
【0035】
好ましくは、導出手段において映像データ及び陰影付けデータを導出する前記ステップd)は、各長方形エリアに対する深さデータをオブジェクトデータから導出し、且つ映像データ及び陰影付けデータを深さデータから導出することを含む。
【0036】
好ましくは、映像データ及び陰影付けデータが特定の長方形エリアに対して導出されると、その長方形エリアに割り当てられたメモリの少なくとも一部分が空きとマークされ、そして映像データ及び陰影付けデータが全ての長方形エリアに対して導出されると、グローバルリストとして割り当てられたメモリの少なくとも一部分も、空きとしてマークされる。グローバルリストは、映像データ及び陰影付けデータが全ての長方形エリアに対して導出されるまで空きとしてマークされないので、空きとしてマークできるまでデータの繰り返し量を減少するが長時間を要する大きなグローバルリストと、比較的迅速に空きとしてマークできるがデータの繰り返し量をあまり減少しない小さなグローバルリストとの間で妥協しなければならない。
【0037】
好ましくは、グローバルリストは、2つ以上の長方形エリアに入るオブジェクトに関するオブジェクトデータと、単一の長方形エリアに入るが別の長方形エリアとの境界に接近したオブジェクトに関するオブジェクトデータとを記憶するように構成される。
【0038】
この場合に、好ましくは、長方形エリア間の境界の各側で、単一の長方形エリアに入るオブジェクトを含む連続する基本的エリアの数は、境界からの距離が増加するにつれて増加し、そして単一の長方形に入るオブジェクトを含む連続する基本的エリアの数が所定のスレッシュホールドに交差するところの基本的エリアと境界との間に入るオブジェクトのオブジェクトデータは、グローバルリストに記憶される。
【0039】
本発明の第2の態様の方法に関連して述べる態様は、本発明の第2の態様のシステムに適用することもでき、又、本発明の第2の態様のシステムに関連して述べる態様は、本発明の第2の態様の方法に適用することもできる。
【0040】
本発明の第3の態様によれば、発生される映像が複数の長方形エリアに分割されそして各長方形エリアが複数のより小さなエリアに分割されるようにして、三次元コンピュータ映像を発生するシステムに使用するためのメモリにおいて、各長方形エリアに入るオブジェクトに対するオブジェクトデータを記憶する部分と、各小さなエリアから、その小さなエリアに入るオブジェクトに対するオブジェクトデータまでのポインタに対する部分と、を備え、発生される映像におけるオブジェクトは、三角形に分割され、オブジェクトデータは、三角形データ、頂点データ、及びそれら三角形データと頂点データとの間のポインタを含み、メモリは、システムが小さなエリアを処理してその小さなエリアにおける映像の一部分を発生するときに、システムが、各小さなエリアから、その小さなエリアに入るオブジェクトに対する三角形データまでのポインタ、及びその三角形データと頂点データとの間のポインタを使用することにより、その小さなエリアに対する頂点データを1回のフェッチでフェッチできるように構成されたメモリが提供される。
【0041】
本発明の第4の態様によれば、三次元コンピュータ映像を発生する方法において、a)映像を複数の長方形エリアMTnに細分化するステップと、b)オブジェクトデータを記憶する1つ又は複数の第1部分、及びオブジェクトデータから導出される深さデータを記憶する1つ又は複数の第2部分をいつでも有しているメモリを準備するステップと、c)各長方形エリアMTnに対するオブジェクトデータをメモリの1つ又は複数の第1部分にロードするステップであって、各長方形エリアMTnは、使用するメモリの1つ又は複数の第1部分の合計サイズが所定のスレッシュホールドを越えるまで、メモリの1つ又は複数の第1部分の各ブロックPnを使用するようなステップと、d)メモリの1つ又は複数の第1部分のブロックPnを選択し、各長方形エリアMTnに対する深さデータをMTnのオブジェクトデータから導出し、そしてMTnに対する導出された深さデータをメモリの1つ又は複数の第2部分に記憶するステップであって、前記ブロックPnは、該ステップd)が遂行された後に、i)更なるオブジェクトデータをブロックPnにロードして、既存のコンテンツの全部又は一部分に置き換えることができるか、又はii)メモリの1つ又は複数の第1部分の更なるブロックPmを選択し、各長方形エリアMTmに対する深さデータをMTmのオブジェクトデータから導出し、そしてMTmに対するその導出された深さデータをメモリの1つ又は複数の第2部分に記憶することができるように選択されるステップと、e)もし前記ステップd)のi)が満足される場合には、メモリにロードされる更なるオブジェクトデータがなくなるまで前記ステップc)及びd)を繰り返すか、又は前記ステップd)のii)が満足される場合には、メモリにロードされる更なるオブジェクトデータがなくなるまで前記ステップd)を繰り返すステップと、f)各長方形エリアMTnに対する映像データ及び陰影付けデータを、メモリの1つ又は複数の第2部分に記憶された各長方形エリアMTnに対する深さデータから導出するステップと、e)映像データ及び陰影付けデータを表示のために記憶するステップと、を備えた方法が提供される。
【0042】
プロセスがシリアル化されることになると、使用するメモリの1つ又は複数の第1部分の量が、ステップc)の後に所定のスレッシュホールドを越えるので、ステップd)における長方形エリアの選択が非常に重要となる。というのは、その長方形エリアが選択された後に、更なるオブジェクトデータをロードできるか、又は更なる深さデータを導出してそれを記憶できねばならないからである。
【0043】
この方法のステップが遂行されるにつれて、オブジェクトデータに必要なメモリの量が変化するので、オブジェクトデータに割り当てられる1つ又は複数の部分は固定されないことに注意されたい。特定の時間に、メモリの2つ以上の部分がオブジェクトデータに割り当てられる場合には、それらの部分がメモリ内で隣接されてもよいし、又は異なる目的で割り当てられたメモリの他の部分と散在してもよい。同様に、深さデータに割り当てられる1つ又は複数の部分も、この方法のステップが遂行されるときに深さデータに要求されるメモリの量が変化するので、固定されない。特定の時間に、メモリの2つ以上の部分が深さデータに割り当てられる場合には、それらの部分がメモリ内で隣接されてもよいし、又は異なる目的で割り当てられたメモリの他の部分と散在してもよい。
【0044】
ステップc)における所定のスレッシュホールドは、100%満杯でもよいし、又は別のスレッシュホールド、例えば、満杯の75%でもよい。できるだけ並列の処理を維持するためにスレッシュホールドに近付くときにステップd)を開始することができる。
【0045】
好ましくは、メモリの1つ又は複数の第1部分、及びメモリの1つ又は複数の第2部分は、要件に基づいてメモリの未使用部分から割り当てられて、前記方法のステップが遂行されるときに、メモリ内における1つ又は複数の第1及び第2部分のサイズと、1つ又は複数の第1及び第2部分の位置とが動的に変化するようにする。
【0046】
好ましくは、1つ又は複数の第2部分が深さデータに対して常に予約され、メモリの1つ又は複数の第1部分に記憶されたオブジェクトデータがある場合に、常にステップd)を遂行できるようにする。
【0047】
この場合に、メモリの1つ又は複数の予約された第2部分は、1つの長方形エリアの各基本的エリアに対する深さデータを記憶するのに少なくとも充分なものである。或いは又、メモリの1つ又は複数の予約された第2部分は、2つの長方形エリアの各基本的エリアに対する深さデータを記憶するのに少なくとも充分なものである。
【0048】
その予約される部分は、最小限、処理を続行できるものである。好ましくは、1つ又は複数の第2部分のより多くが新たな深さデータに利用できる。これは、処理を改善する。
【0049】
一実施形態では、前記ステップc)は、各長方形エリアMTnに対するオブジェクトデータをメモリの1つ又は複数の第1部分にロードすることを含み、1つの長方形エリアのみに入るオブジェクトに対するオブジェクトデータは、メモリの1つ又は複数の第1部分の各ブロックPnに記憶され、そして2つ以上の長方形エリアに入るオブジェクトに対するオブジェクトデータは、メモリの1つ又は複数の第1部分のブロックPGIに記憶される。
【0050】
一実施形態では、特定の点において、各ブロックPnに割り当てられるメモリが等しくてもよい。この場合に、ステップc)の後に、メモリのブロックPnが各長方形エリアMTnに対して同じサイズである場合には、メモリの1つ又は複数の第1部分に更なるオブジェクトデータをロードできる前に各長方形エリアに対してステップd)が遂行される。
【0051】
しかしながら、通常、メモリは、各ブロックPnに均一に割り当てられない。この場合に、ステップc)の後に、メモリのブロックPnが各長方形エリアMTnに対して同じサイズでない場合には、ステップd)で選択されるメモリの1つ又は複数の第1部分のブロックPnが最大ブロックPnとなる。
【0052】
本発明の第5の態様によれば、同時に実行される複数のアプリケーションで三次元コンピュータ映像を発生するシステムに使用するためのメモリマネージメントシステムにおいて、a)各アプリケーションの映像を複数の長方形エリアへと細分化する手段と、b)各アプリケーションに対して各長方形エリアのオブジェクトデータ及びオブジェクトデータから導出された深さデータを記憶するための少なくとも1つのメモリと、c)各アプリケーションのオブジェクトデータを少なくとも1つのメモリに記憶する手段と、d)各アプリケーションに対して各長方形エリアの深さデータをオブジェクトデータから導出する手段と、e)各アプリケーションに対して各長方形エリアの深さデータを少なくとも1つのメモリに記憶する手段と、f)各アプリケーションに対する更なるオブジェクトデータを少なくとも1つのメモリへロードして、各アプリケーションに対する既存のコンテンツに置き換えるための手段と、g)各アプリケーションに対する記憶された深さデータを検索する手段と、h)各アプリケーションに対する各長方形エリアの各画素についての更新された深さデータを、各アプリケーションに対する新たなオブジェクトデータ及び記憶された深さデータから導出すると共に、各アプリケーションに対する更新された深さデータを記憶して、各アプリケーションに対する以前に記憶された深さデータに置き換えるための手段と、i)少なくとも1つのメモリにロードすべきアプリケーションに対する更なるオブジェクトデータがなくなるまで、前記特徴e)、f)、g)及びh)がその機能を繰り返し遂行するようにさせる手段と、j)表示のために、各アプリケーションに対して映像データ及び陰影付けデータを深さデータから導出する手段と、k)各アプリケーションに対して前記特徴c)、d)、e)、f)、g)、h)及びi)によりなされる進行を記憶し更新するための手段と、を備えたメモリマネージメントシステムが提供される。
【0053】
従って、1つのシステムが、同時に2つ以上のアプリケーションを実行することができる。前記特徴k)により、システムは、各アプリケーションに対する内部状態を追跡することができる。
【0054】
一実施形態では、少なくとも1つのメモリは、アプリケーションごとに1つのメモリを含む。
【0055】
この実施形態において、各メモリは、各アプリケーションの各長方形エリアに対するオブジェクトデータを記憶するための1つ又は複数の第1部分と、各アプリケーションのオブジェクトデータから導出された深さデータを記憶するための1つ又は複数の第2部分とを備えている。
【0056】
この実施形態において、好ましくは、メモリの1つ又は複数の第1部分、及びメモリの1つ又は複数の第2部分は、要件に基づいてメモリの未使用部分から割り当てられ、前記特徴c)、d)、e)、f)、g)、h)及びi)がそれらの機能を遂行するときに、メモリ内における1つ又は複数の第1及び第2部分のサイズと、1つ又は複数の第1及び第2部分の位置が、動的に変化するようにする。
【0057】
この実施形態において、好ましくは、各アプリケーションの深さデータに対して1つ又は複数の第2部分が常に予約されて、メモリの1つ又は複数の第1部分に記憶されたオブジェクトデータがある場合に、前記特徴d)及びe)が常にそれらの機能を遂行できるようにする。
【0058】
別の実施形態において、少なくとも1つのメモリは、単一のメモリを含み、必要に応じてその部分が各アプリケーションに割り当てられる。これは、メモリを使用するより効率的な方法で、全所要メモリを減少することができる。
【0059】
この実施形態では、好ましくは、深さデータに対して単一メモリの一部分が常に予約され、メモリに記憶されたオブジェクトデータがある場合に、前記特徴d)及びe)が常にそれらの機能を遂行できるようにする。
【0060】
この場合に、好ましくは、予約される部分は、アプリケーションの数に関わらず、記憶されるべき1つの長方形エリアの各基本的エリアに対する深さデータにとって充分なものである。
【0061】
本発明の第5の態様によれば、同時に実行される複数のアプリケーションで三次元コンピュータ映像を発生する方法において、各アプリケーションに対して、a)映像を複数の長方形エリアへと細分化するステップと、b)各長方形エリアに対するオブジェクトデータ及びオブジェクトデータから導出された深さデータを記憶するための少なくとも1つのメモリを準備するステップと、c)オブジェクトデータを少なくとも1つのメモリに記憶するステップと、d)各長方形エリアの深さデータをオブジェクトデータから導出するステップと、e)各長方形エリアの深さデータを少なくとも1つのメモリに記憶するステップと、f)各アプリケーションに対する更なるオブジェクトデータを少なくとも1つのメモリへロードして、既存のコンテンツに置き換えるためのステップと、g)記憶された深さデータを検索するステップと、h)各長方形エリアの各画素についての更新された深さデータを、新たなオブジェクトデータ及び記憶された深さデータから導出すると共に、更新された深さデータを記憶して、以前に記憶された深さデータに置き換えるステップと、i)少なくとも1つのメモリにロードすべき更なるオブジェクトデータがなくなるまで、前記ステップe)、f)、g)及びh)を繰り返し遂行させるステップと、j)表示のために、映像データ及び陰影付けデータを深さデータから導出するステップと、を備え、この方法の前記ステップは、全ての複数のアプリケーションに対して1つのシステムにより遂行され、このシステムは、複数のアプリケーション間を時分割すると共に、各アプリケーションに対して前記ステップc)、d)、e)、f)、g)、h)及びi)の進行を記憶し更新する、方法も提供される。
【0062】
本発明の第5の態様の方法に関連して述べる態様は、本発明の第5の態様のシステムに適用することもでき、又、本発明の第5の態様のシステムに関連して述べる態様は、本発明の第5の態様の方法に適用することもできる。
【0063】
本発明の1つの態様に関連して述べる態様は、本発明の別の態様にも適用することができる。
【図面の簡単な説明】
【0064】
【図1】第1の既知のレンダリング及びテクスチャ処理システムの概略図である。
【図2】図1のシステムに勝る改良を与える第2の既知のレンダリング及びテクスチャ処理システムの概略図である。
【図3】本発明の実施形態によるレンダリング及びテクスチャ処理システムの概略図である。
【図4】本発明の実施形態による表示リストメモリの概略図である。
【図5】動的パラメータマネージメント(DPM)システムの1つの考えられる構成を示す概略図である。
【図6a】図6aから6fで構成され、メモリがマクロタイルに均一に割り当てられる第1の実施形態のレンダリングプロセスを示す。
【図6b】図6aから6fで構成され、メモリがマクロタイルに均一に割り当てられる第1の実施形態のレンダリングプロセスを示す。
【図6c】図6aから6fで構成され、メモリがマクロタイルに均一に割り当てられる第1の実施形態のレンダリングプロセスを示す。
【図6d】図6aから6fで構成され、メモリがマクロタイルに均一に割り当てられる第1の実施形態のレンダリングプロセスを示す。
【図6e】図6aから6fで構成され、メモリがマクロタイルに均一に割り当てられる第1の実施形態のレンダリングプロセスを示す。
【図6f】図6aから6fで構成され、メモリがマクロタイルに均一に割り当てられる第1の実施形態のレンダリングプロセスを示す。
【図7a】図7aから7gで構成され、メモリがマクロタイルに非均一に割り当てられる第2の実施形態のレンダリングプロセスを示す。
【図7b】図7aから7gで構成され、メモリがマクロタイルに非均一に割り当てられる第2の実施形態のレンダリングプロセスを示す。
【図7c】図7aから7gで構成され、メモリがマクロタイルに非均一に割り当てられる第2の実施形態のレンダリングプロセスを示す。
【図7d】図7aから7gで構成され、メモリがマクロタイルに非均一に割り当てられる第2の実施形態のレンダリングプロセスを示す。
【図7e】図7aから7gで構成され、メモリがマクロタイルに非均一に割り当てられる第2の実施形態のレンダリングプロセスを示す。
【図7f】図7aから7gで構成され、メモリがマクロタイルに非均一に割り当てられる第2の実施形態のレンダリングプロセスを示す。
【図7g】図7aから7gで構成され、メモリがマクロタイルに非均一に割り当てられる第2の実施形態のレンダリングプロセスを示す。
【図8a】本発明の実施形態により2つの同時アプリケーションを実行するように構成されたレンダリング及びテクスチャ処理システムの概略図である。
【図8b】本発明の別の実施形態により2つの同時アプリケーションを実行するように構成されたレンダリング及びテクスチャ処理システムの概略図である。
【発明を実施するための形態】
【0065】
既存のシステムは、図1及び2を参照して既に説明した。
図3以降を参照して本発明の実施形態を詳細に説明する。
【0066】
図3は、本発明の実施形態によるレンダリング及びテクスチャ処理システムの概略図である。システム301は、図2のものと同様であり、TA303、ISP311、TSP313、及びフレームバッファ315を備えている。しかしながら、この場合には、表示リストメモリ305及びZバッファメモリ307は、両方とも、パラメータメモリ309と称される一塊のメモリの一部分である。パラメータメモリ内での表示リストとZバッファとの間の割り当ては、以下で説明する。図3は、図2のように、z圧縮/解凍ユニットを示していないが、このようなユニットを含ませることもできる。
【0067】
図4は、本発明の実施形態による表示リストメモリの概略図である。表示リスト401は、以下に詳細に述べる制御ストリーム及びオブジェクトデータを含む。
【0068】
上述したように、可視スクリーン上のタイルは、マクロタイルへと一緒にグループ編成され、各マクロタイルは、多数のタイルより成るスクリーンのエリアである。マクロタイルの境界は、コンフィギュレーションレジスタにより画成される。一実施形態では、4つのマクロタイルがある。別の実施形態では、16個のマクロタイルがある。実際に、いかなる数のマクロタイルがあってもよく、又、マクロタイルは、必ずしも同じ形状及びサイズである必要はない(が、もし同じでないと、処理が潜在的により複雑になる)。マクロタイルのサイズは、メモリリサイクルのために充分な粒度を与える一方、過度に高いインフラストラクチャーコストを招くことがないように設計される。大きなマクロタイルは、低いメモリ使用及び少ないオンチップ記憶を生じるが、小さなマクロタイルは、メモリをより迅速にリサイクルできるようにし、メモリの効率を高める。
【0069】
図4において明らかなように、マクロタイル403a、403bは、タイルをグループ編成するために制御ストリーム405a、405b及びオブジェクトデータ407a、407bの両方を含む。タイル内の各オブジェクトは、表面及び頂点を有する多数の三角形として記憶される。オブジェクトデータは、マクロタイルにおける各三角形及びマクロタイルにおける各頂点に関するデータを記憶する頂点ブロックに記憶される。オブジェクトデータは、マクロタイルに対して一度だけ書き込まれる。制御ストリームデータは、むしろ、PCT/GB01/02536のオブジェクトポインタと同様である。これは、特定のタイルに割り当てられたメモリの区分から、そのタイルに現れるオブジェクトに対するオブジェクトパラメータまでのポインタを与える。従って、マクロタイル内の各タイルに対して制御ストリームデータが存在する。これは、多数のタイルに現れるオブジェクトに対する複写表面データをセーブする。特定のタイルがレンダリングされるときには、制御ストリームデータは、適切なオブジェクトデータ(三角形データ及び頂点データ)を頂点ブロックからフェッチできるようにする。既知の構成では、レンダリングのために光線/交差手順を遂行できる前に、特定のタイルに対する三角形データをフェッチし、その三角形の頂点を決定し、次いで、適切な頂点データをフェッチすることが必要であった。しかしながら、本発明のこの実施形態では、頂点ブロックにおける三角形データと適切な頂点データとの間にリンクが設けられる。従って、適切な頂点データを直接フェッチすることができる。これは重要である。というのは、2回ではなく、1回のフェッチを行うだけでよいからである。又、減少された量のデータをフェッチするだけでよい。というのは、1つの頂点が2つ以上の三角形に関連しているからである。1つの特定実施形態では、頂点ブロックが32までの頂点、64の三角形を含む。
【0070】
図4において、空き記憶装置413から要求する各マクロタイルのための表示リストメモリのブロックと同様に、グローバルリスト409もあることが明らかである。オブジェクトデータが2つ以上のマクロタイルを横断することも考えられる。この場合には、オブジェクトデータ411は、2つ以上のマクロタイルにあるオブジェクトデータしか含まないグローバルリストに割り当てられる。従って、表示リストは、マクロタイル・プラス・グローバルリストにグループ編成される。マクロタイル内の全てのオブジェクト及び制御ストリームデータは、所与のマクロタイル内に存在するタイルによってアドレスされるだけであり、2つ以上のマクロタイルに存在するオブジェクトデータは、グローバルリストにあり、このデータは、制御ストリームからアドレスすることができる。
【0071】
図4のメモリは、メモリの一端にマクロタイルブロックを有し、その後にグローバルリストを、又、その後に空き記憶装置を有するものとして示されているが、これは、単なる概略に過ぎず、メモリをどのように分割するか示すものと解釈すべきでないことに注意されたい。実際には、グローバルリストのブロック及び種々のマクロタイルのブロックは、それらがいつ要求されるかに基づき、メモリに散在させることができる。メモリの非割り当て部分は、空き記憶装置に残される。従って、特定の機能に割り当てられるメモリの量及び表示リスト内におけるそのメモリの位置は、両方とも、動的に変化する。
【0072】
改良された態様では、グローバルリストは、2つ以上のマクロタイル内に入る単純なオブジェクトデータではなく、更に別のオブジェクトデータを含む。典型的に、システムは、多数のセルを有していて隣接セルが隣接ピクセルに作用するパイプラインプロセッサを使用している。マクロタイル間の境界に接近するにつれて、1つのマクロタイルのみに入る幾つかのオブジェクトが、境界の各側にある両マクロタイルに入るオブジェクトと混合されることがある。従って、ISPは、境界の片側でマクロタイルに割り当てられたマクロタイルブロックからの読みと、グローバルリストからの読みとの間を切り換える必要があり、そしてオブジェクトの配列に基づいて、境界を横切るときに数回スイッチする必要がある。これを回避するために、グローバルリストにおける境界に接近したオブジェクトが1つのマクロタイルにしか入らなくても、それらオブジェクトに対するオブジェクトデータを記憶することが有意義である。これは、ISPがマクロタイルブロックからの読みと、グローバルリストからの読みとの間を数回スイッチするのを防止する。従って、グローバルリストは、2つ以上のマクロタイルに入るオブジェクトのオブジェクトデータを記憶し、しかも、1つのマクロタイルのみに入るが別のマクロタイルとの境界に接近しているオブジェクトに対するオブジェクトデータも記憶する。
【0073】
境界から充分に離れると、全てのオブジェクトは、そのマクロタイルのみに入り、従って、ISPは、メモリの適切なマクロタイルブロックから単純に読み取りすることができる。境界に接近するにつれて、幾つかのピクセルは、ISPがグローバルリストから読み取りするのを要求する。オブジェクトデータをメモリのマクロタイルブロックに記憶するかグローバルリストに記憶するかの判断が、1つのマクロタイルのみにオブジェクトを含む隣接ピクセルの数に基づいて行われる。境界に接近するにつれて、1つのマクロタイルのみに入るオブジェクトを含む連続するピクセルの数が減少する。連続するピクセルの数が所定の数より下がると、これらオブジェクトがそのマクロタイルにしか入らなくても、後続するオブジェクトデータ(即ち、そのピクセルと境界との間)をグローバルリストに記憶すべきかどうかの判断がなされる。同様に、境界を去るときには、1つのマクロタイルのみに入るオブジェクトを含む連続するピクセルの数が増加する。連続するピクセルの数がスレッシュホールドより上昇すると、後続するオブジェクトデータは、グローバルリストではなく、メモリの適切なマクロタイルブロックに記憶される。
【0074】
PCT/GB01/02536に説明された従来の構成は、グローバルリストを含んでおらず、各マクロタイルに割り当てられたメモリのブロックを単に含む。これは、特定のマクロタイルに関連した全てのメモリを、そのマクロタイルがレンダリングされた後に、他のマクロタイルの表示リストに影響を及ぼすことなく、解除できるようにするが、これは、特に、多数のマクロタイルをカバーする大きなオブジェクトがあるときに、データの極めて多数の複写が存在することを意味する。グローバルリストでは、グローバルリストを解放できる前に、全てのマクロタイルをレンダリングする必要があるが、グローバルリストの効果は、そのような複写をほぼ回避し、メモリ消費を減少できることである。又、2つ以上のマクロタイルに入るオブジェクトに対するオブジェクトデータは、マクロタイルごとに一度ではなく、メモリ、即ちグローバルリストに一度書き込むだけでよいので、このようなオブジェクトデータを記憶するのに要する時間量が短縮される。
【0075】
例えば、スクリーンが4つのマクロタイルに分割されるときには、メモリの50%程度を、幾つかのシーンについてグローバルリストに割り当てることができる。グローバルリストに対するメモリの最小量は、マクロタイルに対して使用されるメモリと同様でなければならない。しかしながら、グローバルリストメモリは、できるだけ制限されねばならない。というのは、上述したように、シーンにおける全てのマクロタイルをレンダリングせずにシーンからこのメモリを回復することができないからである。これについては、以下に説明する。
【0076】
図4において明らかなように、表示リストのデータは、その位置でグループ編成され、メモリは、必要に応じて各マクロタイルに割り当て、そしてこのマクロタイルがレンダリングされると、解除することができる。全てのマクロタイルがレンダリングされると、グローバルリストスペースも解除することができる。
【0077】
本発明の実施形態によれば、表示リストメモリは、動的パラメータマネージメント(DPM)システムによりマネージされる。タイル処理段階中に、メモリがシステムに割り当てられ、そしてレンダリング段階中に、このメモリが割り当て解除される。DPMシステムは、これらの段階中にメモリの割り当て及び割り当て解除をマネージし、そしてメモリが利用できない場合は、レンダリングされるべきデータをスケジュールするように働き、これは、より多くのメモリを解放する。それ故、頂点データのシーンの価値を常にタイル処理及びレンダリングすることができる。
【0078】
DPMシステムの1つの考えられる構成が図5に示されている。このDPMシステム501は、動的パラメータマネージャーDPM503と、ISP505と、マクロタイルエンジンMTE507と、タイルエンジンTE509と、メモリ511とを備えている。MTE507は、各マクロタイルに対するオブジェクトデータを発生し、それをメモリ511の適切なブロックに入れる。従って、MTE507は、表示リストメモリのオブジェクトデータ部分を制御する。TE509は、MTE507からのオブジェクトデータを使用して、各タイルに対する制御ストリームデータを発生し、そしてそれをメモリ511に入れる。従って、TE509は、表示リストメモリの制御ストリーム部分を制御する。制御ストリームメモリの消費を追跡するために、TE509は、以下に述べるテールポインタキャッシュ509aを含む。ISP505は、オブジェクトデータを使用して、深さデータを導出し、そしてそれをメモリ511のzバッファ部分に記憶する。
【0079】
図5を参照して、メモリ割り当て及び割り当て解除のプロセスを以下に説明する。これら2つの動作は、非同期で行われ、パラメータメモリの内部の一塊から割り当て及び割り当て解除する。
【0080】
DPMは、ページマネージャー503aを維持し、これは、リンクされたリスト状態を記憶し、メモリのブロックを割り当て及び割り当て解除する。リンクされたリスト状態は、メモリの特定ブロックをマクロタイルに関連付けできるようにし、そのマクロタイルがレンダリングされるときに、メモリの正しいブロックが解放されるようにする。これは、図5の503aに示されている。又、DPMは、TA、ISP、及びTSPの内部状態、即ちオブジェクトデータ、深さデータ、映像データ及び陰影付けデータの現在状態を追跡し、これは、どれほど多くのシーンが表示リストにロードされたか、及びどれほど多くがそれまでにレンダリングされたかに依存する。TAハードウェアがパイプラインの個別の部分を通してオブジェクトデータ及び制御ストリームデータを処理するときには、それがこれら2つの構造体に別々に割り当てられる。DPMは、ページをMTE及びTEに割り当て及び割り当て解除することしか関心がない。割り当てられると、そのページにはもはや関心がなく、知る必要があるのは、割り当てられたページがいつ終了して割り当て解除できるかだけである。このため、部分的レンダリングが完了しそしてそのマクロタイルに割り当てられたメモリのページを解除できるときを指示するためにフラグが使用される。次いで、全てのマクロタイルがレンダリングされると、フラグは、グローバルリストページも解除できることを指示する。
【0081】
1つの特定の実施形態では、メモリが、オブジェクトデータに対して、4096バイトチャンクで所与のマクロタイル又はグローバルリストに割り当てられ、これは、マクロタイルへオブジェクトデータを配置するマクロタイルエンジンにより必要に応じて消費される。タイルエンジンは、マクロタイルのオブジェクトデータを取り入れ、各タイルに対する制御ストリームデータを生成する。最初に、メモリの4096バイトページが制御ストリームに対してマクロタイルに割り当てられる。次いで、このページからのメモリが、タイル加速度計により要求されたときに(マクロタイル内の)所与のタイルに対して制御ストリームデータに割り当てられる。制御ストリームデータは、16個の32ビットワードブロックで割り当てられる。割り当てられたページが完全に使用されるときには、新たなページがDPMによりマクロタイル又はグローバルリストに割り当てられる。この実施例では、制御ストリームデータの第1ページが4096バイトであり且つ各タイルに対して16個の4バイトワードがある場合に、64個のタイルに対する制御ストリームデータを記憶した後に、割り当てられたページがいっぱいになる。制御ストリームデータは、(この実施例では)16ワードのブロックで割り当てられるので、この制御ストリームメモリの消費を追跡する個別のテールポインタキャッシュ509aがある。このテールポインタキャッシュは、次に利用可能な制御ストリームのアドレスを含む。1つのブロックが完全に消費されると(前記実施例では、64個のタイルの後に)、新たな制御ストリームブロックが割り当てられ、これは、テールポインタキャッシュ509aへと更新される。
【0082】
レンダリングプロセスが行われるときには、メモリが割り当て解除される。マクロタイルが完了すると、DPMは、そのマクロタイルに割り当てられたページを空き記憶装置に戻すように付加する。リンクされたリスト構造のために、これは、マクロタイルリスト値のヘッドを空き記憶装置リストのテールアドレスに書き込み、そして空きリストテールアドレスをマクロタイル空きリストアドレスへと更新する。
【0083】
従来のシステムでは、シーンがタイル処理されると、それをレンダリングすることができた。従って、タイル処理(TAによる)及びレンダリング(ISPによる)は、直列に行われた。今や、部分的レンダリングでは、ISP及びTAは、同じデータに対して同時に、即ち並列に動作しなければならない。メモリ割り当てリストを崩壊せずに、これを達成するために、TA及びISPをいじくって、それらが異なるデータ断片を取り扱うことを考える。これは、各マクロタイル及びグローバルリストに対してヘッド及びテール情報をダブルバッファすることにより行われる。これは、TAがISPと同時にデータに作用できることを意味する。というのは、それらが各々個別のヘッド及びテール情報に向けられるからである。
【0084】
ISP及びTAが並列に動作し、そしてメモリを必要に応じてTAに割り当てるに充分なメモリが常にあるのが理想的である。しかしながら、あるケースでは(例えば、マクロタイルが小さいか、又は映像が非常に複雑である)、直ちに割り当てるに充分なメモリがないことがある。
【0085】
TAの割り当てが可能でない場合には、システムは、レンダリングが進行中であるかどうか調べるチェックを行う。もしそうであれば、システムは、レンダリングのためにメモリが着実に利用できるようになるので、メモリを割り当てる試みを続ける。レンダリングにより充分なメモリが解放されると、TAの割り当てが進められる。
【0086】
最終的に、全ての保留中のレンダリングが完了し、そしてDPMは、レンダリングのマネージメントを遂行し、即ちより多くの割り当てを行えるまでにレンダリングすべきマクロタイルを選択しなければならない。
【0087】
従って、プロセス中に、利用可能なメモリスペースが減少するにつれて、性能が着実に低下する。プロセスは、最終的に、メモリスペースの量が減少するにつれて直列化され、この段階において、部分的レンダリングを遂行すべきマクロタイルの選択が非常に重要になる。PCT/GB01/02536では、表示リストメモリがあるスレッシュホールドまでいっぱいになると、より多くのメモリを解放するためにレンダリングすべきマクロタイルが選択される。レンダリングすべきマクロタイルを、解放されるメモリの量に基づいて選択することが示唆されている。どのマクロタイルをレンダリングすべきか選択するための改良された方法について以下に説明する。
【0088】
上述したように、zバッファメモリ及び表示リストメモリは、両方とも、一塊のメモリ、即ちパラメータメモリに収容される。zバッファ及び表示リストがどのように割り当てられるかを、図6及び7を参照して説明する。
【0089】
ハードウェアは、パラメータメモリの一部分をzバッファとして予約し、zバッファは、少なくともマクロタイルのサイズと同等であり、即ちマクロタイルの各ピクセルに対して深さデータを記憶できるに充分なメモリである。即ち、メモリを使い切った場合でも、部分的レンダリングを実行するために、常に、ある程度の予約されたメモリが残されている。
【0090】
不充分なメモリにより生じる部分的レンダリングから回復できるようにするため、パラメータメモリ全体がzバッファメモリより大きくなければならない。全パラメータメモリの最小量は、全zバッファメモリと1つの更に別のマクロタイルのためのスペースとの和に等しくなければならない。従って、(zバッファがいっぱいになるように)全てのマクロタイルにおいて部分的レンダリングが実行されたときでも、更に別のマクロタイルに対するより多くのオブジェクトデータを表示リストメモリへまだ挿入することができる。zバッファに必要とされるメモリが1単位(各マクロタイルに対して0.25単位)である場合に、必要とされる最小パラメータメモリは、1と0.25との和、即ち1.25単位である。
【0091】
例えば、スクリーンサイズが1024x1024ピクセルで、zバッファのフォーマットがピクセル当たり32ビットで、且つスクリーンが4つのマクロタイルに分割される場合には、約4MBの全zバッファが要求される。従って、合計パラメータメモリは、約5MB(即ち、4MBと、別のマクロタイルに対する更に1MBとの和)でなければならない。又は、スクリーンサイズが2048x2048ピクセルで、zバッファのフォーマットがピクセル当たり32ビットで、且つスクリーンが16のマクロタイルに分割される場合には、約16MBの全zバッファが要求される。従って、合計パラメータメモリは、約17MB(即ち、16MBと、別のマクロタイルに対する更に1MBとの和)でなければならない。
【0092】
(図2に示す従来の構成では、zバッファに記憶する前に圧縮が行われ、そしてzバッファから読み取りするときに解凍が行われた。このような圧縮/解凍ユニットが本発明に使用された場合には、実際に、2つのマクロタイルに等しいzバッファを予約することが必要になる。このため、新たな深さデータが記憶されるときには、手前の深さデータを解凍する前にそのデータを圧縮するスペースがなければならない。この場合には、(1つではなく)2つのマクロタイル価値のzバッファが常に予約されねばならない。)
【0093】
レンダリングすべきマクロタイルの選択は、その部分的レンダリングの後に、マクロタイルのための新たなオブジェクトデータを挿入するか、又は別の部分的レンダリングを遂行することができねばならないという必要性に基づく。これらの1つも満足されない場合には、システムが阻止され、更なる処理を行うことができない。従って、レンダリングすべきマクロタイルは、入念に選択される。
【0094】
マクロタイル選択の2つの実施例を以下に説明する。
【0095】
実施例1:図6A−6F
この第1の実施例では、メモリが各マクロタイルに均一に割り当てられる。図6aに示すように、可視スクリーンには4つのマクロタイルがある。これらマクロタイルに対するメモリの割り当てが図6bから6fに示されている。
【0096】
最初に、全てのメモリが各マクロタイルに0.25単位で割り当てられる。zバッファ部分(1つのマクロタイルのサイズ、即ち0.25に等しい)が予約される−ZB0。これは、図6aに示されている。
【0097】
予約されたzバッファZB0は、1つのマクロタイルの部分的レンダリングに使用することができる。それらは全て同じ量のメモリスペースを使用しているので、どれについても問題は生じない。マクロタイルMT3において部分的レンダリングが遂行される。これは、図6bに示す結果を与える。マクロタイルMT3は、部分的レンダリングによりZB0まで解放されるが、その解放されたスペースをより多くのzバッファ−ZB1に予約しなければならない。従って、新たなオブジェクトデータを挿入するための空きスペースはないが、ZB1を使用して別の部分的レンダリングを遂行することができる。
【0098】
従って、予約されたzバッファZB1は、別のマクロタイル、このときはMT2、の部分的レンダリングに使用することができる。部分的レンダリングが遂行され、図6cに示す結果を与える。マクロタイルMT2は、部分的レンダリングによりZB1まで解放されるが、この解放されたスペースをより多くのzバッファ−ZB2に対して予約しなければならない。従って、新たなオブジェクトデータを挿入する空きスペースはないが、ZB2を使用して別の部分的レンダリングを遂行することができる。
【0099】
従って、予約されたzバッファZB2は、別のマクロタイル、このときはMT1、の部分的レンダリングに使用することができる。部分的レンダリングが遂行され、図6dに示す結果を与える。マクロタイルMT1は、部分的レンダリングによりZB2まで解放されるが、この解放されたスペースをより多くのzバッファ−ZB3に対して予約しなければならない。従って、新たなオブジェクトデータを挿入する空きスペースはまだないが、ZB3を使用して別の部分的レンダリングを遂行することができる。
【0100】
従って、予約されたzバッファZB3は、最終的なマクロタイルMT0の部分的レンダリングに使用することができる。部分的レンダリングが遂行され、図6eに示す結果を与える。マクロタイルMT0が解放され、これで全てのマクロタイルにzバッファが割り当てられたので、それ以上のzバッファを予約する必要はない。
【0101】
従って、1つのタイルに対してより多くのオブジェクトデータを挿入するように空きスペースを使用することができる。次いで、部分的レンダリングを行い、より多くのオブジェクトデータを挿入し、等々となって、シーンが出来上がり、この時点で、パラメータメモリ及びzバッファメモリを割り当て解除することができる。
【0102】
従って、メモリは、最初に、4つのマクロタイルに均一に割り当てられるので、より多くのオブジェクトデータを挿入できる前に全てのタイルをレンダリングしなければならない。最適化として、任意の段階において、メモリが全てのマクロタイルに均一に分配されることがシステムに分かった場合には、全てのマクロタイルを直ちにレンダリングすることができる。
【0103】
図6に示すケースは、部分的レンダリングにより解放できる最大メモリが0.25単位であるから最悪のシナリオである。メモリがマクロタイルに均一に割り当てられない他のケースでは、部分的レンダリングで、常に、より多くのメモリスペースを解放することができる。
【0104】
実施例2:図7A−7G
この第2の実施例では、メモリが各マクロタイルに非均一に割り当てられる。このケースでは、メモリがいっぱいになったとき、最も量の多いメモリが割り当てられているマクロタイルがレンダリングのために選択される。これは、より一般的なケースであり、図7a−7gに示されている。図7aは、スクリーンにおけるマクロタイルを示し、一方、図7b−7gは、各マクロタイルに対するメモリの使用を示す。映像についてのマクロタイルは、サイズが等しいが、メモリの割り当ては、各マクロタイルにおけるオブジェクトデータの量に基づいて異なる。
【0105】
最初に、全てのメモリは、0.4375単位でマクロタイルMT2に、0.25単位でマクロタイルMT0に、0.1875単位でマクロタイルMT3にそして0.125単位でマクロタイルMT1に割り当てられる。zバッファ部分(スクリーン上の1つのマクロタイルのサイズ、即ち0.25に等しい)が予約される−ZB0。これは、図7bに示されている。
【0106】
予約されたzバッファZB0は、1つのマクロタイルの部分的レンダリングに使用することができる。最大量のメモリが割り当てられているのでマクロタイルMT2が選択される。マクロタイルMT2において部分的レンダリングが遂行されると、解放されたスペースの0.25単位がzバッファ−ZB1として予約されねばならないが、残りのスペースは、より多くのオブジェクトデータのために空いている。これは、図7cに示されている。
【0107】
次いで、メモリがいっぱいになるまで、MT2のより多くのオブジェクトデータがその空きスペースにロードされる。これは、図7dに示されている。
【0108】
次いで、予約されたzバッファZB1は、マクロタイルMT1の部分的レンダリングに使用することができる。というのは、そのマクロタイルは、現在、最大量のメモリが割り当てられているからである。部分的レンダリングがMT1において遂行されると、それにより解放されるスペースを、より多くのzバッファ−ZB2に予約しなければならない。従って、より多くのオブジェクトデータを挿入するための空きスペースがない。これは、図7eに示されている。
【0109】
MT2にはZB0が既に割り当てられているので、MT2において別の部分的レンダリングを遂行することができる。これは、0.1875の空きスペースを解放する。又、ZB2は、MT3の部分的レンダリングに使用することができる。合計すると、これは、0.375のスペースを解放し、そのうちの0.25は、zバッファZB3として予約されねばならない。これは、図7fに示されている。
【0110】
この段階において、解放されたスペースを、MT0、MT2又はMT3に対するより多くのオブジェクトデータに使用することができ、この場合、部分的レンダリングは、MT0、MT2及びMT3に割り当てられたzバッファを使用して行われる。又は、解放されたスペースは、MT1に対するより多くのオブジェクトデータに使用される。このケースでは、マクロタイルMT1の部分的レンダリングにZB3が使用される。これは、図7gに示されている。マクロタイルMT1が解放され、全てのマクロタイルに、今や、zバッファが割り当てられたので、より多くのzバッファを予約する必要がなくなる。
【0111】
図7に示す実施例は、図6の実施例より取り扱いが容易である。というのは、マクロタイルにメモリが均一に割り当てられていないので、第1の部分的レンダリングの後に0.25単位より大きなメモリが解放されるからである。
【0112】
図6及び7は、メモリの残りが少なくなって、プロセスが効果的に直列化されそして各段階においてレンダリングするためのマクロタイルの選択が非常に重要になったときのレンダリングマネージメントの2つの実施例を示す。これら2つのケースは、1つのマクロタイルに等価な最小量のzバッファが常に予約される状態で、プロセスを継続できることを示している。
【0113】
グローバルリストメモリは、シーンにおける全てのマクロタイルをレンダリングせずにシーンからこのメモリを回復できないので、できるだけ制限されねばならないことを上述した。グローバルリストは、上述したzバッファのサイズx1.25の最小要件に加えて割り当てられる余計なメモリに制限される。これが、マクロタイルメモリの50%である場合には、合計最小メモリ要件は、zバッファのサイズの1.75である(即ち、表示リストメモリについて1単位、zバッファについて予約される0.25、及びグローバルリストについて0.5)。
【0114】
しかしながら、任意の複雑なシーンをレンダリングできるためには、グローバルオブジェクトバッファを回復できねばならず、従って、この具現化では、複数のマクロタイルをそれらのグローバルオブジェクトリストに関して分割できるようにし、次いで、全てのマクロタイルを順次にレンダリングすることによりこれを可能にする。分割は、全てのマクロタイルに対して新たなコンテクストを生成し、そして新たなコンテクストへのレンダリングを続けることにより、達成される。これと並列に、タイル化されたデータが処理されて、システムへ解放されて戻される。この方法は、パイプラインの割り当て及び割り当て解除部分の両方をアクティブのままにすることを許す。
【0115】
本発明の特定の実施形態では、装置は、4kBページ又はブロックに分割された256MBまでのパラメータメモリと、シーン当たり16までのマクロタイル及び1つのグローバルリストとをサポートする。
【0116】
上述したシステムは、2つ以上のアプリケーションを同時に実行するように使用できる。例えば、2つのウインドウ、即ちアプリケーションを自分のPCスクリーン上にオープンさせた場合には、同じハードウェアを使用して、両アプリケーションに対する映像データを発生することができる。図8aは、図3のハードウェアを使用して2つのアプリケーションに対する映像データを発生するための第1の構成を示す。図8bは、図3のハードウェアを使用して2つのアプリケーションに対する映像データを発生するための第2の構成を示す。図8a及び8bは、3つ以上のアプリケーションへと極めて容易に拡張することができる。
【0117】
図8aのシステム801は、TA801と、ISP811と、TSP813と、フレームバッファ815とを備えている。しかしながら、図3のシステムとは対照的に、TA803及びISP811は、2つの個別のメモリにアクセスすることができる。第1のメモリ809Aは、第1のアプリケーションに対するものであり、第1のアプリケーション用の表示リストメモリ805Aと、第1のアプリケーション用のzバッファメモリ807Aとを含む。第2のメモリ809Bは、第2のアプリケーションに対するものであり、第2のアプリケーション用の表示リストメモリ805Bと、第2のアプリケーション用のzバッファメモリ807Bとを含む。
【0118】
このシステムは、上述した図3の構成と全く同様に動作する。各アプリケーションへのシステムの割り当ては、時分割多重(TDM)によるか又は別の方法により割り当てることができる。
【0119】
図8bのシステム801’は、TA801’と、ISP811’と、TSP813’と、フレームバッファ815’とを備えている。しかしながら、図8aのシステムとは対照的に、2つのアプリケーションのためのメモリは、一塊のメモリ805に収容される。これは、必要なメモリを減少させる。一塊のメモリ805は、メモリを必要に応じて各アプリケーションに割り当てる。図8bにおいて、メモリ809A’の若干は、第1のアプリケーションに割り当てられる。メモリ809A’のその部分は、表示リストメモリ及びzバッファメモリを含む。メモリ809B’の若干は、第2のアプリケーションに割り当てられる。メモリ809B’のその部分は、表示リストメモリ及びzバッファメモリを含む。まだ割り当てられないメモリは、空き記憶装置807に残される。
【0120】
又、図8bのシステムは、上述した図3の構成と全く同様に動作する。各アプリケーションへのシステムの割り当ては、時分割多重(TDM)によるか又は別の方法により割り当てることができる。メモリは、必要に応じて各アプリケーションに割り当てられるので、メモリは、図8aの場合より効率的に使用される。
【0121】
上述した両方の実施例において、実際に、同じハードウェアを使用して2つ以上のアプリケーションを実行する場合に、システムは、アプリケーションごとに内部状態を記憶する何らかの手段を含まねばならない。内部状態とは、そのアプリケーションに対するTA及びISPの現在状態、即ち現在記憶されているオブジェクトデータ、深さデータ、映像データ及び陰影付けデータである。これは、特定のアプリケーションに対してオブジェクトデータ、レンダリング、等を記憶する際にそれまでに生じた進行の記録を与える。従って、多数のアプリケーション間でハードウェアがスワップされるときには、各アプリケーションに到達したときからどこで開始するかが分かる。
【0122】
上述した実施例では、1つのアプリケーションのみが実行される状態で、任意の複雑なシーンを発生できるようにするため、1つのマクロタイルの深さデータに充分なメモリを予約することが常に必要であることが注目された。従って、2つ以上のアプリケーションが実行されるときには、このルールがどのように適用されるであろうか?
【0123】
先ず、各アプリケーションのメモリが別々である図8aの実施例について考える。このケースでは、各アプリケーションのメモリが1つのマクロタイルについてzバッファを予約することが必要である。即ち、合計すれば、同時に実行されるn個のアプリケーションに対して、n個のメモリがあり、そしてこれらn個のメモリの各々にzバッファの予約部分がある。
【0124】
次いで、多数のアプリケーションに対するメモリが一塊のメモリに収容される図8bの実施例について考える。このケースでは、アプリケーションの全数に関わらず、1つのマクロタイルに対するzバッファを予約するだけでよい。これは、特定の時間に1つの部分的レンダリングしか行われないからであり、従って、予約された同じメモリスペースを全てのアプリケーションに使用することができる。これは、図8bの構成の更なる効果である。
【符号の説明】
【0125】
303:TA
305:表示リストメモリ
307:Zバッファメモリ
311:ISP
313:TSP
315:フレームバッファメモリ
401:表示リスト
403a、403b:マクロタイル
405a、405b:制御ストリーム
407a、407b:オブジェクトデータ
409:グローバルリスト
413:空き記憶装置
501:DPMシステム
503:動的パラメータマネージャーDPM
505:ISP
507:マクロタイルエンジンMTE
509:タイルエンジンTE
511:メモリ

【特許請求の範囲】
【請求項1】
三次元コンピュータ映像を発生するシステムに使用するためのメモリマネージメントシステムにおいて、
a)映像を複数の長方形エリアに細分化する手段と、
b)各長方形エリアに対するオブジェクトデータを記憶する1つ又は複数の第1部分、及び前記オブジェクトデータから導出される深さデータを記憶する1つ又は複数の第2部分をいつでも有しているメモリと、
c)前記メモリの1つ又は複数の第1部分にオブジェクトデータを記憶する手段と、
d)前記オブジェクトデータから各長方形エリアに対する深さデータを導出するための手段と、
e)各長方形エリアに対する深さデータを前記メモリの1つ又は複数の第2部分に記憶する手段と、
f)既存のコンテンツの少なくとも一部分に置き換えるように前記メモリの1つ又は複数の第1部分のうちの1つ以上に更なるオブジェクトデータをロードする手段と、
g)前記記憶された深さデータを検索する手段と、
h)新たなオブジェクトデータ及び記憶された深さデータから各長方形エリアの各画素に対する更新された深さデータを導出し、そしてその更新された深さデータを、以前に記憶された深さデータに置き換えるように記憶する手段と、
i)前記メモリにロードすべき更なるオブジェクトデータがなくなるまで前記特徴e)、f)、g)及びh)で機能を繰り返し遂行させる手段と、
j)表示のために、映像データ及び陰影付けデータを前記深さデータから導出するための手段と、
を備えたメモリマネージメントシステム。
【請求項2】
前記メモリの1つ又は複数の第1部分、及び前記メモリの1つ又は複数の第2部分は、要件に基づいて前記メモリの未使用部分から割り当てられ、前記特徴c)、d)、e)、f)、g)、h)及びi)がそれらの機能を遂行するときに、前記メモリ内における1つ又は複数の第1及び第2部分のサイズと、1つ又は複数の第1及び第2部分の位置とが、動的に変化するようにする、請求項1に記載のメモリマネージメントシステム。
【請求項3】
前記少なくとも1つの長方形エリアの深さデータに対して1つ又は複数の第2部分が常に予約されて、前記メモリに記憶されたオブジェクトデータが存在する場合に、前記特徴d)及びe)が常にそれらの機能を遂行できるようにする、請求項1又は2に記載のメモリマネージメントシステム。
【請求項4】
メモリの1つ又は複数の第1部分にオブジェクトデータを記憶する前記手段は、1つの長方形エリアのみに入るオブジェクトデータを、その長方形エリアに割り当てられたメモリのブロックに記憶し、且つ2つ以上の長方形エリアに入るオブジェクトデータを、2つ以上の長方形エリアに入るオブジェクトデータを記憶するためのグローバルリストとして割り当てられたメモリのブロックに記憶するように構成される、請求項1から3のいずれかに記載のメモリマネージメントシステム。
【請求項5】
三次元コンピュータ映像を発生するシステム内でメモリをマネージする方法において、
a)映像を複数の長方形エリアに細分化するステップと、
b)各長方形エリアに対するオブジェクトデータを記憶する1つ又は複数の第1部分、及びオブジェクトデータから導出される深さデータを記憶する1つ又は複数の第2部分をいつでも有しているメモリを準備するステップと、
c)前記メモリの1つ又は複数の第1部分に前記オブジェクトデータを記憶するステップと、
d)前記オブジェクトデータから各長方形エリアに対する深さデータを導出するステップと、
e)各長方形エリアに対する深さデータを前記メモリの1つ又は複数の第2部分に記憶するステップと、
f)既存のコンテンツの少なくとも一部分に置き換えるように前記メモリの1つ又は複数の第1部分のうちの1つ以上に更なるオブジェクトデータをロードするステップと、
g)記憶された深さデータを検索するステップと、
h)新たなオブジェクトデータ及び記憶された深さデータから各長方形エリアの各画素に対する更新された深さデータを導出し、そしてその更新された深さデータを、以前に記憶された深さデータに置き換えるように記憶するステップと、
i)前記メモリにロードすべき更なるオブジェクトデータがなくなるまで前記ステップe)、f)、g)及びh)を繰り返すステップと、
j)表示のために、映像データ及び陰影付けデータを前記深さデータから導出するステップと、
を備えた方法。
【請求項6】
三次元コンピュータ映像を発生するシステムに使用するためのメモリマネージメントシステムにおいて、
a)映像を複数の長方形エリアに細分化する手段と、
b)各長方形エリアに入る映像のオブジェクトに関するオブジェクトデータを記憶するメモリであって、i)各長方形エリアのオブジェクトに関するオブジェクトデータを記憶するために各長方形エリアに割り当てられる少なくとも1つの部分、及びii)2つ以上の長方形エリアに入るオブジェクトに関するオブジェクトデータを記憶するためのグローバルリストとして割り当てられる少なくとも1つの部分を含むメモリと、
c)前記メモリにオブジェクトデータを記憶する手段と、
d)各長方形エリアに対する映像データ及び陰影付けデータを前記オブジェクトデータから導出するための導出手段と、
e)各長方形エリアに対するオブジェクトデータを、メモリの各部分から、且つ長方形エリアが少なくとも1つの他の長方形エリアに入るオブジェクトも含む場合にはグローバルリストからも、前記導出手段へ供給するための手段と、
f)前記導出手段により導出された映像データ及び陰影付けデータを表示のために記憶する手段と、
を備えたメモリマネージメントシステム。
【請求項7】
各長方形エリアに割り当てられるメモリの少なくとも一部分、及びグローバルリストとして割り当てられるメモリの少なくとも一部分が、要件に基づいてメモリの未使用部分から割り当てられて、前記特徴c)、d)及びe)がそれらの機能を遂行するときに、各長方形エリアに割り当てられるメモリの少なくとも一部分のサイズ及び位置と、グローバルリストとして割り当てられるメモリの少なくとも一部分のサイズ及び位置とが動的に変化するようにする、請求項6に記載のメモリマネージメントシステム。
【請求項8】
前記導出手段は、オブジェクトデータから各長方形エリアに対する深さデータを導出する手段と、その深さデータから映像データ及び陰影付けデータを導出する陰影付け手段とを含む、請求項6又は7に記載のメモリマネージメントシステム。
【請求項9】
前記グローバルリストは、2つ以上の長方形エリアに入るオブジェクトに関するオブジェクトデータと、単一の長方形エリアに入るが別の長方形エリアとの境界に接近したオブジェクトに関するオブジェクトデータも、記憶するように構成される、請求項6から8のいずれかに記載のメモリマネージメントシステム。
【請求項10】
長方形エリア間の境界の各側で、単一の長方形エリアに入るオブジェクトを含む連続する基本的エリアの数は、境界からの距離が増加するにつれて増加し、そして単一の長方形に入るオブジェクトを含む連続する基本的エリアの数が所定のスレッシュホールドに交差するところの基本的エリアと境界との間に入るオブジェクトのオブジェクトデータは、グローバルリストに記憶される、請求項8に記載のメモリマネージメントシステム。
【請求項11】
三次元コンピュータ映像を発生するシステム内でメモリをマネージする方法において、
a)映像を複数の長方形エリアに細分化するステップと、
b)各長方形エリアに入る映像のオブジェクトに関するオブジェクトデータをメモリに記憶するステップであって、i)各長方形エリアにメモリの少なくとも一部分を割り当て、その部分に、各長方形エリアのオブジェクトに関するオブジェクトデータを記憶し、そしてii)メモリの少なくとも一部分をグローバルリストとして割り当て、そのグローバルリストに、2つ以上の長方形エリアに入るオブジェクトに関するオブジェクトデータを記憶することによりそれを行うステップと、
c)各長方形エリアのオブジェクトデータを、メモリの各部分から、及び長方形エリアが少なくとも1つの他の長方形エリアに入るオブジェクトも含む場合にはグローバルリストからも、導出手段へ供給するステップであって、該導出手段は、各長方形エリアに対する映像データ及び陰影付けデータを導出するものであるステップと、
d)前記導出手段において映像データ及び陰影付けデータを導出するステップと、
e)映像データ及び陰影付けデータを表示のために記憶するステップと、
を備えた方法。
【請求項12】
各長方形エリアに割り当てられたメモリの少なくとも一部分、及びグローバルリストとして割り当てられたメモリの少なくとも一部分は、要件に基づいてメモリの未使用部分から割り当てられて、前記ステップc)、d)及びe)が遂行されるときに、各長方形エリアに割り当てられるメモリの少なくとも一部分のサイズ及び位置と、グローバルリストとして割り当てられるメモリの少なくとも一部分のサイズ及び位置とが動的に変化するようにする、請求項11に記載の方法。
【請求項13】
導出手段において映像データ及び陰影付けデータを導出する前記ステップd)は、各長方形エリアに対する深さデータをオブジェクトデータから導出し、且つ映像データ及び陰影付けデータを深さデータから導出することを含む、請求項11又は12に記載の方法。
【請求項14】
前記映像データ及び陰影付けデータが特定の長方形エリアに対して導出されると、その長方形エリアに割り当てられたメモリの少なくとも一部分が空きとマークされ、そして前記映像データ及び陰影付けデータが全ての長方形エリアに対して導出されると、グローバルリストとして割り当てられたメモリの少なくとも一部分も、空きとしてマークされる、請求項11から13のいずれかに記載の方法。
【請求項15】
前記グローバルリストは、2つ以上の長方形エリアに入るオブジェクトに関するオブジェクトデータと、単一の長方形エリアに入るが別の長方形エリアとの境界に接近したオブジェクトに関するオブジェクトデータとを記憶するように構成される、請求項11から14のいずれかに記載のメモリマネージメントシステム。
【請求項16】
長方形エリア間の境界の各側で、単一の長方形エリアに入るオブジェクトを含む連続する基本的エリアの数は、境界からの距離が増加するにつれて増加し、そして単一の長方形に入るオブジェクトを含む連続する基本的エリアの数が所定のスレッシュホールドに交差するところの基本的エリアと境界との間に入るオブジェクトのオブジェクトデータは、グローバルリストに記憶される、請求項15に記載のメモリマネージメントシステム。
【請求項17】
発生される映像が複数の長方形エリアに分割されそして各長方形エリアが複数のより小さなエリアに分割されるようにして、三次元コンピュータ映像を発生するシステムに使用するためのメモリにおいて、
各長方形エリアに入るオブジェクトに対するオブジェクトデータを記憶する部分と、
各小さなエリアから、その小さなエリアに入るオブジェクトに対するオブジェクトデータまでのポインタに対する部分と、
を備え、発生される映像におけるオブジェクトは、三角形に分割され、オブジェクトデータは、三角形データ、頂点データ、及びそれら三角形データと頂点データとの間のポインタを含み、
前記メモリは、システムが小さなエリアを処理してその小さなエリアにおける映像の一部分を発生するときに、システムが、各小さなエリアから、その小さなエリアに入るオブジェクトに対する三角形データまでのポインタ、及びその三角形データと頂点データとの間のポインタを使用することにより、その小さなエリアに対する頂点データを1回のフェッチでフェッチできるように構成された、メモリ。
【請求項18】
三次元コンピュータ映像を発生する方法において、
a)映像を複数の長方形エリアMTnに細分化するステップと、
b)オブジェクトデータを記憶する1つ又は複数の第1部分、及びオブジェクトデータから導出される深さデータを記憶する1つ又は複数の第2部分をいつでも有しているメモリを準備するステップと、
c)各長方形エリアMTnに対するオブジェクトデータをメモリの1つ又は複数の第1部分にロードするステップであって、各長方形エリアMTnは、使用するメモリの1つ又は複数の第1部分の合計サイズが所定のスレッシュホールドを越えるまで、メモリの1つ又は複数の第1部分の各ブロックPnを使用するようなステップと、
d)メモリの1つ又は複数の第1部分のブロックPnを選択し、各長方形エリアMTnに対する深さデータをMTnのオブジェクトデータから導出し、そしてMTnに対する導出された深さデータをメモリの1つ又は複数の第2部分に記憶するステップであって、前記ブロックPnは、該ステップd)が遂行された後に、i)更なるオブジェクトデータをブロックPnにロードして、既存のコンテンツの全部又は一部分に置き換えることができるか、又はii)メモリの1つ又は複数の第1部分の更なるブロックPmを選択し、各長方形エリアMTmに対する深さデータをMTmのオブジェクトデータから導出し、そしてMTmに対するその導出された深さデータをメモリの1つ又は複数の第2部分に記憶することができるように選択されるステップと、
e)もし前記ステップd)のi)が満足される場合には、メモリにロードされる更なるオブジェクトデータがなくなるまで前記ステップc)及びd)を繰り返すか、又は前記ステップd)のii)が満足される場合には、メモリにロードされる更なるオブジェクトデータがなくなるまで前記ステップd)を繰り返すステップと、
f)各長方形エリアMTnに対する映像データ及び陰影付けデータを、メモリの1つ又は複数の第2部分に記憶された各長方形エリアMTnに対する深さデータから導出するステップと、
e)映像データ及び陰影付けデータを表示のために記憶するステップと、
を備えた方法。
【請求項19】
前記メモリの1つ又は複数の第1部分、及び前記メモリの1つ又は複数の第2部分は、要件に基づいてメモリの未使用部分から割り当てられて、前記方法のステップが遂行されるときに、メモリ内における1つ又は複数の第1及び第2部分のサイズと、1つ又は複数の第1及び第2部分の位置とが動的に変化するようにする、請求項18に記載の方法。
【請求項20】
1つ又は複数の第2部分が深さデータに対して常に予約され、前記メモリに記憶されたオブジェクトデータがある場合に、常に前記ステップd)を遂行できるようにする、請求項18又は19に記載の方法。
【請求項21】
1つ又は複数の前記予約された第2部分は、1つの長方形エリアの各基本的エリアに対する深さデータを記憶するのに少なくとも充分なものである、請求項20に記載の方法。
【請求項22】
1つ又は複数の前記予約された第2部分は、2つの長方形エリアの各基本的エリアに対する深さデータを記憶するのに少なくとも充分なものである、請求項20に記載の方法。
【請求項23】
前記ステップc)は、各長方形エリアMTnに対するオブジェクトデータを前記メモリの1つ又は複数の第1部分にロードすることを含み、1つの長方形エリアのみに入るオブジェクトに対するオブジェクトデータは、前記メモリの1つ又は複数の第1部分の各ブロックPnに記憶され、そして2つ以上の長方形エリアに入るオブジェクトに対するオブジェクトデータは、前記メモリの1つ又は複数の第1部分のブロックPGIに記憶される、請求項18から22のいずれかに記載の方法。
【請求項24】
前記ステップc)の後に、メモリのブロックPnが各長方形エリアMTnに対して同じサイズである場合には、前記メモリの1つ又は複数の第1部分に更なるオブジェクトデータをロードできる前に各長方形エリアに対して前記ステップd)が遂行される、請求項18から23のいずれかに記載の方法。
【請求項25】
前記ステップc)の後に、メモリのブロックPnが各長方形エリアMTnに対して同じサイズでない場合には、前記ステップd)で選択される前記メモリの1つ又は複数の第1部分のブロックPnが最大ブロックPnとなる、請求項18から23のいずれかに記載の方法。
【請求項26】
同時に実行される複数のアプリケーションで三次元コンピュータ映像を発生するシステムに使用するためのメモリマネージメントシステムにおいて、
a)各アプリケーションの映像を複数の長方形エリアへと細分化する手段と、
b)各アプリケーションに対して各長方形エリアのオブジェクトデータ及びオブジェクトデータから導出された深さデータを記憶するための少なくとも1つのメモリと、
c)各アプリケーションのオブジェクトデータを前記少なくとも1つのメモリに記憶する手段と、
d)各アプリケーションに対して各長方形エリアの深さデータをオブジェクトデータから導出する手段と、
e)各アプリケーションに対して各長方形エリアの深さデータを前記少なくとも1つのメモリに記憶する手段と、
f)各アプリケーションに対する更なるオブジェクトデータを前記少なくとも1つのメモリにロードして、各アプリケーションに対する既存のコンテンツに置き換えるための手段と、
g)各アプリケーションに対する前記記憶された深さデータを検索する手段と、
h)各アプリケーションに対する各長方形エリアの各画素についての更新された深さデータを、各アプリケーションに対する新たなオブジェクトデータ及び記憶された深さデータから導出すると共に、各アプリケーションに対する更新された深さデータを記憶して、各アプリケーションに対する以前に記憶された深さデータに置き換えるための手段と、
i)少なくとも1つのメモリにロードすべきアプリケーションに対する更なるオブジェクトデータがなくなるまで、前記特徴e)、f)、g)及びh)がその機能を繰り返し遂行するようにさせる手段と、
j)表示のために、各アプリケーションに対して映像データ及び陰影付けデータを深さデータから導出する手段と、
k)各アプリケーションに対して前記特徴c)、d)、e)、f)、g)、h)及びi)によりなされる進行を記憶し更新するための手段と、
を備えたメモリマネージメントシステム。
【請求項27】
前記少なくとも1つのメモリは、アプリケーションごとに1つのメモリを含む、請求項26に記載のメモリマネージメントシステム。
【請求項28】
各メモリは、各アプリケーションの各長方形エリアに対するオブジェクトデータを記憶するための1つ又は複数の第1部分と、各アプリケーションのオブジェクトデータから導出された深さデータを記憶するための1つ又は複数の第2部分とを備えた、請求項27に記載のメモリマネージメントシステム。
【請求項29】
前記少なくとも1つのメモリは、単一のメモリを含み、必要に応じてその部分が各アプリケーションに割り当てられる、請求項26に記載のメモリマネージメントシステム。
【請求項30】
深さデータに対して単一メモリの一部分が常に予約されて、メモリに記憶されたオブジェクトデータがある場合に、前記特徴d)及びe)が常にそれらの機能を遂行できるようにする、請求項29に記載のメモリマネージメントシステム。
【請求項31】
前記予約される部分は、アプリケーションの数に関わらず、記憶されるべき1つの長方形エリアの各基本的エリアに対する深さデータにとって充分なものである、請求項30に記載のメモリマネージメントシステム。
【請求項32】
同時に実行される複数のアプリケーションで三次元コンピュータ映像を発生する方法において、各アプリケーションに対して、
a)映像を複数の長方形エリアへと細分化するステップと、
b)各長方形エリアに対するオブジェクトデータ及びオブジェクトデータから導出された深さデータを記憶するための少なくとも1つのメモリを準備するステップと、
c)オブジェクトデータを前記少なくとも1つのメモリに記憶するステップと、
d)各長方形エリアの深さデータをオブジェクトデータから導出するステップと、
e)各長方形エリアの深さデータを少なくとも1つのメモリに記憶するステップと、
f)各アプリケーションに対する更なるオブジェクトデータを前記少なくとも1つのメモリへロードして、既存のコンテンツに置き換えるためのステップと、
g)前記記憶された深さデータを検索するステップと、
h)各長方形エリアの各画素についての更新された深さデータを、新たなオブジェクトデータ及び記憶された深さデータから導出すると共に、その更新された深さデータを記憶して、以前に記憶された深さデータに置き換えるステップと、
i)前記少なくとも1つのメモリにロードすべき更なるオブジェクトデータがなくなるまで、前記ステップe)、f)、g)及びh)を繰り返し遂行させるステップと、
j)表示のために、映像データ及び陰影付けデータを深さデータから導出するステップと、
を備え、この方法の前記ステップは、全ての複数のアプリケーションに対して1つのシステムにより遂行され、このシステムは、複数のアプリケーション間を時分割すると共に、各アプリケーションに対して前記ステップc)、d)、e)、f)、g)、h)及びi)の進行を記憶し更新するようにした、方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6a】
image rotate

【図6b】
image rotate

【図6c】
image rotate

【図6d】
image rotate

【図6e】
image rotate

【図6f】
image rotate

【図7a】
image rotate

【図7b】
image rotate

【図7c】
image rotate

【図7d】
image rotate

【図7e】
image rotate

【図7f】
image rotate

【図7g】
image rotate

【図8a】
image rotate

【図8b】
image rotate


【公開番号】特開2012−198931(P2012−198931A)
【公開日】平成24年10月18日(2012.10.18)
【国際特許分類】
【出願番号】特願2012−137478(P2012−137478)
【出願日】平成24年6月19日(2012.6.19)
【分割の表示】特願2009−529753(P2009−529753)の分割
【原出願日】平成19年9月13日(2007.9.13)
【出願人】(501176037)イマジネイション テクノロジーズ リミテッド (59)
【Fターム(参考)】