JP2023548028A - 境界ボリューム階層生成 - Google Patents
境界ボリューム階層生成 Download PDFInfo
- Publication number
- JP2023548028A JP2023548028A JP2023523252A JP2023523252A JP2023548028A JP 2023548028 A JP2023548028 A JP 2023548028A JP 2023523252 A JP2023523252 A JP 2023523252A JP 2023523252 A JP2023523252 A JP 2023523252A JP 2023548028 A JP2023548028 A JP 2023548028A
- Authority
- JP
- Japan
- Prior art keywords
- bvh
- nodes
- box
- identifying
- generating
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 claims abstract description 38
- 238000005192 partition Methods 0.000 claims abstract description 29
- 238000003860 storage Methods 0.000 claims description 9
- 238000010586 diagram Methods 0.000 abstract description 17
- 238000012360 testing method Methods 0.000 description 40
- 230000006870 function Effects 0.000 description 9
- 238000009877 rendering Methods 0.000 description 9
- 230000001133 acceleration Effects 0.000 description 7
- 230000005484 gravity Effects 0.000 description 5
- 230000010354 integration Effects 0.000 description 5
- 238000004364 calculation method Methods 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 241000473391 Archosargus rhomboidalis Species 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 238000005266 casting Methods 0.000 description 1
- 239000003086 colorant Substances 0.000 description 1
- 238000004040 coloring Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000007596 consolidation process Methods 0.000 description 1
- 238000010304 firing Methods 0.000 description 1
- 239000012530 fluid Substances 0.000 description 1
- 238000005286 illumination Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 239000013589 supplement Substances 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 238000000844 transformation Methods 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/06—Ray-tracing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T17/00—Three dimensional [3D] modelling, e.g. data description of 3D objects
- G06T17/005—Tree description, e.g. octree, quadtree
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T17/00—Three dimensional [3D] modelling, e.g. data description of 3D objects
- G06T17/10—Constructive solid geometry [CSG] using solid primitives, e.g. cylinders, cubes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2210/00—Indexing scheme for image generation or computer graphics
- G06T2210/12—Bounding box
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T9/00—Image coding
- G06T9/40—Tree coding, e.g. quadtree, octree
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Graphics (AREA)
- Geometry (AREA)
- Software Systems (AREA)
- Multimedia (AREA)
- Image Generation (AREA)
Abstract
レイトレーシング動作を行うための技術が提供される。本技術は、境界ボリューム階層(bounding volume hierarchy、「BVH」)の境界ボックスに関連するプリミティブのグループの境界ボックス表面積重み付き重心を識別することと、重心において、幾何学的なサブグループを定義する候補分割を生成することと、最小の表面積境界ボックスを有する候補分割を識別することと、識別された候補分割の幾何学的なサブグループの幾何形状を含むBVHのノードを生成することと、を含む。【選択図】図9
Description
(関連出願の相互参照)
本願は、2020年10月29日に出願された「BOUNDING VOLUME HIERARCHY GENERATION」と題する米国仮特許出願第63/107,166号の利益を主張し、その全体が参照により本明細書に組み込まれる。本願は、2020年12月7日に出願された「BOUNDING VOLUME HIERARCHY GENERATION」と題する米国特許出願第17/114,485号の利益を主張し、その全体が参照により本明細書に組み込まれる。
本願は、2020年10月29日に出願された「BOUNDING VOLUME HIERARCHY GENERATION」と題する米国仮特許出願第63/107,166号の利益を主張し、その全体が参照により本明細書に組み込まれる。本願は、2020年12月7日に出願された「BOUNDING VOLUME HIERARCHY GENERATION」と題する米国特許出願第17/114,485号の利益を主張し、その全体が参照により本明細書に組み込まれる。
レイトレーシングは、シミュレートされた光線が物体交差を試験するために投射され、ピクセルが光線投射の結果に基づいて着色される、一種のグラフィックスレンダリング技術である。レイトレーシングは、ラスタライズベースの技術よりも計算コストが高くなるが、より物理的に正確な結果を生み出す。レイトレーシング動作の改善が絶えず行われている。
添付の図面と共に例として与えられる以下の説明から、より詳細な理解を得ることができる。
レイトレーシング動作を行うための技術が提供される。本技術は、境界ボリューム階層(bounding volume hierarchy、「BVH」)の境界ボックスに関連付けられたプリミティブのグループの境界ボックス表面積重み付き重心(bounding-box-surface-area-weighted centroid)を識別することと、重心において、幾何学的なサブグループを定義する候補分割を生成することと、最小の表面積境界ボックスを有する候補分割を識別することと、識別された候補分割の幾何学的なサブグループの幾何形状を含むBVHのノードを生成することと、を含む。
図1は、本開示の1つ以上の特徴を実装することができる例示的なデバイス100のブロック図である。デバイス100は、例えば、コンピュータ、ゲームデバイス、ハンドヘルドデバイス、セットトップボックス、テレビ、携帯電話、タブレットコンピュータ、又は、他のコンピューティングデバイスのうち何れかであり得るが、これらに限定されない。デバイス100は、プロセッサ102、メモリ104、記憶装置106、1つ以上の入力デバイス108、及び、1つ以上の出力デバイス110を含む。また、デバイス100は、1つ以上の入力ドライバ112及び1つ以上の出力ドライバ114を含む。入力ドライバ112の何れも、ハードウェア、ハードウェアとソフトウェアとの組み合わせ、又は、ソフトウェアとして具体化され、入力デバイス108を制御する(例えば、動作を制御し、入力ドライバ112からの入力を受信し、入力ドライバ112にデータを提供する)役割を果たす。同様に、出力ドライバ114の何れも、ハードウェア、ハードウェアとソフトウェアとの組み合わせ、又は、ソフトウェアとして具体化され、出力デバイス110を制御する(例えば、動作を制御し、出力ドライバ114からの入力を受信し、出力ドライバ114にデータを提供する)役割を果たす。デバイス100は、図1に示されていない追加の構成要素を含むことができることを理解されたい。
様々な代替例では、プロセッサ102は、中央処理ユニット(central processing unit、CPU)、グラフィック処理ユニット(graphics processing unit、GPU)、同じダイ上に配置されたCPU及びGPU、又は、1つ以上のプロセッサコアを含み、異なる実施形態では、各プロセッサコアは、CPU又はGPUである。様々な代替例では、メモリ104は、プロセッサ102と同じダイ上に位置するか、又は、プロセッサ102とは別に位置する。メモリ104は、揮発性又は不揮発性メモリ(例えば、ランダムアクセスメモリ(random access memory、RAM)、ダイナミックRAM、キャッシュ)を含む。
記憶装置106は、固定又はリムーバブル記憶装置(例えば、限定するものではないが、ハードディスクドライブ、ソリッドステートドライブ、光ディスク、フラッシュドライブ)を含む。入力デバイス108は、キーボード、キーパッド、タッチスクリーン、タッチパッド、検出器、マイクロフォン、加速度計、ジャイロスコープ、生体認証スキャナ、又は、ネットワーク接続(例えば、無線IEEE802シグナルの送信及び/又は受信のための無線ローカルエリアネットワークカード)を含むが、これらに限定されない。出力デバイス110は、ディスプレイ、スピーカ、プリンタ、触覚フィードバックデバイス、1つ以上の光、アンテナ、又は、ネットワーク接続(例えば、無線IEEE802シグナルの送信及び/又は受信のための無線ローカルエリアネットワークカード)を含むが、これらに限定されない。
入力ドライバ112及び出力ドライバ114は、それぞれ、入力デバイス108及び出力デバイス110とインターフェースし、それらをドライブするように構成された1つ以上のハードウェア、ソフトウェア及び/又はファームウェア構成要素を含む。入力ドライバ112は、プロセッサ102及び入力デバイス108と通信し、プロセッサ102が入力デバイス108から入力を受信できるようにする。出力ドライバ114は、プロセッサ102及び出力デバイス110と通信し、プロセッサ102が出力デバイス110に出力を送信できるようにする。出力ドライバ114は、表示デバイス118に結合された加速処理デバイス(accelerated processing device、「APD」)116を含み、これは、いくつかの例では、物理表示デバイス又はリモートディスプレイプロトコルを使用して出力を示す模擬デバイスである。APD116は、プロセッサ102から計算コマンド及びグラフィックスレンダリングコマンドを受け入れて、それらの計算及びグラフィックスレンダリングコマンドを処理し、表示のために表示デバイス118にピクセル出力を提供するように構成されている。以下で更に詳細に説明するように、APD116は、単一命令複数データ(single-instruction-multiple-data、SIMD)パラダイムに従って計算を行うように構成された1つ以上の並列処理ユニットを含む。こうして、様々な機能は、本明細書では、APD116によって又はAPD116と併せて実行されるものとして説明されているが、様々な代替例では、APD116によって行われるものとして説明される機能は、ホストプロセッサ(例えば、プロセッサ102)によって駆動されず、表示デバイス118にグラフィック出力を提供するように構成された同様の能力を有する他のコンピューティングデバイスによって追加的又は代替的に行われる。例えば、SIMDパラダイムに従って処理タスクを行う任意の処理システムが、本明細書に説明される機能を行うように構成されることが企図される。代替的に、SIMDパラダイムに従って処理タスクを行わないコンピューティングシステムが、本明細書に説明される機能を行うことが企図される。
図2は、一例による、デバイス100及びAPD116の詳細を示す図である。プロセッサ102(図1)は、オペレーティングシステム120、ドライバ122及びアプリケーション126を実行し、また、いくつかの状況では、代替的又は追加的に他のソフトウェアを実行する。オペレーティングシステム120は、ハードウェアリソースを管理すること、サービス要求を処理すること、プロセス実行をスケジュールし、制御すること、及び、他の動作を行うこと等のように、デバイス100の様々な態様を制御する。APDドライバ122は、APD116の動作を制御し、グラフィックスレンダリングタスク又は他のワーク等のタスクを処理のためにAPD116に送信する。また、APDドライバ122は、APD116の処理構成要素(以下で更に詳細に考察されるSIMDユニット138等)によって実行するためのプログラムをコンパイルするジャストインタイムコンパイラを含む。
APD116は、並列処理に適しているグラフィック動作及び非グラフィック動作等のように、選択された機能のためのコマンド及びプログラムを実行する。様々な例では、APD116は、プロセッサ102から受信したコマンドに基づいて、ピクセル動作、幾何計算及び表示デバイス118への画像のレンダリング等のグラフィックスパイプライン動作を実行するために使用される。また、APD116は、プロセッサ102から受信したコマンドに基づいて、ビデオ、物理シミュレーション、計算流体力学又は他のタスクに関連する動作等のように、グラフィック動作に直接関連しない計算処理動作を実行する。いくつかの例では、これらの計算処理動作は、SIMDユニット138上の計算シェーダを実行することによって行われる。
APD116は、プロセッサ102(又は別のユニット)の要求で、SIMDパラダイムに従って並列の様態で演算を行うように構成された1つ以上のSIMDユニット138を含む計算ユニット132を含む。SIMDパラダイムは、複数の処理要素が単一のプログラム制御フローユニット及びプログラムカウンタを共有し、したがって同じプログラムを実行するが、そのプログラムを異なるデータで実行することができるものである。一例では、各SIMDユニット138は、16個のレーンを含み、各レーンは、SIMDユニット138内の他のレーンと同時に同じ命令を実行するが、その命令を異なるデータで実行することが可能である。いくつかの状況では、レーンは、全てのレーンが所定の命令を実行する必要がない場合、予測でオフに切り替える。いくつかの状況では、予測は、制御フローが分岐するプログラムの実行にも使用される。より具体的には、制御フローが個々のレーンによって行われる計算に基づいている条件付き枝又は他の命令を有するプログラムについては、現在実行されていない制御フローパスに対応するレーンの予測、及び、異なる制御フローパスのシリアル実行が、任意の制御フローを可能にする。
計算ユニット132内の実行の基本的単位は、ワークアイテムである。各ワークアイテムは、特定のレーンにおいて並列で実行されるプログラムの単一のインスタンス化を表す。様々な例では、ワークアイテムは、単一のSIMDユニット138上の「ウェーブフロント(wavefront)」として同時に(又は部分的に同時に、及び部分的に順次に)実行される。1つ以上のウェーブフロントが「ワークグループ」に含まれ、これは、同じプログラムを実行するように指定されたワークアイテムの集合体を含む。いくつかの実施形態では、ワークグループは、ワークグループを構成するウェーブフロントのそれぞれを実行することによって実行される。代替例では、ウェーブフロントは、単一のSIMDユニット138上で、又は、異なるSIMDユニット138上で実行される。いくつかの実施形態では、ウェーブフロントは、単一のSIMDユニット138上で同時に(又は擬似同時に)実行されるワークアイテムの最大の集合体である。「擬似同時」実行は、SIMDユニット138内のレーンの数よりも大きいウェーブフロントの場合に生じる。そのような状況では、ウェーブフロントは、複数のサイクルにわたって実行され、ワークアイテムの異なる集合体が、異なるサイクルで実行される。APDスケジューラ136は、計算ユニット132及びSIMDユニット138上の様々なワークグループ及びウェーブフロントのスケジューリングに関連する動作を行うように構成されている。
計算ユニット132によって与えられる並列処理は、ピクセル値計算、頂点変換及び他のグラフィック動作等のグラフィック関連動作に好適である。したがって、場合によっては、プロセッサ102からのグラフィック処理コマンドを受け入れるグラフィックスパイプライン134は、並列で実行するために計算タスクを計算ユニット132に提供する。
また、計算ユニット132は、グラフィックに関連しないか、又は、グラフィックスパイプライン134の「通常の」動作の一部(例えば、グラフィックスパイプライン134の動作に対して行われる処理を補足するために行われるカスタム動作)として行われない計算タスクを行うために使用される。プロセッサ102上で実行されるアプリケーション126又は他のソフトウェアは、そのような計算タスクを定義するプログラムを、実行のためにAPD116に送信する。
計算ユニット132を含むAPD116は、シミュレート光線とシーン内のオブジェクトとの交差を試験することによって3Dシーンをレンダリングする技術である、レイトレーシングを実装する。いくつかの実施形態では、レイトレーシングに関与するワークの多くは、以下で更に詳細に説明するように、計算ユニット132内のSIMDユニット138上で実行されるプログラマブルシェーダプログラムによって行われる。
図3は、一例による、レイトレーシング技術を使用してグラフィックをレンダリングするためのレイトレーシングパイプライン300を示す図である。レイトレーシングパイプライン300は、レイトレーシングを利用してシーンをレンダリングすることに関与する動作及びエンティティの概要を提供する。いくつかの実施形態では、光線生成シェーダ302、任意のヒットシェーダ306、交差シェーダ307、最も近いヒットシェーダ310、及び、ミスシェーダ312は、機能がSIMDユニット138内で実行されるシェーダプログラムによって行われるレイトレーシングパイプラインステージを表すシェーダ実装ステージである。各特定のシェーダ実装ステージでの特定のシェーダプログラムの何れも、アプリケーション提供コードによって(すなわち、アプリケーションコンパイラによって事前にコンパイルされ、及び/又は、ドライバ122によってコンパイルされた、アプリケーション開発者によって提供されるコードによって)定義される。加速構造横断ステージ304は、光線交差試験を行って、光線が三角形にヒットするかどうかを判定する。他のプログラマブルシェーダステージ(光線生成シェーダ302、任意のヒットシェーダ306、最も近いヒットシェーダ310、ミスシェーダ312)は、SIMDユニット138上で実行されるシェーダプログラムとして実装される。加速構造横断ステージは、ソフトウェアに(例えば、SIMDユニット138上で実行されるシェーダプログラムとして)、ハードウェアに、又は、ハードウェアとソフトウェアとの組み合わせとして実装される。レイトレーシングパイプライン300は、様々な実施形態では、部分的若しくは完全にソフトウェアに、又は、部分的若しくは完全にハードウェアに編成され、様々な実施形態では、プロセッサ102、スケジューラ136によって、それらの組み合わせによって、又は、部分的に若しくは完全に任意の他のハードウェア及び/若しくはソフトウェアユニットによって、編成される。
例では、レイトレーシングパイプライン300を通る横断は、自律的若しくはプロセッサ102の制御下の何れかで、スケジューラ136によって部分的若しくは完全に行われるか、又は、SIMDユニット138のうち1つ以上で実行されるシェーダプログラム(境界ボリューム階層横断シェーダプログラム等)によって部分的若しくは完全に行われる。いくつかの例では、ボックス及び三角形(加速構造横断ステージ304の内側の)に対して光線を試験することは、ハードウェア加速されている(固定機能ハードウェアユニットがそれらの試験のステップを行うことを意味する)。他の例では、そのような試験は、1つ以上のSIMDユニット138上で実行されるシェーダプログラム等のソフトウェアによって行われる。本明細書では、「レイトレーシングパイプラインが[あることを]する」という言い回しが使用される場合、これは、レイトレーシングパイプライン300を実装するハードウェア及び/又はソフトウェアがそのことをすることを意味する。図3のSIMDユニット138上で実行されるものとして説明されているが、他の実施形態では、SIMD能力を有するか否かにかかわらず(例えば、プロセッサ102)、他のハードウェア(1つ以上のプロセッサ等)が、代替的に、示されたレイトレーシングパイプライン300のシェーダプログラムを実行することを理解されたい。
いくつかの動作モードでは、レイトレーシングパイプライン300は、以下の態様で動作する。光線生成シェーダ302が行われる。光線生成シェーダ302は、三角形に対して試験する光線のデータを設定し、三角形と交差するために光線を試験する加速構造横断ステージ304を要求する。
加速構造横断ステージ304は、シーン及びシーン内のオブジェクトを記述するデータ構造である加速構造を横断し、シーン内の三角形に対して光線を試験する。いくつかの例では、この横断の間、光線と交差する三角形について、それらのシェーダが交差する三角形の素材によって指定されている場合、レイトレーシングパイプライン300は、任意のヒットシェーダ306及び/又は交差シェーダ307の実行をトリガする。複数の三角形を単一の光線によって交差させることができることに留意されたい。加速構造横断ステージは、光線起点に最も近いものから光線起点から最も遠いものへの順序で加速構造を横断することが保証されていない。いくつかの例では、加速構造横断ステージ304は、光線がヒットする光線の起点に最も近い三角形に対して最も近いヒットシェーダ310の実行をトリガするか、又は、三角形がヒットしなかった場合、ミスシェーダをトリガする。
任意のヒットシェーダ306又は交差シェーダ307が、加速構造横断ステージ304からの交差を「拒否」することが可能であり、したがって、加速構造横断ステージ304は、光線との交差の発生が見つからない場合、又は、1つ以上の交差が見つかっているが、任意のヒットシェーダ306及び/又は交差シェーダ307によって全て拒否される場合に、ミスシェーダ312の実行をトリガすることに留意されたい。任意のヒットシェーダ306がヒットを「拒否」する例示的な状況として、加速構造横断ステージ304がヒットした場合に報告する三角形の少なくとも一部分が完全に透明(不可視)である場合が挙げられる。一例では、加速構造横断ステージ304は、透明性ではなく幾何形状を試験する。したがって、これらの例では、少なくともある程度の透明性を有する三角形との交差に起因して呼び出される任意のヒットシェーダ306は、報告された交差が、三角形の透明部分と「交差する」ためにヒットとしてカウントされるべきではないと判定する場合がある。最も近いヒットシェーダ310の典型的な使用は、素材のテクスチャに基づいて光線を着色することである。ミスシェーダ312の典型的な使用は、スカイボックスによって設定された色で光線を着色することである。様々な実施形態では、最も近いヒットシェーダ310及びミスシェーダ312のために定義されたシェーダプログラムは、光線を着色するため、及び/又は、他の動作を行うための多種多様な技術を実装することを理解されたい。
光線生成シェーダ302が光線を生成する典型的な方法は、後方レイトレーシングと呼ばれる技術を用いるものである。後方レイトレーシングでは、光線生成シェーダ302は、カメラの点に起点を有する光線を生成する。光線が画面に対応するように定義された平面を交差する点は、光線がその色を判定するために使用される画面上のピクセルを定義する。光線がオブジェクトにヒットする場合、そのピクセルは、最も近いヒットシェーダ310に基づいて着色される。光線がオブジェクトにヒットしない場合、ピクセルは、ミスシェーダ312に基づいて着色される。複数の光線がピクセルごとに投射されることが可能であり、ピクセルの最終の色は、ピクセルの光線の各々について判定された色のいくつかの組み合わせによって判定される。
任意のヒットシェーダ306、交差シェーダ307、最も近いヒットシェーダ310及びミスシェーダ312のうち何れかが、光線試験点でレイトレーシングパイプライン300に入る独自の光線を引き起こすことが可能である。これらの光線は、任意の目的に使用することができる。1つの一般的な使用は、環境照明又は反射を実装することである。一例では、最も近いヒットシェーダ310が呼び出された場合、最も近いヒットシェーダ310は、様々な方向に光線を引き起こす。引き起こされた光線によってヒットされた各オブジェクト又は光について、最も近いヒットシェーダ310は、最も近いヒットシェーダ310に対応するピクセルに照明強度及び色を追加する。レイトレーシングパイプライン300の様々な構成要素を使用してシーンをレンダリングする方法のいくつかの例が説明されているが、多種多様な技術のうち何れかが代替的に使用されることを理解されたい。
上述したように、光線がオブジェクトと交差するかどうかの判定は、本明細書では「光線交差試験」と呼ばれる。光線交差試験は、起点から光線を発射し、光線が幾何プリミティブ(例えば、三角形)と交差するかどうかを判定し、交差する場合、三角形交差の起点からどの程度の距離にあるのかを判定することを含む。効率を高めるために、レイトレーシング試験は、境界ボリューム階層等のように、加速構造と呼ばれる空間の表現を使用する。境界ボリューム階層では、各非葉ノードは、そのノードの全ての子供の幾何形状を境界付ける、軸整列境界ボックスを表す。一例では、ベースノードは、光線交差試験が行われている領域全体の最大範囲を表す。この例では、ベースノードは2つの子供を有し、各子供は、通常、領域全体をサブ分割する異なる軸整列境界ボックスを表す。それらの2つの子供の各々は、それらの親の空間をサブ分割する軸整列境界ボックスを表す2つの子ノードを有する等である。葉ノードは、光線交差試験が行われる三角形又は他の幾何プリミティブを表す。非葉ノードは、本明細書において「ボックスノード」と呼ばれることがあり、葉ノードは、本明細書において「三角形ノード」と呼ばれることがある。
境界ボリューム階層データ構造は、そのようなデータ構造が使用されておらず、したがってシーン内の全ての三角形を光線に対して試験する必要があるシナリオと比較して、光線‐三角形交差の数(これは、複雑であり、且つ、そのため、処理リソースの点で高価である)が低減されることを可能にする。具体的には、光線が特定の境界ボックスと交差せず、その境界ボックスが多数の三角形を境界付ける場合、そのボックス内の全ての三角形が試験から排除される。こうして、光線交差試験は、軸整列境界ボックスに対する光線の一連の試験として行われ、三角形に対する試験が続く。
図4は、一例による、境界ボリューム階層を示す図である。簡単にするために、階層が2Dで示されている。しかしながら、3Dへの拡張が単純であり、本明細書に説明される試験は、概して三次元で行われることを理解されたい。
境界ボリューム階層の空間表現402が図4の左側に示されており、境界ボリューム階層の木表現404が図4の右側に示されている。空間表現402及び木表現404の両方において、非葉ノードが文字「N」で表され、葉ノードが文字「O」で表されている。光線交差試験は、木404を通って横断することによって行われ、試験された各非葉ノードについて、その非葉ノードに対する試験が失敗した場合、そのノードの下の枝を排除する。一例では、光線は、O5と交差するが、他の三角形とは交差しない。試験は、N1に対して試験し、その試験が成功したことを判定する。試験は、N2対して試験し、試験が失敗したことを判定する(O5がN1内にないため)。この試験は、N2の全てのサブノードを排除し、N3に対して試験を行い、その試験が成功することに留意されたい。この試験は、N6及びN7を試験し、N6が成功するが、N7が失敗することに留意されたい。この試験は、O5及びO6を試験し、O5が成功するが、O6が失敗することに留意されたい。8つの三角形試験を試験する代わりに、2つの三角形試験(O5及びO6)並びに5つのボックス試験(N1、N2、N3、N6、N7)が行われる。
図4では、一例による、境界ボリューム階層(BVH)ビルダ450を示す図である。BVHビルダ450は、シーン幾何形状452を受け入れ、境界ボリューム階層404を生成する。シーン幾何形状452は、アプリケーション又は他のエンティティによって提供されるシーンを記述するプリミティブを含む。BVHビルダ450は、本明細書で説明される機能を行うように構成されたプロセッサ上で実行されるソフトウェア、本明細書で説明される機能を行うように構成されたハードワイヤード回路、又は、本明細書で説明される機能を共に行うように構成されたプロセッサ上で実行されるソフトウェア及びハードワイヤード回路の組み合わせとして実装される。様々な例では、BVHビルダ450は、プロセッサ102若しくはAPD116上で実行するようなコンピュータシステム(例えば、コンピュータシステム100)内にあり、又は、プロセッサ102若しくはAPD116内にあるハードウェアユニットである。様々な例では、BVHビルダ450は、シーンをレンダリングするために構築されたBVHを使用してレイトレーシングを行うコンピュータシステムとは異なるコンピュータシステム上で、コンパイル時にBVHを構築する。他の例では、BVHビルダ450は、レイトレーシング技術を使用してシーンをレンダリングする同じコンピュータ上で、ランタイム時にBVHを構築する。様々な例では、APD116のドライバ、アプリケーション又はハードウェアユニットが、このランタイムレンダリングを行う。次に、BVHを構築するための例示的な技術について説明する。
図5A及び図5Bは、一例による、シーンをサブ分割してBVHを構築するための例示的な動作を示す図である。これらの図の両方において、シーン501が示されている。シーン501は、複数の三角形502を含む。シーン501は、図4のシーン幾何形状452である。BVHビルダ450は、シーン501に基づいてBVHを生成する。
BVHを構築するための技術によれば、BVHビルダ450は、三角形502の各々について重心506を判定する。一例では、重心は、各頂点から対辺の中点に向かう線の交点である。また、BVHビルダ450は、三角形502の各々に対して軸整列境界ボックス504を判定する。各境界ボックス504は、各次元における三角形の最小範囲及び最大範囲によって定義されるボックスである。
BVHビルダ450は、シーン重心507を、三角形の全ての重心の境界ボックス表面積重み付き平均として判定する。三角形の全ての重心の境界ボックス表面積重み付き平均は、三角形502の重み付き重心の平均である。各三角形の重み付き重心は、三角形の重心の座標に、その三角形502の境界ボックス504を乗じたものである。平均は、そのような重み付き重心の各々の合計を三角形502の総表面積で除したものである。式の形では、この平均は次のように表される。
この式において、Wcentroidはシーン重心507である。Centroidtriは、三角形の重心である。SurfaceAreaaabbOfTriは、三角形502の軸整列境界ボックス504の表面積である。したがって、シーン重心507は、重心に各三角形502の境界ボックス表面積を乗じた合計を、全ての境界ボックス表面積の合計で除したものである。
シーン重心507に基づいて、BVHビルダ450は、シーン501のいくつかの候補スライス508を生成する。シーンの候補スライス508とは、異なるボックスノードに対応する異なる境界ボックスへのシーン501内の三角形502の提案されたサブ分割のことである。BVHビルダ450は、軸の1つに平行で、シーン重心507と交差する平面でシーン501をスライスすることによって、異なる候補スライスを生成する。したがって、3座標系の場合、BVHビルダ450は、各軸に1つずつの、3つの候補スライス508を生成する。
各候補スライス508は、2つの異なる三角形のグルーピングを定義する。各三角形のグルーピングは、候補スライス508の特定の側面に関連付けられる。BVHビルダ450は、各三角形のグルーピングに、その重心が三角形のグルーピングに関連付けられた候補スライス508の側面にあるシーン501の三角形を割り当てる。図5Aにおいて、BVHビルダ450は、三角形502(1)~(4)を左側の三角形のグルーピングに割り当て、三角形502(5)~(10)を右側の三角形のグルーピングに割り当て、これらの三角形502の重心が属する候補スライス508の側面を反映する。
BVHビルダ450は、三角形のグルーピングごとに三角形グルーピング境界ボックス510を判定する。三角形グルーピング境界ボックスは、三角形のグルーピング内の全ての三角形の境界を定める軸整列境界ボックスである。例えば、三角形502の重心が候補スライス508に近く、したがって三角形の一部が候補スライス508の他方の側面に「はみ出す」場合、三角形グルーピング境界ボックス510が重なることがあることに留意されたい。候補スライス508ごとに、BVHビルダ450は、各三角形グルーピング境界ボックス510の総表面積を計算し、特定の候補スライス508についての三角形グルーピング境界ボックス510の表面積を合計する。次に、BVHビルダ450は、BVHの枝を生成するために使用する候補スライス508として、三角形グルーピング境界ボックス510の最小の総表面積を有する候補スライス508を選択する。
BVHビルダ450は、図5A~図5Bに関して上述した動作を反復して行い、BVH404の木構造を生成する。各反復において、BVHビルダ450は、所定のボックスノードの三角形をどのようにサブ分割してそのボックスノードの子ノードを生成するかを判定する。各反復において、BVHビルダ450は、図5A及び図5Bの「シーン」501として、その反復において調べられているボックスノードの境界ボックス内に入る三角形を設定し、図5A及び図5Bに関して説明した動作を行う。BVHビルダ450は、選択された候補スライス508及び対応する三角形のグループを反映するためにボックスノードの子供を生成する。より具体的には、BVHビルダ450は、生成された三角形のグルーピングの各々に対応するボックスノード又は葉ノードを、そのボックスノードの子供として設定する。三角形のグルーピングが2つ以上の三角形を含む場合、生成される子は別のボックスノードであり、三角形のグルーピングが1つの三角形を含む場合、生成される子は葉ノードである。
図5Aは、y軸に平行な候補スライス508を反映し、図5Bは、x軸に平行な候補スライス508を反映し、それぞれの図に対応する三角形のサブ分割が示されている。図5Aの候補スライス508(1)は、(図5Bにおける実質的な重なりに起因して)最小の総表面積に関連付けられているので、BVHビルダ450は、その候補スライス508(1)を選択して、図示される全ての三角形を境界付けるボックスノードの子供を生成する。
候補スライスは座標系の軸に平行であると説明されているが、プリミティブをスライスする平面は、それらの平面が重心507を通過する限り、任意の向きであり得ることに留意されたい。
図6は、BVH404を構築するための例示的な動作を示す図である。具体的には、図6は、BVHビルダ450がBVH404の異なる部分を構築した2つのBVH状態600を示す。BVH状態1 600(1)では、BVHビルダ450は、ボックスノード602(1)に関連付けられた幾何形状を既に調べている。この幾何形状は、幾何形状604(1)(ボックスノード602(2)の場合)及び幾何形状604(2)(ボックスノード602(3)の場合)を含む。BVHビルダ450は、本明細書の他の箇所(例えば、図5A及び図5B)に記載される技術に従って幾何形状を分割することによって、ボックスノード602(2)及びボックスノード602(3)を生成している。
BVHビルダ450は、ボックスノード602(2)及びボックスノード602(3)を調べて、これらのボックスノード602の子供である更なるノードを生成する。ボックスノード602(2)に対して、BVHビルダ450は、そのボックスノード602(2)に対する幾何形状604(1)内の三角形に対する分割を判定し、その分割に基づいて新しい子供ノードを生成する。これらの子供ノードは状態600(2)に示されている。具体的には、ボックスノード602(4)は幾何形状604(3)を含み、ボックスノード602(5)は幾何形状604(4)を含む。同様に、BVHビルダ450は、ボックスノード602(3)を調べて、ボックスノード602(6)及びボックスノード602(7)を生成する。図示されていないが、BVHを生成するために追加の状態600が行われる。また、分割の結果、単一の三角形になった場合、BVHビルダ450は、ボックスノードではなく葉ノードを生成することを理解されたい。
図7は、一例による、中間BVH700を示す図である。中間BVH700は、BVHビルダ450が、全ての個々の三角形に葉ノードが割り当てられるまで、幾何形状を分割してノードを生成する動作を反復的に行った結果である。
BVH700は多数のノード702を含み、各ノードはボックスノード又は三角形ノードの何れかである。ボックスノード(例えば、ノード702(1))は、ノード識別子704と、他のノード702を参照するノード参照706と、を含む。三角形ノード(例えば、ノード702(5))は、ノード識別子704と、その三角形ノードについての三角形の幾何形状(及び潜在的に他の情報)を記述する三角形データ708と、を含む。
図7の例では、ボックスノード702(1)は、ノード参照706(1)及びノード参照706(2)を指すボックスノード識別子704(1)を含む。ノード参照706(1)は、ボックスノード702(2)及びノード参照706(2)を指す。ボックスノード702(2)は、ノード参照706(3)及びノード参照706(4)を指すボックスノード識別子704(2)を含む。ノード参照706(3)はボックスノード702(4)を指し、ノード参照706(4)は三角形ノード702(5)を指す。三角形ノード702(5)は、三角形データ708(1)を指すノード識別子704(5)を含む。
BVHビルダ450は、以下の態様で、中間BVH700を統合BVHに変換する。BVHビルダ450は、BVH700のレベル701を識別する。レベルとは、最上位のボックスノード702から同じ参照数だけ下にあるBVH700の部分のことである。図7のBVH700において、レベル1 701(1)はノード702(1)を含む。レベル2 701(2)は、ノード702(2)及びノード702(3)を含む。レベル3 701(3)は、ノード702(4)、ノード702(5)、ノード702(6)及びノード702(7)を含む。レベル4 701(4)は、ノード702(8)~702(15)を含む。
BVHビルダ450は、複数のレベル701でボックスノードを統合して、統合ボックスノードを生成する。一例では、BVHビルダ450は、奇数レベル701をすぐ次の偶数レベルと統合する。一例では、BVHビルダ450は、レベル1 701(1)及びレベル2 701(2)を統合する。具体的には、BVHビルダは、そのような上位レベル701(奇数レベル701)からのノード702を、下位レベル701(偶数レベル701)内のそのノードのボックスノード子供702と組み合わせて新しいボックスノードを生成することによって、統合ノードを生成する。BVHビルダ450は、そのような態様で三角形ノードをボックスノードと組み合わせない。統合ボックスノードは、最上位レベル701の全てのノード参照706を含む。その結果、BVH700のボックスノードよりも多くのノード参照706を含む新しいボックスノードができ、またレベル701も減少する。
図8は、一例による、統合BVH800を示す図である。BVH800は、ボックスノード802及び三角形ノード808を含む。ボックスノード802は、ボックスノード識別子804及びノード参照806を含む。三角形ノード808は、三角形ノード識別子810及び三角形データ812を含む。
三角形ノード808は、三角形ノード(例えば、図7のノード702(5))と同様である。ボックスノード802は、ボックスノード802が図7のボックスノードよりも多くのノード参照806を含むことを除いて、ボックスノード(例えば、図7の702(1))と同様である。
BVHビルダ450は、図7に関して上述したように、中間BVH700から統合BVH800を生成する。図8の例示的な統合BVH800は、図7の中間BVH700から生成される。具体的には、ボックスノード802(1)は、レベル1 701(1)及びレベル2 702(2)から生成される。より具体的には、BVHビルダ450は、ボックスノード702(1)を起点として、ボックスノード801(1)を生成する。BVHビルダ450は、ボックスノード702(1)がノード参照706(1)及びノード参照706(2)を含むと判定する。したがって、BVHビルダ450は、それらのノード参照によって指し示されるノード702を識別する。図7において、ノード参照706(1)によって指し示されるノード702はノード702(2)であり、ノード参照706(2)によって指し示されるノード702はノード702(3)である。BVHビルダ450は、これらのノード702内のノード参照706を識別し、生成されているボックスノード802内にこれらのノード参照を含み、したがって、2つのレベル701を1つのレベル701に組み合わせ、2つのノード参照706を有するボックスノード702を4つの参照806を有するボックスノード802に変換する(ただし、ボックスノード702は2つ未満のノード参照706を有してもよく、したがって、ボックスノード802は4つ未満のノード参照806を有してもよいことを理解されたい)。
三角形ノードを指すノード参照706の場合、BVHビルダ450は、それらのノード参照706を統合ボックスノード802にも含める。例えば、ボックスノード702(4)は、三角形ノード(ノード702(8)~702(11))を指す2つのノード参照706を有する。したがって、BVHビルダ450は、これらのノード参照706を統合ボックスノード802に含める。説明された方法で、BVHビルダ450は、ボックスノード802(1)、ボックスノード802(2)(ボックスノード702(4)と三角形ノード702(8)~702(11)から)、及び、ボックスノード802(3)(ボックスノード702(7)と、三角形ノード702(12)~702(15)から)を生成する。
統合BVH800内の三角形ノードは、BVH700と比較して変更されていない。しかしながら、いくつかの実施形態では、BVHビルダ450は、これらの三角形ノード808を圧縮して、圧縮された三角形ノード(図示せず)を生成する。一例では、圧縮された三角形ノードは、複数の三角形についてのデータを含み、共有される頂点は、それらの頂点が圧縮された三角形ノード内の全ての三角形内に現れるインスタンスの数よりも少ない回数で表される。例えば、1つの頂点を共有する2つの三角形が圧縮された三角形ノードに含まれる場合、BVHビルダ450は、それらの三角形を、その共有される頂点のデータ(例えば、位置)の1つのインスタンスのみを含む、圧縮された三角形ノードに含める。別の例では、3つ又は4つの三角形が全て1つの頂点を共有し、圧縮された三角形ノードにその頂点の(3つ又は4つのインスタンスではなく)1つのインスタンスのみが含まれる。加えて、BVHビルダ450は、三角形ノード808への参照を圧縮された三角形ノードへの参照に変換する。したがって、複数のノード参照806が同じ圧縮された三角形ノード(ただし、その圧縮された三角形ノード内の三角形は異なる)を指すことが可能である。
BVHビルダ450は、図8のボックスノード802に、それらのボックスノード802の子孫である全ての三角形を囲む境界ボックスを与える。
BVHビルダ450が中間BVH700の2つのレベル701から統合ボックスノード802を生成することを説明してきたが、いくつかの実施形態では、BVHビルダ450は、中間BVH700の3つ以上のレベル701から統合ボックスノードを生成する。そのような場合、統合ボックスノードは、最上位層701における特定のボックスノード702から下降する三角形ノードではない、統合されている最下位層701におけるボックスノード702からの全てのノード参照706を含む。一例では、特定の層におけるボックスノード702は、レベル3層701において、そのボックスノード702から下降する6つのボックスノードを有する。BVHビルダ450は、それらの6つのボックスノード内のノード参照706の全てを含む統合ボックスノードを生成する。
三角形は葉ノード内に含まれる幾何形状として説明されることがあるが、葉ノードには任意のタイプの幾何形状を含むこと、又は、形状情報ではなくコードを用いて交差試験を指定することさえ可能である。
図9は、一例による、境界ボリューム階層を生成する方法900のフロー図である。図1~図8のシステムに関して説明したが、当業者であれば、任意の技術的に実現可能な順序で方法900のステップを行うように構成された任意のシステムが本開示の範囲内にあることを理解するであろう。
方法900は、BVHビルダ450がプリミティブのグループの境界ボックス表面積重み付き重心を識別する、ステップ902で開始する。この重心は、図5A及び図5Bの重心507であり、この重心を識別することは、本明細書の他の箇所で説明される。プリミティブのグループは、BVHの最上位ノード又はBVHの異なるボックスノード等のボックスノードの境界ボックスによって境界付けられたプリミティブのグループである。
ステップ904において、BVHビルダ450は、重心において候補分割を生成する。候補分割は、幾何学的なサブグループを定義する。一例では、候補分割は、重心507を通過する軸(x、y、z)の各々に平行な平面で幾何形状を分割することによって行われる。
ステップ906において、BVHビルダ450は、最小の表面積境界ボックスを有する候補分割を識別する。分割ごとに、幾何形状は2つのグループに分割され、各グループは平面の異なる側面にある。次に、軸整列境界ボックスがグループごとに判定され、各ボックスはそのグループの全ての幾何形状を囲む。2つの境界ボックスの表面積の合計が最小である分割が、識別された候補分割である。
ステップ908において、BVHビルダ450は、識別された候補分割のサブグループの幾何形状を含むノードを生成する。一例では、グループが1つのプリミティブを含む場合、BVHビルダ450は、そのグループの三角形ノードを生成する。グループが2つ以上のプリミティブを含む場合、BVHビルダ450は、2つ以上のプリミティブを境界付ける境界ボックスを有するボックスノードを生成する。また、BVHビルダ450は、分割された幾何形状に関連付けられたボックスノードにノード参照を追加し、生成されたノード参照は、新たに生成されたノードを指す。
BVHビルダ450は、方法900を繰り返して、完全なBVHを生成する。一例では、BVHビルダ450は、全てのグループが分割され、三角形ノードがBVHの各枝の最下位ノードに存在するまで、方法900を繰り返す。
本明細書の開示に基づいて、多くの変形が可能であることを理解されたい。特徴及び要素が特定の組み合せで上述されているが、各特徴又は要素は、他の特徴及び要素を用いずに単独で、又は、他の特徴及び要素を用いて若しくは用いずに様々な組み合せで使用することができる。
提供される方法は、汎用コンピュータ、プロセッサ又はプロセッサコアにおいて実装することができる。好適なプロセッサとしては、例として、汎用プロセッサ、専用プロセッサ、従来型プロセッサ、デジタルシグナルプロセッサ(digital signal processor、DSP)、複数のマイクロプロセッサ、DSPコアと関連する1つ以上のマイクロプロセッサ、コントローラ、マイクロコントローラ、特定用途向け集積回路(Application Specific Integrated Circuit、ASIC)、フィールドプログラマブルゲートアレイ(Field Programmable Gate Array、FPGA)回路、任意の他のタイプの集積回路(integrated circuit、IC)、及び/又は、状態マシンが挙げられる。そのようなプロセッサは、処理されたハードウェア記述言語(hardware description language、HDL)命令及びネットリストを含む他の中間データ(コンピュータ可読媒体に記憶させることが可能な命令)の結果を使用して製造プロセスを構成することによって製造することができる。そのような処理の結果は、マスクワークとすることができ、このマスクワークをその後の半導体製造プロセスにおいて使用して、本開示の特徴を実装するプロセッサを製造する。
本明細書に提供される方法又はフロー図は、汎用コンピュータ又はプロセッサによる実行のために非一時的なコンピュータ可読記憶媒体に組み込まれるコンピュータプログラム、ソフトウェア又はファームウェアにおいて実装することができる。非一時的なコンピュータ可読記憶媒体の例としては、読み取り専用メモリ(read only memory、ROM)、ランダムアクセスメモリ(RAM)、レジスタ、キャッシュメモリ、半導体メモリデバイス、内蔵ハードディスク及びリムーバブルディスク等の磁気媒体、磁気光学媒体、並びに、CD-ROMディスク及びデジタル多用途ディスク(digital versatile disk、DVD)等の光学媒体が挙げられる。
Claims (20)
- レイトレーシング動作を行うための方法であって、
境界ボリューム階層(BVH)の境界ボックスに関連するプリミティブのグループの境界ボックス表面積重み付き重心を識別することと、
前記重心において、幾何学的なサブグループを定義する候補分割を生成することと、
最小の表面積境界ボックスを有する候補分割を識別することと、
識別された候補分割の前記幾何学的なサブグループの幾何形状を含む前記BVHのノードを生成することと、を含む、
方法。 - 前記プリミティブのグループの前記境界ボックス表面積重み付き重心を識別することは、
前記プリミティブのグループの重心位置の境界ボックス重み付き平均によって定義される点を識別することを含む、
請求項1の方法。 - 前記候補分割を生成することは、
座標軸に平行であり、前記重心と交差する複数のサブ分割平面を識別することと、
前記プリミティブのグループから複数のプリミティブのサブグループを生成することであって、前記サブグループは、前記プリミティブがサブ分割平面のどの側面に位置するかに基づいて定義される、ことと、を含む、
請求項1の方法。 - 前記最小の表面積境界ボックスを有する候補分割を識別することは、
候補分割ごとに、
前記候補分割のサブ分割平面の各側面の全てのプリミティブを境界付ける境界ボックスを識別することと、
前記境界ボックスの表面積を加算して、前記候補分割の表面積合計を取得することと、
最小の表面積合計を有する候補分割を選択することと、を含む、
請求項1の方法。 - 前記ノードを生成することは、
1つのプリミティブを含む幾何学的なサブグループについては葉ノードを生成することと、2つ以上のプリミティブを含む幾何学的なサブグループについてはボックスノードを生成することと、を含む、
請求項1の方法。 - 頂点を共有する三角形を有する三角形ノードを組み合わせることによって、前記BVHの三角形ノードを圧縮することを更に含む、
請求項1の方法。 - 前記BVHのボックスノード及びレベルを統合して統合ボックスノードを生成することによって、前記BVHを統合BVHに変換することを更に含む、
請求項1の方法。 - 前記BVHの複数のボックスノードを生成するために、前記境界ボックス表面積重み付き重心を識別することと、前記候補分割を生成することと、前記候補分割を識別することと、ノードを生成することと、を繰り返すことを更に含む、
請求項1の方法。 - 前記BVHの全ての枝の全ての最下位ノードが単一の幾何形状のノードになるまで、前記BVHの前記複数のボックスノードを生成することを更に含む、
請求項8の方法。 - 境界ボリューム階層(BVH)を構築するように構成されたデバイスであって、
BVHを記憶するメモリと、
BVHビルダと、を備え、
前記BVHビルダは、
前記BVHの境界ボックスに関連するプリミティブのグループの境界ボックス表面積重み付き重心を識別することと、
前記重心において、幾何学的なサブグループを定義する候補分割を生成することと、
最小の表面積境界ボックスを有する候補分割を識別することと、
識別された候補分割の前記幾何学的なサブグループの幾何形状を含む前記BVHのノードを生成することと、
を行うように構成されている、
デバイス。 - 前記プリミティブのグループの前記境界ボックス表面積重み付き重心を識別することは、
前記プリミティブのグループの重心位置の境界ボックス重み付き平均によって定義される点を識別することを含む、
請求項10のデバイス。 - 前記候補分割を生成することは、
座標軸に平行であり、前記重心と交差する複数のサブ分割平面を識別することと、
前記プリミティブのグループから複数のプリミティブのサブグループを生成することであって、前記サブグループは、前記プリミティブがサブ分割平面のどの側面に位置するかに基づいて定義される、ことと、を含む、
請求項10のデバイス。 - 前記最小の表面積境界ボックスを有する候補分割を識別することは、
候補分割ごとに、
前記候補分割のサブ分割平面の各側面の全てのプリミティブを境界付ける境界ボックスを識別することと、
前記境界ボックスの表面積を加算して、前記候補分割の表面積合計を取得することと、
最小の表面積合計を有する候補分割を選択することと、を含む、
請求項10のデバイス。 - 前記ノードを生成することは、
1つのプリミティブを含む幾何学的なサブグループについては葉ノードを生成することと、2つ以上のプリミティブを含む幾何学的なサブグループについてはボックスノードを生成することと、を含む、
請求項10のデバイス。 - 前記BVHビルダは、
頂点を共有する三角形を有する三角形ノードを組み合わせることによって、前記BVHの三角形ノードを圧縮するように更に構成されている、
請求項10のデバイス。 - 前記BVHビルダは、
前記BVHのボックスノード及びレベルを統合して統合ボックスノードを生成することによって、前記BVHを統合BVHに変換するように更に構成されている、
請求項10のデバイス。 - 前記BVHビルダは、
前記BVHの複数のボックスノードを生成するために、前記境界ボックス表面積重み付き重心を識別することと、前記候補分割を生成することと、前記候補分割を識別することと、ノードを生成することと、を繰り返すように更に構成されている、
請求項10のデバイス。 - 前記BVHビルダは、
前記BVHの全ての枝の全ての最下位ノードが単一の幾何形状のノードになるまで、前記BVHの前記複数のボックスノードを生成するように更に構成されている、
請求項17のデバイス。 - 命令を記憶するコンピュータ可読記憶媒体であって、
前記命令は、プロセッサによって実行されると、
境界ボリューム階層(BVH)の境界ボックスに関連するプリミティブのグループの境界ボックス表面積重み付き重心を識別することと、
前記重心において、幾何学的なサブグループを定義する候補分割を生成することと、
最小の表面積境界ボックスを有する候補分割を識別することと、
識別された候補分割の前記幾何学的なサブグループの幾何形状を含む前記BVHのノードを生成することと、
を前記プロセッサに実行させる、
コンピュータ可読記憶媒体。 - 前記プリミティブのグループの前記境界ボックス表面積重み付き重心を識別することは、
前記プリミティブのグループの重心位置の境界ボックス重み付き平均によって定義される点を識別することを含む、
請求項19のコンピュータ可読記憶媒体。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202063107166P | 2020-10-29 | 2020-10-29 | |
US63/107,166 | 2020-10-29 | ||
US17/114,485 US11158112B1 (en) | 2020-10-29 | 2020-12-07 | Bounding volume hierarchy generation |
US17/114,485 | 2020-12-07 | ||
PCT/US2021/055684 WO2022093583A1 (en) | 2020-10-29 | 2021-10-19 | Bounding volume hierarchy generation |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2023548028A true JP2023548028A (ja) | 2023-11-15 |
Family
ID=78218981
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2023523252A Pending JP2023548028A (ja) | 2020-10-29 | 2021-10-19 | 境界ボリューム階層生成 |
Country Status (6)
Country | Link |
---|---|
US (1) | US11158112B1 (ja) |
EP (1) | EP4238060A1 (ja) |
JP (1) | JP2023548028A (ja) |
KR (1) | KR20230097039A (ja) |
CN (1) | CN116547716A (ja) |
WO (1) | WO2022093583A1 (ja) |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6665433B2 (en) * | 2001-07-31 | 2003-12-16 | Agilent Technologies, Inc. | Automatic X-ray determination of solder joint and view Delta Z values from a laser mapped reference surface for circuit board inspection using X-ray laminography |
KR101697238B1 (ko) * | 2010-08-26 | 2017-01-17 | 삼성전자주식회사 | 영상 처리 장치 및 방법 |
US20140340412A1 (en) * | 2013-05-14 | 2014-11-20 | The Provost, Fellows, Foundation Scholars, & the other members of Board, et al. | Hardware unit for fast sah-optimized bvh constrution |
US10380755B2 (en) * | 2016-11-21 | 2019-08-13 | University Of New Hampshire | Whole object surface area and volume of partial-view 3-D models |
US10600199B2 (en) * | 2017-06-27 | 2020-03-24 | Toyota Research Institute, Inc. | Extending object detection and identification capability for an object sensor device |
US11321910B2 (en) * | 2019-04-04 | 2022-05-03 | Intel Corporation | Apparatus and method for reduced precision bounding volume hierarchy construction |
-
2020
- 2020-12-07 US US17/114,485 patent/US11158112B1/en active Active
-
2021
- 2021-10-19 JP JP2023523252A patent/JP2023548028A/ja active Pending
- 2021-10-19 CN CN202180071116.2A patent/CN116547716A/zh active Pending
- 2021-10-19 KR KR1020237014723A patent/KR20230097039A/ko unknown
- 2021-10-19 EP EP21887202.6A patent/EP4238060A1/en active Pending
- 2021-10-19 WO PCT/US2021/055684 patent/WO2022093583A1/en active Application Filing
Also Published As
Publication number | Publication date |
---|---|
EP4238060A1 (en) | 2023-09-06 |
KR20230097039A (ko) | 2023-06-30 |
US11158112B1 (en) | 2021-10-26 |
CN116547716A (zh) | 2023-08-04 |
WO2022093583A1 (en) | 2022-05-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109509138B (zh) | 针对射线跟踪系统的减小的加速结构 | |
US20210397449A1 (en) | Robust, efficient multiprocessor-coprocessor interface | |
GB2564503A (en) | Hybrid hierarchy for ray tracing | |
EP3933779A1 (en) | Intersection testing in a ray tracing system | |
KR20220154706A (ko) | 광선 추적 다중 샘플 앤티-에일리어싱 | |
JP2023532434A (ja) | レイトレーシングのための早期カリング | |
US20240087223A1 (en) | Overlay trees for ray tracing | |
US11521308B2 (en) | Ambient occlusion using bounding volume hierarchy bounding box tests | |
US11954788B2 (en) | Variable width bounding volume hierarchy nodes | |
US20230097562A1 (en) | Acceleration structures with delta instances | |
JP2023548028A (ja) | 境界ボリューム階層生成 | |
KR20220139880A (ko) | 배터리 전력공급형 컴퓨팅 디바이스들을 위한 실시간, 소프트웨어 기반 하이브리드 광선 트레이싱 | |
US20240104844A1 (en) | Multi-resolution geometric representation using bounding volume hierarchy for ray tracing | |
US20240144580A1 (en) | Split-based trees for ray tracing | |
US11450058B2 (en) | Early termination of bounding volume hierarchy traversal | |
US20240112392A1 (en) | Dynamic node traversal order for ray tracing | |
US20220189096A1 (en) | Opacity texture-driven triangle splitting | |
EP3933781A1 (en) | Intersection testing in a ray tracing system | |
US11854138B2 (en) | Techniques for introducing oriented bounding boxes into bounding volume hierarchy | |
US20230351667A1 (en) | Method and apparatus for performing high speed parallel locally order clustering for a bounding volume hierarchy |