(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-01-16
(45)【発行日】2024-01-24
(54)【発明の名称】光線バンドルの光線に対する差分データを決定する方法及びグラフィックス処理ユニット
(51)【国際特許分類】
G06T 15/06 20110101AFI20240117BHJP
【FI】
G06T15/06
【外国語出願】
(21)【出願番号】P 2022045335
(22)【出願日】2022-03-22
(62)【分割の表示】P 2017048583の分割
【原出願日】2017-03-14
【審査請求日】2022-04-13
(32)【優先日】2016-03-14
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】501176037
【氏名又は名称】イマジネイション テクノロジーズ リミテッド
(74)【代理人】
【識別番号】100094569
【氏名又は名称】田中 伸一郎
(74)【代理人】
【識別番号】100109070
【氏名又は名称】須田 洋之
(74)【代理人】
【識別番号】100067013
【氏名又は名称】大塚 文昭
(74)【代理人】
【識別番号】100086771
【氏名又は名称】西島 孝喜
(74)【代理人】
【識別番号】100109335
【氏名又は名称】上杉 浩
(74)【代理人】
【識別番号】100120525
【氏名又は名称】近藤 直樹
(74)【代理人】
【識別番号】100139712
【氏名又は名称】那須 威夫
(72)【発明者】
【氏名】ルーク ピーターソン
(72)【発明者】
【氏名】ジェームズ ジョーンズ
(72)【発明者】
【氏名】アーロン ドワイヤー
【審査官】村松 貴士
(56)【参考文献】
【文献】特表2012-503259(JP,A)
【文献】特開平10-293782(JP,A)
【文献】Homan Igehy,“Tracing Ray Differentials”,SIGGRAPH '99: Proceedings of the 26th annual conference on Computer graphics and interactive techniq,米国,ACM,1999年,pp.179-186
(58)【調査した分野】(Int.Cl.,DB名)
G06T 15/00 - 15/87
(57)【特許請求の範囲】
【請求項1】
シーンをレンダリングするためのグラフィックス処理システム内で光線を処理するコンピュータ実装方法であって、
複数の光線を一緒に光線バンドルにグループ化する段階と、
前記シーン内の前記光線バンドルの前記光線に対して交差試験を実施する段階と、
光線が該光線バンドル内の他の光線と整合する交差試験結果を持たない場合に、該光線を該光線バンドル内の追跡光線としてマーク付けする段階と、
前記光線バンドル内の前記光線に対して1又は2以上のシェーダープログラムを実行する段階と、
を含み、
前記シェーダープログラムのうちの少なくとも1つの前記実行は、前記追跡光線を用いて、前記光線バンドルの他の光線に対する差分データを決定する段階を含む、
ことを特徴とする方法。
【請求項2】
前記シェーダープログラムのうちの少なくとも1つの前記実行は、更に別の光線の放出をもたらす、請求項1に記載の方法。
【請求項3】
前記更なる別の光線は、光線バンドルに一緒にグループ化される、請求項2に記載の方法。
【請求項4】
前記追跡光線は、前記1又は2以上のシェーダープログラムの実行中は、更なる別の光線を放出しない、請求項2又は3に記載の方法。
【請求項5】
光線は、
前記光線が、同じプリミティブに交差し、
前記光線が、同じメッシュに交差し、又は
前記光線が、同じ物体に交差する、
場合に、整合する交差試験結果を有すると考えられる、
ことを特徴とする請求項1乃至4のいずれか一項に記載の方法。
【請求項6】
光線は、前記交差が、同じ1又は2以上のシェーダープログラムを実行されるように呼び出す場合に、整合する交差試験結果を有すると考えられることを特徴とする請求項1乃至5のいずれか一項に記載の方法。
【請求項7】
前記差分データは、前記
他の光線に対する勾配を示すことを特徴とする請求項1乃至
6のいずれか一項に記載の方法。
【請求項8】
前記シェーダープログラムのうちの前記少なくとも1つの前記実行は、前記
他の光線に対して前記決定された差分データを使用して(i)
前記他の光線に対する断片フットプリントを決定し、及び/又は(ii)
前記他の光線に対するmipマップレベルを選択する段階を含むことを特徴とする請求項1乃至
7のいずれか一項に記載の方法。
【請求項9】
前記1又は2以上のシェーダープログラムは、前記光線バンドルの異なる光線に対して並列に実行されることを特徴とする請求項1乃至
8のいずれか一項に記載の方法。
【請求項10】
前記光線バンドル
から失われた光線の数が閾値
を超える場合に、
前記光線バンドルとは異なるデータ構造の光線をトレースする段階を更に含むことを特徴とする請求項1乃至
9のいずれか一項に記載の方法。
【請求項11】
前記光線バンドル内の前記光線が、
前記光線バンドルが解体されることになる程度まで発散したか否かを決定する段階を更に含むことを特徴とする請求項1乃至
10のいずれか一項に記載の方法。
【請求項12】
一緒にグループ化される前記光線は、シェーダープログラムの前記実行に起因して放出され、
どの光線を光線バンドル内に一緒にグループ化するかに関する判断が、該光線を放出させる前記シェーダープログラム内で定められる、
ことを特徴とする請求項1乃至
11のいずれか一項に記載の方法。
【請求項13】
バンドル化モジュールが、処理される光線を分析し、かつどの光線を光線バンドル内に一緒にグループ化するかを決定することを特徴とする請求項1乃至
12のいずれか一項に記載の方法。
【請求項14】
光線バンドルが、
2x2ブロックの断片に対応する4つの光線、又は
4x4ブロックの断片に対応する16の光線であって、該光線の3x3ブロックだけが有効光線であり、残りの光線が追跡光線である前記16の光線、
を含む、
ことを特徴とする請求項
1乃至13のいずれか一項に記載の方法。
【請求項15】
シーンをレンダリングするように構成されたグラフィックス処理ユニットであって、
複数の光線を光線バンドル内に一緒にグループ化するように構成されたバンドル化モジュールと、
前記光線バンドルの前記光線に対して交差試験を実施し、かつ、光線が該光線バンドル内の他の光線と整合する交差試験結果を持たない場合に、該光線を該光線バンドル内の追跡光線としてマーク付けする交差試験論理部と、
前記追跡光線を使用して前記光線バンドル内の別の光線に対して差分データを決定する段階を含む、前記光線バンドル内の前記光線に対して1又は2以上のシェーダープログラムを実行するように構成された処理論理部と、
を含むことを特徴とするグラフィックス処理ユニット。
【請求項16】
前記光線バンドルの前記光線に対する光線データを格納するための光線メモリを更に含むことを特徴とする請求項15に記載のグラフィックス処理ユニット。
【請求項17】
前記光線メモリは、光線バンドルの前記光線に対するデータをデータ構造に格納するように構成され、該データ構造に格納された少なくとも一部のデータが、該光線バンドルの光線間で共有されることを特徴とする請求項16に記載のグラフィックス処理ユニット。
【請求項18】
前記光線メモリは、前記光線バンドルの前記光線のうちの1又は2以上に対する前記データの少なくとも一部を該光線バンドルの該光線のうちの異なる1つに対する該データに対する差値として格納するように構成されることを特徴とする請求項17に記載のグラフィックス処理ユニット。
【請求項19】
符号化されたコンピュータ可読コードを有するコンピュータ可読ストレージ媒体であって、
前記コンピュータ可読コードは、該コードがコンピュータ上で実行された時に請求項1乃至
14のいずれか一項に記載の方法が実行されるようになっている、
ことを特徴とするコンピュータ可読ストレージ媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本明細書の説明は、一般的に、3-Dレンダリングシステム、システムアーキテクチャ、及び方法に関する。本明細書に説明する実施例の一部は、ハイブリッド光線追跡とラスター化ベースのレンダリングとのような非同期及び同時ハイブリッドレンダリングのためのシステム、アーキテクチャ、及び方法に関する。
【背景技術】
【0002】
グラフィックス処理ユニット(GPU)は、多くの場合に、高度に並列化されたラスター化ベースのレンダリングハードウエアを提供する。従来のグラフィックス処理ユニット(GPU)は、テクスチャマップによって多角形をレンダリングするためだけの固定パイプラインを使用し、かつプログラマブル頂点及び断片段を可能にするより柔軟なパイプラインに漸次進化した。現代のGPUは、形状及びピクセル処理のより大きいプログラム可能性をサポートするが、GPU内の様々な機能は、固定機能ハードウエアに実施される。現代のGPUは、複雑さの範囲が広い可能性があり、かつ特定の使用に適するようになっている場合がある。GPUを設計する時に、多くの場合に、性能、サイズ、電力消費、及びコストのような様々なファクタの間にトレードオフが存在する。GPUは、多くの場合に、リアルタイムレンダリングタスクに使用され、多くのGPUアプリケーションの最適化は、ショートカットを決定して主観的ビデオ品質の望ましいレベルを維持しながら毎秒の望ましいフレームスループットを達成する段階を伴う。例えば、ビデオゲームでは、光挙動の現実的モデル化が目的であることは希であり、逆に、望ましい外観又はレンダリング効果を達成することが多くの場合に主な目的である。
【0003】
従来的に、光線追跡は、アニメーション映画の製作のような高品質非リアルタイムグラフィックレンダリングタスクに対して、又は異なる材料内の光の挙動をより忠実にモデル化する2D画像の生成に使用される技術である。光線追跡では、望ましい結果を達成するためのレンダリング及びパイプライン柔軟性の制御は、多くの場合に、望ましいフレームレートを維持するよりも重要な問題であった。同じく、光線追跡に必要な処理タスクの一部の種類は、ラスター化に最適であるハードウエア上で必ずしも実施可能ではない。
【0004】
一例として、光線追跡は、レンダリングされる画像内に照明効果を導入するのに特に適している。シーン内の物体上に光を放つ光源は、そのシーンに対して定めることができる。一部の物体は、光源からの他の物体を遮ってシーン内に影をもたらすことができる。光線追跡技術を使用したレンダリングは、光線追跡を使用してシーン内の光の挙動をモデル化するようになっているので、光源の効果が正確にレンダリングされることを可能にする。
【発明の概要】
【発明が解決しようとする課題】
【0005】
グラフィックス処理システムにおいて実行される一部の作動は、差分データを決定する段階を伴う。差分データは、水平又は垂直ピクセル位置(dx又はdy)の変化に対する属性の変化率を示している。例えば、シーン内の物体のレンダー平面からの距離は、空間内のシフトに対応するシーン空間内のシフトの大きさに影響を及ぼす。更に別の例として、面が、シーンがそこからレンダリングされている視点に対して傾斜している場合に、画面空間内の垂直の1ピクセルシフトは、シーン空間内の水平の1ピクセルシフトとは異なるシーン空間内のシフトに対応する場合がある。勾配データ(すなわち、差分データ)は、様々な機能、例えば、シーン内の面に適用されるテクスチャの適切なmipマップレベルを選択するのに有用とすることができる。
【課題を解決するための手段】
【0006】
この「発明の概要」は、「発明を実施するための形態」で以下に更に説明する選択した概念を単純化された形式で紹介するために提供するものである。この「発明の概要」は、特許請求する主題の重要な特徴又は本質的な特徴を識別するように意図しておらず、特許請求する主題の範囲を制限するのに使用されるようにも意図していない。
【0007】
シーンをレンダリングするためのグラフィックス処理システム内で光線を処理するコンピュータ実装方法を提供し、本方法は、複数の光線を一緒に光線バンドルにグループ化する段階と、シーン内の光線バンドルの光線に対して交差試験を実施する段階と、光線バンドルの光線に対する交差試験の結果を使用して光線バンドルに光線を維持すべきか否かを決定する段階と、光線バンドル内の光線に対する1又は2以上のシェーダープログラムを実行する段階と含み、シェーダープログラムのうちの少なくとも1つの実行は、光線バンドルの特定の光線に対する差分データを光線バンドルの別の光線に対するデータを使用して決定する段階を含む。
【0008】
シーンをレンダリングするように構成されたグラフィックス処理ユニットを提供し、グラフィックス処理ユニットは、複数の光線を一緒に光線バンドルにグループ化するように構成されたバンドル化モジュールと、光線バンドルの光線に対して交差試験を実施し、かつ光線バンドルの光線に対する交差試験の結果を使用して光線バンドルに光線を維持すべきか否かを決定するように構成された交差試験論理部と、光線バンドルの特定の光線に対する差分データを光線バンドルの別の光線に対するデータを使用して決定する段階を含む光線バンドル内の光線に対する1又は2以上のシェーダープログラムを実行するように構成された処理論理部とを含む。
【0009】
集積回路製造システムにおいて処理された時に集積回路製造システムをして本明細書の実施例のいずれかに説明するようなグラフィックス処理ユニットを製造させる集積回路のコンピュータ可読記述を格納した非一時的コンピュータ可読ストレージ媒体を同じく提供する。本明細書に説明するグラフィックス処理ユニットは、ハードウエアに具現化することができる。本明細書の実施例のいずれかに説明するようなグラフィックス処理ユニットを記述する集積回路のコンピュータ可読記述を格納した非一時的コンピュータ可読ストレージ媒体と、本明細書の実施例のいずれかに説明するようなグラフィックス処理ユニットを具現化する集積回路の回路レイアウト記述を発生させるように集積回路記述を処理するように構成されたレイアウト処理システムと、回路レイアウト記述に従ってグラフィックス処理ユニットを製造するように構成された集積回路発生システムとを含む集積回路製造システムを同じく提供することができる。
【0010】
本明細書に説明する方法のいずれかを実行するためのコンピュータプログラムコードを提供することができる。コンピュータシステムで実行された時にコンピュータシステムをして本明細書に説明する方法のいずれかを実行させるコンピュータ可読命令を格納した非一時的コンピュータ可読ストレージ媒体を提供することができる。
【0011】
上述の特徴は、当業者には明らかであろうが適切な場合に組み合わせることができ、かつ本明細書に説明する実施例の態様のいずれとも組み合わせることができる。
【0012】
ここで実施例を添付図面を参照して詳細に以下に説明する。
【0013】
添付図面は、様々な実施例を示している。当業者は、図面内に図示の要素境界(例えば、ボックス、ボックスのグループ、又は他の形状)が境界の一例を表すことを認めるであろう。一部の実施例では、1つの要素が複数の要素として描かれる場合があり、又は複数の要素が1つの要素として描かれる場合がある。共通参照番号は、適切な場合に図を通して類似の特徴を示すのに使用される。
【図面の簡単な説明】
【0014】
【
図1】グラフィックス処理システムを示す図である。
【
図2】グラフィックス処理の方法のための流れ図である。
【
図3】視点からレンダリングされるシーンを示す図である。
【
図4】分割されない光線のバンドルの実施例を示す図である。
【
図5】分割される光線のバンドルの実施例を示す図である。
【
図6】グラフィックス処理システムが実施されるコンピュータシステムを示す図である。
【
図7】グラフィックス処理システムを具現化する集積回路を発生させるための集積回路製造システムを示す図である。
【発明を実施するための形態】
【0015】
以下の説明は、当業者が本発明を作って使用することを可能にするために例示的に示している。本発明は、本明細書に説明する実施形態に限定されず、開示する実施形態への異なる修正が当業者に明らかであろう。実施形態は、実施例によってのみ説明するものとする。
【0016】
一部のレンダリングシステムにおいては、仮想DX及びDY光線が差分データを決定するように形成される。これらの仮想光線は、「追跡」光線又は「探り」光線と呼ぶ。OpenRLによれば、差分光線(すなわち、追跡光線)は、三重「進路」にフレームシェーダーコードを実行することによってフレームシェーダー内で計算される。DX進路のフレーム座標は、ベクトル2(1,0)が加えられており、DY進路のフレーム座標はベクトル2(0,1)が加えられる。このようにして、光線が画面位置(x、y)に対応するシーン位置からトレースされる時に、2つの追跡光線も画面位置に対応するシーン位置(x+1、y)及び(x、y+1)から処理される。しかし、これは、Xの上の次のピクセルに対して、このピクセルのDX光線に同じ演算が再度実行され、Yにおいても同様であることを意味する。隣接するピクセルの「主」進路は冗長的に計算してこのデータを格納する。
【0017】
画面に関して1つのプリミティブに対して実行されるシェーダーの滑らかに変化する関数の変化率を計算するために差分光線が使用されることが本明細書では理解される。主光線と差分光線が同じプリミティブに衝突した時の差分光線値と主光線値の間の差が差分値である(微分近似の有限差分法)。
【0018】
本明細書に説明する実施例において、ピクセルの追跡光線が隣接するピクセルの主光線によって冗長であり、かつ光線がシーンの形状との整合する交差を有する場合に、光線トレース差分の実施は、ピクセルの光線のグループの交差を見出し、同時に全てをシェーディングすることができる。換言すると、光線を1つの光線バンドルにグループ化することができ、光線バンドルが発散しない(例えば、異なる交差試験結果に起因して)場合に、追加の追跡光線をトレースすることなく光線バンドルの光線を互いの差分光線として使用することができる。光線トレース差分により、仮想追跡光線データを格納する必要性を排除することができる。光線トレース差分によって仮想交差及びシェーダープリアンブルとした仮想光線方向の正規化の計算を排除することができる。光線トレース差分により、三重コードを生成するためのコンパイラの必要性を排除することができる。光線トレース差分により、三重シェーダーコードを実行する必要性を排除することができる。更に、光線トレース差分によってレンダリングシステムにおけるテクスチャスループットを改善することができる。
【0019】
光線は、光線が放出された時にグループ(例えば、4のグループ又はそれよりも多く、又はそれ未満(例えば、一部の光線がグループから失われたら)に一緒に保持され、光線がシェーディング目的で同じものに衝突した場合に、シェーディングが実行された時に1つの光線の実行からのデータを利用して同じグループの別の光線に対する差分データを示唆することができる。これらのグループは、光線バンドルと呼ぶことができる。光線バンドルが4つの光線を含む場合に、これを「クワッド光線」と呼ぶことができる。
【0020】
一部の実施例において、全ての光線がシェーダーから光線の開始を獲得し、光線を放出することができるシェーダーは、光線の交差、コンピュータワークロード送出、及びバッファのピクセルに応答して実行の待ち行列に入れられる。シェーダーは、例えば、ピクセル/断片/フレームシェーダーとすることができる。ピクセル又は断片は、処理されるピクセル/断片間に局所性が存在するようにレンダリング空間のタイル内で処理することができ、すなわち、順番に処理されるピクセルは、レンダリング空間で互いの近くに位置する可能性が高い。ピクセル/断片/フレームシェーダーは、例えば、ピクセル/断片フットプリントを決定する場合に使用するため又はmipマップレベルを選択するために差分データを決定する必要があることがある。例えば、GLSL(オープンGLシェーディング言語)は、fwidth、dFdx、dFdyのように機能し、差分データを使用する。シェーディングクラスターは、+x、-x、+y、又は-yのあらゆる光線バンドルの近くの断片に照会し、近くの位置からシェーディングに必要な変数の値を決定することができる。これらの近くの位置は隣接するピクセルであることが多いが、同じピクセル内のマルチサンプル断片とすることができ、低減された解像度レンダリングに対して1ピクセルよりも遠く離れた位置を表すことがある。
【0021】
断片におけるこの局所性が存在するので、フレームシェーダーが光線を放出した時に、その近傍も光線を放出する場合がある。グラフィックス処理システムはSIMD実行を使用することができ、この場合に、これらの光線は、実質的に全てが一緒に放出される。これらの光線が類似の起点及び方向を有する可能性もある。従って、これらの光線は、一緒にバンドルすることができる。バンドル化は、シェーダーによって行われる例えばシェーダーコードの著者によって書かれた明示的な決定とすることができる。例えば、キーワードのような特徴は、光線追跡と共に使用されるシェーディング又はコンピュータ言語で提供することができ、出力バッファのピクセルのような別の量に関する変化率を追跡又は計算することができるデータ要素を示すことができる。バンドル化を効率的に使用することができるようにプログラマーにバンドル化機能の可視性を可能にするためのAPIを提供することができる。これに代えて、例えば、光線が光線バンドルから分割される可能性に基づいて光線バンドルにグループ化する光線を決定するために光線の分析を実行することができるハードウエア又はソフトウエアモジュール(以下「バンドル化モジュール」と呼ぶ)によってバンドル化を実行することができる。この目的は、処理中に光線バンドルから分割されない光線を1つの光線バンドルにグループ化することである。本明細書の説明から明らかなように、光線が光線バンドルから分割されない時に、光線のバンドル化は、生成される追跡光線の数を低減する場合に特に有効である。一部の実施例において、光線は、タスクにおける隣接するシェーダーの放出同時並行性に基づいて1つの光線バンドルにグループ化することができる。隣接性は、断片位置に基づく場合がある。隣接性は、コンピュータシェーダー送出バッファの位置に基づく場合がある。隣接性は、同じ入射光線バンドル/グループの一部であることに起因する場合がある。
【0022】
光線バンドルが主光線に組み立てられた状態で、光線バンドルの光線は、共に横断される。横断は、光線がシーンの形状に交差するか否かを決定するために光線に対して交差試験を実施する段階を含む。光線に対する交差試験の結果は、光線があらゆる形状に交差したか否かに関する表示を含むことができ、光線が交差を有する場合に、交差試験の結果も、交差された形状の要素の識別子(例えば、プリミティブ、メッシュ、物体)、交差が引き起こった位置、交差の形状の面法線、及び/又は交差のために呼び出されるシェーダーの表示のような交差に関するデータを含む。光線バンドルの光線が互換性のない物体(異なる作動によって又は可能であれば異なるパラメータによってシェーディングする必要があるもの)に衝突したと決定された場合に、それは、バンドルから失われる。換言すると、光線バンドルの光線に対する交差試験の結果が、光線バンドルの他の光線に対する交差試験結果に整合しない場合に、光線は、光線バンドルから分割することができる。失われた光線は追跡光線になることができ、それによって失われた光線は、差分データによって光線バンドルの他の光線を補足するために光線バンドルの有効なデータを運び続けることができる。光線バンドルの各光線は、光線が「能動」光線又は「追跡」光線か否かを示すための表示(例えば、ビット)を有することができる。光線が光線バンドルから分割された時に、光線バンドルとは別に能動光線として処理される。
【0023】
バンドルが有効な交差(又はシェードを生じるミス)を有する時に、シェーダーは、バンドルの全ての能動光線(及び可能であれば一部の追跡光線)に対して再度実行する。そのようなシェーダーは、差分値(例えば、dFdx、dFdy、fwidth、サンプルなどと呼ぶGLSLでのもの)を解消するために、オリジナル断片シェーダーが有するのと同じ並行進路に適用可能である。
【0024】
2次光線が放出された時に、2次光線は、同じシェーダーを実行する入射バンドルに十分な能動光線があるか否かに応答して、光線バンドルとして放出することができ、又は放出しなくてもよい。
【0025】
光線の一部の閾値数が光線バンドルから失われた時に、光線バンドルとは異なるデータ構造の光線をトレースするだけで十分になる。
【0026】
光線バンドル機能は、シェーダープログラミングインタフェースを通じて表現することができる。一部の実施では、光線が一緒にバンドルされるという事実をシェーダー著者から隠すことができ、光線のバンドル化をハードウエアの詳細として実施することができる。シェーダーコードの著者が一緒にバンドルするのに適する光線を示すことができるので(例えば、これらの光線は、ある理由で光線バンドルから発散又は分割されている可能性が低いので)、シェーダーによるバンドル化の明示性を明示的に制御することによってより高い効率が可能になる。
【0027】
シェーディング目的に対して同じ面/材料/物体であると考えられる点で、これは、一部の実施例では同じメッシュに制限することができるが、他の実施例では、同じメッシュ、同じ三角形、同じ物体、又は同じシェーダープログラムは、光線バンドルに光線を維持しなければならないと示す場合がある。
【0028】
光線のバンドル化は、光線間に共通のある一定のデータを共有することによって光線ストレージ及び可能であれば演算コスト(多くが横断であるが、シェーダー設定、及び可能であればあらゆる場所での)の最適化を可能にする。これは、分量の数値表現に拡張することができ、例えば、全ての光線起点が十分緊密にグループ化される場合に、本発明のシステムは、浮動点数の指数、又は可能であれば仮数ビットの一部を共有することができる。
【0029】
一部の実施例では、光線バンドルが発散したと考える時間に関する決定は、光線バンドルの光線のシェーダーの同一性に基づいている。しかし、この決定は、複数の光線が共有されるバンドルフォーマットによって正確に表現されない時のような他のファクタに基づくことがある。これに代えて、この論理部が従来的な経路トレーサーに結合された場合に、決定は、光線が交差試験に使用された加速構造の階層を通じた異なる経路を取るか否かに基づく場合がある。
【0030】
光線の交差を見出すモジュール(交差試験論理部)は、光線バンドルの光線をシェーダーに送る。光線バンドルの光線が整合する交差試験結果を有する限り、光線は全て、実行ユニットで同時にシェーディングされ、差分がクロス-インスタンス引き算で計算される。光線全てが同じメッシュ又はプリミティブ又は物体に衝突した場合に交差試験結果が整合すると考えることができ、一部の実施形態において、交差試験結果が整合すると考えられるようにするために満足させるべき他の連続性要件を存在させることができる。交差試験結果は、整合すると考えられるものと正確に同じものである必要はない。換言すると、完全な整合は必要ない。交差試験結果は、光線が他の観点で異なる場合でも1又は2以上の特定の観点で同じである(例えば、同じメッシュが交差される、又は何らかの他の観点、例えば、同じシェーダーが呼び出される)場合に整合することができる。例えば、同じメッシュの異なるプリミティブとの交差は、一部の実施例では整合する交差試験結果と考えることができる。他の実施例では、異なるプリミティブとの交差は、整合しない交差試験結果と考えることができる。整合する交差試験結果の定義は実施の選択である。
【0031】
ハードウエアは、データ構造としてのバンドルを十分承知している場合がある。光線バンドルの光線は空間的に幾分コヒーレントであり、光線は恐らく類似の方向に移動し、光線のランダムセットよりも互いに類似した時間に交差試験を終了する。光線バンドルの光線のいずれかをシェーディングする前に光線バンドルの光線の全てが交差を試験されることを待つことは、多くの待ち時間を追加しない。
【0032】
光線バンドルの光線が全て同じプリミティブに衝突しないか又はプリミティブの全く異なる部分と衝突する場合に、バンドルをともかく解体しなければならない。差分化される機能は、連続的及び円滑であると仮定され、理論的には、次のピクセルの1つではなく1次光線からの極小距離の光線を使用することができるので、差分は有効であるはずであり、等しく有効な差分を光線から計算することができる。交差発散後の有効差分を有するために、光線差分の代替の方法が選択的に使用される。以前は光線バンドルの近くにあったが今は「どこかほかの場所」に進む光線は、仮想DX又はDY光線(すなわち、「追跡」光線)として使用され、衝突三角計の平面延長との交差が計算される。換言すると、第1の光線がプリミティブに交差するが、光線バンドルの1又は2以上の他の光線は交差しない。プリミティブの面は、第1の光線の追跡光線を決定するために他の光線が面とどこで及びどのように交差するかを見るために延長される。追跡光線は、シェーダーが追跡光線として扱うことを知るために光線バンドルでマーク付けされる。プリミティブに交差しない他の光線は、光線バンドルから分割され、光線バンドルとは別に、例えば、従来技術システムに類似の方式で処理され、それによって追跡光線は、光線バンドルから分割された光線に生成される。新しい光線バンドルを形成するために異なる光線バンドルから分割されている光線を一緒にグループ化することができる。
【0033】
シェーディング中に、追跡光線は、光線バンドルの能動光線に対する差分データを決定するのに使用されるが、追跡光線は、更に別の光線を放出しない。一部の場合では、追跡光線は、実際には、追跡光線が更に別の光線を放出しないことを除いて、シェーダープログラムによって能動光線と同様に処理することができる。上述のように、光線バンドルの各光線における「仮想」ビットは、光線が真又は仮想か否か、仮想交差を計算すべきか否か、及びシェーディング中に副次的な影響を可能にするか否かを追跡するのに使用することができる。
【0034】
光線バンドルを解体する時間に関する決定はかなり複雑である場合がある。光線バンドルの光線の全てが同じプリミティブに衝突したことを知ることは、必ずしも決定の基礎になる情報ではない。単一プリミティブは、複雑な形状、例えば、全てが1つのプリミティブにあるボルトのパイルを含有する場合がある。面法線が類似であることを検査することは1つの方法である。別の方法は、2つの光線の交差「T」値の間の差異(すなわち、交差点を光線が横断した距離)を見て光線の各々の衝突三角形の画面x又はyに対する「T」の勾配に関して検査することである。いずれかが閾値とはかなり異なる場合に、光線は発散したと考えることができる。光線バンドルを分解する時間を知るための別の方法は、衝突三角形がシーンの形状の位置を定める加速構造階層でどのくらい離れているかを見ることである。しかし、階層は、空間的に整合する極めて「離れた」ノードを有することがあり、それによって階層距離は、常に光線が発散したか否かの優良な尺度であるとは限らない。
【0035】
シェーダーが三角形重心の導関数を求める場合に、光線バンドルの光線が同じ三角形と衝突するとは保証されないので、仮想交差がこれらの導関数を得るために計算される。
【0036】
差分は、正確な結果をもたらさない場合がある共有左-右及び上部-下部になることになる。それによって発生するいずれの誤差も目立たないことが多いが、時には知覚される可能性もある。本発明のシステムは、最初に全ての光線バンドルが分解される高品質モードを提供することができるが、光線差分は、追跡光線を使用して標準的な方法で計算される。光線バンドル化によって獲得される効率は失われるが、品質が光線バンドル化によって危うくなることはない。
【0037】
上述のように、光線ンバンドルは、光線の2x2グループを有するクワッド光線とすることができる。例えば、光線の間の一貫性が共通の場合であることが見出される場合に、大きい光線バンドルを使用することができる(例えば、3x3又は4x4、又は平方以外のバンドル)。大きいバンドルの縁部光線が仮想光線である場合に、大きい光線バンドルは、差分データの左―右及び上―下共有を持たない利点を有する。例えば、4x4光線バンドルを使用することができ、光線バンドルの下部左3x3光線だけが有効光線であり、上縁及び右縁は全て仮想光線であり、16インスタンスを一緒に処理することができる。これは、有効な光線の異なるデータの共有が生じないので高品質を提供する。
【0038】
しかし、大きい光線バンドルは、交差試験を終了させるために長い時間を消費する場合があり(これは、光線バンドルの光線のあらゆるシェーディングが始まる前に光線バンドルの全ての光線が交差試験を終了するためである)、かつ光線バンドルからの光線の発散及び分割をより受け易い場合がある。
【0039】
図1は、バンドル化モジュール104と、交差試験論理部106と、処理論理部108と、画像バッファ110と、ローカルメモリとを含むグラフィックス処理ユニット102を示している。ローカルメモリは、プリミティブメモリ114、光線メモリ116、及びシェーダーメモリ118を含む。メモリ112内の異なるタイプのメモリは、個別のメモリとして又は単一メモリ内の個別のセクションとして実施することができる。プリミティブメモリ114は、シーンでレンダリングされるプリミティブに関するデータを格納し、光線メモリ116は、シーンをレンダリングするために処理される光線に関するデータを格納し、シェーダーメモリ118は、シーンをレンダリングするために処理論理部108によって実行されるシェーダープログラムを格納する。バンドル化モジュール104、交差試験論理部、及び処理論理部108は、ハードウエア、ソフトウエア、又はその組合せに実施することができる。ハードウエア実施は、例えば、共通タスクを実行するための固定機能回路を使用して固定機能の加速化を可能にする。特に、バンドル化モジュール104及び交差試験論理部は、これらの機能を加速するために全体的に又は部分的にハードウエアに実施することができる。グラフィックス処理ユニット102の異なる構成要素は、グラフィックス処理ユニット102内のバスを通じて互いに通信することができる。交差試験論理部106は、レンダリングされるシーンの形状との光線の交差を試験するように構成される。処理論理部108は、1又は2以上の実行コアを含み、画像をレンダリングするためにグラフィックスデータを処理するように構成される。画像バッファ110は、レンダリングされたピクセル値を格納するように構成される。
【0040】
グラフィックス処理ユニット102の作動の実施例を
図2の流れ図を参照して説明する。
【0041】
シーン内の物体を表すグラフィックスデータがグラフィックス処理ユニット102で受信される。グラフィックスデータは、レンダリングされる物体の面を表すプリミティブを含むことができる。プリミティブは三角形であることが多いが、他の形態、他の2次元形状、又は点又は線を取ることができる。プリミティブは、頂点のセットによって定めることができ、例えば、3つの頂点が三角形のプリミティブを定める。グラフィックスデータは、シーン内のプリミティブの頂点の頂点データ(例えば、テクスチャデータのような位置データ及び属性データ)及びどの頂点がプリミティブを形成するかを示すためのプリミティブの表示を含むことができる。グラフィックスデータはまた、レンダリングされるシーン内の光源の属性(例えば、位置、方向、色など)を定めることができる。
【0042】
グラフィックス処理ユニット102は、レンダリングされる画像のピクセルの可視の面を識別するように作動する。光線追跡方法を使用することができ、シーン内のピクセルの外観を決定するために光線がトレースされる。光線は起点からトレースされ、交差試験論理部108が、シーン内の形状との光線の交差を決定する。
図3は、2つの面304
1と304
2を含むシーン302の実施例を示している。これは、極めて単純な実施例であり、他の実施例では、シーン内に更に多くの面及び物体が存在する場合がある。
図3は、シーン内の物体を照明する2つの光源306
1及び306
2を示している。シーンが見られる視点が308に示され、レンダリングされるフレームの視野平面が310で表されている。
【0043】
段階S202で、バンドル化モジュール104が光線を1つの光線バンドルにグループ化する。例えば、4つの隣接する光線を一緒にバンドル化することができる。
図4は、光線が放出される面402の実施例を示している。光線は、シェーダー実行の結果として放出させることができる。4つの光線406
1から406
4が
図4に示され、面402上のそれぞれの4つの隣接する位置404
1から404
4から放出される。4つの光線406
1から406
4は、1つの光線バンドルにグループ化することができる(クワッド光線)。
【0044】
段階S204で、交差試験論理部106は、光線バンドルの光線406に交差試験を実施し、光線がシーンの形状に交差したか否かを決定する。交差試験は、光線バンドルの各光線406に別々に実行することができる。
図4に示す実施例では、光線バンドルの光線406の全てが同じメッシュ408に交差している。
【0045】
段階S206で、光線バンドルの光線406の交差試験の結果は、光線406を光線バンドルに維持すべきか否かを決定するのに使用される。段階S206の決定は、グラフィックス処理ユニット102の交差試験論理部106、バンドル化モジュール104、処理論理部108、又は何らかの他の論理部(
図1には図示せず)によって実行することができる。
図4に示す実施例では、光線406は、それらが全て同じメッシュ408に交差するので、同じ光線バンドルに維持される。光線406の全ては、光線バンドルで有効としてマーク付けされる。
【0046】
段階S208で、処理論理部108は、光線406に1又は2以上のシェーダープログラムを実行する。シェーダープログラムの実行は、光線バンドルの特定の光線に対する差分データを光線バンドルの別の光線に対するデータを使用して決定する段階を含む。例えば、光線4061は、DY光線として光線4063を使用することができ(この場合では-y)、DX光線として光線4062を使用することができ(この場合では+x)、光線4062は、光線4064をDY光線として使用することができ(この場合では-y)、光線4061をDX光線として使用することができ(この場合では-x)、光線4063は、光線4061をDY光線として使用することができ(この場合では+y)、光線4064をDX光線として使用することができ(この場合では+x)、光線4064は、光線4062をDY光線として使用することができ(この場合では+y)、光線4063をDX光線として使用することができる(この場合では-x)。光線バンドルの光線406の差分データを決定するために追加の追跡光線が処理されることはない。シェーダー実行は、更に別の光線(例えば、2次光線)の放出をもたらす場合がある。光線バンドルの光線406のシェーディングから生じた光線は、行われた決定に応答して、例えば、バンドル化モジュール104によって別の光線バンドルに共にバンドル化することができる(又はバンドル化しなくてもよい)。
【0047】
図5は、光線が放出される面502の実施例を示している。光線は、シェーダー実行の結果として放出することができる。4つの光線506
1から506
4が
図5に示され、面502上のそれぞれの4つの隣接する位置504
1から504
4から放出される。4つの光線506
1から506
4は、段階S202で1つの光線バンドルにグループ化することができる(クワッド光線)。
【0048】
段階S204で、交差試験が光線506の各々に実行される。この実施例では、光線のうちの3つ(5061、5063、及び5064)が、整合する交差試験結果を有し、これらは、各々がメッシュ508に交差する。しかし、光線5062は、異なるメッシュ510に交差する。従って、この実施例では、光線5062の交差試験結果は、他の3つの光線に対する交差試験結果に整合しない。従って、段階S206で、光線5062は、光線バンドルに維持されない。残りの3つの光線5061、5063、及び5064は、光線バンドルに維持することができる。光線5062のデータは、光線バンドルで処理され、追跡光線512として使用される。これは、光線バンドルデータ構造における追跡光線としてマーク付けされる。追跡光線512は、光線5061、5063、及び5064の1又は2以上の交差の平面延長バージョンに交差すると決定される。
【0049】
段階S208で、処理論理部108は、追跡光線として光線512を使用して、従来通りに光線バンドルの残りの光線(5061、5063、及び5064)を処理する。真の光線5062は、処理論理部108によって光線バンドルとは別に処理される。
【0050】
本明細書に説明する実施例は、OpenGLの概念を利用するように意図され、一部の実施例では具体的にOpenGL ES3.1の仕様を利用するように意図される。APIは、フットプリント追跡/差分に対して実施することができる。
【0051】
図6は、本明細書に説明するグラフィックス処理ユニットを実施することができるコンピュータシステムを示している。コンピュータシステムは、CPU602と、GPU604と、メモリ606と、ディスプレイ610、スピーカ612、及びカメラ614のような他のデバイス608とを含む。GPU604は、上述のGPU102に対応することができる。メモリ606は、上述のメモリ104に対応することができる。コンピュータシステムの構成要素は、通信バス616を通じて互いに通信することができる。
【0052】
グラフィックス処理ユニット102は、いくつかの機能ブロックを含むように示されている。これは単に概略であり、そのようなエンティティの異なる論理要素間の厳密なセクションを定めるように意図していない。各機能ブロックは、あらゆる適切な方法で提供することができる。グラフィックス処理ユニットによって形成される本明細書に説明する中間値は、あらゆる点でグラフィックス処理ユニットによって物理的に生成する必要はなく、単に入力と出力間でグラフィックス処理ユニットによって実行される処理を便宜上説明する論理値を表すことができることは理解されるものとする。
【0053】
本明細書に説明するグラフィックス処理ユニットは、集積回路のハードウエアに実施することができる。本明細書に説明するグラフィックス処理ユニットは、本明細書に説明する方法のいずれも実行するように構成することができる。一般的に、上述の機能、方法、技術、又は構成要素のいずれも、ソフトウエア、ファームウエア、ハードウエア(例えば、固定論理回路)、又はこれらのあらゆる組合せに実施することができる。「モジュール」、「機能」、「構成要素」、「要素」、「ユニット」、「ブロック」、及び「論理部」という語は、ソフトウエア、ファームウエア、ハードウエア、又はこれらのあらゆる組合せを一般的に表すために本明細書に使用される場合がある。ソフトウエア実施の場合に、モジュール、機能、構成要素、要素、ユニット、ブロック、又は論理部は、プロセッサで実行される指定されたタスクを実行するプログラムコードを表している。本明細書に説明するアルゴリズム及び方法は、プロセッサにアルゴリズム/方法を実施させるコードを実行する1又は2以上のプロセッサによって実施することができる。コンピュータ可読ストレージ媒体の例には、ランダムアクセスメモリ(RAM)、読取専用メモリ(ROM)、光学ディスク、フラッシュメモリ、ハードディスクメモリ、及び磁気、光学などの技術を使用することができる他のメモリデバイスが含まれ、命令又は他のデータを格納して、機械によってアクセス可能である。
【0054】
本明細書に使用するコンピュータプログラムコード及びコンピュータ可読命令という語は、機械言語、変換言語、又はスクリプト言語で表現されるコードを含むプロセッサに対して実行可能なコードのいずれの種類も指している。実行可能コードは、バイナリコード、機械コード、バイトコード、集積回路を定めるコード(ハードウエア記述言語又はネットリストなど)、及びC、Java(登録商標)、又はOpenCLのようなプログラミング言語コードで表されるコードを含む。実行可能コードは、例えば、仮想機械又は他のソフトウエア環境で適切に実行、処理、解釈、コンパイル、実行された時に、実行可能コードがサポートされたコンピュータシステムのプロセッサをしてコードによって指定されたタスクを実行させるあらゆる種類のソフウエア、ファームウエア、スクリプト、モジュール、又はライブラリとすることができる。
【0055】
プロセッサ、コンピュータ、又はコンピュータシステムは、命令を実行することができる処理機能を有するあらゆる種類のデバイス、機械、又は専用回路、又はこれらの集合又は一部とすることができる。プロセッサは、CPU、GPU、システムオンチップ、状態機械、媒体プロセッサ、特定用途向け集積回路(ASIC)、プログラマブル論理アレイ、フィールドプログラマブルゲートアレイ(FPGA)のようなあらゆる種類の汎用又は専用プロセッサとすることができる。コンピュータ又はコンピュータシステムは、1又は2以上のプロセッサを含むことができる。
【0056】
望ましい機能を実行するために集積回路を設計するのに又はプログラマブルチップを構成するのに使用される場合に、HDL(ハードウエア記述言語)ソフトウエアのような本明細書に説明するハードウエアの構成を定めるソフトウエアを収容することも意図される。すなわち、集積回路製造システムにおいて処理される時に本明細書に説明する方法のいずれかを実行し、又は本明細書に説明するあらゆる装置を含むグラフィックス処理ユニットを製造するように構成されるグラフィックス処理ユニットを製造するようにシステムを構成する集積回路定義データセットの形態でコンピュータ可読プログラムコードを符号化するコンピュータ可読ストレージ媒体を提供することができる。集積回路定義データセットは、例えば、集積回路記述とすることができる。
【0057】
集積回路定義データセットは、例えば、ネットリスト、レジスタ転送レベル(RTL)コードとして、Verilog又はVHDLのようなハイレベル回路表現として、及びOASIS(RTM)及びGDSIIのような低レベル回路表現として含むあらゆるレベルの集積回路を定めるハードウエア記述言語としてプログラマブルチップを構成するためのコードとしてのコンピュータコードの形態とすることができる。表現によって定義されるように集積回路の製造定義を生成するために、論理的に集積回路(RTLなど)を定めるハイレベル表現は、回路要素の定義及びこれらの要素を結合するための規則を含むソフトウエア環境の関連で集積回路の製造定義を生成するように構成されたコンピュータシステムにおいて処理することができる。機械を定めるためにコンピュータシステムにおいて実行するソフトウエアを備えた場合に一般的であるように、1又は2以上の中間ユーザ段階(例えば、指令、変数などを提供)をこの集積回路の製造定義を生成するために集積回路を定めるコードを実行するための集積回路の製造定義を生成するように構成されたコンピュータシステムに対して要求することができる。
【0058】
グラフィックス処理ユニットを製造するように本発明のシステムを構成するために集積回路製造システムにおいて集積回路定義データセットを処理する実施例を
図7に関してここで説明する。
【0059】
図7は、レイアウト処理システム704及び集積回路発生システム706を含む集積回路(IC)製造システム702の実施例を示している。IC製造システム702は、IC定義データセット(例えば、本明細書の実施例のいずれかで説明したグラフィックス処理ユニットを定める)を受信し、IC定義データセットを処理し、かつIC定義データセットに従ってICを発生させる(例えば、本明細書の実施例のいずれかに説明したグラフィックス処理ユニットを実施する)ように構成される。IC定義データセットの処理は、本明細書の実施例のいずれかで説明したグラフィックス処理ユニットを実施する集積回路を製造するようにIC製造システム702を構成する。
【0060】
レイアウト処理システム704は、IC定義データセットを受信及び処理して回路レイアウトを決定するように構成される。IC定義データセットから回路レイアウトを決定する方法は、当業技術で公知であり、例えば、論理構成要素(例えば、NAND、NOR、AND、OR、MUX、及びFLIP-FLOP構成要素)の点で、発生される回路のゲートレベル表現を決定するためにRTLコードを合成する段階を収容することができる。回路レイアウトは、論理構成要素の位置情報を決定することによって回路のゲートレベル表現から決定することができる。これは、回路レイアウトを最適化するために自動的に又はユーザの介入により実行することができる。レイアウト処理システム704が回路レイアウトを決定した時に、レイアウト処理システム704は、回路レイアウト定義をIC発生システム706に出力することができる。回路レイアウト定義は、例えば、回路レイアウト記述とすることができる。
【0061】
IC発生システム706は、当業技術で公知のように回路レイアウト定義に従ってICを発生させる。例えば、IC発生システム706は、ICを発生させるための半導体素子製造工程を実施することができ、半導体素子製造工程は、半導体材料から構築されたウェーハに電子回路が徐々に生成されていく過程のリソグラフィック及び化学的処理段階の複数段階シーケンスを収容することができる。回路レイアウト定義は、回路定義に従ってICを発生させるためのリソグラフィック処理に使用することができるマスクの形態とすることができる。これに代えて、IC発生システム706に提供される回路レイアウト定義は、ICを発生させる場合に使用する適切なマスクを形成するためにIC発生システム706を使用することができるコンピュータ可読コードの形態とすることができる。
【0062】
IC製造システム702によって実行される異なる処理は、1つの位置で例えば1つの当事者によって全てを実施することができる。これに代えて、IC製造システム702は、処理の一部が異なる位置で実行することができるように分散システムとすることができ、異なる当事者によって実行することができる。例えば、(i)発生される回路のゲートレベル表現を形成するためにIC定義データセットを表すRTLコードを合成する段階、(ii)ゲートレベル表現に基づいて回路レイアウトを発生させる段階、(iii)回路レイアウトに従ってマスクを形成する段階、及び(iv)マスクを使用して集積回路を製造する段階の一部は、異なる位置で及び/又は異なる当事者によって実行することができる。
【0063】
他の実施例では、集積回路製造システムにおける集積回路定義データセットの処理が、回路レイアウトを決定するためにIC定義データセットを処理する必要なくグラフィックス処理ユニットを製造するように本発明のシステムを構成することができる。例えば、集積回路定義データセットは、FPGAのような再構成可能プロセッサの構成を定めることができ、このデータセットの処理は、この定義された構成を有する再構成可能プロセッサを生成するように(例えば、FPGAに構成データをロードすることにより)IC製造システムを構成することができる。
【0064】
一部の実施形態において、集積回路製造定義データセットが、集積回路製造システムにおいて処理された時に、集積回路製造システムに本明細書に説明したデバイスを発生させることができる。例えば、集積回路製造定義データセットによる
図7に関して上述した方法での集積回路製造システムの構成は、本明細書に説明したデバイスを製造させることができる。
【0065】
一部の実施例では、集積回路定義データセットは、データセットで定義されたハードウエア、又はデータセットで定義されたハードウエアと組み合わせて実行されるソフトウエアを含むことができる。
図7に示す実施例では、集積回路の製造段階で、集積回路定義データセットで定義されたプログラムコードに従ってこの集積回路にファームウエアをロードするか、又は他に集積回路と共に使用するプログラムコードを集積回路に提供するようにIC発生システムを集積回路定義データセットによって更に構成することができる。
【0066】
本出願人は、本明細書により、これらの特徴又は組合せが当業者の共通する一般的な知識の点から全体として本明細書に基づいて実行することができる程度まで、そのような特徴又は特徴の組合せが本明細書に開示するいずれの問題も解決するか否かにかかわらず、本明細書に説明する各個々の特徴及び2又は3以上のこれらの特徴のいずれの組合せも個別に開示している。以上の説明の観点から、様々な修正を本発明の範囲内で行うことができることは当業者には明らかであろう。
【符号の説明】
【0067】
102 グラフィックス処理ユニット
104 バンドル化モジュール
106 交差試験論理部
108 処理論理部
112 メモリ