JP2009534759A - 瞬時光線追跡 - Google Patents

瞬時光線追跡 Download PDF

Info

Publication number
JP2009534759A
JP2009534759A JP2009506777A JP2009506777A JP2009534759A JP 2009534759 A JP2009534759 A JP 2009534759A JP 2009506777 A JP2009506777 A JP 2009506777A JP 2009506777 A JP2009506777 A JP 2009506777A JP 2009534759 A JP2009534759 A JP 2009534759A
Authority
JP
Japan
Prior art keywords
ray
bounding box
objects
scene
computer
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.)
Granted
Application number
JP2009506777A
Other languages
English (en)
Other versions
JP4858795B2 (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.)
Nvidia ARC GmbH
Original Assignee
Mental Images GmbH
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
Priority claimed from US11/474,517 external-priority patent/US7499053B2/en
Application filed by Mental Images GmbH filed Critical Mental Images GmbH
Publication of JP2009534759A publication Critical patent/JP2009534759A/ja
Application granted granted Critical
Publication of JP4858795B2 publication Critical patent/JP4858795B2/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/06Ray-tracing

Landscapes

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

Abstract

コンピュータグラフィックスシステムにおいて動作可能な方法、システム、装置及びコンピュータプログラム製品は、ツリー構造を含む階層状光線追跡加速データ構造を構築することであって、ツリー構造のノードが、場面中の1組のオブジェクトを左オブジェクトと右オブジェクトに分割するための軸平行場面境界ボックス及び2つの並列面定義に基づく境界間隔階層を使用して生成されること、並びに被分裂面をオブジェクト境界ボックスに合致させることを含む。2つの面は、x、y、又はz軸のうち選択された1つに垂直である。分裂面を与えられると、左/右選択基準に基づいて、画像中の各オブジェクトが左又は右どちらかに分類され、子ノードの2つの分裂面値が、それぞれ、左及び右オブジェクトの最大及び最小座標によって判定される。
【選択図】 図3

Description

関連出願の相互参照
本特許出願は、2006年4月19日に出願した米国特許仮出願第60/793063号(整理番号MENT−201−PR)の優先権の利益を主張し、2006年6月23日に出願した米国特許出願第11/474517号(整理番号MENT−101−US、名称「Real−Time Precision Ray Tracing」)の一部継続出願である。
米国特許出願第11/474517号(整理番号MENT−101−US)は、2005年6月33日に出願した米国特許仮出願第60/693231号(整理番号MENT−101−PR)の優先権の利益を主張し、2002年11月19日に出願した米国特許出願第10/299574号(整理番号MENT−075)の一部継続出願である。
米国特許出願第10/299574号(整理番号MENT−075)は、2001年6月19日に出願した米国特許第09/884861号(整理番号MENT−061)の一部継続出願であり、この米国特許は、2001年2月1日に出願した米国特許仮出願第60/265934号、及び2000年6月19日に出願した米国特許仮出願第60/212286号の優先権の利益を主張する。仮及び本出願を含むこうした引用特許出願はそれぞれ、参照によって、その全体が記載されるものとして、本明細書に組み込まれている。
発明の分野
本発明は概して、動画及び他のアプリケーションのための、デジタルコンピューティングシステムにおける、且つそれによる画像描画のための方法及びシステムに関し、詳細には、ほぼ瞬時に行われる高精度光線追跡のための方法、システム、装置、及びコンピュータソフトウェアに関する。
発明の背景
「光線追跡」という用語は、光源をカメラと接続するすべての光路を識別し、こうした寄与率(contribution)を合計することによって、写真のようにリアルな画像を同期させる技法を記述する。シミュレーションは、可視性を判定するために視線に沿って光線を追跡し、照度を判定するために光源からの光線を追跡する。
光線追跡は、動画及び他のアプリケーションにおいて主流になっている。しかし、現在の光線追跡技法は、数値問題、動的場面を処理するための限られた機能、加速データ構造の遅いセットアップ及び巨大なメモリフットプリントを含む、公知のいくつかの制限及び弱点の影響を被っている。したがって、現在の光線追跡技法は、森を吹き抜ける風や人間の髪の毛など、十分にアニメーション化された場面を効率的に取り扱う能力に欠けている。現在の光線追跡システムの制限を克服すると、たとえば、映画製作における、より高品質のモーションブラーの描画も可能になるであろう。
光線追跡システムの性能を向上させるための現在の試みは、いくつかの理由により、不十分である。たとえば、現在のリアルタイム光線追跡システムは概して、その加速構造として、軸平行バイナリ空間区画に基づく3Dツリーを用いる。こうしたシステムの主な焦点は、静的場面を描画することにあるので、通常、十分にアニメーション化された場面に関連して要求されるデータ構造を構築するのに要求される大量のセットアップ時間に対処することができない。こうした線に沿って、ある製造元は、効率的な3Dツリーを組み立て、ツリーを横断するのに必要とされる時間を短縮できるアルゴリズムを開発することによって、リアルタイム光線追跡を改良している。しかし、システムに対する予想されるメモリ要件は、光線追跡されるべきオブジェクトの数の増加とともに二次的に増すことが分かっている。
別の製造元は、境界ボリューム階層を用いてシステム性能を向上させる光線追跡集積回路を設計している。しかし、あまりに多くの非干渉二次光線が追跡される場合、アーキテクチャの性能が損なわれることが分かっている。
さらに、フィールドプログラマブルゲートアレイ(FPGA)を使った3Dツリー横断アルゴリズムを実装することによって、システム性能を向上させる試みが行われている。こうしたシステムにおける処理速度の主な増大は、干渉光線の束を追跡し、迅速な組込み計算を実施するためのFPGAの能力を利用することによって得られる。加速構造の構築は、ハードウェアでは未だに実装されていない。FPGA実装は通常、低減された精度での浮動小数点技法を用いる。
発明の概要
本発明の一態様は、コンピュータ及び表示要素を備えるタイプのコンピュータグラフィックスシステムにおける改良に関し、表示要素は、コンピュータからの表示制御用電気出力に応答して、人間が知覚可能な画像を表示するように動作可能であり、コンピュータは、画像中のピクセルに関するピクセル値の算出に基づいて、表示制御用電気出力を生成するように動作可能であり、それぞれのピクセル値は、模擬カメラの画像面上に記録される場面中の点を表し、コンピュータは、光線追跡方法を用いて画像に対するピクセル値を生成するように動作可能であり、光線追跡方法は、光線ツリー及び関連した光線追跡データ構造の使用を含み、光線ツリーは、選択された方向に沿ってピクセルから場面中に発せられた少なくとも1本の光線を含み、光線追跡方法は、場面中での光線とオブジェクトの表面との交差の算出をさらに含み、光線追跡は、画像中のオブジェクトの処理の結果に応答して判定される。
本発明の本態様において、改良は、ツリー構造を含む階層状光線追跡加速データ構造を構築することであって、ツリー構造のノードが、場面中の1組のオブジェクトを左オブジェクトと右オブジェクトに分割するための軸平行場面境界ボックス及び2つの並列面定義に基づく境界間隔階層を使用して生成されること、並びに被分裂面をオブジェクト境界ボックスに合致させることを含み、
(A)2つの面が、x、y、又はz軸のうち選択された1つに垂直であり、
(B)分裂面を与えられると、左/右選択基準に基づいて、画像中の各オブジェクトが左又は右どちらかに分類され、子ノードの2つの分裂面値が、それぞれ、左及び右オブジェクトの最大及び最小座標によって判定され、
(C)境界ボックス及び選択された軸を与えられると、左の子Lが、選択された軸に沿った左オブジェクトの座標の最大値を第1の面で置き換えることから生じ、右の子Rが、右オブジェクトの座標の最小値を第2の面で置き換えることから生じ、結果として生じたどのゼロボリュームも、空の子を表すのに使われ、
(D)分裂面が、
(1)中央にある長辺に沿った軸平行場面境界ボックスを階層状に細分することによって候補分裂面を選択することであって、すべての候補分裂面が規則的なグリッドを形成すること、
(2)候補面が、細分するべきボリューム要素の境界ボックスの外側にある場合、ボリューム要素が存在する半分以降の候補面で継続すること
によって判定され、
(E)さらに、
(a)境界ボックスをオブジェクト境界ボックスに再帰的に分割すること、
(b)被分裂面候補が重複なしでオブジェクトを分離する場合、結果として生じた被分裂面を左及び右にあるオブジェクトに合わせ、そうすることによって空き空間を最大化すること、並びに
(c)所定の数を超えるオブジェクトが残っていない場合、再帰を終了すること
を含む。
本発明の別の態様において、左/右選択基準は、分裂面を与えられると、画像中の各オブジェクトを、面のどちら側が最も伸びているかに応じて左又は右どちらかに分類することを含み、階層状光線追跡加速データ構造の構築が、バケットソートに基づき、
(A)空間を分割する順序づけられた規則的なグリッドの解像度を判定するために、場面境界ボックス及び平均的オブジェクトサイズを計算すること、或いは、ユーザ指定解像度を用いること、
(B)各グリッドセルごとにカウンタを割り振ること、
(C)各々がそれぞれのグリッドセルに対応するすべてのカウンタをゼロに初期化すること、
(D)各オブジェクトごとに点を選択して、選択された点を含むグリッドセルに対するそれぞれのカウンタを増分すること、
(E)各カウンタ値をすべての先行カウンタの値の和で置き換えることによって、カウンタ値をオフセット値に変換すること、
(F)グローバルオブジェクト索引アレイを割り振ること、
(G)それぞれの各オブジェクトごとに、その点を含むグリッドセル用のカウンタを増分するために選択された対応する点を使って、オフセット値を用いて、オブジェクトをバケットにソートすること、並びに
(H)各バケットごとに、各バケットが含むオブジェクトの境界ボックスを計算すること
の階層状の実行を含む。
本発明のそれ以外の態様は、光線が横断し、又は形状が光線にとって可視的である場合のみの階層状加速データ構造を含む。
本発明のさらにそれ以外の態様は、上記方法によって処理及びメモリ構造を構築することを含み、処理及びメモリ構造は、
(A)画像三角形をバケットにソートし対応するバケット値を記憶装置上に格納することによって前処理すること、
(B)描画のために、ただちに三角形に対するツリーを構築する必要なく、バケットから最上位境界間隔階層を作成することであって、光線が交差する各バケットが、ツリーのオンデマンド作成を使用して独自のツリーを作成すること、
(C)バケットの三角形及び加速データ構造は、動的又は固定ユーザ定義サイズどちらかのキャッシュに格納されること、並びに
(D)最大数の三角形を有するバケットが、最大メモリフットプリントを定義することを提供するように動作可能である。
本発明のそれ以外の態様では、要求されるメモリの量は、前もって、光線追跡されるべきオブジェクトの数において線形的に境界を定めることができる。
本発明は、コンピュータソフトウェア、ハードウェア、又はソフトウェアとハードウェアの組合せとして実施される方法、このような方法を実施するコンピュータベースの装置又はシステム、コンピュータによって通信することができる磁気ディスク、RAMカード、ROM要素、FPGA、ASIC、又は他の処理及び/若しくは記憶要素上に格納されたコンピュータ実行可能コードを備えるコンピュータソフトウェア製品、コンピュータによって、このような方法を実施するように実行可能なコード、或いはこのような実施形態の何らかの組合せの形をとり得ることが当業者には理解されよう。
本発明は、たとえば表示要素なしで、且つ事前定義されたある特定のコンピューティング機器を使用せずに実施できることも、当業者には理解されよう。たとえば、ピクセル値及び画像データは、後で表示するために作成し格納することができる。
こうした及び他の態様について、本発明の以下の詳細な説明において、添付の図面に関連して、後でより詳細に論じる。
発明の詳細説明
発明を実装することができるデジタル処理環境
本発明の特定の例及び実施形態を説明する前に、以下は、本発明を実装し実施することができる基底デジタル処理構造及び環境の図1、2と関連して読むべき考察である。
本発明は、その出力が通常、たとえば、アニメーションの動画、コンピュータ支援設計表現、又は他の典型的なコンピュータグラフィックス出力を含む、人間が知覚可能な(或いはデジタルに格納され、且つ/又は伝送される)1枚の画像又は一連の画像である、コンピュータグラフィックスシステムにおけるより効率的な光線追跡及び他の活動を可能にする方法、システム、装置及びコンピュータプログラム製品を提供することが、当業者には理解されよう。本発明はしたがって、ディスプレイと、キーボード、タブレット及び/又はマウスなどのユーザインタフェース要素と、記憶装置と、他の従来のコンピュータグラフィックスシステム構成要素とともに、コンピュータグラフィックスシステムの一部を形成するコンピュータのコンピュータソフトウェア又はコンピュータハードウェアの一部として実装することができる。このような種類の従来の構成要素は当業者に公知であり、したがって本明細書において詳細に説明する必要はないが、以下の概論は、コンピュータグラフィックスシステムにおいてこのような構成要素とともに本発明をどのようにして実装することができるかを示す。
より具体的には、本発明は、たとえば、動画又は他の動的表示に表示するための画像の生成及び合成において使用できることが、当業者には理解されよう。本明細書において説明する技法は、ピクセル値が画像中のピクセル用に生成されるコンピュータグラフィックスシステムの一部として実施することができる。ピクセル値は、模擬カメラの画像面上に記録されるときの場面中の点を表す。基底コンピュータグラフィックスシステムは、本発明の方法など、選択された方法を用いて画像に対するピクセル値を生成するように構成することができる。
以下の詳細な説明は、こうした技法による方法、構造、システム、及びコンピュータソフトウェア製品の例を示す。記載する方法及びシステムは、スタンドアロン構成でも、ネットワークを介しても、マイクロソフトのウィンドウズ、Linux、又はUnixなど、従来のオペレーティングシステムに従って動作する(又はそれをエミュレートする)パーソナルコンピュータ(PC)や等価な装置など、従来のコンピュータ機器を使って、ソフトウェア、ハードウェア、又はソフトウェアとハードウェアの組合せで実装できることが、当業者には理解されよう。本明細書において説明する様々な処理態様及び手段はしたがって、適切に構成されたデジタル処理装置又は装置からなるネットワークのソフトウェア及び/又はハードウェア要素で実装することができる。処理は、連続して、又は並列に実施することができ、特殊目的又は再構成可能ハードウェアを使って実装することができる。
一例として、本明細書に添付された図1は、このようなコンピュータグラフィックスプロセスを実施することができる例示的なコンピュータシステム10を示す。図1を参照すると、一実施形態におけるコンピュータシステム10は、プロセッサモジュール11と、キーボード12A及び/又はマウス12B(若しくは、概してオペレータ入力要素(群)12として識別されるデジタル化タブレットや他の類似要素(群))などのオペレータ入力構成要素及びビデオ表示装置13などのオペレータ出力要素を備えるオペレータインタフェース要素とを含む。例示的なコンピュータシステム10は、従来の格納プログラムコンピュータアーキテクチャでよい。プロセッサモジュール11は、たとえば、1つ又は複数のプロセッサと、与えられたデジタルデータに関連した処理及び格納操作を実施する、ディスク及び/又はテープ記憶要素(別々には図示していない)などのメモリ及び大容量記憶装置とを含み得る。オペレータ入力要素(群)12は、オペレータに処理用の情報を入力させるために設けられる。ビデオ表示装置13は、オペレータが処理用に入力することができるデータ、オペレータが処理を制御するために入力することができる情報、並びに処理中に生成された情報を含む、プロセッサモジュール11によって生成された出力情報をオペレータに対してスクリーン14上に表示するように設けられる。プロセッサモジュール11は、様々な「ウィンドウ」を使って様々なアプリケーションプログラム用の情報が表示される、いわゆる「グラフィカルユーザインタフェース」(「GUI」)を用いて、ビデオ表示装置13による表示用の情報を生成することができる。
「メモリ」、「記憶装置」及び「ディスク記憶装置」という用語は、コンピュータハードディスク、コンピュータフロッピーディスク、コンピュータ可読フラッシュドライブ、コンピュータ可読RAM又はROM要素或いはデジタル情報をエンコードする他のあらゆる公知の手段など、どのコンピュータ可読媒体も包含し得る。「アプリケーションプログラム」、「アプリケーション」、「プログラム」、「コンピュータプログラム製品」又は「コンピュータソフトウェア製品」という用語は、コンピュータ可読媒体にエンコードされ、且つ/又は格納されたコンピュータ可読プログラム命令からなるどのコンピュータプログラム製品も包含してよく、その媒体は、固定又は取外し可能でも、永続的又は消去可能でも、或いはそれ以外でもよい。たとえば、図2Bの概略的なブロック図のブロック122に記載するように、アプリケーション及びデータは、内部であるか外部であるかに関わらず、ディスク上、RAM、ROM内、他の取外し可能又は固定記憶装置上に格納することができ、当該分野において公知である実施及び技法に従ってダウンロードすることもアップロードすることもできる。本文書において述べるように、本発明は、コンピュータ可読媒体上に格納されるソフトウェア又はコンピュータプログラム製品の形をとってもよく、アップロードし又はダウンロードすることも、FPGA、ROM又は他の電子構造内に固定することもできるコンピュータプログラムコードの形でもよく、方法又はこのような方法を実施するシステムの形をとってもよい。各々のケースにおいて、本発明は、コンピュータ又はコンピュータシステムが画像又は場面中のピクセルに対するピクセル値を算出することを可能にするように動作可能であり、ピクセル値は、グラフィックスカード、表示コントローラ、或いは表示制御用の電気又は電子出力を生成するための、且つ、究極的には、人間が知覚可能な形での画像の表示、及び/又は後で表示し、且つ/又は処理するためにこのような画像(若しくはこのような画像を特定するデータ)の格納を可能にするためのLCD及び/又はCRTなどの表示要素など、従来の要素でよい、コンピュータグラフィックスシステムの他の要素によって使うことができる。
コンピュータシステム10は、オペレータから入力情報を受け取るキーボード12A及びマウス12B、並びにオペレータへの出力情報を表示するビデオ表示装置13など、特定の構成要素を備えるものとして示してあるが、コンピュータシステム10は、図1に示すものに加えて、又はその代わりに、様々な構成要素を含み得ることが理解されよう。
さらに、プロセッサモジュール11は、コンピュータネットワーク内でコンピュータシステム10を接続する通信リンクに接続される、概して参照番号14で識別される、1つ又は複数のネットワークポートを含み得る。ネットワークポートは、コンピュータシステム10が、ネットワーク内の他のコンピュータシステム及び他の装置との間で情報を送信し、情報を受信することを可能にする。たとえば、クライアント−サーバの枠組みに従って編成された典型的なネットワークにおいて、ネットワーク内の特定のコンピュータシステムが、他のクライアントコンピュータシステムによる処理のためのデータ及びプログラム(概して、「情報」)を格納するサーバとして指定され、そうすることによって、クライアントコンピュータシステムが情報を好都合に共有することを可能にする。ある特定のサーバによって維持される情報へのアクセスを必要とするクライアントコンピュータシステムは、サーバがネットワークを介してシステム自体に情報をダウンロードすることを可能にする。データを処理した後、クライアントコンピュータシステムは、処理されたデータを、格納のためにサーバに戻すこともできる。コンピュータシステム(上述のサーバ及びクライアントを含む)に加えて、ネットワークは、たとえば、ネットワーク内で接続された様々なコンピュータシステムの間で共有することができる、プリンタ及びファクシミリ装置、デジタルオーディオ又はビデオ記憶装置並びに分散装置なども含み得る。ネットワーク内のコンピュータシステムを相互接続する通信リンクは、従来通り、コンピュータシステムの間で信号を搬送するワイヤ、光ファイバー又は他の媒体を含む、どの好都合な情報搬送媒体も備え得る。コンピュータシステムは、通信リンクを介して転送されるメッセージを用いて、ネットワークを介して情報を転送し、各メッセージは、メッセージを受信する装置を識別する情報及び識別子を含む。
図面に示すコンピュータシステム10に加えて、本発明による方法、装置又はソフトウェア製品は、従来のPC102、ラップトップ104、ハンドヘルド又はモバイルコンピュータ106を含む、スタンドアロン、ネットワーク接続型、可搬型又は固定、或いはサーバ110及び記憶装置112を含み得る、インターネット又は他のネットワーク108経由に関わらず、図2A、2Bに例として示されるもの(たとえば、ネットワークシステム100)など、広範な従来のコンピューティング装置及びシステムのいずれの上でも動作し得る。
従来のコンピュータソフトウェア及びハードウェアの実施に沿って、本発明に従って構成されたソフトウェアアプリケーションは、たとえば、プログラム命令を、ROM又はCD ROM116(図2B)、磁気ディスク又は他の記憶装置120から読み出し、CPU118による実行のためにRAM114にロードすることができる、図1、2A〜Bに示すようなPC102内で動作し得る。データは、従来のキーボード、スキャナ、マウス、デジタル化タブレット、又は他の要素103を含む、公知のどの装置又は手段を介してもシステムに入力することができる。図2Bに示すように、図示してある記憶装置120は、取外し可能記憶装置を含む。さらに図2Bに示すように、アプリケーション及びデータ122は、固定又は取外し可能記憶装置又はROMの一部又は全部に配置しても、ダウンロードしてもよい。
本明細書に記載の本発明の方法態様は、特に本明細書において説明するプロセスを実施するように、ASIC製造元には公知のASIC構築技法を用いて構築されたフィールドプログラマブルゲートアレイ(FPGA)や特定用途集積回路(ASIC)などのハードウェア要素で実行できることが、当業者には理解されよう。様々な形のASICが、多くの製造元から入手可能であるが、現時点で入手可能なASICは、本特許出願に記載する機能を提供しない。このような製造元は、両方ともカリフォルニア州サンタクララにある、インテルコーポレーション及びNVIDIAコーポレーションを含む。従来のASIC又は等価な集積回路の実際の半導体要素は、本発明の一部ではないので、本明細書では詳しく論じない。
ASIC又は他の従来の集積回路或いは半導体要素は、このようにして、本明細書においてより詳細に説明する本発明の教示内容を用いて、たとえば、後でより詳細に論じる、以下で言及する図3に示す本発明の方法を実施するように実装できることも、当業者には理解されよう。
本発明の方法態様は、本発明に従って構成されたワークステーション又はPCのオペレーティングシステム及びコンピュータプログラム製品の集団的コマンドの下で動作するワークステーション及びパーソナルコンピュータ(PC)など、市販されているデジタル処理システムにおいて実施できることも、当業者には理解されよう。「コンピュータプログラム製品」という用語は、コンピュータ可読媒体上にエンコードされたどの1組のコンピュータ可読プログラム命令も包含し得る。コンピュータ可読媒体は、コンピュータハードディスク、コンピュータフロッピーディスク、コンピュータ可読フラッシュドライブ、コンピュータ可読RAM又はROM要素、或いはワークステーション、PC又は他のデジタル処理装置若しくはシステムにローカルであるかリモートであるかに関わらず、デジタル情報をエンコードし、格納し、又は提供する他のどの公知の手段も含むが、それに限定されない、どの形のコンピュータ可読要素も包含し得る。様々な形のコンピュータ可読要素及び媒体がコンピューティング分野において公知であり、その選択は実装者に委ねられる。各々のケースにおいて、本発明は、コンピュータシステムがピクセル値を算出することを可能にするように動作可能であり、ピクセル値は、グラフィックスカードや表示コントローラなど、従来の要素でよいコンピュータシステム内のハードウェア要素によって、表示制御用電子出力を生成するのに使うことができる。従来のグラフィックスカード及び表示コントローラがコンピューティング分野において公知であるが、必ずしも本発明の一部ではなく、その選択は実装者に委ねることができる。
本発明の実施形態
次に、添付の図面に関連して、以降のページで本発明を詳しく説明する。様々な追加、削減並びに本発明の他の修正形態及び実装形態が実施可能であり、本発明の精神及び範囲内であることが、当業者には理解されよう。
上述したように、FPGAやASICなど、公知の形の集積回路又は半導体要素は、このように、本明細書において説明する本発明の教示内容を用いて、たとえば、後でより詳細に論じる図面に示す本発明の方法を実施するように実装することができる。
したがって、以下の説明は、以下の図3を参照して読むべきであり、以下のセクションに編成される。
I.リアルタイムの高精度光線追跡
1.全体的方法
2.高精度光線追跡アーキテクチャ
2.1.自己交差問題
2.1.1.浮動小数点精度の光線自由曲面交差
2.2.光線−三角形交差
2.3.高性能3Dツリー構築
2.3.1.分裂面選択
2.3.2.最小記憶装置構築
2.3.3.左バランスによるツリー剪定
2.3.4.高数値精度の三角形矩形交差
2.4.高性能境界ボリューム階層
2.4.1.構築
2.4.1.1.分裂面の発見
2.4.1.2.非効率軸平行境界ボックス
2.4.2.横断
2.4.3.オンザフライ境界ボリューム構築
2.5.基数ソート処理
2.5.1.オンデマンドでの構築
3.リアルタイムの高精度光線追跡技法の要約
4.追加技法
4A.半空間の切取りによる境界ボリューム階層の構築
4B.4つの軸平行面による軸平行境界ボックスのクリップ
4C.加速データ構造の高性能セットアップ
4D.効率的なツリーエントリノード判定
4E.束横断
II.瞬時光線追跡
1.概論
2.加速光線追跡の原理
2.1.空間の分割に基づく加速光線追跡
2.1.1.規則的なグリッドを使った空間分割
2.1.2.バイナリ空間区画
2.2.オブジェクトリストの分割に基づく加速光線追跡
2.2.1.境界ボリューム階層
2.3.加速光線追跡のための現在の手法の要約
3.境界間隔階層
3.1.データ構造
3.2.光線交差
3.3.階層の構築
3.3.1.分裂面を判定するグローバルヒューリスティック
3.3.2.近似ソート
3.3.3.実装詳細
3.4.オンデマンドでの構築
4.考察
4.1.メモリフットプリント
4.2.数値精度
4.3.光線集団の追跡
4.4.ハードウェア検討事項
4.5.大量データセット
4.6.大型オブジェクト
5.結果
6.結論
I.リアルタイムの高精度光線追跡
ここで、高精度光線追跡アーキテクチャ及び関連した技法を説明する。記載するアーキテクチャ及び技法は、浮動小数点量子化及び大型メモリ要件、並びにそれ以外に起因する、光線追跡における問題を含むいくつかの問題点に対処する。
1.全体的方法
図3は、本明細書において説明する技法による全体的方法200を示す図である。この方法は、画像中の各ピクセルごとにピクセル値が生成されるコンピュータグラフィックスシステムのコンテキストにおいて実施される。生成された各ピクセル値は、模擬カメラの画像面上で記録された場面中の点を表す。コンピュータグラフィックスシステムは、選択された光線追跡方法を用いて、画像に対するピクセル値を生成するように構築される。選択された光線追跡方法は、選択された方向に沿ってピクセルから場面中に発せられた少なくとも1つの光線を含む光線ツリーの使用を含み、光線と場面中のオブジェクト(及び/又はオブジェクトの表面)との交差の算出をさらに含む。
図3の方法200において、境界ボリューム階層が、光線と場面中の曲面との交差を算出するのに使われる。ステップ201で、場面の境界ボックスが計算される。ステップ202で、所定の終了基準が満たされるかどうか判定される。満たされない場合、ステップ203で、軸平行境界ボックスが洗練される。プロセスは、終了基準が満たされるまで、再帰的に継続する。本発明の態様によると、終了基準は、境界ボックス座標が分解の一単位においてのみ光線/曲面交点の浮動小数点表現とは異なる条件として定義される。ただし、本発明の範囲は、他の終了基準にも及ぶ。
加速構造としての境界ボリューム階層の使用は、いくつかの理由で有利である。境界ボリューム階層に対するメモリ要件については、光線追跡されるべきオブジェクトの数において、線形的に境界を定めることができる。また、後で説明するように、境界ボリューム階層は、3Dツリーよりはるかに効率的に構築することができるので、境界ボリュームは、十分にアニメーション化された場面用に要求されるならし解析に非常に適している。
2.高精度光線追跡アーキテクチャ
以下の説明では、光線追跡技術における特定の問題点、及びそうした問題点に対処する本発明の特定の態様をより詳細に記述する。
2.1.自己交差問題
図4は、「自己交差」問題を示す図である。図4は、曲面302、観察点304、及び光源306を含む光線追跡手順300を示す。曲面の画像を合成するために、観察点304と曲面302との間に伸びる光線を突き止めるための一連の計算が実施される。図4は、このような1本の光線308を示す。理想的には、次いで、光線308と曲面302との間の正確な交差点310が算出される。
しかし、コンピュータでの浮動小数点の算術計算により、ときには、算出された光線/曲面の交点312が実際の交点310とは異なることがあり得る。さらに、図4に示すように、算出された点312が曲面302の「誤った」側に位置することがあり得る。その場合、算出された光線/曲面交点312から光源306に伸びる二次光線314を突き止めるための計算が実施されると、こうした計算は、二次光線314が、光源306に直接伸びるのではなく、第2の交点316の所で曲面302に当たることを示し、結果として結像エラーを生じる。
自己交差問題に対する公知の一解決法は、各二次光線314を、曲面302からの安全距離の所で開始させることである。この安全距離は通常、グローバル浮動小数点εと表現される。ただし、グローバル浮動小数点εの判定は、画像が合成中である場面、及び場面自体の中の特定の場所に重く依存する。
本発明の態様は、より正確な代案を提供する。算出された光線/曲面交点312に届いた後、算出された点312及び光線308の方向は次いで、実際の交点310により近い交点を計算し直すのに使われる。この交点の再計算は、精度を増す対話として、光線追跡技法に組み込まれる。繰返し計算された交点は、曲面302の「誤った」側にあるということになった場合、曲面302の「正しい」側に移動される。繰返し計算された交点は、グローバル浮動小数点εを用いる代わりに、曲面法線に沿って、又は法線の最長成分で判定される軸に沿って移動してよく、この点は、整数εによって、浮動小数点仮数の最終ビットに移動される。
記載する手順は、倍精度での計算を回避し、その指数で判定される、浮動小数点数の規模に暗黙的に適合するという利点をもつ。したがって、本実装形態では、すべての二次光線は、εオフセットを不必要にするこうした修正点から直接始まる。交差計算の間はしたがって、有効な光線間隔は、ある程度のオフセットではなく0で始まると仮定することができる。
仮数の整数表現を修正すると、どの点がどの側にあるか決定するために三角形と面とを交差させるときの数値問題も回避することになる。
2.1.1.浮動小数点精度の光線自由曲面交差
凸面組合せの凸包プロパティを利用すると、交差の点を含む軸平行境界ボックスを洗練することによって、光線源に最も近い、光線と自由曲面との交差を見つけることができる。この洗練は、浮動小数点数の分解に到達するまで、すなわち、境界ボックス座標が、分解の一単位においてのみ浮動小数点表現とは異なるようになるまで、継続してよい。自己交差問題は次いで、境界ボックスの中心にある曲面法線に最も接近した、境界ボックスの角を選択することによって回避される。この角点は次いで、二次光線を開始させるのに使われる。
2.2.光線−三角形交差
上述の「光線オブジェクト交差検査」は、非常に効率的であり、自己交差問題の回避から恩恵を被る。加速データ構造を構築した後、三角形は、適所で変換される。新しい表現は、縮退三角形を、交差検査が余分な作業なしで縮退三角形を扱うことができるようにエンコードする。図5は、記載する技法を実装するコードリスティング320の例を示す。当然ながら、単に縮退三角形がグラフィックスパイプラインに入るのを防止することも可能である。
検査は、最初に、光線と三角形の面との交差を判定し、次いで、光線上の有効間隔]0,result.tfar]の外側の交差を排除する。これは、ただ一度の整数検査によって達成される。+0は、有効間隔から排除されることに留意されたい。このことは、非正規化浮動小数点数がサポートされない場合に重要である。この第1の判定が成功した場合、検査は、交差の重心座標を計算することによって進む。やはり、整数検査のみ、すなわち、より具体的には2ビット検査のみが、完全な含有検査を実施するのに要求されることに留意されたい。したがって、分岐の数は最小限である。この効率的な検査を可能にするために、三角形の辺及び法線は、変換ステップにおいて適切にスケーリングされる。
検査の精度は、誤った、又は見落とされた光線交差を回避するのに十分である。ただし、横断中、堅牢な交差検査のために三角形を拡大することが適切な状況が起こり得る。これは、三角形を変換する前に行ってよい。三角形は、その法線の最長成分によって識別される軸に沿って投射されるので、この投射ケースは格納されることになる。これは、加速データ構造のリーフノード中のカウンタによって達成される。すなわち、三角形参照は、投射ケースによってソートされ、リーフは、各クラス中の三角形の数に対するバイトを含む。図6は、本発明の本態様を実装するコードリスティング340を示す。
2.3.高性能3Dツリー構築
本発明のそれ以外の態様は、光線追跡用の加速データ構造を構築する、改良された手法を提供する。異なるいくつかの最適化に従う従来のソフトウェア実装形態と比較して、本明細書において説明する手法は、優れた光線追跡性能をもつ、著しく平らなツリーをもたらす。
2.3.1.分裂面選択
分裂面の候補は、分割されるべき軸平行境界ボックスの内側にある三角形の頂点の座標で与えられる。これは、境界ボックスの外側に実際にあるが、境界ボックスによって定義される3つの間隔のうち1つの中にある少なくとも1つの座標を有する頂点を含むことに留意されたい。こうした候補から、現在の軸平行境界ボックスの長辺の中央に最も接近した面が選択される。さらに最適化することで、その曲面法線の最長成分が可能な分裂面の法線と合致する三角形の座標のみを選択する。この手順は、三角形の頂点を通って分裂面を配置すると、分裂面によって分裂される三角形の数を暗黙的に削減することになるので、はるかに平らなツリーをもたらす。さらに、曲面は厳しく近似され、空き空間は最大限にされる。三角形の数が、指定された閾値より高く、分裂面の候補がそれ以上ない場合、ボックスは、その長辺に沿って中央で分裂される。こうすることで、たとえば長対角線オブジェクトの使用を含む、他の手法の非効率性を回避する。
2.3.2.最小記憶装置構築
どの三角形が階層中のノードの左及び右の子に属すかを決定する再帰的手順は通常、広範囲な記録づけ及びメモリ割振りを要求していた。例外的なケースにおいてのみ失敗する、はるかに単純な手法がある。光線追跡されるべきオブジェクトへの参照のただ2つのアレイが割り振られる。第1のアレイは、オブジェクト参照で初期化される。再帰的空間分割中に、左にある要素のスタックが、アレイの先頭から増大され、右に分類される要素は、アレイの末尾から中央に向かって増大するスタック上に保たれる。被分裂面と交差している、すなわち、左及び右両方である要素を迅速に復元可能にするために、第2のアレイは、そうした要素のスタックを保つ。したがって、バックトラックは効率的であり単純である。
2.3.3.左バランスによるツリー剪定
表面積ヒューリスティックを用いることによってツリーの分岐を剪定する代わりに、ツリーの深さは、固定深度から始まるバイナリ空間分割の左バランスを近似的にとることによって、剪定される。網羅的実験によって観察されるように、非常に多様な場面に渡るグローバルな固定深度パラメータを指定することができる。これは、一般に一定量のバイナリ空間分割の後に、比較的平らな接続された構成要素が空間内に残ることを観察することによって理解することができよう。
2.3.4.高数値精度の三角形矩形交差
三角形の、分裂面との交差が境界ボックスの左及び/又は右区画に含まれるかどうかを決定するために、三角形−ボックス交差技法の数値的に最適化された2dバージョンが開発されている。最初に、分裂面との三角形の交差が計算される。次いで、この線が、分裂面及び境界ボックスの交差によって与えられる矩形に相対してどのように存在するかに関して、検査が実施される。図7A〜Dは、記載する技法を実装する例示的なコードリスティング360を示す。コードの明らかな複雑さに関わらず、この技法は従来の方法より効率的であり、数値的に安定している。
2.4.高性能境界ボリューム階層
境界ボリューム階層を用いて、光線追跡されるべき各オブジェクトが一度だけ参照される。その結果、3Dツリーとは対称的に、階層を横断中の、光線とのオブジェクトの多重交差を防止するためのメールボックス機構は要求されない。これは、システム性能の視点から見ると、大きな利点であり、共有されるメモリシステム上での実装をはるかに単純にする。2番目に重要な帰結は、境界ボリューム階層のツリー中に、光線追跡されるべきオブジェクトの総数より多くの内部ノードがあってはならないことである。したがって、加速データ構造のメモリフットプリントについては、構築前にオブジェクトの数において線形的に境界を定めることができる。このような先験的境界は、メモリの複雑さが、光線追跡されるべきオブジェクトの数とともに二次的に増すと予想される、3Dツリーの構築には利用することはできない。
したがって、ここでは、現在の3Dツリー光線追跡技法より大幅に速く、メモリ要件が、二次的に予想されるのではなく、光線追跡されるべきオブジェクトの数とともに線形的に増大する境界ボリューム階層の新しい概念を説明する。
2.4.1.構築
境界ボリューム階層が、3Dツリーより性能が優れるようにするコア概念は、境界ボリューム自体に注目するのではなく、空間をどのように分けることができるかに注目することである。
3Dツリーでは、境界ボックスは、単一の面によって分割される。本発明の本態様によると、2つの並列面が、2つの軸平行境界ボックスを定義するのに使われる。図8は、主要データ構造400を示す図である。
図8は、軸平行境界ボックス402を、正面図で示す。互いに軸平行であり並列であるL面404及びR面406が、境界ボックス402を左及び右軸平行境界ボックスに分割するのに使われる。左境界ボックスは、元の境界ボックス402の左側面408からL面404へ伸びる。右境界ボックスは、R面406から元の境界ボックス402の右側面410へ伸びる。したがって、左及び右境界ボックスは互いに重なり得る。光線412の横断は、光線412の有効間隔[N,F]414に相対した、L及びR面404、406との交差の位置で判定される。
図8において、データ構造400、L及びR面404、406は、境界ボックス402内に含まれる空間ではなく、元の境界ボックス402内に含まれるオブジェクトの組を分割するように、互いを参照して位置決めされる。3Dツリー区画とは対称的に、2つの面をもつと、2つの面の間の空き空間を最大限にする可能性がもたらされる。したがって、場面の境界は、はるかに速く近似することができる。
図9〜11は、データ構造400をさらに示す一連の3次元図である。図9は、境界ボックス402の図を示す。説明のために、境界ボックス402内の仮想オブジェクトが、抽象的な円416として示される。図10、11に示すように、L面404及びR面406は次いで、境界ボックス402を左境界ボックス402a及び右境界ボックス402bに分割する必要がある。L及びR面は、その間の空き空間が最大限にされるように選択される。各仮想オブジェクト416は結局、左境界ボックス402a又は右境界ボックス402bどちらかに入る。図11の一番下に示すように、仮想オブジェクト416は、「左」オブジェクト416a及び「右」オブジェクト416bに分割される。結果として生じた境界ボックス402a及び402bはそれぞれ、それ自体が、終了基準が満足されるまで、分割されるなどの処理を受ける。
図12は、記載する方法500のフローチャートである。ステップ501で、場面の境界ボックスが計算される。ステップ502で、並列L及びR面が、軸平行境界ボックスを、重なり得る左及び右軸平行境界ボックスに分割するのに使われる。ステップ503で、左及び右境界ボックスは、元の軸平行境界ボックスとともに含まれる仮想オブジェクトの組を1組の左オブジェクト及び1組の右オブジェクトに分割するのに使われる。ステップ504で、左及び右オブジェクトは、終了基準が満たされるまで再帰的に処理される。
初期の実装において使われた1つの分裂パラメータの代わりに、2つの分裂パラメータがノード内に格納される。ノードの数は、光線追跡されるべきオブジェクトの数によって線形的に境界を定められるので、すべてのノードからなるアレイは、一度割り振ればよい。したがって、コストのかかる、構築中の3Dツリーのメモリ管理は不必要になる。
この構築技法は、3Dツリー構築の類似技法よりはるかに単純であり、再帰的なやり方で、又は反復バージョン及びスタックを使うことによって、簡単に実装される。オブジェクトのリスト及び軸平行境界ボックスを与えられると、L及びR面が判定され、それに従ってオブジェクトの組が判定される。左及び右オブジェクトは次いで、何らかの終了基準が満たされるまで再帰的に処理される。内部ノードの数は境界を定められるので、ただ1つのオブジェクトが残っているときの終了に依拠することが安全である。
分割は、x、y、及びz軸に垂直な面に沿ったオブジェクトのソートにのみ依拠し、これは非常に効率的であり、数値的に絶対的に安定していることに留意されたい。3Dツリーとは対称的に、よりコストがかかるとともに数値的に堅牢なやり方では達成しにくい、分裂面とのオブジェクトの正確な交差は計算される必要がない。見落とされた三角形など、頂点での、且つ辺に沿った3Dツリーの数値問題は、境界ボリューム階層の構築の前に三角形を拡大することによって回避することができる。また、3Dツリーでは、重なり合うオブジェクトは両方とも、左及び右軸平行境界ボックスにソートされなければならず、そうすることによって、予想されたツリーの二次成長を引き起こす。
2.4.1.1.分裂面の発見
L及びR面、したがって実際のツリーレイアウトを判定するのに、様々な技法を用いることができる。図9〜11を参照すると、ある技法では、上述した3Dツリー構築技法を用いて面M418を判定し、新しい軸平行境界ボックスの、結果として生じたL面及びR面の重複が、提案された分裂面M418と最小限に重なるようにオブジェクトを分割する。結果として生じたツリーは、対応する3Dツリーと非常に類似しているが、空間よりもむしろオブジェクトセットが分割されるので、結果として生じたツリーは、はるかに平らである。別の手法では、可能であれば子ボックスの重複が最小限になるとともに空き空間が最大限になるように、R面及びL面を選択する。
2.4.1.2.非効率軸平行境界ボックス
一部のオブジェクトにとって、軸平行境界ボックスは非効率的であることに留意されたい。このような状況の例は、軸平行境界ボックスの対角線上に小半径をもつ長い円柱である。
図13は、本発明の本態様による方法600のフローチャートである。ステップ601で、場面の境界ボックスが計算される。ステップ602で、分裂面Mを判定するために、3Dツリー構築が実行される。ステップ603で、並列L及びR面が、軸平行境界ボックスを、分裂面Mと最小限に重なる左及び右軸平行境界ボックスに分割するのに使われる。ステップ604で、左及び右境界ボックスは、元の軸平行境界ボックス内に含まれる仮想オブジェクトの組を、1組の左オブジェクトと1組の右オブジェクトに分割するのに使われる。ステップ605で、左及び右オブジェクトは、終了基準が満たされるまで再帰的に処理される。図13に示される方法600、並びに図3に示される方法200は、3Dツリー構築、リアルタイム処理、バケットソート、自己交差などに関する技法を含む、本明細書において説明する他の技法と組み合わせてよいことに留意されたい。
3Dツリーのケースにおいて、オブジェクトの周りの空間の空き部分を取り除くように、空間細分が継続される。記載する境界ボリューム階層のケースでは、このようなオブジェクトをより小さいものに分割すると、結果として、同様の挙動を生じる。メモリ要件の予測可能性を維持するために、最大境界ボックスサイズが定義される。最大境界ボックスサイズを超える限度をもつすべてのオブジェクトは、要件を満たすようにより小さい部分に分裂される。最大許容サイズは、すべてのオブジェクトの中での極小限度を求めてデータセットを走査することによって見つけることができる。
2.4.2.横断
本明細書において説明するデータ構造は、高速3Dツリー横断の原理を、境界ボリューム階層に転嫁させる。横断のケースは類似しており、(1)左の子のみ、(2)右の子のみ、(3)左の子、次いで右の子、(4)右の子、次いで左の子、又は(5)光線は被分裂面の間(すなわち、空き空間)にある。記載する技法における1つのノードは2つの並列面によって分裂されるので、どのようにボックスを横断するかという順序は、光線方向によって判定される。図14A〜Cは、上述した技法を組み込むソースコードリスティング610を示す。
従来の境界ボリューム階層技法は、どのように子ノードを横断するかという順序も、ヒープデータ構造のアップデートなど、要求される追加作業も効率的に判定することができなかった。さらに、境界ボリューム全体がロードされ、光線に対して検査されなければならなかったが、本手法は、2つの面距離を要求するのみである。ただし、ソフトウェアでの2つの面と突き合わせた光線の調査は、よりコストがかかると思われる。横断は3Dツリーにおけるボトルネックであり、より多くの何らかの計算をここで行うと、メモリアクセスの待ち時間をより一層隠す。さらに、境界ボリューム階層ツリーは、同じ性能の対応する3Dツリーよりはるかに小さくなる傾向がある。
本明細書では、新しい境界ボリューム階層を説明するが、3Dツリーの横断とは強いつながりがある。すなわち、L=Rとセットすると、古典的なバイナリ空間分割が得られ、横断アルゴリズムは、3Dツリー向けの横断アルゴリズムとなる。
2.4.3.オンザフライ境界ボリューム構築
記載する境界ボリューム階層は、自由曲面を細分することによって、自由曲面交差を効率的に見つけるのにも適用することができる。そうすることにより、凸包プロパティ及び細分アルゴリズムをもつ自由曲面の交差が、実際の浮動小数点算術に応じて、浮動小数点精度まで効率的に計算されるようになる。たとえば、多項式曲面、有理曲面、及び近似細分曲面に対して、細分ステップが実施される。空間中の各軸ごとに、重なる可能性がある境界ボックスが、新しいメッシュの新しい境界ボックスに対するバイナリ細分、Lボックスの交差、及びRボックスの交差のケースにおいて、上述したように判定される。ここで、ボックスの空間順序は既知なので、上述の横断は、効率的に実施することができる。境界ボリュームの階層は、予め計算するのではなく、オンザフライで計算してよい。この手順は、自由曲面に対して効率的であり、加速データ構造用にメモリを節約できるようにし、この構造は、バックトラックによって横断されなければならない境界ボリュームの小スタックで置き換えられる。細分は、光線曲面交差が、浮動小数点精度での点又は小さいサイズの間隔となる境界ボリューム内にあるようになるまで継続される。付表のセクション2.1.1で、本発明の本態様によるコードリスティングを説明する。
2.5.基数ソート処理
規則的なグリッドを光線追跡において加速データ構造として使うことは単純だが、空間適合性がないこと、及び後に続く多くの空きグリッドセルの横断により、効率が落ちる。階層状の規則的グリッドは、こうした状況を改善し得るが、やはり、境界ボリューム階層及び3Dツリーに比較して劣っている。階層状の規則的グリッドは、加速データ構造の構築速度を向上するのに使うことができる。加速データ構造を構築する技法は、クイックソートと同様であり、O(n log n)で稼動すると予想される。線形時間で稼動するバケットソートを適用することによって、改良を得ることができる。したがって、オブジェクトの軸平行境界ボックスは、n×n×n個の軸平行ボックスに分割される。各オブジェクトは次いで、選択された一点によって、こうしたボックスのうちただ1つにソートされ、たとえば、各三角形の重心や第1の頂点を使ってよい。次いで、各グリッドセル中のオブジェクトの実際の軸平行境界ボックスが判定される。こうした軸平行境界ボックスが、ボックスが区画面の1つと交差しない限り、ボックスが含むオブジェクトの代わりに使われる。そのケースでは、ボックスはアンパックされ、代わりに、ボックス内のオブジェクトが直接使われることになる。この手順は、たくさんの比較及びメモリアクセスを節約し、一定した順序の構築技法を著しく向上し、再帰的に適用することもできる。上記技法は、オブジェクトのストリームを処理することによって実現することができるので、特にハードウェア実装向けである。
2.5.1.オンデマンドでの構築
加速データ構造は、オンデマンドで、すなわち、オブジェクトを有する具体的な軸平行境界ボックスを光線が横断しているときに構築することができる。次いで、一方では加速データ構造は、光線には見えない空間の領域内で決して洗練されることはなく、キャッシュは、決して触れられることのないデータによって汚染されない。他方では、洗練の後、光線が交差する可能性があるオブジェクトは、既にキャッシュの中にある。
3.リアルタイムの高精度光線追跡技法の要約
上記考察から、本発明は長く公知であった、光線追跡における問題点に対処し、精度、全体的速度及び加速データ構造のメモリフットプリントが向上した光線追跡のための技法を提供することが分かるであろう。数値精度における向上は、たとえば、ART光線追跡チップのハードウェアにおいて用いられる対数記数法と同様に、他の記数法にも伝わる。プロセッサ又は専用ハードウェア上でのIEEE浮動小数点標準の具体的な実装は、性能に深刻に影響し得ることに留意されたい。たとえば、Pentium4チップ上では、非正規化数は、性能を100倍以上低下させ得る。上述したように、本発明の実装形態は、こうした例外を回避する。本明細書において説明する境界ボリューム階層のビューにより、階層はリアルタイムの光線追跡に適したものとなる。ならし解析において、記載する技法は、従来の現況技術より性能が優れており、したがって、たとえば、製造時設定などでのように、十分にアニメーション化された場面におけるモーションブラーを計算する、より正確な技法を用いることができるようになる。上記考察から、3Dツリー及び他の技法と比較したとき、特にハードウェア実装形態において、且つ巨大な場面にとって、記載する境界ボリューム階層には大きな利点があることが明らかであろう。ならし解析では、記載する境界ボリューム階層は、現在の3Dツリーより性能が少なくとも2倍は優れている。さらに、メモリフットプリントは、予め判定することができ、オブジェクトの数が線形である。
4.追加技法
上述の技法に加えて、本発明のそれ以外の態様による他の技法が、光線追跡システムの性能を向上させるのに用いることができる。本発明のこうした態様は、以下を含む。
4A.半空間の切取りによる境界ボリューム階層の構築
4B.4つの軸平行面による軸平行境界ボックスのクリップ
4C.加速データ構造の高性能セットアップ
4D.効率的なツリー空きノード判定
4E.束横断
本発明の態様をそれぞれ、以降でさらに詳しく説明する。
4A.半空間の切取りによる境界ボリューム階層の構築
半空間を切り取ることによって、境界ボリューム階層を構築することが可能である。軸平行境界ボックスと交差する半空間を用いると、元の境界ボックス及び所与の半空間との交差から生じる新しい境界ボックスによって、境界ボリューム階層が与えられる。
図15は、記載する技法を例示する図を示す。図15において、軸平行面622が交差する境界ボックス620。面622は、元のボックス620のサブセットである、より小さい軸平行ボックス624、すなわち半空間を定義する。クリップされることになる、元のボックスの一部は、クリッピング面622の法線によって判定される。光線横断中、3つのケースが判定されなければならない。光線上の有効な間隔[N,F]は、(1)元のボックス620のみ、(2)最初に元のボックス620、次いでクリップされたボックス624、又は(3)最初にクリップされたボックス624、次いで元のボックス620と交差する。
記載する技法は、場面の軸平行境界ボックス及び半空間から構築された境界ボリューム階層を表すために、再帰的に適用することができる。2分木が、階層を表すのに使われる。ツリーの内部ノードは、半空間を表す。
記載する技法は、上述した技法としての利点の多くをもたらす。さらに、ノードのメモリフットプリントは、より小さい。図16は、記載する技法を実施する例示的なコードリスティング630を示す。リーフは、投射軸の第4のケースを用いてエンコードすることもでき、すなわち、コード例では使われていないが、ビット0、1は「1」であることに留意されたい。
境界ボリューム階層との光線の交差は深さ優先で行われ、各ノードでは、上述した3つのケースのみを見分ければよい。光線の有効間隔は、(1)元の境界ボックスのみ、(2)最初にクリップされたボックス、次いで元のボックス、又は(3)最初に元のボックス、次いでクリップされたボックスと交差する。
図17A〜Dは、境界ボリューム階層を通る、1本の光線の追跡を実装するコードリスティング640の例を示す。効率性のために、この実装では、空きリーフノードを訪れることを回避する。空きリーフノードを訪れると、効率を犠牲にするが実装は単純になる。
用いられる三角形検査は、高度に最適化される。ただし、他のどの三角形光線交差検査も用いてよい。
4B.4つの軸平行面による軸平行境界ボックスのクリップ
図18は、本発明のそれ以外の態様による技法を例示する図を示す。図18において、軸平行境界ボックス650が、4つの軸平行面LeftBoxL、RightBoxL、LeftBoxR及びRightBoxRによってクリップされており、結果として、左の子ボックス及び右の子ボックスを生じる。左の子ボックスの左及び右境界は、面LeftBoxL及びLeftBoxRで定義される。右の子ボックスの左及び右境界は、面RightBoxL及びRightBoxRで定義される。光線横断中、5つのケースが判定されなければならない。光線上の有効な間隔[N,F]は、(1)左の子ボックスのみ、(2)右の子ボックスのみ、(3)最初に左の子ボックス、及び右の子ボックス、(4)最初に右の子ボックス、次いで左の子ボックスと交差し、又は(5)左の子ボックスとも右の子ボックスとも交差しない。
階層は2分木として表され、2分木では、選択された軸に沿った2つの間隔を各ノードが指定する。古典的な境界ボリューム階層実装とは反対に、子ノードの順序づけが可能であり、十分な軸平行境界ボックスを格納する必要はない。先行セクションで説明した技法と比較して、単一のノードが、より多くのメモリを必要とする。ただし、特殊なケースの空きノードが起こることはない。全体として、メモリはほぼ同じままである。
図19は、記載する技法を実施する例示的なコードリスティング660を示す。リーフは、投射軸の第4のケースを用いてもエンコードでき、すなわち、コード例では使われていないが、ビット0、1が「1」であることに留意されたい。
図20A〜Cは、上記データ構造を使って構築されたツリーを用いた横断の実装の例示的なコードリスティング670を示す。図示する実装は、特定の最適化を含んでいない。たとえば、ノードによって定義される間隔の1つが、指定された軸に沿った他の間隔を完全に含み得るとき、より効率的な横断では、光線方向が横断するべき第1のノードを選択するだけでなく、間隔自体の相対的な位置によってもそのケースを検討する。この最適化は比較的明快なので、本例には含めていない。
4C.加速データ構造の高性能セットアップ
ツリー加速データ構造のセットアップ手順は暗黙的に、三角形の数nにおいて計算時間がO(n log n)だけかかるソートアルゴリズムを呼び出す。基数、バケット、及び関連したソートアルゴリズムのみが、より低次の計算時間量を得る。
下のセクションIIでは、迅速なツリーセットアップ手順が開発される瞬時光線追跡技法を説明する。こうしたセットアップ手順は実際には、上述したデータ構造をすべてセットアップするために使われていた。後で説明するように、階層状にも用いることができる、すなわち、規則的なグリッドの階層を用いるバケットソート前処理を説明する。後でさらに説明するように、ローカルなものではなく、グローバル細分基準が用いられる。
このセットアップルーチンは、kdツリー及び境界ボリューム階層にとって迅速である。記載する技法は、上のサブセクション4B.にある階層のセットアップには特に効率的である。記載する技法では、左オブジェクトから右を分離するだけでなく、実際には右及び左オブジェクトに渡る間隔の境界を定めるので、たくさんの候補分裂面がただちに拒否される。したがって、階層はより平らになり、その上横断するのにより効率的である。こうした最適化は比較的明快なので、ここでのコードリスティング例には含めていない。
セクション4Bでのような、軸に沿った間隔の特定は、こうした間隔の外側にある光線の効率的な拒否を認め、さらに、他の軸の上の空きボリュームの効率的な切取りも認める。これは、階層のリーフノード中のクリップボリュームを特定することによって行うことができる。単純なヒューリスティックでは、リーフノードの空きボリュームが一定の閾値を上回る場合、リーフ中に境界ボックス検査を挿入する。或いは、セクション4Bで説明した技法のケースでは、最大限に見落とされる2つの軸の検査を挿入してよい。
後でさらに説明するように、加速データ構造はオンデマンドで構築することができ、光線が横断するツリーの一部のみが構築されることを意味する。要求されるデータは、予備リーフノードに簡単に格納される。セクション4Bで説明した技法を検討すると、重複を最小限にする代わりに、空き空間を最大限にすることも可能である。
4D.効率的なツリーエントリノード判定
所与の1組の光線に対して、軸平行境界ボックスは、比較的多くのプロパティが分かっている場合、光線の数において線形時間で判定することも、一定の時間でも判定することもできる。この境界ボックスの場合、分裂面の片側にあるのか、それとも分裂面と交差するのか判定することが、比較的明快であり数値的に堅牢である。この技法は、上述したように加速データ構造を下向きに横断するための再帰的手順で用いることができる。ボックスが、ツリーの内部ノードによって識別される分裂面の片側にある場合、この分岐は、さらに横断するために使われる。リーフノード又は光線境界ボックスと交差する面に遭遇すると、このノードは、光線の束に対する共通エントリノードとして識別される。次いで、加速データ構造のルートノードから光線を横断するのではなく、横断は、エントリノードから始めればよい。
この技法の利点は、すべての光線を分裂面と交差させるのではなく、ただ1つの境界ボックスが、分裂面に対して検査され、したがって、たくさんの算術計算を省く。
記載する技法は、一貫した方向ではなく、ごくわずかの空間をとる光線束に依拠するが、これは、特に二次光線の場合ははるかに達成しにくい。他の技法より、実装するのは単純であり、より一般的である。
4E.束横断
本発明のそれ以外の態様によると、異なる加速構造を通る光線の束を同時に追跡するのに、命令が使われる光線束交差ルーチンが実装されている。この実装は、3dツリー中の横断される光線束に由来する。導入される最適化は、記載する境界ボリューム階層表現とともに用いてもよいことに留意されたい。
II.瞬時光線追跡
ここで、加速データ構造を瞬時に構築させる光線追跡技法及びシステムを説明する。記載する技法及びシステムは、ローカル基準に基づく従来の技法を大幅に改良するグローバルヒューリスティックに基づく。速度以外に、記載する技法及びシステムには、従来の技法に比較して、いくつかの利点がある。記載する技法及びシステムは、実装するのがより単純であり、より高い数値精度を呈し、従来の技法によって使われるメモリのごくわずかを使う。記載する技法及びシステムは、大規模且つ動的な場面への広範囲な適用によって証明されている。
本説明は、以下のセクションに編成される。
1.概論
上述したように、光線追跡は、グローバルな照度シミュレーションによる、写真のようにリアルな画像合成におけるコア技法である。この技法は、他の多くのシミュレーション方法の基礎でもある。最近は、リアルタイムの光線追跡が利用可能になっている。現在の光線追跡アルゴリズムは、場面形状の分析に基づいて前もって構築される追加データ構造に効率性を負っている。追加データ構造の構築は通常、かなりの量の処理時間及びメモリを要求する。したがって、前処理は通常、静的であり又は適度なダイナミクスを含む環境に対してのみ償却している。
ソフトウェア光線追跡は、大規模形状の場合、ハイエンドのグラフィックス画像合成ハードウェアと競合し得る。さらに、光線追跡の加速データ構造は、ラスター化の性能を高めるのに用いることができる。ただし、ラスタライザで描画する即時モードに比較して、加速データ構造の構築時間及びメモリフットプリントは法外であった。
ここでは、従来の技法を用いて構築されたデータ構造よりはるかに効率的に構築することができる、光線追跡のための階層状加速データ構造を説明する。この手順は、動的場面の対話型光線追跡をモノプロセッサシステム上でさえも利用可能にさせるのに、十分に迅速であることが証明されている。
図21A〜Dは、本明細書において説明する光線追跡技法を用いて、単一のプロセッサ上において対話速度で生成されたアニメーション及び対話型アプリケーションからの一連の画像701〜704を示す。図21Dは、Quake II(Idソフトウェア、www.idsoftware.com)からの場面を示す。本明細書において説明する技法を適用すると、Quake IIは、1つの影、反射、及び透明度をもって、デュアルコアプロセッサ上で滑らかに再生できることが分かっている。
2.加速光線追跡の原理
概して、「場面」とは、3次元空間内でのオブジェクトの配置である。光線追跡における基本的タスクは、場面中でのオブジェクトとの各光線の交差の最接近点をサーチすることである。概して、画像合成のために極めて多数の光線を追跡するとき、場面中のオブジェクトすべてとの各光線の交差を検査することは、効率的でない。したがって、この検査は通常、場面をいくつかの区画に分裂する追加データ構造を構築することに償却する。場面が分割されると、実際の交差検査からの場面中のオブジェクトのほとんどを排除する、しばしばバックトラックサーチである区画レベルのサーチを指揮することができる。
場面を分割するための2つの基本的手法が、現在使われている。第1の手法は、空間分割に基づき、それによると場面は、同じ場面であってもなくてもよい、1組の互いに素のボリューム要素に分割される。第2の手法は、オブジェクト列挙に基づき、それによると場面は、場面中に含まれるオブジェクトのリストからなる階層に分割される。こうした2つの手法を、以下のサブセクションで手短に述べる。後でさらに論じるように、加速データ構造の構築コストの償却は別にして、単光線の追跡だけでなく光線の集団の追加コストも償却し得る状況がある。
2.1.空間の分割に基づく加速光線追跡
オブジェクトを含む空間は、互いに素のボリューム要素に分割される。光線が交差するボリューム要素を数え上げ、次いで交差に対する数え上げられたボリューム要素中のオブジェクトを検査することによって、効率が達成される。空間分割の主たる不利な点は、オブジェクトがしばしば、複数のボリューム要素との空でない交差を有し、したがって、一度よりも多く参照されることである。この冗長性は結果として、巨大なメモリフットプリントを生じ、同じ幾何オブジェクトとの単光線の多重検査された交差から起こる性能損失を回避するためのメールボックス機構を要求し得る。
空間を分割する際、結果として生じたボリューム要素は、規則的なグリッドを形成し得る。或いは、たとえば、バイナリ空間分割方式を用いて、空間を、ボクセル(ボリュームセル)及び下位ボクセルの階層状ツリーに分裂することができる。各手法について順に論じる。
2.1.1.規則的なグリッドを使った空間分割
規則的なグリッドに基づく分割では、空間は、同一の矩形軸平行ボリュームのラスターに分割される。この規則的な構造により、所与の光線に沿ったボリューム要素を数え上げる単純な技法が可能になる。各ボリューム要素は、それが交差するオブジェクトのリストを含む。したがって、数え上げられたボリューム要素中の、列挙されたオブジェクトのみが、光線との交差に関して検査される。
加速データ構造のメモリフットプリントは、先験的に(すなわち、前もって)判定することができない。オブジェクトは、グリッド中の多数のボリューム要素と交差してよいので、空間が分割されオブジェクトが列挙されるまで、メモリフットプリントを判定してはならない。したがって、動的メモリ管理が要求される。データ構造は、オブジェクトをラスター化することによって構築される。ラスター化は通常、浮動小数点算術の有限精度により数値的に信頼できない、オブジェクト−ボリューム交差ルーチンの変形を用いて実施される。オブジェクトの境界ボックスのラスター化は数値的に安定しているが、メモリフットプリントを増大させる。
規則的なグリッド手法の効率は、特に大規模場面中で空きボリューム要素を横断するとき、深刻な影響を被る。この問題に対する一解決策は、空き空間をより速く横断させながら、依然として一ボリューム要素につき適度なオブジェクト数をもつ階層状グリッドを使うことである。ただし、階層のレベルの切換えは、計算コストが高く、他の空間的適合方式でより効率的に達成することができる。
2.1.2.バイナリ空間区画
バイナリ空間区画は、階層状のデータ構造である。一般的な考え方は、任意の分裂面を用いて場面空間を細分することである。任意の第1の面が、場面空間を2つのセルに分けるのに使われる。任意の追加面が、2つのセルをそれぞれ、サブセルに適合的に分けるのに使われる。このプロセスは、バイナリサーチツリーを生成するために再帰的に繰り返される。生成されたサーチツリーの各リーフセルは、リーフセルと交差するオブジェクトのリストを含むボリューム要素である。
バイナリ空間分割方式は、空きボリューム要素によって引き起こされる規則的なグリッドの効率の問題点を克服するのを助ける。ポリゴン場面では、分裂面の場所の明らかな選択は、ポリゴン自体によって判定される面を使う。ただし、現時点では、これを最適に行うやり方が公知ではなく、ランダムアルゴリズムが、場面中のオブジェクトの数に基づく二次サイズのツリーをもたらすと予想される。
「k次元ツリー」、又は「kdツリー」として知られるタイプのツリーは、バイナリ空間分割を、正準軸に垂直な面のみを使うように制限する。細分面のすべての法線は、正準軸のうち1つの軸の単位ベクトルと一致するので、スカラー積及びオブジェクト−ボリューム要素交差検査は、軸平行でないバイナリ空間分割方式を用いて得ることができるより効率的且つ数値的に堅牢になる。細分のためのヒューリスティックとともに、光線追跡を加速するkdツリーが使われて成功を収めてきた。ただし、ボリューム要素がオブジェクトとどのように交差するかという判定は、数値問題点を残している。
すべての空間分割方式でのように、kdツリーベースの方式では、オブジェクトは複数のボリューム要素中に存在してよい。多重参照の数は、オブジェクトの頂点を通る、又は軸平行境界ボックスの辺を通る面の分割のみを認めることによって効果的に削減することができるが、参照の数については、先験的に効率よく境界を定めることができない。したがって、メモリ管理が、階層の構築中の問題点となる。メモリの推定及び割振りのために用いられる公知のヒューリスティックは、一部の場面に関してあまりにも悲観的である場合もあり、さらに悪いことには、メモリフットプリントが構築フェーズ中に増大した場合、結果として、様々な再割振りを生じる場合もある。こうした再割振りは、結果として、大きな性能損失を生じ得る。
2.2.オブジェクトリストの分割に基づく加速光線追跡
オブジェクトのリストを分割するとき、各オブジェクトは、多くとも一度参照されたままであり、したがって、メモリ要件を先験的に予測することが可能である。さらに、各オブジェクトは、与えられた光線と、多くて一度交差する。したがって、メールボックスは冗長になる。ただし、回避不可能な帰結として、オブジェクトのグループを内包するボリュームはしばしば、互いに素になることはできない。
2.2.1.境界ボリューム階層
境界ボリューム階層とは、場面中のオブジェクトが軸平行ボリューム要素によって境界を定められるタイプの分割方式である。メモリ要件については、オブジェクトの数に基づいて線形的に、先験的に境界を定めることができるので、境界ボリューム階層は、業界で共通して使われる。境界ボリューム階層の実装は、オブジェクト−面交差ルーチンを要求しない。その結果、階層は、空間分割方式よりも実装するのが容易である。軸平行矩形境界ボリューム要素を使うと、最小限/最大限の操作のみが使われる際の構築中のどの数値安定性問題点も回避される。
境界ボリューム階層のボトムアップ及びトップダウン構築両方に対するヒューリスティックが存在する。通常のヒューリスティックでは、全体的ボリューム又はすべての境界ボリューム要素の面積を最小にする。こうした線に沿った正確な最適化手順はひどく遅い。現時点では、どの構築技法が最も効率的であるかは明らかでない。
厳しい性能ペナルティは、空間区画とは対称的に、境界ボリューム要素は空間的に順序づけられないことに起因する。したがって、一般にはすべての子ノードには光線が交差しなければならず、早い段階での剪定は不可能である。
2.3.加速光線追跡のための現在の手法の要約
容易性、数値堅牢性、及び予測可能なメモリフットプリントにより、境界ボリューム階層は、加速光線追跡にとって魅力的な選択となる。ただし、現在の性能は、kdツリーを用いて得られるものとはほど遠い。加速データ構造の構築中に起こる、概して予測不可能なメモリ要件及び数値問題点を犠牲にして、kdツリーは、静的及び適度に動的な場面に対するリアルタイムの性能を得るのに用いることができる。
両方の主要手法、すなわち、空間分割又はオブジェクトリストどちらかに基づく手法は、リアルタイムとはほど遠く、貪欲アルゴリズムを用いる構築ルーチンの影響を被る。最も成功した実装、すなわち表面積ヒューリスティックでさえも、極めて時間がかかる。このヒューリスティックは、場面形状及び回転の大量の分析を要求するので、複合メッシュのための加速データ構造の構築は、おそらく数分から数日に及び得る。
現在の技法を用いると、データ構造構築時間を、静的場面、非常に適度なダイナミクス、又は変形に対して償却する点まで削減することが可能である。ただし、構築時間は、十分に動的な設定では、償却するのがはるかに難しい。十分に動的な場面を扱うための現在の試みは、すべての欠点を合わせて規則的なグリッドに基づく手法を使い、適度な複雑さの場面に対してのみ効率的である。
3.境界間隔階層
本発明の態様は、「境界間隔階層」に基づく技法を提供し、この技法は、静的及び動的場面両方に対して大幅な速度増加をもたらし、はるかに高い数値精度を特徴とし、メモリフットプリントを先験的に固定させる。記載する技法は、したがって、空間分割及びオブジェクトリストの分割の利点を組み合わせる。十分に最適化された最新の2つのkdツリーベースのレイトレーサとの比較は、記載する技法が、ほとんど場面に対して、合計描画時間及び全体的メモリ消費両方において、kdツリーベースの技法より2倍以上性能が優れ得ることを示す。記載する技法を用いて得られる結果の一部が、後で論じる図37に示すテーブルに記載されている。
3.1.データ構造
データ構造中の各ノードごとに、境界間隔階層は、x、y、又はz軸の1つに対して、その軸に垂直な2つの並列面を格納する。対照的に、古典的な境界ボリューム階層では、十分な軸平行境界ボックスが各子ごとに格納される。
記載する本技法によると、境界ボックス及び選択された軸を与えられると、選択された軸に沿った最大値をL分裂面で置き換えることによって、左の子Lが生成される。右の子Rは、選択された軸に沿った最小値をR分裂面で置き換えることによって生成される。
したがって、生成されたL子の左側は、親境界ボックスの左側から継承されることになり、L子の右側は、L分裂面となる。R子の左側はR分裂面となり、R子の右側は、親境界ボックスの右側から継承されることになる。後でより詳細に説明するように、L子及びR子は、重なっても重ならなくてもよい。分裂面の配置が結果として、ゼロボリュームをもつ子を生じる場合、ゼロボリュームは、空の子を表すのに使われる。後で論じるように、記載する技法は、空きリーフノードの格納を省略する。
図22A〜E、23A〜Dは、バイナリ空間分割技法と境界間隔階層との間の違いを示す一連の図である。図22Aは、この場合三角形である6つの幾何基本要素オブジェクト721〜726を含む境界ボックス720を示す。光線730が、境界ボックス720を横断する。
図22Bは、バイナリ空間分割技法の使用を示す。中心分裂面740が、境界ボックス720をL子とR子に細分するのに使われる。図22Bに示すように、オブジェクト721、722は全体がL子に含まれ、オブジェクト725、726は全体がR子に含まれる。ただし、2つの中央オブジェクト723、724は分裂面と交差し、したがってL子及びR子両方と交差することが分かるであろう。中央オブジェクト723、724はしたがって、L及びR子ボリューム要素両方において参照される。
図22Cは、本発明による境界間隔階層技法を用いて細分されている図22Aの境界ボックスを示す。境界ボックス720中の基本要素オブジェクト721〜726はそれぞれ、候補分裂面に相対した位置に基づいて、左オブジェクト又は右オブジェクトとして分類される。後で論じる本発明のそれ以外の態様によると、候補分裂面の場所は有利には、ローカルにではなくグローバルな場面レベルで判定することができる。オブジェクトに候補分裂面が交差するとき、オブジェクトは、面のどちら側とオブジェクトが最も交差するかに応じて、左又は右として分類される。
オブジェクトがすべてLオブジェクト又は右オブジェクトとして分類されると、軸平行L分裂面が、選択された軸に従って、Lオブジェクトの最大、すなわち右端の点に配置される。同様に、軸平行R分裂面が、選択された軸に従って、Rオブジェクトの最小、すなわち左端の点に配置される。図22Dにおいて、L分裂面は、角括弧750で表され、R分裂面は、角括弧752で表される。L及びR分裂面は、境界ボックス720を、本例において重なるL子とR子に分裂する。
上述したように、L子の左側は、親境界ボックス720の左側から継承され、L子の右側はL分裂面750である。同様に、R子の左側はR分裂面752であり、R子の右側は親境界ボックス720から継承される。分かりやすくするために、結果として生じるL子及びR子は、図22D、22Eにおいて別々に描いてある。
図23A〜Dは、バイナリ空間分割方式と境界間隔階層との間の違いを示す第2のケースを例示する。図23Aは、いくつかのオブジェクト761〜766を含んで示される境界ボックス760の図を示す。光線770が、境界ボックス500と横断する。
図23Bは、バイナリ空間分割方式の適用を示す。境界ボックスは、中心分裂面780によって、隣接するL及びR子ボリューム要素に分けられる。この例では、含まれるオブジェクト761〜766のどれも、分裂面780と交差しない。ただし、光線770は、L及びRセル両方の中の大量の空き空間を横断することが分かるであろう。
図23Cでは、境界間隔階層手法が適用される。オブジェクトは、候補分裂面に相対した位置に基づいて、L又はRオブジェクトとして分類される。ここで、中央に配置された候補分裂面を仮定すると、オブジェクト761〜763は明らかに中心の左にあり、オブジェクト764〜766は明らかに中心の右にあるので、分類プロセスは明快である。L分裂面790は、Lオブジェクトの最大、すなわち右端の点に配置され、R分裂面792は、Rオブジェクトの最小、すなわち左端の点に配置される。
繰返しになるが、L子の左側は親境界ボックス760の左側から継承され、L子の右側はL分裂面790である。同様に、R子の左側はR分裂面792であり、R子の右側は親境界ボックス760から継承される。分かりやすくするために、結果として生じたL子及びR子は、図23Dでは別々に描いてある。
図23Dに示すように、この例では、2つのセルの間に空き空間794がある。図23Bに戻ると、バイナリ空間分割技法では、4つの横断ケースのみ、すなわち左のみ(L)、右のみ(R)、左、次いで右(LR)、及び右、次いで左(RL)が、説明される必要があることが分かるであろう。ただし、図23Dに示すように、境界ボリューム階層を構築する際、説明される必要がある第5のケース、すなわち「空きボリューム」のケースがある。ただし、境界間隔階層は、個々のセル内で処理される空き空間の量を削減するので、結果として、計算コストの大幅な節約をもたらすことが理解されよう。
したがって、図22A〜E、23A〜Dから、記載する技法は、第1に、オブジェクトと分裂面との間の交差をなくすことによって、第2に、子ボリューム要素中の空き空間の量を大幅に削減することによって、現在使われているバイナリ空間分配技法よりも大幅に向上することが分かるであろう。
図24Aは、上述の技法とともに使用するためのデータ構造を定義する例示的なコードリスティング800を示し、図24Bは、データ構造の12バイトのメモリレイアウト810を示す。ツリーの内部ノードは、(1)境界間隔を定義する2つの分裂面812、814及び(2)1対の子へのポインタ816によって記述される。これは合計で12バイトになるので、すべてのノードが、4バイトの境界上に整列され、この整列により、軸(00:x,01:y,10:z)又はリーフを示すのに、子ポインタの下位2ビット818、820を使用できるようになる(ケース11)。リーフノードは、参照されるオブジェクト822及びその全体数824への32ビットポインタを含む。リーフノード中の4バイトのオーバーヘッド826は、ノードデータ構造のうち8バイトのみを使用するので、注意深く実装することによって解決することができる。12バイトのメモリレイアウト及び32ビットポインタの使用を含む、図示されるコードリスティング及びデータ構造の側面は、本実装例に特有であり、異なるワードサイズをもつ異なるコンピューティング環境に合わせて修正してよいことに留意されたい。
3.2.光線交差
光線を境界間隔階層2分木と交差させることは、境界ボリューム階層を横断することと同様である。(上述したように、境界ボリューム階層とは、場面の中に含まれるオブジェクトのリストに基づく分割技法である)。ただし、境界ボリューム階層中の子とは異なり、境界間隔階層中の子は、空間的に順序づけられる。したがって、光線方向の合図によって、光線源により近い子に直接アクセスすることが可能なので、境界間隔階層は、境界ボリューム階層よりはるかに効率的に進み得る。したがって、上で論じた図22A〜E、23A〜Dに示したように、この横断は、kdツリーベースの空間分割の横断とほとんど同一になる。
境界ボリューム階層との類似において、図23Dに示すように、有効な光線セグメントが2つの重ならない子の間にある場合、どの子とも全く交差しないことも可能である。この追加的ケースの取扱いは、空き空間を暗黙的にスキップするので、有益である。したがって、空きリーフは、決してアクセスすることはできず、したがって、上述したように格納される必要がない。
空間分割とは対照的に、境界間隔階層のボリューム要素は重なり得る。したがって、再帰的横断は、交差が見つかってすぐに停止してはならない。概して、より近い交差を求めて、スタック上の残っているすべてのボリューム要素を検査することが必要である。ただし、交差が見つかるとすぐに、階層の分岐が、現在の交差よりさらに離れたボリューム要素を表す場合は、剪定してよい。
3.3.階層の構築
記載するデータ構造の性能の手掛かりとなるものは、効率的な構築である。所与の候補分裂面を想定すると、記載する本実装において使われる技法は比較的明快である。各オブジェクトは、面のどちら側と最も重なるかに応じて、「左オブジェクト」又は「右オブジェクト」どちらかとして分類される。オブジェクトを左オブジェクト又は右オブジェクトとして分類するのに、他のヒューリスティックを用いることができる。子ノードの2つの分割面値が次いで、選択された軸に沿った、分類される左オブジェクトの最大(すなわち、右端の)座標及び分類される右オブジェクトの最小(すなわち、左端の)座標によって、それぞれ判定される。
本発明のそれ以外の態様は、境界間隔階層の構築において使用するための候補分裂面の場所を判定する技法を提供する。
3.3.1.分裂面を判定するグローバルヒューリスティック
ここで、グローバルヒューリスティックを用いて候補分裂面を判定する技法を説明する。従来の手法とは異なり、記載するヒューリスティックは、光線追跡されるべきオブジェクトを明示的には分析しないので、貪欲でなく、評価するコストがかからない。
記載する本技法によると、この中央にある長辺に沿った軸平行場面境界ボックスの階層状の細分から生じる候補分裂面が使われる。この技法を適用すると、候補面すべてが規則的なグリッドを形成することに留意されたい。
図25A〜Dは、オブジェクト分析のない、候補分裂面の判定を例示する一連の簡略図を示す。図25Aは、「第1世代」候補分裂面831によって分裂されている境界ボックス830を示す。分裂面831は、この面をL1領域とR1領域に分ける境界ボックス700の中心を通る。L1及びR1領域は子ではなく、こうした領域内に存在するオブジェクトがどのように分類されるべきかに関する指示を与えることに留意することが重要である。実際、上述したように、子の一方又は両方が分裂面と重なり得る。子の間には空き空間があってもよい。さらに、子の一方は、ゼロボリュームをもち得る。
図25Bは、第1の分裂面831によって、且つ1対の「第2世代」候補分裂面832によって分裂された境界ボックス830を示す。候補分裂面はすべて、一致するものだとしても、「単一」面である。こうした面は、再帰中に生成される。第2世代面832は、第2世代の子に対するL2及びR2を判定するのに使われる。
図25C、25Dは、第3及び第4世代面833、834によって分裂された境界ボックス830を示す。こうした面833、834は、第3及び第4世代の子に関するL及びRを判定する(それぞれ、L3/R3及びL4/R4)。プロセスは、必要なだけ多くの世代の候補分裂面を生成するために、再帰的に継続する。
候補分裂面は、境界ボックス830に含まれる特定のオブジェクトの分析なしでグローバルに判定されるので、特定の状況では、ある特定の世代に対するグローバルに判定された候補分裂面は、細分されるべき、その世代の親ボリューム要素の境界ボックスの外側にあってよいことが可能であることが分かるであろう。その場合、プロセスは、親ボリューム要素が存在する半分の中にある候補面で継続される。
ここで、グローバルに判定された候補分裂面の使用について、具体的な例を参照して論じる。図26は、6つのオブジェクトA〜Fを含む境界ボックス840の図を示す。図27は、境界ボックス840の上に重ねられた4世代の候補分裂面を示し、図28は、境界ボックス中に含まれるオブジェクトA〜Fの特定の組に基づく、境界間隔階層の組立てにおいて対象となっている分裂面を示す。図29は、オブジェクトA〜Fがそれぞれ、記載する本技法によって判定される様々な世代の子境界ボックスにどのように含まれるかを例示する図を示す。
ここで、図29について、一世代ずつ説明する。
図30A〜Dは、図26場面840から生成された第1世代の子を示す。図30Aにおいて、グローバルに判定された第1世代候補分裂面841が、オブジェクトA〜Fを、Lオブジェクト又はRオブジェクトとして分類するのに使われる。明らかに、A〜CはLオブジェクトであり、オブジェクトD〜FはRオブジェクトである。図30Bは、第1世代のL及びR子を示す。L子の右側は、Lオブジェクトの右端の点を通る面であり、R子の左側は、Rオブジェクトの左端の点を通る面である。図30Cは、結果のL及びR子を示す。
図31A〜Cは、第2世代の子を示す。図31Aにおいて、グローバルに判定された第2世代候補分裂面842が、第1世代の子の中のオブジェクトを、L及びRオブジェクトに分類するのに使われ、図31Bに示すように、L及びR子が、記載する技法によって生成される。結果として生じた第2世代の子を、図31Cに示す。図の右側で、位置三角形D、Fが、重なり合う子を結果として生じることが分かるであろうが、分かりやすくするために分離してある。
図32A〜Cは、第3世代の子を示す。候補面はグローバルに生成されているので、本例における候補分裂面843は中心からずれており、子ボックスを、等ボリュームのボックスに細分しないことが分かるであろう。図32Bは、L及びR分裂面の配置を示し、図32Cは、結果として生じた子を示す。オブジェクトA、Bを含む境界ボックスを参照すると、記載する技法は結果として、空きボリュームを有するR子を生じることに留意されたい。結果として生じたL子は、オブジェクトA、Bを含むが、空き空間が削減されている。
図33A〜Eは、オブジェクトA、Bに対する子の生成を示す。図33Aに示すように、グローバルに判定された候補第4世代分裂面844は、A、BをL及びRオブジェクトに分けない。そうではなく、両方とも、Rオブジェクトとして分類される。境界ボックスの左側は、Rオブジェクトの左端の点によって判定されるので、結果は、その親からその側をすべて継承する空きボリュームL子及びR子となる。
図33Bに示すように、候補分裂面は、ローカルではなくグローバルに生成されているので、第5世代候補分裂面845は、境界ボックスを二分するのではなく、境界ボックスの外側にある。図33Bにおいて、境界ボックスは面845の左に存在することが分かるであろう。したがって、上述したように、プロセスは、面845の左にある候補面で継続する。
図33Cは、第6世代候補分裂面846を示す。今度は、候補分裂面846は、AがLオブジェクトとなりBがRオブジェクトとなるように、境界ボックスを分ける。図33Dは、L及びR分裂面の配置を示し、図33Eは、結果として生じたL及びR子を示す。
先行サブセクションにおいて説明した技法とともに、オブジェクトリストは、再帰的に分割され、境界ボックスは、常にオブジェクト境界ボックスと平行にされる。分裂面候補が、重複なしでオブジェクトを分離する場合、結果として生じた分裂面は暗黙的に、左及び右にあるオブジェクトに厳密に適合し、したがって、図23C〜Dに示すように、空き空間を最大化する。ただ1つのオブジェクトが残っているときに再帰は終了するが、再帰が依然としてよい結果をもたらすようなオブジェクトの数を定義するのが効率的である。
分裂面候補は、内部ノードの実際の境界ボックスには適合されず、単に場面のグローバル境界ボックスによって判定されることに留意することが重要である。言い換えると、一度の反復後に子セルが定義された後、続いて使われる候補面は、その新しいセルの中点ではなく、対応する初期グローバル候補面である。
本技法のこの側面は、従来の手法とは異なり、階層全体を通して、可能な限り境界ボックスを立方体に保つ傾向にある。
3.3.2.近似ソート
上述のデータ構造を構築するのに要求される時間の量は、平均でO(n log n)である。本発明のそれ以外の態様によると、バケットソートプリプロセスが、次定数を減じるのに使われる。
バケットソートプリプロセスでは、ソートされるべき個々の項目が最初に「バケット」にソートされる、高度なソートが実施される。たとえば、順位及び種別によるトランプ1組のソートは、最初にカードを種別によって4つの山にソートし、次いで、種別の個々の各山を順位によってソートすることによって遂行することができる。種別の各山は、バケットとして機能する。概して、ソート機能をこのように分けると、プロセスに要求される全体的時間量が減る傾向にある。
同様に、オブジェクトが、最初に、境界ボックスが構築されるべき同じような番号のオブジェクトを含む有意なバケットに事前にソートされる場合、場面中のオブジェクトを、そのオブジェクトを含む、階層状に順序づけられた1組の境界ボックスにソートするのに要求される時間量は、大幅に削減することができる。
図34は、本発明の本態様による方法900のフローチャートを示す。ステップ901で、場面境界ボックスのサイズ及びボックスに含まれるオブジェクトの平均サイズが、順序づけられた規則的なグリッドの分解能を判定するために計算される。或いは、分解能は、ユーザによって指定してよい。ステップ902に示すように、各グリッドセルは、カウンタを含む。ステップ903で、カウンタはすべて、ゼロにセットされる。
ステップ904で、たとえば、その境界ボックスの1つの角など、各オブジェクトごとに一点が、その点を含むグリッドセル中のカウンタを増分するのに使われる。あるオブジェクト「用に」選択された点は、必ずしもそのオブジェクト「上の」点である必要があるわけではないことは、注目に値する。ある特定のグリッドセル中の点の数は、オブジェクトが場面の中でどう分散しているかに応じて広く変わり得ることが分かるであろう。一部のグリッドセルは、一点のみ、又はゼロ点を含むことが可能であり得る。各オブジェクトに対する唯一の点がカウントされるので、すべてのカウンタの和は、オブジェクトの数に等しいことが、さらに分かるであろう。
オブジェクトは、複数のセル、又はいくつかのグリッドセルとも重なり得ることが、さらに分かるであろう。また、オブジェクトのほとんどは、オブジェクトの選択された点が存在するグリッドセルの外側に存在することが可能である。このような出現は、バケットソートによって節約される時間の全体的量を削減することができるが、最終データ構造の有効性に影響することはないことが分かるであろう。
ステップ905で、カウンタが次いで、グリッド中のセル/ボクセルのボクセル順序で、又はメモリ中にレイアウトされる順序で、すべての先行カウンタの和で各カウンタを置き換えることによって、オフセットに変換される。
ステップ906で、グローバルオブジェクト索引アレイが割り振られる。ステップ907で、あらゆるオブジェクトの同じ点を使って、オブジェクトはここで、ステップ905でのオフセットを使って、同じようなサイズのバケットにソートすることができる。上述したように、グリッドカウンタの和は、場面中のオブジェクトの数をもたらし、索引アレイのサイズを判定する。バケットサイズは、中でカウントされたオブジェクトの数によって判定される。
ステップ908で、各バケットごとに、上述したように、バケットが含むオブジェクトの境界ボックスが計算される。
オブジェクトではなく、オブジェクトが含む境界ボックスのソートは、構築を2倍から3倍高速化する。ボリューム要素が、1つのコンテナのみからなる場合、そのコンテナは、その中のオブジェクトで置き換えられる。結果として生じたツリーは、後で論じる図42に示すように、描画性能及びサイズが非常に類似している。
この容易なストリーミング技法を用いると、限られた量のメモリを使って、且つ線形時間で場面を分割することが可能である。索引アレイでさえも、まとめて処理することができる。
3.3.3.実装詳細
境界間隔階層はオブジェクト分割方式なので、すべてのオブジェクトソートは、適所で行うことができ、一時的メモリ管理は要求されない。再帰的構築手順は、クイックソートベースの技法と同様に、索引アレイ中の左及び右オブジェクトへの2つのポインタを必要とするだけである。
一方、空間分割方式は、ボリューム要素に重なるオブジェクトを扱う必要がある。たとえば再帰的kdツリー構築は、後でバックトラックを用いて継続することができるスタック上に配置されるべき膨大な量の一時的データを必要とする。
上記方式の変形体は、こうした非効率性を軽減することができ、適所ソートをkdツリーに利用可能にする。その手順では、「左及び右両方」(すなわち、kdツリー分裂面と重なる)として分類されるオブジェクトを保つのに使われる、オブジェクト参照の第2のアレイを要求する。第2のアレイのサイズは、デフォルト値によって選ぶことができることを、多数の場面の検査が示している。概して、オブジェクトの数に等しい長さは、要求される、時間の99パーセントよりもはるかに大きい。ただし、アレイの本当の長さは予測することができるので、メモリを割り当て直す必要はないであろう。
この手順は、図35、36に示される。図35は、アレイの一連のペア920を示し、ここで、上位アレイは、オブジェクト索引の適所ソートを示し、下位アレイは、ツリー構築中の、グローバルスタック上への格納操作を示す。一連のアレイペアは、左から右、上から下に進む。
第1行、第1列において、上位アレイは、順序づけられていない1組の要素を含む。第2列において、順序づけられていないアレイをソートすることにより、適所に留まる左要素が明らかにされる。第3列において、第2の要素はR要素であり、この要素は右に行かなければならず、したがって、上位アレイの右端にあるソートされていない要素で交換される。
第2行、第1列で、第2の要素は、上位アレイの右端にあるソートされていない要素と交換されている。第2列で、現在第2の位置にある要素は、「両」(すなわち、重なる)要素であることが明らかになり、したがって、グローバルスタック、すなわち下位アレイに移動される。第3列で、右端のソートされていない要素は、アレイ中の空いている位置に移動される。
第3行、第1列で、右端のソートされていない要素は、アレイ中の空いている第2の位置に移動されている。この要素はここで、「R」オブジェクトであることが明らかになり、アレイの右側の空いている位置に移動される。第3列は、この動きの後に結果として生じる上位アレイ構成を示す。
プロセスは、n行に示すように、アレイ中の要素がすべて順序づけられるまで、再帰的に継続する。n行の第1列に示すように、ソート動作により、下位アレイ中の最初の3つの位置に格納される3つの「両」オブジェクトが明らかになる。第2列で、3つの「両」オブジェクトは、L及びRオブジェクトの間の空いている位置にある上位アレイに移動される。第3列は、完了したソートを示す。
図36は、スタックの「ポップ」動作の後にスタックに積まれたオブジェクト索引の復元を示す一連の3つのアレイペア930を示す。
3.4.オンデマンドでの構築
これまで提示したフレームワークは既に、対話型な光線追跡を可能にしている。ただし、加速データ構造の構築時間及びメモリフットプリントは、光線が横断する場合、すなわち、形状が交差される場合にのみ構築することによって、さらに最適化することができる。境界間隔階層を用いた実装は、比較的明快であり、深度の複雑さが高いことを特徴とする大きな場面の場合に特に有益である。すべてのオブジェクトソートは適所で行われるので、未だに細分されていないボリューム要素に印をつけるのに、フラグのみが要求される。光線を横断すると、フラグがセットされている場合に細分ルーチンがコールされる。単純な最適化では、ノードに含まれるすべてのオブジェクトがキャッシュ(たとえばL1又はL2キャッシュ)に収まる場合、ノードを完全に細分する。オンデマンド構築は、横断及び構築ルーチンの古典的な分離を廃止する。この単純な拡張を用いると、図22に示すBoeing777メッシュを、シングルコアOpteron 2.2GHz 32GB RAMマシン上で最初からHDTV解像度で3〜9分(カメラ位置に応じる)以内に描画することが可能であった。従来の手法と比較して、わずかなメモリのみが用いられる。
4.考察
境界間隔階層は、空間分割方式の効率的な横断技法の利益を受けるオブジェクト分割方式である。このセクションでは、この手法の利点の一部について論じる。
4.1.メモリフットプリント
構築アルゴリズムは、分裂面をオブジェクト境界ボックスに合致させるので、階層中の内部ノードの数は、6倍のオブジェクトの数によって境界を定められる。ポリゴンのケースでは、この数は、直前の境界の最小及び頂点の数の3倍で境界を定められる。オブジェクト参照の数は、場面中のオブジェクトの数と正確に一致する。
多重オブジェクト参照のせいで、後者の境界は、たとえばkdツリーとして、空間分割方式には利用可能でない。オブジェクトが、局所的に多数の重なる境界ボックス又はほとんどランダムな分散を特徴とする場合、問題が明らかになる。BARTミュージアムでは、複製された三角形索引の数は、三角形の数の約400倍(ピーク値)であり、その結果、境界間隔階層中より40倍も多い数のノードが生じた。この問題は、第1の最上位レベル分裂が既に、たくさんのオブジェクト推論を再現するので、kdツリーに固有である。この重複効果はしばしば、再帰の間継続される。
4.2.数値精度
境界間隔階層構築では、正準座標システムにおいて、境界ボックス情報及び最小/最大操作のみを用いる。したがって、手順は数値的には、無条件に堅牢である。空間分割方式は、浮動小数点の不正確さの影響を被る操作に依拠するオブジェクト面交差ルーチンを要求する。方式を安定させるために、耐容性が追加されなければならない。その結果、性能が影響を被る。
4.3.光線集団の追跡
光線が干渉性である場合、単光線ではなく光線の集団(又はアレイ)の追跡が有効であり得る。一次光線は、干渉性のある組に簡単にグループ化することができるが、点光源から影光線の集団に対して同じ利益を得るのは既に難しくなっている。透明な、反射した、又はランダムウォークシミュレーションによる光線は、十分な干渉性に欠けている。それにも関わらず、干渉光線の集団を与えられると、光線の集団を追跡するための手法は、本明細書において説明するデータ構造の利益を受ける。この利益は、小さいメモリフットプリントから生じたメモリ帯域幅の削減及びキャッシュ干渉の増大に起因する。さらにボリューム要素は、概してkdツリーの対応するボリュームより大きく見え、干渉に対する条件が緩和される。単光線から2×2光線束追跡までの加速比は、kdツリーと比較して、境界間隔階層に対して、わずかに高いことが、実験により示されている。フラスタムカリング技法は、境界ボリューム階層に首尾よく変形される。こうした技法は、スタック上の現在のボリューム要素境界ボックスを追うことによって、境界間隔階層に簡単に変形することができる。階層は、他のやり方でもアップデートすることができるが、記載する構築ルーチンは、表面積ヒューリスティックより大幅に速く、変形によってアニメーション化されたメッシュに対する厳しい制限を撤廃する。2×2集団の光線の場合、より一般的な技法によって得られる光線追跡性能は、少なくとも同程度に高速である。最後に、ノードデータ構造ははるかに小さい。完全を期すために、光線の集団は、グリッド加速データ構造を用いて効率的に追跡することもできることに留意されたい。ただし、多数のグリッドセルと重なる大型オブジェクト、並びに二次光線は、厳しい性能損失を引き起こす。概して、シャフトカリング技法は、光線の集団を発散する距離に対して失敗する。
4.4.ハードウェア検討事項
リアルタイムの光線追跡における最近の発見に基づいて、RPU(光線処理ユニット)チップが設計されている。アーキテクチャは、効率的に光線追跡し、光線の束に陰影をつけることができるが、我々の手法によって簡単に改良することができる。境界間隔階層は、はるかに小さいメモリフットプリントをもち、オブジェクト分割方式として、メールボックスユニットを必要としない。TPUユニットのみが、第2の面交差によって拡張されなければならない。こうした修正は、境界間隔階層横断とkdツリー横断との類似により、簡単に組み込むことができる。より重要には、上述のデータ構造構築技法は、単純な操作のみを用い、したがって、ハードウェア実装の非常に優れた候補である。
4.5.大量データセット
産業用途及びプロダクションレンダリングにおいて使われる現在のデータセットは、一般に数百メガバイトから数ギガバイトの未加工データに渡る大量の形状からなる。上述したように、境界間隔階層の小さいメモリフットプリントにより、大規模場面は単純な手段によって効率的に光線追跡されるようになるが、依然として、データがメインメモリに収まらない状況があり得る。したがって、Boeing777のピクチャを、50MBのRAMのみを使って描画することができる極小メモリフットプリントレンダラが実装されている。より多くのRAMが利用可能(測定目的のために1GBが仮定された)である場合、図38に示したように、標準消費者デスクトップPC上でも、1時間未満でピクチャを最初から描画することが可能である。極小メモリの使用を達成するために、上述の前処理ステップは、オブジェクトをバケットにソートするのに用いられ、バケットは次いで、コンピュータのハードドライブ上に格納される。描画ステップの場合、最上位境界間隔階層がバケットから作成されるが、どのオブジェクトにも触れる必要はない。光線が交差される各バケットは、オンデマンドポリシーを用いて、独自のツリーを作成する。バケットのオブジェクト及び加速データ構造は、動的(すなわち、それ以上のRAMが利用可能でなくなるまで増大し得る)又はユーザが定義した固定サイズどちらかのキャッシュ中に保たれる。最大オブジェクト数をもつバケットは、最大メモリフットプリントを定義する。この結果は、バケットソートプリプロセスから無償で得られることに留意されたい。このシナリオでは、処理速度は、ハードドライブの速度で判定される。ツリー構築アルゴリズムはとても高速なので加速データ構造の一部が押し出されなければならない場合、その一部は、単に捨てられ、オンデマンドに組み立て直される。
4.6.大型オブジェクト
境界間隔階層性能は、小さい、及び大きな幾何要素の混合物に遭遇すると、影響を被ると提案することができよう。これは部分的に真実であり、空間分割方式に対しても真実である。この状況で、kdツリーが、より多くの分裂面を挿入することによって場面を細分する。この結果、より深いツリー、オブジェクト参照の重複、及び全体的に増大したメモリフットプリントを生じる。より深いツリーは、横断時間を増大させる。このようなシナリオにおける境界間隔階層の性能問題には、図39に示すBARTロボットの例によってスポットを当てることができる。場面は、道路及び家の大きな三角形から作られるが、標識及び歩行ロボットなど、たくさんのより細かい形状も特徴とする。大きな三角形は、階層中に大きな重なるボリュームを引き起こすので、早い段階でのツリー剪定が不可能になり、1光線につき、より多くの三角形が検査されなければならない。描画システムにおける古典的な次善策は、大型オブジェクトを予め細分することである。メモリを適度に増大させるために、オブジェクトは、正準軸に垂直な面によって分けられるべきである。ここで、メモリ消費は、kdツリーと同様に増大するが、依然としてメモリ消費を先験的に判定することが可能である。記載する手法は、置換マッピング及び大量の幾何細部をもつプロダクションシステムを意図しているので、上記考察によって問題が課されることはない。実際、問題は、低ポリゴンカウントのアーキテクチャシナリオに対してのみ持続する。比較的古いゲームでも、通常は、1フレームあたり200.000から500.000個の可視的三角形を使う。
5.結果
現在使われている技法と本明細書において説明する改良技法との比較の結果を、図37〜42で説明する。
図37は、非常に単純なシェーダ及び2×2(SSEにより加速された)光線束を用いて、記載する本技法と最新のkdツリー実装形態を比較するテーブル940を示す。性能データは、640×480の解像度で、P4HT 2.8GHz上で測定された。InView列は、業務用のリアルタイムの描画製品(inTrace GmbH、www.intrace.com)を指す。WH06列は、Wald及びHavran、「On Building Fast kD−Trees for Ray Tracing」、Technical Report、SCI Institute、University of Utah、No.UUSCI−2006−009(刊行のため提出済み)(2006)において記載される技法を用いて達成されるデータを指す。WH06性能データは、より速いOpteron 2.6GHz上で測定された。「結像時間」という用語は、1枚のピクチャのための合計描画時間の測定値を指し、したがって、オンデマンドのツリー構築、光線追跡、及びシェーディングを含む。図37に示すように、境界間隔階層(BIH)は、メモリ及び合計結像時間両方において優れた結果を達成した。
図38は、単光線のみ(640×480、P4HT 2.8GHz)を追跡する高度な陰影を用いて、記載する本技法と最新のkdツリー実装を比較するテーブル950を示す。「結像時間」は、1枚のピクチャのための合計描画時間を測定し、したがって、オンデマンドでのツリー構築、光線追跡及びシェーディングを含む。図38は、グローバル照度計算は、ほとんどツリー全体の構築を要求するので、オンデマンドでの構築のための応力検査を示す。
図39は、動的環境(640×480、P4HT 2.8GHz)を用いた比較の結果を説明するテーブル960を示す。完全なデータ構造は、フレームごとに最初から組み立て直される。ミュージアムは、1ピクセルにつき4本の光線の平均を使って、(a)単純シェーディング及び(b)フルシェーディングを用いて追跡される。両方のケースにおいて、単光線のみが追跡された。残っているBART場面は、単純なシェーダを使って描画されたが、Utah Fairy Forestはフルシェーディングを用いた。
図40は、巨大なBoeing777データセット(12,584,500,416バイトに達する349,569,456個の三角形)のためのオンデマンドツリー構築を含む合計描画時間(1280×1024、シングルコアOpteron 875 2.2GHz 32GB)を説明するテーブル970を示す。ハードディスクからの三角形データの読取りは、使われるハードディスクに重く依存するので、省略される。本例では、特定の機器を使って、ローディング時間は40〜90秒であった。
図41は、低レベルのオンデマンドツリー構築及びディスクからの必要なすべての三角形グループのローディングを含む描画時間(1280×1024、P4HT 2.8GHz 2GB RAM)を説明するテーブル980を示す。すべてのビューに対して一度行われる最上位バケットソートプリプロセスは、さらに53分を要したが、最高で737MBのRAMを使っただけである。前処理及び描画のためのキャッシュサイズは、少なくとも1GBのRAMを提供するどの消費者マシンに対しても適切になるように選ばれた。より多くのRAMは、先行図でのように、一層速い描画時間を可能にするが、前処理ステップは主に、ハードディスクによって制限され、ハードディスクは本例では比較的遅く安価であった。
図42は、上述のバケットソートプリプロセス(640×480、P4HT 2.8GHz)をもつ、及びもたない境界間隔階層(BIH)を、Wald及びHavranからとった数に比較するテーブル990を示し、ここでは、より速いOpteron 2.6GHzプロセスが使われた。「純粋な」境界間隔階層に相対して、1秒あたりのフレーム数(FPS)が与えられ、そのときいくつかのカメラ位置に対するFPSが平均された。境界間隔階層は、特にバケットソートプリプロセスと組み合わされると、優れた結果を示す。
6.結論
本発明の態様は、特に十分に動的環境において、又は大量データセットのために使われたとき、光線追跡を加速する改良技法を提供する。記載するデータ構造のメモリフットプリント及び構築時間は両方とも、従来の手法と比較して、大幅に小さい。記載する技法は、形状に対する制限なしで、動的内容のリアルタイムの光線追跡を可能にする。こうした技法は、不偏モーションブラーのはるかに効率的な計算も可能にする。グローバルヒューリスティックに伴う本技法の容易性及び予測可能性は、ハードウェア実装のための有望な候補である。自由曲面を有する境界間隔階層を用いた第1の実験は、有望である。新しいグローバルヒューリスティックは、本文書において測定目的のために使われたはるかに複雑なkdツリー構築ヒューリスティックと比較された。より単純な方式が、結果としてほとんど同一の性能を生じる。
図43は、記載した本発明の態様による全体的技法のフローチャート1000を示す。上述したように、この技法は有利には、コンピュータ及び表示要素を備えるコンピュータグラフィックスシステムにおいて実装され、表示要素は、コンピュータからの表示制御用電気出力に応答して、人間が知覚可能な画像を表示するように動作可能であり、コンピュータは、画像中のピクセルに関するピクセル値の算出に基づいて、表示制御用電気出力を生成するように動作可能であり、それぞれのピクセル値は、模擬カメラの画像面上に記録される場面中の点を表し、コンピュータは、光線追跡方法を用いて画像に対するピクセル値を生成するように動作可能であり、光線追跡方法は、光線ツリー及び関連した光線追跡データ構造の使用を含み、光線ツリーは、選択された方向に沿ってピクセルから場面中に発せられた少なくとも1本の光線を含み、光線追跡方法は、場面中での光線とオブジェクトの表面との交差の算出をさらに含み、光線追跡は、画像中のオブジェクトの処理の結果に応答して判定される。
ステップ1001で、ツリー構造を含む階層状光線追跡加速データ構造が構築される。ツリー構造のノードは、場面中の1組のオブジェクトを左オブジェクト及び右オブジェクトに分割するための軸平行場面境界ボックス及び2つの並列面の定義に基づく境界間隔階層を使用して、且つ被分裂面をオブジェクト境界ボックスに合致させて、生成される。
ステップ1002で、境界ボックスがオブジェクト境界ボックスに再帰的に分けられる。
ステップ1003で、被分裂面候補が重複なくオブジェクトを分離する場合、結果として生じた被分裂面が、左及び右にあるオブジェクトに合わせられ、そうすることによって空き空間を最大化する。
ステップ1004で、所定の数を超えるオブジェクトが残っていない場合、再帰が終了される。
図44は、図43に示すステップ1001で階層状光線追跡加速データ構造を構築するそれ以外の態様を説明するフローチャート1010を示す。
ステップ1011で、x、y、又はz軸のうち、選択された1つに垂直な2つの面が選択される。
ステップ1012で、分裂面が与えられると、画像中の各オブジェクトが、左/右選択基準に基づいて、左又は右のどちらかとして分類され、それぞれ、左及び右オブジェクトの最大及び最小座標によって子ノードの2つの分裂面値が判定される。
ステップ1013で、境界ボックス及び選択された軸を与えられると、選択された軸に沿った左オブジェクトの座標の最大値を第1の面で置き換えることから、左の子Lが生じ、右オブジェクトの座標の最小値を第2の面で置き換えることから、右の子Rが生じ、結果として生じたどのゼロボリュームも、空の子を表すのに使われる。
ステップ1014で、中央にある長辺に沿った軸平行場面境界ボックスを階層状に細分することによって、候補分裂面を選択することによって、分裂面が判定され、そうすることによって、すべての候補分裂面が規則的なグリッドを形成する。
ステップ1015で、候補面が、細分するべきボリューム要素の境界ボックスの外側にある場合、ボリューム要素が存在する半分の所から、候補面を用いてプロセスが継続される。
図45は、本発明の一プロセスに従う、コンピュータ102内の処理モジュール122の概略的なブロック図である。図45に示すように、コンピュータ102、又は他の処理装置は、本発明に関連して動作する場合、本発明で示した処理モジュール及び/又は他の構成要素の一部又は全部を含む。こうしたモジュールは、図43、44に示す方法態様に対応し、それを実行する。このような方法態様は、当業者によって、公知のコンピュータオペレーティングシステム及びアプリケーションプログラミング技法を用いて実装することができる。
図46は、本発明による、コンピュータ又は他の処理装置内のディスク(取外し可能若しくは取外し不可能)又は他の記憶要素120内のソフトウェア製品モジュール124の概略的なブロック図である。図46に示すように、ディスク又は他の記憶装置120は、取出し可能であっても取外し不可能であっても、従来のコンピューティング装置によって、図43、44に示すような、本発明の方法態様を実装するように実行可能なコンピュータプログラムコードを含み得る。
上記説明は、当業者が本発明を実施することを可能にする詳細を含むが、本説明は、本質的に例示であり、多くの修正形態及び変形形態が、こうした教示の利益を受ける当業者には明らかであることを理解されたい。したがって、本明細書における本発明は、添付の特許請求の範囲によってのみ定義され、特許請求の範囲は、従来技術によって許される限り広く解釈されることを意図している。
本発明の態様を展開することができる従来のパーソナルコンピュータ又は同じようなコンピューティング機器を示す概略図である。 本発明の態様を展開することができる従来のネットワークベースのコンピューティングシステムを示す概略図である。 本発明の態様を展開することができる従来のネットワーク装置を示す概略図である。 本発明の第1の態様による全体的方法を示す図である。 自己交差の問題を示す光線追跡手順を示す図である。 記載した、縮退三角形をエンコードする技法を実装するコードリスティングの例を示す図である。 記載した、堅牢な交差検査向けに三角形を拡張する技法を実装するコードリスティングの例を示す図である。 記載した三角形−ボックス交差技法を実装するコードリスティングの例を示す図である。 記載した三角形−ボックス交差技法を実装するコードリスティングの例を示す図である。 記載した三角形−ボックス交差技法を実装するコードリスティングの例を示す図である。 記載した三角形−ボックス交差技法を実装するコードリスティングの例を示す図である。 本発明のそれ以外の態様による加速データ構造として使われる、分割された軸平行境界ボックスを示す正面図である。 図9〜11は、L及びR面を有する境界ボックスの分割を示す、図5に示す軸平行境界ボックスを示す一連の等角図である。 図9〜11は、L及びR面を有する境界ボックスの分割を示す、図5に示す軸平行境界ボックスを示す一連の等角図である。 図9〜11は、L及びR面を有する境界ボックスの分割を示す、図5に示す軸平行境界ボックスを示す一連の等角図である。 本発明のそれ以外の態様による光線追跡方法を示すフローチャートである。 本発明のそれ以外の態様による光線追跡方法を示すフローチャートである。 記載した、境界ボリューム階層を横断する技法を実装するコードリスティングの例を示す図である。 記載した、境界ボリューム階層を横断する技法を実装するコードリスティングの例を示す図である。 記載した、境界ボリューム階層を横断する技法を実装するコードリスティングの例を示す図である。 境界ボックスに、半空間を定義するための軸平行面が交差する、本発明のそれ以外の態様による技法を示す一連の図である。 境界ボックスに、半空間を定義するための軸平行面が交差する、本発明のそれ以外の態様による技法を示す一連の図である。 境界ボックスに、半空間を定義するための軸平行面が交差する、本発明のそれ以外の態様による技法を示す一連の図である。 記載した、リーフノードをエンコードする技法を実装するコードリスティングの例を示す図である。 境界ボリューム階層を通る1本の光線の追跡を実装するコードリスティングの例を示す図である。 境界ボリューム階層を通る1本の光線の追跡を実装するコードリスティングの例を示す図である。 境界ボリューム階層を通る1本の光線の追跡を実装するコードリスティングの例を示す図である。 境界ボリューム階層を通る1本の光線の追跡を実装するコードリスティングの例を示す図である。 本発明のそれ以外の態様による、4つの軸平行面によってクリップされた境界ボックスを示す図である。 図18に従ってデータ構造を実装するコードリスティングの例を示す図である。 図18、19に示すデータ構造を用いて組み立てられたツリーを用いる、境界ボリューム階層の横断を実装するコードリスティングの例を示す図である。 図18、19に示すデータ構造を用いて組み立てられたツリーを用いる、境界ボリューム階層の横断を実装するコードリスティングの例を示す図である。 図18、19に示すデータ構造を用いて組み立てられたツリーを用いる、境界ボリューム階層の横断を実装するコードリスティングの例を示す図である。 記載した光線追跡技法を用いて生成されたアニメーション及び対話型アプリケーションからの一連の画像を示す図である。 記載した光線追跡技法を用いて生成されたアニメーション及び対話型アプリケーションからの一連の画像を示す図である。 記載した光線追跡技法を用いて生成されたアニメーション及び対話型アプリケーションからの一連の画像を示す図である。 記載した光線追跡技法を用いて生成されたアニメーション及び対話型アプリケーションからの一連の画像を示す図である。 バイナリ空間分割技法と記載した境界間隔階層技法との間の違いを示す一連の図である。 バイナリ空間分割技法と記載した境界間隔階層技法との間の違いを示す一連の図である。 バイナリ空間分割技法と記載した境界間隔階層技法との間の違いを示す一連の図である。 バイナリ空間分割技法と記載した境界間隔階層技法との間の違いを示す一連の図である。 バイナリ空間分割技法と記載した境界間隔階層技法との間の違いを示す一連の図である。 バイナリ空間分割技法と記載した境界間隔階層技法との間の違いを示す一連の図である。 バイナリ空間分割技法と記載した境界間隔階層技法との間の違いを示す一連の図である。 バイナリ空間分割技法と記載した境界間隔階層技法との間の違いを示す一連の図である。 バイナリ空間分割技法と記載した境界間隔階層技法との間の違いを示す一連の図である。 記載した光線追跡技法とともに使用するためのデータ構造を定義する技法を実装するコードリスティングの例を示す図である。 データ構造を示すメモリレイアウトである。 記載した、オブジェクト分析なしの候補分裂面を判定する技法を示す一連の簡略図である。 記載した、オブジェクト分析なしの候補分裂面を判定する技法を示す一連の簡略図である。 記載した、オブジェクト分析なしの候補分裂面を判定する技法を示す一連の簡略図である。 記載した、オブジェクト分析なしの候補分裂面を判定する技法を示す一連の簡略図である。 6つのオブジェクトA〜Fを含む例示的な境界ボックスを示す図である。 図26に示す境界ボックスの上に重ねられた4世代の候補分裂面を示す図である。 図27で対象となっている分裂面を示す図である。 オブジェクトA〜Fがそれぞれ、様々な世代の子境界ボックスにどのように含まれるかを示す図である。 図26に示す場面から生成された子の第1世代を示す図である。 図26に示す場面から生成された子の第1世代を示す図である。 図26に示す場面から生成された子の第1世代を示す図である。 図26に示す場面から生成された子の第1世代を示す図である。 図26に示す場面から生成された子の第2世代を示す図である。 図26に示す場面から生成された子の第2世代を示す図である。 図26に示す場面から生成された子の第2世代を示す図である。 図26に示す場面から生成された子の第3世代を示す図である。 図26に示す場面から生成された子の第3世代を示す図である。 図26に示す場面から生成された子の第3世代を示す図である。 図26に示す場面中のオブジェクトA、Bに対する子の生成を示す図である。 図26に示す場面中のオブジェクトA、Bに対する子の生成を示す図である。 図26に示す場面中のオブジェクトA、Bに対する子の生成を示す図である。 図26に示す場面中のオブジェクトA、Bに対する子の生成を示す図である。 図26に示す場面中のオブジェクトA、Bに対する子の生成を示す図である。 本発明のそれ以外の態様による、記載したデータ構造の構築と連動して、バケットソートプリプロセスを実施する方法を示すフローチャートである。 本発明のそれ以外の態様による、オブジェクト索引の適所ソートのための技法を示す一連のアレイペアを示す図である。 本発明のそれ以外の態様による、オブジェクト索引の適所ソートのための技法を示す一連のアレイペアを示す図である。 現在使われている技法と、本発明による改良技法との間の比較の結果を示す一連のテーブルを示す図である。 現在使われている技法と、本発明による改良技法との間の比較の結果を示す一連のテーブルを示す図である。 現在使われている技法と、本発明による改良技法との間の比較の結果を示す一連のテーブルを示す図である。 現在使われている技法と、本発明による改良技法との間の比較の結果を示す一連のテーブルを示す図である。 現在使われている技法と、本発明による改良技法との間の比較の結果を示す一連のテーブルを示す図である。 現在使われている技法と、本発明による改良技法との間の比較の結果を示す一連のテーブルを示す図である。 記載した本発明の態様による全体的技法を示すフローチャートである。 記載した本発明の態様による全体的技法を示すフローチャートである。 本発明の一プロセスによる、コンピュータ102内の処理モジュールを示す概略的なブロック図である。 本発明による、コンピュータ又は他の処理装置内のディスク(取外し可能又は取外し不可能)或いは他の記憶要素120内部のソフトウェア製品モジュールを示す概略的なブロック図である。

Claims (25)

  1. コンピュータ及び表示要素を備えるコンピュータグラフィックスシステムであって、前記表示要素は、前記コンピュータからの表示制御用電気出力に応答して、人間が知覚可能な画像を表示するように動作可能であり、前記コンピュータは、前記画像中のピクセルに関するピクセル値の算出に基づいて、前記表示制御用電気出力を生成するように動作可能であり、それぞれのピクセル値は、模擬カメラの画像面上に記録される場面中の点を表し、前記コンピュータは、光線追跡方法を用いて画像に対するピクセル値を生成するように動作可能であり、前記光線追跡方法は、光線ツリー及び関連した光線追跡データ構造の使用を含み、前記光線ツリーは、選択された方向に沿って前記ピクセルから場面中に発せられた少なくとも1本の光線を含み、前記光線追跡方法は、前記場面中での光線とオブジェクトの表面との交差の算出をさらに含み、前記光線追跡は、画像中のオブジェクトの処理の結果に応答して判定される、コンピュータグラフィックシステムにおける改良であって、
    ツリー構造を含む階層状光線追跡加速データ構造を構築することであって、ツリー構造のノードが、場面中の1組のオブジェクトを左オブジェクトと右オブジェクトに分割するための軸平行場面境界ボックス及び2つの並列面定義に基づく境界間隔階層を使用して生成されること、並びに、
    被分裂面をオブジェクト境界ボックスに合致させること
    を含み、
    前記2つの面が、x、y、又はz軸のうち選択された1つに垂直であり、
    分裂面が与えられた場合、左/右選択基準に基づいて、画像中の各オブジェクトが左又は右どちらかに分類され、子ノードの2つの分裂面値が、それぞれ、前記左及び右オブジェクトの最大及び最小座標によって判定され、
    境界ボックス及び前記選択された軸が与えられた場合、左の子Lが、前記選択された軸に沿った左オブジェクトの座標の最大値を第1の面で置き換えることから生じ、右の子Rが、右オブジェクトの座標の最小値を第2の面で置き換えることから生じ、結果として生じたどのゼロボリュームも、空の子を示すために用いられ、
    分裂面が、
    (a)中央にある長辺に沿った軸平行場面境界ボックスを階層状に細分することによって候補分裂面を選択することであって、すべての候補分裂面が規則的なグリッドを形成すること、
    (b)候補面が、細分するべきボリューム要素の前記境界ボックスの外側にある場合、前記ボリューム要素が存在する半分以降の候補面で継続すること
    によって判定され、
    さらに、
    (a)前記境界ボックスをオブジェクト境界ボックスに再帰的に分割すること、
    (b)被分裂面候補が重複なしでオブジェクトを分離する場合、結果として生じた被分裂面を左及び右にある前記オブジェクトに合わせ、そうすることによって空き空間を最大化すること、並びに
    (c)所定の数を超えるオブジェクトが残っていない場合、前記再帰を終了すること
    を含む改良。
  2. A.前記左/右選択基準は、分裂面を与えられた場合、、画像中の各オブジェクトを、前記面のどちら側が最も伸びているかに応じて左又は右どちらかに分類することを含み、
    B.前記階層状光線追跡加速データ構造の前記構築が、バケットソートに基づき、
    (a)空間を分割する順序づけられた規則的なグリッドの解像度を判定するために、場面境界ボックス及び平均的オブジェクトサイズを計算すること、或いは、ユーザ指定解像度を用いること、
    (b)各グリッドセルごとにカウンタを割り振ること、
    (c)各々がそれぞれのグリッドセルに対応するすべてのカウンタをゼロに初期化すること、
    (d)各オブジェクトごとに点を選択して、前記選択された点を含む前記グリッドセルに対する前記それぞれのカウンタを増分すること、
    (e)各カウンタ値をすべての先行カウンタの値の和で置き換えることによって、カウンタ値をオフセット値に変換すること、
    (f)グローバルオブジェクト索引アレイを割り振ること、
    (g)それぞれの各オブジェクトごとに、その点を含む前記グリッドセル用の前記カウンタを増分するために選択された前記対応する点を使って、前記オフセット値を用いて、前記オブジェクトをバケットにソートすること、並びに
    (h)各バケットごとに、各バケットが含む前記オブジェクトの前記境界ボックスを計算すること
    の階層状の実行を含む、請求項1に記載のシステムにおける一層の改良。
  3. 前記ツリー構造の内部ノードが、2つのクリッピング面及び1対の子へのポインタによって記述される、請求項2に記載のシステムにおける一層の改良。
  4. 被分裂面候補が、前記内部ノードの境界ボックスに適合せず、前記場面のグローバル境界ボックスによって判定され、その結果、境界ボックスが前記階層を通して可能な限り立方体として維持される、請求項3に記載のシステムにおける一層の改良。
  5. 前記子ポインタの下位2ビットを、前記軸又はリーフを示すのに使うことができるように、すべてのノードが、選択されたバイトベースの境界上に整列される、請求項2に記載のシステムにおける一層の改良。
  6. リーフノードは、参照されるオブジェクト及びオブジェクトの全体数への多ビットポインタからなる、請求項5に記載のシステムにおける一層の改良。
  7. 対応する有効光線セグメントが、重ならない2つの子の間にあるとき、光線がどの子とも交差しないことが可能であり、この追加ケースの処理が、空きリーフが格納される必要がないように、空きリーフを暗黙的にスキップする、請求項2に記載のシステムにおける一層の改良。
  8. 交差が判定されるとすぐに、前記階層ツリーの分岐が現在の交差よりさらに離れたボリューム要素を表す場合は分岐を剪定してよい、請求項7に記載のシステムにおける一層の改良。
  9. 光線が横断する場合、又は形状がこの光線に対して可視的である場合のみ、前記階層状加速データ構造の構築を含む、請求項2に記載のシステムにおける一層の改良。
  10. オブジェクトソートが適所で行われるので、未だに細分されていないボリューム要素に印をつけるためのフラグのみが要求され、光線を横断するとき、前記フラグがセットされている場合は細分が実施される、請求項9に記載のシステムにおける一層の改良。
  11. 前記階層状加速データ構造のノードに含まれるすべてのオブジェクトが専用のメモリキャッシュに収まる場合、前記ノードを完全に細分することを含む、請求項10に記載のシステムにおける一層の改良。
  12. 光線のアレイの追跡を含む、請求項2に記載のシステムにおける一層の改良。
  13. 前記境界間隔階層に関連したフラスタム光線カリング技法の使用を含む、請求項12に記載のシステムにおける一層の改良。
  14. 上記方法によって処理及びメモリ構造を構築することを含み、前記処理及びメモリ構造は、
    画像三角形をバケットにソートし対応するバケット値を記憶装置上に格納することによって前処理すること、
    描画のために、ただちに前記三角形に対する前記ツリーを構築する必要なく、前記バケットから最上位境界間隔階層を作成することであって、光線が交差する各バケットが、前記ツリーのオンデマンド作成を使用して独自のツリーを作成すること
    を提供するように動作可能であり、
    前記バケットの三角形及び前記加速データ構造が、動的又は固定ユーザ定義サイズどちらかのキャッシュに格納され、
    最大数の三角形を有する前記バケットが、最大メモリフットプリントを定義する、請求項2に記載のシステムにおける一層の改良。
  15. 要求されるメモリは、前もって、光線追跡されるべきオブジェクトの数で線形的に境界を定めることができる、請求項2に記載のシステムにおける一層の改良。
  16. ただ1つのクリッピング面の使用を含む、請求項2に記載のシステムにおける一層の改良。
  17. 4つのクリッピング面の使用を含む、請求項2に記載のシステムにおける一層の改良。
  18. オンデマンドのみでの前記階層状光線追跡加速データ構造の構築を構築することを含む、請求項2に記載のシステムにおける一層の改良。
  19. 分裂面の片側にある、又は前記分裂面と交差する光線の束の前記境界ボックスを判定すること、及び
    前記ボックスが、前記ツリーの前記内部ノードで識別される前記分裂面の片側にある場合、この分岐を一層の横断に使うこと、
    前記光線境界ボックスと交差するリーフノード又は面に遭遇した場合、このノードを、光線の前記束に対する共通エントリノードと識別し、次いで、前記加速データ構造のルートノードから前記光線を横断するのではなく、エントリノードから横断を開始することを含む、請求項9に記載のシステムにおける一層の改良。
  20. コンピュータ及び表示要素を備えるコンピュータグラフィックスシステムであって、前記表示要素は、前記コンピュータからの表示制御用電気出力に応答して、人間が知覚可能な画像を表示するように動作可能であり、前記コンピュータは、前記画像中のピクセルに関するピクセル値の算出に基づいて、前記表示制御用電気出力を生成するように動作可能であり、それぞれのピクセル値は、模擬カメラの画像面上に記録される場面中の点を表し、前記コンピュータは、光線追跡方法を用いて画像に対するピクセル値を生成するように動作可能であり、前記光線追跡方法は、光線ツリー及び関連した光線追跡データ構造の使用を含み、前記光線ツリーは、選択された方向に沿って前記ピクセルから場面中に発せられた少なくとも1本の光線を含み、前記光線追跡方法は、前記場面中での光線とオブジェクトの表面との交差の算出をさらに含み、前記光線追跡は、画像中のオブジェクトの処理の結果に応答して判定されるシステムにおけるコンピュータソフトウェア製品であって、
    コンピュータ可読な形でコンピュータ可読媒体に格納されたコンピュータ実行可能コードを備え、前記コンピュータソフトウェア製品が、前記コンピュータ可読媒体上に格納され、前記コンピュータが、ツリー構造を含む階層状光線追跡加速データ構造を構築することであって、ツリー構造のノードが、場面中の1組のオブジェクトを左オブジェクトと右オブジェクトに分割するための軸平行場面境界ボックス及び2つの並列面定義に基づく境界間隔階層を使用して生成されること、並びに被分裂面をオブジェクト境界ボックスに合致させることを可能にするように前記コンピュータによって実行可能なコンピュータ実行可能コードをさらに備え、
    前記2つの面が、x、y、又はz軸のうち選択された1つに垂直であり、
    分裂面を与えられた場合、左/右選択基準に基づいて、画像中の各オブジェクトが左又は右どちらかに分類され、子ノードの2つの分裂面値が、それぞれ、前記左及び右オブジェクトの最大及び最小座標によって判定され、
    境界ボックス及び前記選択された軸を与えられた場合、左の子Lが、前記選択された軸に沿った左オブジェクトの座標の最大値を第1の面で置き換えることから生じ、右の子Rが、右オブジェクトの座標の最小値を第2の面で置き換えることから生じ、結果として生じたどのゼロボリュームも、空の子を表すのに使われ、
    分裂面が、
    (a)中央にある長辺に沿った軸平行場面境界ボックスを階層状に細分することによって候補分裂面を選択することであって、すべての候補分裂面が規則的なグリッドを形成すること、
    (b)候補面が、細分するべきボリューム要素の前記境界ボックスの外側にある場合、前記ボリューム要素が存在する半分以降の候補面で継続すること
    によって判定され、
    さらに、
    (a)前記境界ボックスをオブジェクト境界ボックスに再帰的に分割すること、
    (b)被分裂面候補が重複なしでオブジェクトを分離する場合、結果として生じた被分裂面を左及び右にある前記オブジェクトに合わせ、そうすることによって空き空間を最大化すること、並びに
    (c)所定の数を超えるオブジェクトが残っていない場合、前記再帰を終了すること
    を含む、コンピュータソフトウェア製品。
  21. A.前記左/右選択基準は、分裂面を与えられた場合、画像中の各オブジェクトを、前記面のどちら側が最も伸びているかに応じて左又は右どちらかに分類することを含み、
    B.前記階層状光線追跡加速データ構造の前記構築が、バケットソートに基づき、
    (a)空間を分割する順序づけられた規則的なグリッドの解像度を判定するために、場面境界ボックス及び平均的オブジェクトサイズを計算すること、或いは、ユーザ指定解像度を用いること、
    (b)各グリッドセルごとにカウンタを割り振ること、
    (c)各々がそれぞれのグリッドセルに対応するすべてのカウンタをゼロに初期化すること、
    (d)各オブジェクトごとに点を選択して、前記選択された点を含む前記グリッドセルに対する前記それぞれのカウンタを増分すること、
    (e)各カウンタ値をすべての先行カウンタの値の和で置き換えることによって、カウンタ値をオフセット値に変換すること、
    (f)グローバルオブジェクト索引アレイを割り振ること、
    (g)それぞれの各オブジェクトごとに、その点を含む前記グリッドセル用の前記カウンタを増分するために選択された前記対応する点を使って、前記オフセット値を用いて、前記オブジェクトをバケットにソートすること、並びに
    (h)各バケットごとに、各バケットが含む前記オブジェクトの前記境界ボックスを計算すること
    の階層状の実行を含む、請求項20に記載のコンピュータソフトウェア製品。
  22. コンピュータ及び表示要素を備えるコンピュータグラフィックスシステムであって、前記表示要素は、前記コンピュータからの表示制御用電気出力に応答して、人間が知覚可能な画像を表示するように動作可能であり、前記コンピュータは、前記画像中のピクセルに関するピクセル値の算出に基づいて、前記表示制御用電気出力を生成するように動作可能であり、それぞれのピクセル値は、模擬カメラの画像面上に記録される場面中の点を表し、前記コンピュータは、光線追跡方法を用いて画像に対するピクセル値を生成するように動作可能であり、前記光線追跡方法は、光線ツリー及び関連した光線追跡データ構造の使用を含み、前記光線ツリーは、選択された方向に沿って前記ピクセルから場面中に発せられた少なくとも1本の光線を含み、前記光線追跡方法は、前記場面中での光線とオブジェクトの表面との交差の算出をさらに含み、前記光線追跡は、画像中のオブジェクトの処理の結果に応答して判定されるシステムにおける方法であって、
    ツリー構造を含む階層状光線追跡加速データ構造を構築するステップであって、ツリー構造のノードが、場面中の1組のオブジェクトを左オブジェクトと右オブジェクトに分割するための軸平行場面境界ボックス及び2つの並列面定義に基づく境界間隔階層を使用して生成され、被分裂面をオブジェクト境界ボックスに合致させるステップを含み、
    前記2つの面が、x、y、又はz軸のうち選択された1つに垂直であり、
    分裂面を与えられた場合、左/右選択基準に基づいて、画像中の各オブジェクトが左又は右どちらかに分類され、子ノードの2つの分裂面値が、それぞれ、前記左及び右オブジェクトの最大及び最小座標によって判定され、
    境界ボックス及び前記選択された軸を与えられた場合、左の子Lが、前記選択された軸に沿った左オブジェクトの座標の最大値を第1の面で置き換えることから生じ、右の子Rが、右オブジェクトの座標の最小値を第2の面で置き換えることから生じ、結果として生じたどのゼロボリュームも、空の子を表すのに使われ、
    分裂面が、
    (a)中央にある長辺に沿った軸平行場面境界ボックスを階層状に細分することによって候補分裂面を選択することであって、すべての候補分裂面が規則的なグリッドを形成すること、
    (b)候補面が、細分するべきボリューム要素の前記境界ボックスの外側にある場合、前記ボリューム要素が存在する半分以降の候補面で継続すること
    によって判定され、
    さらに、
    (a)前記境界ボックスをオブジェクト境界ボックスに再帰的に分割するステップと、
    (b)被分裂面候補が重複なしでオブジェクトを分離する場合、結果として生じた被分裂面を左及び右にある前記オブジェクトに合わせ、そうすることによって空き空間を最大化するステップと、
    (c)所定の数を超えるオブジェクトが残っていない場合、前記再帰を終了するステップと
    を含む方法。
  23. A.前記左/右選択基準は、分裂面を与えられた場合、画像中の各オブジェクトを、前記面のどちら側が最も伸びているかに応じて左又は右どちらかに分類することを含み、
    B.前記階層状光線追跡加速データ構造の前記構築が、バケットソートに基づき、
    (a)空間を分割する順序づけられた規則的なグリッドの解像度を判定するために、場面境界ボックス及び平均的オブジェクトサイズを計算すること、或いは、ユーザ指定解像度を用いること、
    (b)各グリッドセルごとにカウンタを割り振ること、
    (c)各々がそれぞれのグリッドセルに対応するすべてのカウンタをゼロに初期化すること、
    (d)各オブジェクトごとに点を選択して、前記選択された点を含む前記グリッドセルに対する前記それぞれのカウンタを増分すること、
    (e)各カウンタ値をすべての先行カウンタの値の和で置き換えることによって、カウンタ値をオフセット値に変換すること、
    (f)グローバルオブジェクト索引アレイを割り振ること、
    (g)それぞれの各オブジェクトごとに、その点を含む前記グリッドセル用の前記カウンタを増分するために選択された前記対応する点を使って、前記オフセット値を用いて、前記オブジェクトをバケットにソートすること、並びに
    (h)各バケットごとに、各バケットが含む前記オブジェクトの前記境界ボックスを計算することの階層状の実行を含む、請求項22に記載の方法。
  24. コンピュータ及び表示要素を備えるコンピュータグラフィックスシステムであって、前記表示要素は、前記コンピュータからの表示制御用電気出力に応答して、人間が知覚可能な画像を表示するように動作可能であり、前記コンピュータは、前記画像中のピクセルに関するピクセル値の算出に基づいて、前記表示制御用電気出力を生成するように動作可能であり、それぞれのピクセル値は、模擬カメラの画像面上に記録される場面中の点を表し、前記コンピュータは、光線追跡方法を用いて画像に対するピクセル値を生成するように動作可能であり、前記光線追跡方法は、光線ツリー及び関連した光線追跡データ構造の使用を含み、前記光線ツリーは、選択された方向に沿って前記ピクセルから場面中に発せられた少なくとも1本の光線を含み、前記光線追跡方法は、前記場面中での光線とオブジェクトの表面との交差の算出をさらに含み、前記光線追跡は、画像中のオブジェクトの処理の結果に応答して判定されるシステムにおけるサブシステムであって、
    ツリー構造を含む階層状光線追跡加速データ構造を構築する手段であって、ツリー構造のノードが、場面中の1組のオブジェクトを左オブジェクトと右オブジェクトに分割するための軸平行場面境界ボックス及び2つの並列面定義に基づく境界間隔階層を使用して生成され、被分裂面をオブジェクト境界ボックスに合致させる手段を備え、
    前記2つの面が、x、y、又はz軸のうち選択された1つに垂直であり、
    分裂面を与えられた場合、左/右選択基準に基づいて、画像中の各オブジェクトが左又は右どちらかに分類され、子ノードの2つの分裂面値が、それぞれ、前記左及び右オブジェクトの最大及び最小座標によって判定され、
    境界ボックス及び前記選択された軸を与えられた場合、左の子Lが、前記選択された軸に沿った左オブジェクトの座標の最大値を第1の面で置き換えることから生じ、右の子Rが、右オブジェクトの座標の最小値を第2の面で置き換えることから生じ、結果として生じたどのゼロボリュームも、空の子を表すのに使われ、
    分裂面が、
    (a)中央にある長辺に沿った軸平行場面境界ボックスを階層状に細分することによって候補分裂面を選択することであって、すべての候補分裂面が規則的なグリッドを形成すること、
    (b)候補面が、細分するべきボリューム要素の前記境界ボックスの外側にある場合、前記ボリューム要素が存在する半分以降の候補面で継続すること
    によって判定され、
    さらに、
    (a)前記境界ボックスをオブジェクト境界ボックスに再帰的に分割すること、
    (b)被分裂面候補が重複なしでオブジェクトを分離する場合、結果として生じた被分裂面を左及び右にある前記オブジェクトに合わせ、そうすることによって空き空間を最大化すること、並びに
    (c)所定の数を超えるオブジェクトが残っていない場合、前記再帰を終了すること
    を含むサブシステム。
  25. A.前記左/右選択基準は、分裂面を与えられた場合、画像中の各オブジェクトを、前記面のどちら側が最も伸びているかに応じて左又は右どちらかに分類することを含み、
    B.前記階層状光線追跡加速データ構造の前記構築が、バケットソートに基づき、
    (a)空間を分割する順序づけられた規則的なグリッドの解像度を判定するために、場面境界ボックス及び平均的オブジェクトサイズを計算すること、或いは、ユーザ指定解像度を用いること、
    (b)各グリッドセルごとにカウンタを割り振ること、
    (c)各々がそれぞれのグリッドセルに対応するすべてのカウンタをゼロに初期化すること、
    (d)各オブジェクトごとに点を選択して、前記選択された点を含む前記グリッドセルに対する前記それぞれのカウンタを増分すること、
    (e)各カウンタ値をすべての先行カウンタの値の和で置き換えることによって、カウンタ値をオフセット値に変換すること、
    (f)グローバルオブジェクト索引アレイを割り振ること、
    (g)それぞれの各オブジェクトごとに、その点を含む前記グリッドセル用の前記カウンタを増分するために選択された前記対応する点を使って、前記オフセット値を用いて、前記オブジェクトをバケットにソートすること、並びに
    (h)各バケットごとに、各バケットが含む前記オブジェクトの前記境界ボックスを計算することの階層状の実行を含む、請求項24に記載のサブシステム。
JP2009506777A 2006-04-19 2007-04-19 瞬時光線追跡 Active JP4858795B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US79306306P 2006-04-19 2006-04-19
US60/793,063 2006-04-19
US11/474,517 US7499053B2 (en) 2000-06-19 2006-06-23 Real-time precision ray tracing
US11/474,517 2006-06-23
PCT/US2007/066972 WO2007124363A2 (en) 2006-04-19 2007-04-19 Instant ray tracing

Publications (2)

Publication Number Publication Date
JP2009534759A true JP2009534759A (ja) 2009-09-24
JP4858795B2 JP4858795B2 (ja) 2012-01-18

Family

ID=38625737

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009506777A Active JP4858795B2 (ja) 2006-04-19 2007-04-19 瞬時光線追跡

Country Status (4)

Country Link
EP (1) EP2008249B1 (ja)
JP (1) JP4858795B2 (ja)
CA (1) CA2649745A1 (ja)
WO (1) WO2007124363A2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017188098A (ja) * 2016-03-21 2017-10-12 イマジネイション テクノロジーズ リミテッド 階層融合

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8188997B2 (en) 2000-06-19 2012-05-29 Mental Images Gmbh Accelerated ray tracing using shallow bounding volume hierarchies
WO2009063319A2 (en) * 2007-11-15 2009-05-22 Mental Images Gmbh Shallow bounding volume hierarchies for accelerated ray tracing
JP5485257B2 (ja) * 2008-03-21 2014-05-07 コースティック グラフィックス インコーポレイテッド レイトレース・レンダリングのための並列化された交差テストおよびシェーディングのアーキテクチャ
KR101475779B1 (ko) * 2008-06-02 2014-12-23 삼성전자주식회사 3d 영상 처리 방법
KR101610194B1 (ko) * 2008-10-15 2016-04-07 삼성전자주식회사 영상처리를 위한 데이터 처리 장치 및 방법
US8350846B2 (en) * 2009-01-28 2013-01-08 International Business Machines Corporation Updating ray traced acceleration data structures between frames based on changing perspective
US11010956B2 (en) 2015-12-09 2021-05-18 Imagination Technologies Limited Foveated rendering
US10235601B1 (en) 2017-09-07 2019-03-19 7D Labs, Inc. Method for image analysis
US11334762B1 (en) 2017-09-07 2022-05-17 Aurora Operations, Inc. Method for image analysis
CN109215106B (zh) * 2018-08-30 2023-01-03 东北大学 一种基于动态场景的实时光线追踪加速结构的方法
CN111967174A (zh) * 2020-07-30 2020-11-20 北京应用物理与计算数学研究所 基于光线网格的激光动力学求解方法及系统
EP4205011A1 (en) * 2020-08-31 2023-07-05 Siemens Industry Software Inc. Method of bounding spatial data

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003271988A (ja) * 2002-03-15 2003-09-26 Denso Corp 画像生成装置及びプログラム

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5963210A (en) * 1996-03-29 1999-10-05 Stellar Semiconductor, Inc. Graphics processor, system and method for generating screen pixels in raster order utilizing a single interpolator
WO2001063561A1 (en) * 2000-02-25 2001-08-30 The Research Foundation Of State University Of New York Apparatus and method for volume processing and rendering
US7187379B2 (en) * 2000-06-19 2007-03-06 Mental Images Gmbh Generating an image using sample points determined on a sub-pixel grid offset using elements of a low-discrepancy sequence
US7050053B2 (en) * 2002-01-30 2006-05-23 Sun Microsystems, Inc. Geometric folding for cone-tree data compression

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003271988A (ja) * 2002-03-15 2003-09-26 Denso Corp 画像生成装置及びプログラム

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017188098A (ja) * 2016-03-21 2017-10-12 イマジネイション テクノロジーズ リミテッド 階層融合
US11341110B2 (en) 2016-03-21 2022-05-24 Imagination Technologies Limited Hierarchy merging
JP7100427B2 (ja) 2016-03-21 2022-07-13 イマジネイション テクノロジーズ リミテッド 階層融合

Also Published As

Publication number Publication date
WO2007124363A2 (en) 2007-11-01
WO2007124363A3 (en) 2008-04-10
EP2008249B1 (en) 2013-07-17
JP4858795B2 (ja) 2012-01-18
EP2008249A2 (en) 2008-12-31
CA2649745A1 (en) 2007-11-01
EP2008249A4 (en) 2010-10-27

Similar Documents

Publication Publication Date Title
JP4858795B2 (ja) 瞬時光線追跡
US7495664B2 (en) Instant ray tracing
US7659894B2 (en) Terminating spatial partition hierarchies by a priori bounding memory
US8411088B2 (en) Accelerated ray tracing
US20230298258A1 (en) Watertight tay triangle intersection
US8570322B2 (en) Method, system, and computer program product for efficient ray tracing of micropolygon geometry
US7499053B2 (en) Real-time precision ray tracing
US8188997B2 (en) Accelerated ray tracing using shallow bounding volume hierarchies
US11069124B2 (en) Systems and methods for reducing rendering latency
US7952583B2 (en) Quasi-monte carlo light transport simulation by efficient ray tracing
US8773422B1 (en) System, method, and computer program product for grouping linearly ordered primitives
JP4972642B2 (ja) 高精度の実時間レイトレーシング
WO2009044282A2 (en) Quasi-monte carlo light transport simulation by efficient ray tracing
WO2009063319A2 (en) Shallow bounding volume hierarchies for accelerated ray tracing
US20060066616A1 (en) Diffuse photon map decomposition for parallelization of global illumination algorithm
WO2008091958A2 (en) Terminating spatial partition hierarchies by a priori bounding memory
Yılmaz et al. Conservative occlusion culling for urban visualization using a slice-wise data structure
Peng et al. Gpu-based streaming for parallel level of detail on massive model rendering
Popescu et al. Sample-based cameras for feed forward reflection rendering
Schütz et al. SimLOD: Simultaneous LOD Generation and Rendering for Point Clouds
Chhugani High fidelity walkthroughs of large virtual environments
Winberg Examining automatic texture mapping of arbitrary terrains
Wang New algorithmic techniques for large scale volumetric data visualization on parallel architectures
Shi Efficient Rendering of Scenes with Dynamic Lighting Using a Photons Queue and Incremental Update Algorithm
Hua et al. Animating and Rendering One Million Trees in Real Time

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110301

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110531

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: 20111004

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: 20111019

R150 Certificate of patent or registration of utility model

Ref document number: 4858795

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: 20141111

Year of fee payment: 3

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250