レイトレース・レンダリングのための並列化された交差テストおよびシェーディングのアーキテクチャ
专利摘要:
レイトレース・レンダリングのための並列化された交差テストおよびシェーディングのアーキテクチャを提供する。 実施例では、シーンのレイトレーシングは、リンク/キューを介して全体として通信する複数のシェーディング資源と連結された複数の交差テスト資源を使用する工程を含む。テストからシェーディングへのキューは、レイ識別子を含むそれぞれのレイ/プリミティブ交差指標を含む。シェーディングからテストへのキューは、テストされる新しいレイの識別子を含み、レイを定義するデータは交差テスト資源の間に分散させられたメモリに別個に格納される。レイ定義データは、レイ識別子に基づいて複数回に亘りテストのため選択可能である場合、レイが交差テストを終了するまで、分散メモリの中で維持することが可能である。アクセラレイション形状の構造が使用可能である。レイ識別子および形状データのパケットは、交差テスト資源の間を循環可能であり、各交差テスト資源はパケットの中で特定されたレイをテスト可能であり、そのレイのための定義データが交差テスト資源のメモリの中に存在する。アクセラレイション形状テスト結果は、交差した形状に基づいてレイのコレクションを可能にさせ、最近傍検出レイ/プリミティブ交差はシェーディングのためのレイ識別子をキューイングすることによって指示される。 公开号:JP2011515766A 申请号:JP2011500994 申请日:2009-03-20 公开日:2011-05-19 发明作者:サルスバリー、ライアン、アール.;パーセル、スティーブン;ピーターソン、ルーク、ティルマン;マコーム、ジェームス、アレキサンダー 申请人:コースティック グラフィックス、インク.; IPC主号:G06T15-06
专利说明:
[0001] (関連出願の相互参照) 本願は、2009年3月20日付けで出願された米国特許出願第12,408,478号による優先権、2008年3月21日付けで出願された、発明の名称が「Coupling Ray Storage and Compute for Memory−Efficient Ray Intersection Test Scaling」である米国仮出願第61/038,731号による優先権、および、2008年9月10日付けで出願された、発明の名称が「Architectures for Parallelized Intersection Testing and Shading for Ray−Tracing Rendering」である米国仮出願第61/095,890号による優先権を主張し、これらのすべては全体としてこの参照により、すべての目的のため、本明細書に組み込まれるものである。] [0002] 本発明は、3次元シーン(scenes)からの2次元表現のレンダリングに関し、より詳細には、シーンのフォトリアリスティック(photo−realistic)な2次元表現の高速化レンダリングのためのレイトレーシング(ray tracing)の使用に関する。] 背景技術 [0003] レイトレーシングによるフォトリアリスティックな画像のレンダリングはコンピュータ・グラフィックス・アートにおいて周知である。レイトレーシングは、シーンの要素と相互に作用する光の物理的な挙動をモデル化することができるので、写実的な影および照明効果を含むフォトリアリスティックな画像を生成することが知られている。しかし、レイトレーシングは計算集約的であることでも知られ、現在のところ、アート・グラフィックス・ワークステーションの状況であってもレイトレーシングを使用して複雑なシーンをレンダリングするためかなりの時間を要する。] [0004] レイトレーシングは、通常、カメラから始まり、シーン物体との多数の潜在的な相互作用を介して、光源で終端するか、または、光源と交差することなくシーンから出るまで光線を追跡することにより、シーンの中の構造体の表面を記述する三角形のような幾何学的プリミティブ(geometric primitive)で構成されたシーン記述を取得することと、どのようにして光がシーンの中のプリミティブと相互に作用するかをモデル化することとを含む。] [0005] 例えば、シーンは両側に建物がある街路上の車を含むことができる。このようなシーンの中の車は、連続的な表面を近似する多数の三角形(例えば、100万の三角形)によって定義されることができる。シーンを観察するカメラ位置が定義される。カメラから放たれたレイ(光線)は、多くの場合に1次レイと呼ばれ、例えば、反射を可能にするため一方の物体から別の物体へ放たれたレイは、多くの場合に2次レイと呼ばれる。選択された解像度(例えば、SVGAディスプレイの場合に1024×768)をもつ画像平面がカメラとシーンとの間の選択された位置に配置される。] [0006] 最も簡単なレイ・トレーシング・アルゴリズムは、カメラから画像の各画素を介してシーンの中へ1若しくはそれ以上のレイを放つことを含む。各レイは、その後に、シーンを構成する各プリミティブに対してテストされてレイが交差するプリミティブの特定が行われ、次に、プリミティブがレイに及ぼす影響、例えば、レイを反射および/または屈折させるかどうかが決定される。このような反射および/または屈折は、レイを異なる方向へ伝播させ、および/または、レイを異なる経路をとることができる複数の2次レイに分割させる。これらの2次レイのすべては、その後に、シーンプリミティブに対しテストされて交差するプリミティブが決定され、この過程は、2次(そして、3次、以下同様に続く)レイが、例えば、シーンを離れることによって、または、光源に達することによって終端するまで再帰的に続く。これらのレイ/プリミティブ交差のすべてが決定されている間に、交差をマップするツリーが作成される。レイが終端した後、光源の寄与度がツリーを介してトレースバックされ、シーンの画素に対する光源の影響が決定される。容易に理解されるように、何百万もの三角形との交差に関して、(例えば)1024×768のレイをテストするという複雑な計算は計算集約的であり、しかも、このようなレイの数は、交差するレイとの物質の相互作用の結果として生じる付加的なレイの全部を算入していない。)] [0007] レイトレーシングによるシーンのレンダリングは、生成されている画像の各画素のため蓄積されたカラー情報が画像の他の画素とは独立に蓄積可能であるので、「厄介な並列問題」と称されている。よって、最終画像を出力する前に、何らかのフィルタリング、補間または他の画素処理が存在することがあるが、画像の画素のカラー情報は並列に決定可能である。従って、レンダリングされるべき画素を処理資源の間で分割し、これらの画素のレンダリングを並列に実行することにより所定の処理資源の組に関する画像のレイトレーシングのタスクをセグメント化することは容易である。] [0008] ある場合には、処理資源はマルチスレッド化をサポートするコンピューティングプラットフォームでもよいが、他の場合は、LANを介してリンクされたコンピュータのクラスタ、または、コンピュータコアのクラスタを伴うことができる。これらのタイプのシステムに対し、所定の処理資源、例えば、スレッドは、交差テストおよびシェーディングの終了によって割り当てられたレイまたはレイのグループを処理するためインスタンス化可能である。換言すると、画素は互いに独立にレンダリング可能であるという特性を使用して、異なる画素に寄与することが知られているレイは、交差テストされるべきスレッドまたは処理資源の間で分割可能であり、その後に、このようなシェーディング計算の結果を処理または表示のため画面バッファへ書き込み、これらの交差をシェード可能である。] [0009] この種の問題を対象にするいくつかのアルゴリズム的アプローチが提案されている。1つのこのようなアプローチは、Matt Pharr,et al.により「Rendering Complex Scenes with Memory−Coherent Ray Tracing」Proceedings of SigGraph(1997)(本明細書では、「文献Pharr」と称する)に開示されている。文献Pharrは、各幾何学的ボクセルがシーンプリミティブ(例えば、三角形)を内包する立方体であるとして、レイトレーシングされるべきシーンを幾何学的ボクセルに分割することを開示する。文献Pharrは、スケジューリンググリッドの各要素が幾何学的ボクセルのいくらかの部分に重なることが可能であるスケジューリングボクセルであるとして(すなわち、スケジューリングボクセルが、幾何学的ボクセルの立方体とは異なるサイズにされることが可能であるシーンの中の体積をもつ立方体でもあるとして)、スケジューリンググリッドを重畳することをさらに開示する。各スケジューリングボクセルは、現在のところ内側にあるレイ、すなわち、そのスケジューリングボクセルの内部に内包されたレイを含む関連付けられたレイキューと、どちらの幾何学的ボクセルがそのスケジューリングボクセルに重なるかに関する情報とを有する。] [0010] 文献Pharrは、スケジューリングボクセルが処理されるとき、関連付けられたキューの中のレイが、スケジューリングボクセルによって内包された幾何学的ボクセルの中のプリミティブとの交差に関してテストされることを開示している。レイとプリミティブとの間の交差が見出された場合、シェーディング(陰影付け)計算が実行され、その結果レイキューに追加されるレイが増加することが可能である。そのスケジューリングボクセルの中に交差が見出されなかった場合、レイは次の空でないスケジューリングボクセルへ進み、そのスケジューリングボクセルのレイキューの中に収容される。] [0011] 文献Pharrは、このアプローチによる利点は、各スケジューリングボクセルの中のシーンジオメトリがキャッシュ内に収まることができる場合、キャッシュがシーンジオメトリとのレイの交差テスト中にトラッシングをあまり起こさないように、シーンジオメトリを通常の汎用プロセッサに設けられたキャッシュ内に収めるのに役立つことであることを開示している。] [0012] さらに、文献Pharrは、テストのためのレイをスケジューリングボクセルの中にキュー入れすることによって、プリミティブがジオメトリキャッシュにフェッチされたとき、それ以上の作業がプリミティブに関して実行できることを開示している。複数のスケジューリングボクセルが次に処理できる状況では、スケジューリングアルゴリズムは、ジオメトリキャッシュにロードされるべきジオメトリの量を最小限に抑えることになるスケジューリングボクセルを選定可能である。] [0013] 文献Pharrは、特定のシーンが一様でない複雑性を有する場合、すなわち、シーンのいくつかの部分でプリミティブの密度が高い場合、提案された規則的なスケジューリンググリッドが十分に機能しないことがあることを認めている。文献Pharrは、オクツリー(octree)のような適応的データ構造が規則的なスケジューリンググリッドの代わりに使用できると仮定している。オクツリーは、階層の各レベルで、オクツリー分割が8つのより小さいサブボリュームを生じ、その8つのより小さいボリュームが8つのさらに小さいサブボリュームに分割可能であり、以下同様に続くような、シーンの各主軸(すなわち、x、y、およびz軸)に沿った分割を引き起こすことにより、3次元シーンの中に空間分割を導入する。各サブボリュームにおいて、そのサブボリュームがさらに分割されることになるかどうかを決定する分割/非分割フラグがセットされる。このようなサブボリュームは、そのサブボリュームの中のプリミティブの数がテストのため十分に少なくなるまで、分割のため指示される。このように、オクツリーに関して、分割の量は、シーンの特定の部分に存在するプリミティブの数に応じて制御可能である。したがって、オクツリーはレンダリングされるべきボリュームの種々の程度の分割を可能にする。] [0014] 類似したアプローチがPfisterの米国特許第6,556,200号(「文献Pfister」)に開示されている。文献Pfisterもまた複数のスケジューリングブロックへのシーンの区分化を開示している。レイキューが各ブロックに設けられ、各キューの中のレイが依存グラフを使用して時空間的に順序付けられる。レイは依存グラフに定義された順序に従って各スケジューリングブロックの中で追跡される。文献Pfisterは、文献Pharr論文を参照し、文献Pfisterが2若しくはそれ以上(例えば、三角形だけでない)のシングルタイプのグラフィカルプリミティブをレンダリングすることと、スケジューリングブロックのためのより複雑なスケジューリングアルゴリズムを工夫することとを要望することを補足している。文献Pfisterはメモリ階層における複数のキャッシュレベルでシーンジオメトリの中間サブポーションをさらに検討している。] [0015] さらに別のアプローチは、パケットトレーシングと呼ばれ、このようなパケットトレーシングの一般的な参考文献は、Ingo Wald,Phillip Slusallek,Carsten Benthin,et al.による「Interactive Rendering through Coherent Ray Tracing」,Proceedings of EUROGRAPHICS 2001,pp 153−164,20(3),Mancheter,United Kingdom(Sep.2001)である。この参考文献では、パケットトレーシングは、グリッドを通る類似した始点および方向を有するレイのパケットの追跡を含む。レイは、殆どのレイが共通のグリッドロケーションを通過するように、実質的に共通のグリッドロケーションから発し、実質的に類似した方向に進行する。このように、パケットトレーシングは、類似した始点から、類似した方向に進行するレイを特定することが必要である。このようなパケットトレーシングに関する別の変形は、錐台レイがどのボクセルが交差するかを決定し、所定のレイパケットのための計算の回数の削減に役立つ(すなわち、すべてのレイが交差に関してテストされるのではなく、パケットの外側エッジにあるレイだけがテストされる)ように、レイのパケットのエッジの境界を定めるために錐台レイを使用することである。パケットトレーシングは、類似した場所から発し、類似した方向に進むレイの特定を依然として必要とする。このようなレイは、レイがレイトレーシング中に反射され、屈折させられ、および/または、発生するとき、特定することが益々難しくなることが可能である。] [0016] さらに他のアプローチがレイトレーシングを加速する分野に存在し、1つのアプローチは、レイ状態のより能動的な管理によって改良されたキャッシュ利用を試行する。Navratil et al.による「Dynamic Ray Scheduling for Improved System Performance」,2007IEEE Symposium on Interactive Ray Tracing,(Sep.2007)(文献Navratil)は、文献Pharrを参照し、PharrのアルゴリズムがPharr文献をプロセッサ・キャッシュ・トラフィックへの主メモリのため不適切にする「レイ状態爆発」の弱点を有することを記載している。これに対処するため、文献Navratilは、レイトレーシング中に、レイ状態およびジオメトリ状態を「能動的に管理」するように設計された制限を設けることにより、「レイ状態爆発」を回避することを提案する。1つの提案はレイの生成を別々にトレースすることであり、従って、文献Navratilは、最初に1次レイをトレースし、次に、1次レイを終了した後、2次レイをトレースし、以下同様に続くことを開示している。] [0017] 上述の背景は、レイトレーシングに基づくレンダリングを加速化する分野において普及し続けている思想およびアプローチの多様性を示している。同様に、これらの参考文献は、さらなる進歩がレイトレーシングの分野に残っていることを示している。しかし、これらの参考文献および手法のうちのいずれかの説明は、いずれかの参考文献または参考文献中の主題が本願に開示されたいずれの主題に対しても先行技術であるという承認または示唆ではない。それどころか、これらの参考文献は、レイトレーシングを用いるレンダリングへのアプローチにおける相違点を示すのに役立つように記載されている。さらに、これらの参考文献のうちのいずれかの取り扱いは、明瞭さのため必然的に省略され、網羅的ではない。] 課題を解決するための手段 [0018] ある観点では、方法は、3次元シーンの2次元表現をレイトレーシングするのに複数のコンピューティング資源を使用する。この方法は、3次元シーンの中を進むレイで1若しくはそれ以上のプリミティブおよびジオメトリ・アクセラレイション要素を有する幾何学的形状を交差テストするためコンピューティング資源の第1のサブセットを使用する工程を含む。第1のサブセットのうちの各コンピューティング資源は、シーンの中を進むレイのそれぞれのサブセットを格納するそれぞれのローカライズされたメモリ資源と通信するため動作する。この方法は、コンピューティング資源の第1のサブセットからコンピューティング資源の第2のサブセットへレイとプリミティブとの間の交差の指標を通信する工程と、レイとプリミティブとの間の特定された交差と関連付けられたシェーディングルーチンを実行するコンピューティング資源の第2のサブセットを使用する工程とを含み、シェーディングルーチンからの出力は交差テストされるべき新しいレイを有する。サブセットの中のメンバーシップは、シーンまたは一連のシーンのいずれかのレンダリング中に、時間依存性であるか、または、システム構成時若しくは再構成ポイント中に統計的に決定される。] [0019] この方法は、新しいレイを定義するデータをローカライズされたメモリ資源の間に分散させる工程と、レイ識別子のグルーピングを形状データと共に第1のサブセットのうちのコンピューティング資源へ伝える工程とをさらに有する。各レイ識別子は、そのレイに関するレイ定義データ以外のデータを有する。レイ識別子の伝達は、形状データによって指定された形状との特定されたレイの交差テストを作動させる。テストは、各コンピューティング資源によって、各コンピューティング資源のローカライズされたメモリに格納されている特定されたレイを定義するデータを取り出す工程と、取り出されたレイ定義データに基づいて交差に関して示された形状をテストする工程と、検出された交差の指標を通信のため出力する工程とを有する。] [0020] 別の観点は、レイトレーシングを使用して、プリミティブで構成された3次元シーンの2次元表現をレンダリングするシステムを有する。このシステムは、それぞれのキャッシュメモリへアクセスできる複数の交差テスト資源を有し、それぞれのキャッシュメモリは、レイ定義データのマスターコピーのサブセットを格納し、各レイのレイ定義データは、そのレイのテストが終了するまで、キャッシュメモリに維持されている] [0021] このシステムは、識別子を各レイに割り当て、それぞれのテスト資源のキャッシュメモリにおける各レイの定義データにアクセスできるそれぞれのテスト資源による各レイのテストを制御するため動作する制御ロジックをさらに有する。テスト制御は、レイ識別子をテストされるべきレイのデータを格納するそれぞれのテストセルに提供することによって達成される。このシステムは、交差テストを終了したレイと、交差したそれぞれのプリミティブとを特定する出力キューを有する。制御ロジックは、シェーディング計算から生じる新しいレイを割り当て、キャッシュメモリの中で交差テストを終了したレイを置き換える。] [0022] ある観点では、制御ロジックが終了したレイの識別子を新しいレイの識別子として再使用することにより置き換えを行うこと、レイ識別子がそのレイを定義するそれぞれのデータを格納するメモリロケーションに関係すること、および、新しいレイを定義するデータが終了したレイのメモリロケーションに格納されているデータを置き換えることとのうちの1若しくはそれ以上が行われることが可能である。] [0023] さらに別の観点は、レイトレーシングを使用して、プリミティブで構成された3次元シーンの2次元表現をレンダリングするシステムを有する。このシステムは、3次元シーンを構成するプリミティブを格納するメモリと、複数の交差テスト資源とを有する。各交差テスト資源は、シーンの中を進む少なくとも1つのレイを少なくとも1つのプリミティブとテストし、検出された交差の指標を出力するため動作する。システムは、各シェーダ資源が検出されたレイ/プリミティブ交差の指標からのプリミティブと関連付けられたシェーディングルーチンを実行するため動作する複数のシェーダ資源をさらに含む。このシステムは、検出された交差の指標をシェーダ資源へ出力する第1の通信リンクと、シェーディングルーチンの実行によって生じる新しいレイを交差テスト資源へ送信する第2の通信リンクとをさらに有し、新しいレイは交差テスト資源へ送信されることが可能であり、新しいレイが送信された相対的順序とは異なる順序で交差テストを終了する。両方の通信リンクは、FIFOキューのようなキューとして達成可能である。] [0024] さらに別の観点は、主メモリおよび計算資源間の分散メモリを有し、主メモリが分散メモリよりレイテンシが高い階層的なメモリ構造に連結された複数の計算資源を有するシステムにおいて、プリミティブで構成されたシーンをレイトレーシングする方法を含む。この方法は、レイのサブセットが分散メモリのうちの異なるメモリに格納されるように、シーンの中で交差テストされるべきレイを定義するデータを分散メモリの間に分散させることと、レイのグループを交差テストすることを決定することとを有し、グループのメンバが、1若しくはそれ以上の幾何学的形状と共に、複数の分散メモリに格納される。この方法は、主メモリから1若しくはそれ以上の幾何学的形状を定義するデータをフェッチすることと、幾何学的形状およびグループのレイの識別子を、グループの中のレイのデータを格納する各分散メモリと関連付けられた少なくとも1つの計算資源に提供することとを有する。この方法は、グループの各レイのデータを格納する分散メモリのうちの少なくとも1つと関連付けられた計算資源を用いてこのレイの交差をテストすることと、計算資源から生じる交差テスト結果を収集することとをさらに有する。] [0025] さらに別の観点は、3次元シーンを構成するプリミティブとレイを交差テストするシステムを含む。このシステムは、各交差テスト資源が幾何学的形状との交差に関してそれぞれのレイをテストするため動作する複数の交差テスト資源を有する。1つずつのそれぞれのレイは、各交差テスト資源に提供された参照情報によって指定され、テスト資源は、レイと幾何学的形状との間の交差の指標を第1の出力または第2の出力のいずれかへ出力するため動作する。] [0026] 一方の出力はプリミティブ交差用であり、もう一方の出力はジオメトリ・アクセラレイション要素交差用である。例えば、第1の出力は、複数のシェーディング資源に入力を提供可能であり、レイとプリミティブとの間の交差の指標用であることが可能であり、第2の出力は、レイ・コレクション・マネージャに入力を提供し、レイとジオメトリ・アクセラレイション要素との間の交差の指標を受信する。] [0027] さらに別の観点は、3次元表現を構成するプリミティブ、および、プリミティブの選択の境界をそれぞれに定めるジオメトリ・アクセラレイション要素を主メモリ資源に格納する工程と、シーンの中で交差テストされるべきレイを定義する工程と、レイのそれぞれの識別子を定義する工程とを有するレイトレーシング方法を含む。この方法は、複数の別々にプログラム可能な処理資源を有するシステムにおいて、レイ始点および方向データの一部分を、処理資源の1つずつとそれぞれ関連付けられているローカライズされたメモリ資源に格納する工程を有する。この方法は、テストのためスケジュールに入れられたレイの識別子および幾何学的形状の指標を処理資源へ提供する工程により、交差テストに関するレイのスケジューリングを実施する工程をさらに有する。各処理資源は、ローカライズされたメモリ資源がいずれかの特定されたレイのためのレイ定義データを格納するかどうかを決定し、そうであるならば、指示された幾何学的形状との交差に関してこれらのレイをテストする。] [0028] さらに別の観点は、3次元シーンの2次元表現をレンダリングするのに用いられる幾何学的形状とレイとの交差テストを達成するために複数の処理資源を制御するシステムのための機械読み取り可能な命令を有する、コンピュータ読み取り可能な媒体/メディアを含む。命令は、プリミティブの第1の選択の境界を定める第1のジオメトリ・アクセラレイション要素と交差していると決定されたレイの識別子のパケットにアクセスすることと、第1のジオメトリ・アクセラレイション要素によって境界を定められたプリミティブの一部分の境界を定める他のジオメトリ・アクセラレイション要素を決定することとを有する方法を実施するためのものである。この方法は、各パケットがレイ識別子を収容している複数のパケット、および、他のジオメトリ・アクセラレイション要素のうちの異なるジオメトリ・アクセラレイション要素のそれぞれの指標をインスタンス化する工程と、複数のパケットを各パケットの中で特定されたすべてのレイより少ない交差テストのためそれぞれに構成された複数のコンピューティング資源の1つずつへ提供する工程とをさらに有する。この方法は、複数のコンピューティング資源から検出された交差の指標を受信する工程と、スレッショルド個数の受信された指標より多くの次のジオメトリ・アクセラレイション要素を特定するまで、ジオメトリ・アクセラレイション要素に応じて、受信された指標を追跡し、次のパケットを用いるアクセスを繰り返す工程とをさらに有する。] [0029] さらに別の観点は、形状をレイと交差テストするため構成された複数のコンピューティング資源と、コンピューティング資源の1つずつと連結され、シーンの中を進む複数のレイのうちのいくつかを定義するデータを格納するそれぞれのキャッシュと、複数のコンピューティング資源の間でメッセージを送るチャネルとを有し、1つずつのコンピューティング資源がこのコンピューティング資源によって受信されたメッセージの中のデータを複数のレイ識別子を収容するものとして解釈し、このコンピューティング資源のキャッシュがこのコンピューティング資源の中に格納された複数のレイのうちのいずれかを有するかどうかを決定し、格納されたレイを関連付けられている形状とテストするため構成されている、レイトレーシング・システムを含む。] [0030] さらに別の観点は、3次元シーンを構成するプリミティブとレイを交差テストするシステムを含む。このシステムは、各交差テスト資源が幾何学的形状との交差に関してそれぞれのレイをテストするため動作する複数の交差テスト資源を有する。それぞれのレイは、各交差テスト資源に提供された参照情報によって指定される。各交差テスト資源は、レイとプリミティブとの間の交差の指標を第1の出力または第2の出力のいずれかへ出力するためさらに構成されている。システムは、検出された交差のためのシェーディングコードを実行するため動作する複数のシェーディング資源と、レイへの参照情報を維持し、テストされるべきレイを指示するためレイ参照情報を複数の交差テスト資源へ提供するため動作するレイ・コレクション・マネージャをさらに有する。第1の出力は入力を複数のシェーディング資源へ提供し、レイとプリミティブとの間の交差の指標を受信し、第2の出力は、入力をレイ・コレクション・マネージャへ提供し、レイとジオメトリ・アクセラレイション要素との間の交差の指標を受信する。] [0031] さらに別の観点は、特定された幾何学的形状との交差がテストされるべき複数のレイを定義するデータを格納するため構成されたローカルキャッシュに連結されたプロセッサと、プロセッサによりサービスが提供される入力キューとを含み、入力キューに受信されたデータが、指定された幾何学的形状との交差に関してテストされるべきレイの複数の識別子を含むものとしてプロセッサによって解釈可能であり、プロセッサは、プロセッサのローカルキャッシュに格納されているデータが存在する入力キューの中で特定されたレイだけに対する定義データを取り出し、このようなレイを特定された幾何学的形状と交差テストし、検出された交差の指標を出力するため構成されている、並列レイトレーシングに基づいて3次元シーンの2次元表現をレンダリングするのに用いられるコンピューティング構成を含む。] [0032] さらに別の観点は、プリミティブの選択の境界を定めるジオメトリ・アクセラレイション要素と交差していると決定されたレイの識別子のパケットにアクセスすることと、交差したジオメトリ・アクセラレイション要素によって境界を定められたプリミティブの一部分の境界を定める他のジオメトリ・アクセラレイション要素を決定することとを有するレイトレーシング方法を実施する機械読み取り可能な命令を含む、コンピュータ読み取り可能な媒体を含む。この方法は、各パケットがレイ識別子を収容している複数のパケット、および、他のジオメトリ・アクセラレイション要素のうちの異なるジオメトリ・アクセラレイション要素のそれぞれの指標をインスタンス化する工程と、複数のパケットを各パケットの中で特定されたすべてのレイの交差テストのためそれぞれに構成された複数のコンピューティング資源の1つずつへ提供する工程とをさらに有する。この方法は、複数のコンピューティング資源から検出された交差の指標を受信する工程と、ジオメトリ・アクセラレイション要素に応じて、受信された指標を追跡する工程とをさらに有する。] [0033] さらに別の観点は、3次元シーンを構成するプリミティブとの交差に関してテストされるべき複数のレイを定義するレイ定義データを決定する工程を含む、レイトレーシングの方法を含む。この方法は、レイ定義データのサブセットを幾何学的形状とレイを交差テストするため構成された複数のコンピューティング資源のそれぞれのローカルメモリの間に分散させる工程と、管理モジュール内で、コンピューティング資源によって交差テストされるべき複数のレイからレイのコレクションを決定する工程とをさらに含む。コレクションは、各々がレイの定義データ以外のデータを含む複数のレイ識別子によって定義され、プリミティブの一部分の境界を定める境界形状と関連付けられている。この方法は、決定されたコレクションのためのレイ識別子をコンピューティング資源の間で伝えることにより、コンピューティング資源に決定されたコレクションのレイをテストさせる工程をさらに含み、定義データがコンピューティング資源のためのローカルメモリの中に格納されている特定されたレイを交差テストすることによって各コンピューティング資源がそれぞれに応答する。] [0034] いずれの観点においても、ローカルキャッシュに格納されている複数のレイは、第2の複数のレイの互いに素なサブセットであることが可能であり、複数のレイ識別子のうちのいくつかは、ローカルキャッシュに格納されたレイを特定し、第2の複数のレイのうちのいくつかのレイはローカルキャッシュに格納されていない。] [0035] 記載されている機能的観点は、適切なハードウェア資源を記載されているように入力および出力を生成するため動作できるように構成するコンピュータ実行可能なコードのモジュールのようなモジュールとして実施可能である。] 図面の簡単な説明 [0036] 本明細書中に開示された態様および実施例のより十分な理解のため、以下の記載において添付図面が参照される。 図1は、レイトレーシングを用いてシーンをレンダリングするシステムの第1の実施例を図示する。 図2は、図1の一部の付加的な態様を図示する。 図3は、レイトレーシング・レンダリング・システムの交差テスト部の別の実施を図示する。 図4は、図1〜3のシステムで用いられる交差テストのコンピューティング資源の実施例を図示する。 図5は、レイトレーシングで用いられる交差テスト・システム・アーキテクチャのさらなる実施例を図示する。 図6は、交差テストのアーキテクチャの別の実施例の態様を図示する。 図7は、キューによって連結された交差テスト資源およびシェーディング資源を含む図1〜6による開示内容の態様を実施するシステムアーキテクチャを図示する。 図8aは、図1〜7によるシステムにおいてレイトレーシングを制御する際に使用可能であるレイの識別子を提供する態様を図示する。 図8bは、図1〜7によるシステムにおいてレイトレーシングを制御する際に使用可能であるレイの識別子を提供する態様を図示する。 図9aは、図1〜7のいずれかの交差テスト資源に提供可能であるメモリ内のレイデータを特定するためにレイIDを使用する実施例を図示する。 図9bは、図1〜7のいずれかの交差テスト資源に提供可能であるメモリ内のレイデータを特定するためにレイIDを使用する実施例を図示する。 図10は、図1〜7のシステムにおいて実施可能である複数の交差テスト資源の間での交差テスト制御および形状分散の態様を図示する。 図11は、図1〜10のシステムの態様がレイトレーシングのアーキテクチャを使用するときに実施可能であるマルチプロセッサアーキテクチャを図示する。 図12は、図1〜11による開示内容の実施を達成可能である資源間通信およびローカライズされたレイデータ記憶装置を用いる複数のコンピューティング資源の体系化を図示する。 図13は、図12のコンピューティング資源の一部として動作する複数のスレッドまたはコアの実施例を図示する。 図14aは、図1〜13によるシステムおよびアーキテクチャのために役立つ様々なキューイングの実装を図示する。 図14bは、図1〜13によるシステムおよびアーキテクチャのために役立つ様々なキューイングの実装を図示する。 図14cは、図1〜13によるシステムおよびアーキテクチャのために役立つ様々なキューイングの実装を図示する。 図15は、レイデータが複数のコンピューティング資源によって共有されるL2キャッシュからプライベートL1キャッシュの間に分散可能である様々な方法を図示するため使用される。 図16は、これらの開示内容を通じてキューの中に存在可能であるパケットの中のデータの実施例を図示する。 図17は、特有のコンピューティング資源が、交差テスト中にローカルに利用可能なレイデータを使用し、このテストの結果をライトバックして、パケットからのレイIDを処理する方法に関係する開示を行う。 図18Aは、レイID情報の例示的なSIMDアーキテクチャ処理パケットの態様を図示する。 図18Bは、レイID情報の例示的なSIMDアーキテクチャ処理パケットの態様を図示する。 図19は、レイ識別子を分散し、レイをテストし、テスト結果をさらなるテストのためさらなるパケットに融合する概念を図示する。 図20は、データ構造との関連で、上述の図によるシステムに一般に適用可能である方法ステップを図示する。 図21は、本開示内容によるさらなる方法の態様を図示する。] 図1 図10 図11 図12 図13 図14a 図14b 図14c 図15 図16 実施例 [0037] 以下の説明は、当業者が本発明の様々な態様を構成し、使用することを可能にさせるため提示されている。具体的な技術、実施、および用途の説明は単に実施例として与えられている。本明細書中に記載された実施例に対する種々の変更は当業者に明白であり、本明細書中に記載された一般的な原理は、本発明の範囲から逸脱することなく他の実施例および用途に適用される。本説明は、最初に、図2の実施例の場合と同様に、ジオメトリ・アクセラレイション・データを使って抽出できる3次元(3−D)シーン(図1)の実施例に関係する態様を紹介することにより進む。このような3次元シーンは、図示され説明された実施例によるシステムおよび方法を使って2次元表現としてレンダリングできる。] 図1 図2 [0038] 背景技術の欄に紹介されているように、3次元シーンは、表示用の2次元表現に変換されるべきである。このような変換は、シーンが観察されるカメラ位置を選択することを必要とする。カメラ位置は、シーンの観察者(例えば、ゲームをする人、動画を見る人など)の位置を示すことがよくある。2次元表現は、通常は、2次元表現が所望の解像度で画素のアレイを含むように、カメラとシーンとの間の平面位置にある。各画素の色ベクトルはレンダリングを通じて決定される。レイトレーシング中に、レイは、所望の点で2次元表現の平面と交差するように、最初にカメラ位置から放たれることが可能であり、その後に3次元シーンに続く。レイが2次元表現と交差する位置は、そのレイと関連付けられたデータ構造体の中に保持される。] [0039] カメラ位置は、必ずしも空間内に定義された単一の点でなくてもよく、その代わりに、カメラ位置は、レイがカメラ位置の範囲内であるとみなされる数の点から放たれるように、拡散してもよい。各レイは、サンプルと呼ばれることもある画素の範囲内で2次元表現と交差する。いくつかの実施では、レイが画素と交差するロケーションのより正確な位置が記録され、色のより正確な補間および混合を可能にする。] [0040] 説明を明確にするため、ある一定のタイプの物体のデータ、例えば、プリミティブ(例えば、三角形の3頂点の座標)は、物体のデータを参照するのではなく、物体自体として簡単に記載されることがよくある。例えば、「プリミティブをフェッチする」というとき、そのプリミティブの物理的な実現ではなく、そのプリミティブを表すデータがフェッチされると理解されるべきである。しかし、特にレイに関して、本開示は、レイの識別子とレイ自体を定義するデータとを区別し、用語「レイ」が使用されるとき、文脈がそうではないことを明らかにしない限り、レイIDとレイを定義するデータとの両方の総称であるとみなされる。] [0041] 3次元シーンの中の現実的、かつ、精細な物体の輪郭の表現は、通常は、物体の表面を近似する多数の小さい幾何学的プリミティブを設けることによって行われる(すなわち、ワイヤ・フレーム・モデル)。したがって、より複雑な物体は、より単純な物体より多くのプリミティブおよび小さいプリミティブを使って表現されることが必要である。より高い解像度という利点を与えるが、特に、複雑なシーンは多数のオブジェクトを有することができるので、(上述のように、および下記にさらに詳細に示される)レイと多数のプリミティブとの間で交差テストを実行することは計算集約的である。交差テストのためシーンに何らかの外部からの体系化を加えることなく、各レイは各プリミティブとの交差をテストされるべきことになり、非常に遅い交差テストをもたらすことになる。したがって、レイ毎に必要とされるレイ/プリミティブ交差テストの回数を削減する方法は、シーンの中のレイ交差テストを加速するために役立つ。このような交差テストの回数を削減する一つの方法は、ある程度の数のプリミティブの表面を抽出する過剰なバウンディング面を設けることである。レイは、各レイと交差テストするプリミティブのより小さいサブセットを特定するため、最初にバウンディング面に対して交差テスト可能である。このようなバウンディング面形状は種々の形状で設けることが可能である。本開示では、このようなバウンディング面要素のコレクションはジオメトリ・アクセラレイション・データ(以下、GADと称される)と称される。] [0042] GAD体系化、要素、および用途のより広範囲にわたる取り扱いは、2007年9月17日付で出願され、参照により本明細書に組み込まれる米国特許出願第11/856,612号に見られる。よって、GADのより簡便な取り扱いが前後関係のためここに記載され、これらの問題に関するさらなる詳細は上述の参照された出願から入手できる。] [0043] 紹介されているように、GAD要素は、一般に、幾何学的形状の表面とレイとが交差しないことが、レイがその形状によって境界を定められたいずれのプリミティブとも交差しないことを示すように、3次元空間の中で、プリミティブのそれぞれのコレクションを囲む幾何学的形状を含む。GAD要素は、球体、軸方向整列バウンディングボックス、kdツリー、オクツリー、および他の種類のバウンディングボリューム階層を含むことが可能であり、したがって、本開示による実施は、kdツリーのカッティングプレーン法、または、1若しくはそれ以上のシーンプリミティブの境界を定めるバウンディング面を見出し、バウンディング面の広がりを特定する別の方法のようなバウンディングスキームを使用可能である。要約すると、GAD要素は、主に、レイとプリミティブとの間の交差をより迅速に特定するためプリミティブの抽出に役立つので、GAD要素は、好ましくは、レイとの交差を容易にテストできる形状である。] [0044] GAD要素は互いに相互に関係付け可能である。GAD要素の相互関係付けは、本明細書中では、GAD要素を表現するノードと、2つのGAD要素の間の相互関係付けを表現するエッジとを含むグラフであることが可能である。1対の要素がエッジによって接続される場合、エッジは、ノードのうちの一方がもう一方とは異なる相対的な粒度を有することを示すことがあり、すなわち、そのエッジによって接続されたノードのうちの一方はもう一方のノードより多いまたは少ないプリミティブの境界を定めるエッジによって接続されることを意味することが可能である。いくつかの場合、グラフは、グラフに方向付きであるように階層的であることが可能であり、グラフは親ノードから子ノードの順序にトラバース可能であり、残りの境界が定められたプリミティブを途中で狭小化する。いくつかの場合、グラフは、所定のGAD要素が他のGAD要素の境界を定める場合に、その所定のGAD要素がプリミティブの境界を直接的に定めることがないように(すなわち、均一なGAD構造では、プリミティブがリーフノードGAD要素によって直接的に境界を定められ、非リーフノードがプリミティブではなく他のGAD要素の境界を直接的に定めるように)均一なGAD要素を有することが可能である。] [0045] GAD要素のグラフは、各GAD要素によって境界を定められたある程度の数の要素および/またはプリミティブにおいてある均一性を維持することを目標として構築可能である。所定のシーンは、このような目標が達成できるまで細分可能である。] [0046] 以下の説明中、所定のGAD要素と交差することが決定されたレイに基づいて、他のどのGAD要素が呼応して次にテストされるべきであるかを決定する仕組みが存在するとされる。階層グラフの実施例では、したがって、次にテストされる要素は、一般に、テストされたノードの子ノードである。] [0047] ある程度の数の実施例において実施されるGADの一用法は、本明細書中では、レイが所定のGAD要素と交差することが見出されたとき、このレイが同様にこの要素と交差することが決定されている他のレイと共に収集されることである。ある程度の数のレイが収集されたとき、この要素に接続されているGAD要素のストリームは、主メモリからフェッチされ、各テスタが異なる収集されたレイを有するテスタを通じてストリーム化される。したがって、各テスタは、各テスタのレイをローカル高速メモリの中に固定的に維持し、一方、ジオメトリは、必要とされるときに、遅いメモリからフェッチされ、書き換えが許可される。より一般的には、この説明は、コンピューティング資源が、このようなレイと幾何学的形状(GAD要素およびプリミティブ)との交差を検出するためレイを処理し、最終的に、どのレイがどのプリミティブにヒットするかを特定するように体系化可能である方法についての一連の実施例を提供する。] [0048] これらの実施例が実施可能である他の態様は、(1)交差テストからシェーディングへの出力のためのキューが設けられていること、(2)そのレイデータが計算資源にある程度までローカライズされ、ある一定のレイを幾何学的形状とテストすることが決定されたときにそれらの幾何学的形状がより遅いメモリからフェッチされること、および、(3)その交差テストが交差テストを実行する計算資源へのレイを(レイ識別子を使用して)特定することにより駆動され、各計算資源に各計算資源のローカライズされた(複数の)メモリから特定された(複数の)レイに対応するデータをフェッチさせることと、のうちのいずれかを含む。] [0049] 以下の説明は、レイトレーシングを使用して3次元シーンの2次元表現をレンダリングするシステムおよびシステムの一部の実施例を提示する。このようなシステムの2つの主な機能コンポーネントは、(1)交差を特定するレイをトレーシングすること、および、(2)特定された交差をシェーディングすることである。] [0050] 図1は、プリミティブで構成されたシーンをレイトレーシングする際に用いられるシステムの態様を図示する。一般に、図1および他の図におけるいずれかの機能ユニットのいずれかの機能または役目は、複数のハードウェアユニット、または、ソフトウェア部品、ソフトウェアサブルーチンで実施されることがあり、異なるコンピュータで実行されることさえある。いくつかの場合、このような実施は、システム機能および性能に影響を与えることが可能であるので、より具体的に記載されている。] 図1 [0051] 図1は、ジオメトリユニット101と、交差処理ユニット102と、サンプル処理資源110と、フレームバッファ111と、GAD要素およびプリミティブを含むジオメトリ形状(プリミティブおよびGAD記憶装置103)、サンプル106、レイ・シェーディング・データ107、および、テクスチャデータ108を格納するため動作可能であるか、若しくは、構成され、または、格納しているメモリ資源139と、を図示する。ジオメトリユニット101は、レンダリングされるべきシーンの記述を入力し、プリミティブ、および、プリミティブの境界を定めるGAD要素を含むアクセラレイション構造を出力する。交差処理102は、レイとプリミティブとの間の特定された交差をシェードし、テクスチャ、シェーディングコード、および、図示されたデータ源から取得される他のサンプル情報のような入力を使用する。交差処理102の出力は、レンダリングされているシーンの2次元表現を生成する際に使用される新しいレイ(後述される)およびカラー情報を含む。これらの機能コンポーネントのすべては、破線185によって全体的に指定された1若しくはそれ以上のホスト処理資源で実施可能である。] 図1 [0052] 上述されているように、特定されたレイ/プリミティブ交差のシェーディング中に、交差処理102は、交差テストされるべき新しいレイを発生可能である。ドライバ188は、交差処理102とインターフェイスをとって、これらの新しいレイを受信し、交差処理資源102と、レイデータ記憶装置105および交差テストユニット109を含むローカライズされた交差テスト領域140との間の通信を管理する。交差テスト領域140は、交差に関してレイをテストし、インターフェイス112を介して、プリミティブおよびGAD記憶装置103へのリードアクセス権を有し、結果インターフェイス121を介して特定された交差の指標を交差処理102へ出力する。ローカル・レイ・データ記憶装置105は、比較的小さいサイズであることが可能な比較的高速なメモリで実施されることが好ましいが、プリミティブおよびアクセラレイション構造記憶装置は、ホスト185の主ダイナミックメモリであることが可能である比較的大規模かつ遅い主メモリ139で実施される。] [0053] レイトレーシング高解像度シーンの一態様は、膨大な量のレイデータおよび形状データが含まれている。例えば、毎秒30フレームでフルHD解像度フィルムをレンダリングすることは、1秒間に6000万画素(1920×1080>2M、30回毎秒)以上の色を決定することを必要とする。さらに、各画素色を決定するため、多数のレイが必要とされることがある。したがって、数億のレイが毎秒処理されるべきことがあり、あらゆるレイが数バイトの格納場所を必要とする場合、フルHDシーンのレイトレーシングは、毎秒数ギガバイト以上のレイデータを必要とすることが可能である。さらに、いずれかの所定の時間に、多数のレイデータがメモリに格納されるべきである。アクセス速度とメモリサイズとの間には、費用対効果のよい大規模メモリは比較的低速であるという程度に、殆ど常にトレードオフの状況が存在する。さらに、大規模メモリは、十分に大規模なデータのブロックがアクセス可能かつ使用可能でない限りメモリが効率的に使用されないように構築される。したがって、1つの難問は、メモリから効率的にアクセスするため十分に大規模なレイのグループを一貫して特定できるようにすることである。しかし、類似した始点および方向をもつレイの検出およびグループテストのようなアプローチによってわかるように、このようなレイを特定する際に、処理オーバーヘッドが存在し、場合によっては非常に高い処理オーバーヘッドが存在することが可能である。一態様では、以下の例示的なアーキテクチャは、シーンレンダリングのためレイ交差テストおよびシェーディングのスループットを高めるために、複数のコンピューティング資源と、高速で高価なメモリと、低速で大規模なメモリとを体系化し使用する方法を開示する。] [0054] 図1は、このように、GAD要素およびプリミティブとの交差に関してレイをテストする計算資源109にローカライズされた高速メモリに格納されているレイ定義データを含むデータのフローによって、特定された交差のシェーディングからの交差テストの分離を図示する。交差テスト109の出力は、特定されたプリミティブと交差する特定されたレイの指標を含む。交差処理102は、これらの指標を受け取り、これらの交差に従ってシェーディングを実行し、テストのため、最終的に高速レイ・データ・メモリ105に格納される新しいレイをインスタンス化可能である。このような分離は、使用される処理資源に応じて選択された通信手段と共に、1若しくはそれ以上の固定機能ハードウェアおよびこの説明に応じたソフトウェアでプログラムされた汎用コンピュータを使用する種々の実施において行われることが可能である。しかし、これらの実施における一つの反復性のある態様は、レイとの交差に関してテストされた形状データがレイ定義データと比較すると交差テスト領域140において一過性であるということである。換言すると、適用できる場合には、高速メモリが主としてレイデータに割り当てられ、一方、形状はテスタを通じてストリーム化されるが、このような形状データのキャッシュ化を最適化するため計算資源は殆ど使用されない。種々の以下の図は、このような分離、データフロー、レイデータ記憶装置、および、交差テスト資源との結び付きのより具体的な実施例を図示する。] 図1 [0055] 図1は、最終的にフレームバッファ111の出力がディスプレイ197を駆動するため使用可能であることをさらに図示する。しかし、これは、便宜上レンダリングと称されることがある交差テストおよびシェーディング操作から生じることが可能である出力の単なる実施例である。例えば、出力はさらに、後で表示するため、若しくは、有形的なコンピュータ読み取り可能な媒体で配布するため、レンダリングされた画像の系列のようなレンダリング生成物を含むコンピュータ読み取り可能な媒体に書き込まれるか、または、通信リンクによって相互接続されたコンピューティング資源を含むネットワークを介して伝送されることが可能である。いくつかの場合に、レンダリングされる3次元シーンは、没入型の仮想現実会議の場合、または、3次元CADモデルの斜視図を含む画像のレンダリングの場合のように、現実の世界の3次元シーンを表すことが可能である。そのような場合、レンダリングの方法が、物理的な物体を表すデータに影響を及ぼす、または別の方法でデータを変換する。他の場合に、3次元シーンは、物理的な物体および物理的でない他の物体を表すいくつかの物体を有することができる。さらに別の3次元シーンでは、シーンの全体は、ビデオゲームなどの場合と同様に、架空であることがある。最終的には、しかし、一般的に、これらの方法は、メモリ、ディスプレイ、および/または、コンピュータ読み取り可能な媒体の物の変形である。] 図1 [0056] さらに、1979年以来、レイトレーシングを用いるレンダリングが実施され、種々の手法が交差テストおよびレイトレーシングを用いるレンダリングを実施するため必要とされる他の機能のため開発されている。したがって、本明細書中に記載されている具体的なアーキテクチャおよび方法は、3次元シーンを2次元表現にレンダリングする際に用いられるレイトレーシングの基本的原理の占有権を行使しない。] [0057] 図2は、交差テスト領域140の交差テストユニット109が、レイに対して幾何学的形状をテスト可能である1若しくはそれ以上の個別のテスト資源(別名テストセル)を含むことを図示する。領域140は、それぞれがレイデータ記憶装置105からレイデータを受信し、メモリ139から幾何学的形状データを受信するテストセル205aから205nを含む。各テストセル205a〜205nは、結果インターフェイス121を介した交差処理102への通信のための、所定のレイが所定のプリミティブに交差したかどうかの指標を含むことが可能である結果を生成する。それに反して、GAD要素とレイとの交差テストの結果はロジック203に提供される。ロジック203は、レイをレイが交差していると決定されたGAD要素に関係付けるレイへの参照情報のコレクション210を維持する。] 図2 [0058] 一般に、システムコンポーネントは、所定の特定のレイテストの未知の終了までの時間をサポートするように設計される。交差テストユニット109は、ジオメトリメモリへのリードアクセス権を有し、入力としてレイへの参照情報のキューを有する。交差テストの出力として、各レイは、各レイが最初に交差したジオメトリの部分(便宜上本開示ではプリミティブと称される)と関連付けられる。他のジオメトリの部分(すなわち、複数のプリミティブ)は無関係であると見なすことができる。] [0059] 上述されているように、領域140は、テストセル205a〜205nにおいてテストされるべきレイコレクションのリスト210を維持するレイ参照情報バッファおよび関連付けられたマネージメントロジック203を含む。バッファ・マネージメント・ロジック203は、固定機能処理資源、または、コンピュータ読み取り可能な媒体から取得された命令を使って構成されたハードウェアで実施可能である。このような命令は、本明細書中ではロジック203に帰属させられた機能およびタスクに応じたモジュールの中に体系化可能である。当業者は、これらの開示内容に基づいてロジック203のさらなる実施を提供することも可能である。] [0060] ロジック203は、レイおよびジオメトリをテストセルに割り当て可能であり、設計の中の他のユニットとの通信を取り扱い可能である。一態様では、リスト210の中の各レイコレクションは、1若しくはそれ以上の幾何学的形状との交差をテストされるべき複数のレイ識別子だけを含み、ロジック203はこのようなレイコレクションを維持する。より具体的な実施例では、複数のレイ識別子は、コレクションの中に特定されたGAD要素と交差することが決定され、複数のレイとの交差をテストされるべき次のGAD要素は、GAD要素のグラフの中のその交差したGAD要素に関係付けられる。所定のコレクションに対し関係付けられた要素は、これらの要素との交差テストが開始されるときにメモリ139からフェッチされる。] [0061] 換言すると、ロジック203は、一時的なレイ参照情報バッファの中のそれぞれの子ノードに対応するジオメトリデータの小部分と交差するレイを表す参照情報を保持可能であり、このようなレイのさらなる処理の延期を可能にする。階層的に配置されたGADの実施例では、このような延期は、子ノードのジオメトリの小部分と交差するレイの累積数がさらなる処理のため適当であることが判明するその後の時点まで、子ノードより下位にあるジオメトリ・アクセラレイション・データの小部分に対する処理を延期可能である。] [0062] ロジック203は、テスト用の幾何学的形状をテストセル205a〜205nへ提供するメモリトランザクションをセットアップするためメモリ139とさらに通信可能である。ロジック203は、レイデータ記憶装置105とさらに通信し、そこにデータが格納されているレイを決定する。いくつかの実施では、ロジック203は、メモリ139または交差処理ユニット102の中で実行するシェーディングプロセスからレイを取得または受信し、スペースが利用可能であるとき、交差テスト中の格納および使用のためこれらのレイをメモリ105へ提供する。] [0063] よって、ロジック203は、GAD形状の識別子とのレイ識別子の関連性を含む一時的なレイ参照情報バッファを維持可能である。実施では、GAD要素のための識別子は、そのGAD要素と関連付けられた所定のコレクションを格納するバッファの中の位置を特定するためハッシュ化可能である。関連性は、このようなデータのメモリへの格納または収集を記述するとき、本明細書中ではコレクションと総称され、本願のいくつかの場所では、一般に、テスト中のコレクションデータの移動と、交差テストからの結果の返送を意味するために、用語「パケット」が使用される。このような返送された結果は、後述されるように、GAD形状と関連付けられているメモリ内に格納されたコレクションに融合可能である。] [0064] 要約すると、図2は、レイ定義データが高速メモリ105に格納され、このようなレイとの交差に関してテストされるべき形状データがメモリ139から到来することを引き続き図示する。上記開示は、複数の次にテストされるべき形状が同時にメモリ139からフェッチされ、「親」GAD要素と交差していることが既知であるレイのグループとの交差に関して順次にテストされることが好ましいということをさらに明らかにする。] 図2 [0065] 今度は、図3は、3次元シーンの2次元表現をレイトレーシングするレンダリングシステムで使用可能である領域140(図1)の交差テストユニット(ITU)350による実施の実施例のブロック図を含む。ITU350は、複数のテストセル310a〜310nおよび340a〜340nを含む。GAD要素は、GADデータ記憶装置103bから提供されるものとして図示され、プリミティブデータはプリミティブデータ記憶装置103aから提供される。] 図1 図3 [0066] テストセル310a〜310nは、GAD要素、および、これらのGAD要素とテストされるレイデータを受信する(すなわち、これらのテストセルがGAD要素をテストする)。テストセル340a〜340nは、プリミティブデータ、および、これらのプリミティブとテストされるレイデータを受信する(すなわち、これらのテストセルがプリミティブをテストする)。よって、ITU350は、プリミティブとの交差に関してレイのコレクションをテスト可能であり、GAD要素との交差に関して別個のレイのコレクションをテスト可能である。] [0067] ITU350は、コレクション・マネージメント・ロジック203aおよびコレクションバッファ203bをさらに含む。コレクションバッファ203bおよびレイデータ105は、(例えば)メモリ139からレイデータを受信可能であるメモリ340に格納可能である。コレクションバッファ203bは、GAD要素と関連付けられたレイ参照情報を維持する。コレクション・マネージメント203aは、テストセルからの交差情報に基づいてこれらのコレクションを維持する。コレクション・マネージメント203aは、レイコレクションをテストするためメモリ139からのプリミティブおよびGAD要素のフェッチを開始することもできる。] [0068] ITU350は、結果インターフェイス121を介して交差処理102へ最終的に提供するため出力バッファ375に一時記憶可能である特定された交差の指標を返送する。指標情報は、レイと、所定の精度の範囲内でレイが交差すると決定されたプリミティブとを特定するために十分である。] [0069] ITU350は、ITU350にレイと、レイが交差に関してテストされることになる幾何学的形状とを与える制御プロセスまたはドライバ(例えば、ドライバ188)を通じて呼び出すことができる関数またはユーティリティであるとみなすことができる。例えば、ITU350は、ドライバ188を介して、すなわち、ITU350をシェーディングのような他のレンダリングプロセスおよび初期レイ生成関数とインターフェイス接続するプロセスを介して情報を提供されることが可能である。ITU350の観点から、ITU350は、領域140が、提供されるか、または、提供された他の情報に基づいて取得されるレイ、GAD、およびプリミティブ(または、より一般的にはシーンジオメトリ)を使用して交差テストを実行できるので、提供された情報の基点に気付く必要がない。] [0070] 上述されているように、ITU350は、ITU350が受動的でないように、どのように、いつ、そして、どのようなデータがITU350に提供されるかを制御し、そして、例えば、交差テストのため必要に応じて、レイ、または、ジオメトリデータ、または、アクセラレイションデータをフェッチすることができる。例えば、ITU350は、レイがテストされるべきシーンを特定するために十分な情報と共に、交差テストのための多数のレイを提供されることができる。例えば、ITU350は、所定の時点に交差テストのため10000より多くのレイを提供されることができ、そして、これらのレイのテストが終了するとき、後述されるように、(交差処理102によって発生させられた)新しいレイがITU350の中で処理されているレイの数をおおよそ初期数に保つために提供されることができる。ITU350は、その後、処理中に(レイ・コレクション・バッファ203bにおいて(図3を参照のこと)、レイの一時的格納を制御し(ロジック203aにおいて(図3を参照のこと))、処理中に必要に応じてプリミティブおよびGADの要素のフェッチを開始することができる。] 図3 [0071] 上述されているように、レイを定義するデータがレイデータ105に維持されている間に、レイ識別子はバッファ203bの中に維持され、GAD要素に関して体系化されるので、GAD要素およびプリミティブは、レイと比べるとITU350において一時的である。バッファ203bおよびレイデータ105のそれぞれは、SRAMキャッシュの1若しくはそれ以上のバンクのような様々な方法で物理的に実施でき、メモリ340に維持することができる。] [0072] 上述されているように、ロジック203aは、メモリ340に格納されたレイコレクションの状態を追跡し、処理の準備ができているコレクションを決定する。図3に示されているように、ロジック203aは、メモリ340に通信的に連結され、テストのため接続されたテストセルの1つずつへのレイの分散を開始できる。GAD要素が、GAD要素およびプリミティブの組み合わせではなく、GAD要素だけ、または、プリミティブだけの境界を定める状況では、ロジック203aは、特有のコレクションがプリミティブまたは他のGAD要素の境界を定めるGAD要素と関連付けられているかどうかに依存して、テストセル340a〜340nまたはテストセル310a〜310nのいずれかにレイを割り当てることが可能である。] 図3 [0073] 特有のGAD要素が他のGAD要素およびプリミティブの両方の境界を定めることができる実施例では、ITU350は、レイと共に、GAD要素およびプリミティブの両方を各テストセルへ提供するデータ経路を有することになるので、ロジック203aは、テスト資源の間でコレクションのテスト用レイを準備することになる。このような実施例では、GAD要素とプリミティブとの間の形状の典型的な差(例えば、球体対三角形)のため、テストロジックを切り替えるか、または、テストされる形状のため最適化された交差テストアルゴリズムをロードする指標がロジック203aから提供されることができる。] [0074] ロジック203aは、テストセル310a〜310nおよびテストセル340a〜340nへの情報の提供を直接的または間接的に引き起こすことができる。間接的な状況では、ロジック203aは、各テストセルがメモリ340からテスト用のレイデータのフェッチを開始するように、各テストセルに情報を提供可能である。ロジック203aは、説明を簡単にするため、メモリ340とは別個に図示されているが、ロジック203aによって実行されるマネージメント機能はメモリ340に格納されたデータに主として関係するので、ロジック203aはメモリ340の回路の内部に組み込まれることができる。] [0075] 交差テスト資源によるメモリ340へのアクセスの並列化を高める能力は、本明細書中に記載されているいくつかの態様の利点である。したがって、好ましくは、テストセル1つ当たりに少なくとも1つまでメモリ340へのアクセスポートの数を増加することは有利である。このような並列化に関係付けられた例示的な編成はさらに後述される。] [0076] さらに、ITU350は、入力データをITUへ提供するか、または、ITUから出力を受信するユニットに関して非同期式に動作することができる。ここで、「非同期」は、交差テストが前に受信されたレイに対して継続している間に、ITUが付加的なレイを受信し、付加的なレイの交差テストを開始することを含むことができる。さらに、「非同期」は、ITU350がレイを受信した順序にレイが交差テストを終了しなくてもよいことを含むことができる。非同期は、ITU350の中の交差テスト資源が、3次元シーンの中のレイの位置、または、シーンに重畳されたスケジューリンググリッドを考慮することなく、交差テストの割り当てまたはスケジューリングのため、または、親レイおよび少数の親レイから生み出された子レイのような世代間関係を有するテスト専用レイ、あるいは、特殊な世代のレイ、例えば、カメラレイ若しくは2次レイだけをテストするために利用できることをさらに含む。] [0077] ITU350は、プリミティブおよびプリミティブと交差したレイの特定された交差の指標を受信する出力バッファ375をさらに含む。実施例では、指標は、プリミティブと交差したレイを特定するために十分な情報とペアにされたプリミティブの特定情報を含む。レイの特定情報は、ホストプロセッサが利用できる資源の中に維持されているレイのリストの中の特定のレイを特定するインデックスのような参照情報を含むことができる。例えば、リストは、ホストプロセッサ上で動くドライバ188によって維持されることができ、リストはメモリ139の中に維持されることができる。好ましくは、メモリ139は、メモリ340の中にすべてのレイの定義データを含むことができる。しかし、レイ特定情報は、レイを再構成するために十分な、レイの始点および方向のような情報を含むことができる。通常の場合には、より少数のビットが参照情報に合格することが必要とされることになり、有利である。] [0078] 図4は、ワーキングメモリ410およびテストロジック420を含むテストセル310aの実施例を図示している。ワーキングメモリ410は、表面との交差に関して線分をテストするために十分な情報を収容する数個のレジスタであることができ、または、他の実施ではより複雑であることができる。例えば、ワーキングメモリ410は、交差に関して受信された特定の形状をテストするためテストロジック420を構成する命令を格納することができ、そして、どのような形状が受信されたかを受信されたデータに基づいて検出することができる。ワーキングメモリ410は、さらに検出されたヒットをキャッシュすることができ、各テストセルは幾何学的形状に対し一連のレイをテストするため構成され、または、逆もまた同様であり、したがって、キャッシュされたヒットはグループとして出力されることができる。ワーキングメモリは記憶装置103bから着信する形状データを受信することもできる。] 図4 [0079] テストロジック420は利用可能または選択可能な解像度で交差テストを実行し、交差が検出されたかどうかを示すバイナリ値を返すことができる。バイナリ値は、GAD要素テストのためのメモリ340におけるリードサイクルのようなリードサイクル中のラッチングのための読み出し、キャッシュ化、または、出力のためワーキングメモリの中に格納可能である。] [0080] 図5は、例示的なメモリ編成により詳細に重点を置いて、交差テストユニット500の実施の態様を図示している。ITU500において、テストセル510a〜510nおよび540a〜540nが現れ、本実施例では、310a〜310nおよび540a〜540nと対応する。これは、テストセルの数に関する何らかの要件を意味するものではない。よって、ITU500において、プリミティブとGAD要素の両方が並列にテストされることができる。しかし、1種類または別の種類のそれ以上のテストセルが必要であると決定された場合、どのようなテストセルでも必要に応じて再構成可能である(ハードウェアの場合に再割り当てされ、ソフトウェアの場合に再プログラムされる)。トランジスタ密度が増加し続けると共に、それ以上のこのようなセルをハードウェア実施に(または、ソフトウェアを実行するため利用可能な資源として)収容することができる。記載されるように、テストセルの一部は、共通形状(すなわち、プリミティブまたはGAD要素)に対してレイをテストするので、オペレーショナル・グループとして取り扱うことができる。テストセル540a〜540nは、指定された精度レベル(例えば、16ビット)でプリミティブとの交差を示すバイナリ値を返すことができ、より大きいプリミティブの場合に役立つことができる、レイが交差したプリミティブ上の場所のより正確な指標を返すこともできる。] 図5 [0081] ITU500において、メモリ540は、それぞれが2ポート(特定されたバンク515のポート531および532)を有する複数の独立した演算バンク510〜515を含む。一方のポートはGADテストロジック505を介してアクセスされ、もう一方はプリミティブ・テスト・ロジック530を介してアクセスされる。GADテストロジック505およびプリミティブ・テスト・ロジック530のそれぞれは、それぞれのワーキングバッファ560〜565と570〜575との間でデータのフローを管理し、それぞれにGAD記憶装置103aおよびプリミティブ記憶装置103bからテストのためのGAD要素を取得するため動作する。] [0082] バンク510〜515は、大部分は、GADテストロジック505およびプリミティブ・テスト・ロジック530によるレイデータへの非競合アクセスをできるようにするため動作するように意図され、その結果、各テストセル510a〜510nおよびテストセル540a〜540nは別個のバンク510〜515からレイが提供され得る。このような非競合アクセスは、これらの開示内容から理解されることであるが、例えば、別個のキャッシュバンクによって実施可能であり、同様に、クロス・バー・アーキテクチャはポートによるメモリの異なる物理的部分へのアクセスを可能にする。1若しくはそれ以上のテストセルによるバンクの中に格納されたレイのテストが許可される場合、競合はテストされるべき2つのレイが同じバンクに存在する場合に発生し、このような場合に、アクセスはテストロジック505および530によって順次に取り扱うことが可能である。いくつかの場合に、ワーキングバッファ560〜565および570〜575は、他の処理が完了している間に次の処理のためロードされる。ITU500はさらに領域に編成可能である。例えば、領域578は、GADテスタ510aおよびメモリバンク510を含むので、GAD要素のためのテスト領域を構成し、領域579は、テスタ510aおよび540a(GADおよびプリミティブのそれぞれに対し1つずつ)と、領域578および579のテストセルに関係するテストで使用されるべきレイデータを格納するメモリバンク510へのアクセスとを含むので、GAD要素とプリミティブの両方のためのテスト領域を構成する。] [0083] 一貫性のある配置でレイをテストすることにより、どのレイがどのテストセルに割り当てられているかの追跡を軽減することが可能である。例えば、各コレクションは、32レイを有することができ、32のテストセル310a〜310n(510a〜510n)が存在することができる。例えば、コレクションの中の4番目のレイをテストセル310dへ一貫して提供することにより、テストセル310dは、提供されたレイに関する情報を維持する必要はなく、交差の指標を返すことだけが必要である。明らかなように、テストセルの間にレイ識別子のパケットを伝え、テストセルが交差結果をパケットに書き込むことを可能にすることを含む、一貫性を維持する他の実施が提供できる。] [0084] レイコレクションの格納は、所定のレイコレクションがレイ・コレクション・バッファ203bまたは520のn箇所のうちの1つに格納されることができるように、レイコレクションのためのnウェイ・インターリーブ・キャッシュとして実施されることができる。レイ・コレクション・バッファ203bまたは520は、したがって、バッファのn箇所のそれぞれに格納されたレイコレクションのリストを維持することができる。レイ・コレクション・バッファ203bまたは520の実施は、レイコレクションと関連付けられたGADの要素の識別用特性を使用することを含むことができ、例えば、シーンをレンダリングする際にしようされるGADの要素の間で一意である識別子文字列が使用できる。英数文字列は、数字、ハッシュなどでもよい。例えば、ハッシュは、レイ・コレクション・バッファ203bおよび520のn箇所のうちの1つを参照可能である。] [0085] 他の実施では、GADの要素は、レイ・コレクション・バッファ203bおよび520の所定の箇所への格納を予定されることができ、例えば、使用される英数文字列のセグメントをこのようなバッファの(複数の)箇所へマッピングする。プリミティブ/レイ交差出力580は、潜在的なプリミティブ/レイ交差を特定する出力を表現し、出力580は直列または並列であることが可能である。例えば、32のプリミティブ・テスト・セル540a〜540nが存在する場合、出力580は、直前にテストされたプリミティブに対する各レイの交差の有無を指定する32ビットを含むことが可能である。当然ながら、出力は、例えば、パケット実施のような他の実施の場合のテストセルから直接的に来ることがある。出力は直列であることが可能であり、テストセルによってパケットの中に直列に格納されることが可能である。] [0086] レイデータは、シェーダのような光線源からメモリ340(520)に受け取られる。コレクション・マネージメント・ロジック(例えば、図2および3の203a)は、各コレクションがGADの要素と関連付けられている場合、レイをコレクションに初期的に割り当てるため動作する。例えば、GADの要素は、グラフのルートノードであることができ、受け取られたすべてのレイは、ルートノードと関連付けられた1若しくはそれ以上のコレクションに初期的に割り当てられる。レイの受け取りは、例えば、入力キューから完全なコレクションになるサイズにされたグループで行われることもでき、各コレクションは、例えば、レイ・コレクション・バッファ203bの中で特定されたコレクションのように取り扱われることが可能である。] 図2 [0087] ある程度の数のコレクションが並列にテストされることができるという理解の下で、1コレクションの処理に重点を置くと、テストノードと関連付けられたコレクションのレイをメモリ340から取り出すことは、例えば、コレクションの中にデータとして格納された、メモリ340からの、または、図5の実施例によって、テストセル(例えば、テストセル560〜565)による受信のため複数の出力ポート上にレイデータを提供するバンク510〜515からの、このようなレイの取り出しを可能にするこのようなレイのアドレス(レイ識別子)の提供によってコレクション・マネージメント・ロジック203aによって開始される。] 図5 [0088] テストのため選択されたノードによって境界を定められたGAD要素のテストに関して(すなわち、選択されたノードと関連付けられたGAD要素が他のGAD要素の境界を定める)、テスト中のコレクションのレイに関するレイデータの分散が終了し、境界を定められたGAD要素のフェッチもまた実行される(このようなフェッチは必ずしもレイ分散の次に行われなくてもよい)。このようなフェッチのため、ロジック203aはアドレス指定情報をGAD記憶装置103bへ入力可能であり(または、どのようなメモリマネージメント手段が設けられているかとは無関係であり)、GAD記憶装置は、アドレス指定された(複数の)GAD要素をテストセル310a〜310nへ出力する。通常のとおり多数のGAD要素の境界が定められる場合、要素は、多数のGAD要素のブロック読み出しを可能にするように、例えば、シリアル化バッファを用いて、テストセルへ直列ストリーム化されるように配置される。] [0089] テストセル(たとえば、310a〜310n)において、コレクションのレイは、直列に提供されたGAD要素との交差に関してテストすることが可能である(例えば、各テストセルにおいて異なるレイ)。レイが交差すると決定された場合、交差したGAD要素に関するコレクションが存在するかどうかが決定され、存在するならば、レイが余地を許すそのコレクションに追加され、存在しないならば、コレクションが作成され、レイが追加される。既存のコレクションに余地がない場合、新しいコレクションが作成される。] [0090] いくつかの実施では、コレクションのすべてのレイが所定のGAD要素に対し並列にテストできるように、コレクションの中のレイの最大数対テストセル310a〜310nの数の1:1の対応関係が与えられ、この実施は、スループットが概ねレイ対テストセルの1:1の対応関係を用いて取得できる程度であるアーキテクチャを含むことが可能であるが、しかし、所定のコレクションのうちのレイ全体が並列にテスト可能であると見なされるとしても、異なるテストセルが異なるパケットからのレイをテストできるように、異なるテストセルの間でパケット(例えば、上述されているようにコレクションを表す情報)の逐次的な受け渡しを行うことが可能である。] [0091] その後、レイは、テストセルに提供されたプリミティブとの交差に関してテストされ(すなわち、本実施例では、各テストセルは異なるレイを有し、そのレイと共通プリミティブとをテストする)。テスト後、各テストセルは検出された交差を知らせる。] [0092] コレクションのうちの各レイは、テストセルに提供されたGAD要素との交差に関してそのテストセルでテストされる(例えば、図5の複数のバックの実施例(図示されている領域578および579)では、レイは、例えば、バンクが各種の1若しくはそれ以上のテスタにレイデータを提供するように、GAD要素テスト領域および/またはプリミティブテスト領域にローカライズされていると見なされる)。] 図5 [0093] GAD要素との交差に関するレイのテストからの出力はプリミティブ交差に関して同じレイをテストする場合と異なるので(すなわち、GAD要素との交差はそのGAD要素のためのコレクションの中への収集を生じるが、プリミティブとの交差はそのプリミティブとの最近接交差の決定と、このような交差の出力とを生じるので)、特定のレイが偶然に並行してテストされている2つのコレクションの中に存在するとしても、コレクションデータまたは出力された交差についてのライトバックへの競合が通常は起こるべきではない。さらなる並列化が、例えば、テストセル340a〜340nの複数のインスタンス化においてプリミティブ交差に関してレイの複数のコレクションをテストすることにより実施されるならば、複数の交差の格納のようなこのようなテストの順序正しい終了を強制する、ビットをロックするなどのように特徴が実施されることもできる。そして、図5の実施例では、所定のレイのためのデータが唯一のバンクから1つのテスタタイプに提供可能である場合(すなわち、所定のレイが1つのメモリバンクに位置している場合)、複数のGADテスタは、例えば、同時に同じレイをテストすることがないので、ライトバック競合の問題を回避する。] 図5 [0094] 要約すると、方法は、レイを受信する工程と、レイをコレクションに割り当てる工程と、準備状況がアルゴリズム的に決定可能である場合にテストの準備ができているコレクションを選択する工程と、選択されたコレクションの中のレイを適切なテストセルに割り当てる工程と、交差テストのため適切なジオメトリをテストセルの中でストリーム化する工程とを含む。出力は、ジオメトリがシーンプリミティブであるか、または、GAD要素であるかに依存する。GAD要素に対してテストされたレイの場合、GAD要素はテスト中のコレクションと関連付けられたノードとのグラフ接続に基づいて特定され、レイはテスト中のGAD要素と関連付けられたコレクションに追加される。コレクションは準備状況に関して見直され、テストの準備ができたとき選択される。プリミティブとのレイ交差に関して、最近接交差がレイを用いて追跡される。レイは準備完了コレクションと関連付けられたときにテストされるので、暗黙のうちに、特定のレイのための交差テストは、特定のレイが関連付けられたコレクションがテストの準備ができていると決定されるまで延期される。レイは、このようなレイがシーンジオメトリの異なる部分に対しテストされることを可能にする複数のコレクションへ同時に収集可能である(すなわち、レイはトラバースの順序にテストされなくてもよい)。] [0095] 上述されているように、ITUは、レイ入力から前に受信されたレイを表す情報をメモリに格納する。ITUは、これらのレイに対し、各レイと複数のコレクションのうちの1若しくはそれ以上のレイコレクションとの関連性を維持する。ITUは、メモリに格納された複数のコレクションに関するコレクションフルネスの指標をさらに維持する。これらの指標は、フルコレクションを指定するそれぞれのフラグであること、または、所定のコレクションと関連付けられたある程度の数のレイを表現する数字であることができる。実施のさらなる詳細および他の実施例と、テストアルゴリズムの実施に関係した変形とは、前述の参照された関連出願に記載され、ここで文字通りに提示されている情報がそれらの排他的な取り扱いでないことを明らかにしている。] [0096] ここまでの開示内容から明らかであるように、レイは、レイのコレクションの中に設けられた情報に基づいてメモリからロード(またはメモリの中でアクセス)される。したがって、このようなローディングは、各レイを表すデータが格納されるそれぞれのメモリロケーションを決定することを含むことができる。このようなデータはそのレイコレクションの中に含まれることができ、たとえば、レイコレクションは、それらのレイのためのレイデータがそのコレクションの中で格納されているメモリロケーション、または、格納場所への他の参照情報のリストを含むことができる。例えば、レイコレクションは、メモリ、例えば、メモリ340、または、メモリのバンク(例えば、バンク510)におけるロケーションへの参照情報を含むことができ、または、他の実施では、これらの参照情報は、絶対値、ベースからのオフセット、または、このようなデータを参照するための別の適当な方式であることができる。しかし、いくつかの実施では、レイ・コレクション・データおよびレイデータが、例えば、内容連想データベースとして維持されることが可能であるので。その分離は、それほど明示的または明白であることは必要でなく、コレクションとレイとの間の関連性、および、コレクションとGADの要素との間の関連性が維持され、テストのためコレクションと関連付けられたレイ、および、同様にコレクションと関連付けられたGADの要素を特定するため使用される。] [0097] 同様に、プリミティブまたはGAD要素のいずれかがテストサイクルの中を循環させられているので、レイデータがテストセルの中で「静止」しているということは明白である。関連出願に記載されているように、他の実施が可能であるが、これらの開示内容の主な焦点は、ローカライズされるか、または、そうでなければ、セルに関して静止するようにレイを準備し、その間に、ジオメトリがフェッチされテストされることである。] [0098] このような実施の態様は図6に関連して提案される。特に、交差テストロジックの別の実施は、メモリインターフェイス625に連結するフェッチユニット620を含む(図2のテストロジック203に類似した)テスト制御ロジック603と、命令キャッシュ630と、命令デコーダ645と、データキャッシュ650とを含むプロセッサ605を含むことが可能である。データキャッシュ650はテストセル610a〜610nにデータを入力する。命令デコーダ645は、入力をテストセル610a〜610nへさらに提供する。命令ジェネレータ665は、命令入力を命令デコーダ645へ提供する。テストセルは検出された交差の指標をライトバックユニット660へ出力し、ライトバックユニットは次にデータをデータキャッシュ650に格納可能である。ライトバックユニット66からの出力は、命令を生成するとき命令ジェネレータ665への入力としても使用される。このようなプロセッサ605で使用される命令は単一データ複数命令の系統でもよく、テストセルの中で処理される命令が定義された面(たとえば、プリミティブおよびGAD要素)とレイとの間の交差テストであると考えられる。] 図2 図6 [0099] 実施例では、「命令」は、プリミティブ、または、GADの要素のような幾何学的形状を定義するデータを含むことができ、複数のデータ要素は、「命令」として提供された幾何学的形状に対するテストを行う別個のレイの参照情報を含むことができる。したがって、幾何学的形状と複数のレイ参照情報との組み合わせは、複数の図示されたテストセルに分散可能である別々の情報のパケットであると考えられる。いくつかの場合に、パケット分散は順次に進行することが可能であり、その結果、複数のパケットが複数のテストセルの間で「衝突」する。] [0100] このようなテストセルは、大規模命令セットをもつフル機能プロセッサとの関連で存在することが可能であり、各パケットは、その場合、パケットの目的を識別するために十分な他の情報を含むことができる。例えば、交差テストのため作成されたパケットを他の演算が実行されるための他の目的のため存在するパケットと区別するためにある程度の数のビットが含まれることが可能である。同様に、種々の交差テスト命令が、異なるプリミティブ形状および異なるGAD要素形状と、さらに、必要に応じて、異なるテストアルゴリズムとを含む目的のため、提供されることができる。] [0101] 典型的な実施例では、各交差テストパケットは、最初に、GADの要素またはプリミティブへの参照情報のいずれかであるジオメトリ要素への参照情報またはジオメトリ要素のためのデータと、ジオメトリ要素との交差に関してテストされるある程度の数のレイへの参照情報(すなわち、前述の「パケット」)とを収容することが可能である。] [0102] デコーダ645は、ジオメトリ要素への参照情報を決定するため命令を解釈し、フェッチ620(メモリインターフェイス625のようなメモリインターフェイスのための制御)を介して要素のフェッチを開始できる。いくつかの実施では、デコーダ645は、将来に必要とされるジオメトリ要素のフェッチを開始するためにある程度の数の命令に備えることができる。ジオメトリ要素はフェッチ620によってデコーダ645へ提供でき、デコーダ645はジオメトリ要素をテストセル610a〜610nへ提供する。] [0103] デコーダ645は、関数アドレスとして命令からのレイ参照情報をデータキャッシュ650へさらに提供し、データキャッシュは、各レイの交差テストのため十分なそれぞれのデータをテストセル610a〜610nのそれぞれに提供する。交差テストのため必要とされないレイと関連付けられたデータは提供される必要がない。したがって、データキャッシュ650は、交差セルテストとして動作する1若しくはそれ以上のコンピューティング資源のためのローカライズされたレイデータ記憶設備としての役割を果たすことができる。] [0104] ジオメトリ要素は、各テストセル610a〜610nにおいてそれぞれのレイとの交差に関してテストされ、交差の指標がライトバック660による受信のため各テストセル610a〜610nから出力される。テストされるジオメトリ要素の性質に依存して、ライトバック660は、2つの異なる機能のうちの一方を実行する。テストセル610a〜610nが交差に関してプリミティブをテストしている場合、ライトバック660はテストされているプリミティブと交差した各レイの指標を出力する。テストセル610a〜610nがGADの要素をテストしている場合、ライトバックはテストセル610a〜610nの出力を命令ユニット665へ提供する。] [0105] 命令ユニット665は、さらなる交差テスト中にテストセルに指令することになる将来の命令を組み立てるため動作する。命令ユニット665は、以下の通り、GADの所定の要素と交差したレイを指定するテストセル610a〜610nの入力と、命令キャッシュ630と、GAD入力670からの入力を使って動作する。テストセル610a〜610nからの入力を使って、命令ユニット665は、GAD入力に基づいて、テストセル610a〜610nからの入力の中で指定されたGADの要素に接続されたGADの要素を決定する(すなわち、命令ユニット665は、所定のGAD要素に対して指示された交差に基づいて次にテストされるべき要素を決定する)。] [0106] 命令ユニット665は、命令キャッシュ630に格納された命令が交差した要素に接続しているとして特定されたGADの要素毎に既に存在するかどうかと、命令がさらなるレイ参照情報を許容するかどうか(すなわち、命令のすべてのデータスロットが満たされているか?)と、を決定する。命令ユニット665は、テストセル入力の中で交差しているとして特定されたレイと同数をその命令に加え、残りのレイ参照情報を受信するため十分な他の命令を作成する。命令ユニット665は、テストセル入力の中で特定された要素と接続しているとして特定されたGADの要素毎にこれを実行する。このように、テストセル入力(交差指標)を処理した後、同じGAD要素と交差しているとして特定されたレイはそれぞれがその同じGAD要素に接続されたGADの要素に対するレイのテストを指定する命令に加えられる。このようにして作成された命令は命令キャッシュ630に格納されることができる。] [0107] 命令は、GAD入力670から受信されたGADの要素の編成に基づいて命令キャッシュ630の中に編成されることができる。命令ユニット665は、ロジック203aおよび命令ユニット665の両方がどのレイがどの要素にヒットしたかの指標を受信し、このようなレイを将来のテストのためグルーピングするので、ロジック203aと類似した機能を実行する。図6のシステムは、テストされるレイのパケットが異なる機能を達成する複数のタイプのうちのある種のパケットであることが可能であるので、より汎用的であることが意図されている。] 図6 [0108] 例えば、GAD入力670はGADのグラフを提供することができ、グラフのノードはGADの要素を表現し、ノードのペアはエッジによって接続されている。エッジは、どのノードが他のどのノードに接続されているかを特定し、命令ユニット665は、GADの所定の要素のためキャッシュの中に既に存在する命令と、新しいレイが追加される場所とを特定するために、ノードを接続するエッジを辿ることにより命令キャッシュ630を探索する。複数の命令が所定のGAD要素に対し存在する場合、複数の命令はリストの中でリンクされるか、または、そうでなければ、順序付けられるか、若しくは、互いに関連付けられることができる。関連した命令が見出されることがある命令キャッシュ630の中の潜在的なロケーションを特定するためのGAD要素IDのハッシングのようなその他の方法が同様に実施できる。] [0109] 命令は、(接続された各ノードのための命令を格納するのに反して)発行され復号化された命令に応答して、命令がGADの接続されたノードのフェッチを引き起こすように、テスト中のGADのノードをさらに参照できる。このような接続された要素のそれぞれは、各テストセルの中に維持されているそれぞれのレイとのテストのためテストセル610a〜610nの中へストリーム可能である(すなわち、レイデータは、複数のGAD要素がそれぞれのテストセルに提供され、各テストセルがそのレイを各GAD要素と順々にテストする間、テストセルの中で静止し続ける)。] [0110] よって、これらの実施例にしたがって実施されたプロセッサは、接続されたノードに対する交差テストのための第1のノードとの交差に関して特定されたレイを収集する命令を取得するか、そうでなければ作成するために機能を提供することになる。上述された実施例と同様に、プロセッサ605に提供されたGADが階層的である場合、GADのグラフは階層的な順序でトラバースされることがある。] [0111] GADの例示的な接続および供給源は典型的であり、他の配置も考えられる。例えば、メモリ615は、GAD要素の供給源であるかもしれないが、好ましくは、所定の処理アーキテクチャが許可する場合、ジオメトリデータではなく、レイ(すなわち、レイを定義するデータ、および、見出された現在の最近傍プリミティブ交差のような他のデータ)を高速メモリに格納し続ける。同様に、上記実施例では、テスト結果に基づいてテストされるべき次のノード(すなわち、次のアクセラレイション要素、またはプリミティブ)が決定され、パケットが幾何学的形状毎にそれぞれにインスタンス化された。上記開示内容から明らかである他の実施は、所定のノードの子のテストを開始することを決定し次第に、「子」ノード毎にパケットをインスタンス化することを含むことができ、後の時点で子命令/コレクションを作成する。] [0112] 図7は、交差テストと、カメラレイといった新しいレイの生成を含むレイシェーディングとの動作を分離するためキューを使用できるレイトレーシング・システム(例えば、システム700)の態様をさらに図示する。システム700は、交差テストのためのレイのサブミッションと、交差テストの完了とを可能にさせ、図1〜6のシステムと同様に、異なる順序でシェーディングのための出力を生じる。同様に、交差テスト資源は、前に特定された交差のシェーディング解決のため停滞することなく、レイの交差テストを進めることが可能である。] 図1 図2 図3 図4 図5 図6 図7 [0113] 図7は、交差に関してテストされるべきレイを定義するデータを交差テスト資源に格納するレイデータ記憶装置766a〜766nにそれぞれが連結された複数の交差テスト資源(ITR)705a〜705nを図示する。ITRの各グループおよびレイデータ記憶装置(例えば、レイデータ766およびITR705a)は、テスト資源およびレイデータ記憶装置のローカライズされたグルーピング、例えば、前のグルーピング、例えば、図5のグルーピング578および579に類似している図示されたグルーピング704と見なすことができる。] 図5 図7 [0114] レイデータ記憶装置766a〜766nは、プライベートL1キャッシュ、L2の共有部分またはマップ部分などのようなメモリであることが可能である。上述の実施例では、高速メモリを幾何学的データではなく、特定の処理資源にローカルであるレイデータの格納に当てるのが好ましい。レイデータのローカライズされた格納は、ここで使用される交差テストアルゴリズムによって簡単化され、レイがローカライズされた高速メモリに格納されることが可能である期間を増大させ、この小規模メモリのスラッシングの量を削減する。したがって、このレイ格納は、所定のレイのためのデータがシーンの中の交差テストを完了するまで通常は同じローカルメモリに格納されるので、準静的であると見なすことができる。] [0115] レイを定義するデータは、(上述の図におけるロジック203bなどに類似した)テスト制御703から出力743を介してロードされる。テスト制御703は、レイ終了キュー730を介して、ITR70a〜705nにおいて交差テストを終了したレイの識別子を含む入力を受信する。] [0116] キュー730はレイ識別子を格納する(いくつかの例示的なレイID1、18、10および480が図示されている)。キュー730は、ITR705a〜705nから、交差した最近傍交差を特定するためにテストされ、シーン内のテストを終了するレイを表現する入力を取得する。したがって、キュー730は、ITR705a〜705nからの所定の出力がGAD要素の情報、または、最近傍と思われるプリミティブ交差(ITR705a〜705nが両方のタイプの形状をテスト可能である場合に役立つ)を表現するかどうかを決定可能である決定ポイント751からデータ入力されることが可能である。] [0117] 決定ポイント751は、したがって、上述された2種類の交差制御機能を表現する。一方の交差制御機能では、GAD/レイ交差が交差テスタの近くで維持/管理され、もう一方では、最近傍の検出されたプリミティブ/レイ交差だけがシェーディングのため出力される。いくつかの上述のアーキテクチャにおいて、別個のテストセルがそれぞれに使用される場合、決定ポイントは、最近傍と思われるプリミティブ交差が見出されたときだけを追跡することができる。] [0118] 決定ポイント751から、GAD結果は、レイ制御703から提供され、そして、入力742から受信されたレイIDを格納するキュー725からレイID入力も受信するマルチプレクサ752に入る。レイ制御703は、テスト制御703から出力743を介してレイデータ766a〜766nに提供されているレイ情報に対応するレイ識別子と共に入力742を投入する。よって、(レイ識別子(レイID))によってキュー725の中で特定されたレイを定義するデータは、出力743を介して、レイデータ766a〜766nに提供され、これらのメモリに格納される。レイIDがどのように形成されるかについての実施例は後述される。] [0119] 両方のキュー730および725は、レイの一連の識別子(レイID)を図示する。しかし、後述されるように、レイは、一般に、所定の幾何学的形状に対して並行にテストされる。よって、このような場合、キュー725は、好ましくは、レイIDのパケットのためのレイIDを格納することになるので、キュー730は、各エントリが所定の形状と関連付けられたある程度の数のレイIDを有する一連のエントリを表現できる。] [0120] 特有の実施例として、このアーキテクチャを駆動するアルゴリズムは、ある程度の数のレイが所定の形状に対してテストされるべきであると決定されるまで一般に待機するので、多数のレイがほぼ同時にテストを終了し、そして、テストを開始すると一般に考えられる。有利な点として、これらの終了レイは、最初にインスタンス化された方法または時点に関して、または、これらの終了レイがどの経路を使ってアクセラレイション階層をトラバースしたかに関して、互いに完全に無関係にできる。逆に、キュー725は、シーンのデフォルトGAD要素、たとえば、GAD要素の階層の中のルートノードに対してテストされるべき新しいレイのグループまたはパケットを収容すると考えることができる。] [0121] このような新しいレイは、カメラシェーダ735および他のシェーダ710a〜710nを含む光線源に由来する。カメラシェーダ735は、シーンの中でテストされるべき1次レイを生成するので、別個に特定される。シェーダ710a〜710nは、例えば、スレッドの形でコンピューティング資源の上で、および/または、1若しくはそれ以上のプロセッサのコアの上で動き、レイとプリミティブとの間で特定された交差に適切な応答を指定する命令または他のロジックの実行を表現する。通常は、このような応答は、プリミティブと関連付けられたコードをシェードすることにより少なくとも部分的に決定され、様々な他の影響および考慮事項を明らかにすることができる。] [0122] シェーダ710a〜710nは、テスト制御703の出力745からこのようなレイデータを受信する分散ポイント772を介して(図8aを参照のこと)、交差したレイおよびプリミティブの識別子を受信する。分散ポイント772は、このようなレイデータを所定のプリミティブのためのコードを実行する利用可能性を有する計算資源へ提供するために使用できるので、このような利用可能性決定手段は、負荷測定、計算資源によってセットされるフラグ、フルネス指標を使うFIFO分離、または、ラウンドロビン若しくは疑似ランダム分散スキームを含むこのような分散を制御するため使用可能である。] 図8a [0123] これらのシェーダ710a〜710nの出力は、便宜上2次レイと呼ばれる他のレイを含むことが可能である(カメラ735からの出力もレイを含む)。本実施例では、このようなレイは、この時点で、レイを定義する始点および方向を少なくとも含むが、この時点で、好ましくは、テスト制御703によって提供されるレイIDが関連付けられている必要はない。] [0124] 識別できるように、テスト制御703は、交差テスト資源におけるレイ状態を監視可能であり、図8〜9に関連してより詳細に記載されるように、新しいレイがレイデータ766a〜766nの中の終了したレイを置き換えることを可能にする。レイIDのITR705a〜705nへの分散は、図10に関して詳述されるディストリビュータ780によって実行される。このような分散は、レイデータ766a〜766nのメモリが所定の識別子によって特定されたレイを定義するデータを格納することによって主として制御される。同様に、ディストリビュータ780は、図10に関してさらに後述されるように、コレクション準備完了のような考慮事項に基づいて、レイIDがキュー725から取得される時点を制御する。] 図10 [0125] 今度は、図8aを参照すると、レイデータ766a〜766nのそれぞれと関連付けられたメモリのバンクを含み、各バンクがレイデータで占められているスロットを有し、メモリアドレスによってアドレス指定可能である、テスト制御703の一部分が図示されている。図8aは、レイ終了キュー730からの出力744がレイ識別子1、18、106および480を含み、各識別子がメモリ803の中にスペースを割り付けられていることを図示している。このようなスペースは、出力744からのこれらのレイ識別子の受信に応答して上書き/記入されることが許可される。分散ポイント722への出力745は、シェーディングの際に用いられるレイデータを含む。出力745は他のデータをさらに含むことができる。実際には、メモリ803は、シェーダ710a〜710nを実行するプロセスのような他のプロセスによっても使用されるメモリで実施されることができる。このような場合、出力745は、計算資源によるメモリ803からのこのようなデータの取り出しを表現可能である(または、取り出しによって実施可能である)。] 図8a [0126] リンク741、742、743、744、745、750、790のような種々の通信リンクは図7において特定され、これらのリンクのうちのいずれかが全体的なアーキテクチャ実施に従って実施可能であり、共有メモリ領域、物理リンク、拡張バスの上に確立された仮想チャネル、共有レジスタスペースなどを含むことが可能である。] 図7 [0127] 図8bは、新しいデータのためのデータは、(例えば、カメラシェーダ735のようなシェーディング動作からの)出力741から到来する。このようなレイデータは、レイ始点および方向情報を少なくとも含む。次に、テスト制御703は、これらの新しいレイをメモリ803の中で様々なレイデータ766a〜766nのためのロケーションに割り当てる。各レイ始点および方向と関連付けられた識別子は、それぞれが格納された場所に依存する。よって、入力742(キュー725に関する入力)はそれに基づいて決定されたレイ識別子を受信する。同様に、出力743は、レイ識別子と、それらと関連付けられ、メモリ803に格納された始点および方向情報との両方を含む。レイIDは関連データを特定するためメモリをインデックス付けするため使用できるが、ITR705a〜705nおよびメモリ803の中のレイデータの特定がレイ識別データを使用して実行できる限り、レイのための他の種類の識別子も使用できるので、図8aおよび8bに図示されたレイIDの割り当ては便宜的である。] 図8a 図8b [0128] 図9aは、内容連想メモリ910がそれぞれ異なるレイデータと関連付けられているキー905を維持するこのような代替案の実施例を図示する。] 図9a [0129] 図9bは、各レイデータ766a〜766nの内部において、スロットがテスト制御703からインターフェイス743を介してレイデータを受け入れるため設けられていることを図示する。これらのスロットは、複数のバンクにさらに細分すること、または、インターリーブ化することが可能であり、および/または、キャッシュからのデータのより簡単な取り出しを可能にする他のキャッシュ編成メカニズムであることが可能である。レイは、ここでは、格納のため分散されることが必要であり、このような分散は、レイIDの最下位ビット、若しくは、レイIDのハッシュに基づいて、または、分散が行われるバンクの数によるモジュロ除算を用いて、ラウンド・ロビン・キューイングを用いて、もしくは、レイデータをメモリへ分散するため使用できる他の分散メカニズムを用いて進むことができる。所定の部分の範囲内で、レイデータはレイIDに基づいてソートされることも可能である。] 図9b [0130] 要約すると、図7〜9bは、テストされるべきレイが制御ロジックによって収集され、好ましくは、レイ定義データが異なる交差テスト資源に連結されたそれぞれのキャッシュに格納されるメモリロケーションに基づいている識別子が割り当てられるアーキテクチャを図示する。プリミティブ交差テスト結果は、テストが終了したときにこれらのテスト資源から到来し、テスト制御ロジックは、その後に、これらの終了したレイのメモリロケーションをテストされることを必要とする新しいレイに再割り当て可能である。終了したレイは、テストされるべきさらなるレイを生成可能である複数の異なる交差処理/シェーディング資源のいずれかで共用可能である。レイは、一般に、アクセラレイション構造のトラバースの間中、かつ、最近傍プリミティブ交差が特定されるまで(または、レイがシーン背景以外と交差しないことが決定されるまで)交差テスト資源の中を循環させられる。] 図7 図8a 図8b 図9a 図9b [0131] 図10を参照すると、レンダリングシステムのさらなるアーキテクチャ態様が図示されている。図10における一態様は、レイデータが交差テストのため構成されたプロセッサに連結されたそれぞれのキャッシュメモリに格納できることである。別の態様は、ディストリビュータ780がITR705a〜705nとインターフェイスをとることができる方法である。図示されているさらなる態様は、テスト用の形状データが交差テスタへ提供できる方法である。] 図10 [0132] ディストリビュータ780は、(ハードウェア、プロセス間またはスレッド間通信などとして実施された)通信リンク790を介してマルチプレクサ752(図7)からレイ識別子を受信する。これらのレイIDのそれぞれは、レイIDと、次にテストされるべきそれぞれのGAD要素バウンディング物体との間の関連性が維持されているコレクション・マネージメント1075へ送信される。レイIDは、決定1013、1014および1015によって、レイIDがそれらのコレクションをテストするためコレクション・マネージメントおよび記憶装置1075からの決定を待つ場所であるキュー1021、1022、および1023の間にさらに分散されることが可能である。例えば、コレクション1045は、テストする準備が整っていると決定され、レイIDは、キャッシュ1065a〜1065nがこのようなレイIDのそれぞれのためのデータを収容しているそれぞれのITR705a〜705nへ送出される。コレクション・マネージメント1075は、テストのため必要とされる幾何学的形状の取り出しを開始するため、GAD要素データおよび/またはプリミティブデータを格納するメモリへのインターフェイスを有することもできる。] 図7 [0133] これらの形状は、(例えば)リンク112を介して記憶装置103(図1)からキュー1040に達する。これらの形状は、所定のコレクションと関連付けられたGADの要素との関連性に基づいて特定されている。例えば、階層GADの場合、これらの形状は、親GAD要素の子であることが可能である。各ITRは、キュー1040からの形状に対してそれぞれのレイを順次にテスト可能である。よって、所定のコレクションのレイがキャッシュ1065a〜1065nの間に均等に分散しているとき、最高スループットが実現され、コレクション・マネージメント1075は、所定のレイコレクションをテストした結果に基づいて最も簡単にコレクションを更新できる。所定のコレクションの中の複数のレイが1つのキャッシュにあるとき、他の交差テスタはストールすることが可能であるか、または、次のコレクションからのレイをテストすることが可能である。コレクションテスト同期が再び必要とされる前に、順序が乱れているテストの最大数が受け入れられる。] 図1 [0134] 出力は、出力750a〜750n(リンク750(図7)のコンポーネントであることが可能である)で生成され、決定ポイント751(図7)に提供される。上述の通り、このアーキテクチャは、どのような形状でも(すなわち、プリミティブまたはGAD要素のいずれかを)テストするITRを提供する。さらに、コレクション・マネージメント1075と連結された決定ポイント751は、GAD交差テストの結果が、所定のレイが所定のGAD要素にヒットする決定を含むことを表し、特定されたレイをそのGAD要素に対応するコレクションに追加させる。よって、別の実施は、GADテスト結果をコレクション・マネージメント1075へ直接的に提供することを含むことができる。より一般的には、上記実施例は、潜在的な情報のフローを例示し、他のフローがそこから明白である。] 図7 [0135] 注意すべき他の態様は、所定のレイコレクションの1若しくはそれ以上のレイIDがキュー1021、1022、1023(コレクション1047によって示されている)のいずれかに格納できることである。このような場合、そのキューのためのITRは両方のレイをテスト可能であり、利用可能になるとき2回目のテスト(または、多数の後続のテスト)の結果を出力する。決定ポイント751は、組み立てられるべきコレクションのすべての結果を待つことができ、または、「散在する」結果が利用できる限りで伝搬させられる。] [0136] 要約すると、図10は、1若しくはそれ以上の形状と関連付けられたレイ識別子のパケットが複数のテスト資源のためのキューに分散されることを可能にさせ、各キューがレイデータのサブセットを格納するシステム編成を図示する。各テスト資源は、テスト資源にロードされた形状に対して各レイ識別子によって特定されたレイデータをフェッチする。好ましくは、形状は並行してすべてのテスト資源の中で順次にストリーム化可能である。形状は、主メモリの中のアドレスから始まる一連の子として特定することができる。よって、図10は、形状が一般に複数のレイに対して並行してテストされるシステム編成を図示する。] 図10 [0137] しかし、他の実施例は一連の異なる交差テスト資源の中の形状を順次にテストし、形状データおよびレイ識別子のパケットが交差テスト資源の間を進む。複数のパケットを進行させることにより、テストのスループットが増加する。本アプローチによる実施例は後述される。] [0138] 図11は、複数の計算資源1104〜1108のリングバス配置が実施可能であるコンピュータアーキテクチャの第1の実施例を図示する。各計算資源は、交差テストのため使用される計算資源のため、メモリ340の中の形状データ記憶装置1115からそのコンピューティング資源へ提供された幾何学的形状と交差テストされるべきレイデータを収容するプライベートL1キャッシュ1125a〜1125nにアクセス可能である。計算資源1104〜1108の間の通信は、複数のポイント・ツー・ポイント、または、このようなプロセッサ間通信のため利用可能である他のアーキテクチャを含むことができるバス1106によって行うことが可能である。] 図11 [0139] 計算資源がL2キャッシュ1130および1135のようなある一定のメモリ構造を共有する場合、これらの計算資源、例えば、L2キャッシュ1130を共有する計算資源1107および1106の間の通信は、ある目的のためそのキャッシュを介して互いに通信することができる。付加的に、システムの中でテストされているレイのためのデータのコピーは、レイデータ1101a〜1110nの間でのデータのサブセットの分散のため、レイデータ1110に維持されることができ、(後述されるように)これらのL2キャッシュに格納されることもできる。形状データ1115は、メモリ340に存在することもでき、L2 1130、1135のうちの1若しくはそれ以上と、キャッシュ1125a〜1125nのうちのいずれかに一時的に存在することもできる。しかし、このようなキャッシュに格納されたレイデータは、このような形状データによって上書きされることから保護され、このような形状のため割り付けられたスペースの大きさは、一般に、テストにおいて次に使用される時点についての指標がない場合に形状データを周りに維持しようとすることなく、形状データ1115へのレイテンシを遮断するため足りるように、テストの準備ができているとして現在特定されているパケットのために使える大きさに制限される。換言すると、レイデータのため、最大未使用置換のような、典型的なキャッシュ・マネージメント・アルゴリズムの使用を回避することが好ましい。] [0140] 図11は、アプリケーションおよび/またはドライバ1120が交差テストに加えて計算資源1104上で実行可能であることをさらに図示する。同様に、レイプロセス1121は計算資源1108上で実行可能であり、パケットデータ1116はパケットプロセス1121によって用いるためキャッシュ1125aに格納可能である。他のパケットデータはL2 1129に格納可能であるが、レイデータと同様に、パケットデータを最高速であると考えられるメモリに格納することが好ましい。パケットプロセスは、コレクションおよび他のマネージメントロジックが上述の図面において実行した同じ機能のうちの大半を実行し、すなわち、どのレイがどのGAD要素と交差したかを記録し、そして、例えば、交差したGAD要素の子に対してテストされる準備ができている十分なレイを有することによって、例えば、テストの準備ができているGAD要素を選択する。] 図11 [0141] 本実施例では、パケットプロセス1121は集中化されているので、複数のレイ識別子と、特定されたレイとの交差に関してテストされるべき(複数の)形状への参照情報または複数の形状のデータのいずれかと、を収容するパケットを発行することにより、動作することになる。交差テストを実行する各計算資源1104〜1107はパケットを受信する。例えば、複数のポイント・ツー・ポイント・リンクにおいて順番に(さらに後述される)、または、共有バス型の媒体においてほぼ同時に(図10のアーキテクチャに類似することが可能である)。各計算資源1104〜1107は、それぞれのローカライズされたレイデータ1110a〜1110nがパケットの中で特定されたレイに関するデータを格納するかどうかを決定し、格納する場合、そのレイに関するデータを取り出し、テストし、結果を出力する。] 図10 [0142] GAD要素交差の結果はパケットプロセス1121によって追跡されるので、このような結果をパケットプロセス1121へ戻す通信メカニズムが許容できる。このようなメカニズムは、システムの全体的なアーキテクチャに基づいて選択できる。いくつかの例示的なアプローチは後述され、見出された交差毎に別個の指標を含むことができるか、または、各テスト資源が循環するパケットに交差結果を投入することを可能にする。] [0143] 図12は、レイデータ1266a〜1266nおよびパケットデータ1216a〜1216nをそれぞれ格納するキャッシュ1281〜1284が付随した計算資源1205〜1208の編成のさらなる実施例を図示する。各計算資源1205〜1208は、キュー1251〜1254によって少なくとも1つの他の計算資源に接続される。レイプロセス1210は、キュー1250を介して計算資源1205へ入力を提供する。レイプロセス1210はアプリケーション/ドライバ1202と通信する。計算資源1208からの出力1255はレイプロセス1210と通信する。別の出力1256は計算資源1205と通信する。プリミティブおよびGAD記憶装置103は、計算資源1205〜1208のためその形状データへのリードアクセスを提供する。] 図12 [0144] レイプロセス1210は、テストのためのレイを受信または作成し、特定されたレイのレイ識別子およびレイデータを収容するパケットを形成する。パケットは、キュー1250〜1254を介して計算資源1205〜1208のそれぞれへ伝えられる。各計算資源1205〜1208は、所定のパケットの中のレイの一部分、いくつかの実施例では、1つのレイを要し、レイのその部分を計算資源のレイデータ1266a〜1266nの中に格納する。他の実施例は、特有の計算資源1205〜1208へ向けられたパケットを送信することを含むことができ、レイプロセス1210はどのレイデータがどのローカライズされたレイデータ1266a〜1266nに格納されるかを決定することになる。] [0145] レイがローカライズされた記憶装置にロードされた後、レイは、次に、始点および方向データをもたずに、レイIDだけを収容するパケットによって特定される。このようなパケットは、そのパケットの中で特定されたレイに対してテストされるべき形状への参照情報または形状のデータのいずれかをさらに収容する。いくつかの実施例では、このようなパケットを形成するデータは、計算資源1205〜1208のローカライズされたメモリ1281〜1284の間に分散される。よって、計算資源1205〜1208のそれぞれは、どのレイがどの形状に対して次にテストされるべきかに関する情報が分散されるように、所定の時刻にシステムの中でテストされているレイのためのパケットデータの一部分を維持する。かくして、各計算資源1205〜1208は、テストの準備ができているコレクションのテストを開始するため、レイIDおよび形状情報のパケットを発行可能である。] [0146] 各パケットは、キューおよび計算資源を一周し、次に、パケットの中に投入された交差テストの結果と共に発信元の計算資源へ返送される。一実施では、各計算資源1205〜1208は、各計算資源が発行するパケットのための形状データをフェッチする。例えば、計算資源1205は、テストのための準備が整ったパケット(たとえば、所定のGAD要素のためのレイのコレクション)を有し、次に、計算資源は、このような関連性(例えば、GAD要素の子)によってテストされるべき形状をフェッチし、各形状のためのデータを有するパケットを作り、キュー1251から各パケットを送出することが可能である。] [0147] 順番に、計算資源1205は、パケットが他の計算資源の中を移動した後、この計算資源が送出した各パケットを受信する。受信されたとき、各パケットは、他の計算資源1206〜1208に格納された/格納されるパケットの中の特定されたレイとの交差に関してそのパケットの中の形状をテストした結果(参照情報または定義データ)が投入される。計算資源1205は、他の計算資源がそれぞれのテストを実行する前または後のいずれかに、計算資源がレイデータ1266aの中にローカルに保有しているいずれかの特定されたレイをテスト可能である。よって、レイ定義データは、交差テスト資源に連結された複数の高速メモリの間に分散させることができ、テスト結果は分散された方式で収集可能である。] [0148] 図12に従ってアーキテクチャを実施することは、使用されている物理的なシステムの種々の特性を考慮に入れることができる。例えば、キューは、パケットを一方向へ送信するものとして表されている。しかし、利益はパケットを両方向へ送信することによって実現されることができる(双方向キューまたは複数のキュー)。同様に、図12は、パケットデータが計算資源の間に分散され、より多くのL2キャッシュへのより分散したメモリアクセスと、潜在的に主メモリ103のようなより大規模なメモリへの他のポートのアクセスとを可能にすることを図示する。] 図12 [0149] パケットが集中化される場合、データ参照情報と共に一方向に送信されたパケットは、例えば、計算資源1205によってフェッチされたデータを有することができ、データ参照情報と共にもう一方の方向へ送信されたパケットは、計算資源1208によってフェッチされたデータを有することができる。この状況は、このようなリングバス・アーキテクチャ(一方向または双方向)にエントリポイントを設けるため一般化が可能である。] [0150] 開示内容から明白であるように、上記キューは、交差テストのための新しいレイを複数の交差テスト資源を含むシステムに導入するための1若しくはそれ以上のキューと、交差テスト資源を互いに相互接続するキューとを含むことができる。いくつかの場合に、新しいレイを導入するキューはレイ定義データを収容可能である(例えば、交差テスト資源に接続されたキャッシュにデータを格納するのを待機するキュー)。このようなキューは、レイ定義データを格納する主メモリの中にリストとして実施可能である。パケットを伝える交差テスト資源を相互接続するキューは、好ましくは、レイ識別子だけを含み、レイ定義データを含まないことができる。] [0151] 図13は、計算資源1205が一方のコアであり、計算資源1206が別のコアであるように、計算資源がチップのコアを用いて実施されることができ、そして、キュー1251がコア間通信であるシステム1200の潜在的な実施の一部分を図示する。同様に図示するのは、レイデータを形状データと共に格納可能である中間L2キャッシュ1305である。前述の図に関して説明されているように、L2キャッシュ1305は、シーンジオメトリおよびアクセラレイションデータのいくつかの部分を格納することができ、このようなデータを格納する限りは、レイデータのスラッシュ化の増加はない(すなわち、レイデータは、好ましくは、キャッシュ格納において優先される)。] 図13 [0152] 図14a〜14cは、それぞれが、例示的なシステムの種々の実施によるキューが取ることができる種々の関係を図示する。一般に、計算資源間の通信は、直列または1:1であることが必要とされない。例えば、図14aは、1入力1404が、1つの計算1407および1408にそれぞれに専用である両方のキュー1405および1406にデータ入力可能であることを図示する。例えば、計算1407および1408が単一の物理的なチップで実施される場合、入力1404はチップレベル入力であることが可能であり、各キュー1405、1406は特有のコアのため使われることが可能である。] 図14a 図14b 図14c [0153] 図14bは、単一入力が複数のコアにデータ入力可能であり、複数のコアのそれぞれが計算1407、1408にデータ入力可能であり、計算のそれぞれが同様にデータを反対側のキュー1406、1405へそれぞれに送信可能であることを図示する。図14cは、キュー1411が入力1410を受信可能であり、出力を両方の計算1407および1408へ提供可能であることを図示する。よって、図14a〜14cは、種々のキューイング戦略がこれらの態様に従ってパケットを伝達するため実施可能であることを図示する。] 図14a 図14b 図14c [0154] 図15は、複数のキャッシュ階層のレベルが存在すること(例えば、レベル1のキャッシュ1502および1503と、レベル2のキャッシュ1504と、レイデータの種々の組み合わせを設けることができること)を図示する。例えば、レイデータ1507は、レイデータ1505と1506との互いに素な部分集合と、1505または1506のいずれにも存在しないレイデータとを含むことが可能である。レイデータ1505および1506は、動的に変化することが可能であり、例えば、一方のキューが1若しくはそれ以上の計算資源(図14c)にデータ入力する場合、レイデータは、いずれかのレイデータ1505または1506へのレイデータ1507に格納されたレイの動的な割り当てを反映することができる。] 図14c 図15
权利要求:
請求項1 3次元シーン内のレイを交差テストするシステムであって、各交差テスタが複数のレイを定義するレイ定義データのマスターコピーのそれぞれのサブセットを格納するためそれぞれのキャッシュメモリへのアクセス権を有する複数の交差テスタと、前記交差テスタの前記キャッシュメモリに格納された定義データによって定義された前記レイの少なくとも一部のそれぞれの識別子へのアクセス権を有し、複数のレイ識別子を、特定されたレイを使って交差テストされるべき前記3次元シーン内に位置している1若しくはそれ以上の形状を表す形状情報と関連付けることと、関連性を表すデータを前記複数の交差テスタで利用できるようにさせることと、によってレイ交差テストを制御するため動作可能であり、前記交差テスタのそれぞれが指示された1若しくはそれ以上の形状との交差に関して、交差テスタのキャッシュがレイ定義データを格納している特定されたレイをテストするため動作可能である、制御ロジックと、前記交差テスタから出力を受信するため連結され、出力が前記交差テストの結果を表すデータを含む出力バッファと、を含む、システム。 請求項2 請求項1記載のシステムにおいて、このシステムは、さらに、前記交差テスタからの出力によって特定され、前記出力バッファから取り出し可能であるプリミティブと関連付けられたシェーダ・コード・ルーチンを実行する複数の計算資源を含むものである。 請求項3 請求項2記載のシステムにおいて、前記シェーダ・コード・ルーチンの実行は交差テストされるべき新しいレイを生成するものであり、前記新しいレイを受け取るため前記複数の交差テスタへの入力キューをさらに含むものであり、前記制御ロジックは、他のレイが交差テストを終了したとき、前記新しいレイの交差テスタを開始するため動作可能であるものである。 請求項4 請求項1〜3のいずれか1つに記載のシステムにおいて、各交差テスタは、定義データにレイ識別子が設けられているか、または、メモリ参照情報が設けられている1若しくはそれ以上の形状との交差に関して特定されたレイをテストすることにより、それぞれのメモリに格納されたレイに対する識別子の受信に応答するように構成されているものである。 請求項5 請求項1〜4のいずれか1つに記載のシステムにおいて、前記交差テストは、レイと、kDツリー、軸方向整列バウンディングボックス、および、球体の1若しくはそれ以上のカッティングプレーンから選択されたアクセラレイション構造要素を含む幾何学的形状との間で行われるものである。 請求項6 請求項1〜5のいずれか1つに記載のシステムにおいて、前記交差テスタは、前記交差テスタの間で、前記複数のレイ識別子とこれらの特定されたレイと交差テストされるべき前記1若しくはそれ以上の形状を表す前記形状情報との間の関連性を表すデータを順次に送り、前記データを前記交差テスタのすべてで利用できるようにするため構成されているものである。 請求項7 請求項6記載のシステムにおいて、各交差テスタがレイとの交差をテスト可能である前記形状は、ジオメトリ・アクセラレイション要素およびプリミティブを含むものであり、各交差テスタは、さらに、ジオメトリ・アクセラレイション要素との交差に関するレイのテストの結果を前記関連性を表す前記データと共に送り、プリミティブとの交差に関するレイのテストの結果を前記交差テスタの前記キャッシュメモリの中に維持するものである。 請求項8 請求項1〜7のいずれか1つに記載のシステムにおいて、前記複数の交差テスタは、1若しくはそれ以上の計算コア上で実行するコンピュータ実行可能な命令のスレッドとして実施されるものである。 請求項9 請求項1〜8のいずれか1つに記載のシステムにおいて、このシステムは、さらに、3次元シーンを構成するプリミティブを格納するメモリを含むものであり、前記プリミティブを格納するメモリは、1若しくはそれ以上の計算コアを含むコンピューティングシステムのための主メモリとしての機能をさらに果たすものであり、前記1若しくはそれ以上の計算コアは集団で、時間的変化に基づいて前記交差テスタの実施とシェーダ・コード・ルーチンの実行との間で前記システムによって割り付けられた複数のスレッドを並行して実行可能であるものである。 請求項10 各計算資源がそれぞれのローカルメモリおよび共有主メモリに連結されている複数の計算資源を有するシステムにおいてプリミティブで構成されたシーンのレイトレーシングを制御する方法であって、主メモリのレイテンシはローカルメモリよりも高く、前記シーンの中で交差テストされるべきレイのそれぞれのサブセットを定義するデータを、前記計算資源の前記ローカルメモリの間に分散させる工程と、幾何学的形状との交差に関して、グループのメンバが複数の前記ローカルメモリに集団で格納されている前記レイのグループをテストすることを決定する工程と、ローカルメモリが前記グループの中のレイのための定義データを格納する少なくとも1つの計算資源に前記幾何学的形状データおよび前記レイ識別子を受信させるため、前記幾何学的形状およびレイ識別子のためのデータを前記計算資源に提供する工程と、前記計算資源から、前記グループの中のレイと前記幾何学的形状との間で検出された、ローカルメモリが該レイのための定義データを格納していた少なくとも1つの計算資源において前記グループの中の各レイをテストすることにより生じる交差の指標を受信する工程と、を含む、方法。 請求項11 請求項10に記載の方法において、この方法は、さらに、前記主メモリから前記形状を定義するデータをフェッチする工程を含むものであり、前記幾何学的形状のためのデータを提供する工程は、前記形状定義データを前記グループの中の前記レイ識別子と共に前記計算資源へ提供するものである。 請求項12 請求項10〜11のいずれか1つに記載の方法において、前記指標はジオメトリ・アクセラレイション要素とレイとの間の交差のためのデータを含むものであり、前記レイのグループは、同じジオメトリ・アクセラレイション要素と交差すると決定されたレイを収集することにより形成されるものであり、十分な数のレイが収集されるまで、前記ジオメトリ・アクセラレイション要素に関係したジオメトリ・アクセラレイション要素のさらなるテストを延期する工程をさらに含むものである。 請求項13 請求項10〜12のいずれか1つに記載の方法において、前記ローカルメモリはキャッシュメモリを含むものであり、所定のレイが交差テストを終了するまで、前記所定のレイを定義するデータをキャッシュメモリの中で上書きされることから保護する工程をさらに含むものである。 請求項14 請求項10〜13のいずれか1つに記載の方法において、この方法は、さらに、レイ定義データがそれぞれのローカルメモリに格納されているレイのそれぞれの現在の最近傍の検出された交差を前記それぞれのローカルメモリの中に保持する工程と、任意のプリミティブと所定のレイとの間で最近傍であると考えられる交差を特定することに応答して各交差指標を生成する工程とを含むものである。 請求項15 請求項10〜14のいずれか1つに記載の方法において、前記幾何学的形状のための前記データは、(1)テストされるべき1若しくはそれ以上の形状を特定する参照情報、および、(2)テストされるべき1若しくはそれ以上の形状を定義するデータの組からの選択を含むものである。 請求項16 請求項10〜15のいずれか1つに記載の方法において、提供する工程は、レイ識別子を前記計算資源が受信するため連結されている第1のキューの中へキューイングする工程を含むものであり、受信する工程は、第2のキューから前記交差指標を受信する工程を含むものである。 請求項17 請求項10〜16のいずれか1つに記載の方法において、この方法は、さらに、前記レイのマスターコピーを前記主メモリに維持する工程を含むものである。 請求項18 請求項10〜17のいずれか1つに記載の方法を1若しくはそれ以上の計算資源上で実施するコンピュータ実行可能なコードのモジュールを格納する、コンピュータ読み取り可能な媒体。 請求項19 レイトレーシングを使用してプリミティブで構成された3次元シーンの表現をレンダリングするシステムであって、3次元シーンを構成するプリミティブを格納するメモリと、複数のレイのための定義データを格納する1若しくはそれ以上のメモリと、各交差テスタが前記レイのうちの少なくとも1つを前記プリミティブのうちの少なくとも1つとテストし、交差テスト結果の出力を生じる複数の交差テスタと、各シェーダ計算ユニットが、前記結果によって指示された、検出されたレイ/プリミティブ交差のためのシェーディングルーチンを実行するため動作可能であり、前記シェーディンルーチンの実行が交差テストされるべき新しいレイと、前記複数のレイのための定義データを格納する前記1若しくはそれ以上のメモリに格納されるべき前記新しいレイのための定義データとを生じる、複数のシェーダ計算ユニットと、前記交差テスタからシェーダ資源に前記交差テスト結果を出力する第1の通信リンクと、前記シェーディングルーチンの実行から生じ、前記レイの交差テスト中に前記1若しくはそれ以上のメモリからそれぞれのレイのための定義データを取り出すことを目的とする新しいレイのための識別子を、前記交差テスタへ送信する第2の通信リンクと、を含む、システム。 請求項20 請求項19に記載のシステムにおいて、このシステムは、さらに、前記複数の交差テスタの間にメッセージを送るチャネルを含むものであり、前記交差テスタのそれぞれは、前記交差テスタによって受信されたメッセージの中のデータを複数のレイ識別子を収容するものとして解釈し、前記メッセージの中で特定された選択済みのレイを交差テストするため構成されているものである。 請求項21 請求項19に記載のシステムにおいて、前記交差テスタは、レイ識別子のパケットを前記交差テスタの間に送るためリング状に構成されているものである。 請求項22 請求項19に記載のシステムにおいて、前記交差テスタのそれぞれは、前記交差テスタと関連付けられたキャッシュが前記交差テスタの間に送られたメッセージの中で特定された前記レイのいずれかのための定義データを格納するかどうかの決定に基づいて、テストされるそれぞれのレイを選択するため動作可能であるものである。 請求項23 請求項19に記載のシステムにおいて、前記複数の交差テスタは、1若しくはそれ以上の計算コア上で実行するコンピュータ実行可能な命令のスレッドとして実施され、前記計算コアはシーン内を移動するレイのサブセットへのローカライズされたキャッシュ・メモリ・アクセスを有するものである。 請求項24 請求項19に記載のシステムにおいて、3次元シーンを構成するプリミティブを記憶する前記メモリは、1若しくはそれ以上の計算コアのための主メモリとして実施されるものであり、前記1若しくはそれ以上のコアは集団で、時間的変化に基づいて前記交差テスタの実施と前記シェーダ計算ユニットの実施との間に割り付けられているある程度の数のスレッドを並列して実行可能であるものである。
类似技术:
公开号 | 公开日 | 专利标题 CN104050632B|2017-10-17|用于多样本像素数据处理的方法和系统 Beyer et al.2015|State‐of‐the‐art in GPU‐based large‐scale volume visualization JP6553648B2|2019-07-31|スケーラブルなgpuにおけるデータ配信ファブリック US10223122B2|2019-03-05|Managing event count reports in a tile-based architecture US10134102B2|2018-11-20|Graphics processing hardware for using compute shaders as front end for vertex shaders US9569559B2|2017-02-14|Beam tracing US8952963B1|2015-02-10|Computer hardware architecture and data structures for a grid traversal unit to support incoherent ray traversal Purcell et al.2005|Ray tracing on programmable graphics hardware Woop et al.2005|RPU: a programmable ray processing unit for realtime ray tracing US10032289B2|2018-07-24|Relative encoding for a block-based bounding volume hierarchy Purcell et al.2005|Photon mapping on programmable graphics hardware US8330765B2|2012-12-11|Rolling context data structure for maintaining state data in a multithreaded image processing pipeline US8350846B2|2013-01-08|Updating ray traced acceleration data structures between frames based on changing perspective Pabst et al.2010|Fast and scalable cpu/gpu collision detection for rigid and deformable surfaces US8941653B2|2015-01-27|Order-preserving distributed rasterizer US8627329B2|2014-01-07|Multithreaded physics engine with predictive load balancing US8018453B2|2011-09-13|Deferred acceleration data structure optimization for improved performance DeCoro et al.2007|Real-time mesh simplification using the GPU Kim et al.2009|HPCCD: Hybrid parallel continuous collision detection using CPUs and GPUs US9183667B2|2015-11-10|Out-of-core ray tracing with memory-efficient page generation DE60033250T2|2007-06-28|System und Verfahren zur Darstellung mit Strahlverfolgung US8089481B2|2012-01-03|Updating frame divisions based on ray tracing image processing system performance US9679364B1|2017-06-13|Multi-sample antialiasing optimization via edge tracking Schmittler et al.2004|Realtime ray tracing of dynamic scenes on an FPGA chip US7990380B2|2011-08-02|Diffuse photon map decomposition for parallelization of global illumination algorithm
同族专利:
公开号 | 公开日 JP5740704B2|2015-06-24| WO2009117691A4|2009-12-30| WO2009117691A2|2009-09-24| CN102037497A|2011-04-27| CN102037497B|2014-06-11| WO2009117691A3|2009-11-12| JP2014089773A|2014-05-15| CN104112291A|2014-10-22| KR20100128337A|2010-12-07| JP5485257B2|2014-05-07| CN104112291B|2017-03-29| KR101550477B1|2015-09-04|
引用文献:
公开号 | 申请日 | 公开日 | 申请人 | 专利标题 JPH04213175A|1990-01-23|1992-08-04|Hewlett Packard Co <Hp>|Decentralized processor used for large-area rendering| JPH11353496A|1998-06-10|1999-12-24|Ken Nishimura|光線追跡のための交点探索装置| JP2007522567A|2004-02-17|2007-08-09|ウニヴェルズィテートデスザールランデスUniversitaetdesSaarlandes|複雑な動的3次元シーンをレイトレーシング法により写真現実的に表示する装置|JP2014026652A|2012-07-24|2014-02-06|Samsung Electronics Co Ltd|レイトレーシング方法及び装置| KR20150039494A|2013-10-02|2015-04-10|삼성전자주식회사|광선 추적 가속 방법 및 장치| JP2015090712A|2013-11-04|2015-05-11|三星電子株式会社Samsung Electronics Co.,Ltd.|レイトレーシング処理装置及びその方法| JP2017516209A|2014-04-21|2017-06-15|クアルコム,インコーポレイテッド|レイトレーシングアプリケーションにおけるツリー横断のための開始ノード決定| JP2018500628A|2014-10-21|2018-01-11|ノクセル・コーポレーション|繊維の画像の合成|JPH01149183A|1987-12-05|1989-06-12|Fujitsu Ltd|Method for forming| KR100300969B1|1996-04-25|2001-10-22|윤종용|Cross-Test Area Extraction Method and Rendering Appropriate for Raytracing| US6556200B1|1999-09-01|2003-04-29|Mitsubishi Electric Research Laboratories, Inc.|Temporal and spatial coherent ray tracing for rendering scenes with sampled and geometry data| CA2649745A1|2006-04-19|2007-11-01|Mental Images Inc.|Instant ray tracing| US6724856B2|2002-04-15|2004-04-20|General Electric Company|Reprojection and backprojection methods and algorithms for implementation thereof| DE10239672B4|2002-08-26|2005-08-11|MAX-PLANCK-Gesellschaft zur Förderung der Wissenschaften e.V.|Verfahren und Vorrichtung zur Erzeugung einer zweidimensionalen Abbildung einer dreidimensionalen Struktur| US7043579B2|2002-12-05|2006-05-09|International Business Machines Corporation|Ring-topology based multiprocessor data access bus| FR2896895B1|2006-02-01|2008-09-26|Redway Soc Par Actions Simplifiee|Procede de synthese d'une image virtuelle par lancer de faisceaux| CN101127126B|2006-08-16|2012-09-26|腾讯科技(深圳)有限公司|一种非物理模型模拟次表面散射效果的方法及装置| US8237711B2|2007-11-19|2012-08-07|Caustic Graphics, Inc.|Tracing of shader-generated ray groups using coupled intersection testing|US20100064291A1|2008-09-05|2010-03-11|Nvidia Corporation|System and Method for Reducing Execution Divergence in Parallel Processing Architectures| CN101826215B|2010-04-19|2012-05-09|浙江大学|实时二级光线跟踪的并行渲染方法| CN102074039B|2010-09-29|2012-12-19|深圳市蓝韵网络有限公司|一种体绘制裁剪面绘制方法| KR101845231B1|2011-06-14|2018-04-04|삼성전자주식회사|영상 처리 장치 및 방법| US20130033507A1|2011-08-04|2013-02-07|Nvidia Corporation|System, method, and computer program product for constructing an acceleration structure| CN102426710A|2011-08-22|2012-04-25|浙江大学|图形处理器上的表面积启发式构建kd树并行方法| US9595074B2|2011-09-16|2017-03-14|Imagination Technologies Limited|Multistage collector for outputs in multiprocessor systems| CN102855655A|2012-08-03|2013-01-02|吉林禹硕动漫游戏科技股份有限公司|Gpu并行光线追踪渲染方法| KR102080851B1|2012-09-17|2020-02-24|삼성전자주식회사|레이 추적의 스케쥴링을 위한 장치 및 방법| CN103279974A|2013-05-15|2013-09-04|中国科学院软件研究所|一种高精度高分辨率卫星成像模拟引擎及实现方法| KR20160076803A|2014-12-23|2016-07-01|삼성전자주식회사|영상 처리 장치 및 방법| US10262456B2|2015-12-19|2019-04-16|Intel Corporation|Method and apparatus for extracting and using path shading coherence in a ray tracing architecture| KR101826123B1|2017-07-14|2018-02-07|한국과학기술정보연구원|비정렬 격자 볼륨 렌더링 방법 및 장치|
法律状态:
2012-03-22| A621| Written request for application examination|Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20120320 | 2013-06-18| A977| Report on retrieval|Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20130618 | 2013-06-26| A131| Notification of reasons for refusal|Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20130625 | 2013-08-09| RD03| Notification of appointment of power of attorney|Free format text: JAPANESE INTERMEDIATE CODE: A7423 Effective date: 20130808 | 2013-09-25| A601| Written request for extension of time|Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20130924 | 2013-10-02| A602| Written permission of extension of time|Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20131001 | 2013-12-26| A521| Written amendment|Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20131225 | 2014-01-15| TRDD| Decision of grant or rejection written| 2014-01-21| A01| Written decision to grant a patent or to grant a registration (utility model)|Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20140120 | 2014-02-27| A61| First payment of annual fees (during grant procedure)|Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20140219 | 2014-02-28| R150| Certificate of patent or registration of utility model|Ref document number: 5485257 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 | 2015-04-09| S111| Request for change of ownership or part of ownership|Free format text: JAPANESE INTERMEDIATE CODE: R313113 | 2015-04-17| R350| Written notification of registration of transfer|Free format text: JAPANESE INTERMEDIATE CODE: R350 | 2017-02-28| R250| Receipt of annual fees|Free format text: JAPANESE INTERMEDIATE CODE: R250 | 2018-02-27| R250| Receipt of annual fees|Free format text: JAPANESE INTERMEDIATE CODE: R250 | 2019-02-26| R250| Receipt of annual fees|Free format text: JAPANESE INTERMEDIATE CODE: R250 | 2020-02-20| R250| Receipt of annual fees|Free format text: JAPANESE INTERMEDIATE CODE: R250 | 2021-02-24| R250| Receipt of annual fees|Free format text: JAPANESE INTERMEDIATE CODE: R250 |
优先权:
[返回顶部]
申请号 | 申请日 | 专利标题 相关专利
Sulfonates, polymers, resist compositions and patterning process
Washing machine
Washing machine
Device for fixture finishing and tension adjusting of membrane
Structure for Equipping Band in a Plane Cathode Ray Tube
Process for preparation of 7 alpha-carboxyl 9, 11-epoxy steroids and intermediates useful therein an
国家/地区
|