(57)【特許請求の範囲】
【請求項１】
グラフィック・データを処理するためのプログラム可能な視覚化装置であって、
視覚化アプリケーションとスケジュラとを実行するための中央処理装置と、
中央処理装置に接続され複数のブロックに分割された前記グラフィック・データを記憶する前記第３のレベルのメモリと、
システム・バスによって前記中央処理装置に接続され複数のブロックのサブセットを記憶する第２のレベルのメモリと、
メモリ・バスによって前記第２のレベルのメモリと接続された第１のレベルのメモリであって、順に並べられたブロックのリストが前記スケジュラによって記憶される前記第１のレベルのメモリと、
プロセッサ・バスによって前記第１のレベルのメモリと接続したプロセッサ・エレメントと、
前記第１、前記第２、前記第３のレベルのメモリおよび前記プロセッサ・エレメントと接続され、前記リストのブロックの順序に従って前記第３のレベルのメモリから前記第２のレベルのメモリへおよび前記第２のレベルのメモリから前記第３のレベルのメモリへブロックを転送するためのディスパッチャと、
を備えたことを特徴とする装置。
【請求項２】
前記第１のレベルのメモリと、前記プロセッサ・エレメントと、前記ディスパッチャとが特定用途向け集積回路として構成されることを特徴とする請求項１に記載のグラフィック・データを処理するためのプログラム可能な視覚化装置。
【請求項３】
前記特定用途向け集積回路がシステム・バス・インターフェースとメモリコントローラとを含むことを特徴とする請求項２に記載のグラフィック・データを処理するためのプログラム可能な視覚化装置。
【請求項４】
前記特定用途向け集積回路と前記第２のレベルのメモリとがシステム・バスに接続される基板上に構成されることを特徴とする請求項１に記載のグラフィック・データを処理するためのプログラム可能な視覚化装置。
【請求項５】
前記グラフィック・データがサンプルされたデータとジオメトリ・データであることを特徴とする請求項１に記載のグラフィック・データを処理するためのプログラム可能な視覚化装置。
【請求項６】
前記サンプル・データがボリューム・サンプルであることを特徴とする請求項５に記載のグラフィック・データを処理するためのプログラム可能な視覚化装置。
【請求項７】
前記サンプル・データが画像サンプルであることを特徴とする請求項５に記載のグラフィック・データを処理するためのプログラム可能な視覚化装置。
【請求項８】
前記リスト中の前記ブロックの順序が時間的かつ空間的であることを特徴とする請求項１に記載のグラフィック・データを処理するためのプログラム可能な視覚化装置。
【請求項９】
複数のブロックの依存状態グラフを生成してブロックの空間的および時間的順序を決定する手段をさらに備えたことを特徴とする請求項７に記載のグラフィック・データを処理するためのプログラム可能な視覚化装置。
【請求項１０】
前記視覚化アプリケーションが、前記グラフィック・データの中を通って光線をトレースし、該トレースされた光線によって前記ブロックの順序が決定されることを特徴とする請求項１に記載のグラフィック・データを処理するためのプログラム可能な視覚化装置。
【請求項１１】
前記視覚化アプリケーションがグラフィック・データを分割することを特徴とする請求項１に記載のグラフィック・データを処理するためのプログラム可能な視覚化装置。
【請求項１２】
前記プロセッサ・エレメントが前記複数のブロックを処理することを特徴とする請求項１に記載のグラフィック・データを処理するためのプログラム可能な視覚化装置。
【請求項１３】
複数のプロセッサ・エレメントを含むことを特徴とする請求項１に記載のグラフィック・データを処理するためのプログラム可能な視覚化装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、一般に場面の視覚化に関し、さらに具体的には、プログラマブル・ハードウェアにおけるセグメンテーション、レイ・トレーシングおよびレンダリングのような視覚化タスクを行うためのハードウェア・システムである、グラフィック・データを処理するためのプログラム可能な視覚化装置に関する。
【０００２】
【従来の技術】
視覚化システムにおいては多くのグラフィック成分を処理して複雑な場面を正確に表す必要がある。視る人が関心領域に注意を集中できるように場面をセグメント化する必要がある場合もある。複雑な表面については、プログラマブル・シェーディングとテクスチャ・マップが要求され、リアルな照明のモデル化を行うためにリアルなライティングが必要とされる。従来技術によって、高品質の複雑な場面の描画にかかる時間量を低減することを目的とするいくつかの手法が開発されている。これらの手法には、淘汰(culling)、遅延評価、リオーダリングおよびキャッシング(caching)が含まれる。
【０００３】
通常、これらの手法では、手近な特定の視覚化タスクに依存して、ハードウェアまたはソフトウェアによる解決策を利用することができる。ソフトウェアによる解決策は処理を行い易いがリアルタイムの視覚化タスクには役立たない。プログラマブル・ボリュームの視覚化タスクを行うための効率的なハードウェア・アーキテクチャの設計は、これに関わる複雑さに起因して極度に困難である。したがって、ほとんどのハードウェアによる解決策は特定用途向けのものである。
【０００４】
例えば、レイ・トレーシングは照明技術用として広く利用され、コンピュータ・グラフィックの分野でリアルな画像が作成されてきた。レイ・トレーシングでは光線は単一の視点から生成される。光線は場面の中をずっとトレースされる。光線が場面の成分に出会うと、光線はリアルに反射し、屈折する。反射し、屈折した光線はさらに反射し、屈折しつづける場合もある。言うまでもなく、単純な場面においてさえ光線の数は指数的に増加する。この理由によって、レイ・トレーシングはジオメトリ(例えばポリゴンやパラメトリック・パッチ(parametric patched)によって定義された場面のみに限られてきた。ボリューム・データ中のレイ・トレーシングは一般に難しい問題として認識されてきた。
【０００５】
ボリュームの視覚化を行うためにはより単純なレイ・キャスティングが一般に利用される。レイ・キャスティングとは反射光や屈折光のないレイ・トレーシングである。レイ・キャスティングでは、反射光と屈折光の影響は無視され、リアルな照明を出力する試みは他の手法によって処理される。しかし、比較的単純なレイ・キャスティングでもボリューム・データの視覚化を行うには依然として高価な計算費用を要する。この理由のために、従来技術による解決策によって特定目的用ボリューム・レンダリング・アーキテクチャが一般に提案されてきた。
【０００６】
最近、レイ・トレーシング・ジオメトリ・モデルのハードウェアによる加速が提案されている(「www.artrender.com/technology/ar250.html.」のＡＲＴ参照)。このＡＲＴ設計には、次の光束をトレースする前にそれらの光束の終点までずっと光束をトレースする並列レイ・トレーシング・エンジンが含まれる。この入力場面データはホストのメイン・メモリに保存され、全てのプロセッサ・エレメントへ伝送された。シェーディング・サブシステムにはプログラマブル・コプロセッサを含み、同時にレイ・トレーシング・エンジンはＡＳＩＣを導入したものであった。
【０００７】
Ｇｕｎｔｈｅｒ他は、「ＶＩＲＩＭ：医学におけるリアルタイム・ボリューム視覚化用大規模並列プロセッサ」(第９回グラフィックス・ハードウェアに関するユーログラフィクス(Eurographics)ワークショップ会報、ｐ.１０３〜１０８、１９９４年)の中で、並列ハードウェアについて記載している。彼らのＶＩＲＩＭアーキテクチャはハイデルベルグ(Heidelburg)レイ・キャスティング・アルゴリズムのハードウェアによる実現であった。ボリューム・データは各モジュール内で複製された。ＶＩＲＩＭシステムは、４つのモジュールを用いて２５６×２５６×１２８個のボリュームについて１０Ｈｚを達成することができた。しかし各モジュールは３枚の基板を使用し、そのため合計１２枚の基板を備えることになった。
【０００８】
Ｄｏｇｇｅｔｔ他は、「ＰＣＩベースの双方向ボリューム・レンダリング用低コストメモリ・アーキテクチャ」(グラフィックス・ハードウェアに関するSIGGRAPH−ユーログラフィクス(Eurographics)ワークショップ会報、p.７〜１４、１９９９年)の中で、画像順序ボリューム・レンダリングを実現したアーキテクチャについて記載している。ボリュームはレンダリング用基板のＤＩＭＭに保存された。各サンプルはそのサンプルに必要なボクセルの近傍を２度読み込む。データのバッファリングは行われなかった。システムには光線の生成用プログラマブルＤＳＰが含まれ、一方残りのパイプラインはＦＰＧＡまたはＡＳＩＣであった。
【０００９】
Ｐｆｉｓｔｅｒ他は、「ボリュームＰｒｏリアルタイム・レイ・キャスティング・システム」(SIGGRAPH９９の会報、ｐ.２５１〜２６０)の中で、ボリュームの中を通って投射される光線に沿ってサンプルを処理したＡＳＩＣパイプラインを用いてリアル・タイム・ボリューム・レンダリングを行うパイプライン化されたレンダリング・システムについて記載している。キューブ４は新しいメモリ・スキューイング方式を利用して隣接ボクセルへの回線競合のないアクセスを提供するものである。ボリューム・データは後で再利用するためにチップ上でＦＩＦＯキューに記憶された。
【００１０】
これらすべての設計によってＡＳＩＣパイプラインが利用され、高いフレーム率の描画を必要とする多数のボリューム・サンプルが処理された。これらのシステムのコスト・パフォーマンスは、スーパーコンピュータ、特定目的グラフィック・システム、汎用グラフィック用ワークステーションによる最先端のボリューム・レンダリングを上まわるものである。
【００１１】
様々な視覚化上の問題はセグメンテーションと関係する。医学用アプリケーションでは、データの各スライスは手でセグメント化され、次いで、再構成されて３Ｄモデルのオブジェクトへ変換された。現在の商用ソフトウェアではセグメント・スライスに対してツールとインターフェースが与えられているが、これはまだ２Ｄモデルを対象とするものにすぎない。３Ｄの結果の検査は、完了するのに現在数分かかるモデル構築ステップを必要とする。これではリアルタイム・レンダリングには役に立たないことは明らかである。この時間を減らすためには、手ではなく、ダイレクト３Ｄセグメンテーション機能とダイレクト・ボリューム・レンダリング(ＤＶＲ)とを利用して、ボリューム・データに対するセグメンテーションとレンダリングを行うほうがよい。
【００１２】
しかし、３Ｄセグメンテーションは依然として複雑でかつ動的なので完全な自動化は不可能であるため、若干量のユーザー入力を必要とする。１つの着想として、ユーザーがセグメンテーションの方向のかじ取りを行って最終的に所望のオブジェクトを取り出すことを可能にすることにより、人間の自然で複雑な認知能力を必要とするスキルを利用しながら、セグメンテーション処理とレンダリングの高価な計算費用を要するタスクを行うためにコンピュータを利用するというものがある。
【００１３】
従来技術によるセグメンテーション手法では複雑なオブジェクト認識処理手順を用いる場合もあれば、所望のセグメンテーション処理を行うために連結してシーケンスに変換する低レベルの３Ｄ形態関数が提供される場合もある。この一連の低レベルの関数はセグメンテーション「処理」と呼ばれる。これらの低レベルの関数には閾値、侵食(erode)、拡張(dilate)、フラッド・フィル(flood-fill)のような形態演算が一般に含まれる。医学用セグメンテーション・システムの典型的ユーザーが直感的でかつ簡単に使用できるように上記の方法が示されてきた。ユーザーがこの処理に対する制御を行うので、ユーザーには結果に対する信頼感が与えられる。
【００１４】
別のシステムでは、セグメンティングを行っている間双方向のフィードバックがユーザーに与えられる。低レベルの関数が適用された後、結果として得られるセグメント化されたボリュームがユーザーに対して表示され、ユーザーは次に行うオペレーションを選択することが可能になった。１つの演算結果によって、ユーザーは次の機能・関数の選択時に助けられた。したがって、双方向は一度に１つの低レベルの関数に限定された。ユーザーは長いシーケンスのステップを作成してある一定のセグメンテーション上の問題を処理し、シーケンスの最中で低レベルの関数のうちの１つに対してパラメータを変化させた効果を見たい場合、フィードバックは３Ｄインタラクティブにならない。代わりに、ユーザーはその処理で繰り返し各ステップの中を一歩ずつ進み、毎回パラメータを変化させざるを得なかった。さらに、汎用プロセッサの使用に起因して、これらの機能を行うのに要する時間は５乃至９０秒、そしてその結果の描画にプラス１０秒要していた。
【００１５】
ある代替システムでは、現在表示されているボリュームの３つの直交スライスに対してセグメンテーションだけを行うこともできる。セグメンテーションは３つの２Ｄスライスに限定されていたので、毎回最初からセグメンテーション「処理」全体を行うことができた。したがってユーザーは、関数用パラメータの調整を行う制御をスライドさせながら、双方向のフィードバックを行うことができた。遺憾ながら、ボリュームの３Ｄ投影は完了するのに数分もかかることがあった。さらに、３次元では領域が大きくなり、元のスライスへ戻る場合もあったので、２Ｄ連結成分の処理を行う同様のアプローチは存在しなかった。したがって連結された成分の処理は低速のフィードバックに限定された。
【００１６】
最近、同じ低レベルの機能のシーケンス処理を行う分散処理環境が提案された。この解決策によって、ボリューム・セグメンテーションにおける高レベルのデータの並列処理が認められ、ＤＥＣｍｐｐ１２０００大規模並列プロセッサを利用してこの並列処理が行われた。ＤＥＣｍｐｐはＰＥのＭａｓＰａｒ ＳＩＭＤメッシュの装置(導入)である。このプロセッサのパフォーマンスが非常に小さな９６3のボリュームのサンプル・データについて測定された。Ｍｏｏｒｅの法則による今日の技術から高速のクロックレートと２５６3のボリュームに対してこのパフォーマンスの外挿を行うには１.１４秒の時間を要するであろう。
【００１７】
最近、ＣＭ-２００ＳＩＭＤ大規模並列プロセッサで低レベルのセグメンテーション演算を行うことが提案された。１２８2個のＰＥのメッシュを利用することにより、２５６3のボリュームに対して１回の演算当たり０.６〜１.３秒の間で各低レベルの演算を行うことが可能であった。今日のより高速な技術をもってしても、少数の低レベル・タスクを処理するのでさえ１回の演算当たり０.３〜０.６５秒の非双方向フレーム・レートを必要とする。
【００１８】
キャッシングによるデータ・コヒーレンスの利用は、コンピュータ・グラフィックにおいて効率を高めるもう１つの周知の手法である(Ｓｕｔｈｅｒｌａｎｄ他著「１０の隠された面のアルゴリズムの特徴づけ」、コンピューティング・サーベイ６(１)、ｐ.１〜５５、１９７４年３月参照)。計算のコヒーレンスの増加によって使用メモリ量と、計算に必要な時間およびこれら双方の低減が可能となる。レイ・トレーシングを用いるシステムでは、場面の中を進む光線のコヒーレンスが走査光線ツリーによって増加し、光線を処理してコヒーレント束の中へ入れることがある。
【００１９】
同様に、共通の起源を持つ光線を集めて円錐台に変えることができる。これによってオブジェクトとの交差を見つけ出す時間が減少する。画像平面にわたるスペース・フィリング・カーブを用いて光線をリオーダーし、深さ優先レイ・トレーサで放出光線(spawned ray)のコヒーレンスの改善を図ることができる。モンテカルロ(Monte Carlo)レイ・トレーシング・システムの設計では、プロセッサ・キャッシュからディスク保存までのすべてのメモリ階層レベルにわたってコヒーレンスの改善が行われるようになっている。
【００２０】
Ｐｈａｒｒ他は、「メモリ・コヒーレント・レイ・トレーシングを用いた複雑な場面のレンダリング」(ＳＩＧＧＲＡＰＨ９７の会報、p.１０１〜１０８)の中で、キャッシュされたレイ・トレーシング・システムについて記載している。このシステムでは、テクスチャ・タイル、場面ジオメトリ、待機光線および画像サンプルがディスクに保存された。カメラによって生成された光線は分割されてグループになった。メイン・メモリに保存された場面に依存して、また、光線の処理がレンダリング作業を進める程度に依存して、このグループの光線の処理を行うスケジュールが立てられた。スケジュールされた光線は並んでメイン・メモリに記憶された。場面ジオメトリは必要なものとしてメイン・メモリに加えられた。レイ・トレーシング中生成された新しい光線が待機光線のキューに加えられた。本質的に、このシステムは、２つのレベルのキャッシュ(ディスクとメイン・メモリ)を持つメモリ階層および単一プロセッサを有するものと考えられる。これは、基本的に、キャッシング問題を解決するためのソフトウェアによる解決策である。また、Ｐｈａｒｒ他は、その時点における単一の画像について論じているにすぎず、彼らのコヒーレンシー・アルゴリズムは単に空間的ローカリティに関係するものにすぎない。
【００２１】
上記システムの設計は、単一タイプのジオメトリ・プリミティブのみを処理することによりある一定の利点を得るようにするためのものであった。「我々のレイ・トレーサの弁別的特徴は単一タイプのジオメトリ・プリミティブすなわち三角形がキャッシュされることである。この事実にはいくつかの利点がある。単一のケースについて光線の交差テストを最適化することができ、異なるタイプのプリミティブを保存するのに必要なスペース量の変動が少なくなるので、ジオメトリ・キャッシュのメモリ管理が容易になる。ただ１つのタイプのプリミティブだけをサポートする場合、描画装置の多くの他の部分を最適化することも可能となる。レイ(REYES)アルゴリズムは単一の内部プリミティブ(マイクロポリゴン)を同様に用いて、シェーディングとサンプリングをより効率的なものにするものである。レイ(REYES)アルゴリズムとは異なり、本発明ではシステムが最適化され大きなデータベースの三角形が処理される。これによってシステムが、走査されたデータ、科学的データおよびモザイク模様のパッチを含む、多種多様のジオメトリの共通ソースを効率的に処理することが可能となる。この単一表現の潜在的欠点は、球のような他のタイプのプリミティブがモザイク模様にされた後に多くの保存用スペースを必要とするという点である。しかしながら、単一表現の利点の方がこの欠点をしのぐことが判明した。」(前掲書ｐ.１０２)。
【００２２】
彼らのジオメトリ・キャッシュは、いわゆる「ボクセル」すなわち三角形を取り囲むジオメトリ・グリッドの中で組織化された。レイ・トレーシングでは、「ボクセル」という用語はボリューム・レンダリングにおける意味とはまったく異なる意味を持つことに注意されたい。ボリューム・レンダリングでは、ボクセルとは３次元(ボリューム)データ・セット中の単一サンプルである。以下の説明でこれらの全く異なる意味を区別するために、「ボクセル」という用語は常にボリューム・サンプルを意味し、「ブロック」という用語はキャッシュの粒状性(granularity)を指すものとする。Ｐｈａｒｒ他はブロック・サイズされた量で三角形をキャッシュした。１ブロック当たり数千個の三角形によって、キャッシングを行うのに好適なレベルの粒状性が生み出された。しかし、さらに細かな粒状性を求めて数千個の三角形を収める加速グリッドも使用された。
【００２３】
処理対象ブロックのスケジュールを行う目的で、各ブロックについてコスト値と利益値とが関連づけられた。コストはブロックの処理計算上の複雑さに基づき、利益は計算の完了へ向けてどれだけの進行が達成されるかによって推定された。彼らのスケジュラはこれらの値を用いて最高の対コスト利益率を持つブロックを選択することにより処理対象ブロックの選択を行った。
【００２４】
三角形のような２つ以上の単一グラフィック・プリミティブで表現される場面の描画をレイ・トレーシングを用いて行うことが望ましい。さらに、ソフトウェアとハードウェア・キャッシュを用いることにより追加的パフォーマンスの改善を図ることが望ましい。さらに、単純なコスト対利益アルゴリズム以上にブロック・スケジューリングを改善することが望ましい。また、画像のシーケンスすなわちフレームを描画し、空間的コヒーレンスに加えて時間的コヒーレンスを提供することも望まれる。さらにプログラマブル・ハードウェア・アーキテクチャを設けて複雑な視覚化タスクを行うことが望ましい。
【００２５】
【発明が解決しようとする課題】
サンプル値データとジオメトリ・データの双方のための改善されたレイ・トレーシング・アーキテクチャを提供することが本発明の目的である。このサンプル値データは２Ｄ、３Ｄあるいはさらに高次のサンプル値データであってもよい。ジオメトリ・データはポリゴン、パラメトリック・パッチあるいは分析的に定義されたデータであってもよい。階層メモリに埋め込み型ＤＲＡＭ技術を提供して、リアルタイム・レンダリング・レートを達成することがもう１つの目的である。複数のレベルのメモリ・コヒーレンシーを用いて１桁大きいパフォーマンスの改善を図ることがさらなる目的である。セグメンテーション、レイ・トレーシング・レンダリングおよびその他のグラフィック処理をサポートするプログラム可能な視覚化エンジンを提供することもまた１つの目的である。
【００２６】
さらに具体的には、本発明は、グラフィック・データを処理するためのプログラム可能な視覚化装置を提供するものである。該装置には視覚化アプリケーションを実行するための中央処理装置と、スケジュラとが含まれる。第３のレベルのメモリは中央処理装置と接続している。第３のレベルのメモリはグラフィック・データを記憶する。グラフィック・データは分割されて複数のブロックになる。第２のレベルのメモリはシステム・バスによって中央処理装置と接続している。第２のレベルのメモリは複数のブロックのサブセットを記憶する。第１のレベルのメモリはメモリ・バスにより第２のレベルのメモリと接続している。
【００２７】
スケジュラは第１のレベルのメモリの中にブロックの順序付けられたリストを記憶する。プロセッサ・エレメントはプロセッサ・バスによって第１のレベルのメモリと接続している。ディスパッチャは第１、第２、第３のメモリおよびプロセッサ・エレメントと接続している。該ディスパッチャは、ブロックのリストの順序に従って、第３のレベルのメモリから第２のレベルのメモリへ、および、第２のレベルのメモリから第３のレベルのメモリへブロックを転送する。
【００２８】
さらに具体的には、ある方法によってグラフィック・データの中を光線がトレースされる。該グラフィック・データにはサンプルされたジオメトリ・データが含まれる。該方法は、スケジューリング・グリッドに従ってグラフィック・データをパーティションに分割して複数のブロックにする。各ブロックについてレイ・キューが生成される。レイ・キューの各エントリはブロックの中でトレースされる光線を表す。これらのレイ・キューは、依存状態グラフを用いて空間的および時間的順序で並べられる。この順に並べられたリストに従って光線はブロックの中を通ってトレースされる。
【００２９】
【課題を解決するための手段】
上記の目的に鑑み、この発明は、グラフィック・データを処理するためのプログラム可能な視覚化装置であって、視覚化アプリケーションとスケジュラとを実行するための中央処理装置と、中央処理装置に接続され複数のブロックに分割された前記グラフィック・データを記憶する前記第３のレベルのメモリと、システム・バスによって前記中央処理装置に接続され複数のブロックのサブセットを記憶する第２のレベルのメモリと、メモリ・バスによって前記第２のレベルのメモリと接続された第１のレベルのメモリであって、順に並べられたブロックのリストが前記スケジュラによって記憶される前記第１のレベルのメモリと、プロセッサ・バスによって前記第１のレベルのメモリと接続したプロセッサ・エレメントと、前記第１、前記第２、前記第３のレベルのメモリおよび前記プロセッサ・エレメントと接続され、前記リストのブロックの順序に従って前記第３のレベルのメモリから前記第２のレベルのメモリへおよび前記第２のレベルのメモリから前記第３のレベルのメモリへブロックを転送するためのディスパッチャと、を備えたことを特徴とする装置にある。
【００３０】
また、前記第１のレベルのメモリと、前記プロセッサ・エレメントと、前記ディスパッチャとが特定用途向け集積回路として構成されることを特徴とする請求項１に記載のグラフィック・データを処理するためのプログラム可能な視覚化装置にある。
【００３１】
また、前記特定用途向け集積回路がシステム・バス・インターフェースとメモリコントローラとを含むことを特徴とする請求項２に記載のグラフィック・データを処理するためのプログラム可能な視覚化装置にある。
【００３２】
また、前記特定用途向け集積回路と前記第２のレベルのメモリとがシステム・バスに接続される基板上に構成されることを特徴とする請求項１に記載のグラフィック・データを処理するためのプログラム可能な視覚化装置にある。
【００３３】
また、前記グラフィック・データがサンプルされたデータとジオメトリ・データであることを特徴とする請求項１に記載のグラフィック・データを処理するためのプログラム可能な視覚化装置にある。
【００３４】
また、前記サンプル・データがボリューム・サンプルであることを特徴とする請求項５に記載のグラフィック・データを処理するためのプログラム可能な視覚化装置にある。
【００３５】
また、前記サンプル・データが画像サンプルであることを特徴とする請求項５に記載のグラフィック・データを処理するためのプログラム可能な視覚化装置にある。
【００３６】
また、前記リスト中の前記ブロックの順序が時間的かつ空間的であることを特徴とする請求項１に記載のグラフィック・データを処理するためのプログラム可能な視覚化装置にある。
【００３７】
また、複数のブロックの依存状態グラフを生成してブロックの空間的および時間的順序を決定する手段をさらに備えたことを特徴とする請求項７に記載のグラフィック・データを処理するためのプログラム可能な視覚化装置にある。
【００３８】
また、前記視覚化アプリケーションが、前記グラフィック・データの中を通って光線をトレースし、該トレースされた光線によって前記ブロックの順序が決定されることを特徴とする請求項１に記載のグラフィック・データを処理するためのプログラム可能な視覚化装置にある。
【００３９】
また、前記視覚化アプリケーションがグラフィック・データを分割することを特徴とする請求項１に記載のグラフィック・データを処理するためのプログラム可能な視覚化装置にある。
【００４０】
また、前記プロセッサ・エレメントが前記複数のブロックを処理することを特徴とする請求項１に記載のグラフィック・データを処理するためのプログラム可能な視覚化装置にある。
【００４１】
また、複数のプロセッサ・エレメントを含むことを特徴とする請求項１に記載のグラフィック・データを処理するためのプログラム可能な視覚化装置にある。
【００４２】
【発明の実施の形態】
論理アーキテクチャ
図１はサンプル値データ(ボリュームまたは画像)とジオメトリ・データ(ポリゴンとパッチ)の視覚化を行うための本発明によるシステム１００を図示するものである。論理的には、システム１００はメモリと帯域幅の階層を用いて、オンチップまたはオンボードメモリにぴったり合うサイズ以上にデータ・サイズが増加する影響を低減するようにするものである。該システムには、複数のプロセッサ・エレメント(ＰＥ)１０１〜１０３、第１のレベルのキャッシュ１１０、第２のレベルのキャッシュ１２０および第３のレベルのキャッシュ１３０が含まれる。キャッシュとプロセッサ・エレメントはバス１４０によって相互に接続される。
【００４３】
図１ではトップからボトムへメモリ階層が小さくなり、一方帯域幅は大きくなる。したがって、各レベルは次に高いレベルのキャッシュとして機能する。データ・セット全体はメモリ階層の最低レベルまたは中間レベルにさえぴったり合う必要はない。しかし、最終画像に貢献するデータ・セットの部分がフレームからフレームへ、すなわち時間の経過と共に所定のレベルの中へぴったり合う場合、そのデータ・セットにアクセスしながら、ＰＥはより高い帯域幅を利用することができる。
【００４４】
物理的アーキテクチャ
図２は本発明による視覚化システムの物理的表現２００を示す図である。このシステムには、バス２４０によって接続される、ＣＰＵ(中央処理装置)２１０、メイン・メモリ２２０および視覚化サブシステム２３０が含まれる。このシステムはまたＣＰＵ、メイン・メモリおよびバスを相互に接続するブリッジ２５０を含むことができる。
【００４５】
本発明によれば、このサブシステムは「プラグイン」ボードとして構成される。視覚化サブシステム２３０には、メモリ・バス２０７によってＤＲＡＭ２０６と接続した特定用途向け集積回路(ＡＳＩＣ)２０５が含まれる。ＡＳＩＣ２０５には、バス２９０によって接続した、プロセッサ・エレメント(ＰＥ)２０１〜２０４、内蔵ＤＲＡＭ(ｅＤＲＡＭ)２６０、ＰＣインターフェース(ＰＣ/ＩＦ)２７０、メモリ・コントローラ２８０およびディスパッチャ２９２が含まれる。１つの実施の形態では、ＡＳＩＣによってコヒーレント・レイ・トレーシングが行われる。他のアプリケーションにはセグメンテーションとモデリングが含まれる場合もある。
【００４６】
ＣＰＵ２１０は、標準的マイクロプロセッサ(例えばインテル社製ペンティアムTM・チップ)であればいずれのものであってもよい。メイン・メモリ２２０はＳＩＭＭまたはＤＩＭＭから成るものであってもよい。視覚化サブシステムの基板２３０はＰＣシステム・バス２４０(このバスは例えばＰＣＩ、ＡＧＰ、あるいはＳＧＩのＩＶＣであってもよい)にプラグインすることができる。ＤＲＡＭ２０６はＳＤＲＡＭまたはダイレクトＲａｍＢＵＳであってもよい。ＡＳＩＣ２０５には、少なくとも１つの処理ユニット並びに少なくとも１つのバンクの中に組織化されたｅＤＲＡＭメモリが含まれる。例えば、三菱電機製のＭ３２チップを使用してもよい。Ｍ３２には単一のＰＥが含まれる。最新のｅＤＲＡＭ技術を備えたＡＳＩＣによって複数のＰＥが可能になり、従来のものよりずっと大きなオンチップメモリを持つことが可能になる。プロセッサ・エレメントはチップ内部のローカルな内蔵メモリと通信を行うとき非常に高い帯域幅を有する。１つのＡＳＩＣ当たり複数のＰＥを備えた複数のＡＳＩＣによって基板に対してさらに大きなパフォーマンスが生み出される。このシステム・アーキテクチャは、ｅＤＲＡＭデバイスに現在保存されたデータを迅速にＰＥへ転送するこの帯域幅を利用するものである。
【００４７】
通常のサイズのデータ・セットはｅＤＲＡＭの範囲にぴったり合うことはない。したがって、外部ＤＲＡＭメモリ２０６を利用してＡＳＩＣの内のプロセッサ・エレメントでデータを利用する準備ができるようになるまで、データを保存することができる。ＤＲＡＭの範囲にぴったり合わない非常に大きなデータ・セットについては、サブシステムでデータの処理を行う準備ができるようになるまでメイン・メモリを利用する。これによって、データ参照のローカリティを最適化する論理設計から３段のメモリ階層が形成される。
【００４８】
メモリ・コヒーレンス
レイ・トレーシング・アプリケーションでは、サブシステムによって処理の対象となるデータのメモリ・コヒーレンシーが最適化される。ブロックのメモリ領域にアクセスすることにより、また、別のブロックへ移動する前に各ブロックに対して可能な限り多くの処理を行うことによりこの最適化は行われる。本発明による処理ではブロックが順に並べられ、行うべき多量の作業があるブロックの処理を行ってから、作業量の少ないブロックの処理が行われる。また、たとえ前のブロックの方の処理作業量が少ない場合でも、後のフレームに使用されるブロックよりも先に前のフレームに使用されるブロックが並べられる。
【００４９】
しかし、本発明によるレイ・トレーシング・サブシステムは、従来のボリューム・レンダリング用アクセラレータで利用される場合のような厳密な処理オーダー・シーケンスに従うものではない。代わりに、行うべき作業は３次元ブロックにグループ分けされる。例えば、光線が投射されたり、トレースされたり、あるいはセグメンテーションが行われたりするブロック処理が行われる順序は、ｅＤＲＡＭメモリに「最も近く」てしかも最大数の結果を出力するブロックを次に処理する順序に従う。以下に説明する発見的方法はブロック処理の順序を決定する方法である。
【００５０】
立体オブジェクトと埋め込み型ポリゴン・オブジェクトとの混合が存在するレンダリング・アプリケーションを実行するために、該システムでは「レイ・キュー」が利用される。セグメンテーションのようなボリューム処理アプリケーションを実行するために、別の方法(metric)を用いて空間的および時間的領域の双方におけるブロックのコヒーレントな順序付けが行われる。
【００５１】
図３は、スケジューリング・グリッド３０２に従って描画対象の３Ｄ場面３００をブロック３０１に分割する方法を示す２Ｄトップ・ダウン・ビューを示す図である。データが交差するスケジューリング・グリッドのブロック間ですべてのサンプルされたジオメトリ・データ３１０が配分される。光線３３０が視点３４０から発出する。この光線は従来の方法で生成してもよい。レイ・キュー３２０は各ブロック３０１と関連付けられる。レイ・キューの各エントリ３２１は、そのブロックと現在交差する光線３３０のうちの１つの光線であって、スケジューリング・グリッド・ブロック３０２内に保存されているデータを用いて処理されるべく待機している光線を指定する。
【００５２】
光線を指定するデータにはその(x、y、z)位置と、次のトレース・ステップ位置のための増分(.x、.y、.z)と、現在蓄積されている光線のＲＧＢ値とが含まれる。
【００５３】
図４は、本発明によるレイ・トレーシング方法による処理とデータの流れを図示するものである。システムの中心部に、スケジュラ４１０と、先入れ先出し(ＦＩＦＯ)バッファ４１５を介してデータを通信するディスパッチャ４２０とがある。このスケジュラは、スケジューリング・グリッド３０２、光線リスト４０１などのアプリケーションについての詳細情報を持っている。リスト４０１の各エントリ４０２はレイ・キュー３２０のうちの１つを指す。
【００５４】
スケジュラは以下に説明する発見的処理を用いて、どのブロックを処理の対象とすべきか、および、どの順序で処理すべきかの決定を行う。この発見的処理は視覚化アプリケーションに特有の方法である。スケジュラは、ＦＩＦＯバッファ４１５のディスパッチャによって処理するブロックのリストを保存する。ディスパッチャは個々のプロセッサ・エレメント２０１〜２０４へブロックを転送する。またディスパッチャは、３つのレベルのメモリ階層(１１０、１２０、１３０)間でサンプルされたジオメトリデータ３１０の動きの制御を行う。このようにして、スケジュラによって処理対象ブロックが割り当てられるとき、プロセッサ・エレメント２０１〜２０４の各々に対して正しいデータが利用可能になることが保証される。ＦＩＦＯバッファにブロックが配置された後、スケジュラは、専用の視覚化アプリケーションとは独立に、可能な限りＰＥに接近するようにブロックの移動を試みる。
【００５５】
データはレベルに依存する異なるサイズの塊(chunk)でメモリのレベルの中を移動する。例えば、ある特定フレームのボリューム・データを階層的空間的下位区分に分割することができる。したがって、プロセッサ・エレメントがボリューム・データを必要とし、そのデータが最高レベルのメモリ階層にしか存在しないとき、大きな塊のボリュームは次の低いレベルへ動かされ、次いで、プロセッサ・エレメントにもっとも近い最低レベルまでずっと動かされることになる。
【００５６】
最初、データはメイン・メモリ２２０に記憶される。ＣＰＵ２１０は最初の光線情報を生成し、レイ・キュー３２０をロードする。ディスパッチャは、第１のブロックが処理を行う準備ができたとき、基板２３０のＤＲＡＭ２０６へデータ転送を開始する。ｅＤＲＡＭ２６０の中へ直接ブロックをロードしてもよい。実際の作業では、メイン・メモリからの単一の読み込みとオンボードＤＲＡＭとＡＳＩＣ ｅＤＲＡＭ双方への同時的書き込みを行うことによって上記を行うことができる。
【００５７】
ブロックが処理されると、現在のブロックのレイ・キューが読み込まれ、サンプルされたジオメトリ・データと光線をブロックの中で交差させる方法が決定される。光線がブロックから出て、次のスケジューリング・グリッド・ブロックに入るとき、この情報は、次のブロックのために適切なレイ・キューに配置される。レイ・キャスティングを行うために光線が完全な不透明度に達した場合、情報が元のレイ・キューの中へ戻ることはない。
【００５８】
プロセッサ・エレメントが現在のブロック処理を完了した(すなわち、現在のブロックのキューにもはや光線が存在しない)とき、プロセッサ・エレメントはＰＥのための新しい処理ブロックを選択するようにスケジュラに信号を出す。スケジュラは、発見的方法に従って、レイ・キューの現在の状態およびメモリの現在の状態に基づいて最適のブロックを選択する。(レイ・キャスティング用として)すべてのレイ・キューが空になったとき、処理は完了し、表示や印刷を行うために画像サンプルを収集することができる。
【００５９】
スケジューリング・アルゴリズム
以下のスケジューリング・アルゴリズムを用いてブロックの処理順序を選択することができる。
【００６０】
ＭＡＸ作業
このアルゴリズムは、例えば、処理を待機しているそのレイ・キューの中で最大数の光線を含むブロックのスケジュールを決めるものである。
【００６１】
ＭＡＸロード作業
このアルゴリズムは、最低レベルの(したがってプロセッサ・エレメントに最も近い)メモリ階層の中へロードされたブロックを調べ、そのブロックのキューの中で最大数の光線を持つブロックを選択するものである。すべてのロードされたブロックが空のレイ・キューを有する(すなわち行うべき作業がが存在しない)場合、たとえメモリ階層中に次善(next best)のブロックが現在記憶されていても、ＭＡＸ作業アルゴリズムを用いて、スケジュール対象の次善(next best)のブロックが選択される。
【００６２】
ジオメトリック
このアルゴリズムは、第１の光線(すなわち、反射も屈折も存在しない)光源またはビューイング円錐台(viewing frustum)のいずれかから発する光線はすべてその発生点から外へ向かって進むという事実を利用するものである。したがって、ブロックは、光線の発生点すなわち視点３４０に最も近い地点から光線の発生点から最も遠い地点へという順序で処理される。したがって、そのブロックの中へ任意の光線を送ることができるすべてのブロックは、任意のブロックが処理される前に、既に処理されてしまっていることになる。このようにして各ブロックは一度で正確に処理が行われる。言うまでもなく、この処理は、放出光線が共通の発生点を持たずにほとんどランダムな方向に進む場合には、レイ・トレーシングについて当てはまらない。そのため他のアルゴリズムも依然として必要とされる。
【００６３】
依存状態グラフ
最適の処理対象ブロックの測定値としてレイ・キュー中の光線の数を用いる代わりに、この方法では依存状態グラフが利用される。この方法では時間にわたるフレーム間のコヒーレンスが利用される。各フレームについて依存状態グラフが生成される。この依存状態グラフは、どのブロックが他のどのブロックへ光線を送っているかを示すものである。後のフレームについては、視点(すなわちカメラ・アングル)はおそらくほんの少量しか動いていない。したがって、前のフレーム用として使用されたブロックのほとんどは次のフレームについてもまだ有効である。したがって、他のどのブロックより前にどのブロックを処理したほうがよいかを推定する１つの指針として前のフレームから作製したグラフを利用することが可能である。
【００６４】
図５の(ａ)は、視点５０２からスケジューリング・グリッド５０３の中を通る投射光線５０１の一例を示す図である。前の光線がまだ終了点に達していない場合、若干の光線が５つのブロックを走査する可能性がある。図５の(ｂ)は依存状態グラフ５１０を図示する。このグラフでは、ノード５１１はブロックであり、矢印のついたエッジ５１２は１つのブロックを出て次のブロックに入る光線を示している。図５の(ｂ)ではブロックからブロックへの光線の流れを見ることは難しい。図５の(ｃ)は図５の(ｂ)と同じ依存状態グラフを図示するものであるが、すべての矢印のついたエッジがトップからボトムへ流れるようにノードが並べ替えられている。ここでは、ブロックを処理する最適順序が明瞭である。
【００６５】
レイ・キャスティングを用いて単純な２Ｄの３×３からなるスケジューリング・グリッドについて、依存状態グラフを描いて、ブロックの最適の処理順序を決定できるようにこの依存状態グラフを並べ替えることは簡単である。しかし、システム１００のスケジューリング・グリッドは相当のサイズの３Ｄサンプル値データとなる可能性がある。このため手による分析を行うことは困難であるものの、計算によって最適順序を解くことは依然として可能である。
【００６６】
さらに、本発明によるシステムはレイ・トレーシングをもサポートするものである。図６の(ａ)は、あるレイ・トレーシングを行うための同じ単純な３×３からなるスケジューリング・グリッド５０３を示し、この場合、オブジェクト６００はグリッドの中心に配置され、さらに、これらの光線には反射光線６０１が含まれる。図６の(ｂ)には、対応する依存状態グラフ６１０が処理ブロックの順序を示すには明瞭でないことが示されている。点線のエッジ６１１は、グラフでサイクルを生じる２次反射光線６０１に起因する依存性を示す。１つの順序では１次光線は反射光線の前に処理される。
【００６７】
図７の(ａ)と(ｂ)にはどのようにして時間的コヒーレンスに達するかが示されている。図７の(ａ)では、グリッド７００はグラフィック・オブジェクト７０１(例えば球)にスーパーインポーズされる。レイ・トレーシングに必要なブロック７０２は黒(ハッチング)で示されている。時刻ｔ0におけるフレームの光線７０３はカメラ位置７０４から生成される。時刻ｔ1でカメラ位置７０５はシフトしている。次のフレームのために多数のブロックを再利用することができる。そしてこれらのブロックは最低レベルのキャッシュの中にそのまま残る。新しいブロック７０７(粗いハッチング部分)だけを特定する必要がある。
【００６８】
置換アルゴリズム
ディスパッチャが特定のメモリの中へブロックをロードする必要があり、記憶領域がいっぱいに満たされているとき、以前に記憶された若干のブロックを除去する必要がある。以下の置換アルゴリズムを用いて除去対象ブロックの選択を行うことができる。
【００６９】
ランダム・アルゴリズム
これは、新しいブロックのためにスペースをあけるためのランダムな除去用ブロックの選択だけを行う単純な置換アルゴリズムである。場合によっては、このブロックはすぐに必要となるブロックになる場合もある。
【００７０】
ＭＩＮ作業
これは、ＭＡＸ作業スケジューリング・アルゴリズムと論理的に正反対のものである。このアルゴリズムは、多数の光線を持つブロックの前に処理対象の少数の光線を持つブロックを置き換えるものである。
【００７１】
依存状態グラフ
これは、スケジューリング・アルゴリズムと同様に、フレーム間コヒーレンスと、前のフレームからつくられた依存状態グラフとを利用するものである。
【００７２】
推奨される実施の形態を挙げて本発明について説明してきたが、本発明の精神と範囲の中で様々な適合化と改変を行うことが可能であることが理解されるであろう。したがって、本発明の精神と範囲の中に入るものとしてそのようなすべての変更例および改変例をカバーすることが添付の請求項の目的である。
【００７３】
【発明の効果】
以上のようにこの発明によれば、グラフィック・データを処理するためのプログラム可能な視覚化装置であって、視覚化アプリケーションとスケジュラとを実行するための中央処理装置と、中央処理装置に接続され複数のブロックに分割された前記グラフィック・データを記憶する前記第３のレベルのメモリと、システム・バスによって前記中央処理装置に接続され複数のブロックのサブセットを記憶する第２のレベルのメモリと、メモリ・バスによって前記第２のレベルのメモリと接続された第１のレベルのメモリであって、順に並べられたブロックのリストが前記スケジュラによって記憶される前記第１のレベルのメモリと、プロセッサ・バスによって前記第１のレベルのメモリと接続したプロセッサ・エレメントと、前記第１、前記第２、前記第３のレベルのメモリおよび前記プロセッサ・エレメントと接続され、前記リストのブロックの順序に従って前記第３のレベルのメモリから前記第２のレベルのメモリへおよび前記第２のレベルのメモリから前記第３のレベルのメモリへブロックを転送するためのディスパッチャと、を備えたことを特徴とする装置としたので、サンプル値データとジオメトリ・データの双方のための改善されたレイ・トレーシング・アーキテクチャを提供することができる。
【図面の簡単な説明】
【図１】  本発明によるプログラム可能な視覚化システムの論理表現を示すブロック図である。
【図２】  本発明による視覚化システムの物理的表現を示すブロック図である。
【図３】  描画対象場面上にスーパーインポーズされるスケジューリング・グリッドを示すブロック図である。
【図４】  本発明によるコヒーレント・スケジューリングの方法を示す流れ線図である。
【図５】  スケジューリング・グリッドを走査する光線および時間的および空間的順序で並べられた処理ブロックの依存状態を示す図である。
【図６】  反射光線でスケジューリング・グリッドを走査する光線および処理ブロックの依存状態を示す図である。
【図７】  時間にわたってトレースされる光線を示す図である。
【符号の説明】
１００  システム、１０１〜１０３，２０２〜２０４  プロセッサ・エレメント(ＰＥ)、１１０  第１のレベルのキャッシュ、１２０  第２のレベルのキャッシュ、１３０  第３のレベルのキャッシュ、１４０  バス、２０１  プロセッサ・エレメント(ＰＥ)、２０５  特定用途向け集積回路(ＡＳＩＣ)、２０６  ＤＲＡＭ、２０７  メモリ・バス、２１０  ＣＰＵ、２２０  メイン・メモリ、２３０  視覚化サブシステム(基板)、２４０  バス、２５０  ブリッジ、２６０  ｅＤＲＡＭ(内蔵ＤＲＡＭ)、２７０  ＰＣ/ＩＦ(ＰＣインターフェース)、２８０メモリ・コントローラ、２９２  ディスパッチャ、３００  ３Ｄ場面、３０１ブロック、３０２，５０３  スケジューリング・グリッド、３１０  ジオメトリ・データ、３２０  レイ・キュー、３２１，４０２  エントリ、３３０  光線、３４０            視点、４０１  光線リスト、４１０  スケジュラ、４１５ＦＩＦＯバッファ、４２０  ディスパッチャ、５０１  投射光線、５０２  視点、５１０，６１０  依存状態グラフ、５１１  ノード、５１２，６１１  視点のエッジ、６００  オブジェクト、６０１  反射光線、、７００  グリッド、７０１  グラフィック・オブジェクト、７０４，７０５  カメラ位置。
【図１】
0004463948.tif 000002
【図２】
0004463948.tif 000003
【図３】
0004463948.tif 000004
【図４】
0004463948.tif 000005
【図５】
0004463948.tif 000006
【図６】
0004463948.tif 000007
【図７】
0004463948.tif 000008