レイトレーシングコア及びこれを含むレイトレーシングチップ
【課題】
【解決手段】 レイトレーシングコアは、スクリーン座標値を含むアイレイの生成情報に基づいて少なくとも1つのアイレイを生成するレイ生成部及び前記少なくとも1つのアイレイをそれぞれ入力され、加速構造において前記入力されたアイレイと交差する三角形があるか否かをそれぞれチェックするMIMD構造を持つ複数のT&I部を含む。レイトレーシングコアはレイトレーシングの効率的処理のためのMIMD並列構造を支援することができる。
【解決手段】 レイトレーシングコアは、スクリーン座標値を含むアイレイの生成情報に基づいて少なくとも1つのアイレイを生成するレイ生成部及び前記少なくとも1つのアイレイをそれぞれ入力され、加速構造において前記入力されたアイレイと交差する三角形があるか否かをそれぞれチェックするMIMD構造を持つ複数のT&I部を含む。レイトレーシングコアはレイトレーシングの効率的処理のためのMIMD並列構造を支援することができる。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は3Dグラフィック処理に係り、特にレイトレーシングコア及びこれを含むレイトレーシングチップに関するのである。
【背景技術】
【0002】
3次元グラフィック技術はコンピュータに格納された幾何学的データ(geometric data)の3次元表現を使うグラフィック技術で、今日メディア産業とゲーム産業を含む多様な産業で広く使われている。一般に、3次元グラフィック技術は多くの演算量によって別個の高性能グラフィックプロセッサを要求する。
【0003】
特に、近年プロセッサの発展によって非常に現実的な3次元グラフィックを生成することができるレイトレーシング(ray tracing)技術が研究されている。特に、レイトレーシング技術は、反射、屈折、陰影を含む多様な光効果(optical effects)をシミュレーションすることができる。
【図面の簡単な説明】
【0004】
【図1】本発明の一実施例によるレイトレーシングコア(ray tracing core)を説明するブロック図である。
【図2】レイトレーシング過程を説明するための図である。
【図3】レイトレーシング過程を説明するための図である。
【図4】図1のセットアッププロセッシング部によるブロック基盤のレイの生成手順とこれを具現するハードウェアを説明するための図である。
【図5】図1の複数のT&I部を説明するためのブロック図である。
【図6】図5のT&Iパイプライン部を説明するための図である。
【図7】図5のT&Iパイプライン部を説明するための図である。
【図8】図1のT&I部のメモリシステムを説明するための図である。
【図9】図1のレイトレーシングチップで使われる加速構造と幾何学的データを説明するための図である。
【図10】図1のレイトレーシングコアが含まれたレイトレーシングボード(ray tracing board)を説明する図である。
【発明を実施するための形態】
【0005】
実施例において、レイトレーシングコア(Ray tracing core)はスクリーン座標値を含むアイレイの生成情報に基づいて少なくとも1つのアイレイを生成するレイ生成部及び前記少なくとも1つのアイレイをそれぞれ入力され、加速構造(AS;Accelaration Structure)において前記入力されたアイレイと交差する三角形(前記三角形は空間を構成する)があるか否かをそれぞれチェックするMIMD構造(Multiple Instruction stream Multiple Data stream Architecture)を持つ複数のT&I部(a plurality of Traversal & Intersection Units)を含む。
【0006】
実施例において、レイトレーシングコア(Ray tracing core)はアイレイの生成情報(eye ray generation information)またはシェーディング情報(shading information)(レイ−三角形ヒットポイントの座標値とカラー値及びシェーディングレイタイプを含む)の1つをマルチプレックシングするセットアッププロセッシング部、前記アイレイの生成情報またはシェーディング情報に基づいて少なくとも1つのアイレイまたはシェーディングレイを生成するかあるいは最終カラー値を決定するレイ生成部、及びMIMD構造(Multiple Instruction stream Multiple Data stream Architecture)を採択し、加速構造(AS;Acceleration Structure)において前記生成された少なくとも1つのアイレイまたはシェーディングレイと交差する三角形(前記三角形は空間を構成する)をそれぞれ決定する複数のT&I部(a plurality of Traversal & Intersection Units)を含む。
【0007】
実施例において、レイトレーシングチップ(ray tracing chip)は、複数のレイトレーシングコア、前記複数のレイトレーシングコアの中で適切なレイトレーシングコアにイメージの一部ブロックを割り当てるXY生成器、及び前記複数のレイトレーシングコアのそれぞれから出力された最終カラー値を格納するメモリを含む。前記複数のレイトレーシングコアのそれぞれは、スクリーン座標値を含むアイレイの生成情報に基づいて少なくとも1つのアイレイを生成するレイ生成部、及び前記少なくとも1つのアイレイをそれぞれ入力され、加速構造(AS;Accelaration Structure)において前記入力されたアイレイと交差する三角形(前記三角形は空間を構成する)があるか否かをそれぞれチェックするMIMD構造(Multiple Instruction stream Multiple Data stream Architecture)を持つ複数のT&I部(a plurality of Traversal & Intersection Units)を含む。
【0008】
実施例において、レイトレーシングチップ(ray tracing chip)は、複数のレイトレーシングコア、前記複数のレイトレーシングコアの中で適切なレイトレーシングコアにイメージの一部ブロックを割り当てるXY生成器、及び前記複数のレイトレーシングコアのそれぞれから出力された最終カラー値を格納するメモリを含む。前記複数のレイトレーシングコアのそれぞれは、アイレイの生成情報(eye ray generation information)またはシェーディング情報(shading information)(レイ−三角形ヒットポイントの座標値とカラー値及びシェーディングレイタイプを含む)の1つをマルチプレックシングするセットアッププロセッシング部、前記アイレイの生成情報またはシェーディング情報に基づいて少なくとも1つのアイレイまたはシェーディングレイを生成するかまたは最終カラー値を決定するレイ生成部、及びMIMD構造(Multiple Instruction stream Multiple Data stream Architecture)を採択し、加速構造(AS;Acceleration Structure)において前記生成された少なくとも1つのアイレイまたはシェーディングレイと交差する三角形(前記三角形は空間を構成する)をそれぞれ決定する複数のT&I部(a plurality of Traversal & Intersection Units)を含む。
【0009】
本発明についての説明は構造的ないし機能的説明のための実施例に過ぎないので、本発明の権利範囲はこの明細書に説明された実施例によって制限されるものに解釈されてはいけない。すなわち、実施例は多様な変更が可能であり、さまざまな形態を持つことができるので、本発明の権利範囲は技術的思想を実現することができる均等物を含むものに理解されなければならない。
【0010】
一方、本明細書に敍述される用語の意味は次のように理解されるべきであろう。
【0011】
“第1”、“第2”などの用語は一構成要素を他の構成要素から区別するためのもので、これら用語によって権利範囲が限定されてはいけない。例えば、第1構成要素は第2構成要素に命名されることができ、同様に第2構成要素も第1構成要素に命名されることができる。
【0012】
“及び/または”の用語は1つ以上の関連項目から提示可能なすべての組合せを含むものに理解されなければならない。例えば、“第1項目、第2項目及び/または第3項目”の意味は第1、第2または第3項目だけでなく、第1項目、第2項目または第3項目の中で2個以上から提示可能なすべての項目の組合せを意味する。
【0013】
ある構成要素が他の構成要素に“連結されて”いると言及されたときには、その他の構成要素に直接連結されることもできるが、中間に他の構成要素が存在することもできると理解されなければならないであろう。一方、ある構成要素が他の構成要素に“直接連結されて”いると言及されたときには、中間に他の構成要素が存在しないものに理解されなければならないであろう。一方、構成要素間の関係を説明する他の表現、つまり“〜の間に”と“すぐ〜の間に”または“〜に隣り合う”と“〜に直接隣り合う”なども同様に解釈されなければならない。
【0014】
単数の表現は文脈上明白に異なるように意味しない限り複数の表現を含むものに理解されなければならなく、“含む”または“持つ”などの用語は説示された特徴、数字、段階、動作、構成要素、部分品またはこれらを組み合わせたものが存在することを指定しようとするものであるばかり、1つまたはそれ以上の他の特徴、あるいは数字、段階、動作、構成要素、部分品またはこれらを組み合わせたものなどの存在または付加可能性を予め排除しないものに理解されなければならない。
【0015】
各段階は文脈上明白に特定の手順を記載しない限り、明記された手順とは異なるように起こることができる。すなわち、各段階は明記された手順と同様に起こることもでき、実質的に同時に遂行されることもでき、反対の順に遂行されることもできる。
【0016】
ここで使われるすべての用語は他の意味に定義されない限り、本発明が属する分野で通常の知識を持った者によって一般的に理解されるものと同一意味を持つ。一般的に使われる前もって定義されている用語は関連技術の文脈で有する意味と一致するものに解釈されなければならなく、本明細書で明白に定義しない限り、理想的にあるいは過度に形式的な意味を持つものに解釈されることができない。
【0017】
図1は本発明の一実施例によるレイトレーシングコア(ray tracing core)を説明するブロック図である。
【0018】
図1を参照すれば、レイトレーシングコア100は、データパス部(data pathpart)とメモリシステム部(memory system part)に大別される。一実施例において、レイトレーシングコア100はグラフィックプロセッサのようなチップに含まれることができ、他の一実施例において、レイトレーシングコア100は単一チップとして具現されることができる。
【0019】
データパス部は、セットアッププロセッシング部(setup processing unit)110、レイ生成部(ray generation unit)120、複数のT&I部(Traversal & Intersection Unit)130、ヒットポイント計算部(Hit Point Calculation Unit)140、シェーディング部(Shading Unit)150及び制御部160を含む。メモリシステム部は、レジスタ(Register)165、L1キャッシュ(Cache)170、L2キャッシュ175、キャッシュ180、バッファ(Buffer)185、スタック190、及びメモリ(Memory)195を含む。便宜上、図1のメモリシステム部の構成要素のそれぞれは別に具現されるものとして説明したが、必要によって構成要素の中で少なくとも一部は物理的に同等なメモリで具現できる。
【0020】
また、レイトレーシングチップ100は外部メモリ(External Memory)1000と連結されることができ、外部メモリ1000は加速構造(AS;Acceleration Structure)格納部1100、幾何学的データ(Geometry Data)格納部1200、テクスチャイメージ(Texture Image)格納部1300、及びフレーム(Frame)格納部1400を含む。
【0021】
加速構造(AS)はレイトレーシングに一般的に使われるkd−tree(k−depth tree)またはBVH(Bounding Volume Hierarchy)を含み、幾何学的データはレイトレーシングのための三角形に関する情報(以下、三角形情報)を含む。一実施例において、三角形情報は三角形の三点に対するテクスチャ座標(texture coordinate)と法線ベクトル(normal vector)を含むことができる。
【0022】
図9は図1のレイトレーシングチップで使われる加速構造と幾何学的データの関係を説明するための図である。
【0023】
図9において、加速構造(AS)はkd−treeを使うと仮定した。kd−treeは空間分割ツリー(spatial partitioning tree)の一種で、レイ−三角形交差テスト(Ray−Triangle Intersection Test)のために使われる。kd−treeはボックスノード(Box Node)910、内部ノード(Inner Node)920、及びリーフノード(leaf node)930を含み、リーフノード930は幾何学的データに含まれた少なくとも1つの三角形情報をポインティングするための三角形リストを含む。一実施例において、幾何学的データに含まれた三角形情報が配列で具現された場合には、リーフノード930に含まれた三角形リストは配列インデックスに相応することができる。
【0024】
図2及び図3はレイトレーシング過程を説明するための図である。図1〜図3を参照してレイトレーシングコア100の全体的な動作を説明する。
【0025】
セットアッププロセッシング部110はアイレイの生成情報(eye ray generation information)を準備し、準備されたアイレイの生成情報とシェーディング部150から出力されたシェーディング情報を選択する。アイレイの生成情報はアイレイの生成のためのスクリーン座標値を含む。シェーディング情報(shading information)はスクリーン座標値を求めるためのレイインデックス(後述する)、レイ−三角形ヒットポイント(ray−triangle hit point)(後述する)の座標値とカラー値、及びシェーディングレイタイプを含み、シェーディングレイタイプによる付加情報をさらに含むことができる。シェーディングレイ(shading ray)はシャドーレイ(shadow ray)、派生レイ(secondary ray)またはナルレイ(NULL ray)を含み、派生レイは屈折レイ(refraction ray)または反射レイ(reflection ray)を含む。屈折レイの場合、付加情報はレイ−三角形ヒットポイントの屈折率を含み、反射レイの場合、付加情報はレイ−三角形ヒットポイントの反射率をさらに含む。セットアッププロセッシング部110の動作方式は図4を参照して後述する。
【0026】
レイ生成部120はアイレイの生成情報またはシェーディング情報に基づいて少なくとも1つのレイを生成することができる(段階S310またはS340)。図2に示すように、少なくとも1つのレイはアイレイE、シャドーレイS、屈折レイF、及び/または反射レイRを含むことができる。生成された派生レイの個数が2以上の場合には、1つはT&I部130に出力され、残りは派生レイスタック190に格納される。派生レイの場合、レイ生成部120は反射レイRのヒットポイントまたは屈折レイFのヒットポイントを考慮する必要があるからである。例えば、反射レイFと屈折レイRの両方が生成される場合には、反射レイFはT&I部130に出力されることができ、屈折レイRは派生レイスタック190に格納されることができる。
【0027】
シェーディングレイタイプがナルレイに相応する場合には、レイ生成部120は派生レイスタック190に格納された派生レイを取り入れ、取り出された派生レイをT&I部130に出力する。シェーディングレイスタック190が空いている場合には、レイ生成部120はレイインデックス(後述する)に基づいてスクリーン座標値を収得し、スクリーン座標値とレイ−三角形ヒットポイント(後述する)のカラー値に基づいて最終カラー値をカラーバッファ185cに使う。
【0028】
複数のT&I部130は並列のMIMD(Multiple Instruction stream Multiple Data stream)構造を採択し、複数のT&I部130のそれぞれはレイ生成部120から生成されたレイ(アイレイ、シャドーレイまたは派生レイ)を入力され、加速構造(AS;Accelaration Structure)においてレイと交差する三角形があるか否かをチェックする。すなわち、複数のT&I部130のそれぞれは加速構造(AS)を訪問(traverse)し、三角形(triangles)に対する交差テスティング(intersection testing)を遂行する。複数のT&I部130の動作方式は図5〜図11を参照して後述する。
【0029】
ヒットポイント計算部140は交差する三角形(intersected triangle)に対してレイ−三角形ヒットポイント(ray−triangle hit point)(つまり、交差する三角形においてレイがヒットされるポイント)の座標値を計算し、シェーディング部150はレイ−三角形ヒットポイントに対してカラー値を計算する。一実施例において、シェーディング部150はレイ−三角形ヒットポイントに対するカラー値を得るためにフォーン照明(phong illumination)とテクスチャマッピング(texture mapping)を遂行することができる(段階S340)。また、シェーディング部150はレイ生成部120による最終カラー値の決定またはシェーディングレイの生成のためのシェーディング情報を生成し、シェーディング情報をセットアッププロセッシング部110に伝送する。それ以上のレイの生成が必要でない場合には、シェーディングレイタイプはナルレイ(Null Ray)に相応することができる。一実施例において、シェーディング部150は物質メモリ195cに格納されたレイ−三角形ヒットポイントに関する物質情報に基づいて派生レイの生成を決定することができる。以下、データパスに含まれた構成要素のそれぞれを説明する。
【0030】
<パイプライン制御構造>
レイトレーシングアルゴリズムは再帰的に遂行され、(i)アイレイの生成過程(段階S310)、(ii)加速構造訪問(AS Traversal)過程(段階S320)、(iii)レイ−三角形交差テスト(ray−Triangle Intersection Test)過程(段階S330)、(iv)シェーディング及びシェーディングレイの生成過程(段階S340)を含む。したがって、レイトレーシングアルゴリズムは一般的なストリーミングパイプライン構造(streaming pipeline architecture)を使うことが適切でないこともある。
【0031】
本発明はレイトレーシングアルゴリズムに適切なパイプライン構造を導入し、制御部160はパイプライン(レジスタ)165のフラッグ(flag)を介してパイプラインの動作を制御する。すなわち、本発明は、パイプラインの効率を高めるために、フラッグ(flag)基盤の単純な制御構造を使う。一実施例において、パイプラインのレジスタ165のフラッグはオンまたはオフのための1ビット情報に相応することができ、フラッグがオンに相応する場合、レジスタ165は以前のステージで出力された情報を格納することができる。結果として、パイプラインはフラッグによって同期的(synchronous)に処理できるが、データパスを構成する構成要素のそれぞれは非動機的(asynchronous)に結果を出力することができる。
【0032】
必要によって、データパスを構成する構成要素のそれぞれはロード不均衡(load imbalance)による待機時間を減らすためにバッファ185を使うことができる。例えば、複数のT&I部130のそれぞれは性能向上とMIMD構造支援のためにバッファ185を使うことができる。
【0033】
<セットアッププロセッシング部110>
セットアッププロセッシング部110はアイレイの生成情報を初期化させる。初期化過程は、スクリーン座標値を決定し、決定されたスクリーン座標値をレイインデックスに変換する過程を含む。レイインデックスはパイプラインの各段階でレジスタ165のサイズを減少させるために使われる。セットアッププロセッシング部110はスクリーン座標値とレイインデックスをレイ生成部120に伝送する。
【0034】
セットアッププロセッシング部110はアイレイの生成情報またはシェーディング情報をマルチプレックシングする。一実施例において、シェーディング情報はアイレイの生成情報に対して優先権(priority)を持つことができる。以前のスクリーン座標値を持つピクセルで生成されたレイに対する処理が先に行われることが好ましいからである。
【0035】
図4は図1のセットアッププロセッシング部によるブロック基盤のレイの生成手順とこれを具現するハードウェアを説明するための図である。
【0036】
スクリーンは複数のm×n(mとnは偶数)ピクセルブロック(以下、スーパーブロック)を含み、各スーパーブロックは同じ大きさのN個(Nは複数のT&I部130の個数)のピクセルブロック(以下、サブブロック)を含む。
【0037】
セットアッププロセッシング部110は、複数のT&I部130mpそれぞれでキャッシュヒット率(cache hit rate)を増加させるために、スクリーンを複数のブロック(つまり、サブブロック)に分割し、各ブロック基盤のアイレイの生成手順を決定することができる。例えば、スクリーンは16×16ピクセルブロックでそれぞれ構成された複数のスーパーブロックを含むことができ、スーパーブロックのそれぞれは4個の8×8ピクセルブロックでそれぞれ構成されたサブブロックを含むことができる。第1〜第4ピクセルブロック410〜440のそれぞれは第1〜第4T&I部130a〜130dに割り当てられることができる。
【0038】
以下、第1サブブロック410は図4(b)に示す8×8ピクセルブロックに相応し、第1T&I部130aに割り当てられたと仮定する。
【0039】
セットアッププロセッシング部110は線形のn−ビットカウンター450を使って第1T&I部130aのキャッシュヒット率を増加させるためのレイの生成手順を決定することができる。線形のn−ビットカウンター450の第1グループ(第1グループは連続しない少なくとも1つのビットを含むことができる)はサブブロックのx座標値を示し、線形のn−ビットカウンター450の第2グループ(第2グループは第1グループに属したビットを含まなく、連続しない少なくとも1つのビットを含むことができる)はサブブロックのy座標値を示す。
【0040】
レイ生成部120は、図4(b)及び図4(c)に示すように、セットアッププロセッシング部110によって決定されたアイレイの生成手順にレイを生成する。一方、図4(b)に示すピクセル(例えば、ピクセル0)はレイの生成のためのピクセルを意味する。例えば、64個のピクセルの場合、セットアッププロセッシング部110は線形の6−ビットカウンター450を含むことができ、線形の6−ビットカウンター450の値I=i5i4i3i2i1ii0の場合には、ピクセルの座標(x,y)=(i5i3i1,i4i2i0)に相応することができる。すなわち、図4(c)の線形の6−ビットカウンター450はカウント数が増加するにつれて図4(b)のピクセル座標が易しくマッピングされるように具現される。
【0041】
<レイ生成部120>
レイ生成部120はセットアッププロセッシング部110から伝送されたスクリーン座標値とレイインデックスをレイインデックスマッピングテーブル(195a)に格納し、アイレイの生成情報またはシェーディング情報に基づいて少なくとも1つのレイを生成するかあるいは最終カラー値をカラーバッファ185aに格納する。
【0042】
アイレイの生成情報が入力された場合には、レイ生成部120はアイレイEを生成する。シェーディング情報が入力された場合には、レイ生成部120はシェーディングレイタイプによってシェーディングレイS、R、Fを生成し、シェーディングレイタイプがナルレイに相応する場合には、レイ生成部120は派生レイスタック190に格納された派生レイを取り入れる。派生レイスタック190が空いている場合には、レイ生成部120はレイインデックスに基づいてスクリーン座標値を求め、求められたスクリーン座標値とレイ−三角形ヒットポイント(後述する)のカラー値をカラーバッファ185cに格納する。以下、レイ生成部120がレイを生成する過程を説明する。
【0043】
アイレイの生成において、レイ生成部120はレイインデックスマッピングテーブル(195a)を用いてアイレイのスクリーン座標値を求め、スクリーン座標値に基づいてアイレイEを生成する。一般に、アイレイはスクリーン座標値とカメラ位置(つまり、アイ位置)に基づいて生成できる。レイ生成部120は複数のT&I部130の中で適切なT&I部(例えば、130a)に生成されたアイレイを割り当てる。
【0044】
シャドーレイの生成において、シェーディングレイタイプがシャドーレイに相応する場合には、レイ生成部120はレイ−三角形ヒットポイント(後述する)に基づいてシャドーレイを生成する。一般に、シャドーレイはスクリーン座標値と光位置(light position)に基づいて生成できる。一実施例において、演算量を減らすために、レイ生成部120は光源(light source)の数を制限することができる。
【0045】
派生レイの生成において、シェーディングレイタイプが派生レイに相応する場合には、レイ生成部120は少なくとも1つの派生レイ(つまり、屈折レイ及び/または反射レイ)を生成する。派生レイの個数が2以上の場合には、レイ生成部120は1つを除いた派生レイを派生レイスタック190に格納する。レイ生成部120は複数のT&I部130の中で適切なT&I部(例えば、130b)に格納されない派生レイを割り当てる。派生レイスタック190に格納された派生レイはスクリーン座標値、方向ベクトル値及びRGBに対する加重値を含むことができる。一実施例において、演算量を減らすために、レイ生成部120はレイ深さ(ray depth)を使って派生レイによる派生レイの無制限的な生成を防止することができる。
【0046】
ナルレイの生成において、シェーディングレイタイプがナルレイに相応する場合には、レイ生成部120は派生レイスタック190に格納された派生レイを取り入れた後、複数のT&I部130の中で適切なT&I部(例えば、130c)に取り入れた派生レイを割り当てる。派生レイスタック190が空いている場合には、レイ生成部120はレイインデックスに基づいてスクリーン座標値を求め、求められたスクリーン座標値とレイ−三角形ヒットポイント(後述する)のカラー値に基づいて最終カラー値をカラーバッファ185cに格納する。カラーバッファ185cに格納された最終カラー値は外部メモリ1000に格納される。
【0047】
<T&I部130>
複数のT&I部130は加速構造訪問(AS Traversal)過程(段階S320)とレイ−三角形交差テスト(ray−Triangle Intersection Test)過程を遂行する。
【0048】
図5は図1の複数のT&I部を説明するためのブロック図である。
【0049】
図5を参照すれば、複数のT&I部130のそれぞれはバッファ185、L1キャッシュ170及びT&Iパイプライン部(Traversal & Intersection Pipeline Unit)135を含む。
【0050】
複数のT&I部130はT&Iパイプライン部135が独立的に実行されるMIMD並列構造を採択する。周知のように、レイトレーシングアルゴリズムはMIMD並列構造に適合するように各レイを独立的に処理することができる。SIMD(Single Instruction stream Multiple Data stream)と比較し、MIMD並列構造はパイプラインをより効率よく使うことができる利点を持つ。
【0051】
複数のT&I部130のそれぞれは自体の入力バッファ185aと出力バッファ185bを含む。同一ピクセルから生成されたレイ(アイレイ及びシェーディングレイ)は同一T&I部130で処理されることが好ましいからである。また、複数のT&I部130のそれぞれは自体のL1キャッシュ170を含む。MIMD構造は効率的なキャッシュメモリを要求するからである。
【0052】
T&Iパイプライン部135は、(i)訪問(traversal)過程、(ii)三角形リスト取り入れ(triangle list fetch)過程、及び(iii)レイ−三角形交差テスト(ray−Triangle Intersection Test)過程を遂行する。加速構造(AS)はkd−treeに相応すると仮定した。
【0053】
訪問過程において、T&Iパイプライン部135は加速構造(AS)でノードを検索することで、レイと交差するリーフノード(leaf node)を捜す。加速構造(AS)の訪問アルゴリズムは当業者によく知られているので、これについての説明は省略する。三角形リスト取り入れ過程で、T&Iパイプライン部135は交差するリーフノードに含まれた三角形リストを読み取る。レイ−三角形交差テスト過程で、T&Iパイプライン部135は三角形リストの座標情報を読み取り、与えられたレイに対して交差テストを遂行する。
【0054】
図6及び図7は図5のT&Iパイプライン部を説明するための図である。
【0055】
[SCHMITTLER,J., WALD,I., AND SLUSALLEK P. 2002. Saarcor:a hardware architecture for ray tracing. In Proceedings of the SIGGRAPH/EUROGRAPHICS conference on Graphics Hardware](以下、参照文献1)と[SCHMITTLER, J., WOOP, S., WAGNER, D., PAUL, W. J., AND SLUSALLEK, P., 2004. Realtime ray tracing of dynamic scenes on an FPGA chip. In Proceedings of the SIGGRAPH/EUROGRAPHICS conference on Graphics Hardware](以下、参照文献2)にあるレイトレーシング構造は訪問(traversal)と交差テスト(intersection test)のために別個のハードウェアを使う。しかし、図5のT&Iパイプライン部135は訪問(traversal)と交差テスト(intersectiontest)の間のロード不均衡(load imbalance)を引き起こさず、加速構造(AS)を効率よく支援するように統合されたパイプライン構造を採択した。すなわち、図7のT&Iパイプライン部135は訪問(traversal)と交差テスト(intersection test)の各段階で同一ハードウェアを使うことができる。以下、前記参照文献1と参照文献2との相違点を主に説明する。
【0056】
図6及び図7において、加速構造(AS)はkd−treeに相応すると仮定した。図6はT&Iパイプライン部135で行われる訪問過程及びレイ−三角形交差テスト過程で使われる演算器と演算器の個数を説明する。訪問過程は大別してレイ−ボックス交差テスト(Ray−Box Intersection Test)と訪問(Traversal)を含む。図9において、kd−treeのトップノード910はBoxノードに相応するからである。パイプライン制御部710はT&Iパイプライン部135内のパイプラインを制御する。
【0057】
レイ−ボックス交差テスト、訪問及びレイ−三角形交差テストにおける演算過程はMOLLER, T., AND TRUMBORE, B. 1997 Fast, minimum storage ray−triangle intersection, Journal of Graphics Toolsによく開示されているので、これについての説明は省略する。
【0058】
図6に示すように、レイ−ボックス交差テストで順次必要な演算器は6個のフローティングポイント加算器(FADD, Floating Point Adder)、6個のフローティングポイント乗算器(FMUL, Floating Point Multiplier)、3個の第1フローティングポイント比較器(FCOMP, Floating Point Comparator)、2個の第2フローティングポイント比較器(FCOMP)、及び1個の第3フローティングポイント比較器(FCOMP)を含む。
【0059】
図6に示すように、訪問において順次必要な演算器は1個のフローティングポイント加算器(FADD)、1個のフローティングポイント乗算器(FMUL)、及び2個のフローティングポイント比較器(FCOMP)を含む。また、訪問において順次必要な演算はスタックメモリ(185d)へのスタック書き込み及びスタック読み取りを含む。
【0060】
図6に示すように、レイ−三角形交差テストで順次必要な演算器は、9個の第1フローティングポイント加算器(FADD)、12個の第1フローティングポイント乗算器(FMUL)、6個の第2フローティングポイント加算器(FADD)、12個の第2フローティングポイント乗算器(FMUL)、4個のトリプル入力フローティングポイント加算器(TFADD, Tripple Input FADD)、1個のフローティングポイント加算器(FADD)、フローティングポイント除算器(FDIV)、及び2個のフローティングポイント比較器(FCOMP)を含む。レイ−三角形交差テストは与えられたレイによって交差する最も近接した三角形と目の位置(またはカメラの位置)との交差点の間の距離を計算する。交差した三角形が存在する場合には、交差した三角形に関する情報はヒットポイント計算部140に伝送され、そうではない場合には、次の訪問段階が遂行される。一実施例において、レイ−三角形交差テストはMOLLER, T., AND TRUMBORE, B. 1997. Fast, minimum storage ray−triangle intersection. Journal of Graphics Toolsに開示されたアルゴリズムを用いることができる。
【0061】
図7は訪問過程、三角形リスト取り入れ過程及びレイ−三角形交差テスト過程を遂行するためのT&Iパイプライン部135の構成を説明する。図7のT&Iパイプライン部135は統合された1つのパイプラインを使って図6のパイプラインの順に訪問過程、三角形取り入れ過程及びレイ−三角形交差テスト過程を遂行するようにパイプラインを構成する。すなわち、図7の710に含まれたパイプライン段階は訪問過程及びレイ−三角形交差テスト過程を遂行し、その以外の段階はキャッシュ接近または三角形リスト取り入れ段階を遂行する。図7に示すように、本発明は動作モードによって別個のハードウェアを使わずに統合されたパイプライン構造を採択する。
【0062】
<T&I部130のメモリシステム>
図8は図1のT&I部のメモリシステムを説明するための図である。
【0063】
T&I部130においてメモリ接近はレイトレーシングでの全体メモリ接近の絶対的多数を占めるので、T&I部130のメモリシステムは効率よくデザインされる必要がある。図1及び図5に示すように、複数のT&I部130のそれぞれは3個のL1キャッシュを含み、共通のL2キャッシュを使う。キャッシュメモリの二重構造(two−level hierarchy)にもかかわらず、キャッシュミス(cache miss)によるパイプラインストール時間(pipeline stall time)は依然として大きい。したがって、本発明はこれを解決するために次の2方案を使う。
【0064】
第1方案はL1キャッシュミスに関するもので、L1キャッシュミスが発生した場合、L1キャッシュミスが次のループで解決されるように、L1キャッシュミスをストール(stall)なしに飛ばすものである。図5において、パイプラインP1でキャッシュミスが発生した場合、パイプライン制御部710は次の段階のパイプラインP2にストールなしに続いて進む。キャッシュ制御部(図示せず)は、パイプラインP1の再処理のために、L2キャッシュ175または外部メモリ1000からミスされたデータを取り入れる。パイプラインP18の後にさらにパイプラインP1が再び進めば、L1キャッシュに対する接近が発生する。キャッシュミスが解決されれば、パイプライン制御部710は次の段階のパイプラインP2を正常に処理し、キャッシュミスがまた発生すれば、パイプライン制御部710はキャッシュミスが解決されるまで前記過程を繰り返す。結果として、キャッシュミスによるキャッシュミスペナルティはよほど緩和できる。
【0065】
第2方案はL2キャッシュミスに関するもので、L2キャッシュミスが発生した場合、L2キャッシュミスをストールなしに飛ばすものである。現在のレイに対してL1キャッシュミスが発生した場合には、L2キャッシュ接近のための要求がL1 Addr FIFO810に入力される。L1 Addr FIFO810にある現在レイの要求によるL2キャッシュ接近がキャッシュヒットであると結論付けられれば、要求に対する住所とデータはL1 Addr/Data FIFO820に入力される。そうではない場合には、外部メモリ1000に対する他の要求がL2 Addr FIFO810に入力され、L1 Addr FIFO610にある現在レイの要求は削除される。削除された要求に対するキャッシュ接近は次のループで再び発生する。次のループで発生したキャッシュ接近が発生すれば、前述した過程が繰り返される。前記過程はキャッシュ接近がヒットであると結論付けられるまで繰り返される。したがって、現在レイの要求によるL2キャッシュ接近でキャッシュミスが発生した場合であっても次のレイの要求によるL2キャッシュ接近は許容される。結果として、キャッシュミスによるキャッシュミスペナルティはよほど緩和できる。
【0066】
図8はNode L1 Cache170を例としてあげたが、L1 List CacheとL1 Trangle Coordinate Cacheも同様に動作することができる。
【0067】
<ヒットポイント計算部140及びシェーディング部150>
ヒットポイント計算部140は、T&I部130から出力されてレイによってヒット(hit)された三角形との距離と与えられたレイのベクトル値を用いてレイ−三角形ヒットポイントの座標値を計算する。レイ−三角形ヒットポイントはレイ当たり1つだけ発生するので、ヒットポイント計算部140は1つのパイプラインで具現できる。一実施例において、費用効率を考慮すれば、ヒットポイント計算部140はT&I部130に具現できる。
【0068】
シェーディング部150は物質メモリ(material memory)195cと三角形情報キャッシュ(triangle information cache)180に格納された情報を用いてレイ−三角形ヒットポイントのカラー値を計算する。物質メモリ195cは幾何学的データ格納部1200にある三角形に関する物質情報を格納し、一実施例において、物質情報はテクスチャインデックス(texture index)、環境定数(ambient constant)、分散定数(diffuse constant)、反射定数(specular constant)、屈折率(refraction rate)(つまり、アルファ値)、屈折角(refraction angle)などを含むことができる。三角形情報キャッシュ180は幾何学的データ格納部1200のキャッシュで、シェーディング段階で要求される該当の三角形に対する三角形情報を格納し、三角形情報は物質メモリ195cの参照のための物質インデックス(material index)をさらに含むことができる。
【0069】
シェーディング部150は、フォーン照明とテクスチャマッピングによってレイ−三角形ヒットポイントのカラー値を計算することができ、計算されたカラー値をシェーディングバッファ185eにある以前のカラーに計算されたカラーを加え、加えられたカラー値をシェーディングバッファ185eに格納する。シェーディングバッファ185eは与えられたピクセルから生成されたアイレイ、シャドーレイまたは派生レイによって累積したカラー値とシェーディング情報を格納する。
【0070】
シェーディング情報は現在のレイに対する派生レイが生成されるか否かを決定するために使われる。シェーディング部150はヒットされた三角形に対する三角形情報に含まれた物質インデックスに基づいて物質メモリから物質情報(つまり、反射率と屈折率)を取り入れる。反射率が0に相応しない場合には、レイ生成部120は反射レイを生成することができ、屈折率が0に相応しない場合には、レイ生成部120は屈折レイを生成することができる。また、レイ生成部120は光源(light source)に対するシャドーレイを生成することができる。シェーディング部150はレイ−三角形ヒットポイントの座標値とカラー値及びシェーディングレイタイプを含むシェーディング情報をセットアッププロセッシング部110に伝送する。
【0071】
一実施例において、フォーン照明は[HARRIS, D. 2004 An exponentiation unit for an opengl lighting engine. IEEET ransactions on Computers]にある構造を使うことができ、テクスチャマッピングはバイリニアフィルタリング構造(bilinear filtering scheme)を支援し[HAKURA, Z. S., AND GUPTA, A. 1997. The design and analysis of acache architecture for texture mapping. SIGARCH Computer Architecture News]に開示されたキャッシュ構造を選択した。
【0072】
図10は図1のレイトレーシングコアが含まれたレイトレーシングボード(ray tracing board)を説明する図である。
【0073】
図10を参照すれば、レイトレーシングボード2000は、第1〜第2レイトレーシングサブボード2010a〜2010bを含み、第1レイトレーシングサブボード2010aはレイトレーシングチップ2020a〜2020bを含み、第2レイトレーシングサブボード2010bはレイトレーシングチップ2020c〜2020dを含む。
【0074】
レイトレーシングコア2020は図1のレイトレーシングコア100と実質的に同一であるので、その相違点を主に説明する。
【0075】
ホストコンピュータの中央処理装置(CPU)は場面管理ソフトウェア(Scene Management Software)2005を実行し、場面管理ソフトウェア2005は加速構造(AS)を構築し、USBインターフェースとBFM(Bus Functional Model)を介して加速構造(AS)、幾何学的データ、テクスチャデータをレイトレーシングチップ2020のそれぞれにあるメモリ(DRAM)2030a〜2030dに伝送する。その後、レイトレーシングコア2020は実行し始める。
【0076】
第1レイトレーシングチップ2010aはマスターとして動作する。第1レイトレーシングチップ2010aにあるXY生成器2040は適切なレイトレーシングコア(例えば、ひまなレイトレーシングチップ)2020にブロック住所(つまり、イメージの一部ブロック)を伝送する。XY生成器2040によって選択されたレイトレーシングコア2020はブロック住所を受けた後、所定のピクセルブロックに対してレンダリングを遂行する。例えば、所定のピクセルブロックは16×16ピクセルブロックに相応することができる。レンダリング完了の後、レイトレーシングコア2020はXY生成器2040に次のブロック住所を要求することができる。レイトレーシングコア2020のそれぞれで生成された最終カラー値はSRAM & LCD制御器2050によってSRAM2060に格納される。
【0077】
本発明は次の効果を持つことができる。ただ、特定の実施例が次の効果を全部含まなければならないかあるいは次の効果のみを含まなければならないという意味ではないので、本発明の権利範囲はこれによって制限されるものに理解されてはいけないであろう。
【0078】
一実施例によるレイトレーシングコアは、レイトレーシングの効率的処理のためのMIMD(Multiple Instruction stream Multiple Data stream)並列構造を支援することができる。
【0079】
一実施例によるレイトレーシングコアは、加速構造(AS)に適切に統合されたパイプライン構造を採択して、レイトレーシングで使われるレイ−ボックス交差、訪問、レイ−三角形交差テストを効率よく遂行することができる。
【0080】
以上、本発明の好適な実施例を参照して説明したが、当該技術分野の熟練した当業者は下記の特許請求の範囲に記載された本発明の思想及び領域から逸脱しない範囲内で本発明を多様に修正及び変更することができることが理解可能であろう。
【符号の説明】
【0081】
100 レイトレーシングコア
110 セットアッププロセッシング部
120 レイ生成部
130 T&I部
140 ヒットポイント計算部
150 シェーディング部
160 制御部
165 レジスタ
170 L1キャッシュ
175 L2キャッシュ
180 キャッシュ
185 バッファ
190 スタック
195 メモリ
2000 レイトレーシングボード
【技術分野】
【0001】
本発明は3Dグラフィック処理に係り、特にレイトレーシングコア及びこれを含むレイトレーシングチップに関するのである。
【背景技術】
【0002】
3次元グラフィック技術はコンピュータに格納された幾何学的データ(geometric data)の3次元表現を使うグラフィック技術で、今日メディア産業とゲーム産業を含む多様な産業で広く使われている。一般に、3次元グラフィック技術は多くの演算量によって別個の高性能グラフィックプロセッサを要求する。
【0003】
特に、近年プロセッサの発展によって非常に現実的な3次元グラフィックを生成することができるレイトレーシング(ray tracing)技術が研究されている。特に、レイトレーシング技術は、反射、屈折、陰影を含む多様な光効果(optical effects)をシミュレーションすることができる。
【図面の簡単な説明】
【0004】
【図1】本発明の一実施例によるレイトレーシングコア(ray tracing core)を説明するブロック図である。
【図2】レイトレーシング過程を説明するための図である。
【図3】レイトレーシング過程を説明するための図である。
【図4】図1のセットアッププロセッシング部によるブロック基盤のレイの生成手順とこれを具現するハードウェアを説明するための図である。
【図5】図1の複数のT&I部を説明するためのブロック図である。
【図6】図5のT&Iパイプライン部を説明するための図である。
【図7】図5のT&Iパイプライン部を説明するための図である。
【図8】図1のT&I部のメモリシステムを説明するための図である。
【図9】図1のレイトレーシングチップで使われる加速構造と幾何学的データを説明するための図である。
【図10】図1のレイトレーシングコアが含まれたレイトレーシングボード(ray tracing board)を説明する図である。
【発明を実施するための形態】
【0005】
実施例において、レイトレーシングコア(Ray tracing core)はスクリーン座標値を含むアイレイの生成情報に基づいて少なくとも1つのアイレイを生成するレイ生成部及び前記少なくとも1つのアイレイをそれぞれ入力され、加速構造(AS;Accelaration Structure)において前記入力されたアイレイと交差する三角形(前記三角形は空間を構成する)があるか否かをそれぞれチェックするMIMD構造(Multiple Instruction stream Multiple Data stream Architecture)を持つ複数のT&I部(a plurality of Traversal & Intersection Units)を含む。
【0006】
実施例において、レイトレーシングコア(Ray tracing core)はアイレイの生成情報(eye ray generation information)またはシェーディング情報(shading information)(レイ−三角形ヒットポイントの座標値とカラー値及びシェーディングレイタイプを含む)の1つをマルチプレックシングするセットアッププロセッシング部、前記アイレイの生成情報またはシェーディング情報に基づいて少なくとも1つのアイレイまたはシェーディングレイを生成するかあるいは最終カラー値を決定するレイ生成部、及びMIMD構造(Multiple Instruction stream Multiple Data stream Architecture)を採択し、加速構造(AS;Acceleration Structure)において前記生成された少なくとも1つのアイレイまたはシェーディングレイと交差する三角形(前記三角形は空間を構成する)をそれぞれ決定する複数のT&I部(a plurality of Traversal & Intersection Units)を含む。
【0007】
実施例において、レイトレーシングチップ(ray tracing chip)は、複数のレイトレーシングコア、前記複数のレイトレーシングコアの中で適切なレイトレーシングコアにイメージの一部ブロックを割り当てるXY生成器、及び前記複数のレイトレーシングコアのそれぞれから出力された最終カラー値を格納するメモリを含む。前記複数のレイトレーシングコアのそれぞれは、スクリーン座標値を含むアイレイの生成情報に基づいて少なくとも1つのアイレイを生成するレイ生成部、及び前記少なくとも1つのアイレイをそれぞれ入力され、加速構造(AS;Accelaration Structure)において前記入力されたアイレイと交差する三角形(前記三角形は空間を構成する)があるか否かをそれぞれチェックするMIMD構造(Multiple Instruction stream Multiple Data stream Architecture)を持つ複数のT&I部(a plurality of Traversal & Intersection Units)を含む。
【0008】
実施例において、レイトレーシングチップ(ray tracing chip)は、複数のレイトレーシングコア、前記複数のレイトレーシングコアの中で適切なレイトレーシングコアにイメージの一部ブロックを割り当てるXY生成器、及び前記複数のレイトレーシングコアのそれぞれから出力された最終カラー値を格納するメモリを含む。前記複数のレイトレーシングコアのそれぞれは、アイレイの生成情報(eye ray generation information)またはシェーディング情報(shading information)(レイ−三角形ヒットポイントの座標値とカラー値及びシェーディングレイタイプを含む)の1つをマルチプレックシングするセットアッププロセッシング部、前記アイレイの生成情報またはシェーディング情報に基づいて少なくとも1つのアイレイまたはシェーディングレイを生成するかまたは最終カラー値を決定するレイ生成部、及びMIMD構造(Multiple Instruction stream Multiple Data stream Architecture)を採択し、加速構造(AS;Acceleration Structure)において前記生成された少なくとも1つのアイレイまたはシェーディングレイと交差する三角形(前記三角形は空間を構成する)をそれぞれ決定する複数のT&I部(a plurality of Traversal & Intersection Units)を含む。
【0009】
本発明についての説明は構造的ないし機能的説明のための実施例に過ぎないので、本発明の権利範囲はこの明細書に説明された実施例によって制限されるものに解釈されてはいけない。すなわち、実施例は多様な変更が可能であり、さまざまな形態を持つことができるので、本発明の権利範囲は技術的思想を実現することができる均等物を含むものに理解されなければならない。
【0010】
一方、本明細書に敍述される用語の意味は次のように理解されるべきであろう。
【0011】
“第1”、“第2”などの用語は一構成要素を他の構成要素から区別するためのもので、これら用語によって権利範囲が限定されてはいけない。例えば、第1構成要素は第2構成要素に命名されることができ、同様に第2構成要素も第1構成要素に命名されることができる。
【0012】
“及び/または”の用語は1つ以上の関連項目から提示可能なすべての組合せを含むものに理解されなければならない。例えば、“第1項目、第2項目及び/または第3項目”の意味は第1、第2または第3項目だけでなく、第1項目、第2項目または第3項目の中で2個以上から提示可能なすべての項目の組合せを意味する。
【0013】
ある構成要素が他の構成要素に“連結されて”いると言及されたときには、その他の構成要素に直接連結されることもできるが、中間に他の構成要素が存在することもできると理解されなければならないであろう。一方、ある構成要素が他の構成要素に“直接連結されて”いると言及されたときには、中間に他の構成要素が存在しないものに理解されなければならないであろう。一方、構成要素間の関係を説明する他の表現、つまり“〜の間に”と“すぐ〜の間に”または“〜に隣り合う”と“〜に直接隣り合う”なども同様に解釈されなければならない。
【0014】
単数の表現は文脈上明白に異なるように意味しない限り複数の表現を含むものに理解されなければならなく、“含む”または“持つ”などの用語は説示された特徴、数字、段階、動作、構成要素、部分品またはこれらを組み合わせたものが存在することを指定しようとするものであるばかり、1つまたはそれ以上の他の特徴、あるいは数字、段階、動作、構成要素、部分品またはこれらを組み合わせたものなどの存在または付加可能性を予め排除しないものに理解されなければならない。
【0015】
各段階は文脈上明白に特定の手順を記載しない限り、明記された手順とは異なるように起こることができる。すなわち、各段階は明記された手順と同様に起こることもでき、実質的に同時に遂行されることもでき、反対の順に遂行されることもできる。
【0016】
ここで使われるすべての用語は他の意味に定義されない限り、本発明が属する分野で通常の知識を持った者によって一般的に理解されるものと同一意味を持つ。一般的に使われる前もって定義されている用語は関連技術の文脈で有する意味と一致するものに解釈されなければならなく、本明細書で明白に定義しない限り、理想的にあるいは過度に形式的な意味を持つものに解釈されることができない。
【0017】
図1は本発明の一実施例によるレイトレーシングコア(ray tracing core)を説明するブロック図である。
【0018】
図1を参照すれば、レイトレーシングコア100は、データパス部(data pathpart)とメモリシステム部(memory system part)に大別される。一実施例において、レイトレーシングコア100はグラフィックプロセッサのようなチップに含まれることができ、他の一実施例において、レイトレーシングコア100は単一チップとして具現されることができる。
【0019】
データパス部は、セットアッププロセッシング部(setup processing unit)110、レイ生成部(ray generation unit)120、複数のT&I部(Traversal & Intersection Unit)130、ヒットポイント計算部(Hit Point Calculation Unit)140、シェーディング部(Shading Unit)150及び制御部160を含む。メモリシステム部は、レジスタ(Register)165、L1キャッシュ(Cache)170、L2キャッシュ175、キャッシュ180、バッファ(Buffer)185、スタック190、及びメモリ(Memory)195を含む。便宜上、図1のメモリシステム部の構成要素のそれぞれは別に具現されるものとして説明したが、必要によって構成要素の中で少なくとも一部は物理的に同等なメモリで具現できる。
【0020】
また、レイトレーシングチップ100は外部メモリ(External Memory)1000と連結されることができ、外部メモリ1000は加速構造(AS;Acceleration Structure)格納部1100、幾何学的データ(Geometry Data)格納部1200、テクスチャイメージ(Texture Image)格納部1300、及びフレーム(Frame)格納部1400を含む。
【0021】
加速構造(AS)はレイトレーシングに一般的に使われるkd−tree(k−depth tree)またはBVH(Bounding Volume Hierarchy)を含み、幾何学的データはレイトレーシングのための三角形に関する情報(以下、三角形情報)を含む。一実施例において、三角形情報は三角形の三点に対するテクスチャ座標(texture coordinate)と法線ベクトル(normal vector)を含むことができる。
【0022】
図9は図1のレイトレーシングチップで使われる加速構造と幾何学的データの関係を説明するための図である。
【0023】
図9において、加速構造(AS)はkd−treeを使うと仮定した。kd−treeは空間分割ツリー(spatial partitioning tree)の一種で、レイ−三角形交差テスト(Ray−Triangle Intersection Test)のために使われる。kd−treeはボックスノード(Box Node)910、内部ノード(Inner Node)920、及びリーフノード(leaf node)930を含み、リーフノード930は幾何学的データに含まれた少なくとも1つの三角形情報をポインティングするための三角形リストを含む。一実施例において、幾何学的データに含まれた三角形情報が配列で具現された場合には、リーフノード930に含まれた三角形リストは配列インデックスに相応することができる。
【0024】
図2及び図3はレイトレーシング過程を説明するための図である。図1〜図3を参照してレイトレーシングコア100の全体的な動作を説明する。
【0025】
セットアッププロセッシング部110はアイレイの生成情報(eye ray generation information)を準備し、準備されたアイレイの生成情報とシェーディング部150から出力されたシェーディング情報を選択する。アイレイの生成情報はアイレイの生成のためのスクリーン座標値を含む。シェーディング情報(shading information)はスクリーン座標値を求めるためのレイインデックス(後述する)、レイ−三角形ヒットポイント(ray−triangle hit point)(後述する)の座標値とカラー値、及びシェーディングレイタイプを含み、シェーディングレイタイプによる付加情報をさらに含むことができる。シェーディングレイ(shading ray)はシャドーレイ(shadow ray)、派生レイ(secondary ray)またはナルレイ(NULL ray)を含み、派生レイは屈折レイ(refraction ray)または反射レイ(reflection ray)を含む。屈折レイの場合、付加情報はレイ−三角形ヒットポイントの屈折率を含み、反射レイの場合、付加情報はレイ−三角形ヒットポイントの反射率をさらに含む。セットアッププロセッシング部110の動作方式は図4を参照して後述する。
【0026】
レイ生成部120はアイレイの生成情報またはシェーディング情報に基づいて少なくとも1つのレイを生成することができる(段階S310またはS340)。図2に示すように、少なくとも1つのレイはアイレイE、シャドーレイS、屈折レイF、及び/または反射レイRを含むことができる。生成された派生レイの個数が2以上の場合には、1つはT&I部130に出力され、残りは派生レイスタック190に格納される。派生レイの場合、レイ生成部120は反射レイRのヒットポイントまたは屈折レイFのヒットポイントを考慮する必要があるからである。例えば、反射レイFと屈折レイRの両方が生成される場合には、反射レイFはT&I部130に出力されることができ、屈折レイRは派生レイスタック190に格納されることができる。
【0027】
シェーディングレイタイプがナルレイに相応する場合には、レイ生成部120は派生レイスタック190に格納された派生レイを取り入れ、取り出された派生レイをT&I部130に出力する。シェーディングレイスタック190が空いている場合には、レイ生成部120はレイインデックス(後述する)に基づいてスクリーン座標値を収得し、スクリーン座標値とレイ−三角形ヒットポイント(後述する)のカラー値に基づいて最終カラー値をカラーバッファ185cに使う。
【0028】
複数のT&I部130は並列のMIMD(Multiple Instruction stream Multiple Data stream)構造を採択し、複数のT&I部130のそれぞれはレイ生成部120から生成されたレイ(アイレイ、シャドーレイまたは派生レイ)を入力され、加速構造(AS;Accelaration Structure)においてレイと交差する三角形があるか否かをチェックする。すなわち、複数のT&I部130のそれぞれは加速構造(AS)を訪問(traverse)し、三角形(triangles)に対する交差テスティング(intersection testing)を遂行する。複数のT&I部130の動作方式は図5〜図11を参照して後述する。
【0029】
ヒットポイント計算部140は交差する三角形(intersected triangle)に対してレイ−三角形ヒットポイント(ray−triangle hit point)(つまり、交差する三角形においてレイがヒットされるポイント)の座標値を計算し、シェーディング部150はレイ−三角形ヒットポイントに対してカラー値を計算する。一実施例において、シェーディング部150はレイ−三角形ヒットポイントに対するカラー値を得るためにフォーン照明(phong illumination)とテクスチャマッピング(texture mapping)を遂行することができる(段階S340)。また、シェーディング部150はレイ生成部120による最終カラー値の決定またはシェーディングレイの生成のためのシェーディング情報を生成し、シェーディング情報をセットアッププロセッシング部110に伝送する。それ以上のレイの生成が必要でない場合には、シェーディングレイタイプはナルレイ(Null Ray)に相応することができる。一実施例において、シェーディング部150は物質メモリ195cに格納されたレイ−三角形ヒットポイントに関する物質情報に基づいて派生レイの生成を決定することができる。以下、データパスに含まれた構成要素のそれぞれを説明する。
【0030】
<パイプライン制御構造>
レイトレーシングアルゴリズムは再帰的に遂行され、(i)アイレイの生成過程(段階S310)、(ii)加速構造訪問(AS Traversal)過程(段階S320)、(iii)レイ−三角形交差テスト(ray−Triangle Intersection Test)過程(段階S330)、(iv)シェーディング及びシェーディングレイの生成過程(段階S340)を含む。したがって、レイトレーシングアルゴリズムは一般的なストリーミングパイプライン構造(streaming pipeline architecture)を使うことが適切でないこともある。
【0031】
本発明はレイトレーシングアルゴリズムに適切なパイプライン構造を導入し、制御部160はパイプライン(レジスタ)165のフラッグ(flag)を介してパイプラインの動作を制御する。すなわち、本発明は、パイプラインの効率を高めるために、フラッグ(flag)基盤の単純な制御構造を使う。一実施例において、パイプラインのレジスタ165のフラッグはオンまたはオフのための1ビット情報に相応することができ、フラッグがオンに相応する場合、レジスタ165は以前のステージで出力された情報を格納することができる。結果として、パイプラインはフラッグによって同期的(synchronous)に処理できるが、データパスを構成する構成要素のそれぞれは非動機的(asynchronous)に結果を出力することができる。
【0032】
必要によって、データパスを構成する構成要素のそれぞれはロード不均衡(load imbalance)による待機時間を減らすためにバッファ185を使うことができる。例えば、複数のT&I部130のそれぞれは性能向上とMIMD構造支援のためにバッファ185を使うことができる。
【0033】
<セットアッププロセッシング部110>
セットアッププロセッシング部110はアイレイの生成情報を初期化させる。初期化過程は、スクリーン座標値を決定し、決定されたスクリーン座標値をレイインデックスに変換する過程を含む。レイインデックスはパイプラインの各段階でレジスタ165のサイズを減少させるために使われる。セットアッププロセッシング部110はスクリーン座標値とレイインデックスをレイ生成部120に伝送する。
【0034】
セットアッププロセッシング部110はアイレイの生成情報またはシェーディング情報をマルチプレックシングする。一実施例において、シェーディング情報はアイレイの生成情報に対して優先権(priority)を持つことができる。以前のスクリーン座標値を持つピクセルで生成されたレイに対する処理が先に行われることが好ましいからである。
【0035】
図4は図1のセットアッププロセッシング部によるブロック基盤のレイの生成手順とこれを具現するハードウェアを説明するための図である。
【0036】
スクリーンは複数のm×n(mとnは偶数)ピクセルブロック(以下、スーパーブロック)を含み、各スーパーブロックは同じ大きさのN個(Nは複数のT&I部130の個数)のピクセルブロック(以下、サブブロック)を含む。
【0037】
セットアッププロセッシング部110は、複数のT&I部130mpそれぞれでキャッシュヒット率(cache hit rate)を増加させるために、スクリーンを複数のブロック(つまり、サブブロック)に分割し、各ブロック基盤のアイレイの生成手順を決定することができる。例えば、スクリーンは16×16ピクセルブロックでそれぞれ構成された複数のスーパーブロックを含むことができ、スーパーブロックのそれぞれは4個の8×8ピクセルブロックでそれぞれ構成されたサブブロックを含むことができる。第1〜第4ピクセルブロック410〜440のそれぞれは第1〜第4T&I部130a〜130dに割り当てられることができる。
【0038】
以下、第1サブブロック410は図4(b)に示す8×8ピクセルブロックに相応し、第1T&I部130aに割り当てられたと仮定する。
【0039】
セットアッププロセッシング部110は線形のn−ビットカウンター450を使って第1T&I部130aのキャッシュヒット率を増加させるためのレイの生成手順を決定することができる。線形のn−ビットカウンター450の第1グループ(第1グループは連続しない少なくとも1つのビットを含むことができる)はサブブロックのx座標値を示し、線形のn−ビットカウンター450の第2グループ(第2グループは第1グループに属したビットを含まなく、連続しない少なくとも1つのビットを含むことができる)はサブブロックのy座標値を示す。
【0040】
レイ生成部120は、図4(b)及び図4(c)に示すように、セットアッププロセッシング部110によって決定されたアイレイの生成手順にレイを生成する。一方、図4(b)に示すピクセル(例えば、ピクセル0)はレイの生成のためのピクセルを意味する。例えば、64個のピクセルの場合、セットアッププロセッシング部110は線形の6−ビットカウンター450を含むことができ、線形の6−ビットカウンター450の値I=i5i4i3i2i1ii0の場合には、ピクセルの座標(x,y)=(i5i3i1,i4i2i0)に相応することができる。すなわち、図4(c)の線形の6−ビットカウンター450はカウント数が増加するにつれて図4(b)のピクセル座標が易しくマッピングされるように具現される。
【0041】
<レイ生成部120>
レイ生成部120はセットアッププロセッシング部110から伝送されたスクリーン座標値とレイインデックスをレイインデックスマッピングテーブル(195a)に格納し、アイレイの生成情報またはシェーディング情報に基づいて少なくとも1つのレイを生成するかあるいは最終カラー値をカラーバッファ185aに格納する。
【0042】
アイレイの生成情報が入力された場合には、レイ生成部120はアイレイEを生成する。シェーディング情報が入力された場合には、レイ生成部120はシェーディングレイタイプによってシェーディングレイS、R、Fを生成し、シェーディングレイタイプがナルレイに相応する場合には、レイ生成部120は派生レイスタック190に格納された派生レイを取り入れる。派生レイスタック190が空いている場合には、レイ生成部120はレイインデックスに基づいてスクリーン座標値を求め、求められたスクリーン座標値とレイ−三角形ヒットポイント(後述する)のカラー値をカラーバッファ185cに格納する。以下、レイ生成部120がレイを生成する過程を説明する。
【0043】
アイレイの生成において、レイ生成部120はレイインデックスマッピングテーブル(195a)を用いてアイレイのスクリーン座標値を求め、スクリーン座標値に基づいてアイレイEを生成する。一般に、アイレイはスクリーン座標値とカメラ位置(つまり、アイ位置)に基づいて生成できる。レイ生成部120は複数のT&I部130の中で適切なT&I部(例えば、130a)に生成されたアイレイを割り当てる。
【0044】
シャドーレイの生成において、シェーディングレイタイプがシャドーレイに相応する場合には、レイ生成部120はレイ−三角形ヒットポイント(後述する)に基づいてシャドーレイを生成する。一般に、シャドーレイはスクリーン座標値と光位置(light position)に基づいて生成できる。一実施例において、演算量を減らすために、レイ生成部120は光源(light source)の数を制限することができる。
【0045】
派生レイの生成において、シェーディングレイタイプが派生レイに相応する場合には、レイ生成部120は少なくとも1つの派生レイ(つまり、屈折レイ及び/または反射レイ)を生成する。派生レイの個数が2以上の場合には、レイ生成部120は1つを除いた派生レイを派生レイスタック190に格納する。レイ生成部120は複数のT&I部130の中で適切なT&I部(例えば、130b)に格納されない派生レイを割り当てる。派生レイスタック190に格納された派生レイはスクリーン座標値、方向ベクトル値及びRGBに対する加重値を含むことができる。一実施例において、演算量を減らすために、レイ生成部120はレイ深さ(ray depth)を使って派生レイによる派生レイの無制限的な生成を防止することができる。
【0046】
ナルレイの生成において、シェーディングレイタイプがナルレイに相応する場合には、レイ生成部120は派生レイスタック190に格納された派生レイを取り入れた後、複数のT&I部130の中で適切なT&I部(例えば、130c)に取り入れた派生レイを割り当てる。派生レイスタック190が空いている場合には、レイ生成部120はレイインデックスに基づいてスクリーン座標値を求め、求められたスクリーン座標値とレイ−三角形ヒットポイント(後述する)のカラー値に基づいて最終カラー値をカラーバッファ185cに格納する。カラーバッファ185cに格納された最終カラー値は外部メモリ1000に格納される。
【0047】
<T&I部130>
複数のT&I部130は加速構造訪問(AS Traversal)過程(段階S320)とレイ−三角形交差テスト(ray−Triangle Intersection Test)過程を遂行する。
【0048】
図5は図1の複数のT&I部を説明するためのブロック図である。
【0049】
図5を参照すれば、複数のT&I部130のそれぞれはバッファ185、L1キャッシュ170及びT&Iパイプライン部(Traversal & Intersection Pipeline Unit)135を含む。
【0050】
複数のT&I部130はT&Iパイプライン部135が独立的に実行されるMIMD並列構造を採択する。周知のように、レイトレーシングアルゴリズムはMIMD並列構造に適合するように各レイを独立的に処理することができる。SIMD(Single Instruction stream Multiple Data stream)と比較し、MIMD並列構造はパイプラインをより効率よく使うことができる利点を持つ。
【0051】
複数のT&I部130のそれぞれは自体の入力バッファ185aと出力バッファ185bを含む。同一ピクセルから生成されたレイ(アイレイ及びシェーディングレイ)は同一T&I部130で処理されることが好ましいからである。また、複数のT&I部130のそれぞれは自体のL1キャッシュ170を含む。MIMD構造は効率的なキャッシュメモリを要求するからである。
【0052】
T&Iパイプライン部135は、(i)訪問(traversal)過程、(ii)三角形リスト取り入れ(triangle list fetch)過程、及び(iii)レイ−三角形交差テスト(ray−Triangle Intersection Test)過程を遂行する。加速構造(AS)はkd−treeに相応すると仮定した。
【0053】
訪問過程において、T&Iパイプライン部135は加速構造(AS)でノードを検索することで、レイと交差するリーフノード(leaf node)を捜す。加速構造(AS)の訪問アルゴリズムは当業者によく知られているので、これについての説明は省略する。三角形リスト取り入れ過程で、T&Iパイプライン部135は交差するリーフノードに含まれた三角形リストを読み取る。レイ−三角形交差テスト過程で、T&Iパイプライン部135は三角形リストの座標情報を読み取り、与えられたレイに対して交差テストを遂行する。
【0054】
図6及び図7は図5のT&Iパイプライン部を説明するための図である。
【0055】
[SCHMITTLER,J., WALD,I., AND SLUSALLEK P. 2002. Saarcor:a hardware architecture for ray tracing. In Proceedings of the SIGGRAPH/EUROGRAPHICS conference on Graphics Hardware](以下、参照文献1)と[SCHMITTLER, J., WOOP, S., WAGNER, D., PAUL, W. J., AND SLUSALLEK, P., 2004. Realtime ray tracing of dynamic scenes on an FPGA chip. In Proceedings of the SIGGRAPH/EUROGRAPHICS conference on Graphics Hardware](以下、参照文献2)にあるレイトレーシング構造は訪問(traversal)と交差テスト(intersection test)のために別個のハードウェアを使う。しかし、図5のT&Iパイプライン部135は訪問(traversal)と交差テスト(intersectiontest)の間のロード不均衡(load imbalance)を引き起こさず、加速構造(AS)を効率よく支援するように統合されたパイプライン構造を採択した。すなわち、図7のT&Iパイプライン部135は訪問(traversal)と交差テスト(intersection test)の各段階で同一ハードウェアを使うことができる。以下、前記参照文献1と参照文献2との相違点を主に説明する。
【0056】
図6及び図7において、加速構造(AS)はkd−treeに相応すると仮定した。図6はT&Iパイプライン部135で行われる訪問過程及びレイ−三角形交差テスト過程で使われる演算器と演算器の個数を説明する。訪問過程は大別してレイ−ボックス交差テスト(Ray−Box Intersection Test)と訪問(Traversal)を含む。図9において、kd−treeのトップノード910はBoxノードに相応するからである。パイプライン制御部710はT&Iパイプライン部135内のパイプラインを制御する。
【0057】
レイ−ボックス交差テスト、訪問及びレイ−三角形交差テストにおける演算過程はMOLLER, T., AND TRUMBORE, B. 1997 Fast, minimum storage ray−triangle intersection, Journal of Graphics Toolsによく開示されているので、これについての説明は省略する。
【0058】
図6に示すように、レイ−ボックス交差テストで順次必要な演算器は6個のフローティングポイント加算器(FADD, Floating Point Adder)、6個のフローティングポイント乗算器(FMUL, Floating Point Multiplier)、3個の第1フローティングポイント比較器(FCOMP, Floating Point Comparator)、2個の第2フローティングポイント比較器(FCOMP)、及び1個の第3フローティングポイント比較器(FCOMP)を含む。
【0059】
図6に示すように、訪問において順次必要な演算器は1個のフローティングポイント加算器(FADD)、1個のフローティングポイント乗算器(FMUL)、及び2個のフローティングポイント比較器(FCOMP)を含む。また、訪問において順次必要な演算はスタックメモリ(185d)へのスタック書き込み及びスタック読み取りを含む。
【0060】
図6に示すように、レイ−三角形交差テストで順次必要な演算器は、9個の第1フローティングポイント加算器(FADD)、12個の第1フローティングポイント乗算器(FMUL)、6個の第2フローティングポイント加算器(FADD)、12個の第2フローティングポイント乗算器(FMUL)、4個のトリプル入力フローティングポイント加算器(TFADD, Tripple Input FADD)、1個のフローティングポイント加算器(FADD)、フローティングポイント除算器(FDIV)、及び2個のフローティングポイント比較器(FCOMP)を含む。レイ−三角形交差テストは与えられたレイによって交差する最も近接した三角形と目の位置(またはカメラの位置)との交差点の間の距離を計算する。交差した三角形が存在する場合には、交差した三角形に関する情報はヒットポイント計算部140に伝送され、そうではない場合には、次の訪問段階が遂行される。一実施例において、レイ−三角形交差テストはMOLLER, T., AND TRUMBORE, B. 1997. Fast, minimum storage ray−triangle intersection. Journal of Graphics Toolsに開示されたアルゴリズムを用いることができる。
【0061】
図7は訪問過程、三角形リスト取り入れ過程及びレイ−三角形交差テスト過程を遂行するためのT&Iパイプライン部135の構成を説明する。図7のT&Iパイプライン部135は統合された1つのパイプラインを使って図6のパイプラインの順に訪問過程、三角形取り入れ過程及びレイ−三角形交差テスト過程を遂行するようにパイプラインを構成する。すなわち、図7の710に含まれたパイプライン段階は訪問過程及びレイ−三角形交差テスト過程を遂行し、その以外の段階はキャッシュ接近または三角形リスト取り入れ段階を遂行する。図7に示すように、本発明は動作モードによって別個のハードウェアを使わずに統合されたパイプライン構造を採択する。
【0062】
<T&I部130のメモリシステム>
図8は図1のT&I部のメモリシステムを説明するための図である。
【0063】
T&I部130においてメモリ接近はレイトレーシングでの全体メモリ接近の絶対的多数を占めるので、T&I部130のメモリシステムは効率よくデザインされる必要がある。図1及び図5に示すように、複数のT&I部130のそれぞれは3個のL1キャッシュを含み、共通のL2キャッシュを使う。キャッシュメモリの二重構造(two−level hierarchy)にもかかわらず、キャッシュミス(cache miss)によるパイプラインストール時間(pipeline stall time)は依然として大きい。したがって、本発明はこれを解決するために次の2方案を使う。
【0064】
第1方案はL1キャッシュミスに関するもので、L1キャッシュミスが発生した場合、L1キャッシュミスが次のループで解決されるように、L1キャッシュミスをストール(stall)なしに飛ばすものである。図5において、パイプラインP1でキャッシュミスが発生した場合、パイプライン制御部710は次の段階のパイプラインP2にストールなしに続いて進む。キャッシュ制御部(図示せず)は、パイプラインP1の再処理のために、L2キャッシュ175または外部メモリ1000からミスされたデータを取り入れる。パイプラインP18の後にさらにパイプラインP1が再び進めば、L1キャッシュに対する接近が発生する。キャッシュミスが解決されれば、パイプライン制御部710は次の段階のパイプラインP2を正常に処理し、キャッシュミスがまた発生すれば、パイプライン制御部710はキャッシュミスが解決されるまで前記過程を繰り返す。結果として、キャッシュミスによるキャッシュミスペナルティはよほど緩和できる。
【0065】
第2方案はL2キャッシュミスに関するもので、L2キャッシュミスが発生した場合、L2キャッシュミスをストールなしに飛ばすものである。現在のレイに対してL1キャッシュミスが発生した場合には、L2キャッシュ接近のための要求がL1 Addr FIFO810に入力される。L1 Addr FIFO810にある現在レイの要求によるL2キャッシュ接近がキャッシュヒットであると結論付けられれば、要求に対する住所とデータはL1 Addr/Data FIFO820に入力される。そうではない場合には、外部メモリ1000に対する他の要求がL2 Addr FIFO810に入力され、L1 Addr FIFO610にある現在レイの要求は削除される。削除された要求に対するキャッシュ接近は次のループで再び発生する。次のループで発生したキャッシュ接近が発生すれば、前述した過程が繰り返される。前記過程はキャッシュ接近がヒットであると結論付けられるまで繰り返される。したがって、現在レイの要求によるL2キャッシュ接近でキャッシュミスが発生した場合であっても次のレイの要求によるL2キャッシュ接近は許容される。結果として、キャッシュミスによるキャッシュミスペナルティはよほど緩和できる。
【0066】
図8はNode L1 Cache170を例としてあげたが、L1 List CacheとL1 Trangle Coordinate Cacheも同様に動作することができる。
【0067】
<ヒットポイント計算部140及びシェーディング部150>
ヒットポイント計算部140は、T&I部130から出力されてレイによってヒット(hit)された三角形との距離と与えられたレイのベクトル値を用いてレイ−三角形ヒットポイントの座標値を計算する。レイ−三角形ヒットポイントはレイ当たり1つだけ発生するので、ヒットポイント計算部140は1つのパイプラインで具現できる。一実施例において、費用効率を考慮すれば、ヒットポイント計算部140はT&I部130に具現できる。
【0068】
シェーディング部150は物質メモリ(material memory)195cと三角形情報キャッシュ(triangle information cache)180に格納された情報を用いてレイ−三角形ヒットポイントのカラー値を計算する。物質メモリ195cは幾何学的データ格納部1200にある三角形に関する物質情報を格納し、一実施例において、物質情報はテクスチャインデックス(texture index)、環境定数(ambient constant)、分散定数(diffuse constant)、反射定数(specular constant)、屈折率(refraction rate)(つまり、アルファ値)、屈折角(refraction angle)などを含むことができる。三角形情報キャッシュ180は幾何学的データ格納部1200のキャッシュで、シェーディング段階で要求される該当の三角形に対する三角形情報を格納し、三角形情報は物質メモリ195cの参照のための物質インデックス(material index)をさらに含むことができる。
【0069】
シェーディング部150は、フォーン照明とテクスチャマッピングによってレイ−三角形ヒットポイントのカラー値を計算することができ、計算されたカラー値をシェーディングバッファ185eにある以前のカラーに計算されたカラーを加え、加えられたカラー値をシェーディングバッファ185eに格納する。シェーディングバッファ185eは与えられたピクセルから生成されたアイレイ、シャドーレイまたは派生レイによって累積したカラー値とシェーディング情報を格納する。
【0070】
シェーディング情報は現在のレイに対する派生レイが生成されるか否かを決定するために使われる。シェーディング部150はヒットされた三角形に対する三角形情報に含まれた物質インデックスに基づいて物質メモリから物質情報(つまり、反射率と屈折率)を取り入れる。反射率が0に相応しない場合には、レイ生成部120は反射レイを生成することができ、屈折率が0に相応しない場合には、レイ生成部120は屈折レイを生成することができる。また、レイ生成部120は光源(light source)に対するシャドーレイを生成することができる。シェーディング部150はレイ−三角形ヒットポイントの座標値とカラー値及びシェーディングレイタイプを含むシェーディング情報をセットアッププロセッシング部110に伝送する。
【0071】
一実施例において、フォーン照明は[HARRIS, D. 2004 An exponentiation unit for an opengl lighting engine. IEEET ransactions on Computers]にある構造を使うことができ、テクスチャマッピングはバイリニアフィルタリング構造(bilinear filtering scheme)を支援し[HAKURA, Z. S., AND GUPTA, A. 1997. The design and analysis of acache architecture for texture mapping. SIGARCH Computer Architecture News]に開示されたキャッシュ構造を選択した。
【0072】
図10は図1のレイトレーシングコアが含まれたレイトレーシングボード(ray tracing board)を説明する図である。
【0073】
図10を参照すれば、レイトレーシングボード2000は、第1〜第2レイトレーシングサブボード2010a〜2010bを含み、第1レイトレーシングサブボード2010aはレイトレーシングチップ2020a〜2020bを含み、第2レイトレーシングサブボード2010bはレイトレーシングチップ2020c〜2020dを含む。
【0074】
レイトレーシングコア2020は図1のレイトレーシングコア100と実質的に同一であるので、その相違点を主に説明する。
【0075】
ホストコンピュータの中央処理装置(CPU)は場面管理ソフトウェア(Scene Management Software)2005を実行し、場面管理ソフトウェア2005は加速構造(AS)を構築し、USBインターフェースとBFM(Bus Functional Model)を介して加速構造(AS)、幾何学的データ、テクスチャデータをレイトレーシングチップ2020のそれぞれにあるメモリ(DRAM)2030a〜2030dに伝送する。その後、レイトレーシングコア2020は実行し始める。
【0076】
第1レイトレーシングチップ2010aはマスターとして動作する。第1レイトレーシングチップ2010aにあるXY生成器2040は適切なレイトレーシングコア(例えば、ひまなレイトレーシングチップ)2020にブロック住所(つまり、イメージの一部ブロック)を伝送する。XY生成器2040によって選択されたレイトレーシングコア2020はブロック住所を受けた後、所定のピクセルブロックに対してレンダリングを遂行する。例えば、所定のピクセルブロックは16×16ピクセルブロックに相応することができる。レンダリング完了の後、レイトレーシングコア2020はXY生成器2040に次のブロック住所を要求することができる。レイトレーシングコア2020のそれぞれで生成された最終カラー値はSRAM & LCD制御器2050によってSRAM2060に格納される。
【0077】
本発明は次の効果を持つことができる。ただ、特定の実施例が次の効果を全部含まなければならないかあるいは次の効果のみを含まなければならないという意味ではないので、本発明の権利範囲はこれによって制限されるものに理解されてはいけないであろう。
【0078】
一実施例によるレイトレーシングコアは、レイトレーシングの効率的処理のためのMIMD(Multiple Instruction stream Multiple Data stream)並列構造を支援することができる。
【0079】
一実施例によるレイトレーシングコアは、加速構造(AS)に適切に統合されたパイプライン構造を採択して、レイトレーシングで使われるレイ−ボックス交差、訪問、レイ−三角形交差テストを効率よく遂行することができる。
【0080】
以上、本発明の好適な実施例を参照して説明したが、当該技術分野の熟練した当業者は下記の特許請求の範囲に記載された本発明の思想及び領域から逸脱しない範囲内で本発明を多様に修正及び変更することができることが理解可能であろう。
【符号の説明】
【0081】
100 レイトレーシングコア
110 セットアッププロセッシング部
120 レイ生成部
130 T&I部
140 ヒットポイント計算部
150 シェーディング部
160 制御部
165 レジスタ
170 L1キャッシュ
175 L2キャッシュ
180 キャッシュ
185 バッファ
190 スタック
195 メモリ
2000 レイトレーシングボード
【特許請求の範囲】
【請求項1】
スクリーン座標値を含むアイレイの生成情報に基づいて少なくとも1つのアイレイを生成するレイ生成部;及び
前記少なくとも1つのアイレイをそれぞれ入力され、加速構造(AS;Accelaration Structure)において前記入力されたアイレイと交差する三角形(前記三角形は空間を構成する)があるか否かをそれぞれチェックするMIMD構造(Multiple Instruction stream Multiple Data stream Architecture)を持つ複数のT&I部(a plurality of Traversal & Intersection Units)を含む、レイトレーシングコア(Ray tracing core)。
【請求項2】
前記レイトレーシングコア(Ray tracing core)は、前記入力されたアイレイと交差する三角形がある場合には、前記交差する三角形において前記アイレイがヒットされるヒットポイントに対してカラー値を計算するシェーディング部をさらに含むことを特徴とする、請求項1に記載のレイトレーシングコア。
【請求項3】
前記シェーディング部は、シェーディングレイが生成されるか可否を決定するために、前記ヒットポイントの座標値と前記計算されたカラー値及びシェーディングレイタイプを含み、前記シェーディングレイタイプによる付加情報を含むことができるシェーディング情報を生成することを特徴とする、請求項2に記載のレイトレーシングコア。
【請求項4】
前記レイ生成部は、前記生成されたシェーディング情報に基づいてシェーディングレイを生成するかまたは前記生成されたシェーディング情報に基づいて最終カラー値を格納することを特徴とする、請求項3に記載のレイトレーシングコア。
【請求項5】
レイトレーシングコアは派生レイを格納する派生レイスタックをさらに含み、
前記レイ生成部は、前記生成された派生レイの個数が2以上の場合には、1つの派生レイを前記複数のT&I部の中で1つに割り当て、残りの派生レイを前記派生レイスタックに格納することを特徴とする、請求項4に記載のレイトレーシングコア。
【請求項6】
前記レイ生成部は、前記シェーディングレイタイプがナルレイに相応する場合には、前記派生レイスタックに格納された派生レイを取り入れて前記複数のT&I部の中で1つに割り当てることを特徴とする、請求項5に記載のレイトレーシングコア。
【請求項7】
前記複数のT&I部のそれぞれは、前記入力されたアイレイに基づいて前記加速構造(AS)に対する訪問過程(traversal procedure)、三角形リスト取り入れ過程(triangle list fetch procedure)及びレイ−三角形交差テスト過程(ray−Triangle Intersection Test procedure)を行うT&Iパイプライン部(Traversal & Intersection Pipeline Unit)を含むことを特徴とする、請求項1に記載のレイトレーシングコア。
【請求項8】
前記複数のT&I部それぞれは、前記MIMD構造を支援するための入力バッファと出力バッファをさらに含むことを特徴とする、請求項7に記載のレイトレーシングコア。
【請求項9】
前記レイトレーシングコアは、前記複数のT&I部のそれぞれのキャッシュヒット率を増加させるために、スクリーンを複数のブロックに分割し、各ブロック基盤のアイレイの生成手順を決定するセットアッププロセッシング部をさらに含むことを特徴とする、請求項1に記載のレイトレーシングコア。
【請求項10】
前記セットアッププロセッシング部は、前記スクリーンを複数のm×n(mとnは偶数)のピクセルブロック(以下、スーパーブロック)に分割し、各スーパーブロックを同一大きさのN個(Nは前記複数のT&I部のそれぞれの個数)のピクセルブロック(サブブロック)に分割し、前記サブブロック基盤の前記アイレイの生成手順を決定することを特徴とする、請求項9に記載のレイトレーシングコア。
【請求項11】
前記セットアッププロセッシング部は、前記アイレイの生成手順を決定するための線形のnビットカウンターを含み、前記線形のnビットカウンターの第1グループ(前記第1グループは連続しない少なくとも1つのビットを含むことができる)は前記サブブロックのx座標値を示し、前記線形のnビットカウンターの第2グループ(前記第2グループは前記第1グループに属したビットを含まなく、連続しない少なくとも1つのビットを含むことができる)は前記サブブロックのy座標値を示すことを特徴とする、請求項10に記載のレイトレーシングコア。
【請求項12】
アイレイの生成情報(eye ray generation information)またはシェーディング情報(shading information)(レイ−三角形ヒットポイントの座標値とカラー値及びシェーディングレイタイプを含み)の中で1つをマルチプレックシングするセットアッププロセッシング部;
前記アイレイの生成情報またはシェーディング情報に基づいて少なくとも1つのアイレイまたはシェーディングレイを生成するかまたは最終カラー値を決定するレイ生成部;及び
MIMD構造(Multiple Instruction stream Multiple Data stream Architecture)を採択し、加速構造(AS;Acceleration Structure)において前記生成された少なくとも1つのアイレイまたはシェーディングレイと交差する三角形(前記三角形は空間を構成する)をそれぞれ決定する複数のT&I部(a plurality of Traversal & Intersection Units)を含む、レイトレーシングコア(Ray tracing core)。
【請求項13】
前記レイトレーシングコアは、前記生成された少なくとも1つのアイレイまたはシェーディングレイに基づいて前記交差する三角形においてレイ−三角形ヒットポイントの座標値を計算するヒットポイント計算部をさらに含むことを特徴とする、請求項12に記載のレイトレーシングコア。
【請求項14】
前記レイトレーシングコアは、前記計算されたレイ−三角形ヒットポイントのカラー値を計算し、前記計算されたレイ−三角形ヒットポイントの座標値とカラー値及び前記シェーディングレイタイプを含む前記シェーディング情報を前記セットアッププロセッシング部に伝送するシェーディング部をさらに含むことを特徴とする、請求項13に記載のレイトレーシングコア。
【請求項15】
前記複数のT&I部のそれぞれは、前記生成された少なくとも1つのアイレイまたはシェーディングレイに基づいて前記加速構造(AS)に対する訪問過程(traversal procedure)、三角形リスト取り入れ過程(triangle list fetch procedure)及びレイ−三角形交差テスト過程(ray−Triangle Intersection Test procedure)を行うT&Iパイプライン部(Traversal & Intersection Pipeline Unit)を含むことを特徴とする、請求項12に記載のレイトレーシングコア。
【請求項16】
複数のレイトレーシングコア;
前記複数のレイトレーシングコアの中で適切なレイトレーシングコアにイメージの一部ブロックを割り当てるXY生成器;及び
前記複数のレイトレーシングコアのそれぞれから出力された最終カラー値を格納するメモリを含み、
前記複数のレイトレーシングコアのそれぞれは、
スクリーン座標値を含むアイレイの生成情報に基づいて少なくとも1つのアイレイを生成するレイ生成部;及び
前記少なくとも1つのアイレイをそれぞれ入力され、加速構造(AS;Accelaration Structure)において前記入力されたアイレイと交差する三角形(前記三角形は空間を構成する)があるか否かをそれぞれチェックするMIMD構造(Multiple Instruction stream Multiple Data stream Architecture)を持つ複数のT&I部(a plurality of Traversal & Intersection Units)を含む、レイトレーシングチップ(ray tracing chip)。
【請求項17】
複数のレイトレーシングコア;
前記複数のレイトレーシングコアの中で適切なレイトレーシングコアにイメージの一部ブロックを割り当てるXY生成器;及び
前記複数のレイトレーシングコアのそれぞれから出力された最終カラー値を格納するメモリを含み、
前記複数のレイトレーシングコアのそれぞれは、
アイレイの生成情報(eye ray generation information)またはシェーディング情報(shading information)(レイ−三角形ヒットポイントの座標値とカラー値及びシェーディングレイタイプを含み)の中で1つをマルチプレックシングするセットアッププロセッシング部;
前記アイレイの生成情報またはシェーディング情報に基づいて少なくとも1つのアイレイまたはシェーディングレイを生成するかまたは最終カラー値を決定するレイ生成部;及び
MIMD構造(Multiple Instruction stream Multiple Data stream Architecture)を採択し、加速構造(AS;Acceleration Structure)において前記生成された少なくとも1つのアイレイまたはシェーディングレイと交差する三角形(前記三角形は空間を構成する)をそれぞれ決定する複数のT&I部(a plurality of Traversal & Intersection Units)を含む、レイトレーシングチップ(ray tracing chip)。
【請求項1】
スクリーン座標値を含むアイレイの生成情報に基づいて少なくとも1つのアイレイを生成するレイ生成部;及び
前記少なくとも1つのアイレイをそれぞれ入力され、加速構造(AS;Accelaration Structure)において前記入力されたアイレイと交差する三角形(前記三角形は空間を構成する)があるか否かをそれぞれチェックするMIMD構造(Multiple Instruction stream Multiple Data stream Architecture)を持つ複数のT&I部(a plurality of Traversal & Intersection Units)を含む、レイトレーシングコア(Ray tracing core)。
【請求項2】
前記レイトレーシングコア(Ray tracing core)は、前記入力されたアイレイと交差する三角形がある場合には、前記交差する三角形において前記アイレイがヒットされるヒットポイントに対してカラー値を計算するシェーディング部をさらに含むことを特徴とする、請求項1に記載のレイトレーシングコア。
【請求項3】
前記シェーディング部は、シェーディングレイが生成されるか可否を決定するために、前記ヒットポイントの座標値と前記計算されたカラー値及びシェーディングレイタイプを含み、前記シェーディングレイタイプによる付加情報を含むことができるシェーディング情報を生成することを特徴とする、請求項2に記載のレイトレーシングコア。
【請求項4】
前記レイ生成部は、前記生成されたシェーディング情報に基づいてシェーディングレイを生成するかまたは前記生成されたシェーディング情報に基づいて最終カラー値を格納することを特徴とする、請求項3に記載のレイトレーシングコア。
【請求項5】
レイトレーシングコアは派生レイを格納する派生レイスタックをさらに含み、
前記レイ生成部は、前記生成された派生レイの個数が2以上の場合には、1つの派生レイを前記複数のT&I部の中で1つに割り当て、残りの派生レイを前記派生レイスタックに格納することを特徴とする、請求項4に記載のレイトレーシングコア。
【請求項6】
前記レイ生成部は、前記シェーディングレイタイプがナルレイに相応する場合には、前記派生レイスタックに格納された派生レイを取り入れて前記複数のT&I部の中で1つに割り当てることを特徴とする、請求項5に記載のレイトレーシングコア。
【請求項7】
前記複数のT&I部のそれぞれは、前記入力されたアイレイに基づいて前記加速構造(AS)に対する訪問過程(traversal procedure)、三角形リスト取り入れ過程(triangle list fetch procedure)及びレイ−三角形交差テスト過程(ray−Triangle Intersection Test procedure)を行うT&Iパイプライン部(Traversal & Intersection Pipeline Unit)を含むことを特徴とする、請求項1に記載のレイトレーシングコア。
【請求項8】
前記複数のT&I部それぞれは、前記MIMD構造を支援するための入力バッファと出力バッファをさらに含むことを特徴とする、請求項7に記載のレイトレーシングコア。
【請求項9】
前記レイトレーシングコアは、前記複数のT&I部のそれぞれのキャッシュヒット率を増加させるために、スクリーンを複数のブロックに分割し、各ブロック基盤のアイレイの生成手順を決定するセットアッププロセッシング部をさらに含むことを特徴とする、請求項1に記載のレイトレーシングコア。
【請求項10】
前記セットアッププロセッシング部は、前記スクリーンを複数のm×n(mとnは偶数)のピクセルブロック(以下、スーパーブロック)に分割し、各スーパーブロックを同一大きさのN個(Nは前記複数のT&I部のそれぞれの個数)のピクセルブロック(サブブロック)に分割し、前記サブブロック基盤の前記アイレイの生成手順を決定することを特徴とする、請求項9に記載のレイトレーシングコア。
【請求項11】
前記セットアッププロセッシング部は、前記アイレイの生成手順を決定するための線形のnビットカウンターを含み、前記線形のnビットカウンターの第1グループ(前記第1グループは連続しない少なくとも1つのビットを含むことができる)は前記サブブロックのx座標値を示し、前記線形のnビットカウンターの第2グループ(前記第2グループは前記第1グループに属したビットを含まなく、連続しない少なくとも1つのビットを含むことができる)は前記サブブロックのy座標値を示すことを特徴とする、請求項10に記載のレイトレーシングコア。
【請求項12】
アイレイの生成情報(eye ray generation information)またはシェーディング情報(shading information)(レイ−三角形ヒットポイントの座標値とカラー値及びシェーディングレイタイプを含み)の中で1つをマルチプレックシングするセットアッププロセッシング部;
前記アイレイの生成情報またはシェーディング情報に基づいて少なくとも1つのアイレイまたはシェーディングレイを生成するかまたは最終カラー値を決定するレイ生成部;及び
MIMD構造(Multiple Instruction stream Multiple Data stream Architecture)を採択し、加速構造(AS;Acceleration Structure)において前記生成された少なくとも1つのアイレイまたはシェーディングレイと交差する三角形(前記三角形は空間を構成する)をそれぞれ決定する複数のT&I部(a plurality of Traversal & Intersection Units)を含む、レイトレーシングコア(Ray tracing core)。
【請求項13】
前記レイトレーシングコアは、前記生成された少なくとも1つのアイレイまたはシェーディングレイに基づいて前記交差する三角形においてレイ−三角形ヒットポイントの座標値を計算するヒットポイント計算部をさらに含むことを特徴とする、請求項12に記載のレイトレーシングコア。
【請求項14】
前記レイトレーシングコアは、前記計算されたレイ−三角形ヒットポイントのカラー値を計算し、前記計算されたレイ−三角形ヒットポイントの座標値とカラー値及び前記シェーディングレイタイプを含む前記シェーディング情報を前記セットアッププロセッシング部に伝送するシェーディング部をさらに含むことを特徴とする、請求項13に記載のレイトレーシングコア。
【請求項15】
前記複数のT&I部のそれぞれは、前記生成された少なくとも1つのアイレイまたはシェーディングレイに基づいて前記加速構造(AS)に対する訪問過程(traversal procedure)、三角形リスト取り入れ過程(triangle list fetch procedure)及びレイ−三角形交差テスト過程(ray−Triangle Intersection Test procedure)を行うT&Iパイプライン部(Traversal & Intersection Pipeline Unit)を含むことを特徴とする、請求項12に記載のレイトレーシングコア。
【請求項16】
複数のレイトレーシングコア;
前記複数のレイトレーシングコアの中で適切なレイトレーシングコアにイメージの一部ブロックを割り当てるXY生成器;及び
前記複数のレイトレーシングコアのそれぞれから出力された最終カラー値を格納するメモリを含み、
前記複数のレイトレーシングコアのそれぞれは、
スクリーン座標値を含むアイレイの生成情報に基づいて少なくとも1つのアイレイを生成するレイ生成部;及び
前記少なくとも1つのアイレイをそれぞれ入力され、加速構造(AS;Accelaration Structure)において前記入力されたアイレイと交差する三角形(前記三角形は空間を構成する)があるか否かをそれぞれチェックするMIMD構造(Multiple Instruction stream Multiple Data stream Architecture)を持つ複数のT&I部(a plurality of Traversal & Intersection Units)を含む、レイトレーシングチップ(ray tracing chip)。
【請求項17】
複数のレイトレーシングコア;
前記複数のレイトレーシングコアの中で適切なレイトレーシングコアにイメージの一部ブロックを割り当てるXY生成器;及び
前記複数のレイトレーシングコアのそれぞれから出力された最終カラー値を格納するメモリを含み、
前記複数のレイトレーシングコアのそれぞれは、
アイレイの生成情報(eye ray generation information)またはシェーディング情報(shading information)(レイ−三角形ヒットポイントの座標値とカラー値及びシェーディングレイタイプを含み)の中で1つをマルチプレックシングするセットアッププロセッシング部;
前記アイレイの生成情報またはシェーディング情報に基づいて少なくとも1つのアイレイまたはシェーディングレイを生成するかまたは最終カラー値を決定するレイ生成部;及び
MIMD構造(Multiple Instruction stream Multiple Data stream Architecture)を採択し、加速構造(AS;Acceleration Structure)において前記生成された少なくとも1つのアイレイまたはシェーディングレイと交差する三角形(前記三角形は空間を構成する)をそれぞれ決定する複数のT&I部(a plurality of Traversal & Intersection Units)を含む、レイトレーシングチップ(ray tracing chip)。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【公表番号】特表2012−528377(P2012−528377A)
【公表日】平成24年11月12日(2012.11.12)
【国際特許分類】
【出願番号】特願2012−512952(P2012−512952)
【出願日】平成22年5月19日(2010.5.19)
【国際出願番号】PCT/KR2010/003173
【国際公開番号】WO2010/137822
【国際公開日】平成22年12月2日(2010.12.2)
【出願人】(511282818)シリコンアーツ インコーポレイテッド (2)
【出願人】(511282829)
【Fターム(参考)】
【公表日】平成24年11月12日(2012.11.12)
【国際特許分類】
【出願日】平成22年5月19日(2010.5.19)
【国際出願番号】PCT/KR2010/003173
【国際公開番号】WO2010/137822
【国際公開日】平成22年12月2日(2010.12.2)
【出願人】(511282818)シリコンアーツ インコーポレイテッド (2)
【出願人】(511282829)
【Fターム(参考)】
[ Back to top ]