JP2002183751A - グラフィックデータレンダリング方法およびその装置 - Google Patents

グラフィックデータレンダリング方法およびその装置

Info

Publication number
JP2002183751A
JP2002183751A JP2001307645A JP2001307645A JP2002183751A JP 2002183751 A JP2002183751 A JP 2002183751A JP 2001307645 A JP2001307645 A JP 2001307645A JP 2001307645 A JP2001307645 A JP 2001307645A JP 2002183751 A JP2002183751 A JP 2002183751A
Authority
JP
Japan
Prior art keywords
graphic data
controller
rendering
pipeline
data
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.)
Withdrawn
Application number
JP2001307645A
Other languages
English (en)
Inventor
Larry D Seiler
ラリー・ディー・シーラー
Stephen R Burgess
ステファン・アール・バージェス
Jeffrey Lussier
ジェフリー・ルシアー
Vishal C Bhatia
ヴィシャル・シー・バティア
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.)
TeraRecon Inc Japan Branch
Original Assignee
TeraRecon Inc Japan Branch
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 TeraRecon Inc Japan Branch filed Critical TeraRecon Inc Japan Branch
Publication of JP2002183751A publication Critical patent/JP2002183751A/ja
Withdrawn legal-status Critical Current

Links

Classifications

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

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Graphics (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Image Processing (AREA)
  • Image Generation (AREA)

Abstract

(57)【要約】 【課題】 画像としてグラフィックデータをレンダリン
グする方法及び装置を提供する。 【解決手段】 画像に寄与する可能性のあるグラフィッ
クデータが特定される。この特定されたグラフィックデ
ータはレンダリング・パイプラインの中に読み込まれ
る。特定されたグラフィックデータについて、サンプル
が画像に寄与する可能性がある場合にのみ、それらのサ
ンプルはレンダリング・パイプラインの中で生成され
る。これらの特定されたグラフィックデータとサンプル
とは、これらの特定されたグラフィックデータとサンプ
ルとが画像に寄与し続ける限りレンダリング・パイプラ
イン内で処理される。他のすべての特定されたグラフィ
ックデータとサンプルとはパイプラインから廃棄され
る。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明はコンピュータ・グラ
フィックの分野に関連し、特に、並列パイプライン化レ
ンダリング・エンジンを用いるグラフィックデータのレ
ンダリングに関する。
【0002】
【従来の技術】ボリューム・レンダリングは、視覚化の
ために3次元データを必要とするコンピュータ・グラフ
ィック用アプリケーションでは頻繁に利用される。この
ボリューム・データは、物体のスキャンや医療上のスキ
ャン、あるいは、大気や地球物理学のモデルあるいはそ
の他の科学上のモデルなどであり得る。これらのモデル
で、データの視覚化によりデータで表される基底に在る
現実の世界の構造についての理解が容易になる。
【0003】ボリューム・レンダリングを用いて、物体
や物理モデルの内部構造並びに外表面の特徴が視覚化さ
れる。ボクセルはボリューム・レンダリングで利用され
る基本的データ項目である。ボクセルとは、物体または
モデルのある特定の3次元部分における値を表すデータ
である。各ボクセルの座標(x,y,z)によって、ボクセ
ルは、表される物体やモデル内の位置に対応づけられ
る。
【0004】1つのボクセルは物体またはモデル内の或
る特定位置に関連する1以上の値を表す。従来技術のボ
リュームの場合、ボクセル内に含まれる値は、密度、テ
ィッシュ(tissue)タイプ、弾性、あるいは、速度等の1
以上のいくつかの異なるパラメータとすることができ
る。レンダリング中、ボクセル値は、類別と呼ばれる処
理の中で色および不透明度(RGBα)を示す値に変換さ
れる。これらのRGBα値はブレンドすることができ、
次いで、表示用2次元像面上へ投影される。
【0005】レンダリング中多用される1つの技術とし
てレイ・キャスティングがある。このレイ・キャスティ
ングでは1組の架空のレイがボクセルの配列を貫通して
キャストされる。このレイはある視点または像面から発
する。次いで、サンプル・ポイントがレイに沿って定義
される。ボクセル値が補間されてサンプル値が決定さ
れ、各レイに沿うサンプル値が組み合わされてピクセル
値が形成される。
【0006】本明細書に参考文献として取り入れられて
いる、米国特許Sn.09/315,742“ボリューム
・レンダリング集積回路”(1999年5月2日、Burge
ss他により出願)には並列パイプラインを用いるレンダ
リング・システムについての記載がある。該レンダリン
グ・システムには、バスによってボリューム・グラフィ
ック・ボード(VGB)と接続されたホスト・プロセッサ
が含まれる。VGBには、ボリューム・レンダリング・
チップ(VRC)と接続されたボクセル・メモリとピクセ
ル・メモリとが含まれる。VRCにはリアルタイムの双
方向ボリューム・レンダリング操作を行うために必要な
すべての論理回路が含まれる。VRCには4つの相互接
続されたレンダリング・パイプラインが含まれる。実際
に、VGBによってレンダリング・エンジンすなわち
“グラフィック・アクセラレータ”が設けられる。
【0007】作動中、ホスト内で処理を実行するアプリ
ケーション・ソフトウェアによってボリューム・データ
がVGBへ転送され、レンダリングが行われる。このア
プリケーション・ソフトウェアによって、パイプライン
によりアクセス可能なレンダリング用レジスタもロード
される。これらのレジスタによってレンダリングの実行
方法が指定される。すべてのデータのロード後、アプリ
ケーションによってレンダリング操作の開始コマンドが
出される。レンダリング操作が完了したとき、出力画像
はピクセルメモリからホストへ、または、3Dグラフィ
ックカードへ移され、表示される。
【0008】
【発明が解決しようとする課題】従来技術によるハード
ウェア・レンダリング・パイプラインに関する1つの問
題点として、パイプライン内に“バブル”が頻繁に出現
することが挙げられる。バブルは、データが任意のクロ
ック・サイクルでは利用できないという事実に起因して
発生する。いったんバブルが入った場合、このバブルは
パイプラインの中をずっと通過していかなければならな
い。その結果、バブルによって時間が空費され、システ
ムのパフォーマンスが低下することになる。
【0009】従来技術のハードウェア・パイプラインに
関する別の問題として、これらのパイプラインが、一般
に、1データ・セット内のすべてのボクセルを処理する
という問題がある。ボリューム・データの所定の視覚化
を行うために、画像にとって有用な情報に寄与するボク
セル・クラスタもあれば、全く無関係のクラスタも存在
するということは周知の事実である。例えば、医療用の
データ・セットでは、最終画像に寄与しないボクセルの
割合は一般に70〜95%の範囲にある。したがって、
不要なボクセル/サンプル処理を除くことにより、作業
の90%までを除くことが可能となる。
【0010】したがって、 レンダリング・データの複
雑さに対してダイナミックな適合が可能なレンダリング
・システムに対する要望が存在する。さらに、不要デー
タの処理を行わないパイプライン化レンダリング・シス
テムに対する要望が存在する。
【0011】
【課題を解決するための手段】本発明は、画像としての
グラフィックデータのレンダリングを行う方法及び装置
を提供するものである。画像に寄与する可能性のあるグ
ラフィックデータの特定が行われる。この特定されたグ
ラフィックデータはレンダリング・パイプラインの中へ
読み込まれる。特定されたグラフィックデータ用画像に
寄与する可能性がある場合に限り、レンダリング・パイ
プライン内にサンプルが生成される。この特定されたグ
ラフィックデータとサンプルとが画像に寄与し続ける限
り、これらの特定されたグラフィックデータとサンプル
はレンダリング・パイプライン内で処理される。その他
のすべての特定されたグラフィックデータとサンプルは
パイプラインから廃棄される。
【0012】
【発明の実施の形態】パイプライン組織 図1は、本発明によるコントローラ(CTRL)400を
用いるボリューム・レンダリング・システム10の構成
全体を示す。このシステムには、バス121によってレ
ンダリング・サブシステム200と接続されたホスト・
コンピュータ100が含まれる。1つの利点として、レ
ンダリング・サブシステムは単一ASICとして製造で
きるという点が挙げられる。このホストにはCPU11
0とメイン・メモリ120が含まれる。
【0013】図2にも図示のように、レンダリング・サ
ブシステム200の主要モジュールはメモリ・インター
フェース210、バス用論理回路220、コントローラ
400および4つの並列ハードウェア・パイプラインか
らなるレンダリング・パイプライン300である。すべ
ての4つのパイプラインの範囲にわたる共有スライス・
バッファ250を除いて、パイプライン(A、B、C、
D)は互いに独立に作動する。これらのパイプラインは
本発明のレンダリング・エンジンの中核を形成する。
【0014】メモリ・インターフェース メモリ・インターフェース210は、オフチップ・レン
ダリング用メモリ160を有する8つのダブル・データ
・レート(DDR)同期DRAMチャネルの制御を行う。
このレンダリング用メモリは、レンダリングされるボリ
ュームに必要なすべてのデータ211(すなわちボクセ
ル、ピクセル、デプス値、ルックアップ・テーブルおよ
びコマンド・キュー)用の統一記憶装置を提供する。メ
モリ・インターフェース210は、高帯域アクセスおよ
びオペレーションを行うために、レンダリング用メモリ
160へのすべてのアクセスを実行し、バス用論理回路
220とコントローラ400からの要求を仲裁し、モジ
ュールとレンダリング用メモリ160にわたって配列デ
ータの配信を行う。
【0015】バス用論理回路 バス用論理回路220はホスト・コンピュータ・システ
ム100とのインターフェースを提供する。ホストがパ
ーソナル・コンピュータ(PC)またはワークステーショ
ンである場合、このバスは、PCI仕様バージョン2.
2に批准する64ビット、66MHzPCIバス121
であってもよい。このバス用論理回路は、メモリ・イン
ターフェース210を介して、レンダリング用メモリ1
60から、およびレンダリング用メモリ160へデータ
を転送するためのダイレクト・メモリ・アクセス(DM
A)オペレーションの制御も行う。このDMAオペレー
ションはバースト・モードのデータ転送である。
【0016】バス用論理回路はコントローラ400の内
部レジスタ・ファイル221へのアクセスも行う。これ
らのアクセスは、ホスト・コンピュータ100あるいは
PCIバスと接続した他のデバイスによって開始され
る、個々のレジスタの直接読出し及び/又は書込みであ
る。バス用論理回路220はまたデータ転送の効率的制
御を行うためのアクセス・コマンドの解釈も行う。バス
用論理回路はまた、レンダリング操作の制御のために、
コントローラ400へ直接レジスタ値を送り、コントロ
ーラから戻ってくる状態情報を受け取る。
【0017】コントローラ コントローラ400は制御信号401を用いてボリュー
ム・レンダリング・パイプライン(レンダリング・エン
ジン)300の作動を制御する。このコントローラはパ
イプラインと並列に接続されることに留意されたい。コ
ントローラが、メモリから何のデータをフェッチするか
を決定し、4つのパイプラインへそのデータを割り当
て、補間重み付け等の制御情報を個々のパイプライン段
へ適時送り、レンダリング操作から出力データと状態情
報とを受ける。
【0018】コントローラの主要機能はできるだけ多く
のデータを廃棄することである。不要データの廃棄によ
って、レンダリングの大幅な高速化が可能となる。
【0019】コントローラは、部分的に、多数のレジス
タによって制御される有限状態マシンとして構成され
る。これらは一般にコマンドキューのロード・レジスタ
・コマンドに応じてバス用論理回路220によって書込
まれる。内部では、コントローラは、一度に1セクショ
ンずつサンプル空間の中を1ステップずつ処理するため
に必要なカウンタを保持して、サンプル座標をボクセル
座標へ変換し、パイプライン段が必要とする制御情報の
生成を行う。以下さらに詳細にコントローラ400につ
いて説明する。
【0020】本コントローラは、時間的にパイプライン
300よりずっと前に作動するように設計される。これ
によって、コントローラは、どのサンプルとボクセルと
が必要で、廃棄可能なサンプルとボクセルがどれかを決
定することができる。ボリューム・データの或るクラス
内に在るボクセルのうちの90%ものボクセルが結果と
して得られる画像には影響を与えないことを想起された
い。ボクセルを読み出さないことによりメモリ帯域幅が
節減され、サンプルを処理しないことによりパイプライ
ン・サイクルが節減される。実際、コントローラは、最
低水準までダイナミックにボリューム・データを取り除
くことを試みる。
【0021】サンプルとボクセルの中には、この決定が
行われる前にパイプラインの初めの段の中に入るものも
ある。その場合、“バブル(bubbles)”を引き起こす可
能性のあるサンプルとボクセルとは後の段で廃棄され
る。しかし、パイプラインの異なる段がバッファされ
て、異なるレートでの作動が可能なため、時としてバブ
ルを搾り出して、ボリュームのレンダリングにかかる時
間量を大幅に低減することができる場合がある。コント
ローラがコマンドを生成するピークレートの方がパイプ
ラインがコマンドを処理する速度より高速なため、パイ
プラインのパフォーマンスの最大化が行われるようにバ
ブルを好ましいデータと置き換えることができる。
【0022】追加の特徴として、コントローラはパイプ
ラインに関して非同期的に作動することができる。これ
によってタイミング関係が大幅に単純化される。事実、
パイプラインは(サイクルという点から見て)可変長を持
つと考えることができる。いくつかのオペレーションに
ついてはパイプラインが他のオペレーションよりも時間
的に短くなるものもある。コントローラは、たとえ制御
信号がずっと前に生成されても、データと制御信号との
時間整列を行うことが可能である。たとえコントローラ
が、或るデータがどのパイプラインにおいても特定の段
に達するのに何クロック・サイクルを要するかを予め認
知していない場合であっても、信号はそれらがデータに
よって要求されているときに段に到来するようにバッフ
ァされる。
【0023】パイプライン、ミニブロックおよびスタン
プ 図3は、レンダリング・エンジンの4つのレンダリング
・パイプラインをさらに詳細に図示し、パイプライン間
でのデータとレンダリング操作との分配方法も示す。各
パイプラインには、勾配推定器段301、類別器−補間
器段302、照明器段303、合成器段304が含まれ
る。
【0024】ボクセルは、レンダリング用メモリ160
内にミニブロック310(各々2×2×2のボクセルか
ら成る小さな立方体の配列)として格納される。レンダ
リング中、コントローラ400はメモリ・インターフェ
ースにミニブロックの流れを読み出させる。ミニブロッ
クは、クロック・サイクル当たり1ミニブロックの速度
でパイプラインに提示される。実際、ミニブロックはコ
ントローラ400を介してパイプラインへ渡される。
【0025】ミニブロックは、ボリューム・データ・セ
ットからxyzの順序で読み出される。すなわち、ミニ
ブロックは、x−方向にシーケンシャルに読み出されて
セクションの1列が満たされ、y−方向に一列ずつ読み
出されて1スライスが満たされ、Z方向に1スライスず
つ読み出されて1セクション全体がレンダーされる。各
ミニブロックは1×1×2の配列からなる4つのボクセ
ル320に分解される。すなわち、Z方向整列された4
対のボクセル(A、B、C、D)である。一対のボクセル
320が図3に図示のように各パイプラインへ送られ
る。
【0026】各対のボクセルが勾配推定器段301の中
を通され、各ボクセルにおける勾配値が得られる。勾配
を得るために使用される中央差分フィルタの結果、出力
ボクセルと勾配とは各次元(方向)に入力値から1単位だ
けオフセットされる。このことはパイプライン間での小
量のデータ交換を必要とする。
【0027】勾配推定器段から、ボクセルと勾配は類別
器−補間器302へ渡される。この段で、ボクセル・フ
ィールドは、勾配と共にRGBα値に変換され、さら
に、レイに沿ったサンプル・ポイントにおける値に応じ
て補間される。補間器はまずZ方向に補間を行い、次い
で、Y方向とX方向に補間を行う。類別と補間ステップ
がいずれの順序でも生じ得る。類別器−補間器が、すべ
ての4つのパイプラインの間で共有される一対のスライ
ス・バッファ250、並びに、Z補間に使用されるボク
セル・データを格納する非共有バッファとを有すること
に留意されたい。
【0028】4つのパイプラインの4つの類別器−補間
器の出力は、スタンプと呼ばれるサンプル空間内の2×
2の配列のポイントにおけるRGBα値と勾配値からな
る配列である。スタンプのポイントは、ボリュームを貫
通してキャストされているレイのうちの4本と、スライ
スとの交点に対応するXY位置において、ボクセル・ス
ラブに平行な平面内に常に存在する。レイが、像面上の
ピクセルを貫通して通るように定義されるとき、これを
XY画像順と呼ぶことにする。その理由としてレイのx
座標とy座標が像空間のx座標とy座標と同じであると
いうことが挙げられる。通常の画像順では、従来技術で
公知のように、ボリューム内のxy平面に対して平行な
平面上ではなく、像面に対して平行な平面上の、サンプ
ル空間内のポイントが選択される。
【0029】RGBα値と勾配値のスタンプは次に4つ
の照明器303へ渡される。これらの値は反射率マップ
を用いる周知のフォン(Phong)照明に適用される。各パ
イプラインの照明器は、レンダリング中データ交換を行
わないという意味でその他のパイプラインの照明器から
独立している。これらのパイプラインはすべて同じクロ
ックに従って作動する。
【0030】これらの勾配値は、レンダリング操作によ
って勾配値の出力が指定される場合を除いて照明器段で
使用される。この場合、パイプライン内の赤、緑、青の
カラー成分の代わりに上記3つの勾配成分が用いられ
る。
【0031】各パイプラインの照明器段の出力値は照明
されるRGBα値であり、このRGBα値がサンプルポ
イントのカラー寄与を表す。RGBα値は合成器段30
4へ渡される。この合成器はオンチップ・バッファの中
へレイのRGBα値を蓄積する。あるセクションのレン
ダリングの最後に、4つの合成器段の出力が、一回に1
スタンプだけ読み出され、例えばピクセル値として、レ
ンダリング用メモリ160内に格納される。
【0032】コントローラ−パイプライン・インターフ
ェース 図4は、パイプライン300のそれぞれの段301−3
04と並列に接続されたコントローラ400を図示す
る。図を明瞭にするために、コントローラとパイプライ
ンとの間の相互接続は抽象的レベルで図示されている。
実際の実現例には多数の並列相互接続ラインとさらの多
くの個々の相互接続ラインが含まれる(詳細の次のレベ
ルについては図9を参照)。
【0033】レンダリング用メモリ160から得られる
ボクセル402などの生の入力データはコントローラ4
00の中を通って途中バス405を介してパイプライン
300の中へ入る。段301−304はボクセル値をサ
ンプル値へ変換し、サンプル値をピクセル値403と組
み合わせる。これらのピクセルは、コントローラを介し
てレンダリング用メモリ160へ書き戻さる。
【0034】従来技術とは対照的に、本レンダリング・
エンジンであるレンダリング・パイプライン300は適
応性があり融通性がある。コントローラ400はパイプ
ライン300へ出力制御信号401を出す。出力制御信
号はキュー404を介して細いパイプラインへ転送され
る。これらは先入れ先出し(FIFO)キューである。こ
の出力制御信号は、パイプライン段301−304の作
動を制御するために使用される。入力制御信号420が
パイプライン段から受信される。コントローラがデータ
の送信を停止できるように、各々の対応するキュー40
4がまさにいっぱいになる時点がこの入力制御信号によ
って示される。
【0035】個々にあるいは複数のセットとして、出力
制御信号401にはタグが含まれる。このタグについて
以下さらに詳細に説明する。これらのタグは様々なタイ
プのデータ構造の初めと終りを示すものであり、セクシ
ョン、スライス、スラブ等のボリューム・データが組織
化されてこれらのタイプのデータ構造になる。これらの
タイプのデータ構造については以下さらに詳細に説明す
る。これらのタグは、スタック、タイル、スタンプなど
を含むコントローラ内部で処理されるデータの種別もマ
ークするものであり、このデータの種別についても以下
さらに詳細に説明する。
【0036】キュー404内のこれらのタグの目的は、
パイプラインの様々な段の中のデータとの、出力制御信
号401の時間整列を行うことである。バッファ410
はパイプライン内での融通性を与える。図を明瞭にする
ために、バッファ410は段の間に示されているが、好
ましい実施の形態では、補間器のような段のいくつかに
は内部バッファが備えられている。次の段がデータを受
け入れる準備がまだできていないとき、これらのバッフ
ァはデータの格納場所を提供する。これらのバッファこ
そ、部分的にパイプラインに可変長すなわち弾性を与え
るものである。この望ましい実施の形態によって、段の
うちのいくつかの段(特に、類別器/補間器段と照明段
との間などのバッファがバブルの除去に役立たない段)
の間のバッファを取り除くことによりゲートの節減を行
うことができる。
【0037】作動中、データの利用可能性、バス・ロー
ド、および、計算の複雑さから成る未知の力学に依存す
るが、様々な段によって異なるレートでデータ処理が行
われる。したがって、下流段がまだ混んでいる場合、上
流段は、バッファ410の中の1つに対してその出力の
処理と書込みとを続けることができる。次いで、下流段
が前のタスクを完了すると、下流段が必要とする入力デ
ータがすぐに利用可能となる。
【0038】これらの段が、互いに関して、また、コン
トローラ400に関して非同期的に作動するときでさ
え、これらのタグによって、データが常に互いに関して
同期することが保証される。合成器304内での早めの
レイ終了を示す入力制御ライン430のような追加の入
力制御ラインを使用して、コントローラ400へパイプ
ライン状態情報を返送することが可能である。早めのレ
イ終了とは、ソフトウェア・レンダリング技術において
公知のオペレーションであり、このオペレーションによ
って、蓄積されたカラーが不透明になった後、レイをも
はや処理しなくなるため、さらなるサンプルはそれまで
の結果に影響を与えない。
【0039】本発明によるコントローラを持ない従来技
術のレンダリング・パイプラインは、一般に、決まりき
った方法で作動し、すべての段は、固定したクロック・
サイクルに従って同時に順方向にデータの移動を行う。
従来技術のパイプラインは一般にコントローラからのコ
マンドをバッファしないため、パイプラインは決まりき
った方法で作動する。その結果、従来技術のパイプライ
ンは、どこかで動かなくなったとき、取り除くことがで
きない“バブル”をパイプラインの中へ注入することに
なる。バブルは、パフォーマンスを低下させる無用のサ
イクルである。
【0040】ダイナミックな処理状態に応答する本設計
の融通性はパイプの中からバブルを“絞り出す”能力を
持っている。それは、これら様々な段が、本質的に、他
の段が行っていることに無関係に、異なるレートでデー
タ処理を行うという理由による。この結果、レンダリン
グ・エンジンのパフォーマンスが大幅に向上することに
なる。さらに、コントローラは、ボクセル・データがパ
イプラインに入る前および入った後にボリュームを刈り
込み、レンダリング処理の10倍もの大幅なスピードア
ップを図ることが可能となる。例えば、毎秒5〜50フ
レーム進むことにより、リアルタイムのボリューム・レ
ンダリングの実現が可能となる。
【0041】用語の定義 本セクションは、本発明の適応型パイプラインとコント
ローラとによって処理される様々なデータ構造の記述に
用いられる基本的用語を紹介する。これらはタグによっ
て同期するデータ構造である。
【0042】セクション:セクションとは、例えば24
×24ピクセルまでを含む像面上の矩形領域である。あ
るいは、セクションとは、1組のレイおよびそれらのレ
イに沿ったすべてのサンプル・ポイントと考えることが
できる。レンダリング・エンジン300では、各セクシ
ョンはXYボクセル平面上に平行四辺形を形成する(下
記図6参照)。好ましい実施の形態では、セクション・
サイズは各方向に4の逓倍である。
【0043】スライス:スライスとは、セクションから
得られる1組のサンプルであり、この組のサンプルはす
べてが同じサブボクセルZアドレスを持つ。1つのスラ
イスは像面上へ投影されるとき矩形を形成する。
【0044】スラブ:スラブとはボリューム・データ・
セット内のミニブロックからなる矩形である。1つのス
ラブはボクセルの2つの平面を含み、この平面は互いに
対して整列し、かつ、ミニブロックの境界に対して整列
している。ミニブロックからなるN×Mのスラブには2
×2N×2Mのボクセルが含まれる。
【0045】スタック:スタックとは、1つのグループ
としてコントローラ400により処理される1グループ
の隣接サンプル・スライスまたはミニブロック・スラブ
である。コントローラは、フラクショナル・ボクセル座
標の最低値と最大値と、デプス値(これはボクセルZ座
標とは別個のものである)と、スタックの切断面の値と
を決定して、スタックの廃棄が可能かどうかの検査を行
うようにすることができる。コントローラはセクション
部分にわたって迅速にスキップできるように倍数のスタ
ックを検査する。
【0046】タイル:タイルとは、1つのグループとし
てコントローラによって検査されるスライスまたはスラ
ブの1部分である。好ましい実施の形態では、1スライ
スまたはスラブ当たり16枚のタイルが存在する。各タ
イルはX方向とY方向に同数のサンプルを含み、タイル
のサイズはセクションのサイズによって決められる。タ
イルの境界は必ずしもスタンプの境界と整列するとはか
ぎらない。なぜなら、1方向あるいは2方向でタイル・
サイズが奇数となる可能性があるからである。例えば、
12×20のセクションの場合、各タイルは3×5とな
る。
【0047】スタックとタイル コントローラはタイルとスタックとを用いて大きなグル
ープのサンプルとボクセルを検査し、処理を行う。例え
ば、コントローラは、タイルまたはスタック内のサンプ
ルまたはボクセルのいずれも最終画像に寄与しないこと
を決定することができる。この場合、コントローラはそ
のタイルまたはスタック上でのさらなる処理をスキップ
し、このスキップによってコントローラとレンダリング
・パイプラインの双方がさらに効率的になる。例えば、
コントローラによってスタックがスキップされた場合、
レンダリング・エンジン300はそのスタック内のボク
セルまたはサンプルのいずれの処理も行わない。
【0048】図5の(a)は、最上部スライス503の下
に在るレイ整列セクション内のサンプル・スライス50
2の3つのスタック501を図示し、図5の(b)は、最
上部スラブ506の下に在るミニブロック・スラブ50
5からなる3つのスタック504を図示する。スライス
またはスラブはコントローラ400によって個々に検査
される。点線は各スタックのX境界とZ境界とを例示す
る。スタックが同じサイズである必要はないことに留意
されたい。コントローラは変動するサイズのスタックを
検査することができる。好ましい実施の形態では、スタ
ック境界は2のべき乗だけ現在のスライスまたはスタッ
クからオフセットされる。これによってコントローラ
が、乗算の代わりにビット・シフトを利用して、以下に
説明するように、倍数のスライスまたはスタックをスキ
ップするのに必要な増分値を生成することが可能にな
る。
【0049】スライスとスラブを4×4の配列のタイル
に分割することにより、コントローラとレンダリング・
パイプラインがセクション部分をスキップすることが可
能になる。特に、タイル全体がクリップ領域の外側にあ
る場合、そのタイルをさらに処理する必要はない。サン
プル・スライス・タイルには各レイからの単一サンプル
が含まれる。スラブ・タイルには、そのスラブから得ら
れるボクセルを用いる各レイのセグメントが含まれる。
【0050】図6の(a)、(b)は、16×16のサンプ
ル・スライス用として、像面601上へ投影されるタイ
ルと、ボクセル平面602上へ投影されるタイルとをそ
れぞれを示す。各タイルには4つのスタンプ604が含
まれる。図6の(a)は、像面上でセクションとタイルが
直交矩形であることを示す。各タイルには同数のサンプ
ルからなる矩形の集合が含まれる。単一のスタンプがタ
イルの境界を横切る場合もある。図6の(b)は、ボクセ
ル平面上でタイルが平行四辺形を形成することを示す。
この図では、平行四辺形は直角を有しているが、直角を
有する必要はない。
【0051】タイルとスタック範囲 コントローラによって、各スタックとタイル用の1組の
範囲が決定される。これらの範囲によって、スタックま
たはタイルが、XYZ位置やデプスのようなパラメータ
用、あるいは、様々なクリッピング平面用として設定可
能な最小値と最大値とが指定される。
【0052】サンプル・スライス・タイルは1サンプル
厚である。これに起因して、タイルの最小境界および最
大境界は、タイル内にあるそのスライス内のサンプル・
ポイントの最少境界/最大境界である。ボクセル・スラ
ブ境界は、それらのボクセルを読み出す必要があるサン
プルのすべてに基づいて計算される。したがって、これ
らの境界はレイの長さに沿ったサンプルに対して決定す
る必要がある。スラブ・タイルの最小境界と最大境界
は、スラブ内のボクセルを使用するサンプルの総セット
を反映する必要がある。同様に、スタックにはレイの長
さに沿ったサンプルが含まれ、したがって、各レイに沿
ったサンプルの範囲を考慮する最小境界および最大境界
がスタックによって要求される。視角によってこの問題
はさらに複雑になる。なぜなら、レイ分離が、タイルま
たはスタックを形成するレイ・セグメントの前面と後面
とで異なる場合があるからである。
【0053】図7の(a)、(b)および図8は、様々な角
度でレイ702によって交差されるボクセル・スライス
701の側面図を図示する。これらの図は、スラブ・タ
イルとスタックの最少/最大境界を見つける方法を定義
するものである。各々の小さな正方形703はボクセル
位置を表す。ミニブロック・スラブには、実線によって
リンクされる2つの中央ボクセル・スライス705が含
まれる。ミニブロック・スラブの上方または下方に在る
2つのボクセル内のサンプルは、中央差分勾配を計算す
るために、スラブからのボクセルを必要とする。したが
って、スラブから離れる2つのボクセル・スライスまで
のサンプルは、影のついたボックスによって指定される
ような各タイルの中に含まれる。
【0054】各タイルとスタックはタイルまたはスタッ
クの前面と後面に対して個々の最少/最大範囲を有す
る。水平の点線707−708はこれらの範囲を表す。
上の点線707は前面のサブボクセルXの最少/最大範
囲であり、下の点線708は後面の最少/最大範囲であ
る。各面に対するサブボクセルZの最少/最大は点線に
よってマークされたボクセル・スライスである。これら
の線は水平である。なぜなら、前述したように好ましい
実施の形態はXY画像順を実現するからである。この同
じ技術を全部の画像順に対して適用することができる。
その場合、点線は像面に対して平行になる。
【0055】コントローラは、タイルの最少範囲Xと最
大範囲Yに対して、または、スタックの最少値Xと最大
値YおよびZアドレスに対して、範囲フロア(最少範囲
−1)からシーリング(最大範囲+1)の範囲でボクセル
を読み込む。これは勾配の決定に必要である。サンプル
位置における勾配の計算には、サンプルの周りの2×2
×2領域内に在る各ボクセルにおける勾配計算を必要と
する。次いで、この計算には、その2×2×2領域に隣
接するボクセルの読込みを必要とする。好ましい実施の
形態では中央差分勾配が計算されるが、同じ技術によっ
て3×3×3のSobelフィルタのようなさらに複雑な勾
配関数の計算も可能である。
【0056】処理対象ボクセル数の削減 1つの利点として、本発明のコントローラ400によっ
て、どのサンプルとボクセルの処理が必要であるかの選
択、および、どのサンプルとボクセルの廃棄が可能であ
るかの選択が行われる。以下のセクションでは、処理の
必要があるボクセルとサンプル数を減らすために、本発
明によるレンダリング・エンジンによって使用されるマ
スク・コードとその他のメカニズムとについて説明す
る。
【0057】従来技術では、ハードウェア・パイプライ
ンが一般にボリューム・データ・セット内のすべてのサ
ンプルとボクセルとを処理して、最終画像を生成するよ
うになっている。本レンダリング・エンジンでは、最終
画像に寄与できるサンプルのみの処理が試みられる。最
終画像に寄与しないサンプルとボクセルは廃棄される。
【0058】いくつかの技術を利用して、処理を必要と
するボクセルとサンプル数の最少化と、廃棄対象のボク
セルとサンプル数の最大化が行われる。早めのレイ終了
によって、レイが完全に飽和したとき、あるいはレイが
ほとんど完全に飽和したとき、レイに沿ったボクセルは
廃棄される。すなわち、処理時に、レイに沿った任意の
追加ボクセルは、対応するピクセルの最終的外観を変化
させないか、あるいは、その最終的外観の変化は最小限
にとどまる。クリッピングや空の空間の検出のような他
の技術によって、視野の外側に在るボクセルの廃棄が可
能となる。コントローラはマスク・コードを用いてデー
タを廃棄する。
【0059】マスク・コード マスク・コードとは、レイ上のサンプル位置がクリップ
領域を関連づける方法を指定する2ビットコードであ
る。クリップ領域を用いてレンダー対象のボリューム・
データ・セット部分が定義される。クリップ領域の外側
のボリューム部分はレンダーされない。1つの利点とし
て、このような領域内のボクセルとサンプルは、レンダ
リング・エンジンによって処理されない。クリップ領域
はクリッピング平面によって定義される。
【0060】サンプルはクリップ領域内に存在する場合
有効である。クリップ内に存在しない場合には、サンプ
ルは、レイ方向に対して凸型クリップ領域の前または後
にある。非凸型クリップ領域の場合には、サンプルが凸
型クリップ領域の前後のいずれに在るかを特定すること
ができない場合がある。その場合、サンプルは非凸型ク
リップ領域の外側にある。詳細については以下を参照さ
れたい。クリップ領域の前、後、あるいは外側に在るサ
ンプルは無効である。
【0061】コントローラ400は各クロック・サイク
ルについて8つの個々のサンプル位置、すなわち、1ク
ロック・サイクル当たり4対の最少/最大位置のいずれ
かを生成することができる。これらの各位置は様々なク
リップ領域の各々を表すそれ自身のマスク・コードを持
っている。
【0062】マスク・コード解釈 表Aは各2ビットマスク・コードによって表される4つ
のケースを図示する。“有効”は、クリップ領域の範囲
内に存在し、したがって処理すべきサンプル位置を示
す。その他のケースは無効なサンプル位置を示し、これ
らのサンプル位置は、パイプラインに入る前か、あるい
は、合成段304に先行するパイプライン内のある時点
のいずれかの時点で廃棄することができる。1つの利点
として、パイプラインからボクセルを廃棄することによ
りパフォーマンスが改善される。マスク・コードに影響
を与え、ボクセルの廃棄を引き起こす可能性がある、早
めのレイ終了のような他の条件が存在することに留意さ
れたい。
【0063】
【0064】“前”および“後”はレイ上の無効サンプ
ル位置がそのレイがクリップ領域に入る前に生じるか、
あるいは、そのレイがクリップ領域を出た後に生じるか
を指定するものである。凸型クリップ領域については常
にこの決定を行うことができる。トリム平面は、各方向
に最少/最大境界に対してクリップを行い、それによっ
て凸型クリップ領域を生成する。切断面は、一対の平行
する平面の外側あるいは一対の平行平面の間のいずれか
に在るサンプルをクリップするので、切断面は前者の場
合凸型クリップ領域を生成することになる。“外側”コ
ードは、クリップ領域の前あるいは後のいずれに在るか
を決定できない無効サンプルを指定する。これは、平行
切断面の間の領域をクリップアウトするとき切断面と共
に生じる。
【0065】従属マスク・コードの合成 スライスとスラブ状態マシン(以下説明する)は、時とし
て個々の前面と後面に対する、最小および最大サブボク
セル・アドレスによって表される範囲の検査を行う。こ
の場合、2〜4個の2ビットマスク・コードを組み合わ
せることができる。タイルまたはスタックの最上部と最
下部の双方の最少値/最大値の対を表すためには、スタ
ック用として、また、ボクセル・タイル用として4個の
2ビットマスクが必要である。サンプル・タイルは、1
スライスの厚さしかないので、単一の最少値/最大値の
対しか必要としない。2つのマスク・コードが同じクリ
ップ領域の異なる部分を表すので、これらの最少値/最
大値の対は従属マスク・コードと呼ばれる。
【0066】表Bは従属マスク・コードの組合せ方法を
示す。双方のマスク・コードが同じ値を持っている場
合、結果は同じである。一方のマスク・コードが有効な
場合、その組合せも有効である。その理由として2つの
マスク・コードが最少位置と最大位置を表すということ
が挙げられる:このマスク・コードのうちの一方がクリ
ップ領域内に存在する場合、少なくとも部分的にそれら
の組合せもまたクリップ領域の範囲内に存在するからで
ある。一方のマスク・コードがBeforeであり、他方のマ
スク・コードがAfterである場合、その組み合わされた
結果もまた有効である。なぜならこれは、クリップ領域
の両端にわたって拡がるタイルまたはスタックのケース
を表すからである。括弧内の組合せはこの好ましい実施
の形態の中では生じない。なぜなら、凸型クリップ領域
は外側を使用しないからであり、また、非凸型クリップ
領域は前と後(Before and After)とを使用しないからで
ある。
【0067】
【0068】独立マスク対の組合せ下記の表Cは、独立
したクリッピング条件のための2個の2ビットマスク・
コード(独立したクリップ検査を表すマスク・コード)の
組合せ方法を示す。例えば、マスク・コードのうちの一
方が切断面クリッピングを示すことができ、別のマスク
・コードがX、Y、Zトリム平面の中の1つを示すこと
ができる。
【0069】クリッピング条件のすべてを満すときにの
み1つのサンプルが有効となるので、独立したクリッピ
ング条件の双方が有効なときにのみ、組み合わされた結
果は有効となる。さらに、もしクリッピング条件のいず
れかがAfterである場合、結果はAfterであり、これはこ
のサンプル位置、タイルあるいはスタックがクリップ領
域の中の1つを通過していることを意味する。したがっ
てその単数または複数のレイに沿った処理は完成する。
【0070】
【0071】切断面、トリム平面、クロップ・マスク、
および、デプス・マスクは互いにまったく独立している
ことに留意されたい。
【0072】以下のセクションで、レンダリング・エン
ジンによってデプス・クリッピングを行う方法について
説明する。これは処理対象のボクセル数を減らす別の技
術である。
【0073】デプス・クリッピング デプス・バッファに対するクリッピングはその他のクリ
ップ検査とは多少異なる。従来技術では、デプス検査
は、レイ/ピクセル当たり単一のデプス値に対するサン
プルのデプス比較によって一般に行われ、サンプルのク
リップを行うか否かの判定を行うために8つの異なる不
等式(<、>、=、≦、≧、≠、常にパス(always)、絶
対にパスしない(never))による比較の1つが選択され
る。本発明のコントローラ400は公知のものとは異な
る2つの相違点を持っている。
【0074】第1に、コントローラ400は2回のデプ
ス検査を実行し、選択可能なブール演算(AND、O
R、XOR)によってこの2回の検査結果を組み合わせ
る。2回の比較検査の補集合(<の補集合は≧など)をつ
くることができ、また、これらの補集合を常にパス、ま
たは、常にパスしないと置き換えることができるので、
ド・モルガンの法則を用いて2つの検査の16通りのす
べてのブールの組合せを生成することができる。
【0075】第2に、コントローラ400はクリッピン
グ操作のほんの一部を実行するにすぎない。好ましい実
施の形態では、コントローラ400はスタック、タイ
ル、サンプルをセクション内の2つのデプス・バッファ
の最小値および最大値と比較する。サンプル当たりのデ
プス検査が合成器304内で行われる。その理由は合成
器によってデプス・バッファの修正オペレーションがサ
ポートされているからである。ある代替の実施の形態で
は、修正されたデプス値が必要に応じて合成器からコン
トローラへ伝達される場合、コントローラ内でデプス検
査のすべてが行われる。
【0076】デプス検査では他のクリップ領域と異なる
処理が要求される。その他のクリップ領域検査では、各
サンプルに対して各々2つの生じ得る結果、すなわちサ
ンプルがクリップ境界の一方の側にあるか、ないかのい
ずれかの結果しか得られない。サンプルが正確にクリッ
プ境界上に存在する可能性があるため、デプス検査では
3通りの生じ得る結果が得られる。これが、1デプス・
バッファ当たり2#3=8通りの生じ得る比較検査(絶
対にパスしない(never)、<、=、≦、>、≧、≠、常
にパス(always))が存在する理由である。
【0077】レンダリング・システムでは、DepthFirst
とDepthLastと呼ばれる2つのデプス・バッファが使用
される。これらの名称によって、それらの典型的用途
(ボリュームからのレンダー対象領域の初めと終りを指
定)が示唆される。しかし、DepthFirstがDepthLastに優
先するという要件は存在しない。したがって、実際に
は、単一の位置における2つのデプス・バッファに対す
る比較を行った場合、サンプル・デプスが2つのデプス
・バッファの各々未満または以上であるかどうかに依存
して、あるいは、そのサンプルが、1つあるいは2つの
バッファのデプス・バッファのクリップ境界に存在する
かしないかに応じて、単一のサンプルの検査結果につい
て6通りの異なる組合せが存在することになる。
【0078】好ましい実施の形態では、コントローラ4
00は、=または≠比較を用いるデプス検査用のボクセ
ルまたはサンプルを廃棄しない。代わりに、コントロー
ラは、これらの比較のいずれかの可能性である場合、ス
タックとタイルを有効なものとして常に報告し、合成器
304だけがすべての廃棄を行う必要がある。また、コ
ントローラは、比較器のキャリービットを用いることに
より、比較A≦BおよびA>BをA<B+1とA≧B+
1比較に変換する。このようにして、コントローラ・ク
リップ論理回路は1デプス・バッファ当たりの2つの比
較結果(DepthSample<DepthBufferおよびDepthSample≧
DepthBuffer)を考えるだけで十分となる。
【0079】タイルとスタックはある範囲のサンプル・
デプスを持ち、また、デプス・バッファ自身もある範囲
の値を持っているので、各タイルまたはスタックは実際
には、4つのデプス比較のどれがそのタイルまたはスタ
ック内で生じ得るかを示す4ビットの領域番号を必要と
する。単一サンプル位置を各デプス・バッファから得ら
れる1つの値と比較するとき、値1はDepthSample<双
方のデプス・バッファを示し、値2は、DepthLast≦Dep
thSample<DepthFirstを示し、値4はDepthFirst≦Dept
hSample<DepthLastを示し、値8はDepthSample≧双方
を示す。
【0080】デプス検査の領域番号への組合せ コントローラ400は、各サンプル位置の個々のデプス
検査を2つのデプス範囲の最少値と最大値の双方と組み
合わせることにより4ビットの領域番号を生成する。図
16の表Dは、デプス検査結果を組み合わせて領域番号
に変える方法を示す。ヌル範囲(0000)をカウントに
入れて10個の有効な(legal)領域番号が存在する。例
えば、1110のようなコードは、サンプル位置がDept
hFirst未満またはDepthLast未満となり得ることを表明
しているので無効(illegal)である。なぜならサンプル
位置が同時にDepthFirstとDepthLast双方未満となるこ
とは決してあり得ないからである。したがって、このよ
うなコードは生成されないし、図16の表Dの中に現れ
ることはない。この表の値を生成する方法は、R=(A
OR B)を計算し、R==x11xまたは1xx1であれ
ば、R=1111を出力し、そうでない場合にはRを出
力させよというものである。
【0081】コントローラはまた領域番号の第2の集合
も必要とし、この第2の集合は、Afterマスク・コード
を生成するためにコントローラによって使用される。Af
terマスク・コードは、古い領域番号と1010とを組
み合わせる新しい領域番号を生成することにより領域番
号から生成される。この生成によって領域番号はDepthF
irstからDepthLastまでの範囲外へ拡がる。After領域番
号を用いてサンプル・スタックまたはタイルがいつデプ
ス・クリップ領域の後に存在するかを決定して、処理の
終了が可能となるようにすることができる。
【0082】合成器内で行われるデプス検査も、デプス
検査の4通りの組合せのうちのいずれが有効なサンプル
を生成するかを示すために4ビットコードを有する。図
17に示す表Eは、生じ得るデプス検査から結果として
得られるコード及びこれらのコードの組み合わせ方法を
示す。デプス比較が=または≠である場合、あるいは、
コードが“alwaysPass”コードと組み合わされる場合、
デプス・クリッピングの2ビットマスク・コードは有効
である。上記条件とは異なる場合、領域番号と図17の
表Eから得られるコードとの論理和(AND)がノンゼロ
であれば、マスク・コードは有効である。
【0083】マスク・コードが無効な場合、そのマスク
・コードがAfterであるか、Outsideであるかを区別する
必要がある。この区別を決定するために、1000のデ
プス比較結果を領域番号と組み合わせ、次いで、図17
の表Eから得られる4ビットコードとその結果との論理
和(AND)をとる。この論理和の結果がゼロの場合、マ
スク・コードはAfterであり、ゼロでない場合、マスク
・コードはOutsideである。この判定検査は機能する。
なぜなら、現在の位置から可能な最大のデプス値までの
サンプル・デプスがデプス検査に失敗するかどうかがこ
の判定検査によって検査されるからである。
【0084】コントローラ 図9は、本発明によるコントローラ400のトップ・レ
ベルのブロック図である。コントローラには、マスタ状
態マシン(StateSeq)1000と、実行ユニットCoordEU
902、CutEU903、DepthEu904と、論理素子Bott
omSeq921、TopSeq922、ZinterpSeq923、Depth
Seq924、MaskSeq925とが含まれる。実行ユニット
(EU)(902−904)については後程説明する。
【0085】BottomSeq921は、合成器段304とレ
ンダリング用メモリ160との間で画像とデプス・デー
タの転送を行う読出し書込み要求を出す。BottomSeq9
21は、プログラムされた範囲に基づいて境界外アドレ
スの読出し検査も行い、この境界外アドレスを所定の定
数値と置き換える。
【0086】DepthSeq924は、合成器段304によっ
て用いられるデプス・バッファ用デプス値を蓄積する。
DepthSeqは各セクションの最小および最大デプス値の決
定も行う。代替実施の形態は1セクション内の16枚の
個々のタイルの各々の最少/最大デプス値を生成するこ
とができる。
【0087】MaskSeq925は、コントローラEU90
2−904からMaskSeq925へ渡されたデータに基づ
いてマスク・コードを計算する。その他の2つの論理素
子(TopSeq922とZinterpSeq923)については以下説
明する。
【0088】コントローラ400は以下の大きなデータ
・バスを用いる:BottomSeq921からメモリ・インタ
ーフェース210へのバス941、TopSeq922からメ
モリ・インターフェース210へのバス942、MaskSe
q925と補間302および合成器304段との間のバ
ス943と、ZinterpSeq923から補間段302のZ−
補間器へのバス944と、DepthSeq924から合成器段
304へのバス945と、合成器段からMaskSeq925
(図4参照)へのバス430と、メモリ・インターフェー
ス160からDepthSeq924へのバス946
【0089】以下の説明で、コントローラが、スタッ
ク、スラブ、スライスなどのような大きなデータ構造を
様々なコントローラ構成要素へ“渡す”あるいは“送
る”と述べられている場合、それは調整アドレスが配信
されることを意味すると理解すべきである。しかし、ボ
クセルとピクセルとは、図4に図示のようにバス405
を介してコントローラ経由でパイプラインに出入りす
る。
【0090】各クロック・サイクル中、StateSeq100
0は実行ユニットCoordEU902、CutEU903、DepthE
u904の各々に対して1つの命令を出す。これらの実
行ユニットは構造上は同一のものであるが、SIMDタ
イプのアーキテクチャを用いて(様々なビット幅を持つ)
様々なデータに対して並列に作用する。マスタ状態マシ
ン1000は実行ユニット902−904上で処理を実
行する倍数の個々のスレッドの間での仲裁も行う。これ
らのスレッドは、以下に説明するように、異なる詳細レ
ベルでボリューム・データ・セットの中を1ステップず
つ処理する4つのコルーチンとして実現される。
【0091】3つの実行ユニットCoordEU902、CutEU
903、DepthEu904は、マスタ状態マシン1000
によって出される同じ命令を用いて、並行して8つのサ
ンプル位置で各データを決定する。スレッドのすべて
は、同じセットのハードウェア論理素子に対して順に処
理を実行する。このことによって多量の包括的なルーテ
ィングが除去されるが、この除去を行わない場合には、
1つの状態マシンから次の状態マシンへデータを渡すた
めに多量のグローバルなルーティングが必要となる。こ
のグローバルなルーティングの代わりに、ほとんどのデ
ータは、以下に説明するように、実行ユニット内のレジ
スタ・ファイル1501を通じて1つのスレッドから次
のスレッドへ渡される。
【0092】マスタ状態マシン 図10はさらに詳細にマスタ状態マシン(StateSeq)10
00を図示する。StateSeqには、4つのレイ・キャステ
ィング・スレッド状態マシン(StampState1001、Sli
ceState1003、SlabState1002、SectState10
04)が含まれる。マルチプレクサ1010とマスタ状
態アービタ1040とを用いて、マスタ状態マシンはこ
れらのスレッドの中の1つのスケジューリングを行っ
て、実行ユニット(EU902−904)でクロック・サ
イクル毎に処理を実行する。このスケジュールされた状
態マシンは処理の実行準備ができている最高優先順位を
有する状態マシーンである。準備ができるためには、状
態マシーンは処理対象データと、結果を報告するため
の、状態マシーンの出力バッファ内に空間とを持つ必要
がある。
【0093】状態マシーン1001−1004に対して
優先順位を割り当てる方法は実際の実現装置に対応して
決めることができる。例えば、処理対象のデータ量に基
づいて優先させる必要がある場合には、StampState10
01は最も高い優先順位を持つようにすることが望まし
い。しかし、その目標が、最長の待ち時間を持つ状態マ
シーンをスキップすることである場合、SlabStateを優
先させることが望ましい。この望ましい実現例ではSlab
Stateに最も高い優先順位が与えられる。
【0094】ループ・カウンタ1020は、個々のセク
ション、セクション内のスラブ/スライス、あるいはス
ライス内のスタンプを通じて1ステップ毎の処理の制御
を行う。ループ・カウンタはまたセクション内のレイ位
置の決定も行う。命令生成器1030は、クロック・サ
イクル当たり1命令の割合で現在の状態を命令に変換す
る。この命令は、実行ユニット902−904の各々に
対して発せられる。
【0095】以下さらに説明するように図11は、これ
ら4つの状態マシン1001−1004の相互関係と、
これら4つの状態マシンの各々がデータを送る送り先で
あるその他のコントローラ論理素子とバス・インターフ
ェースを例示する。StampState1001とSectState1
004の双方は、XおよびY方向の2次元配列の中を1
ステップずつ処理するのに対して、SliceState1002
とSlabState1003とはZ次元の1次元配列の中を1
ステップずつ処理する。
【0096】本発明によるコントローラ400は、レン
ダリング・エンジンがデータを使うことができるよりも
さらに高いレートでデータの生成が可能であることに留
意されたい。このことは意図的なものである。それによ
って、“バブル”がパイプラインの中に現れるとき、特
別のデータを用いてバブルを“絞り”出すことができる
からである。
【0097】スタンプ状態マシン StampState1001はサンプル・スライス内のサンプル
のスタンプを処理する。単一のクロック・サイクルで、
StampState1001はパイプライン当たり2つのサンプ
ルの生成が可能である。すなわち4つのパイプラインに
わたるサンプルの整列した2×2の2つのスタンプの生
成が可能である。StampStateはXY補間キューに対して
サンプルを出す。XY補間キューが満たされていなく
て、かつ、SliceStateがサンプル・スライスを発見した
とき、StampStateは処理を実行することができる。
【0098】StampState1001はまたスタンプの動き
の制御も行う(図13の(a)、(b)参照)。StampState
は、1クロック当たり2つのスタンプを生成し、この2
つのスタンプは図13に図示のようにセクションを横切
って蛇行パターンで移動する。スタンプ状態マシン10
01は、バス943を介して補間段302と合成器へス
タンプ・データを渡す。
【0099】スライス状態マシン SliceState1003はセクション内のサンプル・スライ
スを処理する。SliceStateは各サンプル・スライスを検
査してスライスの廃棄が可能かどうかを決定する。廃棄
が可能でない場合、SliceStateはStampState1001と
ZinterpSeq923とへスライスを渡す。以下に説明する
ように、スタック内のスライスのすべてを廃棄する場
合、SliceStateはスライスのスタックをスキップするこ
とができる。
【0100】SliceState1002は、スライスを完全に
は廃棄することができない場合はいつでも、ZinterpSeq
923用のスライスを決定する。SliceStateはすべての
スライス・スタックとタイルのXY境界も決定する。そ
の際、どれが廃棄対象のタイルとスタックであるかを示
すマスク・コードが付けられる。
【0101】スライス状態マシン1002はスタンプ状
態マシン1001へデータを渡す。スライス状態マシン
1002はまたZinterpSeq923へサンプル・スライス
・データを渡す。ZinterpSeq923は補間段302用の
Z補間データを生成する。
【0102】SliceStateが処理対象サンプル・スライス
を見つける度に、ZinterpSeq923はCoordEU論理素子
902からタイル境界を受け取る。ZinterpSeq923は
各XYボクセル位置を検査し、ボクセルが、廃棄されな
かったタイル内に存在するかどうかを決定し、対応する
マスクの有効ビットを適宜設定する。この検査と設定に
よって、ZinterpSeqが補間の必要のないボクセルの廃棄
を行うことが可能となる。有効ボクセルに対して、Zint
erpSeqはマスク・ビットと共に補間段302へZ補間デ
ータを送る。
【0103】SliceStateは、ZinterpSeq入力キューが満
たされていないこと、StampState1001が、それが発
見した最も最近のスライスの処理を開始していること、
SectState1004が処理対象のセクションを発見して
いること、という3つのイベントが真であるとき、処理
を実行することができる。さらに、現在のセクションに
ついてSlabState1003を処理しなければならない。
あるいは、SlabState1003はSliceState1002の
前方に存在しなければならない。この結果、StampState
とZinterpEUとが最も最近のスライスを処理している
間、SliceStateは無効スライスのスキップが可能とな
り、StampStateは、別の有効スライスの処理の準備がで
きる時までに、それを見つけることができるようにな
る。
【0104】スラブ状態マシン SlabState1003はセクション内のミニブロック・ス
ラブを処理する。SlabStateは各スラブを検査してスラ
ブの廃棄が可能かどうかを決定する。スラブの廃棄が可
能でない場合、SlabStateは図9のTopSeq922へスラ
ブを渡す。TopSeqは、バス942を介してメモリ・イン
ターフェース210へボクセル読出し要求を出す。TopS
eqはまた図3の補間段302のスラブ・インターフェー
スへスラブ・アドレスを渡す。スラブのすべてが廃棄さ
れた場合、SlabStateはスラブのスタックをスキップす
ることもできる。
【0105】SlabState1003はバス943を介して
補間段302とTopSeq922とへスラブ・アドレス・デ
ータを渡し、TopSeq922はレンダリング・パイプライ
ン300に入るボクセルを読み取る。TopSeq922は、
SlabState1003が処理対象ミニブロック・スラブを
見つける度に、CoordEU902からタイル境界を受け取
る。
【0106】次いで、TopSeq922は、クロック・サイ
クル当たり2つのミニブロック読出し要求をメモリ・イ
ンターフェース210へ渡し、さらに、XYアドレスと
関連情報とを勾配推定器段301用入力キューの中へ入
れる。TopSeqはまた、ミニブロック読込み命令とXYア
ドレスとが出されたかどうかを制御するマスク・ビット
も生成する。
【0107】SlabStateは、TopSeqとスラブ入力キュー
とが満たされていなくて、かつ、SectStateが処理対象
セクションを発見した場合、処理を実行することができ
る。この結果、SlabStateは、最も最近のスラブを処理
しながら、無効スラブをスキップすることができ、それ
によってTopSeqが別の有効スラブを処理する準備ができ
る時までにそれを発見することができるようになる。ま
た、SlabStateは一般にSliceStateよりずっと前に処理
を実行する。これは、補間器302が起動できる前に満
たす必要があるバッファが勾配推定器301内に存在す
るからである。これは、コントローラが融通性を与える
別の方法である。すなわち、レンダリング・パイプライ
ン300内でいつマシンのデータが必要とされるかに基
づいて様々な状態マシンが処理を実行する。
【0108】セクション状態マシン SectState1004はセクション処理を行う。セクショ
ンはサンプル空間内に在る矩形であるが、ボクセル空間
では平行四辺形である。SectStateは、各セクションを
検査して、セクションが視野円錐台(view frustum)と交
差するかどうかを調べる。セクションが交差する場合、
SectStateはBottomSeq921へセクションを渡す。Bott
emSeqは合成器段304のデプス・バッファを初期化
し、ついで、SlabState1003とSliceState1002
へもセクションを渡す。レンダリングが開始され、Bott
omSeqキューが満たされていず、かつ、SlabStateとSlic
eStateとが、発見された最も最近のセクション処理を開
始している場合、SectStateは処理を実行することがで
きる。
【0109】セクション状態マシン1004は、スライ
ス状態マシン1002とスラブ状態マシン1003とへ
データを渡す。さらに、セクション状態マシンはBottom
Seq921へセクション・データを渡し、BottomSeq92
1によって、合成器304のバッファの読出しと書込み
とが各セクションについて行われる。
【0110】コマンドと命令 マスタ状態マシン1000は、4つの状態マシン100
1−1004によって処理される状態に基づいて命令と
コマンドを出すことにより、コントローラ400の操作
を行う。コマンドはバス用論理回路220からデータを
取得し、コントローラの内部にレジスタをロードする。
命令によって、コントローラの実行ユニットは、それら
の関連するレジスタ・ファイル内の値に対して算術演算
を実行し、他のコントローラ・エレメントへその算術演
算の結果を送信する。命令の中には“タグ”が含まれ
る。タグは、実行ユニットによって生成されたデータを
解釈するためにその他の論理素子921−924によっ
て使用される。タグはまた、上述のように、パイプライ
ン300の中を流れる様々なデータ構造にコントローラ
を同期させるためにも使用される。
【0111】タグはいくつかの方法で利用される。第1
に、コントローラのEU902−904の各々は内部で
タグを用いて、マスク・ビットの計算方法を決定するこ
とができる。数クロック・サイクル後、論理素子921
−925は、実行ユニットによって生成された結果の利
用方法を決定するためにタグを使用することができる。
換言すれば、タグ・フィールドを利用して、コントロー
ラの作動とパイプラインの中を流れるデータ構造との同
期がとられる。
【0112】コントローラ・レイ・キャスティング このセクションではレイ・キャスティングについてさら
に詳細に説明を行う。以下の各セクションで、レイ・キ
ャスティングに責任を負う4つの状態マシン(StampStat
e1001、SliceState1002、SlabState1003、
SectState1004)の中の1つが説明される。これらの
状態マシンの各々は、1クロック・サイクル中に実行す
べきオペレーション指定命令を出す。実行ユニット90
2−904は結果データと共に論理素子921−925
へ命令のタグを渡す。
【0113】図12は、生成された順序でデータやシー
ケンシングを指定する命令タグを一般的に示す。点線1
201と中かっこ1202は反復可能なシーケンスを示
す。“最初”と“最後”の指定によって、コントローラ
が1つのセクションのスラブまたはスライス処理、ある
いは、1つのスライスのスタンプ処理の開始前または開
始後のいずれかに同期処理が行われる。
【0114】レンダリングはSectFirstタグ1210か
ら始まり、SectLastタグ1211で終る。これらの2つ
のタグの間に、レンダーされるセクションの数に応じて
一続きのセクション毎のタグが存在する。各セクション
内のスラブ処理はSlabFirstタグ1221とSlabLastタ
グ1222とから始まる。各セクション内のスライス処
理はスラブ処理と並行して行われ、SliceFirstタグ12
23から始まり、スライスfirstとSliceLastタグ122
4で終る。各スライス内のサンプル・スタンプ1230
の処理はSampleFirstタグ1231から始まり、SampleL
astタグ1232で終る。個々のサンプル・スタンプはS
ampleStampタグ1230を用いてマークされる。
【0115】スタンプ状態マシン 各クロック・サイクルで、StampState1001は1パイ
プライン当たり2つの新しいサンプルまでステップし、
これによって列内に2つの2×2スタンプが形成され
る。StampStateによってXYZボクセル座標、切断面パ
ラメータおよびデプスが決定される。StampStateは、ク
ロップ限度、トリム限度、切断面、デプス最少値/最大
値、および、その他のマスキング機能に対してこれらの
サンプルを検査してサンプルを廃棄するかどうかの決定
を行う。
【0116】スタンプの動き 図13の(a)、(b)は、コントローラ400がサンプル
・スライスのスタンプの中を1ステップずつ処理する方
法を示す。各クロック・サイクル中2つのスタンプが生
成される。スタンプ状態マシン1001は、第1列を横
切って右へ移動し、第2の列を横切って左へ移動するな
どの蛇行スキャンを実行する。各x−方向ステップは水
平方向に2つのスタンプを移動させ、各y−方向ステッ
プは垂直方向に1つのスタンプを移動させる。
【0117】スライス状態マシン スライスとは、すべてが同じZアドレスを持つセクショ
ンから得られる1組のサンプルであることを想起された
い。SliceState1002は、スライスが廃棄可能な場
合、個々のスライスまたはN個のスライスから成るスタ
ックをスキップしながら、1つのセクションの範囲内で
サンプル・スライスの中を1ステップずつ処理する。ス
ライスが廃棄できない場合、SliceStateはStampState1
001へスライスを出す。
【0118】コントローラは、レンダーする必要がある
セクションを発見した後、図5の(a)に図示のように、
現在のスライス503をチェックしながら、かつ、スラ
イス501のスタックの後ろをたどりながら、そのセク
ション内のサンプル・スライスの中を1ステップ処理す
る。図5の(a)は1つのセクションの範囲内のスライス
を図示する。点線は、現在のスライス506の下に在る
スライスのスタック504を示す。刈り込み検査に基づ
いて、現在のサンプル・スライスの処理後、SliceState
は1、4、16、32、または、64スライスをスキッ
プする。現在のスライスを廃棄できない場合、SliceSta
te1002は、ZinterpSeq923とStampState1001
に対して信号を発生する。ZinterpSeqは補間段302の
ためにZ補間命令を生成し、StampStateはXY補間命令
を生成する。
【0119】スライスを処理するために、タイルの境
界、並びに、現在の位置とそのXY増分値とが決定さ
れ、StampState1001によって使用される。正射影投
影では、これらの増分値はセクションを通じてすべて一
定である。透視投影では、Zの増分値は一定であるが、
XとYの増分値は該セクションの下にある各スライスに
ついて一定量ずつ変化する。
【0120】スラブ状態マシン SlabState1003は、スラブが廃棄可能な場合、個々
のスラブまたはN個のスラブから成るブロックをスキッ
プしながら、セクションの範囲内でミニブロック・スラ
ブの中を1ステップずつ処理する。スラブを廃棄できな
い場合、SlabStateはレンダリング用メモリ160から
スラブのボクセルを読出し、レンダリング・エンジン3
00の中へ入れるために必要なコマンドを生成する。
【0121】スラブの動き コントローラ400は、レンダーする必要があるセクシ
ョンを発見した後、そのセクション内のミニブロック・
スラブの中を、図5の(b)に図示のように、現在のスラ
ブ506とスラブ504の次のスタックをチェックしな
がら1ステップずつ処理する。図5の(b)はセクション
の範囲内のミニブロック・スラブを図示する。点線は現
在のスラブ506の下に在るスタック504を示す。刈
り込み検査に基づいて、現在のスラブ506を処理後、
SlabState1003は1、4、8、16、または、32
スラブをスキップする。これは、図5の(a)に図示のよ
うな、2、8、16、32、または、64ボクセル・ス
ライスに対応する。現在のスラブ506を廃棄できない
場合、パイプラインの中にスラブのボクセルを読み込む
ことができるようにSlabState1003はTopSeq922
に通知を行う。
【0122】セクション状態マシン セクションとは、例えば24×24ピクセルまでを含む
像面内の矩形領域であることを想起されたい。SectStat
e1004は像面内の次のセクションへ1ステップ処理
する。SectStateは、何らかの有効なサンプルを含む場
合、SlabStateとSliceStateへ各セクションを出す。Bot
tomSeqは、有効なサンプルを含む含まないに関わらず、
各セクション用のデプスバッファと画像バッファの読出
しと書込みを行う。
【0123】セクションの動き 図14はセクションの動き1400を例示する。点線は
視野円錐台をマークし、実線1402はセクションをマ
ークする。各セクションは、各方向に4サンプルと24
サンプルの幅の間にある。したがってこのセクションに
は、4×4の配列のタイル間で平等に分割された、各方
向に2から16のスタンプが含まれる。
【0124】像面を横切るセクションの動きは、サンプ
ル・スライスを横切るスタンプの動きと類似している。
双方とも、X方向に右と左へ移動し、より高いYの値の
方へ移動する蛇行スキャンを利用している。その相違と
して、StampState1001は1状態当たり8個のサンプ
ル位置を決定し、SectState1004は1状態当たりた
だ1つのセクションを決定するということが挙げられ
る。
【0125】正射影投影に関しては、像面を横切って1
ステップずつ処理しながらも、すべての増分値は一定の
ままである。透視投影の下では、XとYの増分値は一定
のままであるが、XまたはYの各ステップに対して、Z
の増分値は一定量ずつ変化する。
【0126】SectState1004は基本平面上でセクシ
ョンを処理する。SectStartは第1のセクションをチェ
ックする。このセクションが視野円錐台1401と交差
しない場合、SectStateは第1のセクションを見つける
まで1ステップずつ処理する。このセクションが視野円
錐台1401と交差する場合、SectStateによって、Sla
bState1003とSliceState1002とはセクションの
中を1ステップずつ処理することが可能になる。SectSt
ateはまたBottomSeq921へセクションを出し、該Bott
omSeq921は様々なバッファの初期化を行う。BottomS
eqは必要なデプスと画像バッファとを読み出し、合成器
304へそれらのデータを送る。同時に、BottomSeqは
視野円錐台に対して各ピクセルを検査して、24×24
ビットマスクの初期化を行う。各ビットは、対応するレ
イがまだアクティブであるかどうかを示す。合成器30
4がセクションを完了したことが信号で送られた後、Bo
ttomSeqは、必要に応じて、メモリ160へデータを書
き戻し、視野円錐台の範囲内に存在するピクセルだけの
修正を行う。
【0127】コントローラ実行ユニット コントローラ状態マシン400はCoordEU902、CutEU
903、DepthEu904を直接制御する。これらの各々
には、図15に例示されている基本論理演算装置の複数
のコピーが含まれる。CoordEUは、実際に、X、Y、Z
座標を計算するために6つのコピーを含む。CutEU には
4つの切断面を計算するために8つのコピーが含まれ
る。DepthEuにはデプス値を計算するために2つのコピ
ーが含まれる。各々のケースで、予想される数の2倍の
EUが存在する。その理由として、コントローラ400
が、StampState1001状態マシン内で一対のスタンプ
を計算し、さらに、その他の3つの状態マシンの最小値
と最大値の双方を計算するということが挙げられる。
【0128】図15に図示のように、コントローラ40
0の実行ユニット902−904は、実行ユニット15
00の複数のSIMDコピーの中でマイクロコードを実
行する。EU1500には、3ポート・レジスタ・ファ
イル1501、加算器1502、2つのマルチプレクサ
1503、シフタ1504が含まれる。EUは、3ポー
ト・レジスタ・ファイル1501から得られる2つのレ
ジスタの加算または減算のいずれかを行うことができ
る。さらに、EU入力の1つを6ビットまで左へシフト
して、レジスタ値に64まで2のべき乗を掛けることが
可能である。これは、スラブまたはスライスのスタック
のスキップにとって有用である。EUの結果1510は
レジスタの中に書き戻すことができる。あるいは、ロー
ド・バス1520からレジスタをロードすることが可能
である。該ロード・バスは初期化のためにセクション状
態マシン状態によって使用される。
【0129】レジスタ・ファイル・エントリの中の1つ
が最適化されて、各クロック・サイクルでこの1つのエ
ントリの更新が可能になる。このレジスタには、スライ
スを横切って1ステップずつ処理しながらスタンプ状態
マシンによって増分される値が含まれる。その他のレジ
スタ・ファイル・エントリは、それらのエントリへの書
込みを行う命令からの3命令遅延と、それらエントリを
読み出す次の命令とを必要とする。これによって、好ま
しい実施の形態でコストの安いレジスタ配列の実現が可
能になる。
【0130】EUの各々は実際には4つの異なる値の生
成を必要とする。その理由として各スタンプが4つのサ
ンプルを含み、さらに、各スタックまたはタイルの操作
によって4つのスタックまたはタイルの最少値/最大値
が生成されるということが挙げられる。1つの可能な実
現例では、CoordEU、CutEU、DepthEu内のEUの4倍も
のEUが用いられる。代わりに、この好ましい実施の形
態では4つの専用加算器と少数の専用レジスタとを用い
て加算器によって生成される各値の4つの関連する値が
生成される。この論理回路によって行われた演算は、命
令に付けられたタグによって選択される。スタック操作
用タグによって、Z内でステップ・サイズの逓倍だけZ
アドレスが増分される。スタンプ操作またはタイル操作
用タグはXまたはYアドレスを増分し、2×2配列で4
つの位置が生成される。
【0131】マスク・シーケンサ MaskSeq925は、サンプル、タイル、スライス、スラ
ブをいつ廃棄すべきかの決定を行うためにマスク情報を
組み合わせる。MaskSeqは各レイ用の有効な1ビットを
保持する。MaskSeqは、BottomSeq921によって行われ
る視野円錐台比較を利用して、視野円錐台と交差したと
き、レイを有効なものとして初期化する。視野円錐台の
外側の任意の位置が無効なものとしてスタートする。Ma
skSeqは、そのレイに沿ったすべての後続サンプルが無
効であることが保証されたとき、有効なレイを無効なも
のとしてマークする。これは2つの異なる方法で行われ
る。第1に、コントローラ内部のサンプル・スタンプ・
クリップ検査によって、Afterマスク・コードの生成が
可能となり、サンプルのレイがクリップ領域の中の1つ
を通り過ぎることが示される。第2に、ライン430を
介して合成器段304から戻されるレイ処理の終了の結
果、レイを無効なものとして設定することが可能とな
る。タイル内の全てのレイが無効なとき、タイルは無効
なものとしてマークされる。全ての16タイルが無効と
なった場合、スライスとスラブのセクション処理は完了
する。
【0132】合成器段304から受信された終了信号は
終了されたレイを無効なものとしてマークする。これと
並行して、StampState1001はレイを無効なものとし
てマークすることができる。あるいは、SliceState10
02はタイル全体を無効としてマークすることが可能と
なる。
【0133】最も重要な点は、MaskSeqが3つのコント
ローラ実行ユニット902−904からマスク・ビット
を統合してタイルとサンプル・マスクとを決定するとい
う点である。MaskSeqはスタック・マスクも統合して、
この情報をマスタ状態マシン901へ渡す。マスタ状態
は、セクション全体が無効かどうかを示す別の信号と共
に、スタック・マスクを用いて、SliceState1002と
SlabState1003内の状態遷移を制御する。
【0134】レイの終了後は、レイが再びアクティブに
なることは決してあり得ないことに留意されたい。これ
は、レイ終了を報告する合成器段304の非常に重要な
特徴である。例えば、合成されたアルファ値が所定値を
上回って、サンプルが廃棄される場合レイは終了する
が、その理由として、この合成されたアルファ値が、閾
値を上回った後もずっと、レイの残り部分の間閾値を上
回ることが挙げられる。
【0135】MaskMux論理ブロック セクション処理中、合成器304からの終了コマンド
は、クロック・サイクル当たり1スタンプの割合で、終
了レイを無効なものとしてマークする。それと並行し
て、StampState1001は、クロック・サイクル当たり
2スタンプの割合で、レイを無効なものとしてマークす
ること及び/又はSliceState1002がタイル全体を無
効としてマークすることができる。
【0136】MaskSeq925はユニット902−904
エレメントからマスク・ビットを統合して、タイルとサ
ンプル・マスクとを決定する。MaskSeqはスタック・マ
スクも統合して、マスタ状態マシン1000へこの情報
を渡す。マスタ状態はセクション無効信号と共にスタッ
ク・マスクを使用して、SlabStateとSliceState状態マ
シン内の状態遷移を制御する。
【0137】好ましい実施の形態を例として本発明を説
明してきたが、本発明の精神と範囲内で様々な他の適合
化と改変が可能であると理解すべきである。したがっ
て、本発明の真の精神と範囲の中に入るものとして、す
べてのそのような変更例および改変例をカバーすること
が添付の請求項の目的である。
【図面の簡単な説明】
【図1】 本発明によるコントローラを用いるパイプラ
イン化されたレンダリング・システムのブロック図であ
る。
【図2】 レンダリング・エンジンのブロック図であ
る。
【図3】 レンダリング・パイプライン段のブロック図
である。
【図4】 レンダリング・パイプラインと接続されたコ
ントローラのブロック図である。
【図5】 サンプル・スライスとボクセル・スラブのブ
ロック図である。
【図6】 サンプル・スタンプとタイルのブロック図で
ある。
【図7】 ボクセルの中を貫通するレイのブロック図で
ある。
【図8】 ボクセルの中を貫通するレイのブロック図で
ある。
【図9】 本発明によるコントローラのブロック図であ
る。
【図10】 コントローラ状態マシンのブロック図であ
る。
【図11】 コントローラ状態マシンのブロック図であ
る。
【図12】 命令タグのブロック図である。
【図13】 スタンプの動きを示すブロック図である。
【図14】 セクションの動きを示すブロック図であ
る。
【図15】 コントローラ実行ユニットのブロック図で
ある。
【図16】 デプス検査結果を組み合わせて領域番号に
変える方法を説明するための図である。
【図17】 生じ得るデプス検査から結果として得られ
るコード及びこれらのコードの組み合わせ方法を説明す
るための図である。
【符号の説明】
10 ボリューム・レンダリング・システム、100
ホスト・コンピュータ、110 CPU、120 メイ
ン・メモリ、121 PCIバス、 160レンダリン
グ用メモリ、200 レンダリング・サブシステム、2
10 メモリ・インターフェース、220 バス用論理
回路、221 内部レジスタ・ファイル、250 共有
スライス・バッファ、300 レンダリング・パイプラ
イン、301 勾配推定器段、302 類別器−補間器
段、303 照明器段、304合成器段、310 ミニ
ブロック、320 ボクセル、400 コントローラ、
401 出力制御信号、402 ボクセル、403 ピ
クセル、404 キュー、410 バッファ、420,
430 入力制御信号。
───────────────────────────────────────────────────── フロントページの続き (72)発明者 ジェフリー・ルシアー アメリカ合衆国、マサチューセッツ州、ウ ォバーン、ケンブリッジ・ロード 36、ユ ニット ナンバー12 (72)発明者 ヴィシャル・シー・バティア アメリカ合衆国、マサチューセッツ州、ア ーリントン、サマー・ストリート 478 Fターム(参考) 5B057 AA20 CA08 CA13 CA16 CB08 CB13 CB16 CH05 CH11 CH14 CH16 DA16 5B080 AA17 BA07 CA04 DA06

Claims (40)

    【特許請求の範囲】
  1. 【請求項1】 グラフィックデータを画像としてレンダ
    リングする方法であって、 前記画像に寄与する可能性のあるグラフィックデータを
    特定するステップと、前記特定されたグラフィックデー
    タをレンダリング・パイプラインの中へ読み込むステッ
    プと、 前記特定されたグラフィックデータだけのための画像に
    寄与する可能性のあるサンプルを前記レンダリング・パ
    イプライン内に生成するステップと、 前記特定されたグラフィックデータとサンプルとが前記
    画像に寄与し続ける限り、前記特定されたグラフィック
    データとサンプルとを前記レンダリング・パイプライン
    内で処理し、かつ、他のすべての特定されたグラフィッ
    クデータとサンプルとを前記パイプラインから廃棄する
    ステップと、 を備えたことを特徴とするグラフィックデータレンダリ
    ング方法。
  2. 【請求項2】 前記グラフィックデータが複数のボクセ
    ルを含むボリューム・データ・セットであり、かつ、前
    記画像が複数のピクセルを含み、 前記特定されたサンプルに対してのみ前記ボクセルを補
    間するステップと、 前記特定されたサンプルが前記画像のピクセルに寄与し
    続ける限り前記特定されたサンプルを前記ピクセルの中
    へ合成し、かつ、前記パイプラインから他のすべてのサ
    ンプルを廃棄するステップと、 をさらに備えたことを特徴とする請求項1に記載の方
    法。
  3. 【請求項3】 前記読み込みステップが、前記パイプラ
    インのスループットを最大化する前記生成ステップより
    低いレートで実行されることを特徴とする請求項1に記
    載の方法。
  4. 【請求項4】 前記グラフィックデータが複数のボクセ
    ルを含むボリューム・データ・セットであり、 スタンプと、スライスと、スラブと、セクションとに前
    記サンプルを分割するステップと、 前記スタンプと、スライスと、スラブと、セクションと
    に対してそれぞれ1つの状態マシンが存在する、パイプ
    ライン・コントローラの複数の状態マシンの中で、前記
    スタンプと、スライスと、スラブと、セクションとを個
    別に処理するステップと、をさらに有することを特徴と
    する請求項1に記載の方法。
  5. 【請求項5】 前記複数の状態マシンが所定の優先順位
    に従って複数の実行ユニットで処理を実行することを特
    徴とする請求項4に記載の方法。
  6. 【請求項6】 メモリ内に格納されているグラフィック
    データをレンダリングする方法であって、 複数の段を含むレンダリング・パイプラインの中へ前記
    グラフィックデータを読み込むステップと、 キューによって前記レンダリング・パイプラインの前記
    段と並列に接続されたコントローラ内の出力制御信号を
    発生するステップと、 前記出力制御信号を前記グラフィックデータと同期させ
    るステップと、 前記レンダリング・パイプラインの前記段において前記
    出力制御信号に従って前記グラフィックデータを処理し
    て、出力デバイス上の前記グラフィックデータを表す画
    像をレンダーするステップと、 を備えたことを特徴とするグラフィックデータレンダリ
    ング方法。
  7. 【請求項7】 前記レンダリング・パイプラインの前記
    段と直列に接続された複数のバッファ内に前記グラフィ
    ックデータをバッファするステップをさらに備えたこと
    を特徴とする請求項6に記載の方法。
  8. 【請求項8】 前記バッファが前記段の間に存在し、か
    つ前記段と内部でつながっていることを特徴とする請求
    項7に記載の方法。
  9. 【請求項9】 前記レンダリング・パイプラインの段に
    よって使用される前に前記出力制御信号を発生すること
    を特徴とする請求項8に記載の方法。
  10. 【請求項10】 前記コントローラが前記レンダリング
    ・パイプラインに関して非同期的に作動することを特徴
    とする請求項6に記載の方法。
  11. 【請求項11】 前記パイプラインを通して前記グラフ
    ィックデータを処理するために必要ないくつかのクロッ
    ク・サイクルとして測定される前記レンダリング・パイ
    プラインの長さが時間の経過につれて変動することを特
    徴とする請求項6に記載の方法。
  12. 【請求項12】 前記コントローラが前記出力制御信号
    を発生するピーク・レートの方が、前記段が前記出力制
    御信号を使用するレートより速いことを特徴とする請求
    項6に記載の方法。
  13. 【請求項13】 前記グラフィックデータが前記コント
    ローラを介して前記レンダリング・パイプラインに読み
    込まれることを特徴とする請求項6に記載の方法。
  14. 【請求項14】 前記段が、異なるレートで前記グラフ
    ィックデータを処理できることを特徴とする請求項6に
    記載の方法。
  15. 【請求項15】 メモリ内に格納されたグラフィックデ
    ータをレンダリングする装置であって、 複数の段を含むレンダリング・パイプラインと、 複数のキューと、 前記キューを介して前記段に並列に接続され、前記キュ
    ーを介して前記段へ出力制御信号を発生するように構成
    されたコントローラと、 前記出力制御信号を前記グラフィックデータと同期させ
    つつ、前記出力制御信号に従って前記段で前記グラフィ
    ックデータを処理して、出力デバイス上の前記グラフィ
    ックデータを表す画像をレンダーする手段と、 を備えたことを特徴とするグラフィックデータレンダリ
    ング装置。
  16. 【請求項16】 前記レンダリング・パイプラインの前
    記段と直列に接続された複数のバッファをさらに備えた
    ことを特徴とする請求項15に記載の装置。
  17. 【請求項17】 前記バッファが前記段の間に存在し、
    かつ前記段と内部でつながっていることを特徴とする請
    求項16に記載の装置。
  18. 【請求項18】 前記レンダリング・パイプラインの段
    によって使用される前に前記出力制御信号を発生するこ
    とを特徴とする請求項15に記載の装置。
  19. 【請求項19】 前記コントローラが前記レンダリング
    ・パイプラインに関して非同期的に作動することを特徴
    とする請求項15に記載の装置。
  20. 【請求項20】 前記パイプラインを通して前記グラフ
    ィックデータを処理するために必要ないくつかのクロッ
    ク・サイクルとして測定される前記レンダリング・パイ
    プラインの長さが時間の経過につれて変動することを特
    徴とする請求項15に記載の装置。
  21. 【請求項21】 前記コントローラが前記出力制御信号
    を発生するピーク・レートの方が、前記段が前記出力制
    御信号を使用するレートより高速であることを特徴とす
    る請求項15に記載の装置。
  22. 【請求項22】 前記コントローラを介して前記レンダ
    リング・パイプラインからあるいは前記レンダリング・
    パイプラインへ前記グラフィックデータが渡されること
    を特徴とする請求項15に記載の装置。
  23. 【請求項23】 前記グラフィックデータが複数のミニ
    ブロックとして組織化されたボリューム・データ・セッ
    トであり、クロック・サイクル当たり1ミニブロックの
    レートで前記ミニブロックを読むように構成されたメモ
    リ・インターフェースをさらに備えたことを特徴とする
    請求項22に記載の装置。
  24. 【請求項24】 前記コントローラが前記レンダリング
    ・パイプラインから入力制御信号を受信し、前記入力制
    御信号が、前記キューの中のいずれか1つがいっぱいに
    なりそうなとき、前記レンダリング・パイプラインへグ
    ラフィックデータを渡すことを停止するように前記コン
    トローラに対して指示することを特徴とする請求項15
    に記載の装置。
  25. 【請求項25】 前記入力制御信号が、前記コントロー
    ラのためのレンダリング・パイプライン状態情報を含む
    ことを特徴とする請求項24に記載の装置。
  26. 【請求項26】 前記段が、異なるレートで前記グラフ
    ィックデータを処理できることを特徴とする請求項15
    に記載の装置。
  27. 【請求項27】 前記出力制御信号が、前記グラフィッ
    クデータを組織化する様々なタイプのデータ構造の開始
    と終了を示し、また前記レンダリング・パイプラインの
    前記段内で前記データ構造を用いて前記出力制御信号を
    時間−整列するタグを含むことを特徴とする請求項15
    に記載の装置。
  28. 【請求項28】 前記コントローラが、特定のグラフィ
    ックデータが前記画像に寄与しないことが前記コントロ
    ーラによって決定されたとき、前記特定のグラフィック
    データが前記レンダリング・パイプラインへ渡される前
    後に前記特定のグラフィックデータを廃棄する手段をさ
    らに有することを特徴とする請求項15に記載の装置。
  29. 【請求項29】 前記特定のグラフィックデータの廃棄
    を指示するためにマスク・コードが前記グラフィックデ
    ータと関連づけられることを特徴とする請求項28に記
    載の装置。
  30. 【請求項30】 前記コントローラが、 マスタ状態マシンと、 複数の実行ユニットと、 互いに接続された複数の論理素子と、 をさらに有することを特徴とする請求項15に記載の装
    置。
  31. 【請求項31】 前記複数の実行ユニットが、 前記レンダリング・パイプラインの合成器段と前記メモ
    リとの間でグラフィックデータの読出しと書込みを行う
    手段と、 前記合成器段によって使用される前記グラフィックデー
    タのデプス値を蓄積する手段と、 をさらに有することを特徴とする請求項30に記載の装
    置。
  32. 【請求項32】 前記コントローラが、各コントローラ
    ・クロック・サイクル中前記実行ユニットの各々に対し
    て1つの命令を発生し、前記実行ユニットが構造上同一
    であって、かつ前記グラフィックデータの異なる部分に
    対して並列に作用することを特徴とする請求項31に記
    載の装置。
  33. 【請求項33】 前記マスタ状態マシンが、前記実行ユ
    ニットで実行する倍数のスレッド間で仲裁を行うことを
    特徴とする請求項31に記載の装置。
  34. 【請求項34】 前記スレッドが、異なる詳細レベルの
    前記グラフィックデータの中を1ステップずつ処理する
    4つのコルーチンとして実施されることを特徴とする請
    求項33に記載の装置。
  35. 【請求項35】 前記マスタ状態マシンが、4つのレイ
    ・キャスティング状態マシンをさらに有し、前記マスタ
    状態マシンが、前記レイ・キャスティング状態マシンの
    中の1つのための前記スレッドの中の1つのスケジュー
    リングを行って、マルチプレクサとマスタ状態アービタ
    とを用いて、コントローラ・クロック・サイクル毎に前
    記実行ユニットで実行を行い、前記スケジュールされた
    スレッドと状態マシンとが最高の優先順位を有しかつ実
    行準備ができていることを特徴とする請求項33に記載
    の装置。
  36. 【請求項36】 前記優先順位がある特定の状態マシン
    によって処理するグラフィックデータの量に基づくこと
    を特徴とする請求項35に記載の装置。
  37. 【請求項37】 前記優先順位が最長の待ち時間を持つ
    特定の状態マシンを先行させることに基づくことを特徴
    とする請求項35に記載の装置。
  38. 【請求項38】 前記4つのレイ・キャスティング状態
    マシンがスタンプ、セクション、スライス、スラブ状態
    マシンを含むことを特徴とする請求項35に記載の装
    置。
  39. 【請求項39】 前記コントローラが前記4つのレイ・
    キャスティング状態マシンの状態に基づいて命令とコマ
    ンドとを発生し、前記コマンドがグラフィックデータ転
    送コマンドであり、前記命令が前記実行ユニット内での
    算術演算実行命令であることを特徴とする請求項35に
    記載の装置。
  40. 【請求項40】 前記コントローラが複数のレンダリン
    グ・パイプラインと並列に接続されることを特徴とする
    請求項15に記載の装置。
JP2001307645A 2000-10-04 2001-10-03 グラフィックデータレンダリング方法およびその装置 Withdrawn JP2002183751A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US67931500A 2000-10-04 2000-10-04
US09/679315 2000-10-04

Publications (1)

Publication Number Publication Date
JP2002183751A true JP2002183751A (ja) 2002-06-28

Family

ID=24726414

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2001307645A Withdrawn JP2002183751A (ja) 2000-10-04 2001-10-03 グラフィックデータレンダリング方法およびその装置

Country Status (2)

Country Link
EP (1) EP1195717A3 (ja)
JP (1) JP2002183751A (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005161044A (ja) * 2003-11-25 2005-06-23 General Electric Co <Ge> 動的制約を用いる多次元構造の抽出方法及びシステム
JP2007527559A (ja) * 2003-04-03 2007-09-27 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ ランタイム構成可能仮想ビデオパイプライン
JP2008006827A (ja) * 2003-01-29 2008-01-17 Hewlett-Packard Development Co Lp 物体層に吹き付けられる吐出材料の濃度を変化させることによって三次元自由造形で物体を製造する方法及びシステム
WO2015037169A1 (ja) * 2013-09-13 2015-03-19 株式会社スクウェア・エニックス・ホールディングス 描画装置

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
WO2023102863A1 (en) * 2021-12-09 2023-06-15 Shanghaitech University Multi-core acceleration of neural rendering

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1996007989A1 (en) * 1994-09-06 1996-03-14 The Research Foundation Of State University Of New York Apparatus and method for real-time volume visualization
US6266733B1 (en) * 1998-11-12 2001-07-24 Terarecon, Inc Two-level mini-block storage system for volume data sets
US6297799B1 (en) * 1998-11-12 2001-10-02 James Knittel Three-dimensional cursor for a real-time volume rendering system
US6512517B1 (en) * 1998-11-12 2003-01-28 Terarecon, Inc. Volume rendering integrated circuit
EP1001369A2 (en) * 1998-11-12 2000-05-17 Mitsubishi Denki Kabushiki Kaisha Real-time volume rendering system
EP1054385A2 (en) * 1999-05-20 2000-11-22 Mitsubishi Denki Kabushiki Kaisha State machine for controlling a voxel memory
EP1054383A3 (en) * 1999-05-20 2003-05-02 TeraRecon, Inc., A Delaware Corporation Memory storing voxel data interfaced to rendering pipelines
JP2001109906A (ja) * 1999-10-01 2001-04-20 Mitsubishi Electric Inf Technol Center America Inc ボリューム・データ・セットのレンダリング装置およびその方法

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008006827A (ja) * 2003-01-29 2008-01-17 Hewlett-Packard Development Co Lp 物体層に吹き付けられる吐出材料の濃度を変化させることによって三次元自由造形で物体を製造する方法及びシステム
JP2007527559A (ja) * 2003-04-03 2007-09-27 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ ランタイム構成可能仮想ビデオパイプライン
JP2005161044A (ja) * 2003-11-25 2005-06-23 General Electric Co <Ge> 動的制約を用いる多次元構造の抽出方法及びシステム
WO2015037169A1 (ja) * 2013-09-13 2015-03-19 株式会社スクウェア・エニックス・ホールディングス 描画装置
JPWO2015037169A1 (ja) * 2013-09-13 2017-03-02 株式会社スクウェア・エニックス・ホールディングス 描画装置
US9865076B2 (en) 2013-09-13 2018-01-09 Square Enix Holdings Co., Ltd. Rendering apparatus

Also Published As

Publication number Publication date
EP1195717A3 (en) 2004-04-14
EP1195717A2 (en) 2002-04-10

Similar Documents

Publication Publication Date Title
US7925861B2 (en) Plural SIMD arrays processing threads fetched in parallel and prioritized by thread manager sequentially transferring instructions to array controller for distribution
US7447873B1 (en) Multithreaded SIMD parallel processor with loading of groups of threads
US7594095B1 (en) Multithreaded SIMD parallel processor with launching of groups of threads
US7526630B2 (en) Parallel data processing apparatus
US7506136B2 (en) Parallel data processing apparatus
US8762691B2 (en) Memory access consolidation for SIMD processing elements using transaction identifiers
US8171263B2 (en) Data processing apparatus comprising an array controller for separating an instruction stream processing instructions and data transfer instructions
US7802079B2 (en) Parallel data processing apparatus
US20080007562A1 (en) Parallel data processing apparatus
US7627736B2 (en) Thread manager to control an array of processing elements
US8363059B2 (en) Rendering processing apparatus, parallel processing apparatus, and exclusive control method
US20070294510A1 (en) Parallel data processing apparatus
US7966475B2 (en) Parallel data processing apparatus
US8169440B2 (en) Parallel data processing apparatus
JP2002183751A (ja) グラフィックデータレンダリング方法およびその装置
US8174530B2 (en) Parallel date processing apparatus
US20070242074A1 (en) Parallel data processing apparatus
US20080162874A1 (en) Parallel data processing apparatus
US20080016318A1 (en) Parallel data processing apparatus
US20080162875A1 (en) Parallel Data Processing Apparatus
GB2348978A (en) Parallel redundant data processing apparatus
GB2348984A (en) Parallel data processing system
GB2391093A (en) Register scoreboarding in a SIMD array controller
GB2348977A (en) Parallel data processing systems with a SIMD array
GB2348980A (en) Parallel data processing system with SIMD array

Legal Events

Date Code Title Description
A300 Withdrawal of application because of no request for examination

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 20041207