(57)【要約】【課題】  レイトレーシングのための方法及び装置を提供する。【解決手段】  複数の探索ユニットのうち入力される入力レイを処理する探索ユニットが複数の探索ユニットの寿命に基づいて決定される。探索ユニットの寿命は探索ユニットが処理しているレイの寿命に基づいて決定される。【選択図】      図３
2014026652.tif 000002
【特許請求の範囲】
【請求項１】
複数の探索ユニットのそれぞれの状態に基づいて前記複数の探索ユニットのうち入力レイの探索を処理する探索ユニットを選択するステップと、
前記選択された探索ユニットを用いて前記入力レイの探索を処理するステップと、
を含み、
前記複数の探索ユニットのそれぞれの状態は、前記複数の探索ユニットのそれぞれによって処理されている１つ以上のレイの状態に基づいて決定されることを特徴とするレイ処理方法。
【請求項２】
前記選択された探索ユニットは、前記複数の探索ユニットのそれぞれの寿命に基づいて前記複数の探索ユニットのうちから選択されることを特徴とする請求項１に記載のレイ処理方法。
【請求項３】
前記複数の探索ユニットのそれぞれの寿命は、前記複数の探索ユニットのそれぞれによって処理されている前記一つ以上のレイの寿命に基づいて決定され、
前記一つ以上のレイのそれぞれの寿命は、前記一つ以上のレイのそれぞれの探索が前記複数の探索ユニットによって繰り返し処理された回数に基づいて決定されることを特徴とする請求項２に記載のレイ処理方法。
【請求項４】
前記複数の探索ユニットのそれぞれの寿命は、前記複数の探索ユニットのそれぞれによって処理されている１つ以上のレイのそれぞれの寿命の和であることを特徴とする請求項２に記載のレイ処理方法。
【請求項５】
前記複数の探索ユニットのそれぞれの寿命は、前記複数の探索ユニットのそれぞれによって処理されている１つ以上のレイの平均寿命であることを特徴とする請求項２に記載のレイ処理方法。
【請求項６】
前記選択された探索ユニットは、前記複数の探索ユニットのうち入力バッファ内に最も少ない個数のレイを有する探索ユニットのうち最も高い寿命を有する探索ユニットであることを特徴とする請求項１に記載のレイ処理方法。
【請求項７】
前記入力レイの探索を処理するステップは繰り返して行われ、
前記入力レイの探索を処理するステップが繰り返されるとき前記入力レイの寿命は所定の値だけ増加することを特徴とする請求項１に記載のレイ処理方法。
【請求項８】
複数の交差検査ユニットのうち入力レイの交差検査を処理する交差検査ユニットを選択するステップと、
前記選択された交差検査ユニットを用いて前記入力レイの交差検査を処理するステップと、
をさらに含むことを特徴とする請求項１に記載のレイ処理方法。
【請求項９】
請求項１ないし請求項８のいずれか一項に記載の方法を実行するプログラムを収録したコンピュータで読み出し可能な記録媒体。
【請求項１０】
１つ以上のプロセッサ−実行可能なユニットを制御するプロセッサと、
レイの探索を処理する複数の探索ユニットと、
前記複数の探索ユニットのそれぞれの状態に基づいて前記複数の探索ユニットのうち入力レイの探索を処理する探索ユニットを選択するレイディスパッチユニットと、
を含み、
前記選択された探索ユニットは前記入力レイの探索を処理し、
前記複数の探索ユニットのそれぞれの状態は、前記複数の探索ユニットのそれぞれによって処理されている１つ以上のレイの状態に基づいて決定されることを特徴とするレイトレーシング装置。
【請求項１１】
前記レイディスパッチユニットは、前記複数の探索ユニットの状態に基づいて前記複数の探索ユニットのうちから前記選択された探索ユニットを選択することを特徴とする請求項１０に記載のレイトレーシング装置。
【請求項１２】
前記複数の探索ユニットのそれぞれの寿命は、前記複数の探索ユニットのそれぞれによって処理されている前記一つ以上のレイの寿命に基づいて決定され、
前記一つ以上のレイのそれぞれの寿命は、前記一つ以上のレイのそれぞれの探索が前記複数の探索ユニットによって繰り返し処理された回数に基づいて決定されることを特徴とする請求項１１に記載のレイトレーシング装置。
【請求項１３】
前記複数の探索ユニットのそれぞれの寿命は、前記複数の探索ユニットのそれぞれによって処理されている１つ以上のレイのそれぞれの寿命の和であることを特徴とする請求項１１に記載のレイトレーシング装置。
【請求項１４】
前記複数の探索ユニットのそれぞれの寿命は、前記複数の探索ユニットのそれぞれによって処理されている１つ以上のレイの平均寿命であることを特徴とする請求項１１に記載のレイトレーシング装置。
【請求項１５】
前記ディスパッチユニットは、前記複数の探索ユニットのうち入力バッファ内に最も少ない個数のレイを有する探索ユニットのうち最も高い寿命を有する探索ユニットを前記選択された探索ユニットとして選択することを特徴とする請求項１０に記載のレイトレーシング装置。
【請求項１６】
前記複数の探索ユニットは入力レイの探索を繰り返して処理し、前記入力レイの探索が繰り返されるとき前記入力レイの寿命は所定の値だけ増加することを特徴とする請求項１０に記載のレイトレーシング装置。
【請求項１７】
前記レイトレーシング装置は、
レイの交差検査を処理する複数の交差検査ユニットと、
前記複数の交差検査ユニットのうち入力レイの交差検査を処理する交差検査ユニットを選択するレイ仲裁ユニットと、
をさらに含み、
前記選択された交差検査ユニットは、前記入力レイの交差検査を処理することを特徴とする請求項１０に記載のレイトレーシング装置。
【請求項１８】
１つ以上のプロセッサ−実行可能なユニットを制御するプロセッサと、
複数の探索ユニットの各探索ユニットに状態を割り当てるレイトレーシングユニットと、
前記レイトレーシングユニットによって探索ユニットに割り当てられた前記状態に基づいて前記複数の探索ユニットの１つの探索ユニットを選択し、前記選択された探索ユニットにレイを入力する複数のレイディスパッチユニットと、
を含むことを特徴とするレイ処理装置。
【請求項１９】
前記レイトレーシングユニットは、前記探索ユニットに入力されてきたすべてのレイの累積寿命に基づいて前記探索ユニットに前記状態を割り当てることを特徴とする請求項１８に記載のレイ処理装置。
【請求項２０】
前記レイトレーシングユニットは、前記探索ユニットに入力されてきたすべてのレイの平均寿命に基づいて前記探索ユニットに前記状態を割り当てることを特徴とする請求項１８に記載のレイ処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
下記の実施形態はレイトレーシングのための方法及び装置に関し、より詳細にはレイの探索及び交差検査を行う方法及び装置が開示される。
【背景技術】
【０００２】
３次元（３Ｄｉｍｅｎｓｉｏｎ；３Ｄ）レンダリングは、３Ｄオブジェクトのデータを与えられたカメラの視点で見える映像に合成する映像処理過程である。
【０００３】
レンダリングのための一方法として、３Ｄオブジェクトを画面に投影しながら映像を生成するラスタ化（ｒａｓｔｅｒｉｚａｔｉｏｎ）方法がある。また、レンダリングのための他の方法として、カメラの視点から映像の各ピクセルに向かって発射されたレイに沿って入射する光の経路を追跡することにより映像を生成するレイトレーシングがある。
【０００４】
前記レンダリングのための方法のうちのレイトレーシングは、一般的に反射、屈折、及び透過などのような光の物理的な性質を考慮することによって高品質の映像を生成することができる。しかし、レイトレーシングのために膨大な演算量を必要とし、レイトレーシングはレンダリングを高速処理できないこともある。
【０００５】
加速構造の探索（ｔｒａｖｅｒｓａｌ；ＴＲＶ）及びレイ−プリミティブ（ｒａｙ−ｐｒｉｍｉｔｉｖｅ）間の交差検査（ｉｎｔｅｒｓｅｃｔｉｏｎ  ｔｅｓｔ；ＩＳＴ）は各レイの追跡性能を決定する最も重要な要素の１つである。加速構造の探索及びレイ−プリミティブ間の交差検査は、レイのそれぞれに対して数回〜数十回まで行われることができる。
【０００６】
加速構造は空間分割加速構造であってもよい。加速構造は、レンダリングの対象であるシーンオブジェクト（ｓｃｅｎｅ  ｏｂｊｅｃｔ）を空間的に分割して表したデータ構造である。加速構造として、グリッド（ｇｒｉｄ）、ｋｄ木（ｋｄ−ｔｒｅｅ）、バウンディングボリューム階層（Ｂｏｕｎｄｉｎｇ  Ｖｏｌｕｍｅ  Ｈｉｅｒａｒｃｈｙ；ＢＶＨ）などのデータ構造が用いられてもよい。
【０００７】
探索及び交差検査は、レイトレーシングにおいて７０％以上の演算量及び９０％以上のメモリ帯域幅を占有する過程である。探索及び交差検査のリアルタイム処理のために専用のハードウェアが用いられてもよい。
【発明の概要】
【発明が解決しようとする課題】
【０００８】
本発明の目的は、レイの探索及び交差検査を行う方法及び装置を提供することにある。
【課題を解決するための手段】
【０００９】
一側面によると、複数の探索ユニットのそれぞれの状態に基づいて前記複数の探索ユニットのうち入力レイの探索を処理する探索ユニットを選択するステップと、
【００１０】
前記選択された探索ユニットを用いて前記入力レイの探索を処理するステップとを含み、前記複数の探索ユニットのそれぞれの状態は、前記複数の探索ユニットのそれぞれによって処理されている１つ以上のレイの状態に基づいて決定されるレイ処理方法が提供される。
【００１１】
前記選択された探索ユニットは、前記複数の探索ユニットのそれぞれの寿命に基づいて前記複数の探索ユニットのうちから選択されてもよい。前記複数の探索ユニットのそれぞれの寿命は、前記複数の探索ユニットのそれぞれによって処理されている前記一つ以上のレイの寿命に基づいて決定されてもよい。
【００１２】
前記一つ以上のレイのそれぞれの寿命は、前記一つ以上のレイのそれぞれの探索が前記複数の探索ユニットによって繰り返し処理された回数に基づいて決定されてもよい。
【００１３】
前記複数の探索ユニットのそれぞれの寿命は、前記複数の探索ユニットのそれぞれによって処理されている１つ以上のレイのそれぞれの寿命の和であってもよい。前記複数の探索ユニットのそれぞれの寿命は、前記複数の探索ユニットのそれぞれによって処理されている１つ以上のレイの平均寿命であってもよい。
【００１４】
前記選択された探索ユニットは、前記複数の探索ユニットのうち入力バッファ内に最も少ない個数のレイを有する探索ユニットのうち最も高い寿命を有する探索ユニットであってもよい。
【００１５】
前記入力レイの探索を処理するステップは繰り返して行われてもよい。前記入力レイの探索を処理するステップが繰り返されるとき前記入力レイの寿命は所定の値だけ増加してもよい。
【００１６】
レイ処理方法は、複数の交差検査ユニットのうち入力レイの交差検査を処理する交差検査ユニットを選択するステップと、前記選択された交差検査ユニットを用いて前記入力レイの交差検査を処理するステップとをさらに含んでもよい。
【００１７】
他の一側面によると、１つ以上のプロセッサ−実行可能なユニットを制御するプロセッサと、レイの探索を処理する複数の探索ユニットと、前記複数の探索ユニットのそれぞれの状態に基づいて前記複数の探索ユニットのうち入力レイの探索を処理する探索ユニットを選択するレイディスパッチユニットとを含み、前記選択された探索ユニットは前記入力レイの探索を処理し、前記複数の探索ユニットのそれぞれの状態は、前記複数の探索ユニットのそれぞれによって処理されている１つ以上のレイの状態に基づいて決定されるレイトレーシング装置が提供される。
【００１８】
前記レイディスパッチユニットは、前記複数の探索ユニットの状態に基づいて前記複数の探索ユニットのうちから前記選択された探索ユニットを選択してもよい。
【００１９】
前記ディスパッチユニットは、前記複数の探索ユニットのうち入力バッファ内に最も少ない個数のレイを有する探索ユニットのうち最も高い寿命を有する探索ユニットを前記選択された探索ユニットとして選択してもよい。
【００２０】
前記複数の探索ユニットは入力レイの探索を繰り返して処理してもよい。前記入力レイの探索が繰り返されるとき前記入力レイの寿命は所定の値だけ増加してもよい。
【００２１】
前記レイトレーシング装置は、レイの交差検査を処理する複数の交差検査ユニットと、前記複数の交差検査ユニットのうち入力レイの交差検査を処理する交差検査ユニットを選択するレイ仲裁ユニットとをさらに含んでもよい。前記選択された交差検査ユニットは、前記入力レイの交差検査を処理してもよい。
【００２２】
前述のおよび／または他の側面は、１つ以上のプロセッサ−実行可能なユニットを制御するプロセッサと、複数の探索ユニットの各探索ユニットに状態を割り当てるレイトレーシングユニットと、前記レイトレーシングユニットによって探索ユニットに割り当てられた前記状態に基づいて前記複数の探索ユニットの１つの探索ユニットを選択し、前記選択された探索ユニットにレイを入力する複数のレイディスパッチユニットとを含むレイ処理装置を提供することによって達成することができる。
【発明の効果】
【００２３】
本発明によると、レイの探索及び交差検査を行う方法及び装置を提供することができる。
【図面の簡単な説明】
【００２４】
【図１】一実施形態に係るＴＲＶユニットの構造図である。
【図２】一実施形態に係るＩＳＴユニットの構造図である。
【図３】一実施形態に係るレイトレーシングユニット及びレイトレーシングユニットに関連する個体の構造図である。
【図４】一実施形態に係るＧＰＵの構成要素の動作を示す信号フローチャートである。
【図５】一実施形態に係るレイの追跡の方法のフローチャートである。
【図６】一例に係るＴＲＶユニットの寿命管理方法のフローチャートである。
【図７】一例に係るレイディスパッチユニットの動作方法のフローチャートである。
【図８】一例に係るレイ仲裁ユニットの動作方法のフローチャートである。
【発明を実施するための形態】
【００２５】
以下、添付する図面を参照しながら実施形態を詳細に説明する。各図面に提示された同一の参照符号は同一の部材を示す。
【００２６】
以下、用語「レイ」はレイトレーシングの対象である「レイオブジェクト」、「レイを示すデータ構造」）、「レイの情報」、または「レイに関連するデータ」を意味し、相互交換されて用いられてもよい。
【００２７】
図１は、一実施形態に係るＴＲＶユニットの構造図である。
【００２８】
ＴＲＶユニット１００はレイの探索のためのユニットとして、レイの探索を処理する。ＴＲＶユニット１００はレイの加速構造を探索する。
【００２９】
ＴＲＶユニット１００は、例えば、入力バッファ１１０、パイプライン１２０、キャッシュ１３０、第１出力バッファ１４０、第２出力バッファ１５０、及び第３出力バッファ１６０を備える。
【００３０】
入力バッファ１１０は、パイプライン１２０内で処理される１つ以上のレイそれぞれを格納する。例えば、ＴＲＶユニット１００に入力されたレイは、入力バッファ１１０内で探索の処理を待機してもよい。入力バッファ１１０が追加的なレイを格納することができなければ、入力バッファ１１０は非利用（ｕｎａｖａｉｌａｂｌｅ）したものと表示されてもよい。入力バッファ１１０が追加的なレイを格納することができれば、入力バッファ１１０は利用可能ものと表示されてもよい。
【００３１】
パイプライン１２０はレイの探索を処理する。パイプライン１２０は最大ｎ¬１個のレイのそれぞれの探索を同時に処理してもよい。パイプライン１２０が処理しているレイの個数がｋ¬１であるとき、ＴＲＶユニット１００のパイプライン活用はｋ¬１／ｎ¬１であってもよい。ここで、ｎ¬１は１以上の整数であってもよい。ｋ¬１は１以上ｎ１以下の整数であってもよい。
【００３２】
キャッシュ１３０は、レイの探索に関連するデータをキャッシングする。キャッシュ１３０は、レイの探索に関連するデータをパイプライン１２０に提供する。
【００３３】
第１出力バッファ１４０、第２出力バッファ１５０、及び第３出力バッファ１６０は、それぞれパイプライン１２０で処理された１つ以上のレイのそれぞれを格納する。パイプライン１２０によって探索が処理されたレイは、レイの状態に応じて数個の個体のうち１つの個体に提供されてもよい。ＴＲＶユニット１００から出力されるレイは、第１出力バッファ１４０、第２出力バッファ１５０、または第３出力バッファ１６０内から出力されることを待機する。
【００３４】
例えば、第１出力バッファ１４０は、ＴＲＶユニット１００によって繰り返して処理されるレイを格納してもよい。第２出力バッファ１５０は、交差検査されるレイを格納してもよい。第３出力バッファ１６０は、レイトレーシングが完了されてシェーディング（ｓｈａｄｉｎｇ）処理されたレイを格納してもよい。
【００３５】
ＴＲＶユニット１００は、選択的に寿命格納部１９０を備える。寿命格納部１９０は、ＴＲＶユニット１００の寿命を格納してもよい。ＴＲＶユニット１００の寿命に対して、図５を参照して詳細に説明する。寿命格納部１９０は、レジスタなどのようなデータを格納するための個体であってもよく、寿命を示すタグであってもよい。
【００３６】
図２は、一実施形態に係るＩＳＴユニットの構造図である。
【００３７】
ＩＳＴユニット２００はレイの交差検査のためのユニットとして、レイの交差検査を処理する。ＩＳＴユニット２００は、例えば、入力バッファ２１０、パイプライン２２０、キャッシュ２３０、及び出力バッファ２４０を備える。
【００３８】
入力バッファ２１０は、パイプライン２２０内で処理される１つ以上のレイのそれぞれを格納する。すなわち、ＩＳＴユニット２００に入力されたレイは、入力バッファ２１０内で交差検査の処理を待機する。入力バッファ２１０が追加的なレイをさらに格納することができない場合、入力バッファ２１０は非利用したものと表示されてもよい。入力バッファ２１０が依然として追加的なレイを格納することができる場合、入力バッファ２１０は利用したものと表示されてもよい。
【００３９】
パイプライン２２０はレイの交差検査を処理する。パイプライン２２０は、最大ｎ２個のレイのそれぞれの交差検査を同時に処理してもよい。パイプライン２２０が処理しているレイの個数がｋ２である場合、ＩＳＴユニット２００のパイプライン活用はｋ¬２／ｎ２であってもよい。ここで、ｎ２は１以上の整数であってもよい。ｋ２は１以上ｎ２以下の整数であってもよい。
【００４０】
キャッシュ２３０は、レイの交差検査に関連するデータをキャッシングする。キャッシュ２３０は、レイの交差検査に関連するデータをパイプライン２２０に提供する。
【００４１】
出力バッファ２４０は、パイプライン２２０で処理された１つ以上のレイのそれぞれに関する情報を格納する。パイプライン２２０によって交差検査が処理されたレイは、ＴＲＶユニット１００に繰り返して入力されてもよい。ＴＲＶユニット１００から入力されるレイは、ＩＳＴユニット２００によって出力される前に出力バッファ２４０内で臨時格納されてもよい。
【００４２】
図３は、一実施形態に係るレイトレーシングユニット及びレイトレーシングユニットに関連する個体の構造図である。図３は、レイトレーシングに基づいたレンダリングハードウェアまたはＧＰＵの構造を示す。
【００４３】
図３に示す構成は、例えば、レイ生成ユニット３１０、レイトレーシングユニット３２０、第１キャッシュ３８２、第２キャッシュ３８４、バス３８６、外部メモリ３８８、及びシェーディングユニット３９０を備える。レイ生成ユニット３１０、第１キャッシュ３８２、第２キャッシュ３８４、及びシェーディングユニット３９０は、グラフィックスプロセッシングユニット（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ；ＧＰＵ）の構成要素であってもよい。すなわち、一実施形態において、ＧＰＵは、レイ生成ユニット３１０、第１キャッシュ３８２、第２キャッシュ３８４、及びシェーディングユニット３９０を含む。
【００４４】
レイ生成ユニット３１０はレイを生成する。レイ生成ユニット３１０は、生成されたレイをレイトレーシングユニット３２０に提供する。レイ生成ユニット３１０は、レイに関する情報をレイトレーシングユニット３２０に提供する作業または個体を示す。
【００４５】
レイトレーシングユニット３２０はレイの追跡を処理する。レイトレーシングユニット３２０は、追跡が処理されたレイをシェーディングユニット３９０に提供する。
【００４６】
シェーディングユニット３９０は、追跡が処理されたレイの情報に基づいてシェーディングを処理する。シェーディングユニット３９０は、レイの追跡が処理された後シェーディングを処理する。シェーディングは、映像内のピクセルに対して蓄積されたレイの結果を和することによってピクセルのカラーを最終的に決定することを示す。ここで、レイの結果はレイのレイトレーシングの結果であってもよい。
【００４７】
第１キャッシュ３８２及び第２キャッシュ３８４は、レイの追跡に関連する必要なデータをキャッシングしてもよい。レイの追跡を処理するために必要なデータは外部メモリ３８８内に格納されてもよく、第１キャッシュ３８２及び第２キャッシュ３８４は外部メモリ３８８内に格納されたデータの一部をキャッシングしてもよい。レイの追跡に関連するデータは、バス３８６によって第１キャッシュ３８２及び外部メモリ３８８間で送信されたり、第２キャッシュ３８４及び外部メモリ３８８間で送信されてもよい。
【００４８】
第１キャッシュ３８２は、図１を参照して前述したＴＲＶユニット１００のキャッシュ１３０にレイの探索を処理するために必要なデータを提供する。第２キャッシュ３８４は、図２を参照して前述したＩＳＴユニット２００のキャッシュ２３０にレイの交差検査を処理するために必要なデータを提供する。したがって、ＴＲＶユニット１００のキャッシュ１３０及びＩＳＴユニット２００のキャッシュ２３０はそれぞれレベル１（ｌｅｖｅｌ１）キャッシュであってもよく、第１キャッシュ３８２及び第２キャッシュ３８４はそれぞれレベル２キャッシュであってもよい。
【００４９】
下記ではレイトレーシングユニット３２０の構成要素について説明する。
【００５０】
空間分割加速構造としてトリが用いられ、プリミティブとして三角形が用いられる場合、レイトレーシングユニット３２０は加速構造トリのルートノードから下位のノードへの階層的な探索によって、レイが最も最初に訪問するリーフ（ｌｅａｆ）ノードを検索する。この検索によってリーフノードが訪問されれば、レイトレーシングユニット３２０は、１）レイ、及び２）リーフノード内に存在する三角形間の交差検査を行う。ここで、リーフノード内に存在する三角形は複数であってもよい。訪問されたリーフノード内でレイと交差している三角形が検索されない場合、レイトレーシングユニット３２０は、トリの探索を継続してレイと交差するプリミティブを検索してもよい。探索及び交差検査は、それぞれＴＲＶユニット１００及びＩＳＴユニット２００によって行うことができる。
【００５１】
前述したレイの追跡特性のために、レイの追跡は多い量の演算及び高いメモリ帯域幅を同時に要求する。このような要求は、ノードが訪問されたり、レイ及びプリミティブ間の交差検査が行われるたびに、外部メモリ３８８からノードのデータ、プリミティブのデータ、または両者のデータがフェッチ（ｆｅｔｃｈ）されなければならず、その後に演算が行われることに起因する。したがって、探索及び交差検査にそれぞれ用いられるＴＲＶユニット１００及びＩＳＴユニット２００はそれぞれキャッシュ１３０及びキャッシュ２３０を備えてもよい。ノードのデータまたはプリミティブのデータがキャッシュ１３０またはキャッシュ２３０内に存在しない場合、外部メモリ３８８からデータをフェッチするときに長い遅延時間が発生し、それによってレイ追跡の性能が低下する。
【００５２】
例えば、レイトレーシングユニット３２０は、レイディスパッチユニット３３０、複数のＴＲＶユニット、レイ仲裁ユニット３５０、複数のＩＳＴユニット、及びバッファ３７０を備える。
【００５３】
複数のＴＲＶユニットは、それぞれ図１を参照して前述したＴＲＶユニット１００に類似してもよい。図３において、複数のＴＲＶユニットとして、第１ＴＲＶユニット３４０−１、第２ＴＲＶユニット３４０−２、第３ＴＲＶユニット３４０−３、第４ＴＲＶユニット３４０−４、及び第ＮＴＲＶユニット３４０−５が示されている。ここで、Ｎは２以上の任意の整数であってもよい。
【００５４】
レイディスパッチユニット３３０は、レイ生成ユニット３１０及び複数のＴＲＶユニット間のレイの送信を制御する。レイディスパッチユニット３３０は、レイトレーシングユニット３２０に入力された入力レイを複数のＴＲＶユニットのうち任意の１つのＴＲＶユニットに分配してもよい。
【００５５】
複数のＴＲＶユニットの入力バッファの使用可能の有無にのみ基づいて入力レイが分配されれば、複数のＴＲＶユニットのパイプライン活用において負荷の不均衡が発生することがある。言い換えれば、レイディスパッチユニット３３０が複数のＴＲＶユニットの入力バッファそれぞれの内に空席があるか否かのみを把握して複数のＴＲＶユニットのうち入力レイの探索を処理するＴＲＶユニットを選択する場合、特定のＴＲＶユニットにレイ探索の処理が集中することがある。
【００５６】
複数のＴＲＶユニットのうち１つのＴＲＶユニットから入力されるレイは、レイ生成ユニット３１０から生成されたレイ、１つのＴＲＶユニットによって探索が処理されたレイ、またはＩＳＴユニット２００によって交差検査が処理されたレイであってもよい。複数のＴＲＶユニットのうち１つのＴＲＶユニットによって出力されるレイは、探索を処理した１つのＴＲＶユニットに再び入力されてもよく、複数のＩＳＴユニットのうちレイ仲裁ユニット３５０によって選択されたＩＳＴユニットから入力されてもよく、シェーディングユニット３９０から入力されてもよい。
【００５７】
バッファ３７０は、シェーディングユニット３９０から出力される１つ以上のレイのそれぞれを格納する。シェーディングユニット３９０から出力されるレイは、シェーディングユニット３９０から出力される前にバッファ３７０内で臨時格納されてもよい。
【００５８】
レイ仲裁ユニット３５０は、複数のＴＲＶユニット及び複数のＩＳＴユニットの間でレイの送信を仲裁する。言い換えれば、レイ仲裁ユニット３５０は、複数のＴＲＶユニット及び複数のＩＳＴユニットの間のレイのデータの流れ（ｆｌｏｗ）を制御することができる。
【００５９】
複数のＩＳＴユニットは、それぞれ図２を参照して前述したＩＳＴユニット２００と類似するように構成してもよい。図３で、複数のＩＳＴユニットとして、第１ＩＳＴユニット３６０−１、第２ＩＳＴユニット３６０−２、及び第Ｍ  ＩＳＴユニット３６０−３が示された。ここで、Ｍは２以上の整数であってもよい。
【００６０】
複数のＩＳＴユニットのうち１つのＩＳＴユニットによって出力されるレイは、複数のＴＲＶユニットのうち１つのＴＲＶユニットから入力されてもよい。ここで、レイが入力されるＴＲＶユニットはレイの探索を処理したＴＲＶユニットであってもよい。
【００６１】
図３を参照すると、複数のＴＲＶユニット内のそれぞれの記号「Ｐｉｐｅ」はパイプライン１２０を示し、記号「＄」はキャッシュ１３０を示す。複数のＩＳＴユニットのそれぞれの記号「Ｐｉｐｅ」はパイプライン２２０を示し、記号「＄」はキャッシュ２３０を示す。
【００６２】
レイディスパッチユニット３３０及びレイ仲裁ユニット３５０によって複数のＴＲＶユニット及び複数のＩＳＴユニットのパイプライン活用がそれぞれ均等になり得る。
【００６３】
図４は、一実施形態に係るＧＰＵの構成要素の動作を示す信号フローチャートである。
【００６４】
ステップＳ４１０において、レイ生成ユニット３１０はレイを生成する。ステップＳ４１５において、レイ生成ユニット３１０は、生成されたレイをレイトレーシングユニット３２０に提供する。レイ生成ユニット３１０は、生成されたレイをレイトレーシングユニット３２０に出力してもよい。
【００６５】
ステップＳ４２０において、レイトレーシングユニット３２０はレイの追跡を処理する。ステップＳ４２５において、レイトレーシングユニット３２０は追跡が処理されたレイをシェーディングユニット３９０に提供する。レイトレーシングユニット３２０は、追跡が処理されたレイをシェーディングユニット３９０に出力する。
【００６６】
ステップＳ４３０において、シェーディングユニット３９０は、追跡が処理されたレイに基づいてシェーディングを処理する。
【００６７】
ＴＲＶユニット１００では、前述したような多様な経路のレイ入力及びレイ出力が発生する。したがって、複数のＴＲＶユニットの入力バッファ内のレイ個数だけではなく、複数のＴＲＶユニットのパイプラインの状態に基づいて入力レイを処理する目的地が決定される必要がある。ここで、パイプラインの状態はパイプライン内で処理されているレイの状態を意味する。
【００６８】
図５は、一実施形態に係るレイの追跡の方法のフローチャートである。
【００６９】
後述するステップＳ５１０ないしステップＳ５７０は図４を参照して前述のステップＳ４２０に対応する。
【００７０】
入力レイは、図４を参照して前述したステップＳ４１５でレイ生成ユニット３１５によって提供されたレイであってもよい。
【００７１】
ステップＳ５１０において、レイディスパッチユニット３３０は、複数のＴＲＶユニットのそれぞれの状態に基づいて複数のＴＲＶユニットのうち入力レイの探索を処理するＴＲＶユニットを選択する。
【００７２】
また、レイディスパッチユニット３３０は、複数のＴＲＶユニットの状態に基づいて複数のＴＲＶユニットのうち入力レイの探索を処理するＴＲＶユニットを選択する。ここで、ＴＲＶユニット１００の状態は、ＴＲＶユニット１００の入力バッファ１１０が利用可能であるか否か、またはＴＲＶユニット１００の入力バッファ１１０内のレイの個数を意味する。
【００７３】
例えば、レイディスパッチユニット３３０は、複数のＴＲＶユニットのうち入力レイの探索を処理する１つのＴＲＶユニットを選択する。さらに詳細に、レイディスパッチユニット３３０は、入力バッファ内に最も少ない個数のレイを有するＴＲＶユニットのうち最も高い寿命を有するＴＲＶユニットを選択する。または、レイディスパッチユニット３３０は、複数のＴＲＶユニットのうち入力バッファが利用したＴＲＶユニットのうち最も高い寿命を有するＴＲＶユニットを選択する。
【００７４】
複数のＴＲＶユニットのそれぞれの寿命は、複数のＴＲＶユニットのそれぞれによって処理されている１つ以上のレイの状態に基づいて決定されてもよい。
【００７５】
複数のＴＲＶユニットのそれぞれの寿命は、各ＴＲＶユニット、レイディスパッチユニット３３０、またはレイトレーシングユニット３２０によって算出または管理される。例えば、ＴＲＶユニット１００はＴＲＶユニット１００の寿命を算出して寿命格納部１９０内に格納してもよく、格納された寿命をレイディスパッチユニット３３０に提供する。または、レイディスパッチユニット３３０は複数のＴＲＶユニットの寿命をそれぞれを算出してもよく、算出された寿命を格納してもよい。
【００７６】
複数のＴＲＶユニットのそれぞれの寿命は、複数のＴＲＶユニットのそれぞれによって処理されている１つ以上のレイの状態に基づいて決定されてもよい。ＴＲＶユニット１００によって処理されている１つ以上のレイは、ＴＲＶユニット１００のパイプライン１２０内で処理されているレイ及び／またはＴＲＶユニット１００の入力バッファ内にあるレイを含んでもよい。
【００７７】
レイの状態はレイの寿命である。すなわち、ＴＲＶユニット１００によって処理されている１つ以上のレイはそれぞれ寿命を有する。レイの寿命はレイがＴＲＶユニット１００またはレイディスパッチユニット３３０内に入力され、ＴＲＶユニット１００またはレイディスパッチユニット３３０内に留まった時間の期間を示す情報であってもよい。
【００７８】
複数のＴＲＶユニットの寿命は複数のＴＲＶユニットのそれぞれによって処理されている１つ以上のレイの寿命に基づいて決定される。言い換えれば、ＴＲＶユニット１００の寿命は、ＴＲＶユニット１００に入力されたレイの状態または累積寿命を代表する情報であってもよい。例えば、複数のＴＲＶユニットのそれぞれの寿命は、複数のＴＲＶユニットのそれぞれによって処理されている１つ以上のレイの寿命の和である。すなわち、ＴＲＶユニット１００の寿命は、ＴＲＶユニット１００によって処理されている１つ以上のレイの寿命の和である。他の例として、複数のＴＲＶユニットのそれぞれの寿命は、複数のＴＲＶユニットのそれぞれによって処理されている１つ以上のレイの寿命の平均であってもよい。すなわち、ＴＲＶユニット１００の寿命は、ＴＲＶユニット１００によって処理されている１つ以上のレイの寿命の平均である。更なる例として、レイディスパッチユニットが複数のＴＲＶユニットに対する特定のＴＲＶユニットの相対的な寿命を考慮することを代わりにするか、前記考慮に追加して、レイディスパッチユニット３３０は処理されなければならないレイの寿命を直接的に考慮することで処理しなければならないレイを複数のＴＲＶユニットのうち特定のＴＲＶユニットに入力してもよい。
【００７９】
１つ以上のレイのそれぞれの寿命は、１つ以上のレイのそれぞれの探索が複数のＴＲＶユニットによって繰り返し処理された回数に基づいて決定される。探索の反復において１つの探索は、加速構造トリの１つのノードを訪問することに対応する。
【００８０】
レイの寿命は、前記レイの探索が複数ＴＲＶユニットによって繰り返し処理された回数である。例えば、ＴＲＶユニット１００の入力バッファ１１０に新しい寿命が１であるレイが入力されれば、ＴＲＶユニット１００の寿命が１だけ増加する。または、後述する入力レイの探索を処理するステップＳ５２０が繰り返されるとき、入力レイの寿命は１だけ増加する。後述する追跡が処理された入力レイを出力するステップＳ５７０において、ＴＲＶユニット１００の寿命は出力される入力レイの寿命だけ減少する。
【００８１】
言い換えれば、ＴＲＶユニット１００の大きい寿命または高い寿命は、ＴＲＶユニット１００のパイプライン１２０内に相対的にはやくリタイア（ｒｅｔｉｒｅ）する可能性が高いレイが多いことを意味する。したがって、高い寿命を有するＴＲＶユニット１００のパイプライン１２０内のレイは相対的にはやく消耗される。したがって、複数のＴＲＶユニットに入力レイを分配するとき、複数のＴＲＶユニットのうち最も高い寿命を有するＴＲＶユニットへ優先的に入力レイを分配することで複数のＴＲＶユニット間の均衡が維持され得る。
【００８２】
ステップＳ５２０において、選択されたＴＲＶユニットを用いることによって入力レイの探索が処理される。選択されたＴＲＶユニットは、入力レイの探索を処理するために用いられる。
【００８３】
ステップＳ５３０において、選択されたＴＲＶユニットまたはレイディスパッチユニット３３０は交差検査の実行可否を判断する。交差検査が要求される場合、ステップＳ５５０が行われる。交差検査が要求されない場合にステップＳ５４０が行われる。
【００８４】
ステップＳ５４０において、選択されたＴＲＶユニットまたはレイディスパッチユニット３３０は探索を繰り返すか否かを判断する。探索が繰り返される場合、トリの探索を継続するために入力レイの探索を処理するステップＳ５２０が繰り返して行われる。探索が繰り返されない場合、ステップＳ５７０が行われる。
【００８５】
複数のＴＲＶユニットは、入力レイの探索を繰り返し処理するために用いられてもよい。入力レイの探索が繰り返されるとき、入力レイの寿命は１だけ増加する。探索を繰り返すか否かは交差検査の結果に基づいて決定される。
【００８６】
ステップＳ５３０及びステップＳ５４０は例示的なものであって、交差検査の実行有無及び探索の反復可否を判断するために任意的な順序または方法が用いられてもよい。
【００８７】
ステップＳ５５０において、レイ仲裁ユニット３５０は、複数のＩＳＴユニットのうち入力レイの交差検査を処理するＩＳＴユニットを選択する。
【００８８】
複数のＴＲＶユニットのうち１つ以上のＴＲＶユニットが同時または大体的に（ｓｕｂｓｔａｎｔｉａｌｌｙ）同時にレイをレイ仲裁ユニット３５０に出力してもよい。
【００８９】
レイ仲裁ユニット３５０は、同時に出力された複数のレイの状態に基づいて優先的に処理するレイを選択する。例えば、レイ仲裁ユニット３５０は、同時に出力された複数のレイのうち最も高い寿命を有するレイを優先的に処理するレイとして選択する。
【００９０】
または、レイ仲裁ユニット３５０は、同時にレイを出力した複数のＴＲＶユニット１００の状態に基づいて同時に出力されたレイのうち優先的に処理するレイを選択する。例えば、レイ仲裁ユニット３５０は、同時にレイを出力した複数のＴＲＶユニット１００のうち最も高い寿命を有するＴＲＶユニット１００から出力されたレイを優先的に処理するレイとして選択する。一実施形態として、もし、複数のレイが１つの特定のＴＲＶユニットから出力されることに対して利用可能であり、レイ仲裁ユニット３５０は、特定のＴＲＶユニットの複数のレイのうち最も高い寿命を有するレイをＩＳＴユニットの入力として選択する。
【００９１】
ステップＳ５６０において、選択されたＩＳＴユニットは入力レイの交差検査を処理する。レイの交差検査が処理されれば、レイの探索が再び繰り返される。したがって、ステップＳ５６０が行われた後にステップＳ５２０を繰り返し行う。
【００９２】
ステップＳ５７０において、選択されたＴＲＶユニットは、追跡が処理された入力レイをシェーディングユニット３９０に出力する。追跡が処理された入力レイはバッファ３７０を経由してシェーディングユニット３９０から出力されてもよい。
【００９３】
図６は、一例に係るＴＲＶユニットの寿命管理方法のフローチャートである。
【００９４】
ステップＳ６１０において、ＴＲＶユニット１００は、入力されたレイが存在するか否かを判断する。入力されたレイが存在すればステップＳ６２０が行われる。入力されたレイが存在しなければステップＳ６４０が行われる。
【００９５】
ステップＳ６２０において、ＴＲＶユニット１００は入力されたレイを入力バッファ１１０に追加する。
【００９６】
ステップＳ６３０において、ＴＲＶユニット１００はＴＲＶユニット１００の寿命を更新する。例えば、ＴＲＶユニット１００は入力されたレイの寿命を１に設定してもよい。ＴＲＶユニット１００はＴＲＶユニット１００の寿命に１を加えたり、ＴＲＶユニット１００の寿命に入力されたレイの寿命を加えたり、すべての入力レイの平均寿命を用いるように入力レイの寿命に基づいてＴＲＶユニット１００の寿命を更新してもよい。
【００９７】
ＴＲＶユニット１００は、更新されたＴＲＶユニット１００の寿命を寿命格納部１９０内に格納する。
【００９８】
ステップＳ６４０において、パイプライン１２０はパイプライン内のレイに対する探索を処理する。ステップＳ６４０において、パイプライン１２０内に空間がある場合、入力バッファ１１０内のレイがパイプライン１２０に送信されてもよい。入力バッファ１１０内のレイは先入先出（ｆｉｒｓｔ−ｉｎ  ｆｉｒｓｔ−ｏｕｔ）方式によりパイプライン１２０に送信されてもよい。
【００９９】
ステップＳ６５０において、ＴＲＶユニット１００は、探索が終了したレイが存在するか否かを判断する。探索が終了したレイが存在すればステップＳ６６０が行われる。探索が終了したレイが存在しなければ、ステップＳ６１０を繰り返して行う。
【０１００】
探索が終了していないレイの寿命は１だけ増加してもよい。
【０１０１】
ステップＳ６６０において、ＴＲＶユニット１００はＴＲＶユニット１００の寿命を更新する。
【０１０２】
ＴＲＶユニット１００は、探索が終了したレイの寿命をＴＲＶユニット１００の寿命の更新に反映する。ＴＲＶユニット１００は、ＴＲＶユニット１００の寿命を探索が終了したレイの寿命だけ減少させる。
【０１０３】
ステップＳ６７０において、ＴＲＶユニット１００はすべてのレイの探索が終了したか否かを判断する。すべてのレイの探索が終了した場合に手続が終了する。探索が終了していないレイがある場合、ステップＳ６１０が繰り返して行われる。
【０１０４】
前述した図１ないし図５を参照して説明した技術的な内容がそのまま適用されるため、その詳細な説明は以下では省略することにする。
【０１０５】
図７は、一例に係るレイディスパッチユニットの動作方法のフローチャートである。
【０１０６】
ステップＳ７１０ないしステップＳ７３０は図５を参照して前述したステップＳ５１０に対応する。ステップＳ７１０において、レイディスパッチユニット３３０は、レイ生成ユニット３１０から入力されたレイが存在するか否かを判断する。入力されたレイが存在しない場合にステップＳ７１０が繰り返して行われる。入力されたレイが存在する場合、ステップＳ７２０が行われる。
【０１０７】
ステップＳ７２０において、レイディスパッチユニット３３０は、複数のＴＲＶユニットのうち入力されたレイの探索を処理するＴＲＶユニットを選択する。前記選択に対して図５を参照して前述した方法を適用してもよい。
【０１０８】
ステップＳ７３０において、レイディスパッチユニット３３０は、入力されたレイを選択されたＴＲＶユニットに送信する。
【０１０９】
前述した図１ないし図６を参照して説明した技術的な内容がそのまま適用されるため、その詳細な説明は以下では省略することにする。
【０１１０】
図８は、一例に係るレイ仲裁ユニットの動作方法のフローチャートである。
【０１１１】
ステップＳ８１０ないしステップＳ８５０は、図５を参照して前述したステップＳ５５０に対応する。
【０１１２】
ステップＳ８１０において、レイ仲裁ユニット３５０は、複数のＴＲＶユニットから入力されたレイが存在するか否かを判断する。入力されたレイが存在しない場合にステップＳ８１０を繰り返し行う。入力されたレイが存在する場合はステップＳ８２０が行われる。
【０１１３】
ステップＳ８２０において、レイ仲裁ユニット３５０は、入力されたレイが複数であるか否かを判断する。入力されたレイが複数である場合にステップＳ８３０が行われる。入力されたレイが複数ではない場合にステップＳ８４０が行われる。
【０１１４】
ステップＳ８３０において、レイ仲裁ユニット３５０は、複数の入力されたレイのうち優先的に処理するレイを選択する。この選択において、図５を参照して前述した方法が適用される。選択されたレイが下記のステップＳ８５０で入力されたレイとして処理されてもよい。
【０１１５】
ステップＳ８４０において、レイ仲裁ユニット３５０は、複数のＩＳＴユニットのうち入力されたレイの交差検査を処理するＩＳＴユニットを選択する。この選択において、図５を参照して前述した方法が適用される。
【０１１６】
ステップＳ８５０において、レイ仲裁ユニット３５０は、入力されたレイを選択されたＩＳＴユニットに送信する。
【０１１７】
前述した図１ないし図７を参照して説明した技術的な内容がそのまま適用されるため、その詳細な説明は以下では省略することにする。
【０１１８】
前述した方法によって、複数のＴＲＶユニット及びＩＳＴユニットを含むレイトレーシングハードウェアで、パイプライン間の動作負荷の均衡が向上し得る。
【０１１９】
実施形態に係るレイ処理方法は、多様なコンピュータ手段を介して様々な処理を実行することができるプログラム命令の形態で実現され、コンピュータ読取可能な記録媒体に記録されてもよい。コンピュータ読取可能な媒体は、プログラム命令、データファイル、データ構造などのうち１つまたはその組合せを含んでもよい。媒体に記録されるプログラム命令は、本発明の目的のために特別に設計されて構成されたものでもよく、コンピュータソフトウェア分野の技術を有する当業者にとって公知のものであり、使用可能なものであってもよい。コンピュータ読取可能な記録媒体の例としては、ハードディスク、フロッピー（登録商標）ディスク及び磁気テープのような磁気媒体、ＣＤ−ＲＯＭ、ＤＶＤのような光記録媒体、光ディスクのような光磁気媒体、及びＲＯＭ、ＲＡＭ、フラッシュメモリなどのようなプログラム命令を保存して実行するように特別に構成されたハードウェア装置が含まれてもよい。ここで説明されたソフトウェアモジュールの任意の一つ以上は、そのユニットに固有専用のプロセッサによって実行されてもよく、または、モジュールの一つ以上に共通するプロセッサによって実行されてもよい。説明された方法は汎用コンピュータやプロセッサによって実行されてもよく、ここで説明したような特定のマシンによって行われてもよい。
【０１２０】
上述したように、本発明を限定された実施形態と図面によって説明したが、本発明は、上記の実施形態に限定されることなく、本発明が属する分野における通常の知識を有する者であれば、このような実施形態から多様な修正及び変形が可能である。
【０１２１】
したがって、本発明の範囲は、開示された実施形態に限定されるものではなく、特許請求の範囲のみならず特許請求の範囲と均等なものなどによって定められるものである。
【符号の説明】
【０１２２】
１００：ＴＲＶユニット
２００：ＩＳＴユニット
３１０：レイ生成ユニット
３２０：レイトレーシングユニット
３３０：レイディスパッチユニット
３５０：レイ仲裁ユニット
３９０：シェーディングユニット
【図１】
2014026652.tif 000003
【図２】
2014026652.tif 000004
【図３】
2014026652.tif 000005
【図４】
2014026652.tif 000006
【図５】
2014026652.tif 000007
【図６】
2014026652.tif 000008
【図７】
2014026652.tif 000009
【図８】
2014026652.tif 000010
【外国語明細書】
2014026652.tif 000011
2014026652.tif 000012
2014026652.tif 000013
2014026652.tif 000014
2014026652.tif 000015
2014026652.tif 000016
2014026652.tif 000017
2014026652.tif 000018
2014026652.tif 000019
2014026652.tif 000020
2014026652.tif 000021
2014026652.tif 000022
2014026652.tif 000023
2014026652.tif 000024
2014026652.tif 000025
2014026652.tif 000026
2014026652.tif 000027
2014026652.tif 000028
2014026652.tif 000029
2014026652.tif 000030
2014026652.tif 000031
2014026652.tif 000032
2014026652.tif 000033
【図１】
2014026652.tif 000034
【図２】
2014026652.tif 000035
【図３】
2014026652.tif 000036
【図４】
2014026652.tif 000037
【図５】
2014026652.tif 000038
【図６】
2014026652.tif 000039
【図７】
2014026652.tif 000040
【図８】
2014026652.tif 000041