(57)【特許請求の範囲】
【請求項１】
三次元コンピュータイメージを生成する方法であって、コンピュータ及びこれを動作させるソフトウェアによって実行される段階として、
ａ）イメージを複数のタイルに細分化する段階と、
ｂ）前記複数のタイルを、複数のタイルが含まれる複数のマクロタイルにグループ化する段階と、
ｃ）前記複数のマクロタイルのためのディスプレイリストメモリの閾値であって、満杯のディスプレイリストメモリよりも小さい閾値を定義する段階と、
ｄ）前記閾値に達するまで、各々のマクロタイルのオブジェクトデータを前記ディスプレイリストメモリにロードする段階と、
ｅ）前記オブジェクトデータからマクロタイル内の各々のタイルの画素のイメージデータをもたらし及びシェイディングデータを適用する段階と、ここで、当該マクロタイルに関連するオブジェクトデータの量がディスプレイリストメモリの前記閾値を超える場合には、各々のタイルのオブジェクトデータは、マクロタイルの部分レンダリングのシーケンスによって処理され、
ｆ）前記部分レンダリングによって生成された前記イメージデータ及びシェイディングデータをローカルメモリに記憶する段階と、
ｇ）前記マクロタイルの前記部分レンダリングによって解放されたディスプレイリストメモリを、更なる使用のために利用可能に維持する段階と、
ｈ）各々のマクロタイルへの追加のオブジェクトデータを前記維持されている前記ディスプレイリストメモリにロードして既存の内容と置き換える段階と、
ｉ）前記部分レンダリングによって生成され、前記ローカルメモリに記憶されたイメージデータ及びシェイディングデータをロードする段階と、
ｊ）前記ディスプレイリストメモリに記憶された新しいオブジェクトデータと前記部分レンダリングによって先に生成されたイメージデータ及びシェイディングデータとから、前記タイルの各々の画素に関する追加のイメージデータをもたらし及びシェイディングデータを適用する段階と、
ｋ）前記ディスプレイリストメモリにロードするオブジェクトデータがなくなるまで、段階ｆ）、段階ｈ）、段階ｉ）、及び段階ｊ）を繰り返す段階と、
ｌ）表示するためのフレームバッファメモリに、前記イメージデータ及びシェイディングデータを供給する段階と、
を含む方法。
【請求項２】
前記イメージデータが、オブジェクト識別データと奥行きデータとを含むことを特徴とする請求項１に記載の方法。
【請求項３】
段階ｆ）の前に前記イメージデータを圧縮する段階と、段階ｊ）の前に前記圧縮されたイメージデータを圧縮解除する段階とを含むことを特徴とする請求項１又は２に記載の方法。
【請求項４】
前記タイルは、予め決められた一定サイズを有するものである、請求項１乃至３のうちいずれか一項に記載の方法。
【請求項５】
前記マクロタイルは、予め決められた一定サイズを有するものである、請求項１乃至４のうちいずれか一項に記載の方法。
【請求項６】
三次元コンピュータイメージを生成する装置であって、
ａ）イメージを複数のタイルに細分化する手段と、
ｂ）前記複数のタイルを、複数のタイルが含まれる複数のマクロタイルにグループ化する手段と、
ｃ）満杯よりも小さい閾値を有するディスプレイリストメモリに各々のマクロタイルのオブジェクトデータをロードする手段と、
ｄ）前記オブジェクトデータからマクロタイル内の各々のタイルの画素のイメージデータをもたらし及びシェイディングデータを適用する手段と、ここで、当該マクロタイルに関連するオブジェクトデータの量がディスプレイリストメモリの前記閾値を超える場合には、各々のタイルのオブジェクトデータは、マクロタイルの部分レンダリングのシーケンスによって処理され、
ｅ）前記部分レンダリングによって生成された前記イメージデータ及びシェイディングデータをローカルメモリに記憶する手段と、
ｆ）前記マクロタイルの前記部分レンダリングによって解放されたディスプレイリストメモリを、更なる使用のために利用可能にする手段と、
ｇ）前記マクロタイルへの追加のオブジェクトデータを解放された前記ディスプレイリストメモリにロードして既存の内容と置き換える手段と、
ｈ）前記ローカルメモリから、前記部分レンダリングによって生成されたイメージデータ及びシェイディングデータをロードする手段と、
ｉ）前記ディスプレイリストメモリに記憶された新しいオブジェクトデータと前記部分レンダリングによって先に生成されたイメージデータ及びシェイディングデータとから、前記タイルの各々の画素に関する追加のイメージデータをもたらし及びシェイディングデータを適用する手段と、
ｊ）前記ディスプレイリストメモリにロードするオブジェクトデータがなくなるまで、前記ｅ）、ｇ）、ｈ）、ｉ）の手段を繰り返して機能させる手段と、
ｋ）表示のためのフレームバッファメモリに、前記イメージデータ及びシェイディングデータを供給する手段と、
を備えることを特徴とする装置。
【請求項７】
前記イメージデータが、オブジェクト識別データ及び奥行きデータを備えることを特徴とする請求項６に記載の装置。
【請求項８】
前記ローカルメモリに記憶される前に前記イメージデータを圧縮する手段と、前記ローカルメモリからロードされた後に前記圧縮されたイメージデータを圧縮解除する手段とを備えることを特徴とする請求項６又は７に記載の装置。
【請求項９】
前記タイルは、予め決められた一定サイズを有するものである、請求項６乃至８のうちいずれか一項に記載の装置。
【請求項１０】
前記タイルは、予め決められた一定サイズを有するものである、請求項６乃至９のうちいずれか一項に記載の装置。
【請求項１１】
三次元イメージを生成するシステムと共に使用するメモリ管理システムであって、
イメージデータを、予め定義された一定寸法の複数の実質的に矩形領域に細分化する手段と、
ディスプレイリストメモリの少なくとも１つの記憶ブロックを各々の矩形領域に割り当てる手段と、
それぞれの前記矩形領域と交差する面に関連する各ブロックデータを記憶する手段と、
前記ディスプレイリストメモリから前記各々の矩形領域のデータを前記矩形領域の各画素のシェイディングデータをもたらす手段へ供給する手段と、ここで、前記矩形領域に関連するデータの量がディスプレイリストメモリの容量を超える場合には、各矩形領域のデータは部分レンダリングのシーケンスによって処理され、
表示のためのフレームバッファメモリに、前記部分レンダリングによって生成された前記シェイディングデータを記憶するフレーム記憶手段と、
を備え、
前記ディスプレイリストメモリの少なくとも１つの記憶ブロックを各々の矩形領域に割り当てる手段は、予め決められた数のブロックがいつ使用されたかを決定し、この決定に基づいて、前記シェイディングデータをもたらす手段へ供給する手段に操作を開始するようにさせて、これにより、新たなオブジェクトデータのために記憶ブロックを解放するようになっていることを特徴とする、メモリ管理システム。
【請求項１２】
前記イメージデータが、一連のデータフレームを備えることを特徴とする請求項１１に記載のメモリ管理システム。
【請求項１３】
三次元コンピュータイメージを生成するシステムのためのメモリ管理方法であって、コンピュータ及びこれを動作させるソフトウェアによって実行される段階として、
イメージを予め定義された一定寸法の複数の矩形領域に細分化する段階と、
ディスプレイリストメモリの少なくとも１つの記憶ブロックを各々の矩形領域に割り当てる段階と、
それぞれの前記矩形領域と交差する面に関連する各ブロックデータを記憶する段階と、
ディスプレイリストメモリの予め決められた数のブロックがいつ前記矩形領域に割り当てられたかを決定する段階と、
前記決定に基づいて、ディスプレイリストメモリから、矩形領域を形成する各画素のシェイディングデータをもたらすシェイディング手段に、各矩形領域のデータを供給することを開始し、これにより新たなオブジェクトデータのための記憶ブロックを解放する段階と、ここで、前記矩形領域に関連するデータの量がディスプレイリストメモリの容量を超える場合には、各矩形領域のデータは部分レンダリングのシーケンスによって処理され、
表示のためのフレームバッファメモリに、前記部分レンダリングによって生成された前記シェイディングデータを記憶する段階と、
を含むことを特徴とするメモリ管理方法。
【発明の詳細な説明】
【０００１】
本発明は、三次元コンピュータ生成イメージを生成するシステムと共に使用するメモリ管理装置に関する。
【０００２】
本出願人による英国特許第２２８１６８２号には、ポリゴン三次元イメージ作成システムが説明されており、各々のオブジェクトは、一連の無限の面によって表示される。イメージが表示される画面の各々の基本領域は、これを通して視点から三次元シーンへ投影される光線を受ける。投射された光線が各々の面と交差する位置が決定される。これらの交差位置から、任意の交差面がその基本領域において見えるか否かを決定することが可能である。その決定結果に基づいて基本領域が表示のためにシェイディングされる。
【０００３】
このシステムは、複数のセルを備えるパイプライン型プロセッサで実行でき、各々が面との交差位置の計算を行うことができる。つまり、多数の面交差位置を同時に計算できる。各々のセルは、交差位置テストを行う面を定義する一連の係数をロードする。
【０００４】
英国特許出願第２２９８１１１号には改良されたシステムが説明されている。この出願において、イメージ平面は、タイルを順番に処理できるようにサブ領域又はタイルに細分化されている。可変タイルサイズを使用して、複雑なオブジェクトの回りに境界ボックスを投影することが提案されており、境界ボックスの範囲に含まれるタイルのみを処理するようになっている。このことは、最初に、適切なタイルサイズを選択するために、可視画面上のオブジェクト分布を決定することにより行われる。次に、種々のオブジェクトを定める面が、ディスプレイリストとして知られているリストに記憶され、これにより、多数の面で作られた１つのオブジェクトが複数のタイルに現れる場合があるので、各々のタイルに対して同一の面を記憶することが回避される。ディスプレイリストのオブジェクトを特定するオブジェクトポインタも同様に記憶されている。タイル毎に１つのオブジェクトポインタリストが存在する。また、前述の投光手法を利用して各々のタイル内の全てのオブジェクトが処理されるまで、タイルは順番にレンダリングされる。このことは、特定のタイルでは見えないことが分かっているオブジェクトをレンダリングする必要がないので好都合である。
【０００５】
国際特許出願第ＰＣＴ／ＧＢ９９／０３７０７には他の改良されたシステムが提案されており、特定のオブジェクトを表示する必要がない境界ボックスのタイルは、レンダリングの前に破棄される。
【０００６】
図１には、使用するプロセッサ形式のブロック図が示されている。これはタイルアクセラレータユニット２を備えており、前述のタイリング操作を行ってタイル情報をディスプレイリストメモリ４へ供給するようになっている。次に、処理のためのタイルオブジェクトデータは、イメージ合成プロセッサ（ＩＳＰ）６に供給され、前述の光線／面交差位置のテストを行うようになっている。これはオブジェクト識別データ及び奥行きデータを含むイメージデータをもたらす。その後、このイメージデータは、テクスチャリング／シェイディングプロセッサ（ＴＳＰ）８に供給され、テクスチャリング及びシェイディングデータを目に見えると決定されている面に適用し、イメージシェイディングデータをフレーム記憶装置へ出力するようになっている。
【０００７】
多くの三次元グラフィックシステムは、即時モードレンダリングとして知られている手法を利用する。この形式のレンダリングは、ディスプレイリストメモリ内のシーン全体のコピーを記憶する必要がない。その代わりに、各々のポリゴンは、レンダリングハードウェアに送られると即座にレンダリングされる。このことは、ディスプレイリストメモリの記憶要件を回避するという利点がある。しかし、本出願人の英国特許第２２８１６８２号に説明され、英国特許出願第２２９８１１１号で改良された形式のレンダリング手法で可能な注目に値する最適化を不可能にする。据え置きテクスチャ法及び透過ソート法などの利点は、この種のアーキテクチャを使用すれば可能である。
【０００８】
三次元グラフィックシステムを使用してレンダリングする必要があるシーンの複雑さ、ハードウェアが強力になるに従って増してくる。しかし、このことは、ディスプレイリストの記憶要件も高くなるので、ディスプレイリストを基本にしたレンダリングシステムに関する問題点を提示する。従来、ディスプレイリストメモリの空きがなくなれば、単にシーンの一部がレンダリングされないだけであった。この種のイメージ破壊はもはや容認できないと考えられている。シーンの複雑さが増すのに追従してメモリのコストは安くなっていないので、システムのメモリ量を増やすにも限界がある。
【０００９】
本発明の好適な実施形態は、メモリ消費量に上限を設けるが、同時にシステムにより消費されるメモリ帯域幅を最小限に抑えることを試みる方法で、ディスプレイリストを管理する方法を提供する。このことは、タイルレンダリングが終了する前にシステム（ＩＳＰ及びＴＳＰ）の状態をメモリに記憶して、レンダリングを終了するために後でこの状態を再ロードすることにより達成できる。この手法を「ｚ／フレームバッファのロード／記憶」と呼ぶ。
【００１０】
好適な実施形態において、この画面は、マクロタイルと呼ぶ複数の領域に分割され、各々は複数の小さなタイルで作られた、画面の矩形領域から構成されている。次に、ディスプレイリスト内のメモリは、ブロックに分割されて、空き記憶域リストに記載される。次に、空き記憶域リストのブロックは、必要に応じてマクロタイルに割り当てられる。タイリング操作により、ポリゴンパラメータデータと、目に見える各々のマクロタイルに関連する各々のブロックについての面オブジェクトポインタが記憶される。パラメータのためのメモリが満杯になるか、又は所定の閾値に達すると、システムは、マクロタイルを選択し、ｚ／フレームバッファロードを実行して、マクロタイルの内容をレンダリングした後に、これをｚ／フレームバッファ記憶操作を利用して記憶する。レンダリングが終了すると、システムは、マクロタイルに関連する任意のメモリブロックを解放するので、それらのメモリブロックは、別のパラメータの記憶に利用可能になる。ｚ／フレームバッファのロード及び記憶操作は、従来のように画面上の全てのタイルではなく、実際にレンダリングされるマクロタイルに制限される。次に、表示される現在のフレーム又は次回のフレームのいずれかのタイル処理は、マクロタイルのレンダリング及び同一プールから別のマクロタイルへのメモリブロックの割り当てに並行して続けられる。パラメータリストの二重バッファリングを行う必要がないので、システムのメモリ要件が更に軽減される。
【００１１】
本発明は、参照すべき添付の特許請求の範囲に更に明確に定義されている。
以下に本発明の好適な実施形態を、添付図面を参照して例示的に詳細に説明する。
【００１２】
図１のシステムにおいて、表示されるポリゴンは、平面の三角形に分解される。これらを表すデータは、ハードウェア又はソフトウェアのいずれかによって画面空間表現に変換されて、ローカルメモリに記憶される。次に、タイルアクセラレータ２により実行されるタイリングプロセスにより、画面内の各々のタイルの変換三角形データに関するポインタリストが作成される。次に、このリストは、三角形が一部となっているオブジェクトに関連するパラメータと共に、ディスプレイリストに記憶される。このことは図２に概略的に示されており、領域ヘッダ１０は、図示のタイル１から８の識別に対応する。図示のように、タイルは、オブジェクトＡ及びオブジェクトＢという２つの三角形を覆っている。オブジェクトＡは、タイル１、２、５、６、７に見ることができ、オブジェクトＢは、タイル３、７に見ることができる。
【００１３】
ディスプレイリスト１２は、タイルから各々のタイル内に見ることができるオブジェクトデータを受け取り、各々のオブジェクトに関連するパラメータ、即ち、この例ではパラメータＡとパラメータＢとのリンク付けが行なわれる。つまり、タイル１、２、５、６、７のオブジェクトポインタはパラメータＡを指し、タイル３、７のオブジェクトポインタはパラメータＢを指すことが分かる。このデータがイメージ合成プロセッサ６及びテクスチャリング／シェイディングプロセッサ８に供給されると、正しいイメージが各々のタイル画素に適用される。
【００１４】
ディスプレイリストの大きさに対してイメージが複雑な場合、ディスプレイリストの全タイルデータを同時に記憶できない場合があるので、ｚ／フレームバッファのロード／記憶と呼ぶ手法を使用する。その結果、ディスプレイリストには、データが、実質的に満杯になるまでタイルアクセラレータによってロードされる。これはイメージデータの一部を示すに過ぎない。次に、このデータは、ＩＳＰ及びＴＳＰによってレンダリングされ、その結果はローカルメモリに記憶される。これを部分レンダリングと呼ぶ。イメージは、通常の方法で一度に１つのタイルがレンダリングされる。各々のタイルのレンダリング後に、ＩＳＰの内部状態（ｚ、ステンシル、及びオブジェクトアドレス情報を含む）が外部メモリに書き込まれ、ＴＳＰからのイメージデータがフレームバッファに書き込まれる。これら２つの操作は一緒になってｚ／フレームバッファの記憶操作を構成する。部分レンダリングの終わりに、画面上の各々のタイルに対するレンダリング及びｚ／フレームバッファ記憶操作が発生している。
【００１５】
この時点で、ディスプレイリストの第１の部分が破棄され（このデータはタイルをレンダリングするのに使用した）、メモリは、タイルアクセラレータから別の出力を受け取るために使用される。ディスプレイリストメモリが再度満杯になるか、又はタイルアクセラレータがシーンデータの終わりに達すると、別の部分レンダリングが発生する。各々のタイルに対して順番に処理が始まると、先に記憶したＩＳＰデータ情報は外部メモリから再ロードされ、必要であれば、混合操作を行うために、フレームバッファからのイメージデータをＴＳＰにロードする。これがｚ／フレームバッファロード操作である。従って、あたかも割り込みを受けていないかのように、そのタイル内でディスプレイリストの次の部分をレンダリングできる。最後に、タイルがレンダリングされた後に、ｚ／フレームバッファ記憶は、必要なデータ情報を記憶するので、別のサイクルの部分レンダリングを発生可能になる。
【００１６】
このように作動することにより、限られたメモリ量だけを使用して非常に複雑なシーンのレンダリングが可能になる。
【００１７】
図３は、本発明の実施形態のディスプレイリストのメモリがどのように割り当てられるかを示す。図３において、図１に示すイメージ部は、この例ではマクロタイル１及びマクロタイル２という見出しを付けた２つのマクロタイルに分割されていることが分かる。ディスプレイリストは、２つの部分に分割されており、第１の部分はマクロタイル１に関し、第２の部分はマクロタイル２に関するものである。マクロタイル１のタイルの領域ヘッダは、全てマクロタイル１のオブジェクトポインタに入る。マクロタイル１ではオブジェクトＡしか見えないので、パラメータＡ1のみをこのメモリブロックに記憶すればよい。従って、タイル１、２、５、６のオブジェクトポインタは、全てパラメータＡ1を指していることが分かる。
【００１８】
マクロタイル２ではオブジェクトＡ及びオブジェクトＢの両方が見えており、両方ともタイル７に存在している。従って、パラメータＡ２及びパラメータＢ２は、マクロタイル２の割り当てメモリブロックに記憶される必要がある。結果的に、タイル７のオブジェクトポインタは、パラメータＡ２及びパラメータＢ２を指し、一方で、タイル３のオブジェクトポインタは、パラメータＢ２のみを指していることが分かる。
【００１９】
マクロタイルのサイズは予め決定でき、又はシーンの複雑性に応じてマクロタイルのサイズを定義するシステムを実行できる。マクロタイリングプロセスは、タイルアクセラレータ２による基本タイリング操作の下流側で実行できる。
【００２０】
ディスプレイリストの記憶に利用可能なメモリは、最初に割り当てブロックに分割され、各々のブロックのアドレスは、ＦＩＦＯ又は空き記憶域として知られるスタックに記憶される。ブロックサイズの選択は、大きなブロックによる空間損失量と、多数の小さなブロックの管理に関連する記憶要件との間の妥協によりなされる。また、利用するメモリ技術の特性にも影響される。
【００２１】
既にタイルに分割されている画面は、次に、マクロタイルに分割される。最も単純な形態において、画面上の全てのマクロタイルは、同じ寸法であり、最小のものが１つのタイルに相当する。図３に示す例では、説明を簡単にするためにマクロタイルサイズ２ｘ２を用いているが、実際には、そのサイズは大きくてもよい。
【００２２】
最初に、全ての割り当てブロックは、空き記憶域（図示せず）にある。タイルアクセラレータは、三角形等の特定のオブジェクトが交差する１組のタイル（及びマクロタイル）を識別する。次に、マクロタイルと交差する第１のオブジェクトデータが識別されると、各々のマクロタイルについて、順番に、空き記憶域からのブロックが要求され、そのマクロタイルと関連づけされる。次に、オブジェクトデータは、そのブロックに記憶される。現行のブロックで１つのデータを記憶する空間が不足すると、空き記憶域からの更なるブロックが要求される。
【００２３】
イメージ合成プロセッサ６及びテクスチャリング／シェイディングプロセッサ８によってマクロタイルがレンダリングされると、関連のメモリブロックを空き記憶域に戻すことができる。そのためには、ブロックを何とかして関連マクロタイルとリンク付けする必要がある。これを行う１つの可能な方法は、各々の割り当てブロックにおいてワードを利用してブロックのリンクリストを生成することである。もしくは、空き記憶域リストからの割り当てブロックを追加及び取り除くのではなく、空き記憶域構造内で生成される複数の使用ブロックの間のリンクを用いて、現場で使用中又は未使用とマーキングすることができる。
【００２４】
前述のように、タイルアクセラレータは、通常の方法で１組のタイル及び三角形のストリップのストリップマスク情報を生成するのに使用される。更に、タイルアクセラレータは、ストリップがどのマクロタイルに該当するか決定する。次に、タイルアクセラレータ２は、ストリップが見える各々のマクロタイルの独立したリストにパラメータデータを書き込む。このパラメータデータは、各々のマクロタイルに関してディスプレイリスト内の適切な位置に書き込まれる。データの何らかの重複が起こることは明らかである。しかし、このことは、他のマクロタイルのディスプレイリストに影響を与えることなく、マクロタイルがレンダリングされた後に、特定のマクロタイルに関連する全てのメモリを解放することを可能にする。
【００２５】
表示されるイメージデータの第１のフレームの最初の部分でタイリングが始まる。各々のマクロタイルにおいて見えるオブジェクトの、オブジェクトポインタが生成され、マクロタイルにおいて見える各々のオブジェクトの、該当オブジェクトパラメータと共に、マクロタイルに割り当てられたディスプレイリストのブロックに書き込まれる。このプロセスは、ディスプレイリストが実質的に満杯になるか、又は所定の閾値に達するまで、例えば、割り当てブロックの７５％が使用されるまで継続する。トリガーレベルに達すると、システムは、イメージ合成プロセッサ及びテクスチャリング／シェイディングプロセッサを使用して、マクロタイルを選択し、そのレンダリングを開始してフレームバッファへ出力する。マクロタイルの選択方法を以下に詳細に説明する。その判定は、複数の要因に基づいていてもよい。典型的に、新しいデータのための最大量のメモリを解放するので、その時点で最大数の割り当てブロックを使用しているマクロタイルが選択されることになる。タイリングは、第１のフレームのデータの残りのレンダリングと並行して継続する。７５％閾値が使用される。その理由は、これにより、継続中のタイリングプロセスによって割り当てられる十分な未使用メモリが残り、一方で、他のメモリがレンダリングされて空き記憶域に戻されるからである。レンダリング中のマクロタイルヘタイリングを行い得るように、その領域ヘッダ（マクロタイルのポインタリスト及び割り当てブロックに対するポインタ）は、空のタイルに対するポインタと交換される。従って、以前のマクロタイルのデータに対するレンダリングを継続でき、タイルアクセラレータは、空のタイルのための新しい割り当てブロックにデータを書き込むことができる。マクロタイルのレンダリングが終了すると、割り当てブロックは、空き記憶域に戻される。従って、メモリ使用量が閾値を超えている場合は別のマクロタイルが選択され、別のレンダリング操作が始まる。７５％閾値は調整可能なパラメータである。その理由は、ＩＳＰ及びＴＳＰは、ディスプレイリストの大部分がメモリ内にある場合に効率的に（リスト全体がメモリ内にあると最も効率的に）据え置きテクスチャリング等の操作を行うことができるからである。閾値は、大きなディスプレイリストサイズの矛盾する要件と、シーンの残余部のタイル処理を行う適切な空間との間でバランスが取れるように調整可能である。
【００２６】
イメージデータのフレームのタイリングが終了すると、次に、システムは、前のフレームのレンダリングが依然とし進行中であっても、新しいフレームのタイル処理を開始できる。新しいフレームのマクロタイルに関連する割り当てブロックは、前のフレームのマクロタイルに関連する割り当てブロックとは異なっている必要がある。このことは、前のフレームが使用したブロックとは独立した第２のセットのブロックを保持することによって達成できる。このことは、第２のセットの領域ヘッダを独立して保持することによって達成できる。全てのフレームに対して割り当てブロックは同一の空き記憶域から取り込まれるが、このことはディスプレイリストのサイズを２倍にする必要がないことを意味している。このことは、更にメモリ使用量を低減する。
【００２７】
従って、ｚ／フレームバッファロード／記憶プロセスは、それぞれ各々のレンダリングの始めと終わりに発生することが分かる。レンダリングされたマクロタイルのタイルに対してのみ発生する。最初のレンダリングの前にロード操作は必要でなく、最後のレンダリングの後に記憶操作は必要でない。使用中の割り当てブロックの数が所定の閾値に達し、またはレンダリングが終了した場合に、有効性及びメモリ使用がマクロタイルのフレームバッファへのレンダリングの結果として生じ、レンダリングされるマクロタイルに関連したメモリブロックが解放されて、別のパラメータを記憶するために利用可能になることが理解できる。
【００２８】
記憶されたオブジェクトパラメータは、典型的に三角形の座標であり、レンダリングされるオブジェクト、オブジェクト色等である。このようなオブジェクトパラメータとオブジェクトポインタの両者は、各々のマクロタイルの割り当てブロックに記憶されていることが分かる。このことは、必要なくなったパラメータ及びポインタを簡単に破棄することを可能にする。メモリ内のパラメータデータ及びポイントデータの近接性は、十分に小さな割り当てブロック、又は大きなブロックの適切な配置を使用する場合、メモリシステムのページ区切り数の大幅な低減をもたらす。ページ区切りは、メモリシステムの性能を低下させ、メモリハードウェアへの連続的なアクセスが同一ページ内でないときに引き起こされる。可能な限り同一ページにオブジェクトポインタ及びパラメータデータを記憶することは、ページ区切りを最小限にする有効な方法である。
【００２９】
割り当てブロックのポインタ及びパラメータのレイアウトから種々の方式が可能である。幾つかの例を、図４ａ、図４ｂ、及び図４ｃに示す。最も簡単な方式は、割り当てブロックの先頭の小さなポインタブロックにポインタを割り当て、読み取り／書き込みを最適化する。ブロック内の最後のポインタは、リンクリストを必要とする次のポインタブロックへのリンクである。図４ａにおいて、ブロックの一端からポインタが割り当てられ、パラメータは他端から割り当てられている。ブロックが満杯になると両者は真ん中で交わる。図４ｂにおいて、パラメータとポインタとは交互に配置されており、割り当てブロックは、終始満杯になっている。図４ｃに示す別の変形例は、１ページより大きな割り当てブロックに対して適切である。オブジェクトポインタが指すパラメータデータと同じデータブロック内にオブジェクトポインタに保持しようとするものであるが、オブジェクトポインタブロックの一部に無駄な空間がある。
【００３０】
割り当てブロックはマクロタイルと関連があり、各々のマクロタイルは複数のタイルを含むので、各々の割り当てブロック内には、オブジェクトポインタブロックの複数のリンクリストがある。
【００３１】
シーンが大きなオブジェクトから構成され、各々のマクロタイルが多数のタイルを含む場合、割り当てブロックの大きな空間は、大部分は空のポインタブロックにより消費され、そのポインタは全て同じオブジェクトを指していることが分かる。
【００３２】
図５は、オブジェクトが見えるマクロタイルのタイルを指示するタイルマスクを備える単一のリストを使用する方式を示す。ストリップマスクは、オブジェクトポインタとは切り離されており、一箇所に集められている。イメージ合成プロセッサのパラメータを取り出すステップは、タイルマスクで設定されたビット数をカウントすることによって関連ストリップマスクへスキップできる。
【００３３】
前述の全ての割り当て方式において、ポインタは、常に、同一の割り当てブロック内のパラメータデータを指しているので、適切な最下位ビット数を使用して表すことによって、オブジェクトポインタを圧縮することが可能である。ブロック外（例えば、グローバルリスト内）のオブジェクトのポインタは、同様に供給されるアドレスの最上位ビットをもつ必要がある。これは、大きなポインタを使用することで可能になる。
【００３４】
非常に大きな三角形又はストリップ、即ち、多くのマクロタイルを横切るものは前述の方式では問題が起きる場合もある。これは、データが多くのマクロタイルにおいて複製されるので、大量のメモリを使用するからである。この問題の１つの解決策は、大きなオブジェクトを記憶するグローバルリストを生成することである。オブジェクトの順番を確実に記憶するために、これらのオブジェクトとの関連性が、通常の方法で各々のマクロタイルのポインタリストに書き込まれる。
【００３５】
オブジェクトは、特定の閾値よりも大きい複数のマクロタイルで見える場合は、大きいとみなすことができる。この閾値は、パラメータの複製、グローバルリストにより使用されるメモリ、及びパラメータメモリの再利用との間の最適なトレードオフを達成するよう選択できる。グローバルリストのパラメータデータは、多くのマクロタイルのポインタリストで参照することができるので比較的長期間に亘ってメモリ内に残っている。従って、グローバルリストは、マクロタイリング操作に悪影響を与えるほど成長しないようにすることが重要である。大ざっぱな解決策は、グローバルリストのサイズが閾値を超えた場合に、全てのマクロタイルをレンダリングすることである。これにより、グローバルリストに関連する全ての割り当てブロックを空き記憶域に戻すことができる。緻密な方式では、参照カウントを用いることができ、それによって、割り当てブロックを参照するマクロタイルがレンダリングされると即座にグローバルリスト割り当てブロックを解放することができる。
【００３６】
次に、どのマクロタイルをレンダリングするかの選択は、一般的に、解放されて空き記憶域に戻すことができる最大量のメモリによって決定される。これにより、マクロタイルが複数のレンダリングの間で適度な複雑性を生み出し得ることを保証することにより効率が高くなり、必要なｚ／フレームバッファロード／記憶操作の総数が低減する。
【００３７】
ディスプレイリストが、複数のフレームのマクロタイルに関連するブロックを含む場合、１つのフレームに属する全てのタイルは、次のフレームの任意のタイルをレンダリングする前に、完全にレンダリングしておくことが重要である。
使用中のマクロタイルがレンダリング中であり、同時に、タイルアクセラレータが同一のマクロタイルに追加のデータを書き込み中である場所は容易に想像できる。これは、画面の小領域が特に詳細なオブジェクトを含む場合に起こり得る。このような状況では、同一のものを繰り返すために、次のマクロタイルを選択してレンダリングを行う選択に重み付けをすることが道理に合っている場合もある。これにより、マクロタイル内の少なくとも１つのタイルに対する、又は小さなオンチップ・キャッシュが存在する場合は２つ以上に対するｚ／フレームバッファロード／記憶を省略できる。最大の利点を得るには、任意の順番で、マクロタイルのタイルをレンダリング可能になっている必要がある。
【００３８】
グローバルリストが厄介なほど大きくなる場合、前述の参照カウント方式を拡張すると、できるだけ多数のグローバルリスト割り当てブロックを解放するレンダリングを得るためのマクロタイルを選択可能にできる。
【００３９】
別の実施方法は、漸進的にサイズが大きくなるネスト化マクロタイルを使用して、階層的マクロタイルシステムを使用することである。この目的は、オブジェクトが現れるタイル数に応じて、記憶装置に対する適切な階層レベルを選択することによって、パラメータデータの複製を低減することである。オブジェクトパラメータは、オブジェクトの順番を記憶するためのみに、最低限のレベルで記憶され得る。
【００４０】
前述のマクロタイリングによるメモリ管理手法は、システムの帯域幅要件をかなり低減するが、ｚ／フレームバッファロード／記憶を完全になくすことはできない。また、記憶されたｚ情報は、追加的にメモリ空間を占有することに留意されたい。ｚ情報及びフレームバッファデータの圧縮は、メモリ帯域幅及び記憶要件を更に低減する。
【００４１】
種々の圧縮手法を利用でき、記憶データによって占有される空間を低減する。種々の圧縮方法の効率は、圧縮データの性質に影響を受けるので、単一の方式が、全ての状況において有効な圧縮をもたらす見込みはない。従って、階層的システムが提案されており、システムは、その時点での方法が、その時点でのデータセットに適切でない場合は、別の圧縮方法に移る。もしくは、場合によっては不十分なデータ圧縮（又は展開さえも）を与えることは承知の上で、提案方法のいずれか１つを分離して使用することができる。
【００４２】
１）ｚ圧縮のための面の平面方程式の記憶
タイルのｚ値は、各々の画素において見える三角形の奥行きを含む。各々のタイルに対して処理される三角形は数多く存在する場合もあるが、殆どの場合は少数の三角形のみが見えるので、奥行き値をもたらす。数多くのイメージの最初の部分に発生するｚ−クリアポリゴンの場合、１つのポリゴンは、タイル全体の初期のｚ状態を定義することができる。
【００４３】
所定のポリゴンについて、ｚ情報は、３つの平面パラメータＡ、Ｂ、及びＣによって定義され、ＩＳＰによって計算される。パラメータは、式、即ち、奥行き＝Ａｘ＋Ｂｙ＋Ｃに使用される。ここで、ｘ、ｙは該当の画素位置であり、（０、０）はタイルの左上コーナにある。
【００４４】
パラメータＡ、Ｂ、及びＣの記憶は、三角形毎に１２バイトのデータが必要である。追加のビットマップ値は画素毎に記憶され、異なるセットのパラメータの間で選択するようになっている。ｚ奥行きを４つのポリゴンによって定義した例を図６に示す。
【００４５】
データの圧縮には、幾つのポリゴンがｚ値を与えるかを知ること、及びポリゴンの平面パラメータを呼び出す能力が必要である。このデータは、データがＴＳＰに出力される点での記憶されるオブジェクト識別タグから計算できる。９個以上のポリゴンが奥行きを与える場合、システムは、以下に説明する別の方式の１つに移ることができる。
【００４６】
３２ｘ１６画素の矩形タイルの奥行き情報を与える種々の数の三角形に関する圧縮率は、以下の通りである。
0004851049.tif 000002
【００４７】
浮動小数点ｚの生データは、２０４８バイトを必要とする。従って、この方法では、５倍から１２８倍のかなりの圧縮率が得られることが分かる。
【００４８】
これらの奥行きデータを再ロードするには、三角形を処理する際にＩＳＰが行なう計算と類似の計算を必要とする。このようにして計算した奥行き値は、元のセットの値を再構成するためにビットマップデータに基づいて奥行きバッファに書き込まれる。
【００４９】
前記の例は、ｚ奥行きを、１から８までの三角形によって定義し得るが、他の範囲を使用することもできる。三角形の数がこの範囲外にある場合、システムは、以下で説明する別の方式に移ることができる。
【００５０】
２）ｚ圧縮のランレングス符号化
ランレングス符号化は、一般的に、データが同一の値の多数の連続的な項目を含む場合に使用される。数字は対になって記憶され、その結果、例えば、符号化８：０．５、２４：０．８では、第１の８は０．５の奥行き値をもち、次の２４は、異なる三角形に属すると想定して、０．８の奥行き値をもつ画素の列を示す。
【００５１】
別の種類のランレングス符号化は、通常、奥行き情報を符号化するのに有効なことが判明する場合もあり、三角形は、「平面」ではないので、タイルに沿って均一に変化する奥行き値をもつ可能性がある。この状態を図７に示す。三角形は平面的なので、「デルタ」値（１つの画素と次の画素との奥行きの差）が一定であることがわかる。実際には、タイルに沿ってｘ方向に移動すると、デルタ値は、そのポリゴンに関するＩＳＰの「Ａ」パラメータに等しい。タイル線に沿ってｘデルタ値をランレングス符号化する（定数ｙ）と、一般的なデータに対して約２倍の圧縮率が得られる（実験結果から）。
【００５２】
また、（デルタ値以外の）ランレングス符号化は、ステンシル及び「タグ」（特定の画素位置におけるオブジェクトの識別）値に非常に適しており、ＩＳＰの状態を完全に記録するために、奥行き情報と共に記憶する必要がある。
【００５３】
ランレングス符号化の欠点は、データサイズが実際には拡張する状況になる可能性をもつ点である。このことは、例えば、何れの隣接画素も同一でない場合に起こり得る。各々の値が１度しか発生していないことを示すカウンタを記憶する必要があるので、圧縮されたデータは、実際にはサイズが２倍になる場合もある。この場合、ｚ圧縮システムは、圧縮されていないｚ値を記憶する方法に移ることになる。
【００５４】
３）フレームバッファ圧縮
フレームバッファメモリは、ビデオイメージの生成ハードウェアによって直接読み取られるので、最終出力は圧縮できない。しかし、データが、イメージを組み立てるプロセスにおいて複数回記憶されてロードされる場合、中間データを圧縮することによってメモリ帯域幅を記憶できる。ランレングス符号化、Ｊ−ＰＥＧ、Ｗａｖｅｌｅｔ、ベクトル定量化（ＶＱ）を含む、標準的なイメージ圧縮手法を使用できる。
【００５５】
４）変化時にのみＺを書き込み、要求時にのみＴＳＰを読み取る
最後の最適化は、特定のｚ記憶及びフレームバッファロードを回避することを可能にし得る。
「ダーティー」フラグは、データが最後に読み取られてから変更されたことを示す。ｚバッファロード／記憶の場合、ｚロードが起こるとダーティーフラグはリセット状態になり、ｚデータがＩＳＰにより変更されるとセットされる。ｚ記憶の要求があると、ダーティービットがセットされた場合に実際にデータを記憶することのみが必要である。
【００５６】
類似の最適化は、フレームバッファロード／記憶に適用できる。特定の混合操作に必要な場合に、フレームバッファから画素をロードすることのみが必要であり、この状況は常に起こるわけではない。同様に、ダーティーフラグは、変更された画素又は画素群を示し、それらの画素のみがフレームバッファ記憶操作により転送される。
【００５７】
５）アプリケーションが必要な場合に「ｚバッファ」にアクセス可能にする
Ｉｍａｇｉｎａｔｉｏｎ  Ｔｅｃｈｎｏｌｏｇｉｅｓ  Ｐｏｗｅｒ  Ｖｒ  Ｓｙｓｔｅｍ等の特定のレンダリングシステムは、通常、全フレームに対するｚバッファを保持する必要はない。これはメモリ及び帯域幅を記憶する。しかし、特定のアプリケーションは、ｚバッファを見ようとし、特別のグラフィック効果を得るために自ら操作しようとする。ｚバッファ記憶操作により記憶されるデータは、従来の意味ではｚバッファではないが、メモリ内のデータのレイアウトを処理することによってアプリケーションには、そのようなものとして見えるようにすることが可能である。必要であれば、記憶されたｚ値が適切な場合に仮想のｚバッファの状態を確実に反映するように、追加のｚバッファ記憶操作を行うことができる。
【００５８】
従来のｚバッファは、圧縮されていない生のｚデータを含む。前述の方法を利用して圧縮ｚバッファを読み取ろうとするアプリケーションには、正確に解釈できないことは明らかである。従って、ｚバッファを必要とするアプリケーションに対して圧縮を解除するか、又は「仮想ｚバッファ」をアプリケーションに与えて透過的に圧縮及び圧縮解除を行う追加のハードウェアを提供する機能があることが重要である。
【００５９】
本発明の実施形態を示す図を以下に説明する。図８は、本発明が適用されるシステム形式のブロック図を示す。これは、図１の僅かに拡張されたバージョンを包含し、ディスプレイリストメモリ４に供給されるタイリング操作を行うタイルアクセラレータ２を示している。次に、これは、光線／面交差テストを行うイメージ合成プロセッサ６にデータを供給する。次に、このデータは、フレームバッファメモリ１１にテクスチャリングされたイメージデータを記憶する前に、メモリ９のテクスチャからのテクスチャリング及びシェイディングデータを用いるテクスチャリング／シェイディングプロセッサ８に供給される。この装置は、図１を参照して行った前述の説明に基づいて作動する。
【００６０】
図９は、図８のｚ／フレームバッファロード／記憶操作を行う回路が変更されたシステムを示す。このシステムでは、ｚ／フレームメモリ１６は、ｚ圧縮／圧縮解除ユニット１８を経由してイメージ合成プロセッサ６と接続している。これは、システムが複雑なシーンをレンダリング中であり、ディスプレイリストメモリが、特定のタイルに対して処理される必要がある全ての面を含むほど大きくない場合に作動する。このプロセスは前述の通りである。しかし、図９のシステムを使用して作動する場合、ディスプレイリストは、タイルアクセラレータによって、実質的に満杯になるまで全てのタイルに関するデータがロードされる。しかし、これは、初期データの一部を表しているに過ぎない場合もある。このイメージは、イメージ合成プロセッサ６によって、一度に１つのタイルがレンダリングされる。各々のタイルの出力データは、テクスチャメモリ９からのデータを使用してタイルをテクスチャリングし、フレームバッファメモリ１１へ供給する、テクスチャリング／シェイディングプロセッサ８に供給される。
【００６１】
同時に、イメージデータが不完全であった場合は、イメージ合成プロセッサ６からの結果が圧縮／圧縮解除手段１８を経由してｚ／フレームメモリ１６に一時的に記憶される。全てのタイルがレンダリングされてフレームバッファメモリ及びｚ／フレームメモリ１６に記憶されるまで、残りのタイルのレンダリングが不完全なイメージデータの状態で継続される。
次に、ディスプレイリストの第１の部分が破棄されて、追加のイメージデータがディスプレイリストに読み込まれる。イメージ合成プロセッサ６により順番に各々のタイルに対して処理が行なわれる場合、ディスプレイリストメモリ４の新しいイメージデータと組み合わせることができるように、ｚ／フレームメモリ１６のデータの関連部分がｚ圧縮／圧縮解除手段１８を経由してロードされる。次に、各々のタイルの新しいデータが順番に、フレームバッファメモリ１１に供給される前に、テクスチャメモリ９のデータと組み合わせるテクスチャリング／シェイディングプロセッサ８に供給される。
【００６２】
このプロセスは、シーン内の全てのタイルに対して、全てのイメージデータがレンダリングされるまで継続する。
【００６３】
従って、ｚバッファメモリは一時的記憶装置を満杯にして、特に複雑なシーンをレンダリングするのに必要なものよりも小さなディスプレイリストメモリを使用可能にすることが分かる。圧縮／圧縮解除手段１８は随意的であるが、それを使用すると更に小さなｚバッファメモリを用いることができる。
【００６４】
テクスチャリング／シェイディングプロセッサとフレームバッファメモリとの間の追加リンクとして、フレームバッファ圧縮／圧縮解除手段２０が設けられている。これは、フレームバッファメモリ内の不完全なイメージデータの一時的な記憶と、既にテクスチャリング／シェイディング処理されたデータと組み合わせる必要があるタイルに関して、イメージ合成プロセッサ６から追加データが供給された際に、そのデータをフィードバックするのに使用するのが好ましい。勿論、圧縮／圧縮解除手段は随意的なものである。
【００６５】
図１０において、タイルアクセラレータによって使用されるメモリ管理システムを示す。これは図３の説明を参照して理解されたい。ステップ３０では、領域ヘッダを初期化し、ステップ３２では、システムは、領域ヘッダにオブジェクトデータが入力されるのを待つ。ステップ３４では、タイル及びマクロタイルが図３に示すように割り当てられ、ステップ３６では、新しいメモリブロックが必要か否かを判定する。追加のメモリブロックが必要ない場合、マクロタイルのオブジェクトデータが、システムにより先に割り当てられたメモリブロックに記憶されるが、ステップ４０では、マクロタイル及びタイルに対するオブジェクトデータの割り当て領域及びメモリにおける、フレーム内の最後のオブジェクトに達したか否かを決定する。ステップ４２では、フレームに関してレンダリングされていないマクロタイルがあるか否かを判定する。レンダリングされていないマクロタイルがある場合、ステップ４４でマクロタイルを選択してレンダリングする。ステップ４８で追加オブジェクトを記憶してレンダリングする必要があるか否かを判定する前に、ステップ４６でレンダリングを開始する。ステップ４８で「ＮＯ」の場合、ステップ４２で、別のタイルをレンダリングすべきか否かを判定し、更なるマクロタイルがない場合、ステップ５０で、別のフレーム又はデータを入力すべきか否かを判定する。別のフレーム又はデータを入力する必要がある場合、システムは、フローチャートの最初に戻る、別のフレーム又はデータを入力する必要がない場合、本プロセスは終了する。ステップ４２での判定結果が「ＹＥＳ｝の場合、制御は、メモリからのロードすべき新しいブロックに関する図６に進む。
【００６６】
ステップ３６で追加メモリが必要であると判定された場合、ステップ５２でメモリ満杯閾値に既に達しているか否かを判定する。メモリ満杯閾値に達していない場合、ステップ５４で新しいメモリブロックを空き記憶域から要求し、ステップ３８で、前述のようにステップ４０へ進む前に、マクロタイルのオブジェクトデータを記憶するのに使用される。メモリ満杯閾値を超えている場合、プロセスは、マクロタイルをレンダリングするステップ４４に進む。このルートがステップ４８に進むと、システムは，オブジェクトを記憶するのを待つか否かを判定する。この場合、ステップ３８でマクロタイルの追加オブジェクトを記憶するために、ステップ５４で要求を行う前に、メモリブロックが利用可能になるまで待つステップ５６に進む。
【００６７】
図１１は、タイルアクセラレータによって、どのメモリブロックが解放されてその後の割り当てのために記憶装置に戻されるかを示す。ステップ８０で、システムは起動して、部分レンダリングが終了した信号を待つ。この信号を受け取ると、ステップ８２でメモリブロックは記憶装置に戻され、システムは、次の部分レンダリングを待つ。
【００６８】
タイリングとレンダリングとは並行して行われるので、図１０ではメモリブロックの解放は個別に示されており、ステップ４６では、信号をＩＳＰに送ることによってレンダリングが始まる。タイルアクセラレータはその時点で多くのタイリング操作を行い得るので、レンダリングの終了を待たない。これがマクロタイルのレンダリングが開始される閾値（例えば７９％）が存在する理由である。これにより、タイルアクセラレータが作業を行うメモリ空き領域が残る。
【００６９】
図１１のシステムは、タイルアクセラレータがサイクル中のどのステップにあるのか分からず、それに割り込みたくないので、ＩＳＰが、部分レンダリングの終了を知らせるのを待つ。図１１は、図１０のステップ５６及び５４に達した場合に可能な全てのメモリを残す。そこにはメモリが使用に向けて直ちに利用可能になるよいチャンスがある。メモリは、常に利用可能とは限らないので時としてステップ５６で待つ必要もある。このことは複雑なイメージの場合に起こる場合もあり、メモリが利用可能になるのを待つ必要がある。
【００７０】
図１２は、図８及び図９のＩＳＰ８及びディスプレイリストメモリ４を示すが、タイルアクセラレータ２は更に詳細に示されている。入力データ９０は、タイリングユニット９２に送られ、次に、このデータは、マクロタイリングユニット９４に送られる。出力データ９５は、ディスプレイリストメモリ４及びディスプレイリストメモリマネージャ９６へ送られる。メモリマネマージャ９６は、空き記憶域リスト９８及びディスプレイリスト４と通信し合う。例えば、メモリが７５％使用中であることを示す信号をディスプレイリスト４５から受信し、これに応答してレンダリング開始信号をＩＳＰ６へ送る。これが終了すると、レンダリング終了信号は、メモリマネマージャ９６へ送られ、更なるマクロタイルによって使用できる現在利用可能なメモリを空き記憶域リスト９８に戻す。メモリマネマージャは、先のマクロタイルがレンダリングされている間に、マクロタイルデータの受信を続け、空き記憶域リストのメモリを、必要に応じてオブジェクトに割り当てる。
【図面の簡単な説明】
【図１】  レンダリング及びテクスチャリングシステムのブロック図である。
【図２】  公知のタイリングシステムにおいて、ディスプレイリストが如何に順序付けされているか概略的に示す。
【図３】  本発明のマクロタイリングにより、ディスプレイリストが如何に順序付けされているか概略的に示す。
【図４ａ】  本発明の実施形態による、ディスプレイリストのデータブロックの割り当てに関する別の配置を示す。
【図４ｂ】  本発明の実施形態による、ディスプレイリストのデータブロックの割り当てに関する別の配置を示す。
【図４ｃ】  本発明の実施形態による、ディスプレイリストのデータブロックの割り当てに関する別の配置を示す。
【図５】  ディスプレイリストの別の実施形態を示す。
【図６】  ４つのポリゴンのｚ奥行きと、４つのポリゴンの平面パラメータの記憶によるｚ圧縮を概略的に示す。
【図７】  ランレングス符号化の結果を示すグラフである。
【図８】  本発明で使用できるレンダリングシステム形式の例についてのブロック図である。
【図９】  本発明の１つの態様の実施形態における図８のシステムを示す。
【図１０】  本発明の実施形態で使用するメモリ管理を示すフローチャートである。
【図１１】  図１０のフローチャートのサブプロセスを示すフローチャートである。
【図１２】  本発明の実施形態で使用するタイルアクセラレータのブロック図である。
【図１】
0004851049.tif 000003
【図２】
0004851049.tif 000004
【図３】
0004851049.tif 000005
【図４Ａ】
0004851049.tif 000006
【図４Ｂ】
0004851049.tif 000007
【図４Ｃ】
0004851049.tif 000008
【図５】
0004851049.tif 000009
【図６】
0004851049.tif 000010
【図７】
0004851049.tif 000011
【図８】
0004851049.tif 000012
【図９】
0004851049.tif 000013
【図１０】
0004851049.tif 000014
【図１１】
0004851049.tif 000015
【図１２】
0004851049.tif 000016