JP2012502394A - 光線固有のクリッピングを使用したレイトレーシング - Google Patents

光線固有のクリッピングを使用したレイトレーシング Download PDF

Info

Publication number
JP2012502394A
JP2012502394A JP2011526942A JP2011526942A JP2012502394A JP 2012502394 A JP2012502394 A JP 2012502394A JP 2011526942 A JP2011526942 A JP 2011526942A JP 2011526942 A JP2011526942 A JP 2011526942A JP 2012502394 A JP2012502394 A JP 2012502394A
Authority
JP
Japan
Prior art keywords
ray
intersection
scene
rays
default
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
JP2011526942A
Other languages
English (en)
Other versions
JP5271416B2 (ja
Inventor
ライアン アール ソールズベリー
ジェイムズ アレクサンダー マクーム
スティーブン パーセル
ルーク ティルマン ピーターソン
Original Assignee
コースティック グラフィックス インコーポレイテッド
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by コースティック グラフィックス インコーポレイテッド filed Critical コースティック グラフィックス インコーポレイテッド
Publication of JP2012502394A publication Critical patent/JP2012502394A/ja
Application granted granted Critical
Publication of JP5271416B2 publication Critical patent/JP5271416B2/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)

Abstract

システム、方法、及びこのような方法を実行するコンピュータ可読媒体が、光線を追跡すべき3−Dシーンのサブポーションを定義する光線ごとのクリッピング情報を指定できるようにする。クリッピング情報を、光線の起点からのクリップ距離として、光線のパラメータ定義の最終値として指定することができ、或いは追跡すべき光線の定義にクリッピング情報を組み込むことができる。クリッピング情報を使用して、加速構造の一部をトラバースする必要があるかどうか、並びに交差に関してプリミティブをテストすべきかどうかをチェックすることができる。他の態様では、デフォルトオブジェクトを指定して、テストのために定めたサブポーション内でプリミティブが交差していないときに、このデフォルトオブジェクトを交差しているものとして戻すことができる。さらなる態様では、交差テストリソースが何を行うか、及び/又は光線のテストの完結後にどのような情報を報告するかを制御する交差テストリソースが解釈できるフラグを提供できるようにする。
【選択図】図7

Description

〔関連出願との相互参照〕
本出願は、2009年9月8日に出願された「光線固有のクリッピングを使用したレイトレーシング」という名称の米国特許出願第12/555,678号、及び2008年9月9日に出願された「光線固有のクリッピングを使用したレイトレーシング」という名称の米国仮出願第61/095,570号、及び2008年9月22日、2008年10月1日、及び2009年4月24日にそれぞれ出願された、全て「非再帰的レイトレーシングのためのシェーダAPI」という名称の米国仮出願第61/099,152号、61/101,854号、及び61/172,453号からの優先権を主張するものであり、上記出願は全てその全体が引用により本明細書に組み入れられる。
以下の発明は、一般にコンピュータグラフィクスに関し、より詳細には、レイトレーシングを使用して3−Dシーンの2−D表現による描画を加速化することに関する。
コンピュータグラフィクス技術では、レイトレーシングを使用して3−Dシーン記述からフォトリアリスティックな2−D画像を描画することが周知である。
通常、レイトレーシングでは、シーン内の構造体の表面を記述する三角形などの幾何プリミティブで構成されたシーン記述を取得する。このプリミティブを、プリミティブに当たる光がプリミティブの品質によってどのように影響を受けるかをコンピュータに指示するテクスチャ及びその他の情報に関連付けることができる。換言すれば、物理的環境モデルが作成され、このモデルを、人間にとってなじみのある写実的な状態の結果を生み出すように設計することができ、或いは望む通りの他の結果を実現するように設計することができる。レイトレーシングでは、シーンの要素と相互作用する光の物理的動作をモデル化することができるので、写実的な影及び照明効果を含むフォトリアリスティックな画像を作成することができる。しかしながら、レイトレーシングは計算が集中的なものになることも知られており、現在のところ、最先端のグラフィクスワークステーションでさえ、レイトレーシングを使用して複雑なシーンを描画するのにかなりの時間を必要とし、レイトレーシングを使用したリアルタイムな高品質及び高解像度の描画は依然として実現が難しい。
ほとんどの実際のシーンは光源を含む(より一般的には、例えばX線、赤外線などのいずれかの種類のエネルギー源のモデルを含むことができる)。この光源がシーン内のオブジェクトを照射する。通常、シーンは、シーンクリップ距離としても知られているシーン境界によって識別できる何らかの境界された領域内に定められるという点で、シーン記述は所定の限度に達する。次に、カメラ又はその他の起点から光線を発して、(例えば、別のオブジェクトの影になっているオブジェクトの特定のポイントなどの)あらゆる数の状態をテストする。
このような光線が、プリミティブ又は光源などのシーンオブジェクトと交差したことが確認されるまで、或いは光線がシーン境界まで追跡されるまでシーン内で追跡される。そして、別のプリミティブとの交差が存在する場合、その交点の状態に関する情報を収集するためにさらなる光線を発することができる。光源が交差された場合、この光源からの光エネルギーを光線の起点にぶつかるように定めることができる。色及び強度などの様々な光の属性を考慮することができる。
上記は全て、エネルギー源を有するシーンを介して導かれるエネルギー伝播のコンピュータベースのモデル、及び異なる質感、色、回折、及び反射特性などの質の異なり得る様々なオブジェクトについて説明したものである。従って、このようなモデルから得られる結果が望ましいものであるかどうかは、ハードウェア、及びソフトウェアがハードウェアをどのように使用するかを含む、モデルを実現するために使用する計算リソースの的確さ及び精度に依存する。一定量の的確さ及び精度からいずれかのより良い結果を得られる、或いは少ない計算で所望の結果を得られる方法及びシステムが望まれており、以下のいくつかの態様は、レイトレーシングシステムにおけるこのような目標及びその他の改善に取り組むものである。
態様は、3−Dシーンの2−D表現を描画するためのレイトレーシングなどのレイトレーシングの方法を含む。方法は、シーンのプリミティブ及び形状加速データの要素を含む幾何学的オブジェクトとの交差をテストするために複数の光線をインスタンス化するステップを含む。方法は、個々の関連する光線を追跡すべきそれぞれの起点からの最大距離を示すそれぞれのクリッピング情報を複数の光線の各々に関連付けるステップを含む。方法はまた、クリッピング情報により特定される最大距離内で幾何学的オブジェクトとのみ交差する個々の複数の光線をテストするステップも含む。方法はまた、個々の光線といずれかのテストされるシーンプリミティブとの間のいずれかの最も近い識別された交差のそれぞれの指示を出力するステップも含む。
態様は、レイトレーシングを使用して3−Dシーンの2−D表現を描画するためのシステムも含み、このシステムは、シェーダルーチンのためのコンピュータ可読命令とともに構成された第1の処理リソースを含む。シェーダルーチンは、複数の幾何学形状で構成された3−Dシーンの交差テスト中に識別された幾何学形状に関連付けられ、シェーダルーチンのための命令が、実行時に、光線定義データを有するデータ構造をインスタンス化する。光線定義データは、光線の交差テストを制限すべき3−Dシーンのサブポーションを定めるデータを含む。システムはまた、データ構造を受信し、3−Dシーンのサブポーション内に存在する3−Dシーンを構成する幾何学形状との交差に関して光線をテストし、光線とシーンを構成する形状との間に最も近い交差が存在する場合にはこの交差の指示を与える交差テストリソースも含む。
さらなる態様は、レイトレーシングを使用して3−Dシーンから2−D画像を描画するのに有用な交差テスト演算を実施するための計算リソースを含む。この計算リソースは、3−Dシーン内で交差テストを受ける光線を表すデータと、光線固有のクリッピング情報とを取得する1又はそれ以上のインターフェイスも含む。光線固有のクリッピング情報は、光線の起点を使用して、その光線の交差テストを制限すべき範囲を定める。インターフェイスは、光線との交差をテストする形状を定めるデータを取得するためのものでもある。
計算リソースはまた、この形状がテストする光線の範囲内に存在するかどうかを、取得したクリッピング情報に基づいて判定するように構成された交差テスト制限回路と、形状がその範囲内に存在すると制限回路が判定したことに応答して光線との交差に関して形状をテストし、形状と光線の間の検出された交差の指示を出力するように構成された交差テスト回路とを含む。この回路は、ソフトウェアをプログラムされた汎用ハードウェア、カスタマイズされた又は部分的にカスタマイズされたハードウェア、並びにこれらの組み合わせを含むことができる。いずれかの所与の実施構成に望ましい場合、この回路を複数の物理的な位置の間で分散することもできる。
さらなる態様は、レイトレーシングを使用して3−Dシーンの2−D表現を描画する方法を含み、この方法は、プリミティブで構成された3−Dシーン内で交差テストを受ける複数の光線をインスタンス化するステップを含む。方法は、それぞれのクリッピングデータを複数の光線の各々に関連付けるステップも含む。方法はまた、個々の光線をテストするためのプリミティブの最終グループに到達するために、次第に小さくなるプリミティブのグループをそれぞれ境界する形状加速データの要素の編成を光線ごとにトラバースするステップも含み、このトラバースするステップは、所与の要素が、クリッピングデータから取得できる最大テスト距離内に存在するかどうかを判定するステップを含む。方法は、そのプリミティブの最終グループとの交差に関して個々の光線をテストするステップと、光線ごとの最も近い検出した交差を含む交差テスト結果を報告するステップとをさらに含む。
さらなる態様は、レイトレーシングを使用して3−Dシーンの2−D表現を描画するのに有用な方法を含む。この方法は、3−Dシーンを構成する複数のプリミティブのうちの第1のプリミティブに第1の光線が交差したという指示を受け取るステップと、第1の光線と第1のプリミティブとの交差に近い起点を有する第2の光線のインスタンス化を引き起こすステップと、第2の光線にクリッピング距離及びデフォルト交差オブジェクトを関連付けるステップとを含む。方法は、第2の光線が、第2の光線の起点と第2の光線の方向に沿ったクリッピング距離内のポイントとの間で、シーンを構成するいずれのプリミティブとも交差しないと判定するステップと、この判定ステップに応答して、第2の光線がデフォルト交差オブジェクトに交差したという指示を戻すステップとをさらに含む。
さらなる態様は、3−D空間内に位置し、プリミティブの選択をそれぞれ境界するプリミティブと形状加速データの要素とを含む幾何学形状に基づいて、レイトレーシングベースの2−D表現の描画で使用する方法を含む。この方法は、起点データ及びシーンクリップ距離とは無関係な光線固有のクリップ距離により部分的に定められる光線のインスタンス化を引き起こすステップと、光線固有のクリップ距離よりも光線の起点に近い幾何学形状とのみの交差に関して光線をテストするステップを含む。
さらに別の態様は、レイトレーシングベースの3−Dシーン描画において光線と幾何学形状との間の検出された交差をシェーディングするのに有用な方法を実施するためのコンピュータ可読命令を記憶するコンピュータ可読媒体を含む。この方法は、第1の光線定義データを使用して、交差シェーディングのために構成された第1の計算リソース内で、幾何学形状で構成された3−Dシーン内の交差に関してテストされる第1の光線を定義するステップを含む。光線定義データは、第1の光線の起点と、1又はそれ以上のフラグと、交差に関して同時にテストできる他の光線から第1の光線を一意に識別する識別子とを含む。
方法は、第1の光線定義データを第1のメモリに記憶するステップと、幾何学形状との交差に関して光線をテストするように構成された第2の計算リソースに第1の光線の識別子を提供するステップとを含む。方法はまた、第2の計算リソースに対して、第1のメモリから第1の光線定義データを取り出すステップと、第1の光線を少なくとも1つの幾何学形状でテストするステップとを含む。方法はまた、第1の光線と幾何学形状のいずれかとの交差を検出したことに応答して、1又はそれ以上のフラグを使用して第2の計算リソースからの出力の内容を決定するステップも含む。
さらに別の態様は、レイトレーシングベースの3−Dシーン描画において光線と幾何学形状との間の検出された交差をシェーディングするのに有用な方法を実施するためのコンピュータ可読命令を記憶するコンピュータ可読媒体も含む。この方法は、3−Dシーン内で交差テストを受ける光線を識別するシェーダルーチンからの交差テスト要求を受け入れるステップを含む。方法はまた、交差テストを制限すべきシーンのサブポーションを示す情報を交差テスト要求から取得するステップと、シーンを構成するプリミティブの選択を識別するステップと、識別された光線とこれらの交差テストを設定する前に、このようなプリミティブの選択がシーンのサブポーション内に存在するかどうかを判定するステップとを含む。
さらに別の態様は、シェーダが方法を実施するためのコンピュータ可読命令を記憶するコンピュータ可読媒体を含む。この方法は、3−Dシーン内で交差テストを受ける光線を定義するステップと、この光線の光線固有のクリッピング距離を選択するステップとを含む。クリッピング距離は、3−Dシーンに関して定義されたグローバルクリッピング距離とは異なる。光線固有のクリッピング距離は、光線の交差テストを光線の起点とそのクリッピング距離との間に制限するように選択される。方法はまた、光線の交差テストを、この光線固有のクリッピング距離を使用して設定するステップも含む。
詳細な説明では以下の図を参照する。
現在開示している主題を使用することができるアーキテクチャ例であり、レイトレーシングのための他のシステムアーキテクチャにも応用することができる、レイトレーシングのためのシステムアーキテクチャを示す図である。 いくつかの実施構成において図1のシステムの部分をどのように結合できるかを示す図である。 図4〜図9の態様を説明するために使用するプリミティブ及び形状加速データ要素を含むシーンを示す図である。 図4〜図9の態様を説明するために使用するプリミティブ及び形状加速データ要素を含むシーンを示す図である。 図3Aの加速データ要素及びプリミティブの編成例を示す図である。 本明細書で開示する方法及びその他の態様を実現するためのデータを有する光線のデータ構造を示す図である。 方法のステップを示す図である。 図6の方法の一部を実施するために使用できる別の方法のステップを示す図である。 同様に図6の態様を実現できる別の方法のステップを示す図である。 開示する態様による、形状加速要素の編成のトラバースに関する別の方法のステップを示す図である。 上述のあらゆる態様を実現できる、複数の処理要素を含むシステム実施構成例の態様を示す図である。
以下の説明は、当業者が本発明の様々な実施及び使用できるようにするために提示するものである。特定の技術、実施構成及び用途についての説明は、一例として行うものにすぎない。当業者には、本明細書で説明する例に対する様々な修正が明らかになると思われ、本発明の範囲から逸脱することなく、本明細書で定義する一般原理を他の例及び用途にも適用することができる。
説明を明確にするために、(三角形の3つの頂点の座標などの)プリミティブのような、ある種のオブジェクトに関するデータについては、オブジェクトに関するデータを示すのではなくオブジェクト自体として単純に説明する。例えば、「光線をインスタンス化する」という場合、この光線を物理的に実現することではなく、光線を表すデータを生成することであると理解されたい。
以下の図は、レイトレーシングを使用して3−Dシーンの2−D表現を描画するためのシステム及びその一部の例を示すものである。このような描画のための2つの主成分は、光線を追跡して交差を識別すること、及び識別した交差にシェーディングを行うことである。一般的には、機能ユニットのいずれかの機能又は義務のいずれかを複数のハードウェアユニット、又は複数のソフトウェア、ソフトウェアサブルーチンの形で実現することができ、異なるコンピュータ上で実行することもできる。場合によっては、このような実施構成がシステム機能に関連し得る場合、これについても詳細に説明する。
背景技術で述べたように、3−Dシーンを2−D画面上に表示するには、これを2−D表現に変換する必要がある。このような変換では、シーンを映すカメラ位置を選択することができる。カメラ位置は、シーンの視聴者の場所(ゲーマー、アニメ動画を観ている人、ホログラフィー画像のスライスの起点など)を表すことが多い。通常、2−D表現は、2−D表現が所望の解像度の画素の配列を含むようにカメラとシーンの間の平面の場所に存在する。個々の画素の色ベクトルは描画を通じて決定される。レイトレーシング中、最初にカメラ位置から光線を投じて2−D表現の平面に所望のポイントで交差させ、その後3−Dシーンへと続けることができる。
本明細書のいくつかの実施構成では、光線が2−D表現に交差する場所を、その光線に関連するデータ構造内に保存することができる。カメラ光線の交差が検出された場合、この交差の検出に応答してさらなる交差テストを行わなければならない。例えば、その交点にどの光が当たっているかを特定しなければならず、この特定は、光源が別のオブジェクトの陰になっているかどうかのテストを含むことができる。交差した形状の表面の質により、交差の検出に応答して何を行う必要があるかが少なくとも部分的に決定される。例えば、(ガラスなどの)透明な物質と交差した場合、不透明な物質と交差した場合とは異なる光線を発する必要があり得る。交差が検出されたときに何が起きるかは、(便宜的にそのオブジェクトのシェーダと呼ぶ)コンピュータコード、及びオブジェクトの交差に関連するその他のデータにより大部分が決定される。
図1は、プリミティブで構成されたシーンをレイトレーシングする際に使用するシステムの態様を示している。図1に示す要素は、いずれもハードウェア及び/又はソフトウェアの1又はそれ以上の異なる部分として実現することができる。
システム100が、ジオメトリユニット101、交差テストユニット109、交差処理ユニット102、及びサンプル処理リソース110を含み、必要に応じてこれらをハードウェア及び/又はソフトウェアの形で実現することができる。ジオメトリユニット101、交差テストユニット109、交差処理ユニット102、及びサンプル処理ユニット110の各々を、ビデオカード、又はその他の外部又は内部コンピュータシステム周辺機器上で具体化することもできる。リンク118が、光線データ105と交差テストユニット109との間の通信を実現する。交差テストユニット109は、リンク112によりプリミティブ及びGADストレージ103から幾何学形状データを受け取る。場合によっては、プリミティブ及びGADストレージ103を、サンプルデータ、(シェーダルーチンなどの)光線シェーディングデータ107、及びテクスチャデータ108などのその他のデータを記憶するメインメモリの形で実現して、光線データストレージ105と分離することができる。
図1では、説明するユニットのいずれかを、ユニット機能を表すソフトウェア、コンピュータ実行可能命令の形で少なくとも部分的に実現する実施形態を、例えば、磁気又は光学ディスク、フラッシュメモリ、USBデバイスなどの記録可能な種類のコンピュータ可読に記憶することができる。識別されたユニットの性質に応じて、リンク118及び112などの図1のその他の機能を様々な方法で実現することができる。例えば、交差テストユニット109が、1又はそれ以上のCPUで実行される複数のスレッドを含む場合、リンク118が、光線データストレージ105へのアクセスを提供するための、このような(単複の)CPU及び適当なメモリコントローラハードウェア/ファームウェア/ソフトウェアの物理的メモリアクセスリソースを含むことができる。
交差テストユニット109は、光線に対して幾何学形状をテストできる1又はそれ以上の(テストセルとしても知られる)個別のテストリソースを含む。個々のテストセルは、所与の光線が所与のプリミティブに交差したかどうかの指示を含むことができるテスト結果を生むことができる。一般的には、システムコンポーネントは、所与の特定の光線テストの未知の完了までの時間をサポートするように設計される。要約すれば、交差テストユニット109は、ジオメトリメモリへのアクセスを読み取り、光線を参照する待ち行列を入力として有する。交差テストの出力通りに、個々の光線を最初に交差した形状に関連付けることができる。
図2は、図1の交差処理リソース102及び交差テストリソース109を含むハイレベルのアーキテクチャを示している。交差処理リソース102及び交差テストリソース109は、交差処理102から交差テスト109へ送信される光線/光線IDのための待ち行列、及び交差テスト結果の指示を交差テスト109から交差処理102へ送信するための待ち行列203に結合される。待ち行列202は、交差処理102で実行されるシェーダによってインスタンス化される光線又は光線識別子を提供し、待ち行列203は、光線識別子及び最初に交差された幾何学形状(例えば、プリミティブ)を含む指示を与える。
図3Aは、三角形プリミティブ(場合によっては、三角形プリミティブ片)で構成される2−Dシーン例、及び三角形プリミティブの選択が(「GAD」とも呼ばれる)形状加速データの要素により境界される場所を示している。明確にするために図3Aを2−Dで示しているが、開示する原理は一般に3−Dシーンにも適用される。
プリミティブの(何十万又は何百万又はそれ以上などの)多くでシーンを構成できるので、GADの要素を使用して、シーン内の1又はそれ以上のプリミティブ(又はアブストラクティング)の境界を近似させ、プリミティブのグループをさらなるテストのために識別(或いはさらなるテストのために除外)できるようにすることにより交差テストを加速化することができる。
一般に、GAD要素は、3−D空間内でそれぞれのプリミティブの一群を囲む幾何学形状を含み、これにより幾何学形状の表面が光線と交差しなければ、光線が、形状により境界されるいずれのプリミティブとも交差しないことも示すようになる。GAD要素は、球体、軸合わせしたバウンディングボックス、kd−ツリー、オクトリー、及びその他の種類のバウンディングボリューム階層を含むことができる。GAD要素は、主に光線とプリミティブの交差をより迅速に識別するためにプリミティブを抽象化するのに有用であるため、これらは光線との交差を容易にテストできる形状であることが好ましい。
図3Aの例では、一般化するために、大まかに球状(2−Dでは円)のGAD要素340がプリミティブ305、306、及び307を境界するように示しているのに対し、大まかに球状の要素343は、以下で説明する他のGAD要素のグループを境界しており、これらがさらにプリミティブの一部を直接境界する。これに続き、要素315が、三角形のストリップ並びにGAD要素344及び368からプリミティブ318を境界する。さらに、GAD要素344が三角形のストリップ331及びGAD要素369を境界し、これがさらに三角形のストリップ367を境界する。GAD要素368は、三角形のストリップ332を境界する。ある意味、GAD要素343は、要素344、368などを介入させることにより境界されたプリミティブを全て境界する。しかしながら、一般に本明細書では、境界とは、GADの要素をさらに介入させることのない直接的な境界のことを意味する。
図3Bは、プリミティブ318を有する他の個々の三角形ストリップのプリミティブを示している。従って、図3Bは、図示の他の三角形ストリップも別々に列挙されるプリミティブを有することができる例を示している。図3Aのシーンは、一般化した2−Dの例として意図するものであり、この例から、実際に関心のあるシーンは何倍も複雑であることが明らかとなろう。
上述したように、GAD要素は互いに相関付けることができる。図4は、図3AのプリミティブとGAD要素とのこのような相関関係を、図3AのGADの要素を表すノードを図3Aの他のGAD要素に境界線によって接続したグラフ400で示しており、これらが最終的に図3Aのプリミティブを境界する。特に、図3Aから明らかなように、シーンの範囲を暗黙的に境界することができる(すなわち、シーン内の全てのプリミティブを境界するように見える)ルートノード405をシーン内で明示的に定める必要はない。ルート405は、境界線によりGAD要素340及び341(ノード)に接続される。さらに、ノード340は、プリミティブ305、306、及び307を境界する。ノード341に戻ると、ノード341はノード315に接続され、これがさらにノード344及び368に接続される。プリミティブ318がノード315(すなわち、GAD要素315)により直接境界される一方で、ストリップ331はノード344により境界され、ストリップ330はノード368により境界される。ノード344はノード369を境界し、これがストリップ367を境界する。
図から分かるように、グラフ400は、図3Aのプリミティブを境界するために使用されるGAD要素間の関係を示しており、ルート405から開始して、グラフの異なるポイントにおけるGAD要素との交差に関して光線をテストすることにより、1又は複数の光線との交差を最終的にテストする必要があるプリミティブを絞ることができるようになる。
従って、1対の要素が境界線により接続されている場合、この境界線は、ノードの一方の相対粒度が他方のノードのものと異なることを示すことができ、このことは、その境界線により接続されたノードの一方が境界するプリミティブが他方のノードのプリミティブよりも多いか又は少ないことを意味することができる。場合によっては、グラフを階層的にして、グラフに方向性が存在するようにし、グラフを親ノードから子ノードへの順序でトラバースし、経路に沿って残りの境界されたプリミティブを絞ることができる。
場合によっては、グラフが一様なGAD要素を有するようにして、所与のGAD要素が他のGAD要素を境界する場合には(たとえこのグラフが非一様なものであっても)、この所与のGAD要素がプリミティブを直接境界しないようにすることもできる(すなわち、所与のGAD要素により境界されるいずれかのプリミティブは、所与のプリミティブにより境界されるGAD要素の1つによっても境界されるようになる)。別のGAD要素により境界されるいくつかの要素及び/又はプリミティブにおいて何らかの均一性を保持することを目標にしてGAD要素のグラフを構成することができる。このような目標を達成できるまで所与のシーンを細分化することができる。
通常、光線は、3−D空間における光線の起点及び方向ベクトルを使用して定義される。しかしながら、他のメカニズムを使用して同等の光線データを表すこともでき、例えば様々な数学的変換を使用して、このような起点及び方向情報を別の変数の組にマップすることができる。
いずれにせよ、光線が、いくつかの種類の光線のためにシーン内のどこかに存在できる所与の起点から概念的に発せられる場合でも、多くの場合、交差テストを光線の起点から開始しないことが好ましい。1つには、いくつかの加速構造を使用する場合、どのGAD要素において起点が見つかるかが容易に明らかにならない可能性があるからである。
従って、多くの場合、光線テストは加速構造の先頭(ルート)から開始して構造内へと進む。このことは、光線が概念的にその起点からシーンをトラバースするという順序から外れて光線をプリミティブに対してテストできることを意味する。そこで、以下の説明では、所与のGAD要素と交差すると判定されている光線に基づき、これに応じて次にいずれの他のGAD要素をテストすべきかを判定するためのメカニズムを提供する。階層的グラフの例では、一般に、次にテストされる要素は、テストされるノードの子ノードである。しかしながら、他の好適な方法を提供することもでき、例えば、厳密には階層的ではないが、グラフを方向付けることができる。
ここで図5を参照すると、1つの光線をシステム内で現在テストされている他の光線と識別/区別するために使用できる光線識別子(505)を含む光線を定義するためのデータ構造500の例を示している。データ構造500は、起点506、方向507、クリップ距離508、デフォルトオブジェクト509及び1又はそれ以上のフラグ(510)も含む。以下、データ構造500のこれらの成分に関するさらなる詳細を示す。
図6は、光線データ構造500の成分を提供及び使用することに関する第1の方法600を示しており、この方法をシェーダ(シェーディングプロセスなど)が実行して、図7〜図9に示す方法で使用できる入力を生成することができる。また、図7〜図9に開示する態様による方法を実施する交差テストリソースから取得される光線/プリミティブ交差の指示を受け取ったことに応答して方法600を実施することもできる(すなわち、交差テストとシェーディングの間にループが存在することができる)。
方法600は、交差テストのための光線をインスタンス化する(605)という最初のステップを含む。従って、シェーダコードが実行できる方法600のステップは、光線をインスタンス化するステップ(605)と、それぞれのクリップ距離を個々の光線に関連付けるステップ(610)とを含むことができる(シェーダはクリップ距離を設定することができ(610)、或いは光線をテストしようとするシーンの範囲又はサブポーションを別様に決定する)。
ここで言うクリップ距離とは、例えばシーン全体の範囲などの、一般的に適用できる追跡限界とは無関係に設定可能な所与の光線のクリップ距離のことである。クリップ距離は、様々な方法で指定することができる。1つの方法は、3−D空間内の終点を提供することである(例えば、別の3つ組が終点を指定する)。光線をパラメータで指定する場合、最大パラメータサイズを指定することができる。光線に関わる交差テストをどこで中止すべきか、或いは別様に制限すべきかを決定できる限り、関連するクリップ距離を有する個々の光線にこのようなクリップ距離のための他の方法を提供することもできる。
従って、光線データ構造500は、このデータ構造により指定される光線の交差テストを制限すべきシーンのサブポーションを定義する。光線が2−Dである場合、このようなサブポーションはラインセグメントであってもよい。例えば、ラインセグメントは、光線の起点及びシーン内の第2の3−Dポイントにより定義されるシーンのサブポーションであってもよい。このようにして、交差テストリソースがデータ構造内のデータを解釈して、このシーンのサブポーション内に存在しない加速要素及び/又はプリミティブなどの幾何学的オブジェクトに交差テストを行わないようにすることができる。本明細書では、便宜上、「クリップ距離」又は「クリッピング距離」という用語を一般に使用するが、この用語はまた、シーンの範囲又はサブポーションを定義し、この定義された範囲又はサブポーションを使用して、関連する光線がこの範囲又はサブポーション内でのみ、或いはこれらを使用しない場合にのみテストすべきかどうかに関して判別を行うという、より一般的な概念も意味する。
場合によっては、データ構造は、複数の光線を定義する情報を含むことができる。例えば、状況によっては、光源による影に関してプリミティブ内のいくつかのポイントをテストするようにシェーダをプログラムすることができる。このため、このシェーダは、起点は異なるが目標は類似するいくつかの光線を発することができる。例えば、シェーダは、いくつかの光線をパラメータで定義して、例えば(モンテカルロプロセスなどで)いくつかのポイントを統計的にサンプリングすることができ、従ってこれらの状況では、データ構造が、起点は異なるが目標は類似するいくつかの光線を定義する際に使用できるパラメータを含むことができる。これらの状況では、全ての光線に同じデフォルトオブジェクトを提供することができる。さらに他の状況では、データ構造が、起点は類似するが目標が異なる複数の光線を定義することができる。これらの種類の状況では、個々の異なる目標に異なるデフォルトオブジェクトを提供することができる。これらは、3−Dシーン内の光線に関する交差テストの範囲を制限するための異なるデータの組み合わせをどのように実現できるかについての例にすぎす、また異なる条件下で交差したと報告され得る1又はそれ以上のデフォルトオブジェクトを提供するさらなる拡張にすぎない。
別個のクリッピング距離の使用、又は所与の光線に関するテストの範囲を制限する別の方法から、クリッピング距離を有しておらずシーン内で完全にテストされる光線を定義できることが明らかになるはずである。このように、これらの例及びその他の態様によるシステム及び方法との関連では、それぞれのクリッピング距離を有するシステム内でインスタンス化される光線、及び(恐らくは、一般化されたシーンクリップ距離以外の)それぞれの距離を有していないその他の光線が存在してもよい。従って、交差テストの実施構成は、それぞれのクリップ距離を有する光線及び有さない光線を判定するための機能を提供することができる。
いくつかの実施構成では、データ構造500の一部を具体化する異なるデータ構造を提供する必要がないことも明らかになるはずである。むしろ、データ構造500の一部のいずれかを、いずれかの適当なメカニズムにより提供することができる。例えば、実施構成は、シェーダがクリップ距離内のみの特定の光線(より一般的には、シーンのサブポーション)のレイトレーシングを要求できるようにする(手続き呼び出し、関数呼び出しなどの)ユーティリティを提供することができる。データ構造500内に示すデフォルトオブジェクト及びフラグなどの、シェーダから提供されるその他のパラメータを受け入れるためにこのユーティリティを提供することもできる。当然ながら、このようなユーティリティは、このようなユーティリティをインスタンス化するシェーダからの呼び出しにおけるデータ構造500の場所のためのメモリ位置参照などの参照を受け取ることができる。データ構造500内に示すデータのいくつかを他のデータから推測するようにユーティリティをプログラムすることもできる。例えば、シェーダは、デフォルトオブジェクト識別子を提供することができ、ユーティリティを実施するプログラムは、デフォルトオブジェクトからクリップ距離を推測することができる。クリップ距離は、テストされる光線の起点に対してデフォルトオブジェクトよりも近く、またいくつかの状況ではわずかに近くなる。
光線はクリップ距離とは別の定義データを有することができるが、場合によっては、例えば2つのポイントを接続するラインセグメントに沿ったテストの起点及び最大範囲を定める空間内の2つの異なるポイントを指定することにより、光線をクリップ距離で定義することもできる。任意に(破線で示すように)、シェーダは、デフォルト形状を指定して(615)1又はそれ以上のフラグを設定することができる(620)。前述の図に関して説明したように、クリップ距離内に交差されたプリミティブが存在しない場合、及びいずれかのフラグが設定されたというさらなる解釈に基づいて、交差テスタが、交差されたものとしてデフォルト形状を戻すことができる。シェーダは、交差テストリソースが所定の状況下でのみデフォルト形状の交差を報告し、或いは他の状況下でデフォルト形状の交差以外の何かを報告するフラグを設定するように決定することができる。次に、シェーダは、テストのために二次光線(又はあらゆる数のインスタンス化された光線)を提出(通信として識別される621)することができる。いくつかの例では、光線をクリッピング間隔に関連付けることができ、この場合テストのために、光線がこの通常の光線の範囲の一部として指定される間隔内又は間隔外のいずれかに制限される。
図7は、交差テストのための方法600の要素625を実施する方法700を示しており、光線をそれぞれのクリッピング距離に関連付けることができる実施構成では、この方法を、光線をテストするための交差テストリソースにより実施することができる。方法625では、光線識別子を受け取ること705により、交差テストリソース内で交差テストをトリガすることができる。例えば、交差テストリソースをローカルなメモリに結合して光線のいくつかのデータ構造(図5を参照)を記憶することができ、その後、この交差テストリソースに、識別済みの光線を定義するデータを取り出して(710)光線をテストすべきであることをテストリソースに示す、ローカルなメモリに記憶された光線の識別子を別の計算リソースから提供することができる。光線識別子は、幾何学形状の識別子、又は幾何学形状を定義するデータを伴うことができる(715)。
方法625は、光線がそれぞれのクリップ距離に関連しているかどうかを判定するステップ(720)へ続き、関連している場合、このようなクリップ距離内にテストされる形状が存在するかどうかが判定される(725)。クリップ距離が存在しない場合、或いは形状がクリップ距離内にある場合、この形状がテストされる(740)。形状がクリップ距離外にある場合、光線のデフォルト形状が存在するかどうかが判定され(730)、存在する場合、光線が交差したものとしてこのデフォルト形状を戻すことができる(735)。デフォルト形状が存在しない場合、形状がクリップ距離外にありデフォルト形状も定義されなかったので、方法625は交差を報告せずに戻る760。フラグなどの他の特徴を提供することもでき、このような他のデータの存在に基づいて行動を変えることができるという点で、これらのステップの他の変形も可能である。また、光線が常にクリップ距離及び/又は定義されたデフォルトオブジェクトを有している実施構成では、このような判定ステップを除外することができる(例えば、このようなフィールドは、これらを制限のないクリップ距離として、或いは例えばヌル形状として解釈するように定義することができる)。
形状をテストした場合(740)、プリミティブとの交差が検出されたかどうかが判定される(745)。換言すれば、方法625は、一般的には所与のテストされる形状がプリミティブであるか、又は加速要素であるかに関するものであるが、一般に、シェーダは加速要素との交差の指示を必要とせず、これらの要素は、交差されたプリミティブの識別のみを加速させるためのものであるので、これらの2つの形状の種類の交差を区別する何らかの方法が提供される。
また、ほとんどのレイトレーシングの実施構成では、最も近いプリミティブ交差後に光線が終了するので、これらの実施構成では、検出された最も近い交差のみを追跡すればよい。従って、750では、検出した交差が、以前に検出したいずれの交差よりも近いかどうかを判定する。そうである場合、このような交差の指示が記憶され(755)、このような指示は、交差されたプリミティブの識別子を含むことができ、及び/又はこれを光線を定義するデータ構造とともにローカルなメモリに記憶し、中間処理などを介してシェーダへ送信することができる。そして、交差が検出されなかった場合(745)、検出した交差が最も近いものでなかった場合、或いは755の後で、方法625は760へ戻る。
方法625は、加速構造及びプリミティブのために使用される形状を含む様々な形状のいずれかを交差テストするために計算リソースを再構成できる実施構成に適していると考えられる。例えば、加速構造及びプリミティブの三角形に球又はバウンディングボックスを使用することができる。しかしながら、通常は、テストで何らかのプリミティブの選択が識別されるまで、加速構造のいくつかの要素が所与の光線に関してトラバースされる(例えば、kdツリーの場合、3−D空間の容量が、テストするのに十分小さなプリミティブの容量又は数を含むようになるまで、3−D空間の3軸細分を継続することができる)。
従って、加速構造の別のトラバースを示す別の方法例800を示す。方法800には、例えばステップ620から入ることができ、光線識別子を受信するステップ805から開始することができる(図7を参照)。方法800はまた、テストするプリミティブを識別するために加速構造をトラバースするステップ810、その後、交差に関してプリミティブをテストするステップ815を含むこともできる(以下の方法900では、トラバース810の例をより詳細に示す)。次に、プリミティブが交差されたかどうかを判定し(820)、交差されていない場合には、さらなるテスト(825)が必要かどうかを判定する。プリミティブの交差があった場合、この交差を記録し(817)、或いは検出された最も近い交差であるかどうかを少なくともチェックし、その後さらなるテストが必要かどうかのチェック(825)を行う。
光線がまだ加速構造の全体をトラバースしていない場合、さらなるテストが必要となり得る。例えば、kdツリーでは、プリミティブの選択を境界する個々の最終的な細分が、チェックを必要とする他の兄弟ノードを有するようになり、同様にトラバースされるのを待っているkdツリーの他の部分が存在する可能性がある。従って、最終的な交差判定を報告する前に(すなわち、シーン全体の交差テストが完了する前に)、交差テストを行うべきかどうか、或いはシーンの個々のプリミティブに関して交差テストを行うかどうかが判定される必要がある。
テストが終了した場合、記録されたプリミティブ交差が存在するかどうかを判定することができ(828)、プリミティブ交差が存在しなかった場合、デフォルト形状の交差を報告すべきかどうかを判定することができる(829)。この措置は、デフォルト形状が指定されているかどうか、及びデフォルト形状との交差を報告すべきかどうかを示すフラグ(図5を参照)が存在するかどうかを明らかにするステップを含むことができる。この判定により、デフォルト形状を交差されたものとして戻すべきであることが示される場合には、このような指示を戻すことができ(830)、そうでない場合には、その光線に関する交差テストを終了する(850)。プリミティブが交差していた場合には、この交差を報告するかどうかの判定(835)を行うこともできる。例えば、どのような条件でフラグを報告すべきかを示すフラグを光線のデータ構造内に提供することができる。交差を報告すべき場合、最も近い交差(一般には追跡される交差のみ)が戻される(840)。その後、或いは交差を報告すべきでない場合、テストは終了する(850)。方法800のフラグベースの決定を方法625において行うこともできる。
図9は、図4の構造に似た加速構造をトラバースする方法900を示している。これらの開示は例示的なものであり、これらの例に関して開示する態様を当業者が適用又は別様に適合させることができる多くの異なる種類の加速構造が存在する。方法900は、図8の805の後に開始することができ、加速構造のルートノードから開始することができる(ここでは「ノード」という用語を使用しているが、これらの開示はあらゆる加速構造に適用できるので、プリセットしたグラフが必要であるという意味ではない)。むしろ、ルートとは開始ポイントのことを意味し、ルートがシーンを境界する場合、いずれかの光線がルートと交差することを意味することができ、従って次のステップは、ルートノードの次にどの要素/ノードがくるかを判定すること(910)である。例えば、グラフ400は、境界線によりノード340及び341に接続されたルート405を示しており、従ってステップ910は、ルート405の次にテストされるノードとしてノード340及び341を識別するようになる。次に、これらの次の要素に関して、テストされる光線に対して指定されたクリップ距離内に各々が存在するかどうかが判定され(915)、そうでないものに関しては、そのブランチ又は経路が終了する(920)。そうであるものに関しては、その要素が交差についてテストされる(930)。交差が存在する場合、その要素が、テストの準備ができたいずれかのプリミティブを境界するかどうかを判定することができ(925)、境界する場合には、例えばこのプリミティブを境界する加速構造の別の要素が存在しないことを意味することができる。テストのためのプリミティブが存在する場合、方法900は図8の815へ進む。方法900は、テストされた加速要素との交差を収集するステップ(935)を含むこともできる(例えば、この要素が他の加速要素も境界する場合、或いは他の加速要素のみを境界する場合)。換言すれば、方法900は、加速構造における交差テストの繰り延べをサポートすることができる。次に、テストする次の現在の要素が選択され(940)、このステップは、テストされる要素を現在の要素として設定し、その後、この現在の要素に関する要素の識別(910)を再び行うステップを含むことができる。図3A及び図4を参照すると、例えば、光線のクリップ距離が要素315に対するテストを許容する場合、プリミティブ318がテストされ(クリッピングテストも含むことができる)、最終的に要素344及び368が、クリッピングテストを適用する次のノードとして選択されるようになる。
図6〜図9に示す方法の概要について説明したが、より図3A及び図4に具体的に関連する例について説明する。カメラ光線388がシーン302に入る。図4では、ルート405に光線388を有することによりこれを表している。次に、光線388を、加速要素340及び343との(図6〜図9の方法のクリップ距離の実施構成との)交差についてテストすることができ、この例では、クリップ距離がこのようなテストを許容し、340との交差は存在しないが、343との交差が存在する。従って、次に光線388が要素315との交差に関してテストされ、交差することが判明する。次に、三角形を有する三角形ストリップ318が要素315により境界されると判定され、これがテストされ、光線388により交差されることが判明する。交差が報告され、プリミティブ318に関連するシェーダが呼び出される。シェーダは、シーン内の光線341をテストすることを決定し、クリップ距離389を設定する。光線341がシーンを介して再度トラバースされ、最終的にストリップ331のプリミティブとの交差がテストされ、交差することが判明する。従って、光線341に関してはクリップ距離に到達しなかった。なお、ここでは実施構成及びテストの順序に応じて、要素369、又は要素369とストリップ367をテストすることもできる。
プリミティブ318と交差しておらず、代わりに光線388が330でストリップ332と交差している場合、シェーダは、光線342をクリップ距離392でインスタンス化することができる。光線342に関するトラバースを、ルート405、要素343、要素315、要素344及び要素369及び368の順序で再度行うことができる。しかしながら、この場合には交差が見つからず、クリップ距離392に到達する。クリップ距離392に到達するので、光と交差したことを明確にチェックする必要はない。従って、光線342が影光線であったとすると、光線342の起点は光の影にないと仮定される。いくつかの態様では、この光又はそのプリミティブを交差されたデフォルトオブジェクトとして戻すことができる。
従って、光線固有のクリップ距離を設定すること、或いは光線をテストするためにシーンのサブポーションを指定する別の方法により、このようなクリッピングを指定しておくためにテストするシーン空間を狭めることができるようになる。このような特徴が有用となり得る状況例には、所与のポイントが点光源の影になっているかどうかをテストする状況がある。このようなシャドーイングをテストするために光線を指定できるので、この用途は特に有用となり得るが、機械の不正確さにより、光線が他のいずれかのプリミティブに当たらなかったとしても、光線が光を失ったと判定することができる(すなわち、光源から影を判定するつもりであったとしても、交点が影になっていない場合でも影になっていると判断される)。そこで、光に近いクリップ距離を提供することにより、光線が近づいたら、交点をシャドウイングするプリミティブが存在しないと判定することができる。また、このようなクリップ距離のより積極的な使用を望む通りに使用することもできる。
上述したように、光線の交差をシェーディングするために提供されるコードのモジュールは、交差をシェーディングする際に、遮断テストなどの様々なテストを行うために二次光線を発することができる。これらの例では、このような光線の放出が、1又はそれ以上の光線の特別なクリップ距離を設定するステップと、光線のグループに対して、交差されるデフォルトオブジェクト又はデフォルトオブジェクトのグループを設定するステップなどを含むことができる。このようなシェーダが使用するためのアプリケーションプログラミングインターフェイス(API)を提供して、このようなクリッピング機能の使用を容易にすることができる。例えば、光線の放出機能の呼び出しは、クリップ距離の定義、及びデフォルトオブジェクトの識別を受け入れることができる。さらなる例により、光線の放出機能の呼び出しは、各々のクリップ距離が異なる発光される光線束の定義、又はデフォルトオブジェクトを受け入れることができる(及びオブジェクトからのクリップ距離を推測することができる)。例えば、APIは、シーン内の光の場所などの状態を維持することができ、影光線を発するシェーダは、影光線を発したときに、影光線として指定された光線にどのデフォルトオブジェクトを割り当てるべきかをAPIに判断させることができる。APIにより、或いはAPIを介して提供されるデータを交差テスト中に使用して、交差テストをどのように行うかを制御することができる。引用により本明細書に組み入れられている米国仮出願第61/099,152号、61/101,854号、及び61/172,453号には、これらの開示とともに使用できる他の様々なAPIに関する態様が開示されており、これには、本明細書で説明する光線固有のクリッピング機能及びオプションにアクセスするためのAPIを提供するために使用することもできるAPIを提供するシステム及び方法が含まれる。
図10はシステム1000の例を示しており、このシステムは上述した態様を利用することができ、また図1のシステムのより具体的な例と考えることができる。システム1000は、プロセス、スレッド、コア、異なるプロセッサ、グラフィクスプロセッサ、特定用途向け回路、FPGAなどのうちの1又はそれ以上とすることができる複数の計算リソース(1005〜1008)を含む。システム1000は、このような異なる種類の計算リソースの異種の組み合わせを含むことができる。例えば、計算リソース1004は、レイトレーシングレンダリングサービスを必要とするアプリケーション、及びこのようなサービスを提供する他の計算リソースにアプリケーションを結合させるためのドライバをホストすることができ、計算リソース1004を、その計算負荷に起因して汎用プロセッサとして実現されるようにより良く適合させることができる。同様に、シェーダプロセス1011をホストするように示している計算リソース1005も、少なくとも何らかの一般的プログラミング能力を有する計算リソースとともに実現されるようにより良く適合させることができるが、グラフィクスハードウェアが、汎用プロセッサからそれほど制御を受けなくてもますますより高度なシェーディングアルゴリズムを実行できるようになってきている。通信リンク1001は、計算リソース1005〜1008を接続するとともに、ポイントツーポイント接続のメッシュ、1又はそれ以上の共有バス、メモリマップI/Oなどを含むことができ、或いはスレッドツースレッド又はプロセスツープロセス通信の場合には、リンク1001は、このような情報をこれらのエンティティ間で受け渡すために使用されるいずれかの技術を含むことができ、また特定の実施構成で利用できるオペレーティングシステム及びその他のプラットフォームソフトウェアにより提供されるサービスに依拠することができる。
計算リソース1004〜1008は、キャッシュ1025a〜1025nと通信する(一般に、システム1000で提供される個々の計算リソースのためのプライベートな又はセミプライベートなキャッシュが存在できるという概念で示している)。個々のこのようなキャッシュは、同様に示す光線データ1010a〜1010nを記憶することができる。個々のキャッシュ1025〜1025nは、二次キャッシュ1025、1030、及び1035から供給することができ、これらの二次キャッシュは、キャッシュ1025a〜1025nよりも少ない数であってもよく、またプライベートなもの又は共有されるものであってもよい。システム1000の例では、形状データ1015及び光線データ1010の両方を記憶できるL3キャッシュ及び/又はメインメモリ340からL2キャッシュを供給することができる。
要約すると、本明細書で説明した機能、特徴、及びその他の論理は、いずれも様々な計算リソースにより実現することができる。計算リソースは、スレッド、コア、プロセッサ、固定関数処理要素などであってもよい。また、主に本発明の対象ではないその他の機能も、1つの計算リソースに限局できる、又は(複数の物理計算リソース間で分散される複数のスレッドなどの)複数の計算リソース間で分散できるプロセス、スレッド又はタスクとして提供又は実現することができる。
同様に、交差テストに使用する計算リソースが、検出された交差をシェーディングするために使用されるシェーディング処理などの他の処理をホストすることもできる。さらなる例により、コアが複数のスレッドをサポートできる場合、1つのスレッドをシェーディング専用にして、別のスレッドを交差処理専用にすることができる。
あらゆる方法のためのコードを、固体ドライブ、ハードドライブ、CD−ROM及びその他の光学記憶手段などのコンピュータ可読媒体に、及びSRAM及びDRAM技術メモリなどの揮発性及び不揮発性メモリに記憶することができる。
コンピュータ実行可能命令は、例えば、汎用コンピュータ、特定用途向けコンピュータ、又は特定用途向け処理装置に特定の機能又は機能のグループを実行させる、或いは実行するように別様に構成する命令及びデータを含む。このコードを、FPGAのモジュールをプログラミングする際に、或いはASICのレイアウトを決定する際に使用することができる。コンピュータ実行可能命令は、例えば、バイナリ、アセンブリ言語などの中間フォーマット命令、又はソースコードであってもよい。
625 要素
705 光線識別子を受け取り
710 光線データ構造を取り出し
715 テストのために幾何学的形状を取得
720 光線固有のクリップ距離か?
725 クリップ距離内にある形状か?
730 デフォルト形状か?
735 デフォルト形状交差を戻す
740 形状をテスト
745 プリミティブとの交差を検出したか?
750 最も近い交差がまだ存在するか?
755 指示を記憶
760 戻る

Claims (20)

  1. 3−Dシーンの2−D表現をレイトレーシングする方法であって、
    シーンプリミティブと形状加速データの要素とを含む幾何学的オブジェクトとの交差をテストされる複数の光線をインスタンス化するステップと、
    個々の関連する光線を追跡すべきそれぞれの起点からの最大距離を示すそれぞれのクリッピング情報を前記複数の光線の各々に関連付けるステップと、
    前記クリッピング情報により指定される最大距離内にある幾何学的オブジェクトとのみの交差に関して個々の前記複数の光線をテストするステップと、
    個々の光線といずれかのテストされたシーンプリミティブとの間のいずれかの最も近い識別された交差のそれぞれの指示を出力するステップと、
    を含むことを特徴とする方法。
  2. 1又はそれ以上のデフォルトの幾何学的オブジェクトを前記光線に関連付けるステップと、所与の光線の前記最大距離内で、いずれかのシーンプリミティブと前記光線との間の交差が検出されない場合、前記光線を前記1又はそれ以上のデフォルトオブジェクトと交差したかのように処理するステップとをさらに含む、
    ことを特徴とする請求項1に記載の方法。
  3. 前記1又はそれ以上のデフォルトの幾何学的オブジェクトが、光線ごとにそれぞれの光線固有のデフォルトオブジェクトの代用とすることができるグローバルデフォルトオブジェクトを含む、
    ことを特徴とする請求項2に記載の方法。
  4. 前記1又はそれ以上のデフォルトオブジェクトが、光、光の一部、及び発光特性を有するプリミティブのうちの1又はそれ以上を含む、
    ことを特徴とする請求項2に記載の方法。
  5. 前記1又はそれ以上のデフォルトの幾何学的オブジェクトの各々のそれぞれの識別子をこれらのオブジェクトが関連するそれぞれの光線に関連付けることにより、前記関連付けステップを実施するステップをさらに含む、
    ことを特徴とする請求項2及び請求項3のいずれか1項に記載の方法。
  6. 個々の光線の前記それぞれのクリッピング情報が、前記光線の起点情報を使用してラインセグメント定義を導き出すために使用できる3−D空間内の位置を示す情報を含む、
    ことを特徴とする請求項1から請求項5のいずれか1項に記載の方法。
  7. シェーダルーチンが、前記光線の少なくとも1つの前記インスタンス化ステップを実施して前記光線の前記最大距離を設定する、
    ことを特徴とする請求項1から請求項6のいずれか1項に記載の方法。
  8. 1又はそれ以上のフラグの組を関連付けるステップをさらに含み、それぞれのフラグがフラグの組ごとに前記複数の光線の少なくともいくつかに関連付けられ、所与の組の個々のフラグが、
    (1)前記光線のデフォルトオブジェクト以外のオブジェクトとの交差に関してのみ前記光線に関する指示を出力すべきであるという属性と、
    (2)前記デフォルトオブジェクトが、他のオブジェクトと交差していないことが判明している前記光線によっていつ交差されたかについての指示を出力するように指示する属性と、
    (3)交差テスト中に前記光線を交差テストリソースによって処理することを指示する属性と、
    (4)シェーディングリソースが交差テストリソースによる出力のために望む指示の内容を指示する属性と、
    を含む組から選択された属性のうちの1つを示すためのものである、
    ことを特徴とする請求項1から請求項7のいずれか1項に記載の方法。
  9. 前記複数の所与の光線の起点及び方向情報として解釈可能なデータを含む光線データ構造、デフォルトオブジェクト識別子、及び前記それぞれのクリップ距離をメモリに記憶するステップをさらに含む、
    ことを特徴とする請求項1から請求項8のいずれか1項に記載の方法。
  10. 前記光線データ構造に記憶されたデータをどのように解釈すべきかを示すフラグの組を記憶するステップをさらに含む、
    ことを特徴とする請求項9に記載の方法。
  11. マルチスレッドCPUにおいて実行されるスレッド、ともにパッケージ化された物理的に別個のコア、プロセッサ間通信のために結合された複数の物理的に異なる処理リソース、及び固定関数テストセルのうちの1又はそれ以上のいずれかを含む交差テストリソースにおいて、前記光線データ構造からのデータに基づいて前記光線を交差に関してテストするステップをさらに含む、
    ことを特徴とする請求項9に記載の方法。
  12. レイトレーシングのためのシステムであって、
    複数の幾何学形状から構成される3−Dシーンの交差テスト中に識別される幾何学形状に関連する、前記光線の交差テストを制限する前記3−Dシーンのサブポーションを定義するデータを含む光線定義データを有するデータ構造を実行時にインスタンス化するシェーダルーチンのためのコンピュータ可読命令で構成された第1の処理リソースと、
    前記データ構造を受け取り、前記3−Dシーンのサブポーション内に存在する前記3−Dシーンを構成する幾何学形状との交差に関して前記光線をテストし、前記光線と前記シーンを構成する形状との間に最も近い交差が存在する場合にはこの交差の指示を与える交差テストリソースと、
    を含むことを特徴とするシステム。
  13. 前記データ構造が、前記サブポーションを、光線の起点で開始して前記3−Dシーン内の別のポイントへ延びるラインセグメントとして定義するデータをさらに含む、
    ことを特徴とする請求項12に記載のシステム。
  14. 前記命令が、実行時に、デフォルト幾何学形状を定義するデータを前記データ構造内でさらに提供し、前記3−Dシーンのサブポーション内で他の幾何学的オブジェクトが交差されなかったと判定された場合、前記交差テストリソースが、前記デフォルトオブジェクトが交差されたという指示を前記シェーダルーチンにさらに提供する、
    ことを特徴とする請求項12に記載のシステム。
  15. 前記シーンを構成する前記幾何学形状の部分が加速構造の要素により境界され、前記第1の処理リソースが、個々の光線を前記3−Dシーンのサブポーション内の前記加速構造の要素のみとテストするための命令でさらに構成される、
    ことを特徴とする請求項12に記載のシステム。
  16. 前記サブポーションが、前記3−Dシーン内に定められた第1のポイントと第2のポイントの間に定められる、
    ことを特徴とする請求項15に記載のシステム。
  17. レイトレーシングの方法を実施するためのコンピュータ実行可能命令を記憶するコンピュータ可読媒体であって、前記方法が、
    別の光線と3−Dシーンを構成するプリミティブとの交点に基づいて決定された起点を有する光線のインスタンス化を引き起こすステップと、
    前記光線に、クリッピング距離及びデフォルト交差オブジェクトを関連付けるステップと、
    前記光線が、該光線の起点と、前記クリッピング距離内の前記光線の方向に沿ったポイントとの間で前記シーンを構成するいずれのプリミティブとも交差しないと判定するステップと、
    前記判定ステップに応答して、前記光線が前記デフォルト交差オブジェクトに交差したという指示を戻すステップと、
    を含むことを特徴とするコンピュータ可読媒体。
  18. 前記判定ステップが、前記複数のプリミティブの選択を各々が境界する階層的加速構造の要素を使用して、所与の要素により境界されたいずれかのプリミティブが前記クリッピング距離内に存在するかどうかを判定するステップと、存在しない場合、交差テストリソースが、前記要素により境界されたプリミティブ又はその他の要素のいずれかのさらなる交差テストを行わないようにするステップとをさらに含む、
    ことを特徴とする請求項17に記載のコンピュータ可読媒体。
  19. 前記1又はそれ以上の加速形状が、球、軸合わせされたバウンディングボックス、及びkdツリーのうちの1又はそれ以上を含む、
    ことを特徴とする請求項17に記載のコンピュータ可読媒体。
  20. 前記インスタンス化するステップがシェーダルーチンによって行われ、前記デフォルトオブジェクトが前記シーン内の光源であり、前記光線が、前記交点が前記光源から光を受光しないようになっているかどうかを判定するためのものである、
    ことを特徴とする請求項17に記載のコンピュータ可読媒体。
JP2011526942A 2008-09-09 2009-09-09 光線固有のクリッピングを使用したレイトレーシング Active JP5271416B2 (ja)

Applications Claiming Priority (11)

Application Number Priority Date Filing Date Title
US9557008P 2008-09-09 2008-09-09
US61/095,570 2008-09-09
US9915208P 2008-09-22 2008-09-22
US61/099,152 2008-09-22
US10185408P 2008-10-01 2008-10-01
US61/101,854 2008-10-01
US17245309P 2009-04-24 2009-04-24
US61/172,453 2009-04-24
US12/555,678 US8421801B2 (en) 2008-09-09 2009-09-08 Ray tracing using ray-specific clipping
US12/555,678 2009-09-08
PCT/US2009/056369 WO2010030674A1 (en) 2008-09-09 2009-09-09 Ray tracing using ray-specific clipping

Publications (2)

Publication Number Publication Date
JP2012502394A true JP2012502394A (ja) 2012-01-26
JP5271416B2 JP5271416B2 (ja) 2013-08-21

Family

ID=41203697

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011526942A Active JP5271416B2 (ja) 2008-09-09 2009-09-09 光線固有のクリッピングを使用したレイトレーシング

Country Status (4)

Country Link
US (1) US8421801B2 (ja)
EP (1) EP2335224B1 (ja)
JP (1) JP5271416B2 (ja)
WO (1) WO2010030674A1 (ja)

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8564617B2 (en) * 2010-01-12 2013-10-22 International Business Machines Corporation Accelerated volume rendering
US8619078B2 (en) * 2010-05-21 2013-12-31 International Business Machines Corporation Parallelized ray tracing
KR101705581B1 (ko) * 2010-09-30 2017-02-22 삼성전자주식회사 데이터 처리 장치 및 방법
US8957896B2 (en) 2012-06-11 2015-02-17 Disney Enterprises, Inc. Streaming hierarchy traversal renderer
US9123162B2 (en) 2012-06-11 2015-09-01 Disney Enterprises, Inc. Integration cone tracing
US9053582B2 (en) 2012-06-11 2015-06-09 Disney Enterprises, Inc. Streaming light propagation
US9123154B2 (en) 2012-10-09 2015-09-01 Disney Enterprises, Inc. Distributed element rendering
US9508315B2 (en) * 2013-03-08 2016-11-29 Disney Enterprises, Inc. Ordering rays in rendered graphics for coherent shading
GB2549020B (en) * 2013-03-14 2017-11-08 Imagination Tech Ltd 3-D Graphics rendering with implicit geometry
US10970912B2 (en) 2013-03-14 2021-04-06 Imagination Technologies Limited 3-D graphics rendering with implicit geometry
KR102242566B1 (ko) 2014-06-30 2021-04-20 삼성전자주식회사 레이 트레이싱 처리 장치 및 방법
KR102244619B1 (ko) 2014-09-30 2021-04-26 삼성전자 주식회사 가속 구조를 생성 및 탐색하는 방법
US10290143B2 (en) * 2017-06-14 2019-05-14 Imagination Technologies Limited Compressed ray direction data in a ray tracing system
CN107598984B (zh) * 2017-09-08 2023-06-02 深圳市四六区工业产品策划有限公司 红外线测量剪刀和红外线测量电路模块及其裁剪方法
US10867429B2 (en) * 2018-08-10 2020-12-15 Nvidia Corporation Query-specific behavioral modification of tree traversal
US11508112B2 (en) * 2020-06-18 2022-11-22 Nvidia Corporation Early release of resources in ray tracing hardware
GB2599184B (en) 2021-03-23 2022-11-23 Imagination Tech Ltd Intersection testing in a ray tracing system
GB2599186B (en) 2021-03-23 2022-10-12 Imagination Tech Ltd Intersection testing in a ray tracing system
GB2599183B (en) * 2021-03-23 2022-10-12 Imagination Tech Ltd Intersection testing in a ray tracing system
GB2599181B (en) 2021-03-23 2022-11-16 Imagination Tech Ltd Intersection testing in a ray tracing system
GB2599185B (en) * 2021-03-23 2022-08-24 Imagination Tech Ltd Intersection testing in a ray tracing system
GB2599188B (en) 2021-03-23 2022-10-12 Imagination Tech Ltd Intersection testing in a ray tracing system

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11353496A (ja) * 1998-06-10 1999-12-24 Ken Nishimura 光線追跡のための交点探索装置
WO2007002494A2 (en) * 2005-06-23 2007-01-04 Mental Images Gmbh Real-time precision ray tracing

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB9424273D0 (en) 1994-12-01 1995-01-18 Wrigley Adrian M T Improvements in and relating to image constrcution
US6226005B1 (en) * 1997-01-31 2001-05-01 LAFERRIèRE ALAIN M Method and system for determining and/or using illumination maps in rendering images
DE10239672B4 (de) 2002-08-26 2005-08-11 Universität des Saarlandes Verfahren und Vorrichtung zur Erzeugung einer zweidimensionalen Abbildung einer dreidimensionalen Struktur
US7012604B1 (en) 2002-09-12 2006-03-14 Advanced Micro Devices, Inc. System architecture for high speed ray tracing
US8429174B2 (en) 2003-01-25 2013-04-23 Purdue Research Foundation Methods, systems, and data structures for performing searches on three dimensional objects
US20060098009A1 (en) 2004-10-28 2006-05-11 Miguel Zuniga Method and apparatus for ray and range queries using wide object isolation techniques
US7348975B2 (en) * 2004-12-28 2008-03-25 Intel Corporation Applications of interval arithmetic for reduction of number of computations in ray tracing problems
US20070132754A1 (en) 2005-12-12 2007-06-14 Intel Corporation Method and apparatus for binary image classification and segmentation
US20080024489A1 (en) 2006-07-28 2008-01-31 Robert Allen Shearer Cache Utilization Optimized Ray Traversal Algorithm with Minimized Memory Bandwidth Requirements
US7884819B2 (en) 2006-09-27 2011-02-08 International Business Machines Corporation Pixel color accumulation in a ray tracing image processing system
US8139060B2 (en) 2006-11-28 2012-03-20 International Business Machines Corporation Ray tracing image processing system
KR100889602B1 (ko) 2006-12-05 2009-03-20 한국전자통신연구원 광선 추적을 위한 광선-삼각형 충돌 처리 방법 및 장치

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11353496A (ja) * 1998-06-10 1999-12-24 Ken Nishimura 光線追跡のための交点探索装置
WO2007002494A2 (en) * 2005-06-23 2007-01-04 Mental Images Gmbh Real-time precision ray tracing

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
JPN6012037200; Per H. Christensen ET AL: '"Ray tracing for the movie Cars"' Interactive Ray Tracing 2006, IEEE Symposium on , 20060918, p.1-6 *
JPN7012002804; Eric Haines: "Ray Tracing News "Light Makes Right"" , 19891027, [online] *

Also Published As

Publication number Publication date
EP2335224A1 (en) 2011-06-22
EP2335224B1 (en) 2017-07-12
US20100231589A1 (en) 2010-09-16
JP5271416B2 (ja) 2013-08-21
WO2010030674A1 (en) 2010-03-18
US8421801B2 (en) 2013-04-16

Similar Documents

Publication Publication Date Title
JP5271416B2 (ja) 光線固有のクリッピングを使用したレイトレーシング
CN113781624B (zh) 具有可选的世界空间变换的光线跟踪硬件加速
CN113781626B (zh) 遍历在射线追踪中使用的数据的技术
US7973790B2 (en) Method for hybrid rasterization and raytracing with consistent programmable shading
JP5650273B2 (ja) レイトレーシングシェーダapiのためのシステム及び方法
US7969434B2 (en) Method, apparatus, and computer readable medium for accelerating intersection testing in ray-tracing rendering
CN113781625B (zh) 适用于光线追踪的基于硬件的技术
CN113808245B (zh) 用于遍历光线追踪加速结构的增强技术
KR20100128337A (ko) 광선 추적 렌더링을 위한 병렬화 교차 테스트 및 세이딩의 아키텍처
JP2011503757A (ja) レイトレーシングによるレンダリングシステムおよび方法
US20210407175A1 (en) Early culling for ray tracing
CN113822788B (zh) 光线追踪硬件中对资源的早期释放
US11321903B2 (en) Bounding volume hierarchy compression
US20210304489A1 (en) Graphics processing
US11816792B2 (en) Overlay trees for ray tracing
US11521308B2 (en) Ambient occlusion using bounding volume hierarchy bounding box tests
CN117689793A (zh) 用于光线追踪的部分加速结构的生成和遍历

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20120625

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120719

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20121019

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20121026

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20121119

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20121213

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130313

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130510

R150 Certificate of patent or registration of utility model

Ref document number: 5271416

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

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