JP2000357243A - ボクセルメモリを制御する方法、およびメモリへのアクセスを制御するステートマシン - Google Patents

ボクセルメモリを制御する方法、およびメモリへのアクセスを制御するステートマシン

Info

Publication number
JP2000357243A
JP2000357243A JP2000148778A JP2000148778A JP2000357243A JP 2000357243 A JP2000357243 A JP 2000357243A JP 2000148778 A JP2000148778 A JP 2000148778A JP 2000148778 A JP2000148778 A JP 2000148778A JP 2000357243 A JP2000357243 A JP 2000357243A
Authority
JP
Japan
Prior art keywords
memory
voxel
state
rendering
voxels
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2000148778A
Other languages
English (en)
Inventor
Kenneth W Correll
ケニス・ダブリュ・コーラル
James M Knittel
ジェームズ・エム・ニッテル
Jay C Wilkinson
ジェイ・シー・ウィルキンソン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Mitsubishi Electric Information Technology Corp
Mitsubishi Electric Research Laboratories Inc
Original Assignee
Mitsubishi Electric Information Technology Corp
Mitsubishi Electric Research Laboratories Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Mitsubishi Electric Information Technology Corp, Mitsubishi Electric Research Laboratories Inc filed Critical Mitsubishi Electric Information Technology Corp
Publication of JP2000357243A publication Critical patent/JP2000357243A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures

Abstract

(57)【要約】 【課題】 レンダリング操作が可能な限り素早く行わ
れ、確実にリアルタイムレンダリング速さが達成され
る、ボクセルメモリを制御する方法、およびメモリへの
アクセスを制御するステートマシンを提供する。 【解決手段】 ステートマシンは、レンダリングパイプ
ラインによって処理されるボリュームデータ集合を保存
するボクセルメモリを制御する。このステートマシン
は、メモリにおいて周期的にデータをメンテナンスする
ためのプレチャージステートと、複数のレンダリングパ
イプラインへメモリからデータを同期伝送するステート
と、メモリからホストコンピュータへデータを非同期伝
送する読み出しステートと、ホストコンピュータからメ
モリへデータを非同期伝送する書き出しステートとを含
む。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】この発明は、コンピュータグ
ラフィックスの分野に関し、より詳細にはステートマシ
ンで制御されるボクセルメモリに関する。
【0002】
【従来の技術】ボリュームグラフィックスとは、三次元
または三以上の次元でサンプリングされるデータとして
表されるオブジェクトまたは事象の視覚化の処理を行う
コンピュータグラフィックスのサブフィールドである。
こうしたサンプルは、ボリュームエレメント、すなわち
「ボクセル」と呼ばれており、研究対象のオブジェクト
や事象の物理的特性を表現するデジタル情報を含んでい
る。たとえば、特定のオブジェクトまたはシステムのた
めのボクセル値は、内部全体のスペースおよびそのオブ
ジェクトまたはシステム周辺における別個の点におい
て、密度、材質、温度、速さ、またはその他の特徴を表
すことができる。
【0003】ボリュームレンダリングとは、印刷、コン
ピュータの端末における表示、およびその他の形態の視
覚化を行うための、ボリュームデータの二次元画像投影
に関するボリュームグラフィックスの一部である。色や
透明度をボクセルデータ値に割り当てることで、オブジ
ェクトまたはシステムの外部および内部の異なる観察方
向からの表示を行うことができる。たとえば、靭帯、
腱、人のひざの骨を、外科手術に備えて検査しなければ
ならない外科医が、ひざのX線による断層スキャンを利
用することができ、血液、皮膚、筋肉に相当するボクセ
ルデータ値によってこれを完全に透明に表示することが
できる。
【0004】こうしてできた画像によって、外科手術を
行う前には見ることのできない靭帯、腱、骨などの状態
が明らかになるため、手術計画が立てやすくなり、手術
が短時間になり、検査の回数が減り、また早く回復する
ことができる。別の例では、ジェットエンジンのタービ
ンブレードまたは溶接結合のX線による断層スキャンを
使用する機械工が、空気を表すボクセルデータ値を不透
明にする一方で、固体金属を表すボクセルデータ値で透
明に表示することが可能である。こうして、人間の目か
らは隠されていて見えないような金属内部の傷を表示す
ることができる。
【0005】リアルタイムボリュームレンダリングと
は、通常は1秒当たり24または30フレーム、または
もっと高速の、高速連続した一連の画像としてのボリュ
ームデータの投影および表示である。これによって、対
象とするオブジェクト、事象、またはシステムの動く画
像を作成することが可能になる。さらに、人のオペレー
タによって投影のパラメータを相互対話的に制御したり
画像を操作したりすることができることにより、ユーザ
は直ちに視覚的なフィードバックを受けられる。何千万
個、何億個のボクセル値を画像に投影するには、かなり
のコンピュータ容量が必要であると考えられている。リ
アルタイムでこれを行うには、実質的にさらなる計算能
力が必要になる。
【0006】ボリュームレンダリングにおけるさらなる
概略的な背景が、New Jersey州のUpper Saddle River
のPrentice HALL PTRにより1998年に出版され
た、Barthold Lichtenbelt、Randy Crane、Shaz Naqv
iによる「Introduction to Volume RENDERing」
という書籍のなかで説明されている。ボリュームレンダ
リング構造におけるさらなる背景が、1995年8月2
8日および29日、オランダのMaastrichtにおけるthe
10th Eurographics Workshop on Graphics Hardwareで
の、H.Pfister、A. Kaufman、およびT.Wesselsによる発
表の「Towards a Scalable Architecture for Real-tim
e Volume RENDERing」という文書に記載されてい
る。この文書は、「Cube−4」として現在では公知の構
造について述べたものである。
【0007】Cube−4は、1996年12月にStony B
rookのニューヨーク州立大学におけるコンピュータサイ
エンス学部にHanspeter Pfister によって提出された
「Architechtures for Real-Time Volume RENDER
ing」という博士論文、および米国特許第5,594,
842号「リアルタイムボリューム視角化のための装置
と方法」にも記載されている。
【0008】
【発明が解決しようとする課題】リアルタイムの連続画
像として、ボリュームデータ集合を保存するメモリとボ
リュームをレンダリングするプロセッサとの間における
フレキシブルで効率的なインタフェースを設計するに
は、二つの問題に取り組む必要がある。第1に、プロセ
ッサが許容する場合、半導体記憶装置に固有の物理的な
アクセス制限を考慮して、データセットにおけるボクセ
ルの配列を観察方向に関係なく最大限に平行化しなけれ
ばならないということである。最大限に平行化すること
でインタフェースの帯域幅が大きくなる。第2に、メモ
リからプロセッサへのデータ伝送は、メモリに固有の帯
域幅の最大平均をとって、パイプライン接続された(pi
pelined)プロセッサにおける同期要求による伝送遅延
を最小化しなければならないということである。遅延は
機能停止をもたらす。
【0009】この発明は上述した点に鑑みてなされたも
ので、レンダリング操作が可能な限り素早く行われ、確
実にリアルタイムレンダリング速さが達成される、ボク
セルメモリを制御する方法、およびメモリへのアクセス
を制御するステートマシンを提供することを目的とす
る。
【0010】
【課題を解決するための手段】この発明に係るボクセル
メモリを制御する方法は、レンダリング要求とその他の
要求とを含む受信した要求をデコードするステップと、
その他のコマンドの前にステートマシンによって処理さ
れる前記レンダリング要求を選択するステップと、前記
レンダリング要求に応じてメモリからボクセルを読み出
すステップと、レンダリングパイプラインへ前記ボクセ
ルを送るステップとを含み、前記ステートマシンにおい
て、前記レンダリングパイプラインによって処理される
ボリュームデータ集合を保存するボクセルメモリを制御
するものである。
【0011】また、前記その他のコマンドは、それぞれ
メモリをリフレッシュし、読み出し、および書き込みを
行うリフレッシュ、読み出し、および書き込み要求を含
むものである。
【0012】また、前記読み出すステップは、さらに、
バーストモードにおいてメモリの連続する位置を読み出
すステップを含むものである。
【0013】また、メモリ操作のための要求を受信する
ステップと、前記要求を処理するステップと、次の要求
のためにアイドルステートで待機するステップと、前記
メモリを周期的にリフレッシュするステップとを含み、
ステートマシンにおいて、レンダリングパイプラインに
よって処理されるボリュームデータ集合を保存し複数の
メモリコントローラによって独立して操作されるボクセ
ルメモリを制御するものである。
【0014】また、前記要求は、レンダリング要求であ
り、全てのメモリコントローラをアイドルにして待機さ
せるステップと、アイドルになっている全てのメモリコ
ントローラに応じて、複数のボクセルをメモリからレン
ダリングパイプラインに同期伝送するステップとをさら
に含むものである。
【0015】また、パイプラインへボクセルを伝送させ
る要求は、前記メモリとホストとの間でボクセルを伝送
させる要求に対して優先権を有するものである。
【0016】また、この発明に係るメモリへのアクセス
を制御するステートマシンは、メモリでデータを周期的
に維持するプレチャージステートと、前記メモリから複
数のレンダリングパイプラインへとデータを同期伝送さ
せるレンダリングステートと、前記メモリからホストコ
ンピュータへとデータを非同期伝送させる読み出しステ
ートと、前記ホストコンピュータから前記メモリへとデ
ータを非同期伝送させる書き込みステートとを含むもの
である。
【0017】また、レンダリングステート、読み出しス
テート、書き込みステート、およびプレチャージステー
トに連結されるアイドルステートをさらに含み、前記レ
ンダリングステートへの状態遷移は、前記読み出しステ
ート、前記書き込みステート、および前記プレチャージ
ステートへの状態遷移に対して優先されるものである。
【0018】また、前記プレチャージステートへの状態
遷移は、前記読み出しステートおよび前記書き込みステ
ートへの状態遷移に対して優先されるものである。
【0019】さらに、バーストモードにおいて前記メモ
リおよび前記パイプラインの間でデータが伝送されるも
のである。
【0020】
【発明の実施の形態】この発明において、ステートマシ
ンは、グラフィックスレンダリングシステムにおけるボ
クセルメモリへのアクセスを制御する。このアクセスに
は、パイプラインアクセスと、ホストアクセスと、メン
テナンスアクセスとを含む。この発明の一実施の形態に
よると、パイプラインによるアクセスはボクセルメモリ
のその他すべてのアクセスに対する優先権を有してい
る。こうした構成により、確実にレンダリング操作が可
能な限り素早く行われるため、確実にリアルタイムレン
ダリング速さが達成される。
【0021】ボクセルメモリは、レンダリングパイプラ
インによって処理されるボリュームデータ集合を保存す
る。ステートマシンは、メモリにデータを周期的に保持
するためのリフレッシュステートと、メモリから複数の
レンダリングパイプラインへデータを同期伝送するレン
ダリングステートと、メモリからホストコンピュータへ
とデータの非同期伝送を行う読み出しステートと、ホス
トコンピュータからメモリへとデータの非同期伝送を行
う書き込みステートとを含む。
【0022】ステートマシンは、メモリアクセス要求を
デコードし、この要求にはレンダリング要求と、読み出
し要求と、書き込み要求と、メンテナンス要求とが含ま
れる。レンダリング要求はメンテナンス要求に対して優
先権を有しており、メンテナンス要求は読み出し要求と
書き込み要求に対して優先権を有している。
【0023】図1を参照すると、三次元ボリュームデー
タ集合10の図が示されている。図1は、矩形の固体1
0の形態として構成されているボクセル位置配列12が
記載されている。より詳細には、このボクセル位置は三
次元の固体を占めるものであり、特定の次元において均
一に配置される。各ボクセル位置に関連しているのは、
オブジェクトまたはシステムの内部全体のスペースおよ
びその付近における別個の点でのたとえば密度、材質、
温度、速さ、不透明度やその他の属性などの、オブジェ
クト、システムまたは事象の特性を表す一つまたはそれ
以上のデータ値である。
【0024】本明細書で使われている基準の座標系の簡
単な説明、およびその座標系と平面との関係をまず説明
する。基準となる座標系は四つあり、この座標系ではデ
ータセットのボクセルを参照することができる。つま
り、オブジェクト座標(u、v、w)、置換座標(x、
y、z)、基準面座標(xb、yb、zb)、および画像
空間座標(xi、yi、zi)がある。オブジェクト座標
および画像空間座標は通常、右手系の座標系である。置
換座標系は右手系または左手系のどちらでもよく、選択
した観察方向によって変わる。
【0025】ボリュームデータ集合は、9で示される軸
u、v、wでオブジェクト座標において定義されたボク
セルの配列である。原点はボリュームの一つの隅に位置
しており、通常はオブジェクトそのものの視点からの重
要な始点を表す隅である。原点のボクセルは、本明細書
でこのあと説明されるように、メモリに保存されるボリ
ュームデータ集合の基準アドレスに保存される。ボリュ
ームデータ集合のボクセルへのアクセスはどれも、u、
v、wで表現されており、u、v、wはこのアドレスか
らのオフセットを獲得するのに使われる。各軸に沿った
単位距離(unitdistance)は、その軸に沿って隣接する
ボクセルの間の間隔と等しい。図1では、ボリュームデ
ータ集合は立方体10で表されている。
【0026】図1は、ボリュームデータ集合10の例を
示している。回転されており、オブジェクトの原点が上
部、右、後方隅に配置されている。つまり、このデータ
セットで表されるオブジェクトは後方からある角度で見
ているのである。11で示されている置換座標系(x、
y、z)では、原点は画像平面5に最近傍のボリューム
の頂点に再配置されており、この画像平面は二次元の視
点の表面である。z軸はこの観察方向と最も平行に近い
ボリュームのエッジである。x軸とy軸が選択されてお
り、ボリュームデータ集合10のボクセルの横断(trav
ersal)は、必ず正の方向で生じる。図1では、置換座
標系の原点は、オブジェクトそのものの原点からのボリ
ュームの反対側の隅になっている。
【0027】基準面座標系の座標(xb、yb、zb
は、ボリュームデータ集合のxy面が置換座標にある、
b=0の座標系である。基準面7は、基準面の原点か
らボリュームデータ集合のサイズおよび観察方向の両方
による最大点へ拡大する有限面である。
【0028】15で示されている画像空間座標系
(xi、yi、zi)は、ボリュームをレンダリングする
と生じる最終的な画像の座標系である。 zi=0面5は
コンピュータ画面および印刷されるページまたは、ボリ
ュームが表示されるその他の媒体の面である。
【0029】例によると、図2は、人間の頭をX線によ
り断面スキャンすることによるスライスの配列を含むボ
リュームデータ集合10を示している。二次元画像平面
16は、人間の頭をボリュームレンダリングさせた投影
を示す表面を示している。レイキャスティング(rayca
sting)として公知の技術において、光線18はボリュ
ームデータ集合10を通って画像平面16でピクセル位
置22から投影されており、各光線は、ボリュームを通
過する際にボクセル位置においてデータから色および不
透明度を蓄積している。このように、色、透明度、およ
び輝度(intensity)は、ピクセルのほかのパラメータ
と共に、光線に沿ったサンプルポイント20におけるデ
ータの蓄積としてボリュームデータ集合から抽出され
る。この例では、骨状組織に関するボクセル値は不透明
な色として割り当てられており、頭部のその他の全ての
組織に関するボクセル値は透明な色として割り当てられ
ている。したがって、実際の頭蓋骨は頭部の皮膚および
その他の組織によって隠されていて見えないが、光線に
沿ったデータの蓄積および対応するピクセルへのこのデ
ータの属性は、観察者には三次元の頭蓋骨画像に見える
ような観察面16における画像19になる。
【0030】レイキャスティングの方法をより完全に理
解するために、図3は、三次元ボリュームデータ集合1
0の二次元断面図を示している。一次元および二次元
は、ページ面に示されている次元に相当する。ボリュー
ムデータ集合10の三次元は、印刷されたページと垂直
になっているため、データセットの断面図だけしか図で
は見ることができない。ボクセル位置は図の点12によ
って示されている。各位置に関連するボクセルは、三次
元空間における矩形グリッドの固定点において三次元の
オブジェクト14の特性を表すデータ値である。また、
図3には、オブジェクト14の画像が適切な特性を持つ
ピクセル22に関して投影される二次元画像平面16の
一次元で見たものも示されている。この図では、画像平
面16の二次元も印刷されたページと垂直になってい
る。
【0031】レイキャスティングの技術において、光線
18はボリュームデータ集合10を通して画像平面16
のピクセル22から拡大される。各光線はその光線に沿
ってサンプルポイント20において色、明度、透明度ま
たは不透明度を蓄積する。この光の蓄積により、相当す
るピクセル22の明度および色が決定される。このよう
に、光線はボリュームをとおしてピクセルから外側に記
載されているが、蓄積されたデータは、パラメータの間
でピクセルの色、輝度および不透明度または透明度を与
えるために相当するピクセルに与えられる光線に再び伝
送されると考えることができる。図3は、ボリュームデ
ータ集合10の三次元と画像平面16の二次元が両方と
も印刷ページに垂直であるため互いに平行であるという
ことを示唆しているが、一般的に、そうではないと考え
られる。画像平面はボリュームデータ集合に関していか
なる向きもとることができるため、光線18は全ての次
元においていかなる角度においてもボリュームデータ集
合10を通過することができる。
【0032】また、サンプルポイント20は必ずしも、
ボクセル12の座標系と正確に交差していないと考えら
れる。したがって、各サンプルポイントの値は近傍のボ
クセル値と一緒に取り扱う必要がある。つまり、各サン
プルポイント20における光の輝度、色、透明度または
不透明度は、近傍のボクセル12の値の数学的関数とし
て計算または補間する必要がある。サンプルポイントに
おける値に対するボクセルデータ値の再サンプリング
は、サンプリング理論として公知の数学分野の応用であ
る。各光線18のサンプルポイント20を、別の数学的
関数によって蓄積することで、その光線に対応するピク
セル22の各明度および色が生じる。こうしてできたピ
クセル22のセットは、画像平面16におけるオブジェ
クト14の視覚的な画像を形成する。
【0033】図4は、各光線の処理を示す。光線18
は、ボクセル位置12の付近またはその位置を通過する
可能性を有し、ある角度における三次元のボリュームデ
ータ集合10を通過し、各光線に沿ったサンプルポイン
ト20においてデータを蓄積する。各サンプルポイント
における値は、補間ユニット103(図5参照)で示さ
れているように合成されて、その勾配が、23において
示されているように勾配推測ユニット111(図5参
照)で計算される。サンプルポイント20からのサンプ
ルポイントの値および各サンプルポイントからの勾配2
5は、色、明度または輝度、および透明度または不透明
度を各サンプルに割り当てるように処理される。図27
で示されているように、これは、輝度および不透明度ま
たは透明度と共に赤、緑、および青の色相を計算する処
理によって行われる。最後に、全ての光線に沿った全て
のサンプルに割り当てられている色、明度レベル、およ
び透明度が、29で示されているように、画像平面16
上で表示するために、作られた画像32を表現するピク
セルへとサンプル値を数学的に結合させる合成ユニット
124(図5)に適用される。
【0034】サンプルポイント20の色、明度または輝
度、および透明度の計算は二つの部分で行われる。一つ
の部分では、三線補間などの数学的な関数を利用して、
サンプルポイント20を直接取り巻く立方体構造におけ
る8つのボクセル値の加重平均をとる。つぎにこうした
平均はいくつかの伝達関数により、サンプルポイントへ
の色および不透明度または透明度を割り当てるのに使用
される。別の部分では、各サンプルポイント20におけ
るサンプル値の数学的な勾配が、近傍のサンプルポイン
トの間の差を取るという方法により推測される。こうし
た二つの計算は、順次に行っても互いに平行して行って
も数学的に等しい結果を生じると考えられる。つぎに勾
配を照明計算(lighting calculation)に使い、サンプ
ルポイントの明度を出す。照明計算はコンピュータグラ
フィックス技術の分野では公知であり、たとえば、19
90年にMassachusetts州でAddison-Wesley of Readin
gにより出版された、J. Foley、A. vanDam、S. Feine
r、J. Hughesによる書籍「Computer Graphics: Princip
les and Practice」第2版に記載されている。
【0035】図5は、図4に示されている計算の実行に
適切なパイプライン化されたプロセッサの一実施の形態
のブロック図を示す。パイプライン化されたプロセッサ
は複数のパイプラインのステージを含んでおり、これら
ステージはそれぞれ一つのデータエレメントを保持して
いるため、複数のデータエレメントが一度に処理され
る。各データエレメントはその処理において進行度が異
なっており、全てのデータエレメントはロックステップ
においてパイプラインのステージからステージへと移動
する。パイプラインの最初のステージでは、一連のボク
セルデータ値はボクセルメモリ100からサイクルごと
に1ボクセルの速さでパイプラインに流れており、ボク
セルメモリ100はアドレス生成装置102に制御され
ている。ボクセルは、メモリから、以下で詳しく述べる
通信チャネルとメモリインタフェースを通って移動す
る。
【0036】補間ユニット104は、x、y、zがそれ
ぞれ整数である、三次元空間における座標x−、y−、
z−に配置されるボクセル値を受け取る。補間ユニット
104は、ボリュームを通して投影される光線にそった
位置に対応するボクセル間のサンプルポイントにおいて
データ値を合成する線を接続されたステージのセットで
ある。各サイクルにおいて、一つのボクセルが補間ユニ
ットに入り、一つの補間サンプル値が生じる。ボクセル
値がパイプラインに入ってから補間されたサンプル値が
生じるまでの待ち時間は、パイプラインステージの数お
よび各ステージにおける内部遅延による。
【0037】パイプラインの補間ステージは、補間ステ
ージ104と三つのFIFOエレメント106、10
8、110のセットを含む。FIFOはステージにおい
てデータを遅延させるため、データは到着の送れるデー
タと結合することができる。本実施の形態ではこれらは
全て線形の補間であるが、立方体やラグランジアンなど
のその他の補間関数を使用することもできる。図示の実
施の形態では、各次元において別個のステージとして補
間が行われており、それぞれのFIFOエレメントは、
空間として隣接しているがパイプラインのエントリー時
に幅を広くとって分離されるボクセルの間を補間するた
めに、データを遅延するようにされている。一つのボク
セルの読み出しとその特定の次元における隣接するボク
セルの読み出しとの間の経過時間と全く同じになるよう
に、各FIFOの遅延が選択されるため、この二つは補
間関数で結合することができる。ボクセルは、1サイク
ル当たり一つのボクセルの速さで補間ステージを通して
流れることができ、各ボクセルは、その次元に関連する
FIFOを通して以前に遅延している最近傍のものと結
合していると考えられる。また、半導体の実施の形態で
は、こうしたFIFOおよびその他のFIFOは、ラン
ダムアクセスメモリとして実施することができると考え
られる。
【0038】それぞれ各次元のための、三つの連続する
補間ステージは連結され、ボクセルは入力および出力の
両方において1サイクル当たり一つのボクセルの速さで
三つのステージを通過することができる。補間ステージ
のスループットは補間ユニット内のステージ数とは無関
係に、また補間ユニット内のデータの待ち時間やユニッ
ト内の再循環FIFOの待ち時間とも無関係に、サイク
ルごとに一つのボクセルである。こうして、補間ユニッ
トはxyz空間における整数位置に配置されているボク
セル値を、1サイクル当たり一つのボクセルの速さで非
整数位置に配置されているサンプル値に変換する。特
に、補間ユニットはボクセル位置の値を光線に沿って配
置されるサンプル位置の値に変換する。
【0039】補間ユニット104に続くのは、複数のパ
イプライン化されたステージを含み、FIFOを遅延さ
せる、勾配推測ユニット112である。勾配ユニット1
12の機能は、三次元のそれぞれにおけるサンプル値の
変化速さを導くことである。この勾配推測ユニットは、
補間ユニット104と同様に働いて、三つの次元のそれ
ぞれにおけるサンプル値の変化速さを計算する。尚、こ
の勾配は照射のための通常のベクトルを決めるのに使わ
れ、その規模は、勾配の規模が大きい場合には表面の存
在の測定として使用することができる。本実施の形態で
は、この計算は中央の差を取ることで求められるが、当
技術で公知のその他の関数を使うこともできる。
【0040】勾配推測ユニットがパイプライン化されて
いるので、1サイクル当たり一つの補間されたサンプル
を受け取り、1サイクル当たり一つの勾配を出力する。
補間ユニットと同じく、各勾配は、それぞれ再循環FI
FO114、116,118を含む勾配推測ユニット1
12における潜伏期間の長さと等しいサイクル数によっ
て、相当するサンプルから遅延される。FIFOのそれ
ぞれに対する遅延は、一つの補間されたサンプルとその
次元における勾配を導くために必要な近傍の補間された
サンプルとの読み出しの間で必要な時間の長さにより求
められる。
【0041】補間されたサンプルとそれに相当する勾配
は、一つの補間されたサンプルの速さとサイクルごとの
一つの勾配において、それぞれ分類ユニット120およ
び照射ユニット122に同時に適用される。分類ユニッ
ト120は、補間されたサンプル値をグラフィックシス
テムにおいて、赤、緑、青やαの値である色に変換する
役割があり、RGBα値としても公知である。赤、緑、
青の値は通常はゼロと1の間の分数であり、それぞれの
補間されたサンプル値に割り当てられる色部品(カラー
コンポーネント)の輝度を表す。α値も通常ゼロから1
の間の分数であり、それぞれ補間されたサンプル値に割
り当てられる不透明度を表す。
【0042】勾配は、より現実的な画像にするため、強
調または影を追加することにより、新たに割り当てられ
たRGBα値を調整するために照射ユニット122に適
用される。照射を行うための方法および関数は当技術で
は公知である。照射ユニットおよび分類ユニットは、1
サイクル当たり一つの補間されたサンプル値と一つの勾
配を受け入れ、1サイクル当たり一つの照射された色と
不透明度の値を出力する。
【0043】本実施の形態では、分類ユニット120に
おいて先行している勾配推測ユニット112を補間ユニ
ット104が先行しているが、その他の実施の形態にお
いてはこうした三つのユニットは異なる順序で編成する
ことができる。特に、ボリュームレンダリングのいくつ
かの応用例では、分類ユニットは補間ユニットを先行す
ることが好ましい。この場合は、ボクセル位置における
データ値は同じ位置にあるRGBα値に変換されている
ので、こうしたRGBα値は、光線に沿ってサンプルポ
イントにあるRGBα値を獲得するために補間される。
【0044】合成ユニット124は、斜線に沿って全て
のサンプルポイントの照射された色および不透明度の値
を結合して、コンピュータ端末または二次元の画像表面
上で表示するために光線に対応する最終的なピクセル値
を形成する。RGBα値は1サイクル当たり一つのRG
Bα値の速さで合成ユニット124に入り、同じ光線に
沿って前と同じサンプルポイントでRGBα値で蓄積さ
れる。蓄積が完了すると、最終的な蓄積値はディスプレ
イにピクセルとして出力されるか画像データとして保管
される。合成ユニット124は1サイクル当たり一つの
RGBαサンプルを受け取り、光線の端部に達するまで
構成関数に応じて光線によってこれらの光線を蓄積す
る。この点においては光線毎に一つのピクセルが出力さ
れて最終的な画像を形成している。当技術で公知の多く
の異なった機能を、その用途に応じて合成ユニットで使
うことができる。
【0045】照射ユニット122と合成ユニット124
との間では、様々な調整ユニット126を設けて照射さ
れたRGBα値の調整を行えるようにすることで完全に
見ることのできる画像を修正することができる。こうし
た調整ユニットの一つは、データの制限されたサブセッ
トを見ることができるようにするためにサンプル値を取
り込むのに使われる。別の調整ユニットは、任意の角度
および厚さにおいてボリュームデータのスライスを示す
ための関数を提供する。三つ目の調整ユニットは三次元
のカーソルを提供しており、ユーザまたはオペレータが
データ内でxyz空間の位置を特定することができるよ
うになっている。
【0046】上記の特定された機能はそれぞれ、1サイ
クル当たり入力として一つのRGBα値を受け取り、1
サイクル当たり一つの調整されたRGBα値を出力とし
て発信する複数のパイプライン化されたステージとして
実施される。その他の調整関数は、それ以外にも同様
に、本明細書中に記載されているパイプライン化された
アーキテクチャ内で実施することもできる。パイプライ
ン調整機能を追加すると、いずれにしても処理パイプラ
インのスループット(速さ)を減少させることはない
が、パイプラインを通過する際にデータの待ち時間に影
響をおよぼす。
【0047】リアルタイムボリュームリアルタイムレン
ダリング速さ、たとえば256×256×256ボクセ
ルのボリュームデータ集合で1秒あたり30フレームを
達成するには、ボクセルデータは1秒当たり2563×
30フレームまたは1秒あたりおよそ5億個のボクセル
でパイプラインに入らなければならない。いずれの特定
のボクセルに関連する計算にも多くのステージが関わっ
ていて指定された待ち時間があるとはいえ、複数の異な
るボクセルに関連する計算は同時に進行することがで
き、こうした計算は、異なる進行度合いでありパイプラ
インの異なるステージを占めていると考えられている。
こうして、計算は複雑であるが高い処理速さを保持する
ことが可能となる。
【0048】次に図6を参照すると、図5のパイプライ
ンプロセッサの一部の第二の実施の形態が示されてお
り、補間の順序および勾配規模の推測は図5に示されて
いるものとは異なっている。一般的に、サンプルの勾配
のx−およびy−のコンポーネント、Gxx’、y’、
z’およびGyx’、y’、z’はそれぞれ「中央の差
(central difference)」、つまり対応する次元におけ
る二つの隣接するサンプルポイント間の差としてそれぞ
れ推測される。従って、x−およびy−の勾配は、下の
式Iで示されるように表すことができる。式I: Gxx'N,y',z'=S(x'+1),y'z'-S(x'-1),y',
z',および Gyx',y',z'=Sx',(y'+1),z'-Sx',(y'-1),
z'
【0049】勾配(本明細書では「z勾配」ともいう)
zx’、y’、z’のzコンポーネントの計算はそれ
ほど容易ではないが、これはz方向においてサンプルが
任意の観察方向によって互いにオフセットされているた
めである。しかし、勾配計算と補間計算の両方が(図示
の実施の形態にあるように)ボクセルデータの線形関数
である場合、Gzx’、y’、z’の計算を大幅に簡略
化することが可能である。両方の関数が線形である場
合、結果を変更させずに関数を実施する順序を逆にする
ことが可能である。z勾配は、前述したGxx’、
y’、z’およびGyx’、y’、z’で述べているの
と同じように各ボクセル位置12で計算され、つぎにG
zx’、y’、z’が、z方向におけるボクセルのz傾
斜を補間することでサンプルポイントx’、y’、z’
において求められる。
【0050】図6の実施の形態は、z勾配の計算を容易
にする図示した一実施の形態である。スライスバッファ
240のセットを、ボクセルメモリ100から隣接する
ボクセルのスライスをバッファするのに使用すること
で、勾配および補間を計算するためにz方向において隣
接するボクセルの列を時系的に揃える。スライスバッフ
ァはメモリからパイプラインへの通信チャネルの一部で
ある。1998年11月12日Osborneらによって出願
された米国特許09/190,712号「Super-Sampli
ng and Gradient Estimation in a Ray-Casting Volum
e RENDERingSystem」に詳細に説明され、本明細
書にも参照として組み込まれている関数である、スライ
スバッファ240は、z軸のスーパーサンプリングを使
うときに、処理ユニットの残りのタイミングからボクセ
ルメモリ100のタイミングを分離させるのにも使われ
る。
【0051】第1の勾配推測ユニット242は、スライ
スのバッファ240から各ボクセルについてz勾配を計
算する。第1の補間ユニット244は、z方向における
z勾配を補間するので、上記で述べたボクセル値と類似
した四つの中間値が生じる。こうした値は補間ユニット
246および248によってy方向およびx方向に補間
されて補間されたz勾配Gzx’、y’、z’を生じさ
せる。図5と同じく、遅延バッファ(図示せず)が、た
とえば上記でのべたような方法で隣接するz勾配を補間
するためにユニット244および246からの中間値を
一時的に保存するのに使用される。
【0052】スライスバッファ240からのボクセルも
ステージ的な補間ユニット250、252、および25
4へと送られて、サンプル値Sx’、y’、z’を計算
する。こうした値は図5の分類ユニット120で使用さ
れ、yおよびx勾配のGyx’、y’、z’およびG
xx’、y’、z’がそれぞれ計算される、さらなる勾
配推測ユニット256および258にも送られる。
【0053】図6に示されるように、z勾配Gzx’、
y’、z’およびサンプルSx’、y’、z’の計算
は、図5の実施の形態の逐次的な順序とは対照的に、並
列的に進行する。この構造はz勾配の計算を大幅に簡略
化するという利点がある。別の利点として、このような
勾配の計算によってより正確な結果が得られ、特に空間
のサンプリングの回数が多くなることになる。より空間
的に密接なサンプルにおける中心の差の計算は、現実の
プロセッサに固有の数学的な非正確さの影響をより受け
やすい。しかし、このアプローチの利点は費用、つま
り、三つの補間ユニット244、246、248の費用
によって達成される。別の実施の形態では、さらなる補
間ユニットの前からあってサンプルのみから全ての勾配
を計算することが好ましい場合がある。反対に、x勾配
およびy勾配の計算のいずれかまたは両方を、z勾配に
示されているのと同様に行うことが好ましい場合もあ
る。このように、精度を上げることの利点は、さらなる
補間ユニットの費用が特に負担とならないようなシステ
ムにおいて得られることができる。
【0054】図5および図6の上記で述べたプロセッサ
のパイプラインのいずれかを、並列に隣接するボクセル
を処理することでより高いスループット速さを達成する
ために複数のパラレルパイプラインとして反復する(re
plicated)ことができる。各パイプラインのサイクル時
間は、所望のフレーム速さによって乗算されパイプライ
ンの数によって割算される典型的なボリュームデータ集
合のボクセル数で求められる。好適な実施の形態におい
て、このサイクル時間はおよそ8ナノ秒であり、かつ四
つのパイプラインをパラレルに使用するために、1秒ご
とに5億個のボクセル値以上の処理速さをえることがで
きる。なお、この発明は現実的な数のパラレルパイプラ
インとともに使用することができる。
【0055】ボリュームレンダリングシステム 図7は、図5または図6に関して記載されているパイプ
ラインなどのボリュームレンダリングパイプラインを使
用してリアルタイム対話的なボリュームレンダリングを
行う、ボリュームレンダリングシステム150の一実施
の形態を示す。図7の実施の形態では、レンダリングシ
ステム150は相互接続バス208によってボリューム
グラフィックスボード(VGB)140に接続されるホ
ストコンピュータ130を含む。一実施の形態におい
て、周辺機器相互接続(PCI)プロトコルによって作
動する相互接続バスが、VGB140およびホストコン
ピュータ130の間の133MHzの通信経路を提供す
るために使用されている。当技術で使用可能な別の相互
接続も利用することができ、この発明はいずれの特定の
相互接続にも限定されるものではない。
【0056】ホストコンピュータ130は、同等の、つ
まりPCI、バス相互接続を有するパーソナルコンピュ
ータまたはワークステーションにいずれの種類にするこ
ともできる。ホストメモリおよびボクセルメモリの間で
ボクセルを伝送するのに使われるため、このバスはホス
トデータ経路に呼び出すことができる。ホストコンピュ
ータの内部構造はかなり変化するため、ホスト130の
代表的なコンポーネントのサブセットのみが、説明のた
めに示されている。一般的に、各ホスト130はプロセ
ッサ132とメモリ134とを含む。図7では、メモリ
134は、キャッシュメモリ、DRAM、ハードドライ
ブ、および外部zipまたはテープドライブなどのプロ
セッサ132に使用可能な内部および外部記憶装置のい
ずれの組み合わせも表すようになっている。
【0057】図7では、二つのコンポーネントがメモリ
134に保存されるかたちで示されている。こうしたコ
ンポーネントはVGBドライバ136とボリューム13
8とを含む。VGBドライバ136は、VGB140を
制御するのに使われる実行可能なプログラムコードであ
る。ボリューム138は、図1から図4を参照して説明
されているようなボクセルの配列として表されているデ
ータセットであり、これらの図はVGB140によって
ディスプレイ(図示せず)にレンダリングされる。配列
の各ボクセルはそのボクセル位置およびボクセル値によ
って説明されている。ボクセル位置はオブジェクト空間
におけるボクセルの座標を定義する三集合(x、y、
z)である。ボクセルは、多くの異なるビット/ニブル
の順序付け形式によって8,12または16ビットの輝
度値を含むことがある。この発明は、いずれの特定のボ
クセル形式にも制限されない。
【0058】なお、ホストメモリにおけるもの、および
ボクセルメモリにおいて存在するものを指定するフォー
マットは無関係である。ボクセルはホストメモリにおい
て連続して編成されており、(x、y、z=0、0、
0)の変換空間において、ボリュームの原点から開始す
る。サイズx、サイズy、サイズzは、各方向における
ホストボリュームのボクセル数であり、そのため、「ボ
クセル座標」(x、y、z)におけるボクセルはホスト
メモリのボクセル配列においてp=[x+y*size
x+z*size*xsizey]を配置する。この場
合、pはボリュームの原点からのボクセル(x、y、
z)のオフセットである。
【0059】操作中において、ボリューム138の一部
はPCIバスまたはホストデータ経路208においてレ
ンダリングのためVGB140に移動する。特に、ボク
セルデータはPCIバス208からボクセルメモリ10
0へとボリュームレンダリングモジュール(VRC)2
02によって伝送される。
【0060】VRC202は、リアルタイムの対話的な
ボリュームレンダリング操作に必要な全ての論理を含
む。一実施の形態では、VRC202は、図5および図
6について説明されているようなN個の相互接続された
レンダリングパイプラインを含む。各処理サイクルで、
N個のボクセルがボクセルメモリ100から抽出されて
VRC202でパラレルに処理が行われる。N個のボク
セルをパラレルに処理することにより、リアルタイムの
対話的なレンダリングデータ速さが達成できる。VRC
およびその操作の一実施の形態のより詳細な説明が本明
細書でこの後説明される。
【0061】ボクセルメモリ100に加えて、ビデオグ
ラフィックスボード(VGB)140も、セクションメ
モリ204およびピクセルメモリ200を含む。ピクセ
ルメモリ200はリアルタイムレンダリングプロセスに
よって生じる画像ピクセルを保管し、セクションメモリ
204はVRC204によるボリュームデータ集合のレ
ンダリング中に生じる中間データを保管するのに使われ
る。メモリ200、202および204は同期のダイナ
ミックランダムアクセスメモリ(SDRAMs)206
の配列を含む。示されているように、VRC202はV
−Bus、P−Bus、およびS−Busなどのバスへ
のインタフェースとなって各メモリ200、202およ
び204との通信を行う。VRC202も工業規格のP
CIバス208とのインタフェースがあり、これによっ
て様々な一般的なコンピュータシステムにボリュームグ
ラフィックスボードを使用することができる。
【0062】図8に、VRC202のブロック図を示
す。VRC202は、4個のパラレルレンダリングパイ
プライン212を有するパイプライン処理エレメント2
10を含む。各パイプラインは図5または図6で示され
ているように結合された処理ステージと、レンダリング
コントローラ214とを有することができる。処理エレ
メント210はボクセルメモリ100からボクセルメモ
リインタフェース論理216を通じてボクセルデータを
獲得し、ピクセルメモリインタフェース論理218を通
じてピクセルメモリ200へとピクセルデータを送る。
セクションメモリインタフェース220は、図7のレン
ダリングエンジン210とセクションメモリ204との
間で読み出しおよび書き込みデータを伝送するのに使用
される。PCIインタフェース222およびPCIイン
タフェースコントローラ224は、VRC202および
PCIバス208のインタフェースを提供している。コ
マンドシーケンサ226は、処理エレメント210とボ
クセルメモリインタフェース216の動作を同期させ
て、PCIバスから受け取ったコマンドで指定される動
作を実行する。ボクセルがボクセルメモリから目的のパ
イプラインへと移動するデータ経路は、メモリチャンネ
ルと言われる。
【0063】四つのパイプライン212−0−212−
3はx方向にパラレルに動作する。つまり、四つのボク
セルV(x0),y,z、V(x1),y,z、V(x2),y,z、V(x3),y,z
は、四つのパイプライン212−0−212−3の任意
のステージにおいて同時に操作される。ボクセルがパイ
プライン212−0−212−3に、それぞれメモリチ
ャネルを介して、以下に述べるようなスキャンの順序で
4つのボクセルグループで送られる。任意のx係数のmo
dule4を有するデータ位置の計算の全ては、同じレンダ
リングパイプラインによって処理される。こうして、中
間値がyおよびz方向の計算のためにパイプライン21
2−0内の処理ステージ内で処理される程度に、こうし
た中間値は、値が適当な時間に生成および使用されるレ
ンダリングパイプライン内で保持されると考えられる。
x方向の計算のための中間値は各パイプライン(例:2
12−0)から隣接するパイプライン(例:212−
1)へと、適切な時間に受け渡される。図7のセクショ
ンメモリインタフェース220およびセクションメモリ
204は、ボリュームデータ集合10のセクション処理
時に中間データ結果を一時的に保存したり、別のセクシ
ョンの処理時にパイプラインへとその保存された結果を
送ったりするのに使用される。セクション分けに関する
操作は、以下に詳細に説明する。
【0064】ボリュームレンダリングデータの流れ ボリュームデータのレンダリングは次のステップを含
む。まず、ボリュームデータ集合はホストメモリ134
からボリュームグラフィックスボード140へと伝送さ
れて、ボクセルメモリ100に保存される。一実施の形
態では、ボクセルはミニブロックとしてボクセルメモリ
に保存される。各処理サイクルでは、N個のボクセルが
ボクセルメモリ(N個とはVRCのパラレルなパイプラ
インの数に相当する)から受け取られて、N個の専用の
パイプラインの相当する数に送られる。
【0065】ボクセルはその時点でセクションを処理さ
れ、各セクションはその時点で、ビームによってスライ
ス内においてスライスを処理される。各パイプライン
は、ボクセル、ビーム、およびスライス粒子におけるボ
クセルをバッファして、ボクセルデータがパイプライン
において、パイプラインのさまざまな時間で受け取られ
る隣接するボクセルの補間または勾配推測の計算を直ち
に実行できることを保証する。
【0066】ある一方向のみにおいて隣接するパイプラ
インの同様のステージへと、パイプラインの異なるステ
ージ間をデータは伝送する。パイプラインからの出力に
は、ピクセルメモリに保存され、かつ直接またはホスト
を通して関連するグラフィックスディスプレイカードへ
と伝送される二次元のディスプレイデータを含む。こう
したステップのそれぞれについては以下でより詳細に説
明する。
【0067】ボリュームデータ集合のセクション分け 一実施の形態において、ボリュームデータ集合は時間に
おけるセクションをレンダリングされる。図9は、x方
向においてレンダリングするためにボリュームデータ集
合10が「セクション」340に分割される方法を示し
ている。各セクション340は、図示された実施の形態
においてx、y、z次元においてそれぞれペアの境界を
含む、境界によって定義されている。図示されたx次元
の場合は、セクション分け、つまり各セクション340
の上部、底部、前面および後面の境界のみがボリューム
データ集合10自体の相当する境界と一致する。同様
に、最も左のセクション340−1の左の境界と最も右
のセクション340−8の右の境界とは、ボリュームデ
ータ集合10のそれぞれの左および右の境界と一致す
る。残りのセクション境界はすべて、たがいに境界分離
セクション340である。
【0068】図示の実施の形態では、データセット10
は、たとえば、x方向において256ボクセルの幅があ
る。こうした256ボクセルは8つのセクション340
に分割され、これらセクションはそれぞれ正確に32個
のボクセルの幅である。各セクション340は別々にレ
ンダリングされて、処理エレメント210内で必要なバ
ッファメモリの量を減少させるが、これはバッファのサ
イズがスライスのボクセル数と比例するためである。
【0069】図示の実施の形態では、ボリュームデータ
集合10は、固定幅のセクションに分割されるので配列
ば、x方向において任意の幅にすることができる。y方
向におけるボリュームデータ集合10のサイズは、図5
のバッファ106および114のようなFIFOまたは
遅延バッファのサイズによって制限され、z方向におけ
るボリュームデータ集合10のサイズは、以下に述べる
セクションメモリのサイズによって制限される。
【0070】しかし、異なる観察方向のためにこの制限
は置換座標に適用され、この制限は異なるオブジェクト
の軸に適用されることに注意すべきである。したがっ
て、実際にはボリュームは立方体となる。
【0071】ホストメモリからVGBへのボリュームデ
ータ集合の伝送 図7を再び参照すると、一実施の形態において、ホスト
メモリ134とボクセルメモリ100との間のボクセル
の伝送は、直接メモリアクセス(DMA)プロトコルを
用いて実行される。たとえば、ボクセルはホストメモリ
134およびボクセルメモリ100の間をホストデータ
経路またはPCIバス208を介して、(DMA伝送の
ための)バスマスターまたはバスターゲットとしてのV
RC202で伝送することができる。
【0072】ボクセルがホストメモリ134からボクセ
ルメモリ100へとDMA操作を通じて伝送される例は
主に四つある。まず、ホストメモリ134における全体
ボリュームオブジェクトをボクセルメモリ100におい
て完全なボリュームとしてロードすることができる。第
二に、ホストメモリ134における全体ボリュームオブ
ジェクトは、あまりありえないようなことであるが、ボ
クセルメモリ100のサブボリュームとして保存するこ
とができる。サブボリュームは、一つのレンダリングの
通過において通常処理することのできない全体ボリュー
ムの、いくつかのもっと小さい部分である。第三に、ホ
ストメモリ134のボリュームオブジェクトの一部また
はサブボリュームを、ボクセルメモリ100で完全なオ
ブジェクトとして保存することができる。あるいは、ホ
ストメモリ134上のボリュームオブジェクトの一部ま
たサブボリュームをボクセルメモリのサブボリュームと
して保存する。
【0073】ホストメモリ134からボクセルメモリ1
00へと完全なボリュームを伝送するには、一つの伝送
コマンドにおいて伝送するために指定されるボリューム
データ集合の開始位置およびサイズで、一つのPCIバ
スマスター伝送を使って行う。ホストメモリのボリュー
ムデータ集合の一部またはサブボリュームをボクセルメ
モリに伝送するには、PCIバスマスター伝送のセット
を使うが、これはホストボリュームの隣接するボクセル
ビームがホストメモリにおいて隣接して保存することが
できないからである。
【0074】ホスト130とVGB140との間のDM
A伝送を制御するために、多数のレジスタがホストおよ
びレンダリングコントローラ214に備えられている。
こうしたレジスタは、ホストメモリのボリュームの原点
アドレスを指定するVx_HOST_MEM_ADDRレジスタ
と、ホストメモリのボリュームのサイズを示すVx_HO
ST_SIZEレジスタと、サブボリュームの原点が位置す
る原点からのオフセットを示すVx_HOST_OFFSETレジ
スタと、サブボリュームのサイズを伝送するよう記述す
るVx_SUBVOLUME_SIZEレジスタとを含む。Vx_OB
JECT_BASE、Vx_OBJECT_SIZE、Vx_OFFSETおよ
びVx_SUBVOLUME_SIZEのレジスタは、ホストメモリ
からのオブジェクトがボクセルメモリにロードされる位
置を示すための、基準アドレス、サイズ、基準アドレス
からのオフセット、およびサブボリュームサイズを提供
する。これらのレジスタは、ホストメモリからのオブジ
ェクトがボクセルメモリにおいてどこにロードされるの
かを示す。
【0075】レンダリングされたボリュームデータ集合
のボクセルメモリからホストメモリへの転送は、上記で
説明したレジスタを使い、ターゲットであるホストメモ
リ134でDMA伝送を介して実行される。
【0076】ボクセルメモリミニブロックのボクセルの
保存 一実施の形態において、ボクセルメモリ100は、四つ
のパラレルで動作する同期ダイナミックランダムアクセ
スメモリモジュール(SDRAMs)のセットとして構
成されている。各モジュールは一つまたはそれ以上のメ
モリチップを含むことができる。なお、それよりも多い
または少ないモジュールを使用することができ、またモ
ジュールの数はパイプラインの数とは無関係である。こ
の実施の形態では、16ビット幅のデータアクセス経路
を有する64メガビットのSDRAMを使用して、たと
えば125から133MHzの範囲のバーストモードア
クセスを提供することができる。こうして、四つのモジ
ュールは、たとえばボクセル毎に16ビットで256×
256×256個のボクセルのボリュームデータ集合を
保存するのに十分な、256メガビットのボクセルメモ
リを提供する。一実施の形態において、ボクセルデータ
はボクセルメモリでミニブロックとして編成されてい
る。
【0077】図12は、ここでは変換オブジェクト空間
として表した、軸306の座標系に基づく三次元空間に
配置された8つの隣接するボクセル302の配列300
を示す。なお、下で説明する例では、オブジェクト座標
(u,v,w)と置換座標系(x、y、z)との間の変
換は、つまり観察方向を考慮して、変換レジスタを用い
て実行される。アドレス変換の方法は、以下において図
19から図22を参照して本明細書中でさらに詳細に説
明を行う。
【0078】8つのボクセル300のデータ値は、ボク
セルメモリ100の一つのメモリモジュールにおける8
エレメントの配列308に保存される。各ボクセルは、
x、y、zが全て整数である座標(x、y、z)で示さ
れる三次元空間に位置を占める。ミニブロックのメモリ
配列内のボクセルデータ値のインデックスは、三つの
x、y、z座標のそれぞれのより低い次数のビットから
決まる。図12に示されているように、これらの三つ
の、より低い次数のビットは、ゼロから7までの範囲の
3ビット二進数304を形成するために連結され、つぎ
にそのボクセルに相当する配列レメントを特定するため
に利用される。つまり、座標(x、y、z)におけるボ
クセルのデータ値のミニブロック内の配列インデックス
は、式IIで求められる。 式II (Xmod2)+2×(Ymod2)+4×(Zmod
2).
【0079】各ボクセルまたはサンプルの位置と同様
に、座標(x、y、z)で三次元空間で表すことができ
るため、ミニブロックの位置をミニブロックの座標(x
mb、y mb、zmb)で表すことができる。こうした座標で
は、xmbはミニブロック全体のユニットを数え、x軸に
沿ってミニブロックの位置を表す。同様に、ymbおよび
mbはミニブロック全体を数え、それぞれy軸とz軸に
沿ってミニブロックの位置を表す。このミニブロック座
標の表記法を使うと、座標(x、y、z)でボクセルを
含むミニブロックの位置は式IIIにより求められる。 式III Xmb=[X/2],Ymb=[Y/2],Zmb=[Z/
2].
【0080】この発明の一実施の形態では、ミニブロッ
クはスキューされているため、x、y、z次元のいずれ
においてもボリュームデータ集合の連続するミニブロッ
クは、ボクセルメモリの四つのSDRAMモジュールの
別々のモジュールに保存される。図13を参照すると、
ミニブロックのねじれの第1のレベルが示されている。
(x、y、z)のボクセル座標を有するミニブロックの
DRAM数は式IVで下のように示されている。 式IV DRAM数=(Xmb+Ymb+Zmb)mod4,
【0081】図13では、ミニブロック300の三次元
の配列の部分的な図が示されている。各ミニブロックは
小さな番号を付けた小さな立方体によって描かれてい
る。この数字はそのミニブロックの特定のDRAMモジ
ュールへの割り当てを表す。図示の実施の形態では、
0、1、2、3と番号が付けられた四つの別々のDRA
Mモジュールがある。軸と整列した四つのミニブロック
の各グループは四つの番号のそれぞれについて一つのミ
ニグロックを含むことが、図から理解されるであろう。
【0082】これは、式IVから確認することができ
る。すなわち、座標(xmb、ymb、z mb)のいずれかの
ミニブロックから始まり、x軸の方向にミニブロックを
通って順序に並べられていると、式IVのDRAM数は
0、1、2、3の数を連続して循環する。同様に、yま
たはz軸と平行なミニブロックを通って順序に並べられ
ていることにより、また、式IVはDRAM数0、1、
2、3を連続して循環する。したがって、三つの軸のい
ずれかと平行な、309、311、313のいずれかの
方向においてミニブロックの三次元配列をトラバーサル
する際に、四つの隣接するミニブロックのグループは、
DRAMモジュールの四つの独立したメモリからいつで
もパラレルに呼び出すことができる。メモリモジュール
内のメモリ位置へのミニブロックの割り当てについて
は、以下で説明する。
【0083】より一般的には、システムがM個の独立し
たメモリモジュールを含む場合、座標(xmb、ymb、z
mb)のミニブロックは、以下に式Vで示すように、メモ
リモジュールに割り当てられる。 式V Module数=(xmb+ymb+zmb)modM.
【0084】つまり、図示した実施の形態のメモリサブ
システムがM個の別個のモジュールを含んでいることに
よりパラレルにするために一つのモジュールにアクセス
するのに必要な同じ時間量でM個すべてに同時にアクセ
スすることができる場合、ミニブロックのメモリモジュ
ールへの割り当ては、ミニブロックの座標を合計し、M
で分割し、残りをとることで与えられる。
【0085】これにより、いずれかの軸と整列するM個
のブロックのいずれかのグループを同時に呼び出すこと
が保証される。ボリュームデータ集合のいずれかの軸に
沿って同時にM個のミニブロックのグループを呼び出さ
なければならないのは、ボリュームデータ集合のトラバ
ースの順序が観察方向に依存しているからであるという
ことが理解されよう。
【0086】図示の実施の形態において、ミニブロック
はボリュームデータ集合の軸と一線上に並んだ線形のグ
ループにおいてアクセスされるが、他の実施の形態は、
ボリュームデータ集合のトラバースの順序には関係な
く、矩形のグループ、立方体のグループ、またはその他
のサイズおよび形状のグループにおいて呼び出すことが
できるように異なる式でミニブロックをスキューでき
る。
【0087】メモリのバンクへの編成 現代のDRAMモジュールでは、DRAMの種類のクロ
ック速さで適当なサイズの「バースト」でDRAMモジ
ュールへとデータの呼び出しまたは書き込みを行うこと
ができる。同期のDRAMまたは「SDRAM」モジュ
ールの通常のクロック速さは、それぞれ1サイクル当た
り7.5ナノ秒、7ナノ秒、および6ナノ秒に対応し
て、133MHz、147MHz、および166MHz
を含んでいる。
【0088】クロック速さを維持するのに必要な通常の
バーストサイズは、それぞれ16ビットの、5つから8
つのメモリエレメントである。開発中のほかのタイプの
DRAMは800MHzまでのクロック速さを有してお
り、またそれぞれ16ビットの、16個のデータエレメ
ントの通常のバーストサイズを有する。こうした現在の
DRAMモジュールでは、連続するバーストは、DRA
Mモジュール内の独立したメモリバンクからのものであ
る限り、アイドルサイクルを中断させることなく適応さ
せることができる。つまり、連続してアドレス指定され
たデータエレメントのグループはDRAMモジュールの
異なるまたは対立(コンフリクト)しないメモリバンク
に保存されて、つぎに、DRAMの最大定格速度でアイ
ドルサイクルを中断させることなく間断なく読み出しま
たは書き込みを行うことができる。
【0089】次に図14を参照すると、DRAMのバン
クに対応するグループにおいてミニブロックがさらに編
成されている。これは、ボクセルスキューイングの第二
の層を構成している。4×4×4のミニブロックの各グ
ループは、大きな数字を付されている。各数字は、割り
当てられたDRAMモジュールの同じ数字で、バンクへ
のグループの各ミニブロックの割り当てを表している。
たとえば、図のミニブロック312のグループは数字0
が付されている。これは、グループ312内の各ミニブ
ロックが、各メモリモジュールのバンク0に記憶されて
いることを意味している。同様に、グループ314のミ
ニブロックは全てそれぞれのメモリモジュールのバンク
1に記憶されており、グループ316のミニブロックは
全てそれぞれのメモリモジュールのバンク2に記憶され
ている。
【0090】図示の実施の形態において、各DRAMモ
ジュールは、0、1、2、3を付された四つのバンクを
有している。座標(xmb、ymb、zmb)のミニブロック
は、下の式VIによってバンクに割り当てられている。 式VI Bank数=([Xmb/4]+[Ymb/4]+[Zmb
4])mod4. DRAMモジュール毎のバンクの数が図示された実施の
形態のDRAMモジュールの数と同じであるという事実
は偶然である。その他の実施の形態はより多いまたは少
ないモジュールのモジュールを有することができ、それ
ぞれのモジュールはより多いまたは少ないバンクを有す
ることが可能である。
【0091】パイプライン化された処理エレメントが、
任意の直交する方向にボリュームデータ集合をトラバー
サルする際に、いずれかの軸と平行なグループにおいて
一度に四つのミニブロックを呼び出すと、グループ0お
よびグループ1などの隣接するグループは必ず異なるバ
ンクにあることが図から理解されよう。これは、DRA
Mモジュールの「バーストモード」のアクセスの利点を
利用して、DRAMモジュールの一部においてアイドル
サイクルを中断させることなく、いずれかの軸にそって
トラバーサルするために、四つのミニブロックのグルー
プを間断なく呼び出すことができるということを意味し
ている。こうしてDRAMの帯域幅の効率が最大限にな
る。
【0092】より一般的には、メモリバンクへのミニブ
ロックの割り当ては、メモリモジュールへのミニブロッ
クの割り当てと同じようにスキューすることができる。
つまり、ミニブロックはM個のメモリモジュールにわた
ってスキューすることができるため、ボリュームデータ
集合が横断をどの方向に向かってするかに関係なく、同
時アクセスが可能になる。同様に、各モジュール内のミ
ニブロックはB個のメモリバンクにわたってスキューす
ることができるため、バンク内の連続するミニブロック
へのアクセスはアイドルサイクルを中断させることによ
る遅れが生じない。こうして、モジュールとバンクにわ
たってミニブロックをスキューする2層を形成する。図
示の実施の形態では、ミニブロックのメモリバンクへの
割り当ては下の式VIIによって与えられる。 式VII Bank数=([Xmb/M]+[Ymb/M]+[Zmb
M])modB.
【0093】しかし、その他の実施の形態は、その他の
規則によって、たとえば異なる距離によって各次元にお
いてスキューするなどすることで、バンクにおいてミニ
ブロックをスキューすることができるため、三つの次元
における距離は互いに比較的最良のものである。
【0094】レンダリング中のボリュームのトラバーサ
ボクセルは、ミニブロックとしてボクセルメモリに編成
されるが、これらはスライス/ビームの順で進行する。
図15を参照すると、スライス/ビームの順序が意味す
ることの説明が与えられている。図9を参照して以前に
述べたように、ボリュームデータ集合10は、以前に述
べたように、観察方向とほとんど平行な軸であるz軸に
おいて平行な「スライス」330として処理される。各
スライス330はy方向の「ビーム」332に分かれ、
各「ビーム」332はx方向のボクセル12の列を構成
する。ビーム332内のボクセル12は、以前に述べた
ように、四つのレンダリングパイプライン212によっ
てパラレルに処理されるボクセル12のグループ334
に分かれる。
【0095】図示の例では、グループ334はx次元に
おける線に沿って四つのボクセルで構成されている。グ
ループ334はビーム332内を左から右への順序で処
理される。ビーム332は、スライス330内を上から
下への順序で処理され、スライス330は前から後ろへ
の順序で処理される。処理のこの順序は、x、y、z方
向におけるデータセット10の三次元スキャンに対応し
ている。原点の位置およびx、y、z軸の方向は異なる
観察方向によって変わることがあるということが理解さ
れよう。
【0096】図15では、グループ334はx軸に平行
な線形の配列として図示されているが、その他の実施の
形態では、グループ334は別の軸と平行な線形の配列
にしたり、いずれかの二つの軸と同一線上にある矩形の
配列にしたり、または平行なパイプ配列にしたりしても
よい。こうしたほかの実施の形態におけるビーム332
およびスライス330は、それに相当する異なった厚さ
を有する。たとえば、各グループ334が2×2×2の
矩形のミニブロックである実施の形態では、ビーム33
2はy次元およびz次元の両方において厚さは二つのボ
クセルであり、スライス330はz次元において厚さは
二つのボクセルである。本明細書に記載されているボリ
ュームデータ集合の処理方法は、ボクセルのこうしたグ
ルーピングにも適用される。
【0097】ボクセルメモリのインタフェース スキューされたミニブロックフォーマットにおけるボク
セルメモリ100へのボクセルの書き込みおよびパイプ
ラインによるスライス/ビームの順序のボクセルの処理
は、ボクセルメモリインタフェース216(図8)によ
って制御される。このメモリインタフェースは、メモリ
からパイプラインへのメモリチャネルの一部である。ボ
クセルメモリインタフェース216(VxIf)の一実
施の形態のブロック図が、図16に示されている。図7
で示されているように、ボクセルメモリはVRC202
とボクセルメモリ100とのレンダリングパイプライン
の間に配置される。
【0098】ボクセルメモリインタフェース216は、
ボクセルメモリからのボクセルの読み出しとボクセルの
再編成を制御することにより、レンダリングのために正
確な順序でレンダリングパイプラインに対して表されて
いる。メモリチャネルを通してパイプラインへ送られる
データは二つの隣接するスライスからのボクセルデー
タ、これらのスライスに相当するZの勾配、および制御
情報を含んでいる。VxIfはVRC202のPCIコ
ントローラへのインタフェースも含んでおり、このVx
Ifはホストからボクセルへのメモリトラフィックによ
って開始する読み出しおよび書き込みサイクルを実行す
る。
【0099】VxIf216は、メモリインタフェース
400と、トラバーサー402と、ウェイトジェネレー
タ404と、デスキューイングユニット(VxDesk
ew)408と、スライスバッファ(VxSliceB
uffer)410と、出力ユニット(VxSbOut
put)412と、コントローラ(VxSbCntr
l)406とを含む。
【0100】メモリインタフェース400は、四つのメ
モリインタフェースを含んでおり、それぞれボクセルメ
モリの四つの各SDRAMモジュールのためのものであ
る。モジュール数およびパイプライン数が同じであると
いう事実は純粋に偶然なものである。ウェイトジェネレ
ータ404は、ボクセルの特定のスライスを通過すると
きに、ボクセルのグリッドから光線のオフセットを示す
重みを計算する。デスキューイングユニット408はボ
クセルメモリのSDRAMのバンクから受け取るスキュ
ーされたボクセル順序を再構成するので、八つのボクセ
ルがミニブロックの順序になる。トラバーサー402
は、ボクセルメモリにアドレスを送る順序を制御する。
スライスバッファ410は、ボクセルメモリから抽出さ
れるデータを一時的に保存し、ミニブロックの順序から
適切なビーム/スライスの順序へとボクセルを再編成す
るのに使われる多数のバッファを含む。出力ユニット4
12とコントローラ406とはボクセルデータをボクセ
ルメモリインタフェースからレンダリングパイプライン
212aから212dへと送る。メモリチャネルの操作
部分を形成するメモリインタフェース411aから41
1dと、トラバーサー402と、デスキューイングユニ
ット408と、スライスバッファ410とは、以下によ
り詳細に記述する。
【0101】メモリコントローラ 次に図17を簡単に参照すると、メモリコントローラ4
00の一実施の形態のブロック図が示されている。メモ
リコントローラ400は、PCIデータバス208とV
RC202とのそれぞれを通してホストから受信された
アドレス、制御およびデータをボクセルメモリ100に
伝送するホストデータ経路403を含む。こうして、こ
のデータ経路はホストメモリからボクセルメモリへとデ
ータを送るのに使用される。PCIインタフェースは、
pc_VxRequest信号403aと、pc_VxMemReg信号
403cと、pc_Vx_ReadWRITE信号403bと
を通してボクセルメモリへ読み出しまたは書き込みサイ
クルを要求する。pc_VxMemRegおよびpc_Vx_Requ
estが両方とも高い場合、ボクセルメモリへのアクセス
が行われる。ホスト経路403のラインpfは、各個別
メモリインタフェース411aから411dに結合され
る。メモリコントローラはpc_VxAddressバス403
dおよびpc_VxByteEn403fにあるアドレスをデ
コードする。
【0102】アドレス、データおよび制御信号はVRC
202からVxResidue425に送られる。さらに、ス
トール(stALL)信号Vx_pcStALLは、レジスタ
425に保持されている。このレジスタは、ストール信
号がVRC202に送られる前に論理のさらなるステー
ジを提供するのに使用される。VxResidue回路425
は、書き込みデータを一直線上にないアクセスのために
同一線上にそろええることが必要な論理を含む。PCI
インタフェースからのアドレスおよびデータおよび制御
も、VxSetupレジスタ427に送られる。
【0103】VxSetupレジスタ427は、オブジェク
トをレンダリングするのに使用する多数の前方端部レジ
スタを含む。これらのレジスタには以下のものが含まれ
る。特に、その中でも、RENDER_OBJECT_SIZ
E、RENDER_OBJECT_BASE、Vx_OBJECT_SIZ
E、Vx_OBJECT_BASE、transform、leftx、lefty、
topy、bottomy、frontz、backz,leftSection、お
よびrightSectionである。一実施の形態では、レジスタ
は全て書き込み専用であり、各レジスタには、アクティ
ブで継続中の二つの記憶セットがある。こうしたレジス
タの内容の様々な利用について、以下にさらに詳細に説
明されている。
【0104】PCIアドレスはアドレスセレクタとして
働くVxAddrMux432に送られる。このVxAddrMux
432はPCIアドレス(初期の書き込み動作中に使用
する)とトラバーサー402(図17)によって生じる
アドレスとの選択を行う。トラバーサー402は、以下
により詳細に説明するように、原点アドレスで開始し任
意の平面に沿ってインクリメントする連続アドレスを提
供する。このように、トラバーサーは、8のバーストに
おいてボクセルメモリからボクセルを読み出すために使
用される自動アドレスジェネレータである。
【0105】選択したアドレスは、つぎにマルチデュプ
レクサ(VxAddrMult 435)とアドレス変換器(V
xAddrTrans 442)に送られる。トラバーサーおよび
PCIインタフェースの両方から受け取ったアドレス
は、x、y、z座標にある論理アドレスである。この座
標においてx、y、zは、(x、y、z)=(0,0,
0)の原点を有するホストメモリに保存されるボリュー
ムの三次元座標のボクセルである。トラバーサーから受
け取ったアドレスはすでにミニブロックと関連してい
る。しかし、PCIインタフェースから受け取ったアド
レスはボクセルと関連している。
【0106】マルチデュプレクサ432から与えられた
x、y、z座標からボクセルメモリの物理アドレスを計
算するには、座標がPCIインタフェースによって与え
られている場合に、座標のそれぞれから最も重要度の低
いビットを除くことで座標をミニブロック座標xmb、y
mb、zmbに変換する。ミニブロック相対座標が(トラバ
ーサーまたはPCIインタフェースのどちらからきてい
るのか)確かめられると、SDRAMアドレスがVxAd
drMult 435とVxAddrTrans 442から次のように
求められる。SDRAM数は上記の式Vを使って決定さ
れる。ミニブロックに関連するSDRAMのバンクアド
レスは、上記の式VIIを使って決定される。
【0107】バンク内の列アドレスは、次の式VIII
aからVIIIcを用いて決定される。 式VIIIa 相対列アドレス=(xmb+ymb*Sizex+zmb*Sizex
*Sizey), ここで、Sizexはx平面におけるミニブロックの数で
あり、Sizeyはy平面におけるミニブロックの数であ
る。一実施の形態において、ボリュームがSizex=Si
zey=Sizezとして平行六面体になっている場合、各
次元におけるボリュームのサイズは、メモリインタフェ
ース411aから411dのセットアップレジスタ42
7におけるレジスタVx_OBJECT_SIZE(アドレスが
PCIインタフェースから来ている場合)またはレジス
タRENDER_OBJECT_SIZE(アドレスがトラバー
サーから来ている場合)に保存される。 式VIIIb 絶対列アドレス=相対列+基準オフセット この場合、基準オフセットは、メモリインタフェース4
11aから411dのセットアップレジスタ427にお
けるレジスタVx_OBJECT_BASE(アドレスがPCIイ
ンタフェースから来ている場合)またはレジスタREN
DER_OBJECT_BASE(アドレスがトラバーサーから来
ている場合)に保存される。 式VIIIc SDRAMに対する列アドレス=絶対列/512 この場合、512は特定のSDRAMの列サイズに依存
する。これにより、(9つの)ビット位置のシフトによ
って割算の計算が容易に行われることができる。
【0108】行アドレスは次のように生成される。読み
出しには、アドレスがトラバーサーから与えられている
場合、8回の読み出しのバーストにおいてアクセスが必
ず行われるので、行アドレスの下位の3ビットはゼロで
ある。書き込みには、アドレスがPCIインタフェース
からである場合、行アドレスの下位の順のビットは下の
式IXにおいて次のように求められる。 式IX 行[2]=z[0]、行[1]=y[0]、行[0]=
x[0] コラムアドレスの残りのビットは、下の式Xによって求
められる。 式X 行(7:3)=列(8:4)
【0109】アドレスは、トラバーサーまたはPCIイ
ンタフェースのいずれからにも関係なく、ボクセルコン
トローラステートマシン(VxMiState)450へと送
られる。ボクセルコントローラステートマシン450
は、VxAddrTrans 442から受け取ったアドレスに応
答して動作し、VxMemCntrl 430から受け取った要
求を、ボクセルメモリの読み出し、書き込み、およびリ
フレッシュを実行するためにSDRAMの制御信号40
1を適切に確定する(assert)。書き込みデータはライ
ン410dのボクセルメモリに送られ、読み出しデータ
はライン401eのボクセルメモリから取得される。受
け取ったデータはVxBuildLatch444でコントローラ
に収集される。
【0110】メモリコントローラからの出力ポートは二
つある。第1の出力ポートはPCIインタフェースへの
ものであり、データはライン403hから403jにお
いてVRC202のPCIインタフェースへと送られ
る。第二の出力ポートはデスキューワ(deskewer)40
8へのものである。データはビルドラッチ(build latc
h)からデスキューイングユニット408へと送られ
て、本明細書において後で述べるように、(スライスバ
ッファで保存した後)レンダリングパイプラインへとさ
らに送られる。
【0111】ボクセルメモリステートマシン 次に図18を簡単に参照し、ボクセルステートマシン4
50のステート図についてまず説明する。ステートマシ
ン450は、ボクセルメモリトラフィックの異なるソー
スから要求の受信および処理を行い、異なる独立したメ
モリインタフェースへと特定のコマンドを発する。この
要求には、レンダリングの要求、読み出しおよび書き込
みの要求、およびメンテナンスの要求が含まれる。レン
ダリングの要求は、メモリモジュールからレンダリング
パイプラインへとボクセルを同期伝送する。読み出しお
よび書き込みの要求は、ホストメモリとボクセルメモリ
との間のデータの非同期伝送を行う。メンテナンスの要
求は、メモリのリフレッシュおよびプレチャージ(prec
harge)を行う。
【0112】要求の処理の順序は、最高から最低へと次
の順序において、要求の優先度に基づいている。つま
り、起動のみにおけるパワーアップシーケンス、システ
ムの作動中、レンダリング要求、メンテナンス要求、お
よび読み出し/書き込み要求の順である。このように、
レンダリングは作動中において最も高い優先度のタスク
であり、メンテナンス要求、および読み出しまたは書き
込み要求よりも必ず優先される。
【0113】図18に示すように、リセット後、ステー
トマシンはPRECHARGEステート470に進み、
このステートでは、SDRAMの列および行のラインが
標準のSDRAMプレチャージサイクルにおいて事前に
割り当てられている。こうしてステートマシンはREF
ステート472に進み、このステートではリフレッシュ
サイクルが行われる。
【0114】次にステートマシンはIDLEステート4
74に進み、このステートでは、タイムアウトによりP
RECHARGEステート470にステートマシンが戻
るまで、またはステートマシンが要求を受けるまで、こ
のステートが続く。
【0115】要求が読み出しまたは書き込みの要求であ
る場合、ステートマシンはMRS_B1 488に進み、
ここではBURST_MODEレジスタが1の値に書き
込まれ、要求がデコードされる。PCI_READステ
ート492は読み出しを行い、PCI_WRITEステ
ート494は書き込みを行う。ステートマシンは、全て
のデータが戻るまでこの状態のままになっており、次に
SYNC_RFSステート490に、その次にPREC
HARGEステート470に進む。
【0116】レンダリングの要求が受け取られると、ス
テートマシンはSYNC_RENDERステート476
に進む。SYNC_RENDERステートにおいて、ス
テートマシンは全てのメモリインタフェースがアイドル
になるまで待機し、次にMRS_B8ステート478に
進み、このステートではBURST_MODEレジスタ
が8の値で書き込まれる。次にステートマシンはVx_
READYステート480に進む。
【0117】Vx_READYステート480では、回
路はレンダリングの準備ができており、ステートマシン
はRENDERステート482に進む。RENDERス
テート482では、適切な信号がSDRAMに送られ
て、8つのボクセルのバーストモード読み出しを行い、
ステートマシンはVx_READYステート480に戻
る。ステートマシンは、バーストモード読み出しが完了
するまでVx_READYステート480のままになっ
ており、さらに読み出しを行う場合には、ステートマシ
ンは、完全なレンダリング要求が完了するまでステート
482と480との間を循環する。
【0118】レンダリング要求が完了すると、ステート
マシンはVx_READYステート480からREF_
ALLステート486へと進み、ここで全てのボクセル
メモリがリフレッシュされる。次に、ステートマシンは
IDLEステート474に戻り、ここで次の要求の受信
またはプレチャージサイクルにむけて待機する。
【0119】こうして、ステートマシンは、PCI読み
出しおよび書き込みとバーストモードのレンダリング操
作との両方を取り扱うメカニズムを提供しており、一方
でSDRAMのリフレッシュおよびプレチャージの要求
をサポートする。
【0120】PCI読み出しおよび書き込みの要求以上
の要求をレンダリングさせるための優先度を与えること
により、ステートマシンはリアルタイムレンダリング速
さが維持されることを保証することができる。
【0121】再び図16を参照し、ボクセルメモリイン
タフェースの残りのコンポーネントのいくつかについて
次に説明する。
【0122】座標の変換 トラバーサー402は、観察方向に基づいた正確な順序
でミニブロックのレンダリング要求に関するアドレスを
ボクセルメモリインタフェース400に送る責任を有し
ている。この発明の一実施の形態によると、トラバーサ
ーは変換レジスタ520(図20参照)を使って、置換
座標系におけるボクセルのアドレスへとオブジェクト座
標系からのボクセルエレメントのアドレスを変換させ
る。置換座標系ではボリュームは観察方向によって再配
置されている。メモリインタフェースにおいてこの変換
を行うと、メモリの内容を実際に変えなくてもボリュー
ムの視点を容易に変更する方法が提供される。
【0123】図19を次に参照すると、トラバーサー4
02の一実施の形態のブロック図が示されており、カウ
ンタ500とアドレス生成論理502とが含まれてい
る。カウンタ500は部分的なミニブロックビームの最
も左のミニブロックのためにミニブロック座標を生成し
ている。カウンタは(u,v,w)空間においてオブジ
ェクト座標を保持しているが、x、y、zの順でオブジ
ェクトを横断させる際にインクリメントまたはデクリメ
ントされる。これにより、これにより、オブジェクト
(u,v,w)空間(ボリュームの原点はボリュームの
一つの隅に配置されており、通常はオブジェクト自体の
視点から点が開始される)から変換(x、y、z)空間
(オブジェクトの原点が画像平面に最近傍のボリューム
の頂点になるよう再配置され、z軸は観察方向とほとん
ど平行なボリュームのエッジになっている)へと一部変
換が行われる。
【0124】このトラバースの順序は、x、つぎにy、
つぎにz、そしてセクションの順に続く。u、v、wの
座標は、選択された観察方向と、メモリコントローラの
変換レジスタ520で選択されるマッピングとに基づい
てx、y、zカウンタへとロードされる。この変換レジ
スタは観察方向によってボリュームデータ集合のアドレ
スを変換するために使用される。このように、変換レジ
スタはオブジェクト座標から置換座標へとボリュームの
論理的な原点を変換するのに使用することができる。
【0125】図20は、変換レジスタ520に保存され
る例としてのマッピングデータを示す。このマッピング
データは、図1で示すようなオブジェクト座標系と置換
座標系との間をマッピングするものであり、selectXフ
ィールド522と、selectYフィールド523と、selec
tZフィールド524とを含む。selectX、selectY、sele
ctZのフィールドを使うと、u座標を、vおよびx座標
でできるのと同じく、x,y、z平面にマッピングする
ことができる。さらに、変換マトリクス(matrix)
は、negXフィールド526と、negYフィールド527
と、negZフィールド528とを含む。フィールド526
から528は、それぞれのx、y、およびz次元のカウ
ンタについて、インクリメントカウントを行うのに使わ
れる。実質的には、ボリュームのボクセルは変換レジス
タ520の内容に基づいた三つの次元のいずれかにおい
て回転またはフリップする(flip)ことができる。
【0126】図19を再び参照すると、トラバーサー4
02のカウンタ500は、8つのカウンタ500aと、
x次元のカウンタ500bと、y次元のカウンタ500
cと、z次元のカウンタ500dと、セクションカウン
タ500eとへのカウントを含む。
【0127】上記で述べたように、カウンタのそれぞれ
へのインクリメント値は、変換レジスタ520のnegX、
negY、negZのフィールドに基づいている。たとえば、ne
gXのフィールドを1に設定すると、インクリメント値は
a−1になり、1以外に設定するとa+1になる。
【0128】セットアップレジスタ427からのleft
X、leftX、rightYbottomY、frontZ、backZおよび
leftSection、rightSectionの値により、ボクセルメモ
リのボリュームデータ集合のボクセル座標が定義され
る。こうした値は、ミニブロックアドレスとしてカウン
タのそれぞれについて初期値と最終値とを計算するのに
使用される。一実施の形態の各サイクルにおいて、部分
的なミニブロック「ビーム」ユニット(四つのミニブロ
ックを含む)がアドレスジェネレータ502に送られ
る。アドレスジェネレータ502は、部分的なミニブロ
ックビーム座標を、ビームのそれぞれのミニブロックに
対する四つの別々のミニブロックアドレスに変換する。
こうした四つのアドレスは、四つのSDRAMのそれぞ
れにおいて四つの相当するミニブロックを指定する。こ
うした座標を使うことで、アドレスジェネレータはアド
レスを四つのメモリモジュールのそれぞれに送って、ミ
ニブロックを抽出する。
【0129】デスキューイングユニット 各ミニブロックは、トラバーサーによって生成されるア
ドレスを使ってメモリモジュールおよびバンクからの連
続するメモリアドレスのセットとして読み出される。書
き込み処理中におけるミニブロックのスキューのために
(式IIからVIIIを参照して上記に記載)、ミニブ
ロック読み出しに与えられているボクセル値の順序は、
ボクセルが処理される順序と必ずしも一致しない。この
状況を考慮するため、デスキューイングユニットを使っ
たデスキューイングの方法をつぎに紹介する。
【0130】四つのSDRAMの各読み出しサイクル
は、8つのバーストにおいて32個のボクセルを提供し
ており、デスキューイングユニットは各バースト読み出
しサイクルにおいてデータのミニブロックを四つ受け取
る。
【0131】四つのミニブロックのそれぞれについて受
け取ったボクセルの順序は、図21で示されるような回
路を用いてデスキューイングされる。デスキューイング
ユニット408はバッファ444のシーケンスを含むよ
うに示されており、M個のSDRAMデバイスそれぞれ
のためのものである(本実施の形態では、四つのSDR
AMデバイスが設けられている)。マルチデュプレクサ
438は、ボクセルの予想されている順序(図12で示
されている1から8)を反映するよう、受け取ったボク
セルの順序を再編成するために設けられている。
【0132】ボクセルの選択は、ライン442を介して
ミニブロックデスキューイング論理440によって制御
される。ミニブロックはつぎにVxSliceBuffer 410
に送られる。
【0133】デスキューイング論理440は、ボクセル
メモリへボクセルを書き込み中に実行されたねじれの量
に応じて、さらに変換レジスタ520の内容に応じて、
ボクセルの予想される順序(図12の1から8で示され
る)へと受け取ったボクセルの順序を再編成する。一般
的には、ボクセルの順序の再編成は6つの規則に従う。
【0134】変換レジスタがxおよびyを交換するため
に示す場合、ポジション1のボクセルはポジション2の
ボクセルと入れ替わり、ポジション5のボクセルはポジ
ション6のボクセルと入れ替わる。変換レジスタがxお
よびzを交換するために示す場合、ポジション1のボク
セルはポジション4のボクセルと交換され、ポジション
3のボクセルはポジション6のボクセルと交換される。
変換レジスタがyおよびzを交換するために示す場合、
ポジション2のボクセルはポジション3のボクセルと交
換され、ポジション4のボクセルはポジション5のボク
セルと交換される。
【0135】変換レジスタがxを無効にする場合、連続
する偶数および奇数のポジションにあるボクセルが交換
される(つまり、ボクセル0は1と、ボクセル2は3
と、など)。変換レジスタがyを無効にする場合、ボク
セル0および1はボクセル2および3と、またボクセル
4および5はボクセル6および7と交換される。変換レ
ジスタがzを無効にする場合、0,1,2および3のポ
ジションにあるボクセルは、4,5,6および7のポジ
ションにあるボクセルと交換される。
【0136】どのモジュールを開始モジュールにするか
を決定するには、つぎの規則を使用する。xの記号がマ
イナスである場合、開始モジュールからデクリメント
し、そうでない時はインクリメントする。xの記号、y
の記号、zの記号がそれぞれプラスである場合、開始モ
ジュールは0である。xの記号、yの記号、zの記号を
含むグループのうち二つがマイナスであり一つがプラス
である場合、開始モジュールは2である。xの記号、y
の記号、zの記号を含むグループのうち二つがプラスで
あり一つがマイナスである場合、開始モジュールは3で
ある。xの記号、yの記号、zの記号が全てマイナスで
ある場合、開始モジュールは1である。
【0137】図22を参照すると、テーブル525は、
変換レジスタ520の内容に基づいてボクセルの順序の
例を説明している。上記の規則を使用して、デスキュー
論理440は適切にボクセルの順序を再編成するため、
ボクセルは処理のための予想されたミニブロックの順序
で並べられる。
【0138】スライスバッファ 上記で述べたように、ボクセルのねじれを解除すると、
四つのミニブロックのミニビームがVxSliceBuffer4
10に送られる。スライスバッファは保存を行うため、
ミニビームの向きで受け取られたボクセルは、処理パイ
プラインに送るためのスライスの向きに変換することが
できる。
【0139】図23は、ミニビームの向きおよびスライ
スの向きにおけるボクセルの間の関係を示したものであ
る。デスキューイングユニット410から受け取ったミ
ニブロック370は、ボクセルaからhを含む。一実施
の形態において、スライスバッファは偶数および奇数の
ペアに割り当てられ、各ペアは、ボリュームデータ集合
の連続する偶数および奇数のスライスにおいて保存され
るデータと関連する。後から生じたボクセルデータが有
効である各サイクルでは、16のボクセルがスライスバ
ッファに書き込まれ、8つのボクセルは偶数のスライス
バッファN、すなわちミニブロック370、372、3
74、および376のそれぞれのボクセルaおよびbの
一つに対して任意の(y、z)に関連しており、8つの
ボクセルは次の奇数のスライスバッファN+1、すなわ
ちミニブロック370から376のそれぞれのボクセル
cおよびdに対して任意の(y、z+1)に関連してい
る。
【0140】次のサイクル、16個のさらなるボクセル
は、それぞれ、ブロック370から376のボクセルc
およびfとブロック370から376のボクセルgから
hを表しており、同じ二つのスライスバッファに書き込
まれる。こうした二つのバッファへの書き込みはスライ
スが完了するまで続けられ、デスキューイングユニット
410から受け取った次のミニビームが、上記で述べて
いるようにスライスバッファのペアN+2およびN+3
に書き込まれる。
【0141】図24を次に参照すると、VxSliceBuffe
r410およびVxSbOutput412論理の一実施の形態
を示すブロック図が示されている。VxSliceBuffer4
10は、ボクセルデータ(つまり、32×256×12
ビット)の一つのスライス価(slice worth)をそれぞ
れ保存する、6つのスライスバッファメモリを含む。一
実施の形態において、各スライスバッファは、任意の書
き込みサイクルにおいて8つの12ビットボクセルを保
存することができる1K×96メモリのデバイスから形
成されている。スライスバッファ530、534、53
8は偶数のスライスバッファであり、スライスバッファ
532、536、および540は奇数のスライスバッフ
ァである。図23の例を使用して、ミニブロックはボリ
ュームデータ集合のスライス0および1によるものであ
ると仮定し、ビーム380などのボクセルの第1のビー
ムが、ビーム382などのボクセルの第二のビームが奇
数のスライスバッファ532に書き込まれるのと同時に
偶数のスライスバッファ530に書き込まれる。
【0142】次の書き込みサイクルでは、ビーム384
は、ビーム386がスライスバッファ532に書き込ま
れる一方で、スライスバッファ530に書き込まれる。
スライス0およびスライス1の全体セクションがスライ
スバッファ530および532に保存されるまで、二つ
のスライスバッファへのミニブロックの書き込みが行わ
れる。スライス3およびスライス4のセクションデータ
はスライスバッファ534および536に保存され、ス
ライス5および6のセクションデータはスライスバッフ
ァ538および540に保存される。スライスバッファ
の偶数および奇数のペアの書き込みのこのシーケンス
は、ボリュームデータ集合の次のスライスのそれぞれに
ついて継続される。
【0143】十分なデータがスライスバッファに書き込
まれると、レンダリング処理を開始することができる。
レンダリング処理を行うには、ボクセルをスライスバッ
ファから関連するパイプラインに送る。VxSbOutput4
12は、関連するパイプラインへのデータの伝送を制御
する。VxSbOutput412はセレクタ550を含む。こ
のセレクタは6つのスライスバッファ530から540
の出力に結合されて、レンダリングパイプラインへ送る
ためのデータを生成するのに使用する6つの値のうち4
つを選択する。
【0144】レンダリングパイプライン 図10は、図5および図6で表されるものと同様の四つ
の処理パイプライン212を含む図8の処理エレメント
210を示す。パラレルのパイプライン212はボクセ
ルメモリ100からボクセルを受信し、ピクセルメモリ
200へ蓄積した光線を送る。見やすくするために、三
つのパイプライン212−0、212−1、212−3
のみが図15に示されている。
【0145】図5および図6において以前に述べたよう
に、各パイプライン212は、補間ユニット104と、
勾配推測ユニット112と、分類ユニット120と、照
射ユニット122と、調整ユニット126と、合成ユニ
ット124とを、関連するFIFOバッファおよびシフ
トレジスタと共に含んでいる。各パイプラインはx方向
においてサンプル値の隣接するボクセルを処理する。つ
まり、各パイプラインは、そのx座標値module4が0か
ら3までの任意の値である全てのボクセル12を処理す
る。このように、たとえばパイプライン212−0は、
0から255の全てのyおよびzについて(0,y,
z)、(4、y,z)、…、(252,y,z)のポジ
ションにあるボクセルを処理する。同様に、パイプライ
ン212−1は、全てのyおよびzについて(1,y,
z)、(5,y,z)、・・・、(253,y,z)の
ポジションにあるボクセルを処理する。
【0146】計算に必要な値を時系列で並べるために、
各パイプラインの各操作ユニットまたはステージは、関
連するFIFOバッファを介してyおよびz次元でそれ
自体への中間値を受け渡す。たとえば、各補間ユニット
104は、ポジション(x、y、z)および(x、y+
1、z)のボクセルを抽出して、ポジション(x、y、
z)の補間サンプルのy要素を計算する。
【0147】(x、y、z)のポジションにあるボクセ
ルはビームFIFO108(図5)によって遅延され、
この計算のために(x、y+1、z)のポジションにあ
るボクセルと時系列で並ぶようにする。同様の遅延をz
方向に使用することでzコンポーネントを計算すること
ができ、同様の遅延も勾配ユニット112および合成ユ
ニット124によって使用される。
【0148】x方向の計算のために、中間値を受け渡す
必要もある。しかし、この場合では、中間値は単に遅延
しているだけではなく、近傍のパイプラインへ一つのパ
イプラインから伝送されている。各パイプライン(パイ
プライン212−1など)はその近傍のパイプライン
(パイプライン212−0および212−2など)へ
と、四つの処理ステージ(補間、勾配推測、分類、およ
び構成)のそれぞれにおいてシフトレジスタによって結
合される。シフトレジスタは、近傍のパイプラインへと
一つのパイプラインから処理された値を受け渡すのに使
われる。一実施の形態では、最終的なパイプライン、パ
イプライン212−3は、シフトレジスタ110、11
8、および250からのデータをセクションメモリ20
4に保存するために伝達する。このデータは、第1のパ
イプラインステージ212−0で使用するためにセクシ
ョンメモリ204からあとで抽出される。実質的には、
ボクセルおよびサンプル値はパイプラインとセクション
メモリの間で計算されるので、処理に必要な値はボクセ
ルおよびサンプルの処理中に適切な時間においてそれぞ
れのパイプラインで使用可能である。
【0149】ボクセルは、ミニブロックよりもスライス
/ビームの順序でパイプラインに送られるため、いずれ
かの個々のパイプラインによって保存されるデータの量
は減少する。さらに、1サイクル当たりで抽出されるデ
ータ量の減少によって、パイプラインの様々なステージ
の間で伝達しなければならないデータ量も減る。より少
ないデータが保存され、かつパイプライン間で伝達され
るため、複数のパイプラインが一つの集積回路デバイス
に作られることができる。このように、対話的なリアル
タイムレンダリングを行うために低コストの代替物が設
けられている。
【0150】したがって、ボリュームデータのメモリ構
造を紹介した。これは、バーストモードにおけるボクセ
ルの抽出を行えるようにするねじれたミニブロックフォ
ーマットにおいてメモリにボクセルを戦略的に(strate
gically)書き込むことによりメモリコンポーネントを
最適に使用するものである。バーストモードにおいてボ
クセルを抽出することで、メモリデバイスのフルパフォ
ーマンスを実現することができ、こうして対話的なリア
ルタイムレンダリングができるようになった。一実施の
形態において、ボリューム座標はオブジェクト座標とし
て保存され、置換座標へとメモリインタフェースによっ
て変換されて、レンダリングされたコンポーネントを観
察方向と同一線上にすることができる。変換レジスタを
使用して、所望の視点を有するボクセルのアドレスにボ
クセルエレメントのアドレスを変換することができる。
メモリインタフェースにおいてこの変換を実施すること
により、メモリ内容を実際に変更する必要なくボリュー
ムの視点を変更する容易な方法が提供される。
【0151】メモリは、操作のその他の種類よりもレン
ダリングの要求を優先させるステートマシンによって制
御されているため、リアルタイムレンダリングをより容
易に行うことができる。レンダリング要求の結果として
抽出されたボクセルをつぎに、レンダリングのためにパ
イプラインに送る前に、ボクセルメモリのインタフェー
ス論理によって第二のフォーマットに再編成する。この
第二のフォーマットを選択しているために、レンダリン
グパイプラインのそれぞれによって保存したりパイプラ
インの間で受け渡しをしたりしなければならないデータ
量を最小にすることができ、こうして一つの集積回路内
でリアルタイムの対話的なレンダリング機能を可能にす
ることができる。
【0152】この発明のいくつかの実施の形態とそれに
ついての修正例および変形例を述べてきたが、当業者に
おいては、上記の説明は単なる例示的なものであり制限
するものではなく、例によって表されているだけである
ということは明白であろう。多数の修正例およびその他
の実施の形態は、当業者の範囲内にあるものであり、添
付の請求の範囲およびそれに相当するものによって定義
される発明の範囲内に相当するものであると理解されよ
う。
【0153】
【発明の効果】以上のように、この発明によれば、レン
ダリング操作が可能な限り素早く行われ、確実にリアル
タイムレンダリング速さが達成される、ボクセルメモリ
を制御する方法、およびメモリへのアクセスを制御する
ステートマシンを提供することができる。
【図面の簡単な説明】
【図1】 ボリュームデータ集合および各座標系の図で
ある。
【図2】 レイキャスティングによって画像平面に投射
されたボリュームデータ集合の視点の図である。
【図3】 図2のボリュームデータ集合の断面図であ
る。
【図4】 レイキャスティングによって個々の光線の処
理を示す図である。
【図5】 この発明によるリアルタイムボリュームレン
ダリングのパイプライン処理エレメントの一実施の形態
のブロック図である。
【図6】 図5のパイプライン処理エレメントの一部の
第二の実施の形態のブロック図である。
【図7】 この発明によって作動するボリュームグラフ
ィックスボードに結合されるホストコンピュータを含む
ボリュームグラフィックスシステムの論理レイアウトの
ブロック図である。
【図8】 回路ボードが図5または図6の処理パイプラ
インを含む、図7の回路ボードにおけるボリュームレン
ダリング集積回路の一般的なレイアウトのブロック図で
ある。
【図9】 ボリュームデータ集合をセクションに分けて
編成していることを示す図である。
【図10】 図5および図6のような、パラレル処理パ
イプラインを示す図8のボリュームレンダリング集積回
路のブロック図である。
【図11】 図8の集積回路へのメモリインタフェース
からのボクセルの伝送を示すタイミング図である。
【図12】 SDRAMへのミニブロックを含むボクセ
ルのマッピングの図である。
【図13】 メモリのミニブロックの図である。
【図14】 DRAMのバンクおよび列内におけるミニ
ブロックの図である。
【図15】 図9に示されているようなセクション分け
されたデータのレンダリングの一つの方法を示す図であ
る。
【図16】 図8の集積回路に設けられているボクセル
メモリインタフェースの一実施の形態のブロック図であ
る。
【図17】 図16のボクセルメモリインタフェースに
設けられているメモリコントローラの一実施の形態のブ
ロック図である。
【図18】 図17のメモリコントローラのステートマ
シンのステートの様々な相互関係を表すステート図であ
る。
【図19】 図17のメモリコントローラへアドレスを
送るために使われるトラバーサーの一実施の形態のブロ
ック図である。
【図20】 図19のトラバーサーにおいて生成および
アドレス指定するために使われる変換レジスタの例示的
なマッピングを示す図である。
【図21】 図16のメモリインタフェースに設けられ
ているデスキュー論理のブロック図である。
【図22】 図21のデスキュー論理を利用してねじれ
ている例示的なねじれボクセル順序を示す説明図であ
る。
【図23】 ボリュームデータ集合の処理中にミニビー
ムとして保存されるボクセルとスライスとして探索され
るボクセルとの間の関係を示す説明図である。
【図24】 図16のメモリインタフェースで使用され
るスライスバッファと出力論理の一実施の形態のブロッ
ク図である。
【符号の説明】
100 ボクセルメモリ(VXメモリ)、102 アド
レスジェネレータ、103 ボクセルスライスFIF
O、104 補間、108 ボクセルビームFIFO、
110 ボクセルシフトFIFO、112 勾配推測、
114 サンプルスライスFIFO、116 サンプル
ビームFIFO、118 サンプルシフトFIFO、1
20 分類、122 照明、124 合成、125 光
線シフトレジスタ、126 調整ユニット、127 光
線ビームFIFO、129 光線スライスFIFO、1
32 プロセッサ、134 メモリ、136 VG
Bドライバ、138 三次元ボリューム、140 ボリ
ュームグラフィックスボード、200 ピクセルメモリ
(PXメモリ)、202 VRC、204 セクション
メモリ(SXメモリ)、206 SDRAM、208
PCI−RIJS、210 レンダリングパイプライ
ン、214 レンダリングコントローラ、216VxM
EMインタフェース VxIf、218 Pxメモリイ
ンタフェース pxIf、220 Sxメモリインタフ
ェース sxIf、222 PCIインタフェース、2
24 PCIインタフェースコントローラ、226 コ
マンドシーケンサ、240 スライスバッファ、242
勾配推測(Zコンポーネント)、250 Zにおける
補間、244 Zにおける補間、252 Yにおける補
間、246 Yにおける補間、254 Xにおける補
間、248 Xにおける補間、256 勾配推測(Yコ
ンポーネント)、258 勾配推測(Xコンポーネン
ト)、401 ボクセルメモリ、402 トラバーサ
ー、411a メモリ0、411b メモリ1、411
c メモリ2、411d メモリ3、425 Vx余
剰、427 Vxセットアップ、430 Vxメモリコ
ントローラ、432 VxアドレスMux、435 V
xアドレスマルチプレクサ、440 Vxデータコント
ローラ、442 Vxアドレストラバーサー、444
Vxビルドラッチ、450 VxMiステート、470
プレチャージ、472 REF、474アイドル、5
02 アドレスジェネレータ、530 スライスバッフ
ァ、532スライスバッファ、534 スライスバッフ
ァ、536 スライスバッファ、538 スライスバッ
ファ、540 スライスバッファ、550 セレクタ、
551 サブトラクタ、552 サブトラクタ。
───────────────────────────────────────────────────── フロントページの続き (51)Int.Cl.7 識別記号 FI テーマコート゛(参考) G06T 1/60 450 G06T 1/60 450F (71)出願人 597067574 201 BROADWAY, CAMBRI DGE, MASSACHUSETTS 02139, U.S.A. (72)発明者 ケニス・ダブリュ・コーラル アメリカ合衆国、マサチューセッツ州、ラ ンカスター、ルネンバーグ・ロード 2193 (72)発明者 ジェームズ・エム・ニッテル アメリカ合衆国、マサチューセッツ州、グ ラトン、ヒル・ロード 241 (72)発明者 ジェイ・シー・ウィルキンソン アメリカ合衆国、マサチューセッツ州、ニ ュートン、クラフツ・ストリート 126

Claims (10)

    【特許請求の範囲】
  1. 【請求項1】 レンダリング要求とその他の要求とを含
    む受信した要求をデコードするステップと、 その他のコマンドの前にステートマシンによって処理さ
    れる前記レンダリング要求を選択するステップと、 前記レンダリング要求に応じてメモリからボクセルを読
    み出すステップと、 レンダリングパイプラインへ前記ボクセルを送るステッ
    プとを含み、前記ステートマシンにおいて、前記レンダ
    リングパイプラインによって処理されるボリュームデー
    タ集合を保存するボクセルメモリを制御する方法。
  2. 【請求項2】 前記その他のコマンドは、それぞれメモ
    リをリフレッシュし、読み出し、および書き込みを行う
    リフレッシュ、読み出し、および書き込み要求を含む、
    請求項1に記載の方法。
  3. 【請求項3】 前記読み出すステップは、さらに、バー
    ストモードにおいてメモリの連続する位置を読み出すス
    テップを含む、請求項1に記載の方法。
  4. 【請求項4】 メモリ操作のための要求を受信するステ
    ップと、 前記要求を処理するステップと、 次の要求のためにアイドルステートで待機するステップ
    と、 前記メモリを周期的にリフレッシュするステップとを含
    み、ステートマシンにおいて、レンダリングパイプライ
    ンによって処理されるボリュームデータ集合を保存し複
    数のメモリコントローラによって独立して操作されるボ
    クセルメモリを制御する方法。
  5. 【請求項5】 前記要求は、レンダリング要求であり、 全てのメモリコントローラをアイドルにして待機させる
    ステップと、 アイドルになっている全てのメモリコントローラに応じ
    て、複数のボクセルをメモリからレンダリングパイプラ
    インに同期伝送するステップとをさらに含む、請求項4
    に記載の方法。
  6. 【請求項6】 パイプラインへボクセルを伝送させる要
    求は、前記メモリとホストとの間でボクセルを伝送させ
    る要求に対して優先権を有する、請求項4に記載の方
    法。
  7. 【請求項7】 メモリでデータを周期的に維持するプレ
    チャージステートと、 前記メモリから複数のレンダリングパイプラインへとデ
    ータを同期伝送させるレンダリングステートと、 前記メモリからホストコンピュータへとデータを非同期
    伝送させる読み出しステートと、 前記ホストコンピュータから前記メモリへとデータを非
    同期伝送させる書き込みステートとを含む、前記メモリ
    へのアクセスを制御するステートマシン。
  8. 【請求項8】 レンダリングステート、読み出しステー
    ト、書き込みステート、およびプレチャージステートに
    連結されるアイドルステートをさらに含み、 前記レンダリングステートへの状態遷移は、前記読み出
    しステート、前記書き込みステート、および前記プレチ
    ャージステートへの状態遷移に対して優先される、請求
    項7に記載のステートマシン。
  9. 【請求項9】 前記プレチャージステートへの状態遷移
    は、前記読み出しステートおよび前記書き込みステート
    への状態遷移に対して優先される、請求項8に記載のス
    テートマシン。
  10. 【請求項10】 バーストモードにおいて前記メモリお
    よび前記パイプラインの間でデータが伝送される、請求
    項7に記載のステートマシン。
JP2000148778A 1999-05-20 2000-05-19 ボクセルメモリを制御する方法、およびメモリへのアクセスを制御するステートマシン Pending JP2000357243A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US31592099A 1999-05-20 1999-05-20
US09/315920 1999-05-20

Publications (1)

Publication Number Publication Date
JP2000357243A true JP2000357243A (ja) 2000-12-26

Family

ID=23226648

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2000148778A Pending JP2000357243A (ja) 1999-05-20 2000-05-19 ボクセルメモリを制御する方法、およびメモリへのアクセスを制御するステートマシン

Country Status (2)

Country Link
EP (1) EP1054385A2 (ja)
JP (1) JP2000357243A (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6621918B1 (en) 1999-11-05 2003-09-16 H Innovation, Inc. Teleradiology systems for rendering and visualizing remotely-located volume data sets
EP1195717A3 (en) * 2000-10-04 2004-04-14 TeraRecon, Inc. Controller for rendering pipelines

Also Published As

Publication number Publication date
EP1054385A2 (en) 2000-11-22

Similar Documents

Publication Publication Date Title
US6512517B1 (en) Volume rendering integrated circuit
JP4158167B2 (ja) ボリューム・グラフィックス装置
US6266733B1 (en) Two-level mini-block storage system for volume data sets
US6532017B1 (en) Volume rendering pipeline
JP4205327B2 (ja) ボリュームデータセットのレンダリング方法およびシステム
Pfister et al. The volumepro real-time ray-casting system
USRE42638E1 (en) Resample and composite engine for real-time volume rendering
US6259460B1 (en) Method for efficient handling of texture cache misses by recirculation
US7151544B2 (en) Method for improving texture cache access by removing redundant requests
US6933945B2 (en) Design for a non-blocking cache for texture mapping
JP2001014486A (ja) ボクセルメモリへレンダリング装置を連結するインタフェース、複数のレンダリングパイプラインのためのメモリインタフェース、レンダリング装置へボクセルメモリをインタフェースする方法、および複数のレンダリングパイプラインで処理されるボクセルのアドレスを変換する方法
EP1195719A2 (en) Rendering memory in a volume rendering system
JP2000357243A (ja) ボクセルメモリを制御する方法、およびメモリへのアクセスを制御するステートマシン
JP2001022949A (ja) メモリコントローラ、メモリコントローラのインターフェース、ボリュームレンダリングシステム、およびボリュームデータ集合をレンダリングする方法
EP1001369A2 (en) Real-time volume rendering system
JP2001022950A (ja) ボリュームレンダリンググラフィックボード
JP2001005955A (ja) ボリュームレンダリングパイプライン
EP1209620A2 (en) Method for correcting gradients of irregularly spaced graphic data

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070511

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100223

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20100524

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20100527

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20100618

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20100624

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20100928