JP2023532434A - レイトレーシングのための早期カリング - Google Patents
レイトレーシングのための早期カリング Download PDFInfo
- Publication number
- JP2023532434A JP2023532434A JP2022578611A JP2022578611A JP2023532434A JP 2023532434 A JP2023532434 A JP 2023532434A JP 2022578611 A JP2022578611 A JP 2022578611A JP 2022578611 A JP2022578611 A JP 2022578611A JP 2023532434 A JP2023532434 A JP 2023532434A
- Authority
- JP
- Japan
- Prior art keywords
- ray
- leaf node
- culling
- intersecting
- intersection
- 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
- 238000012360 testing method Methods 0.000 claims abstract description 95
- 238000000034 method Methods 0.000 claims abstract description 34
- 238000003860 storage Methods 0.000 claims description 8
- 230000004044 response Effects 0.000 claims description 4
- 230000001133 acceleration Effects 0.000 description 18
- 238000010586 diagram Methods 0.000 description 14
- 238000009877 rendering Methods 0.000 description 13
- 230000006870 function Effects 0.000 description 8
- 238000005266 casting Methods 0.000 description 4
- 239000003086 colorant Substances 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 230000006399 behavior Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 230000000873 masking effect Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 238000004590 computer program Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000002474 experimental method 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
- 239000000463 material Substances 0.000 description 1
- 238000002156 mixing Methods 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
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
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/10—Geometric effects
- G06T15/40—Hidden part removal
-
- 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/21—Collision detection, intersection
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computer Graphics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Geometry (AREA)
- Image Generation (AREA)
Abstract
レイトレーシング動作を行うための技術が提供される。本技術は、境界ボリューム階層の非葉ノードについての子孫共有タイプメタデータを読み取ることと、光線の光線交差試験について1つ以上のカリングタイプを識別することと、1つ以上のカリングタイプが、子孫共有タイプメタデータによって指定された少なくとも1つのタイプを含むかどうかに基づいて、非葉ノードを交差していないものとして扱うかどうかを判定することと、を含む。【選択図】図7
Description
(関連出願の相互参照)
本願は、2020年6月26日に出願された「EARLY CULLING FOR RAY TRACING」と題する米国仮出願第63/044,686号、及び、2020年8月31日に出願された「EARLY CULLING FOR RAY TRACING」と題する米国特許出願第17/008,462号の利益を主張するものであり、これらの出願の全体は、参照により本明細書に組み込まれる。
本願は、2020年6月26日に出願された「EARLY CULLING FOR RAY TRACING」と題する米国仮出願第63/044,686号、及び、2020年8月31日に出願された「EARLY CULLING FOR RAY TRACING」と題する米国特許出願第17/008,462号の利益を主張するものであり、これらの出願の全体は、参照により本明細書に組み込まれる。
レイトレーシングは、シミュレートされた光線がオブジェクト交差を試験するために投射され、ピクセルが光線投射の結果に基づいて着色される、一種のグラフィックスレンダリング技術である。レイトレーシングは、ラスタライズベースの技術よりも計算コストが高くなるが、より物理的に正確な結果を生み出す。レイトレーシング動作の改善は、絶えず行われている。
添付の図面と共に例として与えられる以下の記載から、より詳細な理解が可能になる。
レイトレーシング動作を行うための技術が提供される。本技術は、境界ボリューム階層の非葉ノードのための子孫共有タイプメタデータ(descendant-shared type metadata)を読み取り、光線についての光線交差試験のための1つ以上のカリングタイプを識別し、1つ以上のカリングタイプが子孫共有タイプメタデータによって指定された少なくとも1つのタイプを含むかどうかに基づいて、非葉ノードを交差していないものとして扱うかどうかを判定することを含む。
図1は、本開示の1つ以上の特徴を実装可能な例示的なデバイス100のブロック図である。デバイス100は、例えば、コンピュータ、ゲームデバイス、ハンドヘルドデバイス、セットトップボックス、テレビ、携帯電話、又は、タブレットコンピュータを含む。デバイス100は、プロセッサ102と、メモリ104と、記憶装置106と、1つ以上の入力デバイス108と、1つ以上の出力デバイス110と、を含む。また、デバイス100は、オプションで、入力ドライバ112及び出力ドライバ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は、表示デバイス118、スピーカ、プリンタ、触覚フィードバックデバイス、1つ以上の光、アンテナ、又は、ネットワーク接続(例えば、無線IEEE802信号の送信及び/又は受信のための無線ローカルエリアネットワークカード)を含むが、これらに限定されない。
入力ドライバ112は、プロセッサ102及び入力デバイス108と通信し、プロセッサ102が入力デバイス108から入力を受信することを可能にする。出力ドライバ114は、プロセッサ102及び出力デバイス110と通信し、プロセッサ102が出力デバイス110に出力を送信することを可能にする。入力ドライバ112及び出力ドライバ114は、オプションの構成要素であること、並びに、デバイス100は、入力ドライバ112及び出力ドライバ114が存在しない場合に同じ態様で操作され得ることに留意されたい。出力ドライバ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は、APD116上の処理タスクの実行に関する追加の詳細を示す、デバイス100のブロック図である。プロセッサ102は、システムメモリ104内で、プロセッサ102による実行のための1つ以上の制御論理モジュールを維持する。制御論理モジュールは、オペレーティングシステム120と、ドライバ122と、アプリケーション126と、を含む。これらの制御論理モジュールは、プロセッサ102及びAPD116の操作の様々な特徴を制御する。例えば、オペレーティングシステム120は、ハードウェアと直接通信し、プロセッサ102上で実行される他のソフトウェアのためのハードウェアへのインターフェースを提供する。ドライバ122は、例えば、プロセッサ102上で実行されるソフトウェア(例えば、アプリケーション126)にアプリケーションプログラミングインターフェース(application programming interface、「API」)を提供して、APD116の様々な機能にアクセスすることによって、APD116の操作を制御する。いくつかの実施形態では、ドライバ122は、APD116の処理構成要素(以下で更に詳細に説明するSIMDユニット138等)によって実行するためのプログラムをコンパイルするジャストインタイムコンパイラを含む。他の実施形態では、プログラムをコンパイルするためにジャストインタイムコンパイラが使用されず、通常のアプリケーションコンパイラが、APD116上で実行するためにシェーダプログラムをコンパイルする。
APD116は、並列処理及び/又は非順序処理に適しているグラフィック動作及び非グラフィック動作等の選択された機能のためのコマンド及びプログラムを実行する。APD116は、プロセッサ102から受信したコマンドに基づいて、ピクセル動作、幾何学計算及び表示デバイス118への画像のレンダリング等のグラフィックスパイプライン動作を実行するために使用される。また、APD116は、プロセッサ102から受信したコマンドに基づいて、ビデオ、物理シミュレーション、計算流体力学又は他のタスクに関連する動作等のように、グラフィック動作に直接関連しない計算処理動作を実行する。
APD116は、プロセッサ102の要求で、SIMDパラダイムに従って並列の態様で操作を行う1つ以上のSIMDユニット138を含む計算ユニット132を含む。SIMDパラダイムは、複数の処理要素が単一のプログラム制御フローユニット及びプログラムカウンタを共有し、したがって同じプログラムを実行するが、そのプログラムを異なるデータで実行することができるものである。一例では、各SIMDユニット138は、16個のレーンを含み、各レーンは、SIMDユニット138内の他のレーンと同時に同じ命令を実行するが、その命令を異なるデータで実行する。レーンは、全てのレーンが所定の命令を実行する必要がない場合、予測でオフに切り替えることができる。また、予測は、分岐制御フローを有するプログラムを実行するために使用することができる。より具体的には、制御フローが個々のレーンによって行われる計算に基づいている条件付き分岐又は他の命令を有するプログラムについては、現在実行されていない制御フローパスに対応するレーンの予測及び異なる制御フローパスのシリアル実行が、任意の制御フローを可能にする。実施形態では、計算ユニット132の各々は、ローカルL1キャッシュを有することができる。実施形態では、複数の計算ユニット132がL2キャッシュを共有する。
計算ユニット132内の実行の基本的単位は、ワークアイテムである。各ワークアイテムは、特定のレーンにおいて並列で実行されるプログラムの単一のインスタンス化を表す。ワークアイテムは、単一のSIMDユニット138上の「ウェーブフロント(wavefront)」として同時に実行することができる。1つ以上のウェーブフロントが「ワークグループ」に含まれ、これは、同じプログラムを実行するように指定されたワークアイテムの集合体を含む。ワークグループは、ワークグループを構成するウェーブフロントのそれぞれを実行することによって実行される。代替例では、ウェーブフロントは、単一のSIMDユニット138上で連続して、又は、異なるSIMDユニット138上で部分的に若しくは完全に並列に実行される。ウェーブフロントは、単一のSIMDユニット138上で同時に実行することができるワークアイテムの最大集合体と考えることができる。したがって、プロセッサ102から受信したコマンドが、特定のプログラムを単一のSIMDユニット138上で同時に実行させることができない程度にプログラムが並列化されることを示す場合、そのプログラムは、2つ以上のSIMDユニット138上に並列化されるか、又は、同じSIMDユニット138上で直列化される(又は必要に応じて並列化及び直列化の両方が行われる)ウェーブフロントに分けられる。スケジューラ136は、異なる計算ユニット132及びSIMDユニット138上の様々なウェーブフロントのスケジューリングに関連する操作を行うように構成されている。
計算ユニット132によって与えられる並列処理は、ピクセル値計算、頂点変換及び他のグラフィック動作等のグラフィック関連動作に好適である。したがって、場合によっては、プロセッサ102からのグラフィック処理コマンドを受け入れるグラフィックスパイプライン134は、並列で実行するために計算タスクを計算ユニット132に提供する。
また、計算ユニット132は、グラフィックに関連しない又はグラフィックスパイプライン134の「通常の」動作の一部(例えば、グラフィックスパイプライン134の動作に対して行われる処理を補足するために行われるカスタム動作)として行われない計算タスクを行うために使用される。プロセッサ102上で実行されるアプリケーション126又は他のソフトウェアは、そのような計算タスクを定義するプログラムを、実行のためにAPD116に送信する。
計算ユニット132は、レイトレーシングを実装し、これは、シミュレート光線とシーン内のオブジェクトとの間の交差を試験することによって3Dシーンをレンダリングする技術である。レイトレーシングに関与するワークの多くは、以下で更に詳細に説明するように、計算ユニット132内のSIMDユニット138上で実行されるプログラム可能なシェーダプログラムによって行われる。
図3は、一例による、レイトレーシング技術を使用してグラフィックをレンダリングするためのレイトレーシングパイプライン300を示す図である。レイトレーシングパイプライン300は、レイトレーシングを利用してシーンをレンダリングすることに関与する動作及びエンティティの概要を提供する。いくつかの実施形態では、光線生成シェーダ(ray generation shader)302、任意のヒットシェーダ(any hit shader)306、最も近いヒットシェーダ(closest hit shader)310及びミスシェーダ(miss shader)312は、SIMDユニット138内で実行されるシェーダプログラムによって機能が果たされるレイトレーシングパイプラインステージを表すシェーダ実装ステージである。各特定のシェーダ実装ステージでの特定のシェーダプログラムの何れも、アプリケーション提供コードによって(すなわち、アプリケーションコンパイラによって事前にコンパイルされ、及び/又は、ドライバ122によってコンパイルされた、アプリケーション開発者によって提供されるコードによって)定義される。他の実施形態では、光線生成シェーダ302、任意のヒットシェーダ306、最も近いヒットシェーダ310及びミスシェーダ312の何れも、任意のタイプのプロセッサ上で実行され、本明細書で説明する動作を行うソフトウェア、本明細書で説明する動作を行う回路、又は、ハードウェア回路とプロセッサ上で実行されるソフトウェアとの組み合わせとして実装される。加速構造横断ステージ(acceleration structure traversal stage)304は、光線交差試験を行って、光線が三角形にヒットするかどうかを判定する。
レイトレーシングパイプライン300は、レイトレーシング動作が流れる経路を意味する。レイトレーシングを使用してシーンをレンダリングするために、プロセッサ102上で実行されるプログラム等のレンダリングオーケストレータ(rendering orchestrator)は、「シーン」としての幾何形状の集合体を指定する。シーン内の様々なオブジェクトは、多くの場合三角形であるが、任意の幾何形状であり得る幾何学的プリミティブ(geometry primitives)の集合体として表される。本明細書で使用される場合、「三角形」という用語は、シーンを構成するこれらの幾何学的プリミティブを指す。レンダリングオーケストレータは、カメラ位置及び画像を指定すること、及び、光線がカメラから画像を通して追跡されることを要求することによって、シーンをレンダリングする。レイトレーシングパイプライン300は、本明細書で説明する様々な動作を行って、光線の色を判定する。色は、多くの場合、光線が交差する三角形から導出される。本明細書の他の箇所で説明するように、三角形にヒットしない光線は、ミスシェーダ312を呼び出す。ミスシェーダ312の1つの可能な動作は、「スカイボックス(skybox)」からの色で光線を着色することであり、スカイボックスは、幾何形状が存在しない周囲シーンを表すものとして指定される画像である(例えば、幾何形状のないシーンは、スカイボックスのみをレンダリングする)。画像内のピクセルの色は、光線と画像位置との間の交差点に基づいて判定される。いくつかの例では、十分な数の光線がトレースされ、画像のピクセルが色を指定された後、画像が画面上に表示されるか又は何らかの他の態様で使用される。
レイトレーシングパイプライン300のシェーダステージがソフトウェアに実装されるいくつかの実施形態では、様々なプログラム可能なシェーダステージ(光線生成シェーダ302、任意のヒットシェーダ306、最も近いヒットシェーダ310、ミスシェーダ312)は、SIMDユニット138上で実行されるシェーダプログラムとして実装される。加速構造横断ステージ304は、ソフトウェアとして(例えば、SIMDユニット138上で実行されるシェーダプログラムとして)、ハードウェアとして、又は、ハードウェアとソフトウェアとの組み合わせとして実装される。ヒット又はミスユニット308は、何れかの他のユニットの一部として等のように、任意の技術的に実現可能な態様で実装されるか、ハードウェア加速された構造として実装されるか、又は、SIMDユニット138上で実行されるシェーダプログラムとして実装される。レイトレーシングパイプライン300は、様々な実施形態では、部分的若しくは完全にソフトウェアで、又は、部分的若しくは完全にハードウェアで編成され、プロセッサ102、スケジューラ136によって、それらの組み合わせによって、又は、部分的に若しくは完全に任意の他のハードウェア及び/若しくはソフトウェアユニットによって編成されてもよい。例では、レイトレーシングパイプライン300を通る横断は、自律的若しくはプロセッサ102の制御下の何れかでスケジューラ136によって部分的若しくは完全に行われるか、又は、SIMDユニット138のうち1つ以上で実行されるシェーダプログラム(境界ボリューム階層横断シェーダプログラム(bounding volume hierarchy traversal shader program)等)によって部分的若しくは完全に行われる。いくつかの例では、ボックス及び三角形(加速構造横断ステージ304の内側の)に対して光線を試験することは、ハードウェア加速されている(固定機能ハードウェアユニットがそれらの試験のステップを行うことを意味する)。他の例では、そのような試験は、1つ以上のSIMDユニット138上で実行されるシェーダプログラム等のソフトウェアによって行われる。本明細書では、「レイトレーシングパイプラインが[あるアクションを]する」という表現が使用される場合、これは、レイトレーシングパイプライン300を実装するハードウェア及び/又はソフトウェアがそのアクションをすることを意味する。図3のSIMDユニット138上で実行されるものとして説明されているが、他の実施形態では、SIMD能力を有するか又は有しない他のハードウェア(例えば、プロセッサ102)が、代替的に、説明するレイトレーシングパイプライン300のシェーダプログラムを実行することを理解されたい。
レイトレーシングパイプライン300は、以下の態様で動作する。光線生成シェーダ302が行われる。光線生成シェーダ302は、三角形に対して試験する光線のデータを設定し、三角形と交差するために光線を試験する加速構造横断ステージ304を要求する。
加速構造横断ステージ304は、シーンボリューム及びシーン内のオブジェクト(三角形等)を記述するデータ構造である加速構造を横断し、シーン内の三角形に対して光線を試験する。様々な例では、加速構造は、境界ボリューム階層である。いくつかの実施形態では、加速構造横断ステージ304の一部であるヒット又はミスユニット308は、加速構造横断ステージ304の結果(重心座標及び可能性のあるヒット時間等の生データを含み得る)が実際にヒットを示すかどうかを判定する。ヒットした三角形に対して、レイトレーシングパイプライン300は、任意のヒットシェーダ306の実行をトリガする。複数の三角形が、単一の光線によってヒットされ得ることに留意されたい。加速構造横断ステージは、光線起点に最も近いものから光線起点から最も遠いものへの順序で加速構造を横断することが保証されていない。ヒット又はミスユニット308は、光線がヒットする光線の起点に最も近い三角形に対して最も近いヒットシェーダ310の実行をトリガするか、又は、三角形がヒットしなかった場合、ミスシェーダをトリガする。
任意のヒットシェーダ306が光線交差試験ユニット304からのヒットを「拒否」することが可能であり、したがって、ヒット又はミスユニット308は、光線交差試験ユニット304によってヒットが見つからないか又は受け入れられない場合、ミスシェーダ312の実行をトリガすることに留意されたい。任意のヒットシェーダ306がヒットを「拒否」し得る例示的な状況は、光線交差試験ユニット304がヒットしたと報告する三角形の少なくとも一部が完全に透明である場合である。光線交差試験ユニット304は、幾何形状のみを試験し、透明性を試験しないため、少なくともいくらかの透明性を有する三角形へのヒットのために、呼び出される任意のヒットシェーダ306は、報告されたヒットが実際には、三角形の透明部分に「ヒットした」ために、ヒットではないと判定することがある。最も近いヒットシェーダ310の典型的な使用は、素材のテクスチャに基づいて素材を着色することである。ミスシェーダ312の典型的な使用は、スカイボックスによって設定された色でピクセルを着色することである。最も近いヒットシェーダ310及びミスシェーダ312は、ピクセルを着色するため及び/又は他の動作を行うために多種多様な技術を実装し得ることを理解されたい。これらのシェーダが、シェーダプログラムを実行するプログラム可能なシェーダステージとして実装される場合、同じアプリケーションに使用される異なるシェーダプログラムは、異なる方法でピクセルを着色することができる。
光線生成シェーダ302が光線を生成する典型的な方法は、後方レイトレーシング(backwards ray tracing)と呼ばれる技術を用いるものである。後方レイトレーシングでは、光線生成シェーダ302は、カメラの点に起点を有する光線を生成する。光線が画面に対応するように定義された平面を交差する点は、光線がその色を判定するために使用される画面上のピクセルを定義する。光線がオブジェクトにヒットする場合、そのピクセルは、最も近いヒットシェーダ310に基づいて着色される。光線がオブジェクトにヒットしない場合、ピクセルは、ミスシェーダ312に基づいて着色される。複数の光線がピクセルごとに投射されてもよく、ピクセルの最終の色は、ピクセルの光線の各々について判定された色のいくつかの組み合わせによって判定される。本明細書の他の場所で説明するように、個々の光線が複数のサンプルを生成することが可能であり、各サンプルは、光線が三角形をヒットするか又は三角形をヒットしないかを示す。一例では、光線は、4つのサンプルで投射される。2つのそのようなサンプルは三角形をヒットし、2つはヒットしない。したがって、三角形の色は、ピクセルの最終的な色に部分的にだけ(例えば、50%)寄与し、色の他の部分は、他のサンプルによってヒットされた三角形に基づいて判定されるか、又は、三角形がヒットされない場合、ミスシェーダによって判定される。いくつかの例では、シーンをレンダリングすることは、画像の複数のピクセルの各々に対して少なくとも1つの光線を投射して、各ピクセルについて色を得ることを伴う。いくつかの例では、マルチサンプルレンダリングターゲットについてピクセルごとに複数の色を得るために、複数の光線がピクセルごとに投射される。いくつかのそのような例では、いくらか後の時間に、マルチサンプルレンダリングターゲットは、色混合(color blending)を通して圧縮されて、表示又は更なる処理のための単一サンプル画像を得る。ピクセルごとに複数の光線を投射することによってピクセルごとに複数のサンプルを得ることが可能であるが、本明細書では、1つの光線のみを投射することによってピクセルごとに複数のサンプルが得られるように、光線ごとに複数のサンプルを得るための技術が提供されている。ピクセルごとに追加のサンプルを得るために、そのようなタスクを複数回行うことが可能である。より具体的には、ピクセルごとに複数の光線を投射し、ピクセルごとに得られるサンプルの総数が、光線ごとのサンプル数にピクセルごとの光線の数を掛けたものになるように、光線ごとに複数のサンプルを得ることが可能である。
任意のヒットシェーダ306、最も近いヒットシェーダ310及びミスシェーダ312のうち何れかが、光線試験点でレイトレーシングパイプライン300に入る独自の光線を引き起こすことが可能である。これらの光線は、任意の目的に使用することができる。1つの一般的な使用は、環境照明又は反射を実装することである。一例では、最も近いヒットシェーダ310が呼び出された場合、最も近いヒットシェーダ310は、様々な方向に光線を引き起こす。引き起こされた光線によってヒットされた各オブジェクト又は光について、最も近いヒットシェーダ310は、最も近いヒットシェーダ310に対応するピクセルに照明強度及び色を追加する。レイトレーシングパイプライン300の様々な構成要素を使用してシーンをレンダリングすることができる方法のいくつかの例が説明されているが、多種多様な技術のうち何れかが代替的に使用され得ることを理解されたい。
上述したように、光線がオブジェクトをヒットするかどうかの判定は、本明細書では「光線交差試験」と呼ばれる。光線交差試験は、起点から光線を発射し、光線が三角形にヒットするかどうかを判定し、そうである場合、三角形ヒットの起点からの距離がどれだけかを判定することを伴う。効率を高めるために、レイトレーシング試験は、境界ボリューム階層と呼ばれる空間の表現を使用する。この境界ボリューム階層は、上述した「加速構造」である。境界ボリューム階層では、各非葉ノードは、そのノードの全ての子供の幾何形状を境界付ける、軸整列境界ボックス(axis aligned bounding box)を表す。一例では、ベースノード(base node)は、光線交差試験が行われている領域全体の最大範囲を表す。この例では、ベースノードは、各々が、領域全体をサブ分割する相互に排他的な軸整列境界ボックスを表す2つの子供を有する。それらの2つの子供の各々は、それらの親の空間をサブ分割する軸整列境界ボックスを表す2つの子ノードを有する等である。葉ノードは、光線試験を行うことができる三角形を表す。
境界ボリューム階層データ構造は、そのようなデータ構造が使用されておらず、したがってシーン内の全ての三角形を光線に対して試験する必要があるシナリオと比較して、光線‐三角形交差の数(これは、複雑であり、かつ、そのため、処理リソースの点で高価である)が低減されることを可能にする。具体的には、光線が特定の境界ボックスと交差せず、その境界ボックスが多数の三角形を境界付ける場合、そのボックス内の全ての三角形を試験から排除することができる。こうして、光線交差試験は、軸整列境界ボックスに対する光線の一連の試験として行われ、三角形に対する試験が続く。
図4は、一例による、境界ボリューム階層を示す図である。簡単にするために、階層は、2Dで示されている。しかしながら、3Dへの拡張が単純であり、本明細書で説明する試験は、概して三次元で行われることを理解されたい。
境界ボリューム階層の空間表現402が図4の左側に示されており、境界ボリューム階層の木表現404が図4の右側に示されている。空間表現402及び木表現404の両方において、非葉ノードは、文字「N」で表され、葉ノードは、文字「O」で表されている。光線交差試験は、木404を通って横断することによって行われ、試験された各非葉ノードについて、その非葉ノードに対するボックス試験が失敗した場合、そのノードの下の枝を排除する。排除されない葉ノードに対しては、光線‐三角形交差試験が行われ、光線がその葉ノードで三角形と交差するかどうかを判定する。排除されない非葉ノードに対して、光線交差試験は、そのようなノードの子が考慮から排除されるかどうかを判定するために、そのような排除されないノードと光線を交差させる。排除された葉ノード又は非葉ノードに対して、光線交差試験は、そのようなノードとの光線の交差試験を行わない。要するに、光線についての交差試験を行うために、レイトレーシングパイプライン300は、1つ以上の開始非葉ノードから開始し、光線との交差についてそれらの非葉ノードのうち1つ以上を試験する。レイトレーシングパイプライン300は、境界ボリューム階層のエッジをたどり、光線に対して非葉ノードを試験して、それらのノードの子を排除するか又は排除しないかの何れかを行う。レイトレーシングパイプライン300が遭遇する葉ノードに対して、レイトレーシングパイプライン300は、そのような葉ノードに関連付けられた幾何形状と光線が交差するかどうかを判定するために、そのようなノードに対して光線を試験する。
一例では、光線は、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)が行われる。
本明細書で説明するように、非葉ノードは、それらの非葉ノードの子の幾何形状を境界付ける境界ボックスに関連付けられる。葉ノードは、光線が試験されるシーンの幾何形状に関連付けられる。様々な幾何形状タイプが存在し得る。葉ノードのいくつかの例示的な幾何形状タイプは、三角形及び手続き型幾何形状であるが、これは網羅的なリストではない。手続き型幾何形状は、光線との交差がデータとしてではなく手続き的に定義される幾何形状である。より具体的には、手続き型幾何形状は、葉ノードに関連付けられ、光線がそのような葉ノードの幾何形状にヒットするかどうかを判定するために光線が試験される幾何形状を表す。境界ボリューム階層を横断するプロセスにおいて、レイトレーシングパイプライン300が、関連付けられた手続き型幾何形状を有する葉ノードに遭遇したことに応じて、レイトレーシングパイプライン300は、シェーダプログラムにおいて(又は他の手段を介して)指定されたもの等の手続きの実行をトリガして、光線がその手続き型幾何形状と交差するかどうかを判定する。したがって、手続きとの交差についての試験は、手続き的に定義される。
図5は、一例による、加速構造横断ステージ500のブロック図である。いくつかの実施形態では、図3の加速構造横断ステージ304は、図5の加速構造横断ステージ500である。
加速構造横断ステージ500は、横断ユニット502及び交差ユニット504を含む。横断ユニット502は、シーン内の幾何形状との交差について光線を試験する要求を受け入れる。横断ユニット502は、加速構造506のノードを横断し、加速構造506からノードデータを要求して、ノードデータを得て、交差試験が交差ユニット504に行われることを要求する。交差ユニット504は、横断ユニット502に対して要求された交差試験を行い、交差試験の結果を横断ユニット502に返す。
一例では、横断ユニット502は、加速構造506によって表されるシーンの幾何形状との交差について試験するために光線を受け取る。横断ユニット502は、加速構造506から第1の非葉ノード(一例では、図4の境界ボリューム階層404のN2)を読み取り、そのノードの幾何形状に対して交差ユニット504が光線を試験することを要求する。交差ユニット504は、その試験を行い、試験結果を横断ユニットに返す。結果は、光線がボックスと交差しないことを示し、したがって、非葉ノードの子を考慮から排除する。続いて、横断ユニット502は、加速構造506から別の非葉ノード(一例では、N3)を読み取り、そのノードの幾何形状に対して交差ユニット504が光線を試験することを要求する。交差ユニット504は、その試験を行い、試験結果を横断ユニット502に返す。試験結果は、光線がそのノードに関連付けられたボックスと交差することを示し、したがって、横断ユニット502は、その非葉ノード(この例では、ノードN6及びN7)の子を試験することを続ける。
様々な実施形態では、横断ユニット502及び交差ユニット504は、プログラマブルプロセッサ上で実行されるソフトウェア、ハードワイヤード回路又はそれらの組み合わせとして実装される。例示的な一実施形態では、横断ユニット502は、1つ以上の計算ユニット132上で実行されるシェーダプログラム(横断シェーダプログラム)である。交差ユニット504は、光線‐三角形及び光線‐ボックス交差試験等の交差試験を行うように構成された専用ハードウェア回路である。横断シェーダプログラムは、交差ユニット504が光線について交差試験を行うことを要求するための少なくとも1つの命令を含む命令セットアーキテクチャの命令を実行する。いくつかの実施形態では、手続き型幾何形状の場合、横断シェーダプログラムは、手続き型幾何形状に対して光線を試験するための命令のセットの実行をトリガする。他の実施形態では、横断ユニット502は、本明細書で説明する動作を行うハードワイヤード回路ユニットである。
いくつかの状況では、アプリケーション等のカリング要求エンティティ、又は、本明細書で説明するシェーダプログラム若しくはハードウェアユニットの何れかが、あるタイプの幾何形状がシーンからカリングされることを要求する。カリングとは、幾何形状がシーン内に存在しても、幾何形状がレンダリングされないことを意味する。境界ボリューム階層に関して、カリングされる幾何形状は、葉ノードによって指定される(又は葉ノードに関連付けられる)幾何形状である。境界ボリューム階層の横断及び境界ボリューム階層のノードに対する光線の試験を含む、光線についての光線交差試験中に、横断ユニット502は、光線と交差していないものとしてカリングされる幾何形状を考慮する。
様々な状況において、1つを超えるカリングエンティティが、特定の幾何形状タイプがカリングされることを要求する。これらの状況では、レイトレーシングパイプライン300は、要求されたタイプの全ての幾何形状をカリングする。いくつかの実施形態では、カリングされ得る幾何形状のタイプは、不透明幾何形状、非不透明幾何形状、三角形、又は、手続き型幾何形状を含む。
光線交差試験中に、特定の葉ノード幾何形状を、その幾何形状が、カリング要求エンティティがカリングされることを要求したタイプであることに注目し、それに応じて、その幾何形状に対する光線の交差試験を行うことなく、光線がその幾何形状と交差しないことを判定することによって、カリングすることが可能である。より具体的には、レイトレーシングパイプライン300は、カリングされた幾何形状がレンダリングされるべきでないことを判定する。同様に、光線が幾何形状と交差しない場合、その幾何形状がレンダリングされない。したがって、幾何形状がカリングされるという判定は、幾何形状が光線と交差していないという判定と同じ効果を有する。
加えて、ある状況では、非葉ノードの全ての子孫が、1つ以上のカリング要求エンティティがカリングされることを要求したタイプを有するという判定に基づいて、非葉ノードをカリングすることが可能である。一例では、ボックスノードの子の全てが不透明であり、カリング要求エンティティが、不透明幾何形状がカリングされることを要求した場合がる。そのような状況では、実際の交差試験を行うことなく、又は、そのような交差試験が、光線が非葉ノードと交差すると判定した場合であっても、非葉ノードを非交差として扱うことによって、そのような非葉ノードをカリングすることが可能である。
図6Aは、一例による、境界ボリューム階層ノードの早期カリングを可能にするために非葉ノード内にタイプメタデータを含む境界ボリューム階層600のブロック図である。境界ボリューム階層600は、非葉ノード602及び葉ノード606を含む。非葉ノード602は、子タイプメタデータ604を含み、葉ノード606は、葉ノードタイプデータ608に関連付けられる。
葉ノードタイプデータ608は、関連付けられた葉ノード606のタイプを示す。本明細書の他の箇所で説明するように、いくつかの実施形態では、タイプは、葉ノードが何れの幾何形状であるか(例えば、三角形又は手続き型)、及び、葉ノードが不透明であるか非不透明であるか等の態様を含む。任意の他の葉ノードタイプが可能である。一例では、葉ノードは、任意のアプリケーション定義マスキング情報を含む。一例では、そのようなマスキング情報は、前景及び背景オブジェクト等のレンダリングにおける異なるレイヤを定義する。そのような一例では、ノードは背景又は前景の何れかであり、タイプは背景又は前景の何れかを含む。他の同様のアプリケーション定義型情報を使用することもできる。
非葉ノード602に関連付けられた子タイプメタデータ604は、非葉ノード602の各葉ノード子孫が特定の葉ノードタイプを有するかどうかを示す。より具体的には、所定の非葉ノード602の子タイプメタデータ604は、1つ以上の葉ノードタイプについて、その所定の非葉ノード602の各葉ノード子孫がその葉ノードタイプを有するかどうかを示す。第1のノードは、第1のノードが第2のノードの子である状況、又は、第1のノードが第2のノードの子孫の子である状況の何れかにおいて、第2のノードの子孫である。
図5及び図6Aを一緒に参照すると、動作において、加速構造横断ステージ500は、以下の態様で交差について光線を試験する要求に応じて、境界ボリューム階層(限定されないが、境界ボリューム階層600等)を横断する。横断ユニット502は、何れの1つ以上の葉ノードタイプがカリングされるべきかを示す情報を得る。一例では、そのような情報は、三角形をカリングするかどうか、手続き型幾何形状をカリングするかどうか、不透明幾何形状をカリングするかどうか、又は、非不透明幾何形状をカリングするかどうかを含む。
1つ以上の葉ノードタイプの何れがカリングされるべきか、及び、交差について試験されるべき光線に関する情報を受信したことに応じて、横断ユニット502は、境界ボリューム階層を横断する。横断ユニット502は、何れの葉ノードタイプがカリングされるべきかに関する情報を交差ユニット504に提供する。横断ユニット502は、検討中の特定のノード(最上位ノード等)から開始して、境界ボリューム階層を横断する。考慮中の任意の特定のノードについて、横断ユニット502は、光線又はそのノードとの交差を試験する要求を交差ユニット504に送信し、交差ユニット504は、試験を行い、結果を横断ユニット502に返す。非葉ノード602について、交差ユニット504からの結果が、光線が非葉ノード602と交差しないことを示す場合、横断ユニット502は、その非葉ノード602の何れの子も考慮しない(ここで、「考慮する」は、光線との交差に対する試験を意味する)。交差ユニット504が、光線が非葉ノード602と交差することを示す場合、横断ユニット502は、その非葉ノード602の子を考慮することが許可される(及び特定の状況においてそうする)。交差ユニット504が、境界ボリューム階層の横断を早期に終了する等の他の理由でそのような子を考慮しないことが可能であることに留意されたい。葉ノード606の場合、交差試験の結果は、ピクセルの色を判定することによって又はピクセルに対する照明寄与を判定することによって等のように、任意の技術的に実現可能な様態でレンダリング目的のために利用される。
カリングが発生する少なくとも1つのタイプに一致するメタデータ604を有する非葉ノード602の場合、交差ユニット504は、例え幾何学的に光線が実際にその非葉ノード602と交差するとしても、光線がその非葉ノード602と交差しないという結果を返す。より具体的には、メタデータ604が、非葉ノード602の全ての葉ノード子孫があるタイプを有し、その特定のタイプの葉ノードに対してカリングが発生することを示す場合、交差ユニット504は、その非葉ノード602の交差が発生しないことを横断ユニット502に示す。この動作は、非葉ノード602の全ての子孫がカリングされる場合、その非葉ノード602の何れの子孫も考慮する理由がないために発生する。
交差ユニット504が、何れの葉ノードタイプをカリングすべきかに関する情報を受信し、その情報に基づいて交差試験結果を横断ユニット502に報告することが上述されているが、他の実施形態では、横断ユニット502は、そのような情報を交差ユニット504に提供しない。そのような実施形態では、横断ユニット502は、非葉ノード602のためのメタデータ604を調べて、非葉ノード602が光線と交差していないものとして扱われるべきかどうかを判定する。いくつかの実施形態では、横断ユニット502及び交差ユニット504は、同じエンティティである。
境界ボリューム階層600の横断についての特定の順序が説明されていないことに留意されたい。これは、任意の技術的に実現可能な順序で境界ボリューム階層600を横断することが可能であるためである。加速構造は、非葉ノード602に対する試験を介して、境界ボリューム階層の特定のノードを排除することを単にサポートする。
図6Bは、非葉ノード602内にタイプメタデータ604を含む例示的な境界ボリューム階層650を示す図である。図示したメタデータ及びタイプデータは、例示のみを目的としたものであり、限定的であると解釈されるべきではない。非葉ノード602のための「(なし)」のメタデータは、利用可能な三角形タイプのうち、非葉ノード602の全ての子孫葉ノード606の間で共有される三角形タイプがないことを示す。
この例では、8つの葉ノード606、すなわち606(11)~606(18)がある。葉ノード606(11)は、三角形かつ不透明のタイプデータ608(11)を有する。葉ノード606(12)は、三角形かつ非不透明のタイプデータ608(12)を有する。葉ノード606(13)は、三角形かつ不透明のタイプデータ608(13)を有する。葉ノード606(14)は、手続き型かつ非不透明のタイプデータ608(14)を有する。葉ノード606(15)は、三角形かつ不透明のタイプデータ608(15)を有する。葉ノード606(16)は、三角形かつ不透明のタイプデータ608(16)を有する。葉ノード606(17)は、手続き型かつ不透明のタイプデータ608(17)を有する。葉ノード606(18)は、手続き型かつ不透明のタイプデータ608(18)を有する。
非葉ノード602(13)は、非葉ノード602(13)の各子孫が「三角形」タイプを共有することを示すメタデータ604(13)を含む。これらの子孫は「不透明」又は「非不透明」タイプを共有しないので、その情報はメタデータ604(13)に含まれない。非葉ノード602(14)は、非葉ノード602(14)の全ての子孫の間でタイプデータが共有されないことを示すメタデータ604(14)を含む。非葉ノード602(15)は、非葉ノード602(15)の各葉ノード子孫が「三角形」及び「不透明」タイプデータ608を有することを示すメタデータ604(15)を含む。非葉ノード602(16)は、非葉ノード602(16)の各葉ノード子孫が「手続き型」及び「不透明」タイプデータを有することを示すメタデータ604(16)を含む。非葉ノード602(11)は、非葉ノード602(11)の全ての葉ノード子孫の間で共有される葉ノードタイプがないことを示すメタデータ604(11)を含む。非葉ノード602(12)は、非葉ノード602(12)の全ての葉ノード子孫が「不透明」の葉ノードタイプを有することを示すメタデータ604(12)を含む。
一例では、動作において、加速構造横断ステージ500は、三角形をカリングすることである。そのような例では、加速構造横断ステージ500は、非葉ノード602(13)又は非葉ノード602(15)の子孫の何れに対しても光線交差試験を行わない。別の例では、加速構造横断ステージ500は、不透明幾何形状をカリングすることである。そのような例では、加速構造横断ステージ500は、非葉ノード602(12)の子孫の何れに対しても光線交差試験を行わない。更に別の例では、加速構造横断ステージ500は、不透明な幾何形状及び三角形をカリングすることである。そのような例では、加速構造横断ステージ500は、非葉ノード602(12)又は非葉ノード602(13)の子孫の何れに対しても光線交差試験を行わない。
図7は、一例による、レイトレーシング動作を行うための方法700のフロー図である。図1~図6Bのシステムに関して説明するが、当業者であれば、任意の技術的に実現可能な順序で方法700のステップを行うように構成された任意のシステムが本開示の範囲内にあることを理解するであろう。
方法700は、特定の非葉ノード602を考慮するためのステップを説明し、境界ボリューム階層の横断中に使用される。したがって、方法700は、加速構造横断ステージ500が境界ボリューム階層の単一の非葉ノード602を考慮しているところから始まる。
ステップ702において、加速構造横断ステージ500は、非葉ノード602のための子孫共有タイプメタデータ604を読み取る。様々な例において、このメタデータ604は、境界ボリューム階層のための他の情報と同じデータ構造で記憶されるか、又は、「側波帯(side-band)」情報として別に記憶される。メタデータは、任意の特定の葉ノードタイプが非葉ノード602の全ての葉ノード子孫の間で共有されるかどうかを示し、共有される場合、何れの葉ノードタイプが共有されるかを示す。
ステップ704で、加速構造横断ステージ500は、光線交差試験のための1つ以上のカリングタイプを判定する。より具体的には、加速構造横断ステージ500は、例えば、アプリケーション、シェーダプログラム又はハードウェアユニットから、何れのタイプの葉ノードをカリングすべきかについての情報を得る。いくつかの例では、この情報は、加速構造横断ステージ500が境界ボリューム階層の横断を開始する前に得られる。
ステップ706で、加速構造横断ステージ500は、1つ以上のカリングタイプが子孫共有タイプメタデータの少なくとも1つのタイプを含むかどうかに基づいて、非葉ノードを交差していないものとして扱うかどうかを判定する。メタデータ604がカリングされるべき少なくとも1つのタイプを含む場合、加速構造横断ステージ500は、非葉ノード602の何れの子も横断されるべきでないと判定する。いくつかの実施形態では、加速構造横断ステージ500は、光線の幾何形状が非葉ノード602に関連付けられた幾何形状と実際に交差する場合であっても、非葉ノード602を光線と交差していないものとして扱う。メタデータ604がカリングされるタイプを含まない場合、加速構造横断ステージ500は、通常の光線‐ボックス交差試験を行い、加速構造横断を通常として進める(例えば、交差試験が、光線が非葉ノード602と交差すると判定した場合、非葉ノード602の子ノードを考慮し、又は、交差試験が、光線が非葉ノード602と交差しないと判定した場合、それらの子ノードを考慮から除外する)。
図示したユニットの各々は、本明細書で説明する動作を行うように構成されたハードウェア回路、本明細書で説明する動作を行うように構成されたソフトウェア、又は、本明細書で説明するステップを行うように構成されたソフトウェア及びハードウェアの組み合わせを表す。例えば、加速構造横断ステージ304は、完全にハードウェアで、完全に処理ユニット(計算ユニット132等)上で実行されるソフトウェアで、又は、それらの組み合わせとして実装される。いくつかの例では、加速構造横断ステージ304は、部分的にハードウェアとして実装され、部分的にソフトウェアとして実装される。いくつかの例では、境界ボリューム階層を横断する加速構造横断ステージ304の一部は、プロセッサ上で実行されるソフトウェアであり、光線‐ボックス交差試験及び光線‐三角形交差試験を実行する加速構造横断ステージ304の一部は、ハードウェアで実装される。加えて、レイトレーシングパイプライン300のステージの何れも、様々な実施形態において、ハードウェア回路、プロセッサ上で実行されるソフトウェア、又は、それらの組み合わせとして実装される。加えて、図1又は図2のユニットの何れも、様々な実施形態において、ハードウェア回路、プロセッサ上で実行されるソフトウェア、又は、それらの組み合わせとして実装される。レイトレーシングパイプライン300の特定のステージが「呼び出される」と言われる場合、この呼び出しは、ステージがハードウェア回路として実装されている場合にはハードウェアの機能を行うこと、又は、ステージがプロセッサ上で実行されるシェーダプログラムとして実装されている場合にはシェーダプログラム(又は他のソフトウェア)を実行することを伴う。
本明細書の開示に基づいて、多くの変形が可能であることを理解されたい。特徴及び要素が特定の組み合わせで上述されているが、各特徴又は要素は、他の特徴及び要素を用いずに単独で、又は、他の特徴及び要素を用いて若しくは用いずに様々な組み合わせで使用することができる。
提供される方法は、汎用コンピュータ、プロセッサ、又はプロセッサコアにおいて実装することができる。好適なプロセッサとしては、例として、汎用プロセッサ、専用プロセッサ、従来型プロセッサ、デジタル信号プロセッサ(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)
- レイトレーシング動作を行うための方法であって、
境界ボリューム階層の非葉ノードについての子孫共有タイプメタデータを読み取ることと、
光線の光線交差試験について1つ以上のカリングタイプを識別することと、
前記1つ以上のカリングタイプが、前記子孫共有タイプメタデータによって指定された少なくとも1つのタイプを含むかどうかに基づいて、前記非葉ノードを交差していないものとして扱うかどうかを判定することと、を含む、
方法。 - 前記1つ以上のカリングタイプは、前記子孫共有タイプメタデータによって指定された少なくとも1つのタイプを含み、
前記非葉ノードを交差していないものとして扱うかどうかを判定することは、前記非葉ノードを交差していないものとして扱うと判定することを含む、
請求項1の方法。 - 前記1つ以上のカリングタイプは、前記子孫共有タイプメタデータによって指定されたタイプを含まず、
前記非葉ノードを交差していないものとして扱うかどうかを判定することは、前記非葉ノードを交差していないものとして扱うと判定しないことを含む、
請求項1の方法。 - 前記1つ以上のカリングタイプは、三角形、手続き型幾何形状、不透明幾何形状及び非不透明幾何形状のうち1つ以上を含む、
請求項1の方法。 - 前記非葉ノードを交差していないものとして扱うことは、前記非葉ノードが前記光線と交差していないという指標を生成することを含む、
請求項1の方法。 - 前記非葉ノードに対する交差について前記光線を試験することを横断ユニットが要求したことに応じて、前記指標を前記横断ユニットに送信することを更に含む、
請求項5の方法。 - 前記横断ユニットは、前記光線交差試験の一部として、前記非葉ノードに対する交差について前記光線を試験することを要求する横断シェーダプログラムを実行するように構成されている、
請求項6の方法。 - 前記境界ボリューム階層の横断中に、前記境界ボリューム階層の複数のノードに対して前記読み取ることと、前記識別することと、前記判定することと、を行うことを更に含む、
請求項1の方法。 - 前記光線が前記非葉ノードと交差しないと判定された非葉ノードに対する前記光線の交差試験について、前記非葉ノードの子を考慮するのを見送ることを更に含む、
請求項8の方法。 - システムであって、
加速構造横断ステージと、
メモリと、を備え、
前記加速構造横断ステージは、
境界ボリューム階層の非葉ノードについての子孫共有タイプメタデータを読み取ることと、
光線の光線交差試験について1つ以上のカリングタイプを識別することと、
前記1つ以上のカリングタイプが、前記子孫共有タイプメタデータによって指定された少なくとも1つのタイプを含むかどうかに基づいて、前記非葉ノードを交差していないものとして扱うかどうかを判定することと、
を行うように構成されており、
前記メモリは、
前記境界ボリューム階層の少なくとも一部を記憶するように構成されている、
システム。 - 前記1つ以上のカリングタイプは、前記子孫共有タイプメタデータによって指定された少なくとも1つのタイプを含み、
前記非葉ノードを交差していないものとして扱うかどうかを判定することは、前記非葉ノードを交差していないものとして扱うと判定することを含む、
請求項10のシステム。 - 前記1つ以上のカリングタイプは、前記子孫共有タイプメタデータによって指定されたタイプを含まず、
前記非葉ノードを交差していないものとして扱うかどうかを判定することは、前記非葉ノードを交差していないものとして扱うと判定しないことを含む、
請求項10のシステム。 - 前記1つ以上のカリングタイプは、三角形、手続き型幾何形状、不透明幾何形状及び非不透明幾何形状のうち1つ以上を含む、
請求項10のシステム。 - 前記非葉ノードを交差していないものとして扱うことは、前記非葉ノードが前記光線と交差していないという指標を生成することを含む、
請求項10のシステム。 - 前記加速構造横断ステージは、
前記非葉ノードに対する交差について前記光線を試験することを横断ユニットが要求したことに応じて、前記指標を前記横断ユニットに送信するように更に構成されている、
請求項14のシステム。 - 前記横断ユニットは、前記光線交差試験の一部として、前記非葉ノードに対する交差について前記光線を試験することを要求する横断シェーダプログラムを実行するように構成されている、
請求項15のシステム。 - 前記加速構造横断ステージは、
前記境界ボリューム階層の横断中に、前記境界ボリューム階層の複数のノードに対して前記読み取ることと、前記識別することと、前記判定することと、を行うように更に構成されている、
請求項10のシステム。 - 前記加速構造横断ステージは、
前記光線が前記非葉ノードと交差しないと判定された非葉ノードに対する前記光線の交差試験について、前記非葉ノードの子を考慮するのを見送るように更に構成されている、
請求項17のシステム。 - 命令を記憶するコンピュータ可読記憶媒体であって、
前記命令は、プロセッサによって実行されると、
境界ボリューム階層の非葉ノードについての子孫共有タイプメタデータを読み取ることと、
光線の光線交差試験について1つ以上のカリングタイプを識別することと、
前記1つ以上のカリングタイプが、前記子孫共有タイプメタデータによって指定された少なくとも1つのタイプを含むかどうかに基づいて、前記非葉ノードを交差していないものとして扱うかどうかを判定することと、
を前記プロセッサに行わせる、
コンピュータ可読記憶媒体。 - 前記1つ以上のカリングタイプは、前記子孫共有タイプメタデータによって指定された少なくとも1つのタイプを含み、
前記非葉ノードを交差していないものとして扱うかどうかを判定することは、前記非葉ノードを交差していないものとして扱うと判定することを含む、
請求項19のコンピュータ可読記憶媒体。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202063044686P | 2020-06-26 | 2020-06-26 | |
US63/044,686 | 2020-06-26 | ||
US17/008,462 | 2020-08-31 | ||
US17/008,462 US11238640B2 (en) | 2020-06-26 | 2020-08-31 | Early culling for ray tracing |
PCT/US2021/036262 WO2021262427A1 (en) | 2020-06-26 | 2021-06-07 | Early culling for ray tracing |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2023532434A true JP2023532434A (ja) | 2023-07-28 |
Family
ID=79031215
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2022578611A Pending JP2023532434A (ja) | 2020-06-26 | 2021-06-07 | レイトレーシングのための早期カリング |
Country Status (6)
Country | Link |
---|---|
US (1) | US11238640B2 (ja) |
EP (1) | EP4172951A1 (ja) |
JP (1) | JP2023532434A (ja) |
KR (1) | KR20230027083A (ja) |
CN (1) | CN115769265A (ja) |
WO (1) | WO2021262427A1 (ja) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11380042B2 (en) * | 2020-06-26 | 2022-07-05 | Imagination Technologies Limited | Intersection testing in ray tracing systems using hierarchical acceleration structures with implicitly represented nodes |
US11704859B2 (en) * | 2020-08-20 | 2023-07-18 | Sony Interactive Entertainment LLC | System and method for accelerated ray tracing |
US11494969B2 (en) | 2020-08-20 | 2022-11-08 | Sony Interactive Entertainment LLC | System and method for accelerated ray tracing with asynchronous operation and ray transformation |
GB2599124A (en) * | 2020-09-24 | 2022-03-30 | Imagination Tech Ltd | Memory allocation for recursive processing in a ray tracing system |
CN114331800B (zh) | 2020-09-30 | 2024-06-21 | 想象技术有限公司 | 用于光线跟踪的相交测试 |
GB2602523B (en) * | 2021-06-23 | 2023-03-01 | Imagination Tech Ltd | Intersection testing in a ray tracing system |
GB2613359B (en) * | 2021-11-30 | 2023-11-22 | Imagination Tech Ltd | Method of generating a hierarchical acceleration structure |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080024489A1 (en) * | 2006-07-28 | 2008-01-31 | Robert Allen Shearer | Cache Utilization Optimized Ray Traversal Algorithm with Minimized Memory Bandwidth Requirements |
US7969434B2 (en) | 2006-09-19 | 2011-06-28 | Caustic Graphics, Inc. | Method, apparatus, and computer readable medium for accelerating intersection testing in ray-tracing rendering |
US7884819B2 (en) | 2006-09-27 | 2011-02-08 | International Business Machines Corporation | Pixel color accumulation in a ray tracing image processing system |
US9269182B2 (en) * | 2008-09-05 | 2016-02-23 | Nvidia Corporation | System and method for identifying entry points of a hierarchical structure |
US8619078B2 (en) | 2010-05-21 | 2013-12-31 | International Business Machines Corporation | Parallelized ray tracing |
US8957896B2 (en) * | 2012-06-11 | 2015-02-17 | Disney Enterprises, Inc. | Streaming hierarchy traversal renderer |
US10235338B2 (en) * | 2014-09-04 | 2019-03-19 | Nvidia Corporation | Short stack traversal of tree data structures |
US11341110B2 (en) | 2016-03-21 | 2022-05-24 | Imagination Technologies Limited | Hierarchy merging |
US10692270B2 (en) * | 2017-08-18 | 2020-06-23 | Microsoft Technology Licensing, Llc | Non-divergent parallel traversal of a bounding volume hierarchy |
US10957095B2 (en) * | 2018-08-06 | 2021-03-23 | Intel Corporation | Programmable ray tracing with hardware acceleration on a graphics processor |
US10740952B2 (en) * | 2018-08-10 | 2020-08-11 | Nvidia Corporation | Method for handling of out-of-order opaque and alpha ray/primitive intersections |
-
2020
- 2020-08-31 US US17/008,462 patent/US11238640B2/en active Active
-
2021
- 2021-06-07 WO PCT/US2021/036262 patent/WO2021262427A1/en unknown
- 2021-06-07 JP JP2022578611A patent/JP2023532434A/ja active Pending
- 2021-06-07 KR KR1020227045669A patent/KR20230027083A/ko active Search and Examination
- 2021-06-07 EP EP21829151.6A patent/EP4172951A1/en active Pending
- 2021-06-07 CN CN202180045529.3A patent/CN115769265A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
KR20230027083A (ko) | 2023-02-27 |
WO2021262427A1 (en) | 2021-12-30 |
CN115769265A (zh) | 2023-03-07 |
EP4172951A1 (en) | 2023-05-03 |
US11238640B2 (en) | 2022-02-01 |
US20210407175A1 (en) | 2021-12-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2023532434A (ja) | レイトレーシングのための早期カリング | |
US11488343B2 (en) | Mechanism for supporting discard functionality in a ray tracing context | |
US11321903B2 (en) | Bounding volume hierarchy compression | |
US11393156B2 (en) | Partially resident bounding volume hierarchy | |
JP2022510804A (ja) | 倍精度を用いない隙間のないレイと三角形との交差 | |
KR20220154706A (ko) | 광선 추적 다중 샘플 앤티-에일리어싱 | |
US20240087223A1 (en) | Overlay trees for ray tracing | |
US20220198739A1 (en) | Parallelization for raytracing | |
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 | |
US20220189096A1 (en) | Opacity texture-driven triangle splitting | |
US11908065B2 (en) | Stack-based ray traversal with dynamic multiple-node iterations | |
US11450058B2 (en) | Early termination of bounding volume hierarchy traversal | |
US20240212259A1 (en) | Traversing multiple regions of a bounding volume hierarchy in parallel | |
US20240221283A1 (en) | Emulating oriented bounding boxes in bounding volume hierarchies | |
US11854138B2 (en) | Techniques for introducing oriented bounding boxes into bounding volume hierarchy | |
US20240203034A1 (en) | Box splitting for bounding volume hierarchies | |
US20240112392A1 (en) | Dynamic node traversal order for ray tracing | |
US20240203033A1 (en) | Intersectable instance nodes for ray tracing acceleration structure nodes | |
US20240144580A1 (en) | Split-based trees for ray tracing | |
US20230351667A1 (en) | Method and apparatus for performing high speed parallel locally order clustering for a bounding volume hierarchy | |
US20240104844A1 (en) | Multi-resolution geometric representation using bounding volume hierarchy for ray tracing | |
JP2022539951A (ja) | 減少した分岐をソートする計算ユニット |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20240604 |