JP5063695B2 - 空間インデックスをトラバースする方法及びシステム - Google Patents

空間インデックスをトラバースする方法及びシステム Download PDF

Info

Publication number
JP5063695B2
JP5063695B2 JP2009525061A JP2009525061A JP5063695B2 JP 5063695 B2 JP5063695 B2 JP 5063695B2 JP 2009525061 A JP2009525061 A JP 2009525061A JP 2009525061 A JP2009525061 A JP 2009525061A JP 5063695 B2 JP5063695 B2 JP 5063695B2
Authority
JP
Japan
Prior art keywords
workload manager
spatial index
partition
workload
dividing
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.)
Active
Application number
JP2009525061A
Other languages
English (en)
Other versions
JP2010501922A (ja
Inventor
シアラー、ロバート、アレン
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2010501922A publication Critical patent/JP2010501922A/ja
Application granted granted Critical
Publication of JP5063695B2 publication Critical patent/JP5063695B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/10Geometric effects
    • G06T15/40Hidden part removal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/06Ray-tracing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/50Lighting effects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • G06T17/005Tree description, e.g. octree, quadtree

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computer Graphics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Geometry (AREA)
  • Software Systems (AREA)
  • Image Generation (AREA)
  • Image Analysis (AREA)

Description

本発明の実施形態は、一般に、コンピュータ処理の分野に関する。
3次元シーンから2次元画像をレンダリングするプロセスは、一般に、画像処理と呼ばれる。現代のコンピュータ産業が発展するに従い、画像処理もまた発展してきた。画像処理の発展における1つの特定の目標は、3次元シーンの2次元シミュレーション又は表現(rendition)を、できる限り現実的なものにすることである。現実的な画像をレンダリングする際の1つの制限は、現代のモニタがピクセルの使用を通して画像を表示するということである。ピクセルは、モニタ上で照射することができる最小の領域である。最新のコンピュータ・モニタは、ディスプレイ全体又はレンダリングされたシーンを構成するために、何十万又は何百万ものピクセルの組み合わせを使用する。個々のピクセルは、グリッド・パターン状に配列されており、モニタの表示領域全体を集合的に覆う。個々のピクセルを照射して、表示用の最終的なピクチャをレンダリングすることができる。
ピクセルを用いて2次元モニタ上に実世界の3次元シーンをレンダリングするための1つの技術は、ラスタ化(rasterization)と呼ばれる。ラスタ化とは、ベクトル形式(シーン内の幾何学的物体の数学的表現)で表される2次元画像を取得し、モニタ上に表示するために、その画像を個々のピクセルに変換するプロセスである。ラスタ化は、グラフィックスを速くレンダリングし、比較的少量の計算能力しか使用しないという点で有効であるが、このラスタ化は幾つかの欠点を抱えている。例えば、ラスタ化は、光の物理的性質に基づくものではなく、寧ろ、2次元平面上に投影されるシーンにおける3次元の幾何学的物体の形状に基づいているので、現実感が不足することが多い。さらに、ラスタ化を用いてシーンをレンダリングするのに必要な計算能力は、レンダリングされるシーンの複雑さが増すのに応じて直接的に拡張する。画像処理がより現実的になるに従い、レンダリングされるシーンもより複雑になる。従って、複雑さに伴ってラスタ化が直接的に拡張するので、画像処理が発展すると共に、ラスタ化は困難を抱える。
ピクセルを用いて2次元モニタ上に実世界の3次元シーンをレンダリングするための別の技術は、光線追跡法(ray tracing)と呼ばれる。光線追跡技術は、コンピュータ・スクリーン上にレンダリングされる3次元シーンへの、通常の光線と同様に振る舞う想像上の光線の伝搬を追跡する。これらの光線は、コンピュータ・スクリーンの後ろに位置する観察者の目から発し、コンピュータ・スクリーンを構成するピクセルを通過し、3次元シーンの方向に向かう。追跡される各光線はシーンに進入し、シーン内の物体と交差することがある。光線がシーン内の物体と交差した場合には、その物体の性質及び他の幾つかの他の寄与要因を用いて、光線が曝される色及び光の量、又はそれらの欠如を算出する。次いで、これらの計算を用いて、追跡される光線が通過したピクセルの最終的な色を決定する。
光線を追跡するプロセスは、単一の3次元シーンについて何度も行なわれる。例えば、ディスプレイ内の各ピクセルごとに単一の光線を追跡することができる。コンピュータ・スクリーンの2次元表示を構成する全てのピクセルの色を決定するのに十分な数の光線が追跡されると、観察者に対して、3次元シーンの2次元合成をコンピュータ・スクリーン上に表示することができる。
光線追跡法は、一般的に、ラスタ化よりも多くの現実感を伴って、実世界の3次元シーンをレンダリングする。これは、特に、光線追跡法が、ラスタ化を用いてなされるように単に3次元的形状を2次元平面上に投影するのではなく、実世界の環境において光がどのように進み、振る舞うかをシミュレートするためである。従って、光線追跡法を用いてレンダリングされるグラフィックスは、我々の目が実世界で見慣れているものを、より正確にモニタ上に描写する。
さらに、光線追跡法はまた、シーンがより複雑になるにつれて、ラスタ化よりも良好にシーンの複雑さの増大に対応する。光線追跡法は、シーンの複雑さに応じて対数的に拡張する。これは、シーンがより複雑になったとしても、同じ数の光線をシーンに投射することができるためである。従って、光線追跡法は、シーンがより複雑になっても、ラスタ化のように計算能力の要件に関して問題を抱えることはない。
光線追跡法の1つの主要な欠点は、シーンのレンダリングに大量の計算、よって、大量の処理能力を必要とすることである。このことは、速いレンダリングを必要とするときに問題をもたらす。例えば、画像処理システムが、ゲーム機などにおけるように、アニメーション用のグラフィックスをレンダリングする場合である。光線追跡法に関する計算要件の増大に起因して、現実的に見えるのに十分な程アニメーションを速くレンダリングするのは困難である(現実的なアニメーションは、毎秒約20〜24フレームである)。
従って、光線追跡法を実行するためのより効率的な技術及び装置に対する必要性が存在する。
本発明の実施形態は、一般に、光線追跡法を実施するための方法及び装置を提供する。
本発明の第1の態様によると、3次元シーンの境界ボリュームを定めるノードを有する空間インデックスを分割する方法が提供される。この方法は、一般に、第1の処理要素及び第2の処理要素を準備するステップと、空間インデックスを少なくとも第1の部分及び第2の部分に分割するステップであって、第1の処理要素は第1の部分を通る光線をトラバースすることに関連した1つ又は複数のアルゴリズムを実行するように動作可能であり、第2の処理要素は第2の部分を通る光線をトラバースすることに関連した1つ又は複数のアルゴリズムを実行するように動作可能である、ステップとを含む。
本発明の第2の態様によると、3次元シーンの境界ボリュームを定めるノードを有する空間インデックスをトラバースする方法が提供される。この方法は、一般に、空間インデックスの少なくとも1つの分岐を通る少なくとも1つの分割境界を生成することによって、空間インデックスを少なくとも第1の区画及び第2の区画に分割するステップと、シーン内に光線を生成するステップと、葉ノードに到達するまで内部ノードから分岐を行なうことによって空間インデックスをトラバースするステップであって、光線がノードによって定められた境界ボリュームと交差するか否かに基づいて分岐が行なわれる、ステップと、分割境界を含む分岐が行なわれたとき、光線を定める情報を第1の処理要素から第2の処理要素に送るステップとを含む。
本発明の第3の態様によると、システムが提供される。このシステムは、一般に、3次元シーンの境界ボリュームを定めるノードを有する空間インデックスと、第1の処理要素と、第2の処理要素と、画像処理システムとを含む。画像処理システムは、一般に、空間インデックスを少なくとも第1の部分及び第2の部分に分割するように構成され、第1の処理要素は、第1の部分を通る光線をトラバースすることに関連した1つ又は複数のアルゴリズムを実行するように動作可能であり、第2の処理要素は第2の部分を通る光線をトラバースすることに関連した1つ又は複数のアルゴリズムを実行するように動作可能である。
本発明の第4の態様によると、3次元シーンの境界ボリュームを定めるノードを有する空間インデックスを分割するためのコンピュータ・プログラムであって、このコンピュータ・プログラムは、空間インデックスを少なくとも第1の部分及び第2の部分に分割するステップを実行するように適合されたプログラム・コード手段を含み、第1の処理要素は前記第1の部分を通る光線をトラバースすることに関連した1つ又は複数のアルゴリズムを実行するように作動可能であり、第2の処理要素は第2の部分を通る光線をトラバースすることに関連した1つ又は複数のアルゴリズムを実行するように作動可能であり、ステップは、プログラムがコンピュータ上で実行されるときに実行される。
ここで、本発明の好ましい実施形態が、ほんの一例として添付の図面を参照して説明される。
本発明の実施形態は、空間インデックスを分割するための装置及び技術を提供する。本発明の一実施形態において、画像処理システムは、異なる処理要素が空間インデックスの異なる部分を通る光線のトラバースを担当できるように、空間インデックスを複数の部分に分割することができる。空間インデックスをどこで分割するかの判定は、いずれかの数の要因に基づいて行なうことができる。例えば、本発明の幾つかの実施形態によると、多数の処理要素の間で作業負荷を均等に配分するように、空間インデックスを分割することができる。作業負荷を均等に配分するように空間インデックスを分割することは、結果として得られる各区画内に含まれる内部ノードの数、結果として得られる各区画内に含まれる葉ノードの数、又は結果として得られる各区画内に含まれるプリミティブの数に基づくことができる。
以下において、本発明の実施形態を参照する。しかしながら、本発明は、説明される特定の実施形態に制限されるものではないことを理解すべきである。代わりに、異なる実施形態に関連しようとしまいと、以下の特徴及び要素のいずれの組み合わせも、本発明を実装し、実行するものと考えられる。さらに、種々の実施形態において、本発明は、従来技術に優る多数の利点を提供する。しかしながら、本発明の実施形態は、他の可能な解決法及び/又は従来技術に優る利点を達成できるが、所定の実施形態によって特定の利点が達成されるかどうかは、本発明の制限ではない。従って、以下の側面、特徴、実施形態及び利点は、単なる例証にすぎず、特許請求の範囲において明示的に列挙される場合を除いて、添付の特許請求の範囲の要素又は制限と考えられるものではない。同様に、「本発明」への言及は、ここに開示される本発明の何らかの主題の一般化として解釈されるものではなく、特許請求の範囲において明示的に列挙される場合を除いて、添付の特許請求の範囲の要素又は制限と考えられるものではない。
例示的なプロセッサ・レイアウト及び通信ネットワーク
図1は、本発明の一実施形態によるマルチコア処理要素100を示す。マルチコア処理要素100は、複数の基本的スループット・エンジン105(BTE)を含む。BTE105は、複数の処理スレッドと、コア・キャッシュ(例えば、L1キャッシュ)とを含むことができる。各々のBTE内に配置された処理スレッドは、共有されるマルチコア処理要素キャッシュ110(例えば、L2キャッシュ)にアクセスすることができる。
BTE105はまた、複数のインボックス115にもアクセスすることができる。インボックス115は、メモリマッピングされたアドレス空間とすることができる。各BTE105内に配置された処理スレッドにインボックス115をマッピングすることができる。BTE内に配置された各スレッドは、メモリマッピングされたインボックスを有することができ、かつ、他の全てのメモリマッピングされたインボックス115にアクセスすることができる。インボックス115は、BTE105が使用する低遅延、高帯域幅の通信ネットワークを構成する。
BTEは、互いに通信し、データ処理作業をBTE間で再配分するためのネットワークとして、インボックス115を用いることができる。幾つかの実施形態については、例えば、BTE105による処理の結果を受信するために、通信ネットワーク内で別個のアウトボックスを使用することができる。他の実施形態については、インボックス115は、アウトボックスとして働くこともでき、例えば、1つのBTE105が処理機能の結果を別のBTE105のインボックスに直接的に書き込んだ場合、別のBTE105がその結果を使用することになる。
画像処理システムの総合性能は、BTE105がどれくらい良好に作業を分割し、再配分できるかに関係し得る。インボックス115のネットワークを用いて、フレーム間コヒーレンシを有さないBTE通信情報パケットにより共有のマルチコア処理要素キャッシュ110を破損することなく、作業を収集し、これを他のBTE105に配分することができる。1フレーム当たり何百万もの三角形をレンダリングすることができる画像処理システムは、このように接続された多数のBTE105を含むことができる。
本発明の一実施形態においては、1つのBTE105のスレッドを、作業負荷マネージャ(workload manager)に割り当てることができる。画像処理システムは、種々のソフトウェア及びハードウェア・コンポーネントを用いて、3次元シーンから2次元画像をレンダリングすることができる。本発明の一実施形態によると、画像処理システムは、作業負荷マネージャを用いて、この画像処理システムにより出された光線を用いて空間インデックスをトラバース(traverse)することができる。図4に関して以下に更に説明されるように、比較的大きな3次元シーンをより小さな境界ボリューム(bounding volume)に分割するために、空間インデックスが使用される、ツリー型(tree type)データ構造として実装することができる。画像処理のために光線追跡法を用いる画像処理システムは、空間インデックスを用いて、光線−境界ボリューム交差を速やかに判定することができる。本発明の一実施形態においては、作業負荷マネージャは、空間インデックスを用いて、光線−境界ボリューム交差テストを行なうことができる。
本発明の一実施形態においては、マルチコア処理要素100上のマルチコア処理要素BTE105の他のスレッドは、ベクトル・スループット・エンジンとすることができる。作業負荷マネージャは、光線−境界ボリューム交差を判定した後、インボックス115を介して複数のベクトル・スループット・エンジンのうちの1つに光線を出す(送る)ことができる。次いで、ベクトル・スループット・エンジンは、光線が境界ボリューム内に含まれるプリミティブと交差するか否かを判定することができる。ベクトル・スループット・エンジンはまた、光線が通過したピクセルの色の決定に関係する操作を行なうこともできる。
図2は、本発明の一実施形態によるマルチコア処理要素のネットワーク200を示す。図2はまた、マルチコア処理要素100のBTE105の1つのスレッドが作業負荷マネージャ205である、本発明の一実施形態も示す。本発明の一実施形態によると、マルチコア処理要素のネットワーク200内の各マルチコア処理要素2201−Nは、1つの作業負荷マネージャ2051−Nを含むことができる。本発明の一実施形態によると、マルチコア処理要素のネットワーク200内の各マルチコア処理要素2201−Nはまた、複数のベクトル・スループット・エンジン210を含むこともできる。
本発明の一実施形態によると、作業負荷マネージャ2051−Nは、他の作業負荷マネージャ2051−N及び/又は他のマルチコア処理要素220のベクトル・スループット・エンジン210と通信するために、高速バス225を用いることができる。各ベクトル・スループット・エンジン210は、高速バス225を用いて、他のベクトル・スループット・エンジン210又は作業負荷マネージャ205と通信することができる。作業負荷マネージャ・プロセッサ205は、高速バス225を用いて、画像処理に関連するタスクを収集し、これを他の作業負荷マネージャ・プロセッサ205に配分し、及び/又はタスクを他のベクトル・スループット・エンジン210に配分することができる。高速バス225を用いることにより、作業負荷マネージャ2051−Nは、作業負荷マネージャ205の通信と関連したデータ・パケットでキャッシュ230に影響を与えることなく、通信することが可能になる。
例示的な3次元シーン
図3は、画像処理システムによってレンダリングされる例示的な3次元シーン305である。3次元シーン305内には、物体320が存在し得る。図3の物体320は、異なる幾何学的形状を有する。図3には4つの物体320だけ示されているが、典型的な3次元シーンにおける物体の数は、これより多いことも少ないこともある。一般に、3次元シーンは、図3に示されるよりもずっと多くの物体を有する。
図3に見られるように、物体は、様々な幾何学的形状及びサイズを有する。例えば、図3の1つの物体は、角錐320である。図3の他の物体は、箱形320B−Dである。最近の多くの画像処理システムにおいては、物体は、より小さな幾何学的形状(例えば、正方形、円、三角形等)に分割されることが多い。次いで、多数のより小さく単純な幾何学的形状によって、より大きな物体が表される。これらのより小さな幾何学的形状は、多くの場合、プリミティブ(primitive)と呼ばれる。
シーン305内には、光源325A−Bも示されている。これらの光源は、シーン305内に配置された物体320を照射することができる。さらに、シーン305内の光源325及び物体320の位置によって、これらの光源は、シーン305内の物体上に影を落とすことがある。
画像処理システムによって、3次元シーン305を2次元ピクチャにレンダリングすることができる。画像処理システムはまた、2次元ピクチャをモニタ310上に表示させることもできる。モニタ310は、最終的な2次元ピクチャをレンダリングするために、異なる色の多数のピクセル330を用いることができる。
3次元シーン305を2次元ピクチャにレンダリングするために画像処理システムによって用いられる1つの方法は、光線追跡法と呼ばれる。光線追跡法は、観察者の視点315から3次元シーン305に向けて光線を「出す(issuing)」又は「発射する(shooting)」画像処理システムによって達成される。これらの光線は、通常の光線と類似した特性及び振る舞いを有する。
図3において、観察者315の位置から発し、3次元シーン305を通過する1つの光線340を見ることができる。光線340が観察者315から3次元シーン305に進むとき、この光線340は、画像処理システムが最終的な2次元ピクチャをレンダリングする平面を通過する。図3では、この平面はモニタ310で表される。光線340がこの平面、即ちモニタ310を通過する点は、ピクセル335で表される。
上記に簡単に説明したように、大部分の画像処理システムは、モニタ310上に最終的なシーンをレンダリングするために、何十万(何百万でないとしても)ものピクセルのグリッド330を使用する。それぞれのピクセルは、モニタ310上に最終的な合成の2次元ピクチャをレンダリングするために、異なる色を表示することができる。3次元シーンから2次元ピクチャをレンダリングするために光線追跡による画像処理方法を用いる画像処理システムは、出された光線が3次元シーンにおいて遭遇する色を計算する。次いで、画像処理システムは、光線が観察者から3次元シーンに向かう途中で通過したピクセルに、光線が遭遇した色を割り当てる。
1ピクセル当たりに出される光線の数は、変化し得る。幾つかのピクセルは、レンダリングされる特定のシーンに対して出される多数の光線を有することができる。その場合、そのピクセルの最終的な色は、該ピクセルに対して出された光線の全てからの各色の寄与によって決定される。他のピクセルは、2次元ピクチャ内のピクセルの、結果的に得られる色を決定するために出された単一の光線だけを有することがある。幾つかのピクセルは、画像処理システムによって出された如何なる光線も有さず、その場合、画像処理システム内のアルゴリズムによって、それらのピクセルの色を決定し、近似させ、又は割り当てることができる。
2次元ピクチャ内のピクセル335の最終的な色を決定するために、画像処理システムは、光線340がシーン内の物体と交差するか否かを判定する必要がある。光線がシーン内の物体と交差しない場合には、それにはデフォルトの背景色(例えば、日中の空又は夜空を表す、青又は黒)を割り当てることができる。逆に、光線340が3次元シーンを通過する際に、光線340が物体に当たることがある。光線がシーン内の物体に当たる際、光線が通過するピクセルに対して、その物体の色を割り当てることができる。しかしながら、ピクセルに割り当てる前に、その物体の色を決定しなければならない。
元の光線340が当たった物体の色には、多くの要因が寄与し得る。例えば、3次元シーン内の光源が物体を照射することがある。さらに、物体の物理的性質が、その物体の色に寄与することがある。例えば、物体が反射性又は透明である場合には、他の非光源物体がその物体の色に寄与することもある。
3次元シーン内の他の物体からの効果を判定するために、元の光線340が物体と交差した点から2次光線を出すことができる。例えば、1つのタイプの2次光線は、影光線(shadow ray)とすることができる。影光線を用いて、元の光線340が物体と交差した点への光の寄与を判定することができる。別のタイプの2次光線は、透過光線(transmitted ray)とすることができる。透過光線を用いて、どの色又は光が物体の本体を透過できるのかを判定することができる。さらに、第3のタイプの2次光線は、反射光線(reflected ray)とすることができる。反射光線を用いて、どの色又は光が物体上で反射されるのかを判定するのに用いることができる。
上述されたように、1つのタイプの2次光線は、影光線とすることができる。各影光線は、元の光線と物体の交点から3次元シーン305内の光源まで追跡することができる。影光線が光源に到達する前に別の物体に遭遇することなく、光線が光源に到達する場合には、光源は、元の光線が物体に当たった点で、元の光線が当たった物体を照射するであろう。
例えば、影光線341は、元の光線340が物体320と交差した点から出て、光源325に向かう方向に進むことができる。影光線341は、シーン305内の他のいずれの物体にも遭遇せずに、光源325に到達する。従って、光源325は、元の光線340が物体320と交差した点において物体320を照射することになる。
他の影光線は、元の光線が物体に当たった点と、3次元シーン内の他の物体によって遮蔽される光源との間に、それらの経路を有することができる。元の光線が当たった物体上の点と光源との間の経路を妨げる物体が不透明である場合には、光源は、元の光線が物体に当たった点において物体を照射しない。従って、光源は、元の光線の色に寄与せず、その結果、2次元ピクチャ内のレンダリングされるピクセルの色にも寄与し得ない。しかしながら、物体が半透明又は透明である場合には、光源は、元の光線が物体に当たった点において物体を照射することができる。
例えば、影光線341は、元の光線340が物体320と交差した点から出て、光源325に向かう方向に進むことができる。この例では、影光線341の経路は、物体320によって遮断される。物体320が不透明である場合には、光源325は、元の光線340が物体320と交差した点において物体320を照射することはない。しかしながら、物体320が半透明又は透明である場合には、光源325は、元の光線340が物体320と交差した点において物体320を照射することができる。
別のタイプの2次光線は、透過光線である。元の光線340と交差した物体が透明又は半透明の特性を有する(例えば、ガラス)場合、画像処理システムによって、透過光線を出すことができる。透過光線は、元の光線が物体に当たった角度に対してある角度で物体を通過する。例えば、透過光線344は、元の光線340が交差した物体320を通過するように見える。
別のタイプの2次光線は、反射光線である。元の光線と交差した物体が反射特性を有する場合には(例えば、金属仕上げ)、どの色又は光が物体に反射し得るかを判定するために、画像処理システムによって反射光線が出される。反射光線は、元の光線が物体と交差した角度に対してある角度で、物体から遠ざかるように進む。例えば、どの色又は光が、元の光線340が交差した物体320に反射され得るかを判定するために、画像処理システムによって反射光線343を出すことができる。
全ての2次光線(例えば、影光線、透過光線、反射光線など)の色及び光の寄与全体により、元の光線が通過したピクセルの最終的な色がもたらされることになる。
例示的なkd木
光線追跡法を実施する際に遭遇する1つの問題は、出された光線がレンダリングされるシーン内のいずれかの物体と交差するか否かを、速やかに且つ効率的に判定することである。光線の交差をより効率的に判定するための当業者には周知の1つの方法は、空間インデックスを使用するものである。空間インデックスは、3次元シーン又は世界を、プリミティブを含んでいることも含んでいないこともある、より小さなボリューム(3次元シーン全体に比べて小さな)に分ける。次いで、画像処理システムは、これらの小さなボリュームの既知の境界を用いて、光線が、これらの小さなボリューム内に含まれるプリミティブと交差するか否かを判定することができる。光線がプリミティブを含むボリュームと交差する場合には、そのボリューム内に含まれるプリミティブの既知の位置及び寸法に対して、光線の軌跡を用いて光線交差テストを行なうことができる。光線が特定のボリュームと交差しない場合には、そのボリューム内に含まれるプリミティブに対して光線−プリミティブ交差テストを行なう必要はない。さらに、光線が、プリミティブを含まない境界ボリュームと交差する場合には、その境界ボリュームに対して光線−プリミティブ交差テストを行う必要はない。従って、必要となり得る光線−プリミティブ交差テスト数を低減させることで、空間インデックスを用いることにより、光線追跡法を用いる画像処理システムの性能が大きく向上する。異なる空間インデックス加速データ構造の幾つかの例は、八分木(octree)、k次元木(kd-Tree、kd木)及び二分空間分割木(binary space partioning tree、BSP木)である。幾つかの異なる空間インデックス構造が存在するが、本発明の実施形態を説明する便宜上、以下の例においてはkd木が用いられる。しかしながら、当業者であれば、本発明の実施形態は、異なるタイプの空間インデックスの任意のものにも適用し得ることを容易に理解するであろう。
kd木は、シーン全体又は空間をより小さなボリュームに分割するために、軸平行の(axis aligned)境界ボリュームを使用する。つまり、kd木は、既知の軸線と平行な分割用平面を用いて、シーンが含む3次元空間を分けることができる。分割用平面は、1つのより大きな空間をより小さな境界ボリュームに分割する。より小さな境界ボリュームは、協働してシーン内の空間全体を構成する。kd木構築アルゴリズムを用いて、画像処理システムにより、1つのより大きな境界ボリュームを2つのより小さな境界ボリュームに分割する(分ける)という決定を行なうことができる。
1つの境界ボリュームをより小さなボリュームにいつ分割するかを決定するための1つの基準は、境界ボリューム内に含まれるプリミティブの数とすることができる。つまり、1つの境界ボリュームが所定の閾値よりも多くのプリミティブを含む限り、木構築アルゴリズムは、より多くの分割用平面を引くことによってボリュームの分割を続行することができる。1つの境界ボリュームをより小さなボリュームにいつ分割するかを決定するための別の基準は、1つの境界ボリューム内に含まれる空間の量とすることができる。さらに、境界ボリュームの分割を続行するという決定はまた、境界ボリュームを生成する平面と交差することができるプリミティブの数に基づいてもよい。
シーンの分割は、ノード、岐及び葉から構成される2分木(binary tree)構造で表すことができる。この木の中の各内部ノードは、1つの比較的大きな境界ボリュームを表すことができ、ノードは、サブノードへの分岐を含むことができ、これは、比較的大きな境界ボリュームを分割用平面によって分割した後に結果として得られる2つの比較的小さな分割済みボリュームを表すことができる。軸平行のkd木において、各内部ノードは、2つの他のノードへの分岐だけを含むことができる。内部ノードは、1つ又は2つの葉ノードへの分岐(即ち、ポインタ)を含むことができる。葉ノードとは、それ以上小さなボリュームに細分されないノードであり、プリミティブへのポインタを含む。内部ノードはまた、さらに細分される他の内部ノードへの分岐を含むこともできる。内部ノードはまた、どの軸線に沿って分割用平面が引かれたのか、及び軸線上のどの点において分割用平面が引かれたかを決定するのに必要な情報を含むことができる。
例示的な境界ボリューム
図4(A)−図4(C)は、画像処理システムによってレンダリングされる2次元空間と、対応するkd木とを示す。簡単にするために、kd木の構築を示すために、2次元シーンが用いられるが、kd木は、3次元シーンを表すのに用いることもできる。図4(A)−図4(C)の2次元表示においては、3次元構造で用いられる分割用平面の代わりに分割線が用いられ、境界ボリュームの代わりに境界領域が示される。しかしながら、当業者であれば、この概念は、物体を含む3次元シーンにも容易に適用できることを容易に理解するであろう。
図4(A)は、モニタ310上に表示される最終的なピクチャ内でレンダリングされるプリミティブ410を含む2次元シーン405を示す。シーン全体量を表す最大のボリュームは、境界ボリューム1(BV)に包含される。対応するkd木において、これは、根ノード(root node)又はワールド・ノード(world node)とも呼ばれる最上位のノード450で表すことができる。画像処理システムの一実施形態においては、境界ボリュームが、例えば2つより多くのプリミティブを含む場合、画像処理システムは、境界ボリュームをより小さな境界ボリュームに分割し続けることができる。前述のように、境界ボリュームをより小さな境界ボリュームに分割し続けるという決定は多くの要因に基づき得るがが、この例においては説明を簡単にするために、境界ボリュームを分割し続けるという決定は、プリミティブの数だけに基づくものとする。図4(A)に見られるように、BVは6つのプリミティブを含み、よって、kd木構築アルゴリズムは、BVをより小さな境界ボリュームに分割することができる。
図4(B)は、図4(A)に示されたものと同じ2次元シーン405を示す。しかしながら、図4(B)では、木構築アルゴリズムは、BVを2つのより小さな境界ボリュームBV及びBVに分割している。BVの分割は、x軸上の点xにおいて分割用平面SP415を引くことによって行なわれた。このBVの分割はまた、内部ノード即ち親ノードBV450の下にある、それぞれBV及びBVに対応する2つのノード455及び460として、kd木内にも反映されている。ここで、BVを表す内部ノードは、これらに限定されるものではないが、BVの下にある2つのノード(例えば、BV及びBV)へのポインタ、どの軸線に沿って分割平面が引かれたのか(例えば、x軸)、及び軸線上のどの点において分割用平面が引かれたのか(例えば、点xにおいて)といった情報を格納することができる。
kd木構築アルゴリズムは、境界ボリュームBVが所定の閾値より多いプリミティブ(例えば、2つより多いプリミティブ)を含むという理由で、境界ボリュームBVの分割を続けることができる。しかしながら、kd木構築アルゴリズムは、境界ボリュームBVが、ある数以下のプリミティブ(例えば、2つのプリミティブ410だけ)を含んでいるという理由で、境界ボリュームBVの分割を続けることができない。BVのように、それ以上分割又は細分されないノードは、葉ノードと呼ばれる。
図4(C)は、図4(B)に示されたものと同じ2次元シーン405を示す。しかしながら、図4(C)では、kd木構築アルゴリズムは、BVを2つの小さな境界ボリュームBV及びBVに分割している。kd木構築アルゴリズムは、y軸上の点yにおいて分割用平面を用いてBVを分割した。BVは2つのサブノードに分割されたので、今やBVを内部ノードと呼ぶことができる。BVの分割はまた、それぞれBV及びBVに対応する、2つの葉ノード465及び470として、kd木内にも反映されている。BV及びBVが表すボリュームは、これ以上小さな境界ボリュームに分割されないので、これらは、葉ノードである。2つの葉ノードBV及びBVは、kd木内で分割された境界ボリュームを表す内部ノードBVの下に位置する。
BVを表す内部ノードは、これらに限定されるものではないが、2つのノード(即ち、BV及びBV)へのポインタ、どの軸線に沿って分割用平面が引かれたのか(即ち、y軸)、及び軸線上のどの点において分割用平面が引かれたのか(即ち、点yにおいて)といった情報を格納することができる。
kd木構築アルゴリズムは、今やシーン内に位置する全ての境界ボリュームが、境界ボリューム内に含み得る最大の所定数以下のプリミティブを含むという理由で、境界ボリュームの分割を停止することができる。葉ノードは、各葉が表す境界ボリューム内に含まれるプリミティブへのポインタを含むことができる。例えば、葉ノードBVはプリミティブ410へのポインタを含み、葉ノードBVはプリミティブ410へのポインタを含み、葉ノードBVは、プリミティブ410へのポインタを含むことができる。
光線追跡を用いる画像処理システムは、空間インデックス(kd木)をトラバースするために、作業負荷マネージャ205を用いることができる。kd木のトラバースは、行なうべき又は進むべきkd木の下位レベルのノード(サブノード)への分岐を選択し、光線が、サブノード内に含まれるいずれかのプリミティブと交差するか否かを判定することを含むことができる。作業負荷マネージャ205は、出された光線の座標及び軌跡を使用して、kd木をトラバース又はナビゲートすることができる。作業負荷マネージャ205は、光線−境界ボリューム交差テストを実行することによって、光線がkd木構造内のノードで表される境界ボリュームの1つの平面と交差するか否かを判定することができる。光線がプリミティブだけを含む境界ボリューム(即ち、葉ノード)と交差する場合には、作業負荷マネージャ205は、光線−プリミティブ交差テストのために、光線及び関連する情報をベクトル・スループット・エンジン(VTE)210に送ることができる。光線がその境界ボリューム内のプリミティブと交差するか否かを判定するために、光線−プリミティブ交差テストを実行することができる。この方法は、シーン内に含まれるプリミティブの各々について光線−プリミティブ交差テストを実行するのに比べると、光線がシーン内の物体と交差するか否かを判定するのに必要な光線−プリミティブ交差テストの数が少なくなる。
結果として得られるkd木構造又は他の空間インデックス構造は、プロセッサ・キャッシュ230内に格納することができる。プロセッサ・キャッシュ230内に格納するために、kd木、及びkd木を含む対応するデータのサイズを最適化することができる。kd木をプロセッサ・キャッシュ230内に格納することにより、作業負荷マネージャ205は、画像処理システムが光線を出す度にメモリからkd木を取り出す必要なしに、画像処理システムが出した光線を用いてkd木をトラバースすることが可能になる。
例示的な空間インデックスの分割
図5は、本発明の一実施形態による、例示的な分割された空間インデックス500(即ち、kd木)を示す。空間インデックスのトラバースに関する操作を多数の処理要素間で均等に配分するように、空間インデックスを分割することができる。図5に示されるkd木500は、レンダリングされる3次元シーンを表すことができる。図4に関して上述されたように、作業負荷マネージャは、光線を定める情報を用いて、kd木をトラバースすることができる。さらに、作業負荷マネージャは、複数の処理スレッドと、メモリ・キャッシュ(例えば、L1キャッシュ又はL2キャッシュ)とを含むことができる。作業負荷マネージャは、最初に、光線−境界ボリューム交差テストを実行することによって、kd木500をトラバースすることができる。光線がノードに対応する境界ボリュームと交差するとき、作業負荷マネージャは、光線と交差したノードへの分岐をとることによって、kd木500をトラバースすることができる。本発明の一実施形態によると、作業負荷マネージャは、該作業負荷マネージャが葉ノードへの分岐をとるまで、光線−境界ボリューム交差テストを実行し、交差したノードへの分岐を続行することができる。作業負荷マネージャが葉ノードへの分岐をとると、作業負荷マネージャは、光線−プリミティブ交差テストのために、例えば、インボックス115及び/又は高速バス225を介して、光線をベクトル・スループット・エンジンに送ることができる。
本発明の一実施形態によると、kd木500をトラバースするために、別個の処理コア上にある複数の作業負荷マネージャの各々を用いることができる。図6は、別個の処理コア上にある複数の作業負荷マネージャの各々の一実施形態を示す。図6は、4つの異なる処理コア605A−D上にある4つの作業負荷マネージャWM1−4を示す。各々の処理コア上には、複数のベクトル・スループット・エンジンVTE1A−VTE4C、共有のキャッシュ(例えば、L2キャッシュ)及び複数のメモリマッピングされたインボックスもある。作業負荷マネージャ及びベクトル・スループット・エンジンは、インボックス及び高速バス625を介して通信することができる。
本発明の一実施形態によると、空間インデックスをトラバースする作業負荷マネージャが空間インデックスの所定の区分(division)又は区画(partition)に到達したとき、作業負荷マネージャは、異なる(例えば、第2の)作業負荷マネージャに、光線を送る(例えば、インボックスを介して、光線を定める情報ヘのポインタを送る)ことができる。次いで、第2の作業負荷マネージャは、第1の作業負荷マネージャが停止した空間インデックス内の点で空間インデックスのトラバースを開始し、かつ、第2の作業負荷マネージャが空間インデックスの葉ノード又は別の区画に到達するまで、空間インデックスのトラバースを続行することができる(即ち、光線−境界ボリューム交差テストを実行し、他のノードへの分岐をとることによって)。従って、異なる作業負荷マネージャが空間インデックスの異なる部分のトラバースを担当することができるように、空間インデックスを分割することができる。
例えば、図5に示されるように、作業負荷マネージャ1(WM1)がトラバースを担当することができる区画を識別するために、kd木500内に破線の分割線が引かれる。この線は、kd木500をトラバースするいずれかの作業負荷マネージャ(例えば、WM2、WM3、WM4など)が光線を定める情報をWM1に送ることができる点を表すことができる。作業負荷マネージャが光線を定める情報をWM1に送った後、WM1は、WM1が担当するkd木の部分を通してkd木500をトラバースすることに関連するタスクの実行を続行することができる。同様に、第2の破線分割線が、WM2がトラバースを担当できるkd木500の始まりとして示され、2つの破線分割線が、WM3がトラバースを担当できるkd木500の始まりを示し、1つの破線分割線が、WM4がトラバースを担当できるkd木の部分の始まりを示す。
本発明の一実施形態によると、幾つかの作業負荷マネージャは、空間インデックスの共通部分を担当することができる。さらに、これらの作業負荷マネージャの各々はまた、他の作業負荷マネージャがトラバースを担当していない空間インデックスの部分のトラバースを担当することもできる。例えば、図5に破線で示されるように、kd木500を多数の部分に分けることができる。各々の作業負荷マネージャは、対応する破線分割線より下のkd木500の部分のトラバースを担当することができる。さらに、各々の作業負荷マネージャは、全ての破線分割線より上のkd木500の部分(即ち、ワールド・ノードを含むkd木500の部分)のトラバースを担当することができる。従って、画像処理システムが、kd木500を通るトラバースのために光線を作業負荷マネージャに出したとき、各々の作業負荷マネージャは、ワールド・ノードにおいて光線のトラバースを開始し、葉ノードに到達するまで又は別の作業負荷マネージャがkd木500のその部分を担当することを示す境界に到達するまで、空間インデックスのトラバースを続行することができる。
ワールド・ノードを含む空間インデックスの共通部分を担当する各作業負荷マネージャを有することにより、画像処理システムは、3次元シーン内に複数の光線を同時に出すことができる。このことは、複数の作業負荷マネージャにおいて、空間インデックスを通る複数の光線のトラバースを(ワールド・ノードにおいて)同時に始めることによって達成することができる。このような高度に並列処理可能なシステムは、画像処理システムが3次元シーンから最終的な2次元画像をレンダリングするのに必要な時間を減らすことができる。
例えば、図5を参照すると、WMは、ワールド・ノードにおいて光線による空間インデックスのトラバースを開始することができる。ワールド・ノードの後、WMは、別の作業負荷マネージャがWMがトラバースしようとする空間インデックスのその部分を担当することを示す境界を通過するまで、空間インデックスのトラバースを続行することができる(即ち、光線−境界ボリューム交差テストを実行し、ノードに分岐することによって)。例えば、WMは、WMについての破線分割線を通過する分岐を行なうことがある。この時点で、WMは、空間インデックスのトラバースを中止し、光線を定める情報と、WMが光線を用いて空間インデックスをトラバースしたことを示す情報とを、(例えば、インボックス又は高速バスを介して)WMがWMについての分割線を通過した地点まで送ることができる。WMは、インボックス615及び通信ネットワーク625を介して、光線を定める情報をWMに送ることができる。次に、WMは、WMが葉ノードに到達するまで、WMが停止した点から、光線によるkd木のトラバースを続行することができる。
本発明の一実施形態によると、画像処理システムは、空間インデックスをどのように又はどこで分割するかを決定することができる。空間インデックスをどのように又はどこで分割するかの決定は、単一の要因に基づいてもよく、又は複数の要因に基づいてもよい。本発明の一実施形態によると、空間インデックスをどこで分割するかの決定は、これらに限られるものではないが、各作業負荷マネージャに割り当てられるノードの数、各作業負荷マネージャに割り当てられる葉ノード内に含まれるプリミティブの数、又は空間インデックスを分割できる他のいずれかの適切な区分を含む、いずれかの数の要因に基づいて行なうことができる。
さらに、本発明の一実施形態によると、空間インデックスの使用(例えば、空間インデックスの実際の使用)に関連する性能メトリクスに基づいて、空間インデックスを分割してもよい。例えば、性能メトリクスは、空間インデックスの異なる部分を通過する光線の量を定めることができる。性能メトリクスを定期的に計算することができ、定期的に収集された性能メトリクスに基づいて、空間インデックスを再分割することもできる。性能メトリクスに基づいた空間インデックスの分割により、同じ数ではないノードが各作業負荷マネージャに割り当てられることがある。
例えば、図5に示されるように、kd木の分割された部分は、各作業負荷マネージャが担当することになる葉ノードの数に基づいて決定された。図5の曲線状の斜線部分で示されるように、各作業負荷マネージャは、7〜10個の葉ノードを担当する。従って、kd木をどこで分割するかの決定により、各作業負荷マネージャが、ほぼ同数の葉ノードを担当することになる。このような方法でノードの数を各作業負荷マネージャの間に均等に配分することによって、各々の作業負荷マネージャに与えられる作業負荷(即ち、空間インデックスのトラバースに関連する計算)の量を減少させることができる。
本発明の一実施形態によると、図5に示されるkd木は71個のノードを有するが、全体の空間インデックスは、ずっと多くのノード(例えば、何十万又は何百万のノード)を有することができる。さらに、各ノードは、データを定めるために幾つかのバイト(例えば、8バイト)を必要とすることがある。従って、全体の空間インデックスは、大量の記憶空間を必要することがある。
光線追跡による画像処理システムを用いて最終的な画像をレンダリングするのに必要な時間を減少させるために、空間インデックスは、オフチップ・メモリではなく、オンチップ・キャッシュ・メモリ(例えば、マルチコア処理要素605のL2キャッシュ)にキャッシュすることが望ましいことがある。しかしながら、多くのノードを含む複雑な空間インデックスは、大量の記憶空間を必要とし得るので、空間インデックスをオンチップ・キャッシュに格納することは、実現可能でないか又は効率的でないことがある。
空間インデックスを分割することにより、空間インデックスをトラバースするのに作業負荷マネージャが必要とするキャッシュ・メモリの量を減らすことが可能である。上述したように、分割された空間インデックスをトラバースする作業負荷マネージャは、空間インデックスのある部分のトラバースを担当することができ、結果的に、空間インデックスの他の部分のトラバースを担当することはできない。従って、作業負荷マネージャ(例えば、605)は、それらのオンチップ・キャッシュ・メモリ(例えば、作業負荷マネージャ605のL2キャッシュ・メモリ)に、作業負荷マネージャがトラバースを担当する空間インデックスの部分の格納を必要とするだけである。従って、空間インデックスの一部分だけを格納することによって、空間インデックスをトラバースするのに作業負荷マネージャが格納する必要がある情報の量が減少し、空間インデックスを格納するのに必要なキャッシュ・メモリ空間の量が減少する。
結論
結論として、画像処理システムが、空間インデックスを異なる部分に分割することができる。空間インデックスを分割することにより、空間インデックスの異なる部分のトラバースに関する操作の実行を、異なる作業負荷マネージャが担当することができる。特定の作業負荷マネージャは、全体の空間インデックスの一部分のトラバースだけを担当することができる。結果として、作業負荷マネージャは、その作業負荷マネージャがトラバースを担当する空間インデックスの部分を定める情報だけを必要とする。このことにより、作業負荷マネージャが担当する空間インデックスを定める情報を格納するのに必要とされるキャッシュ・メモリ空間の量が減少され得る。
上記は本発明の実施形態に向けられるが、その基本的な範囲を逸脱することなく、本発明の他の及び更なる実施形態を考え出すことができ、その範囲は、上記の特許請求の範囲によって決定される。
本発明の一実施形態によるマルチコア処理要素の図である。 本発明の一実施形態によるマルチコア処理要素のネットワークの図である。 本発明の一実施形態による画像処理システムによりレンダリングされる例示的な3次元シーンの図である。 (A)本発明の一実施形態による画像処理システムによりレンダリングされる2次元空間、及び、画像処理システムにより作成される対応する空間インデックスの図である。(B)本発明の一実施形態による画像処理システムによりレンダリングされる2次元空間、及び、画像処理システムにより作成される対応する空間インデックスの図である。(C)本発明の一実施形態による画像処理システムによりレンダリングされる2次元空間、及び、画像処理システムにより作成される対応する空間インデックスの図である。 本発明の一実施形態による、例示的な分割された空間インデックスを示す。 本発明の一実施形態によるマルチコア処理要素のネットワークの図である。

Claims (20)

  1. 3次元シーンの境界ボリュームを定めるノードを有する空間インデックスをトラバースする方法であって、
    前記空間インデックスを少なくとも第1の区画及び第2の区画に分割する境界を定める分割ステップと
    前記分割ステップの後に、第1の作業負荷マネージャが、前記第1の区画を通る光線をトラバースすることに関連した1つ又は複数のアルゴリズムを前記境界に到達するまで実行するステップと、
    第2の作業負荷マネージャが、前記第1の作業負荷マネージャが停止した前記空間インデックス内の点で、前記第2の区画を通る光線をトラバースすることに関連した1つ又は複数のアルゴリズムを開始し、前記第2の区画の葉ノードに到達するまで又は前記第2の区画と他の区画との境界に到達するまで実行するステップとを含む、方法。
  2. 前記方法は、
    前記空間インデックスを第3の区画に分割するステップであって、前記第1の作業負荷マネージャ及び前記第2の作業負荷マネージャは前記第3の区画を通る光線をトラバースすることに関連した1つ又は複数のアルゴリズムを実行するように動作可能である、前記分割するステップ
    をさらに含む、請求項1に記載の方法。
  3. 前記第1の作業負荷マネージャは第1の処理コア上に配置され、前記第2の作業負荷マネージャは第2の処理コア上に配置される、請求項1又は請求項2に記載の方法。
  4. 前記空間インデックスを分割するステップは、
    前記空間インデックス内のノードの数を求めるステップと、
    前記空間インデックス内の前記ノードの数に基づいて、前記空間インデックス内の前記ノードの数が前記第1の作業負荷マネージャと前記第2の作業負荷マネージャとの間で均等に配分されるように、前記空間インデックスを分割するステップと
    を含む、請求項1、請求項2、又は請求項3のいずれかに記載の方法。
  5. 前記空間インデックスを分割するステップは、
    前記第1の作業負荷マネージャ又は前記第2の作業負荷マネージャの少なくとも一方の作業負荷を判断するステップと、
    前記作業負荷が前記第1の作業負荷マネージャと前記第2の作業負荷マネージャとの間で均等に配分されるように、前記空間インデックスを分割するステップと、
    を含む、請求項1、請求項2、又は請求項3のいずれかに記載の方法。
  6. 前記空間インデックスを分割するステップは、
    前記空間インデックスの葉ノード内に含まれるプリミティブの数を求めるステップと、
    前記空間インデックスの葉ノード内に含まれる前記プリミティブの数に基づいて、前記プリミティブの数が前記第1の作業負荷マネージャと前記第2の作業負荷マネージャとの間で均等に配分されるように、前記空間インデックスを分割するステップと
    を含む、請求項1、請求項2、又は請求項3のいずれかに記載の方法。
  7. 前記第1の区画は前記第1の作業負荷マネージャのメモリ・キャッシュに格納され、前記第2の区画は前記第2の作業負荷マネージャのメモリ・キャッシュに格納される、請求項1乃至請求項6のいずれかに記載の方法。
  8. 前記空間インデックスを少なくとも前記第1の区画及び前記第2の区画に分割するステップが定期に行なわれる、請求項1乃至請求項7のいずれかに記載の方法。
  9. 3次元シーンの境界ボリュームを定めるノードを有する空間インデックスをトラバースする方法であって、
    前記空間インデックスの少なくとも1つの分岐を通る少なくとも1つの境界を生成することによって、前記空間インデックスを少なくとも第1の区画及び第2の区画に分割するステップと、
    前記分割ステップの後に、第1の作業負荷マネージャが、前記第1の区画を通る光線をトラバースすることに関連した1つ又は複数のアルゴリズムを前記境界に到達するまで実行し、前記光線を定める情報を第2の作業負荷マネージャに送るステップと、
    前記第2の作業負荷マネージャが、前記第1の作業負荷マネージャが停止した前記空間インデックス内の点で、前記第2の区画を通る光線をトラバースすることに関連した1つ又は複数のアルゴリズムを開始し、前記第2の区画の葉ノードに到達するまで又は前記第2の区画と他の区画との境界に到達するまで実行するステップとを含む方法。
  10. 前記空間インデックスを分割するステップは、
    前記空間インデックス内のノードの数を求めるステップと、
    前記空間インデックス内の前記ノードの数が前記第1の区画と前記第2の区画との間で均等に配分されるように、前記境界を生成するステップと
    を含む、請求項9に記載の方法。
  11. 前記空間インデックスを分割するステップは、
    前記第1の作業負荷マネージャ又は前記第2の作業負荷マネージャのうちの少なくとも一方の作業負荷を求めるステップと、
    前記作業負荷が前記第1の作業負荷マネージャと前記第2の作業負荷マネージャとの間で均等に配分されるように、前記境界を生成するステップと、
    を含む、請求項9に記載の方法。
  12. 前記第1の作業負荷マネージャは第1の処理コア上に配置され、前記第2の作業負荷マネージャは第2の処理コア上に配置される、請求項9乃至請求項11のいずれかに記載の方法。
  13. 前記第1の区画は前記第1の作業負荷マネージャのメモリ・キャッシュ内に格納され、前記第2の区画は前記第2の作業負荷マネージャのメモリ・キャッシュ内に格納される、請求項9乃至請求項12のいずれかに記載の方法。
  14. 3次元シーンの境界ボリュームを定めるノードを有する空間インデックスと、
    第1の作業負荷マネージャと、
    第2の作業負荷マネージャと、
    前記空間インデックスを少なくとも第1の区画及び第2の区画に分割する画像処理システムとを備え、
    前記分割ステップの後に、第1の作業負荷マネージャが、前記第1の区画を通る光線をトラバースすることに関連した1つ又は複数のアルゴリズムを前記境界に到達するまで実行し、前記光線を定める情報を第2の作業負荷マネージャに送り、
    前記第2の作業負荷マネージャが、前記第1の作業負荷マネージャが停止した前記空間インデックス内の点で、前記第2の区画を通る光線をトラバースすることに関連した1つ又は複数のアルゴリズムを開始し、前記第2の区画の葉ノードに到達するまで又は前記第2の区画と他の区画との境界に到達するまで実行する、システム。
  15. 前記画像処理システムは、前記空間インデックスを第3の区画に分割するようにさらに構成され、前記第1の作業負荷マネージャ及び前記第2の作業負荷マネージャは、前記第3の区画を通る光線をトラバースすることに関連したアルゴリズムを実行するように動作可能である、請求項14に記載のシステム。
  16. 第1の処理コアと、
    第2の処理コアと、
    をさらに備え、
    前記第1の作業負荷マネージャは第1の処理コア上に配置され、前記第2の作業負荷マネージャは第2の処理コア上に配置される、請求項14又は請求項15に記載のシステム。
  17. 前記画像処理システムは、
    前記空間インデックス内のノードの数を求め、
    前記空間インデックス内の前記ノードの数に基づいて、前記空間インデックス内の前記ノードの数が前記第1の作業負荷マネージャと前記第2の作業負荷マネージャとの間で均等に配分されるように、前記空間インデックスを分割する、
    ようにさらに構成される、請求項14、請求項15、又は請求項16のいずれかに記載のシステム。
  18. 前記画像処理システムは、
    前記第1の作業負荷マネージャ又は前記第2の作業負荷マネージャの少なくとも1つの作業負荷を求め、
    前記作業負荷が前記第1の作業負荷マネージャと前記第2の作業負荷マネージャとの間で均等に配分されるように、前記空間インデックスを分割する、
    ようにさらに構成される、請求項14、請求項15、又は請求項16のいずれかに記載のシステム。
  19. 前記画像処理システムは、
    前記空間インデックスの葉ノード内に含まれるプリミティブの数を求め、
    前記空間インデックスの葉ノード内に含まれる前記プリミティブの数に基づいて、前記プリミティブの数が前記第1の作業負荷マネージャと前記第2の作業負荷マネージャとの間で均等に配分されるように、前記空間インデックスを分割する、
    ようにさらに構成される、請求項14、請求項15、又は請求項16のいずれかに記載のシステム。
  20. 前記第1の作業負荷マネージャのためのキャッシュ・メモリと、
    前記第2の作業負荷マネージャのためのキャッシュ・メモリと
    をさらに備え、
    前記第1の区画は前記第1の作業負荷マネージャのためのメモリ・キャッシュに格納され、前記第2の区画は前記第2の作業負荷マネージャのためのメモリ・キャッシュに格納される、請求項14乃至請求項19のいずれかに記載のシステム。
JP2009525061A 2006-08-22 2007-08-21 空間インデックスをトラバースする方法及びシステム Active JP5063695B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/466,129 US8243081B2 (en) 2006-08-22 2006-08-22 Methods and systems for partitioning a spatial index
US11/466,129 2006-08-22
PCT/EP2007/058680 WO2008023020A2 (en) 2006-08-22 2007-08-21 Methods and systems for partitioning a spatial index

Publications (2)

Publication Number Publication Date
JP2010501922A JP2010501922A (ja) 2010-01-21
JP5063695B2 true JP5063695B2 (ja) 2012-10-31

Family

ID=39107159

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009525061A Active JP5063695B2 (ja) 2006-08-22 2007-08-21 空間インデックスをトラバースする方法及びシステム

Country Status (5)

Country Link
US (1) US8243081B2 (ja)
EP (1) EP2054858A2 (ja)
JP (1) JP5063695B2 (ja)
CN (1) CN101506847B (ja)
WO (1) WO2008023020A2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110580251A (zh) * 2019-07-19 2019-12-17 中国科学院信息工程研究所 一种大数据环境下的群体轨迹伴随模式在线分析方法和系统

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8060112B2 (en) 2003-11-20 2011-11-15 Intellient Spatial Technologies, Inc. Mobile device and geographic information system background and summary of the related art
US7245923B2 (en) * 2003-11-20 2007-07-17 Intelligent Spatial Technologies Mobile device and geographic information system background and summary of the related art
US7418341B2 (en) * 2005-09-12 2008-08-26 Intelligent Spatial Technologies System and method for the selection of a unique geographic feature
US8538676B2 (en) * 2006-06-30 2013-09-17 IPointer, Inc. Mobile geographic information system and method
US7852336B2 (en) * 2006-11-28 2010-12-14 International Business Machines Corporation Dynamic determination of optimal spatial index mapping to processor thread resources
JP5024668B2 (ja) * 2007-07-10 2012-09-12 富士ゼロックス株式会社 画像形成装置および情報処理装置
US8253730B1 (en) * 2008-08-29 2012-08-28 Adobe Systems Incorporated System and method for construction of data structures for ray tracing using bounding hierarchies
CA2748031A1 (en) * 2008-12-22 2010-07-01 Intelligent Spatial Technologies, Inc. System and method for linking real-world objects and object representations by pointing
EP2368174A4 (en) * 2008-12-22 2014-05-07 Intelligent Spatial Technologies Inc SYSTEM AND METHOD FOR TRIGGERING ACTIONS AND COMMUNICATING POINT RETURN AT AN INTERESTING OBJECT
US8745090B2 (en) 2008-12-22 2014-06-03 IPointer, Inc. System and method for exploring 3D scenes by pointing at a reference object
US8483519B2 (en) 2008-12-22 2013-07-09 Ipointer Inc. Mobile image search and indexing system and method
JP5608680B2 (ja) * 2008-12-30 2014-10-15 インテリジェント スペイシャル テクノロジーズ,インク. モバイルの画像検索及びインデキシングのシステム及び方法
US8350846B2 (en) * 2009-01-28 2013-01-08 International Business Machines Corporation Updating ray traced acceleration data structures between frames based on changing perspective
US8619078B2 (en) * 2010-05-21 2013-12-31 International Business Machines Corporation Parallelized ray tracing
US8629867B2 (en) 2010-06-04 2014-01-14 International Business Machines Corporation Performing vector multiplication
US8692825B2 (en) 2010-06-24 2014-04-08 International Business Machines Corporation Parallelized streaming accelerated data structure generation
CN104156362B (zh) * 2013-05-14 2017-04-19 视辰信息科技(上海)有限公司 一种大规模图像特征点匹配方法
US8947447B1 (en) 2014-02-13 2015-02-03 Raycast Systems, Inc. Computer hardware architecture and data structures for ray binning to support incoherent ray traversal
US9842424B2 (en) * 2014-02-10 2017-12-12 Pixar Volume rendering using adaptive buckets
CN111221813B (zh) * 2018-11-27 2023-06-23 阿里巴巴集团控股有限公司 数据库索引以及数据库查询的处理方法、装置及设备
US11970185B2 (en) * 2021-10-01 2024-04-30 Ford Global Technologies, Llc Data structure for storing information relating to an environment of an autonomous vehicle and methods of use thereof

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02242387A (ja) 1989-03-15 1990-09-26 Fujitsu Ltd 空間分割型並列画像生成装置
GB9424273D0 (en) * 1994-12-01 1995-01-18 Wrigley Adrian M T Improvements in and relating to image constrcution
US6111582A (en) * 1996-12-20 2000-08-29 Jenkins; Barry L. System and method of image generation and encoding using primitive reprojection
JP3889195B2 (ja) * 1999-02-03 2007-03-07 株式会社東芝 画像処理装置、画像処理システムおよび画像処理方法
US7495664B2 (en) * 2000-06-19 2009-02-24 Mental Images Gmbh Instant ray tracing
US7002571B2 (en) * 2002-06-04 2006-02-21 Intel Corporation Grid-based loose octree for spatial partitioning
DE10239672B4 (de) * 2002-08-26 2005-08-11 Universität des Saarlandes Verfahren und Vorrichtung zur Erzeugung einer zweidimensionalen Abbildung einer dreidimensionalen Struktur
US7012604B1 (en) * 2002-09-12 2006-03-14 Advanced Micro Devices, Inc. System architecture for high speed ray tracing
CN1410948A (zh) * 2002-09-23 2003-04-16 清华大学 平面和球面非线性折射和反射的实时光线跟踪方法
CN1264062C (zh) * 2002-12-31 2006-07-12 清华大学 一种多视角x射线立体成像的方法与系统
US7164420B2 (en) * 2003-07-24 2007-01-16 Autodesk, Inc. Ray tracing hierarchy
DE102004007835A1 (de) * 2004-02-17 2005-09-15 Universität des Saarlandes Vorrichtung zur Darstellung von dynamischen komplexen Szenen
JP4450853B2 (ja) * 2004-09-16 2010-04-14 エヌヴィディア コーポレイション 負荷分散
US7737974B2 (en) * 2006-09-27 2010-06-15 International Business Machines Corporation Reallocation of spatial index traversal between processing elements in response to changes in ray tracing graphics workload

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110580251A (zh) * 2019-07-19 2019-12-17 中国科学院信息工程研究所 一种大数据环境下的群体轨迹伴随模式在线分析方法和系统
CN110580251B (zh) * 2019-07-19 2023-01-17 中国科学院信息工程研究所 一种大数据环境下的群体轨迹伴随模式在线分析方法和系统

Also Published As

Publication number Publication date
WO2008023020A2 (en) 2008-02-28
US20080049016A1 (en) 2008-02-28
CN101506847A (zh) 2009-08-12
EP2054858A2 (en) 2009-05-06
WO2008023020A3 (en) 2008-05-08
CN101506847B (zh) 2012-03-28
JP2010501922A (ja) 2010-01-21
US8243081B2 (en) 2012-08-14

Similar Documents

Publication Publication Date Title
JP5063695B2 (ja) 空間インデックスをトラバースする方法及びシステム
JP5043939B2 (ja) 3次元シーンの境界ボリュームを定めるノードを有する空間インデックスを用いる光線追跡のための操作を行なうプログラムを含むコンピュータ可読媒体及びシステム
US7940265B2 (en) Multiple spacial indexes for dynamic scene management in graphics rendering
JP5063698B2 (ja) レイ・トレーシング画像処理システムにおけるピクセル色の決定方法および画像処理システム
US7940266B2 (en) Dynamic reallocation of processing cores for balanced ray tracing graphics workload
US8004518B2 (en) Combined spatial index for static and dynamic objects within a three-dimensional scene
US8018453B2 (en) Deferred acceleration data structure optimization for improved performance
US7773087B2 (en) Dynamically configuring and selecting multiple ray tracing intersection methods
US11804002B2 (en) Techniques for traversing data employed in ray tracing
US7737974B2 (en) Reallocation of spatial index traversal between processing elements in response to changes in ray tracing graphics workload
US20080122838A1 (en) Methods and Systems for Referencing a Primitive Located in a Spatial Index and in a Scene Index
JP5476138B2 (ja) 変化する視野に基づいてフレーム間の光線追跡のアクセラレーション・データ構造体を更新する方法
US7864174B2 (en) Methods and systems for reducing the number of rays passed between processing elements in a distributed ray tracing system
US8089481B2 (en) Updating frame divisions based on ray tracing image processing system performance
US7893936B2 (en) Generating efficient spatial indexes for predictably dynamic objects
US7796128B2 (en) Dynamically load balancing game physics using real-time object scaling
US8339398B2 (en) Integrated acceleration data structure for physics and ray tracing workload
US20080074418A1 (en) Methods and Systems for Texture Prefetching Based on a Most Recently Hit Primitive Algorithm
US20080079714A1 (en) Workload Distribution Through Frame Division in a Ray Tracing Image Processing System
US8102389B2 (en) Box casting using an integrated acceleration data structure
US20240009226A1 (en) Techniques for traversing data employed in ray tracing
US20080079715A1 (en) Updating Spatial Index Partitions Based on Ray Tracing Image Processing System Performance

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100416

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20111226

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120110

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120329

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20120710

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120807

R150 Certificate of patent or registration of utility model

Ref document number: 5063695

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150817

Year of fee payment: 3