(57)【要約】【課題】階層融合の技術を提供する。【解決手段】階層は、ノードのマルチレベルリンク構造であり、階層は、処理されることになる１又は２以上の項目のセットに関連するデータを表す。複数の入力階層がある場合に、それは、入力階層を融合して融合階層を形成するための項目の処理の効率を改善することができる。階層は、融合されることになる入力階層内の２又は３以上の下位階層を識別し、かつ識別された下位階層のノードを参照する融合階層の１又は２以上のノードを決定することによって融合される。融合階層の決定されたノードは格納され、融合階層の決定されたノードと識別された下位階層の参照されたノードとの間のリファレンスの表示も格納される。このようにして、融合階層は、項目の処理に使用するために形成される。【選択図】図５
2017188098.tif 000002
【特許請求の範囲】
【請求項１】
複数の入力階層を融合して融合階層を形成する方法であって、該入力階層の各々が、ノードのマルチレベルリンク構造であり、該入力階層の各々が、処理される１又は２以上の項目のそれぞれのセットに関連するデータを表し、
融合されることになる前記入力階層内の２又は３以上の下位階層を識別する段階と、
前記識別された下位階層のノードを参照する前記融合階層の１又は２以上のノードを決定する段階であって、該識別された下位階層のうちの少なくとも１つの内部の該参照されたノードのうちの少なくとも１つが、該識別された下位階層のうちの該少なくとも１つの内部の１又は２以上のより低いレベルのノードを参照する前記決定する段階と、
前記融合階層の前記１又は２以上の決定されたノードを格納し、かつ該融合階層の該決定されたノードと前記識別された下位階層の前記参照されたノードとの間のリファレンスの表示を格納し、それによって前記項目の処理に使用するための該融合階層を形成する段階と、
を含むことを特徴とする方法。
【請求項２】
前記融合階層の前記決定されたノードに基づいて、該融合階層の該決定されたノードの上方に該融合階層のノードの１又は２以上のレベルを構築する段階を更に含むことを特徴とする請求項１に記載の方法。
【請求項３】
前記決定されたノードの上方の前記融合階層の前記１又は２以上のレベルは、ボトムアップ方式で構築されることを特徴とする請求項２に記載の方法。
【請求項４】
前記融合階層の最上位レベルが、単一ノードを有することを特徴とする請求項１から請求項３のいずれか１項に記載の方法。
【請求項５】
融合されることになる前記入力階層内の前記２又は３以上の下位階層は、該２又は３以上の下位階層の空間重複の量に基づいて識別されることを特徴とする請求項１から請求項４のいずれか１項に記載の方法。
【請求項６】
融合されることになる前記入力階層内の２又は３以上の下位階層を識別する前記段階は、該入力階層内の融合レベルでノードを識別する段階を含み、
前記下位階層は、前記融合レベルで前記識別されたノードから下降する、
ことを特徴とする請求項１から請求項５のいずれか１項に記載の方法。
【請求項７】
前記入力階層内の前記融合レベルを決定する段階を更に含むことを特徴とする請求項６に記載の方法。
【請求項８】
前記融合レベルは、異なるレベルでの前記入力階層からのノードの空間重複の量に基づいて決定されることを特徴とする請求項７に記載の方法。
【請求項９】
前記融合レベルは、前記入力階層からのノードの空間重複の前記量が閾値よりも上である最も低いレベルであるように決定されることを特徴とする請求項８に記載の方法。
【請求項１０】
前記融合レベルは、
前記入力階層の最上位レベルからの予め決められた数のレベル、
前記入力階層の前記最上位レベルからの該入力階層内の総数の予め決められた割合のレベル、又は
ユーザ指定のレベル、
であるように決定される、
ことを特徴とする請求項７に記載の方法。
【請求項１１】
最上位レベルと前記融合レベルの間の前記入力階層を構文解析して該入力階層のそれらのレベルに存在するリーフノードを識別する段階と、
前記識別されたリーフノードを前記融合階層に含める段階と、
を更に含むことを特徴とする請求項６から請求項１０のいずれか１項に記載の方法。
【請求項１２】
前記識別されたリーフノードを前記融合階層に含める前記段階は、入力階層の該リーフノードに平行移動を適用する段階を含むことを特徴とする請求項１１に記載の方法。
【請求項１３】
前記融合階層は、シーンをレンダリングするのに使用するためのものであり、
前記入力階層の各々が、前記シーン内でレンダリングされる１又は２以上の物体のそれぞれのセットの空間位置を表す、
ことを特徴とする請求項１から請求項１２のいずれか１項に記載の方法。
【請求項１４】
前記シーンは、フレームのシーケンスのうちの現在のフレームであり、
前記入力階層の少なくとも１つが、１又は２以上の静的物体のセットの空間位置を表して以前のフレームから再使用される静的階層であり、
前記入力階層の少なくとも別の１つが、１又は２以上の動的物体のセットの空間位置を表して前記現在のフレームをレンダリングするために構築される動的階層である、
ことを特徴とする請求項１３に記載の方法。
【請求項１５】
前記入力階層の前記ノードのうちの１又は２以上に平行移動を適用する段階を更に含むことを特徴とする請求項１３又は請求項１４に記載の方法。
【請求項１６】
光線トレーシングが、前記シーンをレンダリングするために前記融合階層を使用して実施され、
前記光線トレーシングは、前記融合階層のノードに対して光線の交差試験を実施する段階を含む、
ことを特徴とする請求項１３から請求項１５のいずれか１項に記載の方法。
【請求項１７】
複数の入力階層を融合して融合階層を形成するように構成された階層融合モジュールであって、該入力階層の各々が、ノードのマルチレベルリンク構造であり、該入力階層の各々が、処理される１又は２以上の項目のそれぞれのセットに関連するデータを表し、
階層融合モジュールが、
融合されることになる前記入力階層内の２又は３以上の下位階層を識別し、かつ
前記識別された下位階層のノードを参照する前記融合階層の１又は２以上のノードを決定し、該識別された下位階層のうちの少なくとも１つの内部の該参照されたノードのうちの少なくとも１つが、該識別された下位階層のうちの該少なくとも１つの内部の１又は２以上のより低いレベルのノードを参照する、
ように構成された融合決定ユニット、
を含み、
階層融合モジュールが、前記融合階層の前記１又は２以上の決定されたノードと、該融合階層の前記決定されたノードと前記識別された下位階層の前記参照されたノードとの間のリファレンスの表示とのストレージを引き起こすように構成される、
ことを特徴とする階層融合モジュール。
【請求項１８】
前記融合決定ユニットは、前記２又は３以上の下位階層の空間重複の量に基づいて、融合されることになる前記入力階層内の該２又は３以上の下位階層を識別するように構成されることを特徴とする請求項１７に記載の階層融合モジュール。
【請求項１９】
前記融合階層は、シーンをレンダリングするのに使用されるものであり、
前記入力階層の各々が、前記シーン内でレンダリングされる１又は２以上の物体のそれぞれのセットの空間位置を表し、
シーンをレンダリングする前記段階は、光線トレーシングを実施する段階を含む、
ことを特徴とする請求項１７又は請求項１８に記載の階層融合モジュール。
【請求項２０】
符号化されたコンピュータ可読コードを有するコンピュータ可読ストレージ媒体であって、
前記コンピュータ可読コードは、該コードがコンピュータ上で実行された時に請求項１から請求項１６のいずれか１項に記載の方法が実施されるようになっている、
ことを特徴とするコンピュータ可読ストレージ媒体。
【請求項２１】
集積回路製造システム内で処理された時に請求項１７から請求項１９のいずれか１項に記載の階層融合モジュールを製造するように該システムを構成する集積回路定義データセットが格納されたコンピュータ可読ストレージ媒体。
【発明の詳細な説明】
【背景技術】
【０００１】
階層の形態のデータ構造をデータ項目の処理に有用とすることができる多くのシナリオが存在する。本発明の開示では、「階層」という語は、処理されることになる１又は２以上の項目のそれぞれのセットに関連するデータを表すノードのマルチレベルリンク構造を指す。階層は、データ項目のグループが、条件が満足されたことに依存して類似の方式で処理されることになるデータを表すのに有用な方法とすることができる。この場合に、階層は、データ項目のグループを参照する１又は２以上のより高いレベルのノードを含むことができ、より高いレベルのノードは、項目のグループを処理するか否か及び／又はその方法を決定するために処理することができる。実行されている処理のタイプに依存して、これは、これらの項目を処理するか否か及び／又はその方法をグループの項目の各々に対して別々に決定するよりも効率的とすることができる。
【０００２】
階層が特に有用になる一例は、例えば、光線トレーシングを実行することによってグラフィックス処理ユニットで３次元（３Ｄ）シーンをレンダリングする場合である。光線トレーシング方法は、典型的には、シーンに存在する形状との光線に対する交差試験を実施する段階を伴う。シーンの形状は、シーン内の構造の面を説明し、形状は、プリミティブによって表すことができる。プリミティブは、多角形、典型的には三角形であることが多いが、点、線、又はパッチのような他の形態を有することができる。シーン内の物体は、１又は２以上のそのようなプリミティブから構成することができ、一部の場合では、物体は、数千又は数百万のそのようなプリミティブから構成される場合がある。シーンは、典型的には多くの物体を含有する。光線トレーシング方法は、典型的には、シーン内の光線をトレースすることによってシーン内のプリミティブと光がどのように相互作用するかをモデル化する段階を伴う。光線は、起点と方向とを有する仮想光のベクトルと考えることができる。光線トレーシングレンダリング器の交差試験ユニットは、もしあるとすればプリミティブのどれに光線が交差することになるかを各光線に対して決定することができる。１又は２以上のシェーダーを実行して、例えば、プリミティブの材料特性及びプリミティブの面法線のようなファクタに基づいて、交差したプリミティブと光線がどのように相互作用するかを決定することができる。シェーダーの実行結果は、レンダリングされているシーンの画像のサンプル点の値を表すように累積バッファに格納することができる。シェーダーの実行は、シーン内の反射の外観を決定するのに使用することができる交差プリミティブから放出されている１又は２以上の２次光線をもたらすことができる。各２次光線に対して、交差試験及びシェーディングを実行することができ、このシェーディングの結果は、累積バッファに既に格納された結果と結合して反射を含むように画像のピクセルを精緻化することができる。本方法は、多くの光線の反射に対して何度も繰り返すことができる。考えられる光線の反射の最大数が存在する場合がある。
【０００３】
上述のように、光線トレーシングシステムにおける交差試験は、どのプリミティブが光線の経路に沿って位置するかを決定する段階を伴う。プリミティブの各々に対して光線を試験するのではなく、シーン内のプリミティブを表すために階層（又は「加速構造」）を生成することができ、次に、階層に対して光線を試験することができる。加速構造は、３次元格子、ｋｄツリーのような分割平面のツリー、軸位置合わせ境界ボックス階層のような境界容積の階層、又はオクト−ツリーのような幾何学的に定義された構造の形態を取る場合がある。例えば、階層は、階層の異なるレベルでのノードを有することができ、ノードは、レンダリングされているシーンの３Ｄ広がり内の特定の解像度での空間の領域を表すことができる。階層の最上位でのノードは、シーンを表す空間の大きい領域を表し、階層のより低いレベルでのノードは、シーンを表す空間内のより小さい領域を表す。階層内の第１のノードは、第１のノードと共に収容されている階層内の他のより低いレベルのノードへのリファレンス（すなわち、リンク）を有する。階層がツリー状構造を形成し、それによってリーフノードがより低いノードへのリファレンスを持たないように、階層の異なるレベルでのノード間にリファレンスがある。階層に存在するノードは、プリミティブが存在する領域を表す。例えば、境界容積階層（ＢＶＨ）は、異なるサイズのノードを含み、一部のノードは、他のノードを境界付けし（シーン内のノード間の空間的関係を表す）、それらはまた、親−子接続、すなわち、リンクを有する（階層内のトポロジー関係を表す）。交差試験は、階層の最上位ノードを最初に試験することによって実行することができる。光線が特定のノードを逃した場合に、この光線は、階層内の特定のノードによって参照される（直接又は間接的に）より低いレベルのノードの全てを逃すことになるとこれらのより低いレベルのノードに交差試験を実施する必要なく推測される。光線が特定のノードに衝突した場合に、交差試験が、特定のノードによって参照されたノードに対して実行される。交差試験は、どのプリミティブが光線によって交差されるかを決定するために階層の適切なノードに対して繰り返される。交差試験は、次に、例えば、（プリミティブとの光線の）交差点のどれが光線の起点に最も近いかを決定することにより、交差プリミティブのどれが光線によって最初に交差されることになるかを決定することができる。個々のプリミティブに対して直ちにではなく、階層に対して交差試験を実施することにより、実行する必要がある交差試験の数を有意に低減することができることを認めることができる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】ＵＳ８７１７３５７
【発明の概要】
【発明が解決しようとする課題】
【０００５】
階層は、光線トレーシングシステムにおける交差試験の性能を改善するが、階層の生成は、有意な処理を必要とし、従って、例えば、処理電力及び時間に関してコストを生じる。光線トレーシングレンダリング器がリアルタイムでフレームのシーケンスをレンダリングする場合に、各フレームに対する新しい階層の生成は、画像をレンダリングすることができる速度及び品質に関してレンダリング器の性能に有意な悪影響を有する可能性がある。
【課題を解決するための手段】
【０００６】
この「発明の概要」は、「発明を実施するための形態」で以下に更に説明する選択した概念を単純化された形式で紹介するために提供するものである。この「発明の概要」は、特許請求する主題の重要な特徴又は本質的な特徴を識別するように意図しておらず、特許請求する主題の範囲を制限するのに使用されるようにも意図していない。
【０００７】
本明細書に説明する一部の実施例において、複数の入力階層は、融合階層を形成するために融合される。階層の融合は、多くの異なるシナリオにおいて有用である場合がある。本明細書の実施例に詳しく説明するように、光線トレーシングレンダリング器に使用するために階層を融合することができる。これらの実施例では、階層の融合は、光線の交差試験をより少ない階層に対して実行することができ、これが交差試験の一部として実行される処理の量を低減することができることを意味する。更に、複数の階層を融合する処理は、複数の階層のリーフノードの全ての統一された階層をゼロから再生成することよりも単純である場合がある。
【０００８】
例えば、複数の入力階層を融合して融合階層を形成する方法を提供することができ、入力階層の各々は、ノードのマルチレベルリンク構造であり、入力階層の各々は、処理されることになる１又は２以上の項目のそれぞれのセットに関連するデータを表し、本方法は、融合されることになる入力階層内の２又は３以上の下位階層を識別する段階と、識別された下位階層のノードを参照する融合階層の１又は２以上のノードを決定する段階であって、識別された下位階層のうちの少なくとも１つの内部の参照されたノードのうちの少なくとも１つが、識別された下位階層のうちの少なくとも１つの内部の１又は２以上のより低いレベルのノードを参照する上記決定する段階と、融合階層の１又は２以上の決定されたノードを格納し、かつ融合階層の決定されたノードと識別された下位階層の参照されたノードとの間のリファレンスの表示を格納し、それによって項目の処理に使用するための融合階層を形成する段階とを含む。
【０００９】
本方法は、光線トレーシングレンダリングシステムのようなレンダリングシステムに使用するのに特に適する場合がある。しかし、階層融合方法は、一部の例を与えると、画像又はビデオ処理システム（例えば、カメラパイプラインにおける使用に対して）又は音声処理システム内のレンダリングシステムの他のタイプ（例えば、光線トレーシング以外のラスター化に基づくレンダリングシステム）のような他の目的にも同様に使用することができる。本明細書に説明する階層融合方法は、より広範囲に使用することができ、例えば、階層融合方法は、いくつか名前を挙げると、物理シミュレーション、衝突検出、見通し線計算、放射輝度伝達、音響伝播、液体及び粒子システム、及び光子マッピングのような以前の作動から空間情報の抽出を要求する方法に使用することができる。
【００１０】
更に一般的には、階層は、表された空間にデータ点が均等に分布しないあらゆる種類のルックアップを実行するのに最も一般的に使用されるインデックス構造である。これは、多次元空間を含む。例えば、データが、点を説明する多次元ベクトルにパラメータ化され、この点に対するデータがデータベースに格納される場合に、本明細書に説明する階層融合方法は、このデータを効率よく検索するのに有用であると考えられる。これは、パターン認識、並びに多次元クラスター化が実行されるか又は最も近い隣接クエリが使用される他の視覚及び人工知能（ＡＩ）アルゴリズムに適用可能である。
【００１１】
更に、複数の入力階層を融合して融合階層を形成するように構成された階層融合モジュールを提供することができ、入力階層の各々は、ノートのマルチレベルリンク構造であり、入力階層の各々は、処理されることになる１又は２以上の項目のそれぞれのセットに関連するデータを表し、階層融合モジュールは、融合されることになる入力階層内の２又は３以上の下位階層を識別し、かつ識別された下位階層のノードを参照する融合階層の１又は２以上のノードを決定し、識別された下位階層のうちの少なくとも１つの内部の参照されたノードのうちの少なくとも１つが、識別された下位階層のうちの少なくとも１つの内部の１又は２以上のより低いレベルのノードを参照するように構成された融合決定ユニットを含み、階層融合モジュールは、融合階層の１又は２以上の決定されたノードと、融合階層の決定されたノードと識別された下位階層の参照されたノードとの間のリファレンスの表示とのストレージを引き起こすように構成される。
【００１２】
本明細書に説明する一部の実施例において、それぞれの平行移動又は追加の変形を階層に対して決定することができる。これは、階層によって表された物体の空間位置を値が浮動小数点フォーマットである時に値の精度を増すより小さい値によって表すことを可能にする。平行移動は、例えば、世界空間に対して又は他の階層に対して階層を正確に位置決めするように決定することができる。階層が正しく処理される（例えば、階層を融合する）ために、決定された平行移動の表示は格納することができる。平行移動は、平行移動による階層の分割を回避又は低減するために、階層の決定されたレベルでのノードに関連するボクセルの粒度で決定することができる。
【００１３】
本発明の一実施形態は、シーンの複数の構成要素を部分的に定める幾何学的プリミティブ形状がＡＰＩを通して提供される光線トレーシングシステムであり、プリミティブが表される座標系は、シーンの各構成要素に固有である。個々の変形又は平行移動は、各シーン構成要素に対して順番に提供することができ、シーンに対する視点又は他に指定された起点を更に提供することができる。光線トレーシングシステムは、次に、光線トレーシングをその内部で実行する指定された起点の回りのシーン構成要素のうちの１又は２以上を含む融合階層を構成することができる。
【００１４】
上述の特徴は、当業者には明らかであろうが適切な場合に組み合わせることができ、かつ本明細書に説明する実施例の態様のいずれとも組み合わせることができる。
【００１５】
ここで実施例を添付図面を参照して詳細に以下に説明する。
【００１６】
添付図面は、様々な実施例を示している。当業者は、図面内に図示の要素境界（例えば、ボックス、ボックスのグループ、又は他の形状）が境界の一例を表すことを認めるであろう。一部の実施例では、１つの要素が複数の要素として描かれる場合があり、又は複数の要素が１つの要素として描かれる場合がある。共通参照番号は、適切な場合に図を通して類似の特徴を示すのに使用される。
【図面の簡単な説明】
【００１７】
【図１】プリミティブが存在する３Ｄ空間の一部の例を示す図である。
【図２】図１に示す領域を表す階層のノードを示す図である。
【図３】光線トレーシングレンダリングシステムの構成要素を示すブロック図である。
【図４】光線トレーシングレンダリングシステム内で実行される作動を示す流れ図である。
【図５】光線トレーシングレンダリングシステム内の階層処理モジュールの構成要素を示す図である。
【図６】複数の入力階層を融合して融合階層を形成する方法を示す流れ図である。
【図７】２つの入力階層内のノードによって表される領域の例を示す図である。
【図８】図７に示す領域を表す２つの入力階層を示す図である。
【図９ａ】２つの入力階層を融合するための融合階層のノードの追加を示す図である。
【図９ｂ】融合階層内でバイパスされる入力階層のノードを示していない図９ａの概略図である。
【図１０】図９ｂに示す融合階層のノードによって表されるボクセルを示す図である。
【図１１】ボクセルの格子内の平行移動を示す図である。
【図１２ａ】図１１に示す平行移動の前の階層のノードを示す図である。
【図１２ｂ】図１１に示す平行移動の後の階層のノードを示す図である。
【図１３】ボクセルの格子内の最上位レベルボクセルの粒度での平行移動を示す図である。
【図１４】図１３に示す平行移動の後の階層のノードを示す図である。
【図１５】階層に対する平行移動を決定する方法を示す流れ図である。
【図１６】階層融合モジュールが実施されるコンピュータシステムを示す図である。
【図１７】階層融合モジュールを具現化する集積回路を発生させるための集積回路製造システムを示す図である。
【発明を実施するための形態】
【００１８】
ここで実施形態を単に例示的に以下に説明する。
【００１９】
上述のように、階層を融合する方法を本明細書に説明する。本明細書に説明する実施例の多くは、シーンをレンダリングするために光線トレーシングを実行するための階層を使用するという関連であるが、階層を融合するための対応する方法は、他の適切な状況でも使用することができる。
【００２０】
図１は、レンダリングされることになる領域１０２によって表されるシーンの一部の２Ｄ表現を示している。図１に明確に示していないシーン内の他の類似の領域も存在することができる。領域は、シーンのボクセルに位置合わせすることができ、又は位置合わせしなくてもよい。ボクセルは、シーン内のアドレス可能な位置を有する均一の大きさにされた空間容積である。ボクセルは高密度に詰めることができ、立方体であることが多いが、一部の実施例では他の形状を有することができる。一部の実施例において、領域は、例えば、空間内の位置及びサイズにより、又はボックスのサイズを推測することができる２又は３以上の位置によって説明される立方形の形状を有するボックスである。ボックスのいくつかの同等の表現が存在する。この２Ｄの実施例において、ボックス１０２は、ボクセルに位置合わせされ、シーン内の低解像度ボクセルに位置合わせされた４つの小さいボックス１０４0、１０４1、１０４2、及び１０４3に分割される。３Ｄの実施例では、例えば、ボクセルは、ボクセルを各軸に沿って半分に分割することによって８つのより小さいボクセルに分割することができ、従って、１つのレベルのボクセルに対応するように位置合わせされたボックスは、より低いレベルのボクセルに位置合わせされた８つのより小さいボックスに分割することができる。図１に示すシーンの一部の内部には５つのプリミティブが存在し、図１では１０６0から１０６4と示されている。これらのプリミティブの各々は、１０８0から１０８4と示されたそれぞれのボックスによって境界付けられる。この実施例では、ボックス１０８は、それぞれのプリミティブ１０６の軸位置合わせ境界ボックス（ＡＡＢＢ）であるが、これらは必ずしもあらゆる特定のボクセル位置に対応するわけではない。ボックス１０２及び１０４0、１０４1、１０４2、及び１０４3も軸位置合わせ境界ボックスであるが、これらのボックスも、この実施例ではボクセル位置に対応する。
【００２１】
図２は、図１に示すボックスを表すために生成することができる階層の実施例を示している。図２は、異なるレベルでのノードのリンクデータ構造としての階層を示している。階層のより高いレベルは、レンダリングされているシーン内の空間の大きいボックスを表すノードを含む。例えば、図２に示す最高レベルでのノード２０２は図１に示すボックス１０２を表している。ボックス１０２は４つのノード（１０４0−１０４3）を境界付けるが、これらのノードの２つ（１０４1及び１０４2）はいずれのプリミティブも含まない。ノード２０２の下のレベルでは、階層は、図１に示すボックス１０４0及び１０４3をそれぞれ表す２つのノード、すなわち、ノード２０４0及び２０４3を含む。ボックス１０４0は、２つのノード（１０８0及び１０８1）を境界付けて、ノード２０４0の下のレベルで、階層は、図１に示すボックス１０８0及び１０８1をそれぞれ表す２つのノード、すなわち、ノード２０８0及び２０８1を含む。同様にボックス１０４3は３つのノード（１０８2、１０８3、及び１０８4）を境界付けて、ノード２０４3の下のレベルで、階層は、図１に示すボックス１０８2、１０８3、及び１０８4をそれぞれ表す３つのノード、ノード２０８2、２０８3、及び２０８4を含む。階層のノードの各々は、レンダリングされているシーン内の対応するボックスの空間位置を表すデータを含む。階層のリーフノードではないノードも、階層のより低いレベルでのノードへのリファレンスを含む。これらのリファレンスは、各ノードに描かれた正方形セクションによって図２に表され、矢印は、これらのリファレンスが表すノード間のリンクを示している。図２に（及び以下に説明する図８、９ａ、及び９ｂの階層の類似の図に）より高いレベルでのノードから下のレベルのより低いレベルのノードの各々への矢印、例えば、ノード２０２からノード２０４0及び２０４3の両方に示す矢印を備えたリファレンスが示されている。階層は理解し易いようにこのように表されるが、一部の実施例では、これは、これらがメモリに格納される方式で階層のノード間のリンクを厳密に反映しない場合がある。例えば、より高いレベルでのノード（例えば、ノード２０２）から下のレベルでのノードの１つ（例えば、ノード２０４0）へのリンクが格納され、次に、このレベルの参照されたノード間の水平リンクを格納することができるように、例えば、ノード２０４0と２０４3の間のリンクを格納することができるように階層の構造をメモリに格納することができる。このようにして、ノード２０２とノード２０４3の間の直接リンクはないが、ノード２０２からノード２０４3へのリファレンスをノード２０２と２０４0の間のリンクとノード２０４0と２０４3の間のリンクとの組合せから推測することができる。これらのリンクは、階層のノードに対して実行される交差試験の順序を反映することができるので、この方式でリンクを格納することで交差試験の効率を改善することができる。このリンク構造に従って一部の実施例では、サブツリーの浅い部分を最初に、すなわち、階層の深い部分の前に試験することができる。
【００２２】
階層は、オクトツリーのレベルのボクセルを有する疎らなオクトツリーを使用して構築することができ、リーフノードのボクセルを縮小して形状が密に境界付けられたボックス表現を提供することができる。単純にするために、図２に示す例示的階層は、３つのレベルだけを有するが、他の実施例では、階層は、異なる数のレベル、例えば、３つよりも多いレベルを有することができる。例えば、階層は、３２レベルを有することができる。例示的に、階層のレベルを下に下げることは、各ボクセルが各軸に沿って２つに分割されることを意味し、それによって各ボクセルは、階層の次に下のレベルの８つのボクセルを境界付けて、ボックスがオクトツリーのボクセルに対応する場合に、階層の各ボックスは、階層の次に下のレベルの８つのボックスを境界付けることができる。従って、実施例では、最高レベル（ＬＯＤ０）がシーンの３Ｄ空間に１つのボックスアドレスだけを有し、次に下のレベル（ＬＯＤ１）は最大８ボックスを有し、次に下のレベル（ＬＯＤ２）は最大６４ボックスを有する等々である。
【００２３】
階層は、トップダウン方式又はボトムアップ方式で構築することができる。本明細書に説明する実施例では、ボトムアップ方式が階層を構築するのに使用され、これは、ボトムアップ階層構築アルゴリズムが少ない反復（例えば、１通過だけ）でシーン形状を処理することができるからであるが、トップダウン階層構築アルゴリズムは、シーン形状を何度も反復しなければならない。ボトムアップ階層構築アルゴリズムは以下のように作動させることができる。
１．シーンプリミティブを反復して、条件が満足された時に、プリミティブの部分集合を含有するように境界領域を生成する。これは、シーン内のプリミティブを含有するリーフノードを生成する。
２．段階１で生成されたリーフノードを反復して、条件が満足された時に、ノードの部分集合を含有するように境界領域を生成する。これらのノードは、関わっているノードよりも増大し、階層の次に高いレベルを含むことになる。
３．ツリーの根が構築されるまで段階２を繰り返す。一部の実施例では、ツリーの根は単一ノードであるが、他の実施例ではツリーは複数の根ノードを有することができる。
【００２４】
図３は、シーンをレンダリングするための光線トレーシングを実行するのに使用することができるグラフィックス処理システム３００の高レベルブロック図を示している。グラフィックス処理システム３００は、階層処理モジュール３０２、交差試験ユニット３０４、１又は２以上のシェーダー３０６、及びメモリ３０８を含む。メモリ３０８は、階層ストア３１０及び累積バッファ３１２を含む。グラフィックス処理システム３００は他の構成要素を含むことができるが、明確にするためにこれらを図３には示していない。階層処理モジュール３０２、交差試験ユニット３０４、及びシェーダー３０６の各々は、ハードウエア、ソフトウエア、又はその組合せに実施することができる。一例では、階層処理モジュール３０２及び交差試験ユニット３０４は、専用ハードウエアに実施することができ、例えば、特定のタスクを実行するように構成された固定機能回路として実施することができる。ソフトウエアではなくハードウエアでこれらのブロックを実施することで、高処理速度、低処理電力、及び／又は低オンチップ面積の点からこれらのブロックの性能を改善することができる。この実施例では、シェーダー３０６は、グラフィックス処理ユニット（ＧＰＵ）又は中央演算処理装置（ＣＰＵ）のような処理ハードウエアで実行するように構成されたソフトウエアに実施することができる。ハードウエアではなくソフトウエアでシェーダー３０６を実施することで、シェーダー３０６の機能を適応化及び調節するという点で高い柔軟性を提供する。
【００２５】
シーンをレンダリングするためのグラフィックス処理システム３００の作動の概要を図４の流れ図に関して説明する。
【００２６】
グラフィックスデータがグラフィックス処理システム３００で受信される。特にグラフィックスデータは階層処理モジュール３０２で受信され、グラフィックスデータはシーン内でレンダリングされる物体のプリミティブを含む。階層処理モジュール３０２は、段階Ｓ４０２からＳ４０８に説明するようにグラフィックスデータのプリミティブを表すために階層を構築する。一部の実施例で階層がどのように構築されるかという詳細は、米国特許番号ＵＳ８７１７３５７に説明されている。
【００２７】
段階Ｓ４０２の前にいくつかの前処理をプリミティブに実行することができる。例えば、レンダリグされるシーンの広がりの外側にあるプリミティブを除くために切り取り及び選抜を実行することができる。段階Ｓ４０２で階層処理モジュール３０２は、プリミティブの各々の分割レベル（ＬＯＤ）を選択する。ＬＯＤは、プリミティブを存在させなくてはならない疎らなオクトツリーのレベル（階層のレベルが表す）を説明する整数（例えば、０と３１の間）とすることができる。プリミティブに対するＬＯＤの選択は、異なる実施例で異なるものとすることができるヒューリスティックに基づく場合がある。プリミティブに対する適切なＬＯＤの選択の正確な詳細は、本発明の開示の範囲外であるが、概要として、その目的は、過度の空の空間なしに完全なプリミティブを含有するのに十分大きい１つのボックス（又は複数のボックス）にプリミティブを含有することである。例えば、これらの境界ボックスは、軸位置合わせとすることができる。プリミティブが大きい縦横比を有する及び／又は軸を外れる場合では（例えば、プリミティブが長く薄い三角形である場合）、その目的は、プリミティブの面をまとめて覆っている複数のより小さいボックスを選択することであり、それによって階層のリーフノードがプリミティブに密なフィットを形成しない場合を避ける。しかし、プリミティブが小さい縦横比を有する場合では（例えば、プリミティブが等辺プリミティブである場合）、プリミティブは、選択されたＬＯＤの単一ボックス（例えば、軸位置合わせ境界ボックス（ＡＡＢＢ））内に含有することができる。
【００２８】
段階Ｓ４０４で、プリミティブは、段階Ｓ４０２で選択されたＬＯＤのボックスを表す１又は２以上のリーフノードに加えられる。プリミティブがボックスの中心を通過しない場合でも、プリミティブは、プリミティブが交差する選択されたＬＯＤのいずれのボックス内にも存在すると考えられる。プリミティブが部分的にのみボクセルに重なる場合に、プリミティブによって覆われたボックスの量を示すための情報を格納することができる。このようにして、階層のリーフノードは、シーンの形状のプリミティブに密に適合することができる。
【００２９】
リーフノードが決定された後に、段階Ｓ４０６で階層のより高いレベルが、例えば、ボトムアップ方式で構築される。このようにして、第１のレベルでのノードを一緒にグループ分けすることができ、第１のレベルでのノードのグループを参照する次に上のレベルでのノードを生成することができる。この処理は、特定のレベルでのノードの全てに対して反復することができ、処理を生成されたノードに対して反復することができ、それによって階層全体が構築されるまで次のより高いレベルでのノードを生成する等々である。階層の最上位レベルは、単一ノードを含むことができる。他の実施例では、階層の最上位レベルは、単一ノードを含むことができるレベルの下の１つのレベルであるレベルとすることができる。すなわち、一部の実施例では、階層は、単一ノードを含む最上位レベルを有する必要はなく、階層の最上位が、単一統一ノードを含むことができるレベルよりも低い１つのレベルである場合に、効率的な交差試験をもたらすことができる。
【００３０】
段階Ｓ４０８で、階層処理モジュール３０２は、階層を階層ストア３１０の格納のためのメモリ３０８に渡す。理解し易いように、メモリ３０８は、メモリの統一されたブロックとして図３に示されているが、一部の実施例では、メモリ３０８は、メモリの複数の異なるブロックとして実施することができ、例えば、これらの一部をシステムメモリとして実施することができ（例えば、動的ランダムアクセスメモリ（ＤＲＡＭ））及びこれらの一部をオンチップメモリとして実施することができる。例えば、メモリ３０８の階層ストア３１０は、オンチップメモリとして、すなわち、階層処理モジュール３０２、交差試験ユニット３０４、及びシェーダー３０６と同じチップに実施することができる。
【００３１】
段階Ｓ４１０で、交差試験ユニット３０４は、階層に対して交差試験を実施して、レンダリングされる画像のピクセル位置を通過する光線によって交差されるプリミティブを決定する。上述のように、光線は、起点及び方向によって定義されるベクトルである。光線は、起点から光線の最大距離を設定する切り取り距離を有することができる。
【００３２】
交差試験は、階層の最上位ノードを最初に試験することによって実行される。光線が特定のノードを逃した場合に、光線は、これらのより低いレベルのノードに交差試験を実施する必要なしに階層のこの特定のノードによって囲まれた（又は「境界付けられた」）より低いレベルのノードの全てを逃すと推測される。このようにして、下位階層の他の（より低い）ノードに交差試験を実施することなく、特定のノードに交差試験を実施することによって階層内の下位階層の根として特定のノードを有する全体の下位階層を光線が逃すと決定することができる。しかし、光線が特定のノードに衝突した場合に、交差試験は、特定のノードによって参照されたノードに対して、すなわち、特定のノードの下の下位階層のノードに対して行われる。交差試験は、どのプリミティブが光線によって交差されるかを決定するために階層の適切なノードに対して行われる。交差試験は、例えば、プリミティブとの光線の交差点のどれが光線の起点に最も近いかを決定することにより、交差されるプリミティブのどれが最初に光線によって交差されるかを決定することができる。交差試験の正確な詳細は、異なる例において異なる場合がある。
【００３３】
段階Ｓ４１２で、光線が交差するプリミティブとどのように光線が相互作用すべきかを決定するために１又は２以上のシェーダー３０６を実行することができる。プリミティブとの光線の相互作用は、プリミティブの特性、例えば、プリミティブの材料特性及びプリミティブの面法線のような他のファクタに基づく場合がある。シェーダー３０６は、メモリ３０８からプリミティブの特性を検索することができる。シェーダー３０６は、例えば、グラフィックス処理システム３００で処理ユニット上で実行されるソフトウエアプログラムとして実施することができる。これは、シェーダープログラムの適応を容易にし、それによってハードウエアの変更を必要とすることなく光線とプリミティブの間の相互作用に異なる効果を使用することができる。
【００３４】
段階Ｓ４１４で、シェーダー３０６の実行の結果は、レンダリングされている画像のサンプル点の値を表すために累積バッファ３１２に格納される。
【００３５】
更に、シェーダー３０６の実行は、シーン内の反射のような照明効果の外観を決定するのに使用することができるプリミティブから放出される１又は２以上の２次光線をもたらすことができる。これらの２次光線は、交差試験ユニット３０４に戻される（図３及び４の破線で示す）。各２次光線に対して、交差試験及びシェーディングを実行することができ、このシェーディングの結果は、累積バッファに既に格納された結果と結合され、例えば、シーンの反射の効果を含むように画像のサンプル点値を精緻化する。本方法は、光線の多くの反射に対して何度も繰り返すことができる。考えられる光線の反射の最大数が存在する場合がある。更に、上述のように、光線は、光線が切り取り距離までも遠くに移動した時に、例えば、更に別の反射のための光線処理の更に別の反復を中止するように切り取るような切り取り距離を有することができる。
【００３６】
従って、図４に示す方法の最後で、累積バッファ３１２は、画像のピクセル値を表すのに使用することができる光線トレーシングの結果を格納する。画像は、次に、必要に応じて使用することができ、例えば、ディスプレイ上に光線に表示するか又はメモリに格納するか又は例えばインターネットのような通信ネットワーク上で別のデバイスに送信することができる。
【００３７】
一例では、レンダリングされているシーンは、フレームのシーケンスのうちの現在のフレームである。例えば、フレームのシーケンスは、リアルタイムアニメーションに使用することができ、例えば、リアルタイムでユーザがゲームアプリケーションと相互作用する場合にゲームアプリケーションと共に使用することができ、相互作用の結果は、リアルタイムで表示される。そのようなシナリオでは、グラフィックス処理システムは、効率よく、例えば、ユーザがレンダリングにおける遅延に気付かないように十分迅速に、かつ移動デバイス、例えば、コスト、大きさ、重量、バッテリ寿命のような制約のためにかなり限定された処理リソースしか持たない場合があるスマートフォン又はタブレットのようなデバイスに多くの処理を実施する必要なくフレームをレンダリングするように適応させることができる。
【００３８】
シーン内のプリミティブの階層の構築は、光線トレーシング方法を実施するのに必要な時間の有意な部分を必要とする場合がある。フレームのシーケンスからのフレームは、先行フレームから動かなかった一部の物体を含むことが多い。フレームのシーケンスのうちのフレームをレンダリングするのに必要な時間を低減するために、先行フレームと現在のフレームの間で静的な物体の階層を再使用することができ、従って、現在のフレームに対して階層が再構成されることはない。しなし、先行フレームと現在のフレームの間で動いた物体では（すなわち、「動的」物体では）、階層が、現在のフレームの動的物体に対して構築される。従って、現在のフレームの物体を表す１つよりも多い階層が存在する場合がある。現在のフレームの物体のそれぞれのセットを表す複数の階層を有するための他の理由も存在する可能性がある。例えば、以下に詳しく説明するように、物体（例えば、ゲーム内の自動車又は建物）は、常にプリミティブの特定のセットによって表すことができる。この場合に、階層を１又は２以上の物体の異なるセットに対して別々に事前決定することができ、それによって物体がフレームに現れる度に階層を再構成するのではなく、これらの物体を容易にシーンに追加することができる。この場合に、以下に詳細に説明するように、平行移動を階層に適用することができ、それによって現在のフレームの階層の全ての空間位置は、共通の軸のセットに対して定義され、例えば、これらが全て世界空間の点で定義される。
【００３９】
複数の階層を有することは、シーンの階層を生成するのに使用される時間及び処理電力の点で有用とすることができるが、複数の階層を有することは、光線トレーシングレンダリング器での交差試験の効率に悪影響を及ぼす場合がある。特に、交差試験は、シーンに定義された階層の各々に適用しなければならない。これは、単一階層がシーン内の物体に対して構築された場合に実行される交差試験の数が多くなる場合があることを意味する。点を示すための非常に単純な例として、シーンの形状の全てを逃す方向の光線では、単一階層が定義された場合に、光線は階層の根ノードに対して試験され、交差試験に失敗することがあり、この場合に、更に別の交差試験はこの光線に実行されず、光線がシーン内のプリミティブの全てを逃したことが既知である。しかし、複数の階層が存在する場合に、実行することができる最少数の交差試験は、階層の根ノードの各々に対して光線を試験するためのものである。
【００４０】
本明細書に説明する実施例では、複数の階層は、融合階層を形成するために一緒に融合される。これは、交差試験の効率を改善する傾向があるシーンの個別の階層の数を低減するが、シーンの形状からの階層の全再構成を必要としない。
【００４１】
図５はシステム３００を示しているが、図３に示されていなかった一部の更に別の構成要素が図５には示されている。階層処理モジュール３０２は、階層発生ユニット５０２及び階層融合モジュール５０４を含む。階層融合モジュール５０４は、融合決定ユニット５０６及び融合レベル決定ユニット５０８を含む。本発明のシステムはまた、平行移動ユニット５１０を含む。本明細書に説明する実施例において、階層処理モジュール３０２の構成要素（すなわち、構成要素５０２、５０４、５０６、及び５０８）及び平行移動ユニット５１０は、ハードウエアに、例えば、階層処理モジュール３０２を効率的にする固定機能回路として実施される。他の実施例では、階層処理モジュール３０２の構成要素の１又は２以上又は平行移動ユニット５１０は、ソフトウエアに実施することができる。
【００４２】
階層処理モジュール３０２の作動を図６に示す流れ図を参照して説明する。段階Ｓ６０２で、レンダリングされているシーンのデータが階層処理モジュール３０２の階層発生ユニット５０２で受信される。このデータは、シーン内の物体を説明する形状データ（例えば、プリミティブ）である。
【００４３】
段階Ｓ６０４で、階層発生ユニット５０２がシーンの１又は２以上の階層を構築し、及び／又は階層処理モジュール３０２がシーンの１又は２以上の階層を受信する。例えば、上述のように、シーンがフレームのシーケンスの１つのフレームである場合に、階層発生ユニット５０２は、シーンの動的コンテンツの階層を構築することができ、シーンの静的コンテンツの階層は、以前のフレーム（例えば、すぐ前の先行フレーム又は他の以前のフレーム）から再使用することができ、従って、階層ストア３１０から検索することができる。階層は、いくつかのソースから来ることができ、最も一般的なものは以前のフレームであるが、オフラインで構築することができ、ゲームアセットを含むことができ、又は分散階層構築システムの一部として別の階構築モジュールで構成することができる。階層発生ユニット５０２によって構築された階層は、次の使用ために階層ストア３１０に格納することができる。
【００４４】
段階Ｓ６０４に続いて、階層処理モジュール３０２は、複数の階層（例えば、ユニット５０２によって生成及び／又はメモリ３０８から検索）へのアクセスを有し、段階Ｓ６０６でこれらの階層が階層融合モジュール５０４に入力される。階層融合モジュール５０４は、融合階層を形成するために入力階層を融合するように作動する。
【００４５】
理解し易いように、階層融合モジュール５０４の作動を２つの入力階層が融合される単純な例に関して図７から図１０を参照して説明するが、同じ原理を２つよりも多い入力階層を融合するために他の実施例で使用することもできる。
【００４６】
図７は、２つの入力階層内のノードによって表されるボックスを示し、図８は、図７に示すボックスを表す２つの入力階層を示している。特に図７は、実線で第１の階層に関連するボックスを示している。これらのボックスは、高レベルボックス７０２、２つの中間レベルボックス７０４0及び７０４1及び５つの低レベルボックス７０６0、７０６1、７０６2、７０６3、及び７０６4を含む。光線がボックス７０２に交差しない場合に、ボックス７０４0又は７０４1に対して具体的に交差試験を実施することなく光線がボックス７０４0又は７０４1に交差しないことが既知であるように、ボックス７０２は、ボックス７０４0及び７０４1を完全に境界付ける。同様に、光線がボックス７０４0に交差しない場合に、ボックス７０６0又は７０６1に交差試験を実施することなく光線がボックス７０６0又は７０６1に交差しないことが既知であるように、ボックス７０４0は、ボックス７０６0及び７０６1を完全に境界付ける。同様に、ボックス７０４1は、ボックス７０６2、７０６3、及び７０６4を完全に境界付ける。この第１の階層は、図８に示すノードの左手側セクションによって表される。特に、ノード８０２、８０４0、８０４1、８０６0、８０６1、８０６2、８０６3、及び８０６4は、図７に示すボックス７０２、７０４0、７０４1、７０６0、７０６1、７０６2、７０６3、及び７０６4をそれぞれ表している。
【００４７】
図７は、破線で第２の階層に関連するボックスを示している。これらのボックスは、高レベルボックス７１２、２つの中間レベルボックス７１４0、及び７１４1、及び２つの低レベルボックス７１６0及び７１６1を含む。光線がボックス７１２に交差しない場合に、ボックス７１４0又は７１４1に具体的に交差試験を実施することなく光線がボックス７１４0又は７１４1に交差しないことが既知であるように、ボックス７１２は、ボックス７１４0及び７１４1を完全に境界付ける。同様に、光線がボックス７１４0に交差しない場合に、ボックス７１６0又は７１６1に交差試験を実施することなく光線がボックス７１６0又は７１６1に交差しないことが既知であるように、ボックス７１４0は、ボックス７１６0及び７１６1を完全に境界付ける。この第２の階層は、図８に示すノードの右手側セクションによって表される。特にノード８１２、８１４0、８１４1、８１６0、及び８１６1は、図７に示すボックス７１２、７１４0、７１４1、７１６0、及び７１６1をそれぞれ表している。
【００４８】
一例として、図８に示す階層の１つは、シーン内の静的物体のためのものとすることができ、以前のフレームから再使用することができ、階層のもう１つは、シーン内の動的物体のためのものとすることができる。階層を別々に構築する他の理由が存在する可能性がある。２つの階層が最高レベルの高程度の空間重複を有し、すなわち、ボクセル７０２及び７１２が高程度の空間重複を有することが図７を見ることができる。
【００４９】
２つの階層は、階層融合モジュール５０４に入力される。段階Ｓ６０８で、階層融合モジュール５０４は、融合される入力階層内の下位階層を識別する。例えば、下位階層は、入力階層からの下位階層の空間重複の量に基づいて識別することができる。各下位階層は、階層のサブセクションである。これらの実施例では、下位階層が、高程度の空間重複を有する入力階層から見出される（例えば、下位階層の最上位レベルのボックスの空間重複は、下位階層のこれらのボックスの合計容積の閾値（５０％など）よりも大きい）。これは、下位階層が融合に適切であるという表示を提供する。図５及び６に示す実施例では、下位階層を識別するために、融合レベル決定ユニット５０８が、融合される下位階層の融合レベルを決定し、それによって融合レベルの下位階層の根ノードを識別する。融合レベルは、階層のノードによって表されるボックスが定義されるオクトツリーのレベルの点で定めることができる。融合レベルの決定は、異なるレベルの入力階層からのノードの空間重複の量に基づく場合がある。例えば、融合レベルは、入力階層からのノードの空間重複の量が閾値よりも上である最低レベルである、例えば、特定のレベルの入力階層からのノードに関連のボックスは、５０％以上互いに重なる時に決定することができる。下位階層は、融合レベルの識別されたノードから下降する。図７及び８に示す実施例では、融合レベル決定ユニット５０８は、融合レベルが図８に示す３つのレベルの最上位であると決定する。この理由は、最上位レベルノード８０２及び８１２が、高程度の空間重複を有するボックス７０２及び７１２に関連するためであり、一方、入力階層のより低いレベルのノードに関連のボックスは互いに重なり合わない。決定された融合レベルは、融合決定ユニット５０６に提供される。
【００５０】
他の実施例では、融合レベルを入力階層からのボックスの空間重複に基づかない方式で決定することができる。例えば、融合レベルは、入力階層の最上位レベルから予め決められた数のレベルになると決定することができる。他の実施例では、融合レベルを入力階層の最上位レベルから入力階層のレベルの総数の予め決められた比率になると決定することができる。更に別の実施例では、融合レベルがユーザ指定のレベルに決定されるように、融合レベルをユーザによって指定することができる。
【００５１】
更に、一部の実施例では、融合レベルが必ずしも決定されず、融合される下位階層のノードは、必ずしも入力階層内の同じレベルではない。この場合に、下位階層の根ノードをこれらのノードが階層に存在するレベルにかかわらず、異なる階層からのノードの空間重複に基づいて決定することができる。これは、異なる入力階層内の異なるレベルからの下位階層の融合を可能にするための柔軟な方法を提供する。
【００５２】
段階Ｓ６１０で、融合決定ユニット５０６は、（例えば、融合レベルの）識別された下位階層の最上位レベルと根の間の入力階層を構文解析し、入力階層のこれらのレベルに存在するリーフノードを識別する。いずれの識別されたリーフノードも、融合階層に含まれる。
【００５３】
階層は、軸の異なるセットに点で定義された空間位置を有することができる。例えば、動的物体のセットの階層は、物体のセットの中心位置に対して定義された空間位置を有することができる。この物体のセットをシーン空間（又は「世界空間」）に配置するために、融合決定ユニット５０６は、以下に詳細に説明するように、平行移動ユニット５１０によって階層に対して決定された平行移動に従って階層の空間位置に平行移動を適用することができる。階層のノードがシーン空間に平行移動された状態で、これをこの空間で定義された空間位置を有する他の階層と融合することができる。階層に対する平行移動の表示は、平行移動ユニット５１０によって入力階層の各々に決定することができる。
【００５４】
段階Ｓ６１２で、平行移動が入力階層に示された場合に、融合決定ユニット５０６は、段階Ｓ６１０で識別されたいずれのリーフノードにも及び入力階層の融合レベルのいずれのノードにも平行移動を適用する。このようにして、異なる入力階層からのノードに関連するボックスの空間位置が、これらが正確に融合されるように軸の同じセットの点で定義される。一部の入力階層が平行移動を必要とせず、一部の場合では、入力階層のどれも平行移動を必要とせず、これらの場合では段階６１２が実行されないことに注意されたい。
【００５５】
段階Ｓ６１４で、融合決定ユニット５０６は、融合階層の１又は２以上のノードを決定する。融合階層の決定されたノードは、例えば、融合レベルよりの１つ下のレベルで入力階層の識別された下位階層のノードを参照する。例えば、図９ａは、図８に示す２つの入力階層を融合すると決定されたノード９０２を示している。この単純な実施例では、１つのノードだけが段階Ｓ６１４で決定されるが、他の実施例では融合階層の多くのノードを段階Ｓ６１４で決定することができることを認めることができる。上述のように、融合レベルは、ノード８０２及び８１２が入力階層に存在するレベルであると決定されたものである。従って、決定されたノード９０２は、入力階層の融合レベルよりも１つ下のレベルに存在するノード８０４0、８０４1、８１４0、及び８１４1を参照する。これらのリファレンスは、図９ａにノード９０２からの矢印によって示されている。
【００５６】
段階Ｓ６１６で、融合階層のより高いレベルが構築される場合に、階層融合モジュール５０４は、融合階層の決定されたノードを階層発生ユニット５０２に提供し、階層発生ユニット５０２が、段階Ｓ６１４で決定されたノードの上に融合階層のノードの１又は２以上のレベルを構築する。融合階層のより高いレベルの構築は、階層発生ユニット５０２が動的データの階層を例えばボトムアップ方式で構築するのと同じ方法で実行することができる。得られる融合階層の最上位レベルは、単一ノードを含むことができる。これに代えて、融合階層の最上位レベルは、１つよりも多いノードを含むことができる。階層の最上位レベルに単一ノードを有することは、融合階層に対して光線を試験するために実行される交差試験の最小数が１つであることを意味するが、融合階層の最上位レベルが１つよりも多いノードを含む場合に、融合階層に対して光線を試験するために実行される交差試験の最小数は、１よりも多くなる。しかし、光線のほとんど全てを融合階層の最上位レベルの単一ノードに対する交差試験に渡す場合に、階層に対して実行される交差試験の総数は、単一ノードが融合階層に含まれるレベルよりも１つ低いレベルで階層の最上位を有するのではなく最上位レベルを含むことによって増加することがある。従って、融合階層のノードがシーンの非常に大きい割合に拡散する場合に、単一ノードを含む融合階層のレベルは、シーンの非常に大きい割合を覆うボックスに対応することになる。従って、光線の非常に大きい割合が、この単一ノードに対する交差試験にパスし、それによって融合階層にこの単一ノードを含むことによって多くの情報は獲得されず、実際には、単一ノードが含まれるレベルよりも１又は２以上下のレベルで融合階層セットの最上位レベルを有することが有利になる（融合階層に対して実行される交差試験の数の点で）。
【００５７】
図９ａに示す単純な実施例では、融合階層の１つのノード（ノード９０２）だけが段階Ｓ６１４で決定され、それによって段階Ｓ６１６でノード９０２の上に構築する融合階層のレベルはなくなる。
【００５８】
融合レベル、又は融合レベルの上の入力階層のノードは、融合階層に対する交差試験をする必要がない。融合階層の概略図が図９ｂに示されている。ノード９０２からのリファレンスが、融合レベル又は融合レベルの上の入力階層のノードをバイパスする。従って、交差試験が実行される時に、光線が交差に関して試験される階層構造が図９ｂに示されている。光線がノード９０２に対する交差試験に失敗した場合に、図９ｂに示す他のノードのいずれに対しても光線に交差試験を実施する必要はない。
【００５９】
図１０は、図９ｂに示す融合階層のノードによって表されるボックスを示している。ボックス１００２は、融合階層のノード９０２に対応する。図１０に示す他のボックスは、図７に示す対応するボックスと同じである。交差試験が図９ｂに示す融合階層に対して確実に実行されるように、ボックス１００２が図１０に示す他のボックスの全てを境界付けることを見ることができる。
【００６０】
段階Ｓ６１８で、階層融合モジュール５０４は、段階Ｓ６１４又は段階Ｓ６１６で決定されていた融合階層の１又は２以上の決定されたノードを階層ストア３１０に格納させる。更に、階層融合モジュール５０４は、融合階層の決定されたノードと入力階層の参照されたノード間のリファレンスの表示（並びに融合階層の複数のレベルが構築された場合の融合階層のノード間のリファレンス）を階層ストア３１０に格納させる。図７から１０に示す実施例に関して、段階Ｓ６１８は、ノード９０２及びノード９０２からノード８０４0、８０４1、８１４0、及び８１４1へのリファレンスを階層ストア３１０に格納する段階を伴う。ノードのデータは、ノードによって表されるボックスの空間位置を定めるデータを含む。ノードがリーフノードである場合に、低ノードへのリファレンスは格納されないが（これは、階層に低参照ノードがないためである）、１又は２以上のプリミティブの表示は、リーフノードによって表されたボックスに存在するプリミティブを示すためにリーフノードと共に格納される。
【００６１】
融合階層が階層ストア３１０に格納された状態で、シーンをレンダリングするために融合階層を使用して、例えば、融合階層のノードに対して光線に対する交差試験を実施する段階を含む上述して図４に示す段階Ｓ４１０、Ｓ４１２、及びＳ４１４に従って光線トレーシングを実行することができる。
【００６２】
上述のように、融合レベル又は融合レベルの上の入力階層のノード（例えば、ノード８０２及び８１２）は、融合階層に対して交差試験の必要はないが、入力階層は、次のフレームに使用することができるのでメモリ３０８の階層ストア３１０に保持することができる。従って、入力階層はメモリに格納され、加えて融合階層の決定されたノード及びそのリファレンスがメモリに格納される。
【００６３】
一部の実施例では、シーン内の入力階層の全てを融合階層に融合することができる。他の実施例では、シーン内の入力階層の部分集合を融合階層に融合することができる。更に、一部の実施例では、シーンの入力階層を１つよりも多い融合階層に融合することができる。１又は２以上の融合階層は、フレームのシーケンスのうちの各フレームに対して決定することができる。
【００６４】
図６の流れ図に関して上述した方法は、２又は３以上の入力階層の融合階層を形成させ、かつ階層ストア３１０に格納させる。融合階層の決定されたノードによって参照される入力階層のノードのうちの少なくとも１つが、それ自体が入力階層内の１又は２以上のより低いレベルのノードを参照する場合に、階層の融合は、入力階層のリーフノードの全てから階層を再構成するよりも少ない処理を伴う可能性は低い。すなわち、入力階層の識別された下位階層の低い構造が、融合階層に維持され、再計算する必要はない。
【００６５】
上述の実施例では、階層のノードがそれぞれのボックスを表すように階層はボックス階層であり、上述の実施例では、ノードは、例えば、オクトツリー構造のレベルに対応する異なるレベルでの軸位置合わせ境界ボックス（ＡＡＢＢ）を表している。オクトツリー構造では、レベルを下に動くことは、オクトツリーのレベルの各ボックスが次に下のレベルで８つのボックスを境界付けるように各軸に沿って（例えば、ｘ、ｙ、及びｚ軸に沿って）ボックスを半分に分割することを意味する。他の実施例では、ノードによって表されるボックスの構造は、オクトツリーでなくてもよく、代わりにより柔軟性を持たせて定めることができるが、階層は、階層内の第１のレベルの第１のノードがより低いレベルの１又は２以上のノードを参照する場合に、第１のノードによって表されるボックスがより低いレベルでのノードのボックスを完全に境界付ける特性を有する。このようにして、試験（例えば、交差試験）を第１のレベルの第１のノードに対して実行することができ、試験の結果を使用して、より低いレベルの参照されたノードの結果を推測することができる。
【００６６】
上述の方法は、シーンをレンダリングするための光線トレーシングレンダリング器での階層の使用に関するものである。しかし、対応する方法を２又は３以上の入力階層を融合するために有用とすることができる他の関連に使用することができる。例えば、階層の融合は、光線トレーシングレンダリング器以外のレンダリングシステムに使用することができ、又は音声処理システム内に、又は処理されることになる１又は２以上の項目のそれぞれのセットに関連するデータを表すために階層を使用することができるあらゆる他の処理システムに使用することができ、それによって階層のノードのマルチレベルリンク構造を使用して、項目の処理を単純化することができる。上記に与えられた実施例の空間位置、又は周波数空間、カラー空間、又は４Ｄ空間時間のような何らかの他の「空間」における位置のようなデータ項目のある一定の特性に基づいてデータ項目をグループ分けすることができる場合に階層は有用とすることができる。階層は、トップダウン方式で階層のノードを処理することによってデータ項目の特性に基づくデータ項目の階層処理を可能にする。例えば、階層のノードにグループ分けされるカメラピクセル値が、カラー空間（例えば、ＲＧＢ空間又はＹＵＢ空間など）のピクセル値の位置に基づく場合に、処理作動が、カラー空間の異なるセクションからのピクセルを様々に処理するように意図する場合に、ピクセルがどのように処理されるかを迅速に決定するために階層は有用とすることができる。データ項目を階層構造にグループ分けするのに使用することができるデータ項目の適切な特性の多くの例がある。更に、複数の階層が存在することができ、更に階層を融合する処理効率を改善することができる多くの異なるシナリオが存在し、入力階層を融合するための本明細書に説明する方法を使用することができる。一般的に、上述の方法は、光線トレーシングの関連から抜粋した時に、入力階層の各々が処理されることになる１又は２以上の項目のそれぞれのセットに関連するデータを表す融合階層を形成するために複数の入力階層を融合する段階を提供し、入力階層の各々は、ノードのマルチレベルリンク構造である。形成される融合階層は、項目の処理に使用するためとすることができる。少ない階層を形成するための（例えば、単一融合階層を形成するための）複数の階層の融合は、項目が処理される効率を改善することができる。
【００６７】
上述の実施例では、個別の物体のセットに対して個別の階層を定めることができ、例えば、ゲームの異なるキャラクター又は物体は、異なるそれぞれの予め決められた階層を有することができる。物体の空間位置は、浮動小数点フォーマットで定めることができる。物体の位置が世界空間軸の点で定義される場合に精度の問題が発生することがある。これは、世界空間軸の起点からの物体の距離が、物体のサイズよりも有意に大きい場合があるためであり、それによって物体の位置を表す浮動小数点値は物体のサイズよりも有意に大きい場合があり、それによって物体の位置を表す浮動小数点値は、物体のサイズに比べて大きい場合がある。浮動小数点数が境界の２のべき乗を超えて増加する度に精度は半分になり、位置を表すために大きい浮動小数点数を使用することは、これらの位置が定義される精度を低減する。
【００６８】
単純な例として、ゲームアプリケーションにおいて、２つのキャラクターを世界空間の起点から直線に沿って同じ速度で３メートル離れて移動することができる（０．０ｆ、０．０ｆ、０．０ｆ）。キャラクターが起点から離れて移動する時に位置値が交差する各々の２のべき乗の境界により、位置を表す浮動小数点数の精度は降下する（特に精度は交差された各々の２のべき乗境界の半分である）。最終的には、２つのキャラクターの位置は、精度誤差のために見分けがつかなくなる。これは極端な実施例であるが、物体が起点から離れた時に世界空間軸の点で定義される位置のために発生することがある精度誤差を示している。これが問題を引き起こす場合がある別の例は、２つの三角形プリミティブが単一クワッドを説明する場合である。この場合に、２つのプリミティブの間の共有される縁部の間に間隙が見られるように精度が劣化する場合に、クワッドの錯覚は、２つの独立した三角形が明らかになる場合に直ちに失われる。精度での誤差は、他の例における他の問題を引き起こす場合がある。
【００６９】
発生する精度誤差を低減するために、シーン内の位置を定めることができる位置値に対する上限が存在するように世界空間のサイズを規制することができる。換言すると、シーンの広がりを設定することができ、それによって形状がシーンの広がり内に留まる。物体が許容できないほど世界空間起点から離れる場合に発生する精度誤差を低減する別の方法は、物体の位置値が小さい（及び従って正確な）浮動小数点数によって定義されるように起点を移動することである。
【００７０】
レンダリングされているシーンがフレームのシーケンスからの現在のフレームであり、かつシーン内の形状の一部が静的形状である時に、静的形状が以前のフレームの起点の点で定義された位置データを有するので現在のフレームの起点を移動することは問題が多くなる。従って、現在のフレームの起点が移動する場合に、静的及び動的物体は、例えば、シーン内の物体のプリミティブに交差試験を実施する時に、問題を引き起こす場合がある異なる起点の点で定義された位置を有することがある。
【００７１】
現在のフレームの起点を移動するのではなく、オフセット（すなわち、平行移動）を各階層に、すなわち、物体の各セットに決定することができる。これは、平行移動された起点に関して物体の位置値が定義されることを可能にし（すなわち、物体のセットの位置値に「流体」起点が存在する場合がある）、それによって小さい（及び従って正確な）浮動小数点数を使用して、物体の空間位置を定めることができる。階層のための平行移動の表示が格納される。次に、階層を処理することができ、階層によって表された物体の空間位置が処理される場合に、階層のための平行移動の表示を相応に使用することができる。各階層が決定されたそれぞれの平行移動を有することができるので、各階層の位置値の精度を維持することができるが、階層は、それぞれの階層に決定された平行移動の知識に基づいて共に処理（例えば、融合）することができる。
【００７２】
平行移動ユニット５１０は、階層の平行移動を決定することができる。特に、図１５に示す流れ図に従って段階Ｓ１５０２で平行移動ユニット５１０は、階層の平行移動を決定する。次に、段階Ｓ１５０４で、平行移動ユニット５１０は、階層に対して決定された平行移動の表示を次の使用ために、例えば、平行移動ユニット５１０内の表に又はメモリ３０８に格納させる。
【００７３】
階層の平行移動は、階層の決定されたレベルでのノードに関連するボクセルの粒度で段階Ｓ１５０２で決定される。決定された階層のレベルは、例えば、階層が別の階層に融合される階層の最上位又は階層のレベル（上記で「融合レベル」と呼ぶ）とすることができる。これは、階層内の成長を（平行移動による階層のノードの数に関して）低減することを助けることができる。ボクセル位置合わせ表現を有するための平行移動の決定は、平行移動を決定する場合の複雑さを低減し、かつ加えられた平行移動を示すのに使用されるデータの量を低減することを助けることができる。例えば、ＬＯＤレベル及びｘ、ｙ、及びｚ方向におけるＬＯＤレベルの粒度のシフトの表示が平行移動を定めることができる。
【００７４】
図１１は、平行移動が階層の物体に使用される位置値での最適低減を提供するように、最低の可能性のレベルで（例えば、ピクセルレベルで）平行移動が決定される例を示している。図１１は、単純にするために２Ｄで示されているが、同じ原理を更に別の次元に適用することができる。特に、図１１は、レンダリングされているシーン内の空間を表すボクセル格子１１０２の４ｘ４セクションを示している。階層に関連する形状は、形状を含むより低いレベルのボクセル１１０６を境界付けるボクセル１１０４内に収容されている。図１２ａは、ボクセル１１０４を表すためのノード１２０４とボクセル１１０６を表すためのより低いレベルのノード１２０６とを含む階層の一部を示している。ノード１２０４はノード１２０６のリファレンスを有する。矢印１１０８によって表される平行移動が、階層を位置１１１０に移動する階層に対して決定される。平行移動１１０８は、階層の空間位置を表すのに使用される値の優良な低減を可能にすることができ、それによって空間位置を高精度で定めることができる。しかし、位置１１１０はボクセル格子に位置合わせされないことを見ることができる。従って、位置１１１０は、元のボクセル１１０４を含む階層のレベルの４つのボクセルに跨がっている。すなわち、ボックス１１０４は１つのボクセル格子位置だけを覆うが、位置１１１０のボックスは、図１１の１１１４0、１１１４1、１１１４2、及び１１１４3で示された４つのボクセル格子位置を覆う。換言すると、平行移動により、ボックス１１１０はボクセル格子１１０２に確実に位置合わせしていない。３次元平行移動では、ボックスが平行移動される時に最大８つのボクセルを覆うことがある。
【００７５】
図１２ｂは得られる階層を示している。ノード１２１４0から１２１４3は、ボクセル１１１４0から１１１４3内のボックスを表している。これらのノードの各々は、位置１１１２に平行移動された低レベルボックス１１０６に対応する子ノード１２１２のリファレンスを有する。この平行移動が階層を拡大している（すなわち、階層のノードの数を増加させた）ことを見ることができる。階層の拡大の結果として多くの交差試験が実行される場合があるのでこれは損失になることがある。例えば、光線試験が子ノード１２１２の複数の親に対してパスした場合に、ノード１２１２に対する複数の同一の交差試験が予定されることがある。これは、光線トレーシングレンダリングシステム内では非効率的になり、階層を通過する複製を感知及び阻止するようにハードウエアを設計することは、処理電力、時間、及び／又はシリコン面積の点からコスト的に法外である場合がある。
【００７６】
この問題を阻止するために、平行移動は、決定されたレベルのボクセル格子の粒度で決定される。これは、平行移動された起点に対する位置値が小さくならないように僅差最適平行移動が実行されることを意味することができるが、平行移動による階層の拡大は、低減又は阻止される。図１３は、図１２ａに示す階層に対応する同じより低いレベルのボクセル位置合わせボックス１２０６を含有する同じボクセル位置合わせボックス１２０４を示している。しかし、この時に、平行移動されたボックスがボックス１３１０の位置のボクセル格子に位置合わせされるように異なる平行移動（矢印１３０８によって図示）が実行される。ボクセル位置合わせボックス１３１０は、平行移動されていないボックス１２０６に対応するより低いレベルのボクセル位置合わせ１３１２を含む。図１４は平行移動されたボックスの階層を示している。ノード１４１０はボックス１３１０を表し、ノード１４１２はボックス１３１２を表している。ノード１４１０は、ノード１４１２のリファレンスを有する。平行移動がボクセル格子に位置合わせされるので平行移動のために階層が拡大されていないことを見ることができる。
【００７７】
階層に適用される平行移動の表示は、階層の真の位置を必要とする時に決定されるように格納される。平行移動の表示を格納及び融合することができる異なる方法が存在する。例えば、平行移動ユニット５１０は管理ユニットとして使用することができ、各階層に適用される平行移動を追跡して表に平行移動の表示を格納することができる。次に、処理ユニット（例えば、交差試験ユニット３０４）が階層の空間位置に基づいて階層を処理する場合は必ず平行移動ユニット５１０は、階層の平行移動の表示を処理ユニットに提供することができ、それによって階層を正しく処理することができる。他の実施例では、平行移動の表示を個別の表ではなく階層のノードのデータと共に格納することができる。この場合に、平行移動表示には、階層のノードの空間位置が提供される。しかし、ノードに関連付けられたデータの量の増加が要求されないように、ノードデータが光線トレーシングレンダリング器で頻繁に使用されて格納される。これは実施の選択であり、一般的に、階層のノードの空間位置が使用される時に表示がアクセス可能である場合に、平行移動の表示を格納するあらゆる適切な方法を使用することができる。
【００７８】
従って、階層の平行移動に関して、シーンをレンダリングする際に使用する階層を処理する方法を提供することができ、階層は、シーン内のボックスに関連するノードのマルチレベルリンク構造であり、階層は、シーンでレンダリングされる１又は２以上の物体のセットの空間位置を表し、空間位置は、階層の起点に対して定義され、本方法は、シーン内の階層を位置決めするための階層の平行移動を決定する段階であって、この平行移動が、階層の決定されたレベルでのノードに関連するボックスに対応するボクセルの粒度でのものであると決定される上記決定する段階と、階層に対して決定された平行移動の表示を格納する段階とを含む。
【００７９】
上述のように、シーンのレンダリングは、階層を使用して光線トレーシングを実行する段階を含むことができる。光線トレーシングは、階層のノードに対して光線に対する交差試験を実施する段階を含むことができる。階層の平行移動の表示を使用して、階層によって表される１又は２以上の物体のセットの空間位置を平行移動することができ、交差試験は、平行移動された空間位置を使用して実行される。従って、交差試験は、平行移動された空間位置を使用して実行することができ、（あるとすれば）１又は２以上の物体のセットを説明するプリミティブに交差する光線を決定する。上述のように、ボックスは、オクトツリーのレベルを表すボクセルに対応することができ、ボックスは軸位置合わせ境界ボックスとすることができる。
【００８０】
平行移動は、シーンの予め決められた空間広がり内に階層が留まるという条件に従って階層に対して決定することができる。平行移動ユニット（例えば、平行移動ユニット５１０）は、階層の平行移動を追跡し（例えば、表に階層に対して決定された平行移動の表示を格納することにより）、かつ階層によって表された空間位置に基づいて処理を実行する更に別の処理モジュールに（例えば、交差試験ユニット３０４に）階層の平行移動を示すように構成することができる。
【００８１】
他の実施例では、階層に対して決定された平行移動の表示は、階層によって表される物体の空間位置と共に格納され、それによって更に別の処理モジュール（例えば、交差試験ユニット３０４）が階層によって表された空間位置に基づいて処理を実行する時に、決定された平行移動が考慮に入れられる。
【００８２】
一部の実施例では、階層の決定されたレベル（平行移動の粒度が決定されるレベル）は階層の最上位レベルである。
【００８３】
他の実施例では、階層が１又は２以上の他の階層に融合され、融合階層を形成し、階層の融合は、階層に対して決定された平行移動を使用して実行される。これらの実施例では、階層の決定されたレベル（平行移動の粒度が決定されるレベル）は、融合階層を形成するために階層が融合される融合レベルである。
【００８４】
上述のように、シーンは、フレームのシーケンスのうちの現在のフレームとすることができる。更に、上述のように、階層の少なくとも１つは、１又は２以上の静的物体のセットの空間位置を表して以前のフレームから再使用される静的階層とすることができ、階層の少なくとも別の階層は、１又は２以上の動的物体のセットの空間位置を表して現在のフレームをレンダリングするために構築される動的階層とすることができる。
【００８５】
階層の平行移動に関する上述の方法は、平行移動ユニット５１０のような平行移動ユニットによって実施することができるが、他の平行移動ユニットを一部の実施例に使用することができる。
【００８６】
特に、シーンをレンダリングする際に使用する階層を処理するための平行移動ユニットを提供することができ、階層は、シーン内のボックスに関連するノードのマルチレベルリンク構造であり、階層は、シーンでレンダリングされる１又は２以上の物体のセットの空間位置を表し、空間位置は、階層の起点に対して定義され、平行移動ユニットは、シーン内の階層を位置決めするための階層の平行移動を決定し、平行移動が、階層の決定されたレベルでのノードに関連するボックスに対応するボクセルの粒度であり、かつ階層に対して決定された平行移動の表示を格納させるように構成される。
【００８７】
例えば、平行移動ユニットは、決定された平行移動の表示を格納するように構成されたストアを含むことができる。他の実施例では、決定された平行移動の表示は、異なるユニットでの格納のために、例えば、メモリ３０８における格納のために平行移動ユニットから送信することができる。
【００８８】
一部の他の実施例では、空間インデックス構造を組み立てるための論理ユニットを提供する。上述の例に関して、これらの他の方法は、データベース、及び特にプリミティブの３Ｄ空間データベースからデータを検索する処理を加速するためにツリー及びツリー状データ構造を生成することに関する。特に、光線トレーシングは、空間加速構造を使用することが多い。加速構造は、３次元格子の形態、ｋｄツリーのような分割平面のツリー、軸位置合わせ境界ボックス階層のような境界容積の階層、又はオクトツリーのような幾何学的に定義された構造の形態を取ることができる。これらの加速構造の各々をまとめてグラフに一般化することができ、多くの特性が、全ての加速構造間で共有される。
【００８９】
空間加速構造の代替のタイプは、符号付き距離フィールドである。符号付き距離フィールドは、それぞれのセルの中心点から最も近い形状までの空間内の距離を示すスカラー値を含有する格子又は疎らなボクセル構造として格納されることが多い。
【００９０】
加速構造の使用は、光線トレーシングに限定されない。加速構造は、光子マッピング又は点ベースのレンダリングアルゴリズムで利用することができる１又は２以上の点の検索を含むデータベースクエリの他のタイプに使用されることが多い。
【００９１】
加速構造の構成は、メモリ集中処理である。最高品質加速構造は、データベースに全ての物体を完全に格納することによって生成されるが、トレードオフが存在し、それによって有界選別作動が、低減されたコストで妥当な品質の構造を生成することができる。
【００９２】
グラフィックレンダリング内に使用される空間クエリのためのシステムは、２つの構成要素、すなわち、加速構造の構築と指定されたクエリによる構造の横断とを含む。加速構造の構築は、シェーダーパイプラインが、ＡＰＩ呼出しに応答して加速構造によってインデックス付けされたメモリ内の物体に意図された形状プリミティブを出力する時に発生する。横断は、シェーダープログラムが加速構造に関連付けられた１又は２以上のクエリを待ち行列に入れた時に発生する。追加のシェーダーを横断処理の結果に応答して待ち行列に入れることができる。
【００９３】
ＡＰＩを通じてプリミティブの記述を受信する段階と、各プリミティブに対して、プリミティブの特性を決定する段階、特性に基づいて能動グループのセットの中から１又は２以上のグループを選択する段階、及び各選択された能動グループを更新する段階と、各能動グループに対して、能動グループに関する情報を出力する段階、親能動グループを選択する段階、及び親能動グループを更新する段階とを含む加速構造を構成する方法を提供する。
【００９４】
上述の方法では、プリミティブは、点、線、頂点、三角形、ｎｕｒｂ、パッチ、粒子、光子、ボックス、ボクセル、ディスク、球体、パラメータ面、パラメータ容積のいずれかを含むことができる。
【００９５】
上述の方法では、特性は、サイズ、空間位置、方向、縦横比、表面積対容積比、１又は２以上の軸又はベクトルへの位置合わせ、プリミティブタイプ、標準ベクトルのいずれかを含むことができる。
【００９６】
上述の方法では、能動グループは有限セットである。
【００９７】
上述の方法では、能動グループは、オンチップメモリのような物理的に限定されたメモリに存在する。
【００９８】
上述の方法では、能動グループのセットは、キャッシュ状挙動を使用して管理される。
【００９９】
上述の方法では、更新段階は、プリミティブのリファレンスを能動グループに添付する段階を含む。
【０１００】
上述の方法では、更新段階は、能動グループに関連付けられた第２のプリミティブを修正してプリミティブを境界付ける段階を含む。
【０１０１】
上述の方法では、更新段階は、プリミティブと能動グループに関連付けられた空間位置との距離を計算する段階、計算された距離を能動グループに関連付けられた第２の距離と比較する段階、及び第２の距離を潜在的に更新する段階を含む。
【０１０２】
上述の方法では、情報は、プリミティブへのリファレンス、メモリアドレス、距離、形状、プリミティブデータを含むことができる。
【０１０３】
モートンコード選別器
【０１０４】
１又は２以上の加速構造を指定するクエリを待ち行列に入れるように各々が作動可能な複数のシェーダープログラムインスタンスを実行するための３Ｄレンダリングのためのコンピュータ実装方法及び装置であって、各クエリは、加速構造を検索するように作動可能であり、この検索挙動は、加速構造の特性及びクエリの特性によって命令され、各クエリは、検索の結果に応答して１又は２以上のシェーダープログラムインスタンスを呼び出すように作動可能である。
【０１０５】
上述の方法及び装置では、指定された加速構造は、より大きい加速構造内のノードである場合がある。
【０１０６】
上述の方法及び装置では、呼び出されたシェーダーは、既存のクエリに関連付けられたデータを最小単位で修正することができる。
【０１０７】
上述の方法及び装置では、呼び出されたシェーダーは、既存のクエリの横断を再開することができる。
【０１０８】
上述の方法及び装置では、クエリは光線を含むことができ、結果は光線の起点に最も近い光線によって交差される三角形を含むことができる。
【０１０９】
上述の方法及び装置では、クエリは光線を含むことができ、クエリ結果は、ボックス、球体、三角形、面、容積のいずれかとすることができる。
【０１１０】
上述の方法及び装置では、クエリは、点から外に向う放射検索を含むことができる。
【０１１１】
上述の方法及び装置では、クエリは容積を含むことができ、結果は点を含むことができる。
【０１１２】
上述の方法及び装置では、横断処理は、部分的に幅優先である。
【０１１３】
上述の方法及び装置では、横断処理は、シェーダー実行に対して非同期である。
【０１１４】
上述の方法及び装置では、クエリによって呼び出されるシェーダープログラムが最初に待ち行列に入れられ、与えられたクエリによって待ち行列に入れられた１つのシェーダーだけを同時に実行することができる。
【０１１５】
上述の方法及び装置では、シェーダー呼び出しは、適切性に関する判断条件に基づいて順序付けされる。
【０１１６】
上述の方法及び装置では、適切性の条件は、クエリの発生点からの距離を含むことができる。
【０１１７】
上述の方法及び装置では、クエリは、クエリに関する待ち行列に入れられたシェーダーの数を追跡するためにリファレンスカウンタを維持する。
【０１１８】
上述の方法及び装置では、クエリは、試験を必要とする加速構造のノードの数を追跡するためにリファレンスカウンタを維持する。
【０１１９】
上述の方法及び装置では、シェーダーは、クエリに関連付けられたリファレンスカウンタを修正するように作動可能である。
【０１２０】
上述のグラフィックス処理システム３００は、例えば、移動電話又はタブレットのようなデバイス内のコンピュータシステムに実施することができる。例えば、図１６は、ＣＰＵ１６０２、ＧＰＵ１６０４、及びメモリ１６０６を含むコンピュータシステムを示し、メモリ１６０６は、階層ストア３１０及び累積バッファ３１２を含む上述のメモリ３０８を含むことができる。コンピュータシステム１６００はまた、ディスプレイ１６１０及びスピーカ１６１２のような他のデバイス１６０８を含む。コンピュータシステム１６００の構成要素は、通信バス１６１４を通じて互いに通信することができる。１つのアプリケーションのためのコンピュータプログラムコードは、メモリ１６０６に格納することができ、例えば、ＣＰＵ１６０２で実行することができる。アプリケーションが３Ｄシーンの画像のレンダリングを必要とする場合に、プリミティブをＧＰＵ１６０４に送信することができ、ＧＰＵ１６０４がグラフィックス処理システム３００を使用して上述したようにシーンをレンダリングすることができる。
【０１２１】
上述の実施例では、階層処理モジュール３０２は、モジュール３０２の処理電力、時間、及びシリコン面積の点から階層を効率良く生成及び／又は融合することができるようにハードウエアに実施される。しかし、一般的に、上述の機能、方法、技術、又は構成要素（例えば、階層処理モジュール３０２及びその構成要素）のいずれも、ソフトウエア、ファームウエア、ハードウエア（例えば、固定論理回路）、又はこれらの実施のいずれの組合せも使用してモジュールに実施することができる。「モジュール」、「機能」、「構成要素」、「ブロック」、「ユニット」、及び「論理部」という語は、ソフトウエア、ファームウエア、ハードウエア、又はこれらのあらゆる組合せを一般的に表すのに使用される。本明細書に説明する階層処理モジュールは、集積回路のハードウエアに実施することができる。本明細書に説明する階層処理モジュールは、本明細書に説明する方法のいずれも実行するように構成することができる。
【０１２２】
図に示す階層処理モジュールは、いくつかの機能ブロックを含むように示されている。これは単に概略であり、そのようなエンティティの異なる論理要素間の厳密な分割を定めるように意図していない。各機能ブロックは、あらゆる適切な方法で提供することができる。階層処理モジュールによって形成される本明細書に説明する中間値は、あらゆる点で階層処理モジュールによって物理的に生成する必要はなく、単に入力と出力間で階層処理モジュールによって実行される処理を便宜上説明する論理値を表すことができることは理解されるものとする。
【０１２３】
階層処理モジュール３０２のソフトウエア実施の場合に、本明細書に実施されるユニット及びモジュールは、プロセッサで実行された時に指定されたタスクを実行するプログラムコードを表している。一例では、システム３００のユニット及びモジュールは、コンピュータ可読媒体に格納された機械可読形態のソフトウエアによって構成されたコンピュータによって実施することができる。コンピュータ可読媒体の１つのそのような構成は、信号担持媒体であり、従って、ネットワークなどを通じてコンピュータデバイスに命令を送信するように構成される（例えば、搬送波として）。コンピュータ可読媒体は、非一時的コンピュータ可読ストレージ媒体としても構成することができ、従って、信号担持媒体ではない。コンピュータ可読ストレージ媒体の例には、ランダムアクセスメモリ（ＲＡＭ）、読取専用メモリ（ＲＯＭ）、光学ディスク、フラッシュメモリ、ハードディスクメモリ、及び磁気、光学などの技術を使用することができる他のメモリデバイスが含まれ、命令又は他のデータを格納して、機械によってアクセス可能である。
【０１２４】
ソフトウエアは、説明した方法の構成部分を実行するようにコンピュータを構成するためのコンピュータプログラムコードを含むコンピュータプログラムの形態、又はプログラムがコンピュータで実行された時にかつコンピュータプログラムをコンピュータ可読媒体に実施することができる場合に本明細書に説明する方法のいずれの段階も全て実行するように適応されたコンピュータプログラムコード手段を含むコンピュータプログラムの形態とすることができる。プログラムコードは、１又は２以上のコンピュータ可読媒体に格納することができる。本明細書に説明する技術の特徴は、プラットフォーム独立型であり、この技術を異なるプロセッサを有する異なるコンピュータプラットフォームに実施することができることを意味する。
【０１２５】
当業者は、本明細書に説明する機能、技術、又は方法の全て又は一部分を専用回路、特定用途向け集積回路、プログラマブル論理アレイ、フィールドプログラマブルゲートアレイなどによって実行することができることを認めるであろう。例えば、モジュール、機能、構成要素、ユニット、又は論理部（例えば、階層処理モジュール３０２及びその構成要素）は、回路の形態のハードウエアを含むことができる。そのような回路は、製造工程で利用可能なトランジスタ及び／又は他のハードウエア要素を含むことができる。そのようなトランジスタ及び／又は他の要素を使用して、一例として、レジスタのようなメモリ、フリップフロップ、又はラッチ、ブール演算、加算器、乗算器、又はシフタのような数値演算子のような論理演算子、及び相互接続を実施及び／又は含有する回路又は構造を形成することができる。そのような要素は、カスタム回路又は標準セルライブラリ、マクロ、又は他のレベルのアブストラクションとして提供することができる。そのような要素は、特定の配列で相互接続することができる。モジュール、機能、構成要素、ユニット、又は論理部（例えば、階層処理モジュール３０２及びその構成要素）は、固定機能である回路及び１又は複数の機能を実行するようにプログラムすることができる回路を含むことができ、そのようなプログラミングは、ファームウエア又はソフトウエア更新又は制御機構から提供することができる。一例では、ハードウエア論理部は、固定機能作動、状態機械又は処理を実施する回路を有する。
【０１２６】
望ましい機能を実行するために集積回路を設計するのに又はプログラマブルチップを構成するのに使用される場合に、ＨＤＬ（ハードウエア記述言語）ソフトウエアのような本明細書に説明するハードウエアの構成を定めるソフトウエアを収容することも意図される。すなわち、集積回路製造システム内で処理された時に本明細書に説明する方法のいずれかを実行するように構成された階層融合モジュールを製造するように、又は本明細書に説明するあらゆる装置を含む階層融合モジュールを製造するようにシステムを構成する集積回路定義データセットの形態にコンピュータ可読プログラムコードが符号化されたコンピュータ可読ストレージ媒体を提供することができる。集積回路定義データセットは、例えば、集積回路記述とすることができる。
【０１２７】
集積回路定義データセットは、例えば、ネットリスト、レジスタ転送レベル（ＲＴＬ）コードとして、Ｖｅｒｉｌｏｇ又はＶＨＤＬのようなハイレベル回路表現として、及びＯＡＳＩＳ（ＲＴＭ）及びＧＤＳＩＩのようなより低いレベル回路表現として含むあらゆるレベルの集積回路を定めるハードウエア記述言語としてプログラマブルチップを構成するためのコードとしてのコンピュータコードの形態とすることができる。表現によって定義されるように集積回路の製造定義を生成するために、論理的に集積回路（ＲＴＬなど）を定めるハイレベル表現は、回路要素の定義及びこれらの要素を結合するための規則を含むソフトウエア環境の関連で集積回路の製造定義を生成するように構成されたコンピュータシステム内で処理することができる。機械を定めるためにコンピュータシステム内で実行するソフトウエアを備えた場合に一般的であるように、１又は２以上の中間ユーザ段階（例えば、指令、変数などを提供）をこの集積回路の製造定義を生成するために集積回路を定めるコードを実行するための集積回路の製造定義を生成するように構成されたコンピュータシステムに対して要求することができる。
【０１２８】
階層融合モジュールを製造するように本発明のシステムを構成するために集積回路製造システム内で集積回路定義データセットを処理する実施例を図１７に関してここで説明する。
【０１２９】
図１７は、レイアウト処理システム１７０４及び集積回路発生システム１７０６を含む集積回路（ＩＣ）製造システム１７０２の実施例を示している。ＩＣ製造システム１７０２は、ＩＣ定義データセット（例えば、本明細書の実施例のいずれかで説明した階層融合モジュールを定める）を受信し、ＩＣ定義データセットを処理し、かつＩＣ定義データセットに従ってＩＣを発生させる（例えば、本明細書の実施例のいずれかに説明した階層融合モジュールを実施する）ように構成される。ＩＣ定義データセットの処理は、本明細書の実施例のいずれかで説明した階層融合モジュールを実施する集積回路を製造するようにＩＣ製造システム１７０２を構成する。
【０１３０】
レイアウト処理システム１７０４は、ＩＣ定義データセットを受信及び処理して回路レイアウトを決定するように構成される。ＩＣ定義データセットから回路レイアウトを決定する方法は、当業技術で公知であり、例えば、論理構成要素（例えば、ＮＡＮＤ、ＮＯＲ、ＡＮＤ、ＯＲ、ＭＵＸ、及びＦＬＩＰ−ＦＬＯＰ構成要素）の点で、発生される回路のゲートレベル表現を決定するためにＲＴＬコードを合成する段階を収容することができる。回路レイアウトは、論理構成要素の位置情報を決定することによって回路のゲートレベル表現から決定することができる。これは、回路レイアウトを最適化するために自動的に又はユーザの介入により実行することができる。レイアウト処理システム８０４が回路レイアウトを決定した時に、レイアウト処理システム１７０４は、回路レイアウト定義をＩＣ発生システム１７０６に出力することができる。回路レイアウト定義は、例えば、回路レイアウト記述とすることができる。
【０１３１】
ＩＣ発生システム１７０６は、当業技術で公知のように回路レイアウト定義に従ってＩＣを発生させる。例えば、ＩＣ発生システム１７０６は、ＩＣを発生させるための半導体素子製造工程を実施することができ、半導体素子製造工程は、半導体材料から構築されたウェーハに電子回路が徐々に生成されていく過程のリソグラフィック及び化学的処理段階の複数段階シーケンスを収容することができる。回路レイアウト定義は、回路定義に従ってＩＣを発生させるためのリソグラフィック処理に使用することができるマスクの形態とすることができる。これに代えて、ＩＣ発生システム１７０６に提供される回路レイアウト定義は、ＩＣを発生させる場合に使用する適切なマスクを形成するためにＩＣ発生システム１７０６を使用することができるコンピュータ可読コードの形態とすることができる。
【０１３２】
ＩＣ製造システム１７０２によって実行される異なる処理は、１つの位置で例えば１つの当事者によって全てを実施することができる。これに代えて、ＩＣ製造システム１７０２は、処理の一部が異なる位置で実行することができるように分散システムとすることができ、異なる当事者によって実行することができる。例えば、（ｉ）発生される回路のゲートレベル表現を形成するためにＩＣ定義データセットを表すＲＴＬコードを合成する段階、（ｉｉ）ゲートレベル表現に基づいて回路レイアウトを発生させる段階、（ｉｉｉ）回路レイアウトに従ってマスクを形成する段階、及び（ｉｖ）マスクを使用して集積回路を製造する段階の一部は、異なる位置で及び／又は異なる当事者によって実行することができる。
【０１３３】
他の実施例では、集積回路製造システムにおける集積回路定義データセットの処理が、回路レイアウトを決定するためにＩＣ定義データセットを処理する必要なく階層融合モジュールを製造するように本発明のシステムを構成することができる。例えば、集積回路定義データセットは、ＦＰＧＡのような再構成可能プロセッサの構成を定めることができ、このデータセットの処理は、この定義された構成を有する再構成可能プロセッサを生成するように（例えば、ＦＰＧＡに構成データをロードすることにより）ＩＣ製造システムを構成することができる。
【０１３４】
一部の実施形態において、集積回路製造定義データセットが、集積回路製造システム内で処理された時に、集積回路製造システムに本明細書に説明したデバイスを発生させることができる。例えば、集積回路製造定義データセットによる図１７に関して上述した方法での集積回路製造システムの構成は、本明細書に説明したデバイスを製造させることができる。
【０１３５】
一部の実施例では、集積回路定義データセットは、データセットで定義されたハードウエア、又はデータセットで定義されたハードウエアと組み合わせて実行されるソフトウエアを含むことができる。図１７に示す実施例では、集積回路の製造段階で、集積回路定義データセットで定義されたプログラムコードに従ってこの集積回路にファームウエアをロードするか、又は他に集積回路と共に使用するプログラムコードを集積回路に提供するようにＩＣ発生システムを集積回路定義データセットによって更に構成することができる。
【０１３６】
用語「プロセッサ」及び「コンピュータ」は、命令を実行することができるような処理機能を備えたあらゆるデバイス又はその部分、又は機能又は方法の全て又は一部を実行することができる専用回路、又はそのあらゆる組合せを指すために本明細書に使用される。
【０１３７】
本発明の主題は、構造的特徴及び／又は方法論的行為に固有の言語で説明したが、特許請求の範囲で定義される主題は、必ずしも上述の特定の特徴又は行為に限定されないことは理解されるものとする。逆に、上述の特定の特徴及び行為は、特許請求の範囲を実施する例示的形態として開示している。上述の利益及び利点は、一例に関連付けることができ、又はいくつかの例に関連付けることができることは理解されるであろう。
【０１３８】
本明細書に与えられるあらゆる範囲又は値は、当業者に明らかなように求められる効果を失うことなく拡張又は変更することができる。本明細書に説明する方法の段階は、あらゆる適切な順序で又は必要に応じて同時に実行することができる。上述の実施例のいずれの態様も、求められる効果を失うことなく更に別の実施例を形成するために説明した他の例のいずれの態様とも組み合わせることができる。
【符号の説明】
【０１３９】
３００  グラフィックス処理システム
３０２  階層処理モジュール
３０６  シェーダー
３０８  メモリ
５０４  階層融合ユニット
【図１】
2017188098.tif 000003
【図２】
2017188098.tif 000004
【図３】
2017188098.tif 000005
【図４】
2017188098.tif 000006
【図５】
2017188098.tif 000007
【図６】
2017188098.tif 000008
【図７】
2017188098.tif 000009
【図８】
2017188098.tif 000010
【図９ａ】
2017188098.tif 000011
【図９ｂ】
2017188098.tif 000012
【図１０】
2017188098.tif 000013
【図１１】
2017188098.tif 000014
【図１２ａ】
2017188098.tif 000015
【図１２ｂ】
2017188098.tif 000016
【図１３】
2017188098.tif 000017
【図１４】
2017188098.tif 000018
【図１５】
2017188098.tif 000019
【図１６】
2017188098.tif 000020
【図１７】
2017188098.tif 000021
【外国語明細書】
2017188098000001.pdf