(57)【要約】【課題】３−Ｄレンダリングシステム、システムアーキテクチャ、及び方法を提供する。【解決手段】光線トレースを実行するように構成されたグラフィックス処理システム。光線は、一緒にバンドル化され、かつ一緒に処理される。差分データがシェーダーによって必要とされる時に、別々の追跡光線を処理するのではなく、バンドル内の真の光線のデータを使用することができる。【選択図】図１
2017188095.tif 000002
【特許請求の範囲】
【請求項１】
シーンをレンダリングするためのグラフィックス処理システム内で光線を処理するコンピュータ実装方法であって、
複数の光線を一緒に光線バンドルにグループ化する段階と、
前記シーン内の前記光線バンドルの前記光線に対して交差試験を実施する段階と、
前記光線バンドルの前記光線に対する前記交差試験の結果を使用して該光線を該光線バンドルに維持すべきか否かを決定する段階と、
前記光線バンドル内の前記光線に対して１又は２以上のシェーダープログラムを実行する段階と、
を含み、
前記シェーダープログラムのうちの少なくとも１つの前記実行は、前記光線バンドルの特定の光線に対する差分データを該光線バンドルの別の光線に対するデータを使用して決定する段階を含む、
ことを特徴とする方法。
【請求項２】
光線は、それらが、整合する交差試験結果を有する場合に、前記光線バンドルに維持されることを特徴とする請求項１に記載の方法。
【請求項３】
光線は、
前記光線が、同じプリミティブに交差し、
前記光線が、同じメッシュに交差し、又は
前記光線が、同じ物体に交差する、
場合に、整合する交差試験結果を有すると考えられる、
ことを特徴とする請求項２に記載の方法。
【請求項４】
光線は、前記交差が、同じ１又は２以上のシェーダープログラムを実行されるように呼び出す場合に、整合する交差試験結果を有すると考えられることを特徴とする請求項２に記載の方法。
【請求項５】
光線は、
交差点での面法線間の差が、角度閾値よりも下であり、又は
前記交差点内の光線深度間の差が、深度閾値よりも下である、
場合に、整合する交差試験結果を有すると考えられる、
ことを特徴とする請求項２に記載の方法。
【請求項６】
前記差分データは、前記特定の光線に対する勾配を示すことを特徴とする請求項１から請求項５のいずれか１項に記載の方法。
【請求項７】
前記シェーダープログラムのうちの前記少なくとも１つの前記実行は、前記特定の光線に対して前記決定された差分データを使用して（ｉ）該特定の光線に対する断片フットプリントを決定し、及び／又は（ｉｉ）該特定の光線に対するｍｉｐマップレベルを選択する段階を含むことを特徴とする請求項１から請求項６のいずれか１項に記載の方法。
【請求項８】
前記１又は２以上のシェーダープログラムは、前記光線バンドルの異なる光線に対して並列に実行されることを特徴とする請求項１から請求項７のいずれか１項に記載の方法。
【請求項９】
前記光線バンドルから光線を該光線が該光線バンドル内の他の光線と整合する交差試験結果を持たない場合に分割する段階を更に含むことを特徴とする請求項１から請求項８のいずれか１項に記載の方法。
【請求項１０】
前記光線バンドルの光線が、該光線バンドル内の他の光線と整合する交差試験結果を持たない場合に、該光線を該バンドル内の他の光線に対する差分データを決定するのに使用される該光線バンドル内の追跡光線としてマーク付けする段階を更に含むことを特徴とする請求項１から請求項９のいずれか１項に記載の方法。
【請求項１１】
前記光線バンドルに維持される光線の数が閾値よりも下に降下する場合に、該光線のバンドルから該光線を脱グループ化する段階を更に含むことを特徴とする請求項１から請求項１０のいずれか１項に記載の方法。
【請求項１２】
前記光線バンドル内の前記光線が、それらが該光線のバンドルから脱グループ化されることになる程度まで発散したか否かを決定する段階を更に含むことを特徴とする請求項１から請求項１１のいずれか１項に記載の方法。
【請求項１３】
一緒にグループ化される前記光線は、シェーダープログラムの前記実行に起因して放出され、
どの光線を光線バンドル内に一緒にグループ化するかに関する判断が、該光線を放出させる前記シェーダープログラム内で定められる、
ことを特徴とする請求項１から請求項１２のいずれか１項に記載の方法。
【請求項１４】
バンドル化モジュールが、処理される光線を分析し、かつどの光線を光線バンドル内に一緒にグループ化するかを決定することを特徴とする請求項１から請求項１３のいずれか１項に記載の方法。
【請求項１５】
光線バンドルが、
２ｘ２ブロックの断片に対応する４つの光線、又は
４ｘ４ブロックの断片に対応する１６の光線であって、該光線の３ｘ３ブロックだけが有効光線であり、残りの光線が追跡光線である前記１６の光線、
を含む、、
ことを特徴とする請求項１から請求項１４のいずれか１項に記載の方法。
【請求項１６】
シーンをレンダリングするように構成されたグラフィックス処理ユニットであって、
複数の光線を光線バンドル内に一緒にグループ化するように構成されたバンドル化モジュールと、
前記光線バンドルの前記光線に対して交差試験を実施し、かつ該光線バンドルの該光線に対する該交差試験の結果を使用して該光線を該光線バンドルに維持すべきか否かを決定するように構成された交差試験論理部と、
前記光線バンドル内の前記光線に対して、該光線バンドルの特定の光線に対する差分データを該光線バンドルの別の光線に対するデータを使用して決定する段階を含む１又は２以上のシェーダープログラムを実行するように構成された処理論理部と、
を含むことを特徴とするグラフィックス処理ユニット。
【請求項１７】
前記光線バンドルの前記光線に対する光線データを格納するための光線メモリを更に含むことを特徴とする請求項１６に記載のグラフィックス処理ユニット。
【請求項１８】
前記光線メモリは、光線バンドルの前記光線に対するデータをデータ構造に格納するように構成され、該データ構造に格納された少なくとも一部のデータが、該光線バンドルの光線間で共有されることを特徴とする請求項１７に記載のグラフィックス処理ユニット。
【請求項１９】
前記光線メモリは、前記光線バンドルの前記光線のうちの１又は２以上に対する前記データの少なくとも一部を該光線バンドルの該光線のうちの異なる１つに対する該データに対する差値として格納するように構成されることを特徴とする請求項１８に記載のグラフィックス処理ユニット。
【請求項２０】
符号化されたコンピュータ可読コードを有するコンピュータ可読ストレージ媒体であって、
前記コンピュータ可読コードは、該コードがコンピュータ上で実行された時に請求項１から請求項１８のいずれか１項に記載の方法が実行されるようになっている、
ことを特徴とするコンピュータ可読ストレージ媒体。
【請求項２１】
集積回路製造システム内で処理された時に請求項１９に記載のグラフィックス処理ユニットを製造するように該システムを構成する集積回路定義データセットが格納されたコンピュータ可読ストレージ媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本明細書の説明は、一般的に、３−Ｄレンダリングシステム、システムアーキテクチャ、及び方法に関する。本明細書に説明する実施例の一部は、ハイブリッド光線追跡とラスター化ベースのレンダリングとのような非同期及び同時ハイブリッドレンダリングのためのシステム、アーキテクチャ、及び方法に関する。
【背景技術】
【０００２】
グラフィックス処理ユニット（ＧＰＵ）は、多くの場合に、高度に並列化されたラスター化ベースのレンダリングハードウエアを提供する。従来のグラフィックス処理ユニット（ＧＰＵ）は、テクスチャマップによって多角形をレンダリングするためだけの固定パイプラインを使用し、かつプログラマブル頂点及び断片段を可能にするより柔軟なパイプラインに漸次進化した。現代のＧＰＵは、形状及びピクセル処理のより大きいプログラム可能性をサポートするが、ＧＰＵ内の様々な機能は、固定機能ハードウエアに実施される。現代のＧＰＵは、複雑さの範囲が広い可能性があり、かつ特定の使用に適するようになっている場合がある。ＧＰＵを設計する時に、多くの場合に、性能、サイズ、電力消費、及びコストのような様々なファクタの間にトレードオフが存在する。ＧＰＵは、多くの場合に、リアルタイムレンダリングタスクに使用され、多くのＧＰＵアプリケーションの最適化は、ショートカットを決定して主観的ビデオ品質の望ましいレベルを維持しながら毎秒の望ましいフレームスループットを達成する段階を伴う。例えば、ビデオゲームでは、光挙動の現実的モデル化が目的であることは希であり、逆に、望ましい外観又はレンダリング効果を達成することが多くの場合に主な目的である。
【０００３】
従来的に、光線追跡は、アニメーション映画の製作のような高品質非リアルタイムグラフィックレンダリングタスクに対して、又は異なる材料内の光の挙動をより忠実にモデル化する２Ｄ画像の生成に使用される技術である。光線追跡では、望ましい結果を達成するためのレンダリング及びパイプライン柔軟性の制御は、多くの場合に、望ましいフレームレートを維持するよりも重要な問題であった。同じく、光線追跡に必要な処理タスクの一部の種類は、ラスター化に最適であるハードウエア上で必ずしも実施可能ではない。
【０００４】
一例として、光線追跡は、レンダリングされる画像内に照明効果を導入するのに特に適している。シーン内の物体上に光を放つ光源は、そのシーンに対して定めることができる。一部の物体は、光源からの他の物体を遮ってシーン内に影をもたらすことができる。光線追跡技術を使用したレンダリングは、光線追跡を使用してシーン内の光の挙動をモデル化するようになっているので、光源の効果が正確にレンダリングされることを可能にする。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
グラフィックス処理システムにおいて実行される一部の作動は、差分データを決定する段階を伴う。差分データは、水平又は垂直ピクセル位置（ｄｘ又はｄｙ）の変化に対する属性の変化率を示している。例えば、シーン内の物体のレンダー平面からの距離は、空間内のシフトに対応するシーン空間内のシフトの大きさに影響を及ぼす。更に別の例として、面が、シーンがそこからレンダリングされている視点に対して傾斜している場合に、画面空間内の垂直の１ピクセルシフトは、シーン空間内の水平の１ピクセルシフトとは異なるシーン空間内のシフトに対応する場合がある。勾配データ（すなわち、差分データ）は、様々な機能、例えば、シーン内の面に適用されるテクスチャの適切なｍｉｐマップレベルを選択するのに有用とすることができる。
【課題を解決するための手段】
【０００６】
この「発明の概要」は、「発明を実施するための形態」で以下に更に説明する選択した概念を単純化された形式で紹介するために提供するものである。この「発明の概要」は、特許請求する主題の重要な特徴又は本質的な特徴を識別するように意図しておらず、特許請求する主題の範囲を制限するのに使用されるようにも意図していない。
【０００７】
シーンをレンダリングするためのグラフィックス処理システム内で光線を処理するコンピュータ実装方法を提供し、本方法は、複数の光線を一緒に光線バンドルにグループ化する段階と、シーン内の光線バンドルの光線に対して交差試験を実施する段階と、光線バンドルの光線に対する交差試験の結果を使用して光線バンドルに光線を維持すべきか否かを決定する段階と、光線バンドル内の光線に対する１又は２以上のシェーダープログラムを実行する段階と含み、シェーダープログラムのうちの少なくとも１つの実行は、光線バンドルの特定の光線に対する差分データを光線バンドルの別の光線に対するデータを使用して決定する段階を含む。
【０００８】
シーンをレンダリングするように構成されたグラフィックス処理ユニットを提供し、グラフィックス処理ユニットは、複数の光線を一緒に光線バンドルにグループ化するように構成されたバンドル化モジュールと、光線バンドルの光線に対して交差試験を実施し、かつ光線バンドルの光線に対する交差試験の結果を使用して光線バンドルに光線を維持すべきか否かを決定するように構成された交差試験論理部と、光線バンドルの特定の光線に対する差分データを光線バンドルの別の光線に対するデータを使用して決定する段階を含む光線バンドル内の光線に対する１又は２以上のシェーダープログラムを実行するように構成された処理論理部とを含む。
【０００９】
集積回路製造システムにおいて処理された時に集積回路製造システムをして本明細書の実施例のいずれかに説明するようなグラフィックス処理ユニットを製造させる集積回路のコンピュータ可読記述を格納した非一時的コンピュータ可読ストレージ媒体を同じく提供する。本明細書に説明するグラフィックス処理ユニットは、ハードウエアに具現化することができる。本明細書の実施例のいずれかに説明するようなグラフィックス処理ユニットを記述する集積回路のコンピュータ可読記述を格納した非一時的コンピュータ可読ストレージ媒体と、本明細書の実施例のいずれかに説明するようなグラフィックス処理ユニットを具現化する集積回路の回路レイアウト記述を発生させるように集積回路記述を処理するように構成されたレイアウト処理システムと、回路レイアウト記述に従ってグラフィックス処理ユニットを製造するように構成された集積回路発生システムとを含む集積回路製造システムを同じく提供することができる。
【００１０】
本明細書に説明する方法のいずれかを実行するためのコンピュータプログラムコードを提供することができる。コンピュータシステムで実行された時にコンピュータシステムをして本明細書に説明する方法のいずれかを実行させるコンピュータ可読命令を格納した非一時的コンピュータ可読ストレージ媒体を提供することができる。
【００１１】
上述の特徴は、当業者には明らかであろうが適切な場合に組み合わせることができ、かつ本明細書に説明する実施例の態様のいずれとも組み合わせることができる。
【００１２】
ここで実施例を添付図面を参照して詳細に以下に説明する。
【００１３】
添付図面は、様々な実施例を示している。当業者は、図面内に図示の要素境界（例えば、ボックス、ボックスのグループ、又は他の形状）が境界の一例を表すことを認めるであろう。一部の実施例では、１つの要素が複数の要素として描かれる場合があり、又は複数の要素が１つの要素として描かれる場合がある。共通参照番号は、適切な場合に図を通して類似の特徴を示すのに使用される。
【図面の簡単な説明】
【００１４】
【図１】グラフィックス処理システムを示す図である。
【図２】グラフィックス処理の方法のための流れ図である。
【図３】視点からレンダリングされるシーンを示す図である。
【図４】分割されない光線のバンドルの実施例を示す図である。
【図５】分割される光線のバンドルの実施例を示す図である。
【図６】グラフィックス処理システムが実施されるコンピュータシステムを示す図である。
【図７】グラフィックス処理システムを具現化する集積回路を発生させるための集積回路製造システムを示す図である。
【発明を実施するための形態】
【００１５】
以下の説明は、当業者が本発明を作って使用することを可能にするために例示的に示している。本発明は、本明細書に説明する実施形態に限定されず、開示する実施形態への異なる修正が当業者に明らかであろう。実施形態は、実施例によってのみ説明するものとする。
【００１６】
一部のレンダリングシステムにおいては、仮想ＤＸ及びＤＹ光線が差分データを決定するように形成される。これらの仮想光線は、「追跡」光線又は「探り」光線と呼ぶ。ＯｐｅｎＲＬによれば、差分光線（すなわち、追跡光線）は、三重「進路」にフレームシェーダーコードを実行することによってフレームシェーダー内で計算される。ＤＸ進路のフレーム座標は、ベクトル２（１，０）が加えられており、ＤＹ進路のフレーム座標はベクトル２（０，１）が加えられる。このようにして、光線が画面位置（ｘ、ｙ）に対応するシーン位置からトレースされる時に、２つの追跡光線も画面位置に対応するシーン位置（ｘ＋１、ｙ）及び（ｘ、ｙ＋１）から処理される。しかし、これは、Ｘの上の次のピクセルに対して、このピクセルのＤＸ光線に同じ演算が再度実行され、Ｙにおいても同様であることを意味する。隣接するピクセルの「主」進路は冗長的に計算してこのデータを格納する。
【００１７】
画面に関して１つのプリミティブに対して実行されるシェーダーの滑らかに変化する関数の変化率を計算するために差分光線が使用されることが本明細書では理解される。主光線と差分光線が同じプリミティブに衝突した時の差分光線値と主光線値の間の差が差分値である（微分近似の有限差分法）。
【００１８】
本明細書に説明する実施例において、ピクセルの追跡光線が隣接するピクセルの主光線によって冗長であり、かつ光線がシーンの形状との整合する交差を有する場合に、光線トレース差分の実施は、ピクセルの光線のグループの交差を見出し、同時に全てをシェーディングすることができる。換言すると、光線を１つの光線バンドルにグループ化することができ、光線バンドルが発散しない（例えば、異なる交差試験結果に起因して）場合に、追加の追跡光線をトレースすることなく光線バンドルの光線を互いの差分光線として使用することができる。光線トレース差分により、仮想追跡光線データを格納する必要性を排除することができる。光線トレース差分によって仮想交差及びシェーダープリアンブルとした仮想光線方向の正規化の計算を排除することができる。光線トレース差分により、三重コードを生成するためのコンパイラの必要性を排除することができる。光線トレース差分により、三重シェーダーコードを実行する必要性を排除することができる。更に、光線トレース差分によってレンダリングシステムにおけるテクスチャスループットを改善することができる。
【００１９】
光線は、光線が放出された時にグループ（例えば、４のグループ又はそれよりも多く、又はそれ未満（例えば、一部の光線がグループから失われたら）に一緒に保持され、光線がシェーディング目的で同じものに衝突した場合に、シェーディングが実行された時に１つの光線の実行からのデータを利用して同じグループの別の光線に対する差分データを示唆することができる。これらのグループは、光線バンドルと呼ぶことができる。光線バンドルが４つの光線を含む場合に、これを「クワッド光線」と呼ぶことができる。
【００２０】
一部の実施例において、全ての光線がシェーダーから光線の開始を獲得し、光線を放出することができるシェーダーは、光線の交差、コンピュータワークロード送出、及びバッファのピクセルに応答して実行の待ち行列に入れられる。シェーダーは、例えば、ピクセル／断片／フレームシェーダーとすることができる。ピクセル又は断片は、処理されるピクセル／断片間に局所性が存在するようにレンダリング空間のタイル内で処理することができ、すなわち、順番に処理されるピクセルは、レンダリング空間で互いの近くに位置する可能性が高い。ピクセル／断片／フレームシェーダーは、例えば、ピクセル／断片フットプリントを決定する場合に使用するため又はｍｉｐマップレベルを選択するために差分データを決定する必要があることがある。例えば、ＧＬＳＬ（オープンＧＬシェーディング言語）は、ｆｗｉｄｔｈ、ｄＦｄｘ、ｄＦｄｙのように機能し、差分データを使用する。シェーディングクラスターは、＋ｘ、−ｘ、＋ｙ、又は−ｙのあらゆる光線バンドルの近くの断片に照会し、近くの位置からシェーディングに必要な変数の値を決定することができる。これらの近くの位置は隣接するピクセルであることが多いが、同じピクセル内のマルチサンプル断片とすることができ、低減された解像度レンダリングに対して１ピクセルよりも遠く離れた位置を表すことがある。
【００２１】
断片におけるこの局所性が存在するので、フレームシェーダーが光線を放出した時に、その近傍も光線を放出する場合がある。グラフィックス処理システムはＳＩＭＤ実行を使用することができ、この場合に、これらの光線は、実質的に全てが一緒に放出される。これらの光線が類似の起点及び方向を有する可能性もある。従って、これらの光線は、一緒にバンドルすることができる。バンドル化は、シェーダーによって行われる例えばシェーダーコードの著者によって書かれた明示的な決定とすることができる。例えば、キーワードのような特徴は、光線追跡と共に使用されるシェーディング又はコンピュータ言語で提供することができ、出力バッファのピクセルのような別の量に関する変化率を追跡又は計算することができるデータ要素を示すことができる。バンドル化を効率的に使用することができるようにプログラマーにバンドル化機能の可視性を可能にするためのＡＰＩを提供することができる。これに代えて、例えば、光線が光線バンドルから分割される可能性に基づいて光線バンドルにグループ化する光線を決定するために光線の分析を実行することができるハードウエア又はソフトウエアモジュール（以下「バンドル化モジュール」と呼ぶ）によってバンドル化を実行することができる。この目的は、処理中に光線バンドルから分割されない光線を１つの光線バンドルにグループ化することである。本明細書の説明から明らかなように、光線が光線バンドルから分割されない時に、光線のバンドル化は、生成される追跡光線の数を低減する場合に特に有効である。一部の実施例において、光線は、タスクにおける隣接するシェーダーの放出同時並行性に基づいて１つの光線バンドルにグループ化することができる。隣接性は、断片位置に基づく場合がある。隣接性は、コンピュータシェーダー送出バッファの位置に基づく場合がある。隣接性は、同じ入射光線バンドル／グループの一部であることに起因する場合がある。
【００２２】
光線バンドルが主光線に組み立てられた状態で、光線バンドルの光線は、共に横断される。横断は、光線がシーンの形状に交差するか否かを決定するために光線に対して交差試験を実施する段階を含む。光線に対する交差試験の結果は、光線があらゆる形状に交差したか否かに関する表示を含むことができ、光線が交差を有する場合に、交差試験の結果も、交差された形状の要素の識別子（例えば、プリミティブ、メッシュ、物体）、交差が引き起こった位置、交差の形状の面法線、及び／又は交差のために呼び出されるシェーダーの表示のような交差に関するデータを含む。光線バンドルの光線が互換性のない物体（異なる作動によって又は可能であれば異なるパラメータによってシェーディングする必要があるもの）に衝突したと決定された場合に、それは、バンドルから失われる。換言すると、光線バンドルの光線に対する交差試験の結果が、光線バンドルの他の光線に対する交差試験結果に整合しない場合に、光線は、光線バンドルから分割することができる。失われた光線は追跡光線になることができ、それによって失われた光線は、差分データによって光線バンドルの他の光線を補足するために光線バンドルの有効なデータを運び続けることができる。光線バンドルの各光線は、光線が「能動」光線又は「追跡」光線か否かを示すための表示（例えば、ビット）を有することができる。光線が光線バンドルから分割された時に、光線バンドルとは別に能動光線として処理される。
【００２３】
バンドルが有効な交差（又はシェードを生じるミス）を有する時に、シェーダーは、バンドルの全ての能動光線（及び可能であれば一部の追跡光線）に対して再度実行する。そのようなシェーダーは、差分値（例えば、ｄＦｄｘ、ｄＦｄｙ、ｆｗｉｄｔｈ、サンプルなどと呼ぶＧＬＳＬでのもの）を解消するために、オリジナル断片シェーダーが有するのと同じ並行進路に適用可能である。
【００２４】
２次光線が放出された時に、２次光線は、同じシェーダーを実行する入射バンドルに十分な能動光線があるか否かに応答して、光線バンドルとして放出することができ、又は放出しなくてもよい。
【００２５】
光線の一部の閾値数が光線バンドルから失われた時に、光線バンドルとは異なるデータ構造の光線をトレースするだけで十分になる。
【００２６】
光線バンドル機能は、シェーダープログラミングインタフェースを通じて表現することができる。一部の実施では、光線が一緒にバンドルされるという事実をシェーダー著者から隠すことができ、光線のバンドル化をハードウエアの詳細として実施することができる。シェーダーコードの著者が一緒にバンドルするのに適する光線を示すことができるので（例えば、これらの光線は、ある理由で光線バンドルから発散又は分割されている可能性が低いので）、シェーダーによるバンドル化の明示性を明示的に制御することによってより高い効率が可能になる。
【００２７】
シェーディング目的に対して同じ面／材料／物体であると考えられる点で、これは、一部の実施例では同じメッシュに制限することができるが、他の実施例では、同じメッシュ、同じ三角形、同じ物体、又は同じシェーダープログラムは、光線バンドルに光線を維持しなければならないと示す場合がある。
【００２８】
光線のバンドル化は、光線間に共通のある一定のデータを共有することによって光線ストレージ及び可能であれば演算コスト（多くが横断であるが、シェーダー設定、及び可能であればあらゆる場所での）の最適化を可能にする。これは、分量の数値表現に拡張することができ、例えば、全ての光線起点が十分緊密にグループ化される場合に、本発明のシステムは、浮動点数の指数、又は可能であれば仮数ビットの一部を共有することができる。
【００２９】
一部の実施例では、光線バンドルが発散したと考える時間に関する決定は、光線バンドルの光線のシェーダーの同一性に基づいている。しかし、この決定は、複数の光線が共有されるバンドルフォーマットによって正確に表現されない時のような他のファクタに基づくことがある。これに代えて、この論理部が従来的な経路トレーサーに結合された場合に、決定は、光線が交差試験に使用された加速構造の階層を通じた異なる経路を取るか否かに基づく場合がある。
【００３０】
光線の交差を見出すモジュール（交差試験論理部）は、光線バンドルの光線をシェーダーに送る。光線バンドルの光線が整合する交差試験結果を有する限り、光線は全て、実行ユニットで同時にシェーディングされ、差分がクロス−インスタンス引き算で計算される。光線全てが同じメッシュ又はプリミティブ又は物体に衝突した場合に交差試験結果が整合すると考えることができ、一部の実施形態において、交差試験結果が整合すると考えられるようにするために満足させるべき他の連続性要件を存在させることができる。交差試験結果は、整合すると考えられるものと正確に同じものである必要はない。換言すると、完全な整合は必要ない。交差試験結果は、光線が他の観点で異なる場合でも１又は２以上の特定の観点で同じである（例えば、同じメッシュが交差される、又は何らかの他の観点、例えば、同じシェーダーが呼び出される）場合に整合することができる。例えば、同じメッシュの異なるプリミティブとの交差は、一部の実施例では整合する交差試験結果と考えることができる。他の実施例では、異なるプリミティブとの交差は、整合しない交差試験結果と考えることができる。整合する交差試験結果の定義は実施の選択である。
【００３１】
ハードウエアは、データ構造としてのバンドルを十分承知している場合がある。光線バンドルの光線は空間的に幾分コヒーレントであり、光線は恐らく類似の方向に移動し、光線のランダムセットよりも互いに類似した時間に交差試験を終了する。光線バンドルの光線のいずれかをシェーディングする前に光線バンドルの光線の全てが交差を試験されることを待つことは、多くの待ち時間を追加しない。
【００３２】
光線バンドルの光線が全て同じプリミティブに衝突しないか又はプリミティブの全く異なる部分と衝突する場合に、バンドルをともかく解体しなければならない。差分化される機能は、連続的及び円滑であると仮定され、理論的には、次のピクセルの１つではなく１次光線からの極小距離の光線を使用することができるので、差分は有効であるはずであり、等しく有効な差分を光線から計算することができる。交差発散後の有効差分を有するために、光線差分の代替の方法が選択的に使用される。以前は光線バンドルの近くにあったが今は「どこかほかの場所」に進む光線は、仮想ＤＸ又はＤＹ光線（すなわち、「追跡」光線）として使用され、衝突三角計の平面延長との交差が計算される。換言すると、第１の光線がプリミティブに交差するが、光線バンドルの１又は２以上の他の光線は交差しない。プリミティブの面は、第１の光線の追跡光線を決定するために他の光線が面とどこで及びどのように交差するかを見るために延長される。追跡光線は、シェーダーが追跡光線として扱うことを知るために光線バンドルでマーク付けされる。プリミティブに交差しない他の光線は、光線バンドルから分割され、光線バンドルとは別に、例えば、従来技術システムに類似の方式で処理され、それによって追跡光線は、光線バンドルから分割された光線に生成される。新しい光線バンドルを形成するために異なる光線バンドルから分割されている光線を一緒にグループ化することができる。
【００３３】
シェーディング中に、追跡光線は、光線バンドルの能動光線に対する差分データを決定するのに使用されるが、追跡光線は、更に別の光線を放出しない。一部の場合では、追跡光線は、実際には、追跡光線が更に別の光線を放出しないことを除いて、シェーダープログラムによって能動光線と同様に処理することができる。上述のように、光線バンドルの各光線における「仮想」ビットは、光線が真又は仮想か否か、仮想交差を計算すべきか否か、及びシェーディング中に副次的な影響を可能にするか否かを追跡するのに使用することができる。
【００３４】
光線バンドルを解体する時間に関する決定はかなり複雑である場合がある。光線バンドルの光線の全てが同じプリミティブに衝突したことを知ることは、必ずしも決定の基礎になる情報ではない。単一プリミティブは、複雑な形状、例えば、全てが１つのプリミティブにあるボルトのパイルを含有する場合がある。面法線が類似であることを検査することは１つの方法である。別の方法は、２つの光線の交差「Ｔ」値の間の差異（すなわち、交差点を光線が横断した距離）を見て光線の各々の衝突三角形の画面ｘ又はｙに対する「Ｔ」の勾配に関して検査することである。いずれかが閾値とはかなり異なる場合に、光線は発散したと考えることができる。光線バンドルを分解する時間を知るための別の方法は、衝突三角形がシーンの形状の位置を定める加速構造階層でどのくらい離れているかを見ることである。しかし、階層は、空間的に整合する極めて「離れた」ノードを有することがあり、それによって階層距離は、常に光線が発散したか否かの優良な尺度であるとは限らない。
【００３５】
シェーダーが三角形重心の導関数を求める場合に、光線バンドルの光線が同じ三角形と衝突するとは保証されないので、仮想交差がこれらの導関数を得るために計算される。
【００３６】
差分は、正確な結果をもたらさない場合がある共有左−右及び上部−下部になることになる。それによって発生するいずれの誤差も目立たないことが多いが、時には知覚される可能性もある。本発明のシステムは、最初に全ての光線バンドルが分解される高品質モードを提供することができるが、光線差分は、追跡光線を使用して標準的な方法で計算される。光線バンドル化によって獲得される効率は失われるが、品質が光線バンドル化によって危うくなることはない。
【００３７】
上述のように、光線ンバンドルは、光線の２ｘ２グループを有するクワッド光線とすることができる。例えば、光線の間の一貫性が共通の場合であることが見出される場合に、大きい光線バンドルを使用することができる（例えば、３ｘ３又は４ｘ４、又は平方以外のバンドル）。大きいバンドルの縁部光線が仮想光線である場合に、大きい光線バンドルは、差分データの左―右及び上―下共有を持たない利点を有する。例えば、４ｘ４光線バンドルを使用することができ、光線バンドルの下部左３ｘ３光線だけが有効光線であり、上縁及び右縁は全て仮想光線であり、１６インスタンスを一緒に処理することができる。これは、有効な光線の異なるデータの共有が生じないので高品質を提供する。
【００３８】
しかし、大きい光線バンドルは、交差試験を終了させるために長い時間を消費する場合があり（これは、光線バンドルの光線のあらゆるシェーディングが始まる前に光線バンドルの全ての光線が交差試験を終了するためである）、かつ光線バンドルからの光線の発散及び分割をより受け易い場合がある。
【００３９】
図１は、バンドル化モジュール１０４と、交差試験論理部１０６と、処理論理部１０８と、画像バッファ１１０と、ローカルメモリとを含むグラフィックス処理ユニット１０２を示している。ローカルメモリは、プリミティブメモリ１１４、光線メモリ１１６、及びシェーダーメモリ１１８を含む。メモリ１１２内の異なるタイプのメモリは、個別のメモリとして又は単一メモリ内の個別のセクションとして実施することができる。プリミティブメモリ１１４は、シーンでレンダリングされるプリミティブに関するデータを格納し、光線メモリ１１６は、シーンをレンダリングするために処理される光線に関するデータを格納し、シェーダーメモリ１１８は、シーンをレンダリングするために処理論理部１０８によって実行されるシェーダープログラムを格納する。バンドル化モジュール１０４、交差試験論理部、及び処理論理部１０８は、ハードウエア、ソフトウエア、又はその組合せに実施することができる。ハードウエア実施は、例えば、共通タスクを実行するための固定機能回路を使用して固定機能の加速化を可能にする。特に、バンドル化モジュール１０４及び交差試験論理部は、これらの機能を加速するために全体的に又は部分的にハードウエアに実施することができる。グラフィックス処理ユニット１０２の異なる構成要素は、グラフィックス処理ユニット１０２内のバスを通じて互いに通信することができる。交差試験論理部１０６は、レンダリングされるシーンの形状との光線の交差を試験するように構成される。処理論理部１０８は、１又は２以上の実行コアを含み、画像をレンダリングするためにグラフィックスデータを処理するように構成される。画像バッファ１１０は、レンダリングされたピクセル値を格納するように構成される。
【００４０】
グラフィックス処理ユニット１０２の作動の実施例を図２の流れ図を参照して説明する。
【００４１】
シーン内の物体を表すグラフィックスデータがグラフィックス処理ユニット１０２で受信される。グラフィックスデータは、レンダリングされる物体の面を表すプリミティブを含むことができる。プリミティブは三角形であることが多いが、他の形態、他の２次元形状、又は点又は線を取ることができる。プリミティブは、頂点のセットによって定めることができ、例えば、３つの頂点が三角形のプリミティブを定める。グラフィックスデータは、シーン内のプリミティブの頂点の頂点データ（例えば、テクスチャデータのような位置データ及び属性データ）及びどの頂点がプリミティブを形成するかを示すためのプリミティブの表示を含むことができる。グラフィックスデータはまた、レンダリングされるシーン内の光源の属性（例えば、位置、方向、色など）を定めることができる。
【００４２】
グラフィックス処理ユニット１０２は、レンダリングされる画像のピクセルの可視の面を識別するように作動する。光線追跡方法を使用することができ、シーン内のピクセルの外観を決定するために光線がトレースされる。光線は起点からトレースされ、交差試験論理部１０８が、シーン内の形状との光線の交差を決定する。図３は、２つの面３０４1と３０４2を含むシーン３０２の実施例を示している。これは、極めて単純な実施例であり、他の実施例では、シーン内に更に多くの面及び物体が存在する場合がある。図３は、シーン内の物体を照明する２つの光源３０６1及び３０６2を示している。シーンが見られる視点が３０８に示され、レンダリングされるフレームの視野平面が３１０で表されている。
【００４３】
段階Ｓ２０２で、バンドル化モジュール１０４が光線を１つの光線バンドルにグループ化する。例えば、４つの隣接する光線を一緒にバンドル化することができる。図４は、光線が放出される面４０２の実施例を示している。光線は、シェーダー実行の結果として放出させることができる。４つの光線４０６1から４０６4が図４に示され、面４０２上のそれぞれの４つの隣接する位置４０４1から４０４4から放出される。４つの光線４０６1から４０６4は、１つの光線バンドルにグループ化することができる（クワッド光線）。
【００４４】
段階Ｓ２０４で、交差試験論理部１０６は、光線バンドルの光線４０６に交差試験を実施し、光線がシーンの形状に交差したか否かを決定する。交差試験は、光線バンドルの各光線４０６に別々に実行することができる。図４に示す実施例では、光線バンドルの光線４０６の全てが同じメッシュ４０８に交差している。
【００４５】
段階Ｓ２０６で、光線バンドルの光線４０６の交差試験の結果は、光線４０６を光線バンドルに維持すべきか否かを決定するのに使用される。段階Ｓ２０６の決定は、グラフィックス処理ユニット１０２の交差試験論理部１０６、バンドル化モジュール１０４、処理論理部１０８、又は何らかの他の論理部（図１には図示せず）によって実行することができる。図４に示す実施例では、光線４０６は、それらが全て同じメッシュ４０８に交差するので、同じ光線バンドルに維持される。光線４０６の全ては、光線バンドルで有効としてマーク付けされる。
【００４６】
段階Ｓ２０８で、処理論理部１０８は、光線４０６に１又は２以上のシェーダープログラムを実行する。シェーダープログラムの実行は、光線バンドルの特定の光線に対する差分データを光線バンドルの別の光線に対するデータを使用して決定する段階を含む。例えば、光線４０６1は、ＤＹ光線として光線４０６3を使用することができ（この場合では−ｙ）、ＤＸ光線として光線４０６2を使用することができ（この場合では＋ｘ）、光線４０６2は、光線４０６4をＤＹ光線として使用することができ（この場合では−ｙ）、光線４０６1をＤＸ光線として使用することができ（この場合では−ｘ）、光線４０６3は、光線４０６1をＤＹ光線として使用することができ（この場合では＋ｙ）、光線４０６4をＤＸ光線として使用することができ（この場合では＋ｘ）、光線４０６4は、光線４０６2をＤＹ光線として使用することができ（この場合では＋ｙ）、光線４０６3をＤＸ光線として使用することができる（この場合では−ｘ）。光線バンドルの光線４０６の差分データを決定するために追加の追跡光線が処理されることはない。シェーダー実行は、更に別の光線（例えば、２次光線）の放出をもたらす場合がある。光線バンドルの光線４０６のシェーディングから生じた光線は、行われた決定に応答して、例えば、バンドル化モジュール１０４によって別の光線バンドルに共にバンドル化することができる（又はバンドル化しなくてもよい）。
【００４７】
図５は、光線が放出される面５０２の実施例を示している。光線は、シェーダー実行の結果として放出することができる。４つの光線５０６1から５０６4が図５に示され、面５０２上のそれぞれの４つの隣接する位置５０４1から５０４4から放出される。４つの光線５０６1から５０６4は、段階Ｓ２０２で１つの光線バンドルにグループ化することができる（クワッド光線）。
【００４８】
段階Ｓ２０４で、交差試験が光線５０６の各々に実行される。この実施例では、光線のうちの３つ（５０６1、５０６3、及び５０６4）が、整合する交差試験結果を有し、これらは、各々がメッシュ５０８に交差する。しかし、光線５０６2は、異なるメッシュ５１０に交差する。従って、この実施例では、光線５０６2の交差試験結果は、他の３つの光線に対する交差試験結果に整合しない。従って、段階Ｓ２０６で、光線５０６2は、光線バンドルに維持されない。残りの３つの光線５０６1、５０６3、及び５０６4は、光線バンドルに維持することができる。光線５０６2のデータは、光線バンドルで処理され、追跡光線５１２として使用される。これは、光線バンドルデータ構造における追跡光線としてマーク付けされる。追跡光線５１２は、光線５０６1、５０６3、及び５０６4の１又は２以上の交差の平面延長バージョンに交差すると決定される。
【００４９】
段階Ｓ２０８で、処理論理部１０８は、追跡光線として光線５１２を使用して、従来通りに光線バンドルの残りの光線（５０６1、５０６3、及び５０６4）を処理する。真の光線５０６2は、処理論理部１０８によって光線バンドルとは別に処理される。
【００５０】
本明細書に説明する実施例は、ＯｐｅｎＧＬの概念を利用するように意図され、一部の実施例では具体的にＯｐｅｎＧＬ  ＥＳ３．１の仕様を利用するように意図される。ＡＰＩは、フットプリント追跡／差分に対して実施することができる。
【００５１】
図６は、本明細書に説明するグラフィックス処理ユニットを実施することができるコンピュータシステムを示している。コンピュータシステムは、ＣＰＵ６０２と、ＧＰＵ６０４と、メモリ６０６と、ディスプレイ６１０、スピーカ６１２、及びカメラ６１４のような他のデバイス６０８とを含む。ＧＰＵ６０４は、上述のＧＰＵ１０２に対応することができる。メモリ６０６は、上述のメモリ１０４に対応することができる。コンピュータシステムの構成要素は、通信バス６１６を通じて互いに通信することができる。
【００５２】
グラフィックス処理ユニット１０２は、いくつかの機能ブロックを含むように示されている。これは単に概略であり、そのようなエンティティの異なる論理要素間の厳密なセクションを定めるように意図していない。各機能ブロックは、あらゆる適切な方法で提供することができる。グラフィックス処理ユニットによって形成される本明細書に説明する中間値は、あらゆる点でグラフィックス処理ユニットによって物理的に生成する必要はなく、単に入力と出力間でグラフィックス処理ユニットによって実行される処理を便宜上説明する論理値を表すことができることは理解されるものとする。
【００５３】
本明細書に説明するグラフィックス処理ユニットは、集積回路のハードウエアに実施することができる。本明細書に説明するグラフィックス処理ユニットは、本明細書に説明する方法のいずれも実行するように構成することができる。一般的に、上述の機能、方法、技術、又は構成要素のいずれも、ソフトウエア、ファームウエア、ハードウエア（例えば、固定論理回路）、又はこれらのあらゆる組合せに実施することができる。「モジュール」、「機能」、「構成要素」、「要素」、「ユニット」、「ブロック」、及び「論理部」という語は、ソフトウエア、ファームウエア、ハードウエア、又はこれらのあらゆる組合せを一般的に表すために本明細書に使用される場合がある。ソフトウエア実施の場合に、モジュール、機能、構成要素、要素、ユニット、ブロック、又は論理部は、プロセッサで実行される指定されたタスクを実行するプログラムコードを表している。本明細書に説明するアルゴリズム及び方法は、プロセッサにアルゴリズム／方法を実施させるコードを実行する１又は２以上のプロセッサによって実施することができる。コンピュータ可読ストレージ媒体の例には、ランダムアクセスメモリ（ＲＡＭ）、読取専用メモリ（ＲＯＭ）、光学ディスク、フラッシュメモリ、ハードディスクメモリ、及び磁気、光学などの技術を使用することができる他のメモリデバイスが含まれ、命令又は他のデータを格納して、機械によってアクセス可能である。
【００５４】
本明細書に使用するコンピュータプログラムコード及びコンピュータ可読命令という語は、機械言語、変換言語、又はスクリプト言語で表現されるコードを含むプロセッサに対して実行可能なコードのいずれの種類も指している。実行可能コードは、バイナリコード、機械コード、バイトコード、集積回路を定めるコード（ハードウエア記述言語又はネットリストなど）、及びＣ、Ｊａｖａ（登録商標）、又はＯｐｅｎＣＬのようなプログラミング言語コードで表されるコードを含む。実行可能コードは、例えば、仮想機械又は他のソフトウエア環境で適切に実行、処理、解釈、コンパイル、実行された時に、実行可能コードがサポートされたコンピュータシステムのプロセッサをしてコードによって指定されたタスクを実行させるあらゆる種類のソフウエア、ファームウエア、スクリプト、モジュール、又はライブラリとすることができる。
【００５５】
プロセッサ、コンピュータ、又はコンピュータシステムは、命令を実行することができる処理機能を有するあらゆる種類のデバイス、機械、又は専用回路、又はこれらの集合又は一部とすることができる。プロセッサは、ＣＰＵ、ＧＰＵ、システムオンチップ、状態機械、媒体プロセッサ、特定用途向け集積回路（ＡＳＩＣ）、プログラマブル論理アレイ、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）のようなあらゆる種類の汎用又は専用プロセッサとすることができる。コンピュータ又はコンピュータシステムは、１又は２以上のプロセッサを含むことができる。
【００５６】
望ましい機能を実行するために集積回路を設計するのに又はプログラマブルチップを構成するのに使用される場合に、ＨＤＬ（ハードウエア記述言語）ソフトウエアのような本明細書に説明するハードウエアの構成を定めるソフトウエアを収容することも意図される。すなわち、集積回路製造システムにおいて処理される時に本明細書に説明する方法のいずれかを実行し、又は本明細書に説明するあらゆる装置を含むグラフィックス処理ユニットを製造するように構成されるグラフィックス処理ユニットを製造するようにシステムを構成する集積回路定義データセットの形態でコンピュータ可読プログラムコードを符号化するコンピュータ可読ストレージ媒体を提供することができる。集積回路定義データセットは、例えば、集積回路記述とすることができる。
【００５７】
集積回路定義データセットは、例えば、ネットリスト、レジスタ転送レベル（ＲＴＬ）コードとして、Ｖｅｒｉｌｏｇ又はＶＨＤＬのようなハイレベル回路表現として、及びＯＡＳＩＳ（ＲＴＭ）及びＧＤＳＩＩのような低レベル回路表現として含むあらゆるレベルの集積回路を定めるハードウエア記述言語としてプログラマブルチップを構成するためのコードとしてのコンピュータコードの形態とすることができる。表現によって定義されるように集積回路の製造定義を生成するために、論理的に集積回路（ＲＴＬなど）を定めるハイレベル表現は、回路要素の定義及びこれらの要素を結合するための規則を含むソフトウエア環境の関連で集積回路の製造定義を生成するように構成されたコンピュータシステムにおいて処理することができる。機械を定めるためにコンピュータシステムにおいて実行するソフトウエアを備えた場合に一般的であるように、１又は２以上の中間ユーザ段階（例えば、指令、変数などを提供）をこの集積回路の製造定義を生成するために集積回路を定めるコードを実行するための集積回路の製造定義を生成するように構成されたコンピュータシステムに対して要求することができる。
【００５８】
グラフィックス処理ユニットを製造するように本発明のシステムを構成するために集積回路製造システムにおいて集積回路定義データセットを処理する実施例を図７に関してここで説明する。
【００５９】
図７は、レイアウト処理システム７０４及び集積回路発生システム７０６を含む集積回路（ＩＣ）製造システム７０２の実施例を示している。ＩＣ製造システム７０２は、ＩＣ定義データセット（例えば、本明細書の実施例のいずれかで説明したグラフィックス処理ユニットを定める）を受信し、ＩＣ定義データセットを処理し、かつＩＣ定義データセットに従ってＩＣを発生させる（例えば、本明細書の実施例のいずれかに説明したグラフィックス処理ユニットを実施する）ように構成される。ＩＣ定義データセットの処理は、本明細書の実施例のいずれかで説明したグラフィックス処理ユニットを実施する集積回路を製造するようにＩＣ製造システム７０２を構成する。
【００６０】
レイアウト処理システム７０４は、ＩＣ定義データセットを受信及び処理して回路レイアウトを決定するように構成される。ＩＣ定義データセットから回路レイアウトを決定する方法は、当業技術で公知であり、例えば、論理構成要素（例えば、ＮＡＮＤ、ＮＯＲ、ＡＮＤ、ＯＲ、ＭＵＸ、及びＦＬＩＰ−ＦＬＯＰ構成要素）の点で、発生される回路のゲートレベル表現を決定するためにＲＴＬコードを合成する段階を収容することができる。回路レイアウトは、論理構成要素の位置情報を決定することによって回路のゲートレベル表現から決定することができる。これは、回路レイアウトを最適化するために自動的に又はユーザの介入により実行することができる。レイアウト処理システム７０４が回路レイアウトを決定した時に、レイアウト処理システム７０４は、回路レイアウト定義をＩＣ発生システム７０６に出力することができる。回路レイアウト定義は、例えば、回路レイアウト記述とすることができる。
【００６１】
ＩＣ発生システム７０６は、当業技術で公知のように回路レイアウト定義に従ってＩＣを発生させる。例えば、ＩＣ発生システム７０６は、ＩＣを発生させるための半導体素子製造工程を実施することができ、半導体素子製造工程は、半導体材料から構築されたウェーハに電子回路が徐々に生成されていく過程のリソグラフィック及び化学的処理段階の複数段階シーケンスを収容することができる。回路レイアウト定義は、回路定義に従ってＩＣを発生させるためのリソグラフィック処理に使用することができるマスクの形態とすることができる。これに代えて、ＩＣ発生システム７０６に提供される回路レイアウト定義は、ＩＣを発生させる場合に使用する適切なマスクを形成するためにＩＣ発生システム７０６を使用することができるコンピュータ可読コードの形態とすることができる。
【００６２】
ＩＣ製造システム７０２によって実行される異なる処理は、１つの位置で例えば１つの当事者によって全てを実施することができる。これに代えて、ＩＣ製造システム７０２は、処理の一部が異なる位置で実行することができるように分散システムとすることができ、異なる当事者によって実行することができる。例えば、（ｉ）発生される回路のゲートレベル表現を形成するためにＩＣ定義データセットを表すＲＴＬコードを合成する段階、（ｉｉ）ゲートレベル表現に基づいて回路レイアウトを発生させる段階、（ｉｉｉ）回路レイアウトに従ってマスクを形成する段階、及び（ｉｖ）マスクを使用して集積回路を製造する段階の一部は、異なる位置で及び／又は異なる当事者によって実行することができる。
【００６３】
他の実施例では、集積回路製造システムにおける集積回路定義データセットの処理が、回路レイアウトを決定するためにＩＣ定義データセットを処理する必要なくグラフィックス処理ユニットを製造するように本発明のシステムを構成することができる。例えば、集積回路定義データセットは、ＦＰＧＡのような再構成可能プロセッサの構成を定めることができ、このデータセットの処理は、この定義された構成を有する再構成可能プロセッサを生成するように（例えば、ＦＰＧＡに構成データをロードすることにより）ＩＣ製造システムを構成することができる。
【００６４】
一部の実施形態において、集積回路製造定義データセットが、集積回路製造システムにおいて処理された時に、集積回路製造システムに本明細書に説明したデバイスを発生させることができる。例えば、集積回路製造定義データセットによる図７に関して上述した方法での集積回路製造システムの構成は、本明細書に説明したデバイスを製造させることができる。
【００６５】
一部の実施例では、集積回路定義データセットは、データセットで定義されたハードウエア、又はデータセットで定義されたハードウエアと組み合わせて実行されるソフトウエアを含むことができる。図７に示す実施例では、集積回路の製造段階で、集積回路定義データセットで定義されたプログラムコードに従ってこの集積回路にファームウエアをロードするか、又は他に集積回路と共に使用するプログラムコードを集積回路に提供するようにＩＣ発生システムを集積回路定義データセットによって更に構成することができる。
【００６６】
本出願人は、本明細書により、これらの特徴又は組合せが当業者の共通する一般的な知識の点から全体として本明細書に基づいて実行することができる程度まで、そのような特徴又は特徴の組合せが本明細書に開示するいずれの問題も解決するか否かにかかわらず、本明細書に説明する各個々の特徴及び２又は３以上のこれらの特徴のいずれの組合せも個別に開示している。以上の説明の観点から、様々な修正を本発明の範囲内で行うことができることは当業者には明らかであろう。
【符号の説明】
【００６７】
１０２  グラフィックス処理ユニット
１０４  バンドル化モジュール
１０６  交差試験論理部
１０８  処理論理部
１１２  メモリ
【図１】
2017188095.tif 000003
【図２】
2017188095.tif 000004
【図３】
2017188095.tif 000005
【図４】
2017188095.tif 000006
【図５】
2017188095.tif 000007
【図６】
2017188095.tif 000008
【図７】
2017188095.tif 000009
【外国語明細書】
2017188095000001.pdf