JP5740704B2 - Parallelized cross-test and shading architecture for ray-trace rendering - Google Patents

Parallelized cross-test and shading architecture for ray-trace rendering Download PDF

Info

Publication number
JP5740704B2
JP5740704B2 JP2014029356A JP2014029356A JP5740704B2 JP 5740704 B2 JP5740704 B2 JP 5740704B2 JP 2014029356 A JP2014029356 A JP 2014029356A JP 2014029356 A JP2014029356 A JP 2014029356A JP 5740704 B2 JP5740704 B2 JP 5740704B2
Authority
JP
Japan
Prior art keywords
ray
rays
test
data
collection
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2014029356A
Other languages
Japanese (ja)
Other versions
JP2014089773A (en
Inventor
ピーターソン、ルーク、ティルマン
マコーム、ジェームス、アレキサンダー
サルスバリー、ライアン、アール.
パーセル、スティーブン
Original Assignee
イマジネイション テクノロジーズ リミテッド
イマジネイション テクノロジーズ リミテッド
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by イマジネイション テクノロジーズ リミテッド, イマジネイション テクノロジーズ リミテッド filed Critical イマジネイション テクノロジーズ リミテッド
Publication of JP2014089773A publication Critical patent/JP2014089773A/en
Application granted granted Critical
Publication of JP5740704B2 publication Critical patent/JP5740704B2/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/06Ray-tracing

Description

(関連出願の相互参照)
本願は、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号による優先権を主張し、これらのすべては全体としてこの参照により、すべての目的のため、本明細書に組み込まれるものである。
(Cross-reference of related applications)
The present application is based on the priority of US Patent Application No. 12,408,478 filed on March 20, 2009, and the name of the invention filed on March 21, 2008, “Coupling Ray Storage and Computer”. "For Memory-Efficient Ray Intersection Test Scaling", US Provisional Application No. 61 / 038,731, and the title of the invention filed on September 10, 2008 is "Architectures for Parallelized Interception Intersection Test" Claiming priority according to US Provisional Application No. 61 / 095,890, “Shading for Ray-Tracing Rendering” This reference is hereby incorporated by reference for all purposes.

本発明は、3次元シーン(scenes)からの2次元表現のレンダリングに関し、より詳細には、シーンのフォトリアリスティック(photo−realistic)な2次元表現の高速化レンダリングのためのレイトレーシング(ray tracing)の使用に関する。   The present invention relates to rendering two-dimensional representations from three-dimensional scenes, and more particularly, ray tracing for accelerated rendering of photo-realistic two-dimensional representations of scenes. ) Regarding the use of.

レイトレーシングによるフォトリアリスティックな画像のレンダリングはコンピュータ・グラフィックス・アートにおいて周知である。レイトレーシングは、シーンの要素と相互に作用する光の物理的な挙動をモデル化することができるので、写実的な影および照明効果を含むフォトリアリスティックな画像を生成することが知られている。しかし、レイトレーシングは計算集約的であることでも知られ、現在のところ、アート・グラフィックス・ワークステーションの状況であってもレイトレーシングを使用して複雑なシーンをレンダリングするためかなりの時間を要する。   The rendering of photorealistic images by ray tracing is well known in computer graphics art. Raytracing is known to produce photorealistic images, including realistic shadows and lighting effects, because it can model the physical behavior of light interacting with scene elements. . However, ray tracing is also known to be computationally intensive and currently takes considerable time to render complex scenes using ray tracing, even in the context of art graphics workstations. .

レイトレーシングは、通常、カメラから始まり、シーン物体との多数の潜在的な相互作用を介して、光源で終端するか、または、光源と交差することなくシーンから出るまで光線を追跡することにより、シーンの中の構造体の表面を記述する三角形のような幾何学的プリミティブ(geometric primitive)で構成されたシーン記述を取得することと、どのようにして光がシーンの中のプリミティブと相互に作用するかをモデル化することとを含む。   Raytracing usually starts with a camera and, through a number of potential interactions with the scene object, either terminates at the light source, or tracks the rays until they exit the scene without intersecting the light source, Obtaining a scene description composed of geometric primitives like triangles that describe the surface of the structure in the scene, and how light interacts with the primitives in the scene Modeling what to do.

例えば、シーンは両側に建物がある街路上の車を含むことができる。このようなシーンの中の車は、連続的な表面を近似する多数の三角形(例えば、100万の三角形)によって定義されることができる。シーンを観察するカメラ位置が定義される。カメラから放たれたレイ(光線)は、多くの場合に1次レイと呼ばれ、例えば、反射を可能にするため一方の物体から別の物体へ放たれたレイは、多くの場合に2次レイと呼ばれる。選択された解像度(例えば、SVGAディスプレイの場合に1024×768)をもつ画像平面がカメラとシーンとの間の選択された位置に配置される。   For example, a scene can include a car on a street with buildings on both sides. A car in such a scene can be defined by a large number of triangles (eg, 1 million triangles) that approximate a continuous surface. A camera position for observing the scene is defined. Rays emitted from the camera are often referred to as primary rays; for example, rays emitted from one object to another to allow reflection are often secondary. Called Ray. An image plane with a selected resolution (eg, 1024 × 768 for SVGA displays) is placed at a selected position between the camera and the scene.

最も簡単なレイ・トレーシング・アルゴリズムは、カメラから画像の各画素を介してシーンの中へ1若しくはそれ以上のレイを放つことを含む。各レイは、その後に、シーンを構成する各プリミティブに対してテストされてレイが交差するプリミティブの特定が行われ、次に、プリミティブがレイに及ぼす影響、例えば、レイを反射および/または屈折させるかどうかが決定される。このような反射および/または屈折は、レイを異なる方向へ伝播させ、および/または、レイを異なる経路をとることができる複数の2次レイに分割させる。これらの2次レイのすべては、その後に、シーンプリミティブに対しテストされて交差するプリミティブが決定され、この過程は、2次(そして、3次、以下同様に続く)レイが、例えば、シーンを離れることによって、または、光源に達することによって終端するまで再帰的に続く。これらのレイ/プリミティブ交差のすべてが決定されている間に、交差をマップするツリーが作成される。レイが終端した後、光源の寄与度がツリーを介してトレースバックされ、シーンの画素に対する光源の影響が決定される。容易に理解されるように、何百万もの三角形との交差に関して、(例えば)1024×768のレイをテストするという複雑な計算は計算集約的であり、しかも、このようなレイの数は、交差するレイとの物質の相互作用の結果として生じる付加的なレイの全部を算入していない。)   The simplest ray tracing algorithm involves firing one or more rays from the camera through each pixel of the image into the scene. Each ray is then tested against each primitive that makes up the scene to identify the primitive that the ray intersects, and then the effect that the primitive has on the ray, eg, reflecting and / or refracting the ray Whether it is determined. Such reflection and / or refraction causes the ray to propagate in different directions and / or split the ray into multiple secondary rays that can take different paths. All of these secondary rays are then tested against scene primitives to determine the intersecting primitives, and this process is performed by secondary (and tertiary, and so on) rays, for example, Continue recursively until terminated by leaving or reaching the light source. While all of these ray / primitive intersections are determined, a tree is created that maps the intersections. After the ray ends, the contribution of the light source is traced back through the tree to determine the effect of the light source on the scene pixels. As will be readily appreciated, the complex computation of testing (for example) 1024 x 768 rays for intersections with millions of triangles is computationally intensive, and the number of such rays is It does not include all of the additional rays that result from material interactions with intersecting rays. )

レイトレーシングによるシーンのレンダリングは、生成されている画像の各画素のため蓄積されたカラー情報が画像の他の画素とは独立に蓄積可能であるので、「厄介な並列問題」と称されている。よって、最終画像を出力する前に、何らかのフィルタリング、補間または他の画素処理が存在することがあるが、画像の画素のカラー情報は並列に決定可能である。従って、レンダリングされるべき画素を処理資源の間で分割し、これらの画素のレンダリングを並列に実行することにより所定の処理資源の組に関する画像のレイトレーシングのタスクをセグメント化することは容易である。   Raytracing scene rendering is referred to as a “thorny parallel problem” because the color information stored for each pixel of the image being generated can be stored independently of the other pixels in the image. . Thus, there may be some filtering, interpolation or other pixel processing before outputting the final image, but the color information of the pixels of the image can be determined in parallel. It is therefore easy to segment the ray tracing task of an image for a given set of processing resources by dividing the pixels to be rendered among the processing resources and performing the rendering of these pixels in parallel. .

ある場合には、処理資源はマルチスレッド化をサポートするコンピューティングプラットフォームでもよいが、他の場合は、LANを介してリンクされたコンピュータのクラスタ、または、コンピュータコアのクラスタを伴うことができる。これらのタイプのシステムに対し、所定の処理資源、例えば、スレッドは、交差テストおよびシェーディングの終了によって割り当てられたレイまたはレイのグループを処理するためインスタンス化可能である。換言すると、画素は互いに独立にレンダリング可能であるという特性を使用して、異なる画素に寄与することが知られているレイは、交差テストされるべきスレッドまたは処理資源の間で分割可能であり、その後に、このようなシェーディング計算の結果を処理または表示のため画面バッファへ書き込み、これらの交差をシェード可能である。   In some cases, the processing resource may be a computing platform that supports multithreading, while in other cases it may involve a cluster of computers linked via a LAN, or a cluster of computer cores. For these types of systems, a given processing resource, such as a thread, can be instantiated to process a ray or group of rays allocated by the intersection test and the end of shading. In other words, using the property that pixels can be rendered independently of each other, rays known to contribute to different pixels can be divided between threads or processing resources to be cross-tested, Thereafter, the results of such shading calculations can be written to the screen buffer for processing or display, and these intersections can be shaded.

この種の問題を対象にするいくつかのアルゴリズム的アプローチが提案されている。1つのこのようなアプローチは、Matt Pharr,et al.により「Rendering Complex Scenes with Memory−Coherent Ray Tracing」Proceedings of SigGraph(1997)(本明細書では、「文献Pharr」と称する)に開示されている。文献Pharrは、各幾何学的ボクセルがシーンプリミティブ(例えば、三角形)を内包する立方体であるとして、レイトレーシングされるべきシーンを幾何学的ボクセルに分割することを開示する。文献Pharrは、スケジューリンググリッドの各要素が幾何学的ボクセルのいくらかの部分に重なることが可能であるスケジューリングボクセルであるとして(すなわち、スケジューリングボクセルが、幾何学的ボクセルの立方体とは異なるサイズにされることが可能であるシーンの中の体積をもつ立方体でもあるとして)、スケジューリンググリッドを重畳することをさらに開示する。各スケジューリングボクセルは、現在のところ内側にあるレイ、すなわち、そのスケジューリングボクセルの内部に内包されたレイを含む関連付けられたレイキューと、どちらの幾何学的ボクセルがそのスケジューリングボクセルに重なるかに関する情報とを有する。   Several algorithmic approaches that address this type of problem have been proposed. One such approach is described by Matt Pharr, et al. Is disclosed in “Rendering Complex Scenes with Memory-Coherent Ray Tracing”, Proceedings of SigGraph (1997) (referred to herein as “Document Pharr”). The document Pharr discloses dividing the scene to be ray-traced into geometric voxels, assuming that each geometric voxel is a cube containing scene primitives (eg, triangles). The document Pharr is a scheduling voxel where each element of the scheduling grid can overlap some part of the geometric voxel (ie, the scheduling voxel is sized differently from the geometric voxel cube) It is further disclosed to superimpose the scheduling grid (as is also a cube with a volume in the scene that is possible). Each scheduling voxel has a ray that is currently inside, that is, the associated ray queue that contains the rays contained within that scheduling voxel, and information about which geometric voxel overlaps that scheduling voxel. Have.

文献Pharrは、スケジューリングボクセルが処理されるとき、関連付けられたキューの中のレイが、スケジューリングボクセルによって内包された幾何学的ボクセルの中のプリミティブとの交差に関してテストされることを開示している。レイとプリミティブとの間の交差が見出された場合、シェーディング(陰影付け)計算が実行され、その結果レイキューに追加されるレイが増加することが可能である。そのスケジューリングボクセルの中に交差が見出されなかった場合、レイは次の空でないスケジューリングボクセルへ進み、そのスケジューリングボクセルのレイキューの中に収容される。   The document Pharr discloses that when scheduling voxels are processed, the rays in the associated queue are tested for intersection with primitives in the geometric voxels contained by the scheduling voxel. If an intersection between a ray and a primitive is found, a shading calculation is performed, which can increase the number of rays added to the ray queue. If no intersection is found in that scheduling voxel, the ray proceeds to the next non-empty scheduling voxel and is accommodated in the ray queue of that scheduling voxel.

文献Pharrは、このアプローチによる利点は、各スケジューリングボクセルの中のシーンジオメトリがキャッシュ内に収まることができる場合、キャッシュがシーンジオメトリとのレイの交差テスト中にトラッシングをあまり起こさないように、シーンジオメトリを通常の汎用プロセッサに設けられたキャッシュ内に収めるのに役立つことであることを開示している。   The document Pharr explains that the advantage of this approach is that if the scene geometry in each scheduling voxel can fit in the cache, the cache will not cause much trashing during ray intersection testing with the scene geometry. It is disclosed that it is useful to fit the geometry in a cache provided in a typical general purpose processor.

さらに、文献Pharrは、テストのためのレイをスケジューリングボクセルの中にキュー入れすることによって、プリミティブがジオメトリキャッシュにフェッチされたとき、それ以上の作業がプリミティブに関して実行できることを開示している。複数のスケジューリングボクセルが次に処理できる状況では、スケジューリングアルゴリズムは、ジオメトリキャッシュにロードされるべきジオメトリの量を最小限に抑えることになるスケジューリングボクセルを選定可能である。   Further, the document Pharr discloses that when a primitive is fetched into a geometry cache, further work can be performed on the primitive by queuing a ray for testing into a scheduling voxel. In situations where multiple scheduling voxels can be processed next, the scheduling algorithm can select a scheduling voxel that will minimize the amount of geometry to be loaded into the geometry cache.

文献Pharrは、特定のシーンが一様でない複雑性を有する場合、すなわち、シーンのいくつかの部分でプリミティブの密度が高い場合、提案された規則的なスケジューリンググリッドが十分に機能しないことがあることを認めている。文献Pharrは、オクツリー(octree)のような適応的データ構造が規則的なスケジューリンググリッドの代わりに使用できると仮定している。オクツリーは、階層の各レベルで、オクツリー分割が8つのより小さいサブボリュームを生じ、その8つのより小さいボリュームが8つのさらに小さいサブボリュームに分割可能であり、以下同様に続くような、シーンの各主軸(すなわち、x、y、およびz軸)に沿った分割を引き起こすことにより、3次元シーンの中に空間分割を導入する。各サブボリュームにおいて、そのサブボリュームがさらに分割されることになるかどうかを決定する分割/非分割フラグがセットされる。このようなサブボリュームは、そのサブボリュームの中のプリミティブの数がテストのため十分に少なくなるまで、分割のため指示される。このように、オクツリーに関して、分割の量は、シーンの特定の部分に存在するプリミティブの数に応じて制御可能である。したがって、オクツリーはレンダリングされるべきボリュームの種々の程度の分割を可能にする。   The document Pharr suggests that the proposed regular scheduling grid may not work well if a particular scene has a non-uniform complexity, that is, if the density of primitives is high in some parts of the scene. Admits. The document Pharr assumes that an adaptive data structure such as an octree can be used instead of a regular scheduling grid. An octree is divided into 8 sub-volumes at each level of the hierarchy, and the 8 smaller volumes can be divided into 8 smaller sub-volumes, and so on. Spatial partitioning is introduced into the three-dimensional scene by causing partitioning along the principal axes (ie, x, y, and z axes). In each subvolume, a split / non-split flag is set that determines whether the subvolume will be further split. Such subvolumes are indicated for splitting until the number of primitives in the subvolume is sufficiently low for testing. Thus, for octrees, the amount of splitting can be controlled depending on the number of primitives present in a particular part of the scene. Thus, the octree allows for varying degrees of partitioning of the volume to be rendered.

類似したアプローチがPfisterの米国特許第6,556,200号(「文献Pfister」)に開示されている。文献Pfisterもまた複数のスケジューリングブロックへのシーンの区分化を開示している。レイキューが各ブロックに設けられ、各キューの中のレイが依存グラフを使用して時空間的に順序付けられる。レイは依存グラフに定義された順序に従って各スケジューリングブロックの中で追跡される。文献Pfisterは、文献Pharr論文を参照し、文献Pfisterが2若しくはそれ以上(例えば、三角形だけでない)のシングルタイプのグラフィカルプリミティブをレンダリングすることと、スケジューリングブロックのためのより複雑なスケジューリングアルゴリズムを工夫することとを要望することを補足している。文献Pfisterはメモリ階層における複数のキャッシュレベルでシーンジオメトリの中間サブポーションをさらに検討している。   A similar approach is disclosed in US Pat. No. 6,556,200 to Pfister (“Literature Pfister”). The document Pfister also discloses partitioning the scene into a plurality of scheduling blocks. Ray queues are provided for each block, and the rays in each queue are spatiotemporally ordered using a dependency graph. Rays are tracked in each scheduling block according to the order defined in the dependency graph. The literature Pfister refers to the literature Pharr paper, and the literature Pfister devises two or more (for example, not only triangles) single-type graphical primitives and devise more complex scheduling algorithms for scheduling blocks It supplements that it requests. The document Pfister further considers intermediate subportions of scene geometry at multiple cache levels in the memory hierarchy.

さらに別のアプローチは、パケットトレーシングと呼ばれ、このようなパケットトレーシングの一般的な参考文献は、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)である。この参考文献では、パケットトレーシングは、グリッドを通る類似した始点および方向を有するレイのパケットの追跡を含む。レイは、殆どのレイが共通のグリッドロケーションを通過するように、実質的に共通のグリッドロケーションから発し、実質的に類似した方向に進行する。このように、パケットトレーシングは、類似した始点から、類似した方向に進行するレイを特定することが必要である。このようなパケットトレーシングに関する別の変形は、錐台レイがどのボクセルが交差するかを決定し、所定のレイパケットのための計算の回数の削減に役立つ(すなわち、すべてのレイが交差に関してテストされるのではなく、パケットの外側エッジにあるレイだけがテストされる)ように、レイのパケットのエッジの境界を定めるために錐台レイを使用することである。パケットトレーシングは、類似した場所から発し、類似した方向に進むレイの特定を依然として必要とする。このようなレイは、レイがレイトレーシング中に反射され、屈折させられ、および/または、発生するとき、特定することが益々難しくなることが可能である。   Yet another approach is referred to as packet tracing, and a general reference for such packet tracing is Ingo Wald, Phillips Slullek, Carsten Benthin, et al. "Interactive Rendering through Coherent Ray Tracing", Proceedings of EUROGRAPHICS 2001, pp 153-164, 20 (3), Manchester, United Kingdom (Sep. 2001). In this reference, packet tracing involves tracking packets of rays that have similar starting points and directions through the grid. Rays originate from a substantially common grid location and travel in a substantially similar direction so that most rays pass through the common grid location. Thus, packet tracing needs to identify rays that travel in similar directions from similar starting points. Another variation on such packet tracing determines which voxels a frustum ray intersects and helps reduce the number of computations for a given ray packet (i.e., all rays are tested for intersection). Use frustum rays to demarcate the edges of the packets of the rays so that only those rays at the outer edge of the packet are tested). Packet tracing still requires identifying rays that originate from similar locations and travel in similar directions. Such rays can become increasingly difficult to identify when the rays are reflected, refracted, and / or generated during ray tracing.

さらに他のアプローチがレイトレーシングを加速する分野に存在し、1つのアプローチは、レイ状態のより能動的な管理によって改良されたキャッシュ利用を試行する。Navratil et al.による「Dynamic Ray Scheduling for Improved System Performance」,2007 IEEE Symposium on Interactive Ray Tracing,(Sep.2007)(文献Navratil)は、文献Pharrを参照し、PharrのアルゴリズムがPharr文献をプロセッサ・キャッシュ・トラフィックへの主メモリのため不適切にする「レイ状態爆発」の弱点を有することを記載している。これに対処するため、文献Navratilは、レイトレーシング中に、レイ状態およびジオメトリ状態を「能動的に管理」するように設計された制限を設けることにより、「レイ状態爆発」を回避することを提案する。1つの提案はレイの生成を別々にトレースすることであり、従って、文献Navratilは、最初に1次レイをトレースし、次に、1次レイを終了した後、2次レイをトレースし、以下同様に続くことを開示している。   Yet another approach exists in the field of accelerating ray tracing, and one approach attempts improved cache utilization through more active management of ray states. Navrati et al. "Dynamic Ray Scheduling for Improved System Performance", 2007 by IEEE Symposium on Interactive Ray Tracing, (Sep. It describes that it has a weakness of “ray explosion” that makes it inappropriate for main memory. To address this, the document Navratil proposes to avoid "ray state explosions" by placing restrictions designed to "actively manage" ray and geometry states during ray tracing. To do. One proposal is to trace the generation of rays separately, so the literature Navratil traces the primary ray first, then finishes the primary ray, then traces the secondary ray, and so on. Similarly, it is disclosed to continue.

上述の背景は、レイトレーシングに基づくレンダリングを加速化する分野において普及し続けている思想およびアプローチの多様性を示している。同様に、これらの参考文献は、さらなる進歩がレイトレーシングの分野に残っていることを示している。しかし、これらの参考文献および手法のうちのいずれかの説明は、いずれかの参考文献または参考文献中の主題が本願に開示されたいずれの主題に対しても先行技術であるという承認または示唆ではない。それどころか、これらの参考文献は、レイトレーシングを用いるレンダリングへのアプローチにおける相違点を示すのに役立つように記載されている。さらに、これらの参考文献のうちのいずれかの取り扱いは、明瞭さのため必然的に省略され、網羅的ではない。   The above background shows the diversity of ideas and approaches that continue to prevail in the field of accelerating rendering based on ray tracing. Similarly, these references indicate that further progress remains in the field of ray tracing. However, the description of any of these references and techniques is not an endorsement or suggestion that any reference or subject matter in the reference is prior art to any subject matter disclosed herein. Absent. On the contrary, these references are written to help show the differences in the approach to rendering using ray tracing. Furthermore, the handling of any of these references is necessarily omitted for clarity and is not exhaustive.

ある観点では、方法は、3次元シーンの2次元表現をレイトレーシングするのに複数のコンピューティング資源を使用する。この方法は、3次元シーンの中を進むレイで1若しくはそれ以上のプリミティブおよびジオメトリ・アクセラレイション要素を有する幾何学的形状を交差テストするためコンピューティング資源の第1のサブセットを使用する工程を含む。第1のサブセットのうちの各コンピューティング資源は、シーンの中を進むレイのそれぞれのサブセットを格納するそれぞれのローカライズされたメモリ資源と通信するため動作する。この方法は、コンピューティング資源の第1のサブセットからコンピューティング資源の第2のサブセットへレイとプリミティブとの間の交差の指標を通信する工程と、レイとプリミティブとの間の特定された交差と関連付けられたシェーディングルーチンを実行するコンピューティング資源の第2のサブセットを使用する工程とを含み、シェーディングルーチンからの出力は交差テストされるべき新しいレイを有する。サブセットの中のメンバーシップは、シーンまたは一連のシーンのいずれかのレンダリング中に、時間依存性であるか、または、システム構成時若しくは再構成ポイント中に統計的に決定される。   In one aspect, the method uses multiple computing resources to ray trace a 2D representation of a 3D scene. The method includes using a first subset of computing resources to cross test a geometric shape having one or more primitives and geometry acceleration elements in a ray traveling through a three-dimensional scene. . Each computing resource in the first subset operates to communicate with a respective localized memory resource that stores a respective subset of rays traveling through the scene. The method includes communicating an indication of an intersection between a ray and a primitive from a first subset of computing resources to a second subset of computing resources; and an identified intersection between the ray and the primitive; Using a second subset of computing resources to execute the associated shading routine, and the output from the shading routine has a new ray to be cross-tested. Membership in the subset is time-dependent during rendering of either a scene or a series of scenes, or is determined statistically during system configuration or during a reconstruction point.

この方法は、新しいレイを定義するデータをローカライズされたメモリ資源の間に分散させる工程と、レイ識別子のグルーピングを形状データと共に第1のサブセットのうちのコンピューティング資源へ伝える工程とをさらに有する。各レイ識別子は、そのレイに関するレイ定義データ以外のデータを有する。レイ識別子の伝達は、形状データによって指定された形状との特定されたレイの交差テストを作動させる。テストは、各コンピューティング資源によって、各コンピューティング資源のローカライズされたメモリに格納されている特定されたレイを定義するデータを取り出す工程と、取り出されたレイ定義データに基づいて交差に関して示された形状をテストする工程と、検出された交差の指標を通信のため出力する工程とを有する。   The method further comprises the steps of distributing data defining the new ray among the localized memory resources and communicating the grouping of ray identifiers along with the shape data to the computing resources of the first subset. Each ray identifier has data other than ray definition data related to the ray. The transmission of the ray identifier activates the specified ray intersection test with the shape specified by the shape data. The tests were shown for each computing resource with respect to intersecting based on the retrieved ray definition data and retrieving data defining the identified rays stored in each computing resource's localized memory Testing the shape and outputting the detected intersection indicator for communication.

別の観点は、レイトレーシングを使用して、プリミティブで構成された3次元シーンの2次元表現をレンダリングするシステムを有する。このシステムは、それぞれのキャッシュメモリへアクセスできる複数の交差テスト資源を有し、それぞれのキャッシュメモリは、レイ定義データのマスターコピーのサブセットを格納し、各レイのレイ定義データは、そのレイのテストが終了するまで、キャッシュメモリに維持されている   Another aspect includes a system that uses ray tracing to render a 2D representation of a 3D scene composed of primitives. The system has multiple cross-test resources that can access each cache memory, each cache memory storing a subset of the master definition of ray definition data, and each ray definition data is a test of that ray. Is kept in cache memory until

このシステムは、識別子を各レイに割り当て、それぞれのテスト資源のキャッシュメモリにおける各レイの定義データにアクセスできるそれぞれのテスト資源による各レイのテストを制御するため動作する制御ロジックをさらに有する。テスト制御は、レイ識別子をテストされるべきレイのデータを格納するそれぞれのテストセルに提供することによって達成される。このシステムは、交差テストを終了したレイと、交差したそれぞれのプリミティブとを特定する出力キューを有する。制御ロジックは、シェーディング計算から生じる新しいレイを割り当て、キャッシュメモリの中で交差テストを終了したレイを置き換える。   The system further includes control logic that operates to control testing of each ray by a respective test resource that assigns an identifier to each ray and has access to the definition data of each ray in the cache memory of the respective test resource. Test control is achieved by providing a ray identifier to each test cell that stores the data of the ray to be tested. The system has an output queue that identifies the ray that has completed the intersection test and each intersected primitive. The control logic allocates a new ray resulting from the shading calculation and replaces the ray that has completed the cross test in the cache memory.

ある観点では、制御ロジックが終了したレイの識別子を新しいレイの識別子として再使用することにより置き換えを行うこと、レイ識別子がそのレイを定義するそれぞれのデータを格納するメモリロケーションに関係すること、および、新しいレイを定義するデータが終了したレイのメモリロケーションに格納されているデータを置き換えることとのうちの1若しくはそれ以上が行われることが可能である。   In one aspect, the replacement is done by reusing the ray identifier for which the control logic has ended as a new ray identifier, that the ray identifier relates to a memory location that stores the respective data defining that ray, and One or more of replacing the data stored in the memory location of the finished ray with the data defining the new ray can be performed.

さらに別の観点は、レイトレーシングを使用して、プリミティブで構成された3次元シーンの2次元表現をレンダリングするシステムを有する。このシステムは、3次元シーンを構成するプリミティブを格納するメモリと、複数の交差テスト資源とを有する。各交差テスト資源は、シーンの中を進む少なくとも1つのレイを少なくとも1つのプリミティブとテストし、検出された交差の指標を出力するため動作する。システムは、各シェーダ資源が検出されたレイ/プリミティブ交差の指標からのプリミティブと関連付けられたシェーディングルーチンを実行するため動作する複数のシェーダ資源をさらに含む。このシステムは、検出された交差の指標をシェーダ資源へ出力する第1の通信リンクと、シェーディングルーチンの実行によって生じる新しいレイを交差テスト資源へ送信する第2の通信リンクとをさらに有し、新しいレイは交差テスト資源へ送信されることが可能であり、新しいレイが送信された相対的順序とは異なる順序で交差テストを終了する。両方の通信リンクは、FIFOキューのようなキューとして達成可能である。   Yet another aspect includes a system that uses ray tracing to render a 2D representation of a 3D scene composed of primitives. This system has a memory for storing primitives constituting a three-dimensional scene, and a plurality of intersection test resources. Each intersection test resource operates to test at least one ray traveling through the scene with at least one primitive and output an indication of the detected intersection. The system further includes a plurality of shader resources that operate to execute a shading routine associated with the primitive from the indication of the ray / primitive intersection where each shader resource was detected. The system further includes a first communication link that outputs the detected intersection indicator to the shader resource, and a second communication link that transmits a new ray resulting from the execution of the shading routine to the intersection test resource. Rays can be sent to the cross test resource and the cross tests are terminated in a different order than the relative order in which the new rays were sent. Both communication links can be achieved as queues such as FIFO queues.

さらに別の観点は、主メモリおよび計算資源間の分散メモリを有し、主メモリが分散メモリよりレイテンシが高い階層的なメモリ構造に連結された複数の計算資源を有するシステムにおいて、プリミティブで構成されたシーンをレイトレーシングする方法を含む。この方法は、レイのサブセットが分散メモリのうちの異なるメモリに格納されるように、シーンの中で交差テストされるべきレイを定義するデータを分散メモリの間に分散させることと、レイのグループを交差テストすることを決定することとを有し、グループのメンバが、1若しくはそれ以上の幾何学的形状と共に、複数の分散メモリに格納される。この方法は、主メモリから1若しくはそれ以上の幾何学的形状を定義するデータをフェッチすることと、幾何学的形状およびグループのレイの識別子を、グループの中のレイのデータを格納する各分散メモリと関連付けられた少なくとも1つの計算資源に提供することとを有する。この方法は、グループの各レイのデータを格納する分散メモリのうちの少なくとも1つと関連付けられた計算資源を用いてこのレイの交差をテストすることと、計算資源から生じる交差テスト結果を収集することとをさらに有する。   Yet another aspect is that the system is composed of primitives in a system having a distributed memory between the main memory and the computing resource, the main memory having a plurality of computing resources connected in a hierarchical memory structure having a higher latency than the distributed memory. Including ray tracing methods. This method distributes the data defining the rays to be cross-tested in a scene among the distributed memories, such that the subset of rays are stored in different ones of the distributed memories, And the group members are stored in a plurality of distributed memories, along with one or more geometric shapes. The method fetches data defining one or more geometric shapes from main memory, and identifies the geometric shape and group ray identifiers for each distributed data storing the ray data in the group. Providing to at least one computing resource associated with the memory. The method tests the intersection of this ray with a computing resource associated with at least one of the distributed memories storing data for each ray of the group and collects the intersection test results resulting from the computing resource. And further.

さらに別の観点は、3次元シーンを構成するプリミティブとレイを交差テストするシステムを含む。このシステムは、各交差テスト資源が幾何学的形状との交差に関してそれぞれのレイをテストするため動作する複数の交差テスト資源を有する。1つずつのそれぞれのレイは、各交差テスト資源に提供された参照情報によって指定され、テスト資源は、レイと幾何学的形状との間の交差の指標を第1の出力または第2の出力のいずれかへ出力するため動作する。   Yet another aspect includes a system that cross-tests primitives and rays that make up a three-dimensional scene. The system has a plurality of intersection test resources that operate to test each ray for intersection with a geometric shape. Each one of the rays is specified by reference information provided for each intersection test resource, which in turn provides an indication of the intersection between the ray and the geometry at the first output or the second output. It operates to output to either of these.

一方の出力はプリミティブ交差用であり、もう一方の出力はジオメトリ・アクセラレイション要素交差用である。例えば、第1の出力は、複数のシェーディング資源に入力を提供可能であり、レイとプリミティブとの間の交差の指標用であることが可能であり、第2の出力は、レイ・コレクション・マネージャに入力を提供し、レイとジオメトリ・アクセラレイション要素との間の交差の指標を受信する。   One output is for primitive intersections and the other output is for geometry acceleration element intersections. For example, a first output can provide input to a plurality of shading resources, can be for an indication of an intersection between a ray and a primitive, and a second output can be a ray collection manager. And receive an indication of the intersection between the ray and the geometry acceleration element.

さらに別の観点は、3次元表現を構成するプリミティブ、および、プリミティブの選択の境界をそれぞれに定めるジオメトリ・アクセラレイション要素を主メモリ資源に格納する工程と、シーンの中で交差テストされるべきレイを定義する工程と、レイのそれぞれの識別子を定義する工程とを有するレイトレーシング方法を含む。この方法は、複数の別々にプログラム可能な処理資源を有するシステムにおいて、レイ始点および方向データの一部分を、処理資源の1つずつとそれぞれ関連付けられているローカライズされたメモリ資源に格納する工程を有する。この方法は、テストのためスケジュールに入れられたレイの識別子および幾何学的形状の指標を処理資源へ提供する工程により、交差テストに関するレイのスケジューリングを実施する工程をさらに有する。各処理資源は、ローカライズされたメモリ資源がいずれかの特定されたレイのためのレイ定義データを格納するかどうかを決定し、そうであるならば、指示された幾何学的形状との交差に関してこれらのレイをテストする。   Yet another aspect is the step of storing in a main memory resource the primitives that make up the 3D representation and the geometry acceleration elements that delimit the selection of the primitives, and the layers to be cross-tested in the scene. And a ray tracing method having a step of defining a respective identifier of the ray. The method includes storing, in a system having a plurality of separately programmable processing resources, a portion of ray start and direction data in localized memory resources each associated with one of the processing resources. . The method further comprises performing ray scheduling for the cross test by providing to the processing resource an identifier of the ray scheduled for testing and an indication of the geometric shape. Each processing resource determines whether the localized memory resource stores ray definition data for any specified ray, and if so, with respect to intersection with the indicated geometry Test these rays.

さらに別の観点は、3次元シーンの2次元表現をレンダリングするのに用いられる幾何学的形状とレイとの交差テストを達成するために複数の処理資源を制御するシステムのための機械読み取り可能な命令を有する、コンピュータ読み取り可能な媒体/メディアを含む。命令は、プリミティブの第1の選択の境界を定める第1のジオメトリ・アクセラレイション要素と交差していると決定されたレイの識別子のパケットにアクセスすることと、第1のジオメトリ・アクセラレイション要素によって境界を定められたプリミティブの一部分の境界を定める他のジオメトリ・アクセラレイション要素を決定することとを有する方法を実施するためのものである。この方法は、各パケットがレイ識別子を収容している複数のパケット、および、他のジオメトリ・アクセラレイション要素のうちの異なるジオメトリ・アクセラレイション要素のそれぞれの指標をインスタンス化する工程と、複数のパケットを各パケットの中で特定されたすべてのレイより少ない交差テストのためそれぞれに構成された複数のコンピューティング資源の1つずつへ提供する工程とをさらに有する。この方法は、複数のコンピューティング資源から検出された交差の指標を受信する工程と、スレッショルド個数の受信された指標より多くの次のジオメトリ・アクセラレイション要素を特定するまで、ジオメトリ・アクセラレイション要素に応じて、受信された指標を追跡し、次のパケットを用いるアクセスを繰り返す工程とをさらに有する。   Yet another aspect is machine-readable for a system that controls multiple processing resources to achieve a cross-test of geometry and rays used to render a two-dimensional representation of a three-dimensional scene. Computer readable media / media with instructions. The instruction accesses a packet of ray identifiers determined to intersect a first geometry acceleration element that delimits a first selection of primitives; and by the first geometry acceleration element Determining other geometry acceleration elements that bound a portion of the bounded primitive portion. The method includes instantiating a plurality of packets, each packet containing a ray identifier, and a respective indication of a different geometry acceleration element among other geometry acceleration elements, and a plurality of packets. Providing to each one of a plurality of computing resources each configured for cross-testing less than all the rays identified in each packet. The method includes receiving an indication of intersection detected from a plurality of computing resources, and determining a geometry acceleration element until a number of next geometry acceleration elements greater than the threshold number of received indications are identified. In response, the method further comprises the step of tracking the received indicator and repeating the access using the next packet.

さらに別の観点は、形状をレイと交差テストするため構成された複数のコンピューティング資源と、コンピューティング資源の1つずつと連結され、シーンの中を進む複数のレイのうちのいくつかを定義するデータを格納するそれぞれのキャッシュと、複数のコンピューティング資源の間でメッセージを送るチャネルとを有し、1つずつのコンピューティング資源がこのコンピューティング資源によって受信されたメッセージの中のデータを複数のレイ識別子を収容するものとして解釈し、このコンピューティング資源のキャッシュがこのコンピューティング資源の中に格納された複数のレイのうちのいずれかを有するかどうかを決定し、格納されたレイを関連付けられている形状とテストするため構成されている、レイトレーシング・システムを含む。   Yet another aspect is to define several of the computing resources configured to cross-test the shape with the ray and several of the rays that are connected to each of the computing resources and travel through the scene. Each of the caches storing data to be transmitted and a channel for sending messages between the plurality of computing resources, each computing resource having a plurality of data in the message received by the computing resource. To determine whether this computing resource cache has any of a plurality of rays stored in this computing resource and to associate the stored ray Ray-tracing sys configured to test with Including the arm.

さらに別の観点は、3次元シーンを構成するプリミティブとレイを交差テストするシステムを含む。このシステムは、各交差テスト資源が幾何学的形状との交差に関してそれぞれのレイをテストするため動作する複数の交差テスト資源を有する。それぞれのレイは、各交差テスト資源に提供された参照情報によって指定される。各交差テスト資源は、レイとプリミティブとの間の交差の指標を第1の出力または第2の出力のいずれかへ出力するためさらに構成されている。システムは、検出された交差のためのシェーディングコードを実行するため動作する複数のシェーディング資源と、レイへの参照情報を維持し、テストされるべきレイを指示するためレイ参照情報を複数の交差テスト資源へ提供するため動作するレイ・コレクション・マネージャをさらに有する。第1の出力は入力を複数のシェーディング資源へ提供し、レイとプリミティブとの間の交差の指標を受信し、第2の出力は、入力をレイ・コレクション・マネージャへ提供し、レイとジオメトリ・アクセラレイション要素との間の交差の指標を受信する。   Yet another aspect includes a system that cross-tests primitives and rays that make up a three-dimensional scene. The system has a plurality of intersection test resources that operate to test each ray for intersection with a geometric shape. Each ray is specified by reference information provided to each cross test resource. Each intersection test resource is further configured to output an indication of the intersection between the ray and the primitive to either the first output or the second output. The system maintains a plurality of shading resources that operate to execute the shading code for the detected intersection, and a reference to the ray, and the ray reference information to indicate the ray to be tested. It further has a ray collection manager that operates to provide resources. The first output provides input to the plurality of shading resources and receives an indication of the intersection between the ray and the primitive, and the second output provides input to the ray collection manager and the ray and geometry Receive an indication of the intersection with the acceleration element.

さらに別の観点は、特定された幾何学的形状との交差がテストされるべき複数のレイを定義するデータを格納するため構成されたローカルキャッシュに連結されたプロセッサと、プロセッサによりサービスが提供される入力キューとを含み、入力キューに受信されたデータが、指定された幾何学的形状との交差に関してテストされるべきレイの複数の識別子を含むものとしてプロセッサによって解釈可能であり、プロセッサは、プロセッサのローカルキャッシュに格納されているデータが存在する入力キューの中で特定されたレイだけに対する定義データを取り出し、このようなレイを特定された幾何学的形状と交差テストし、検出された交差の指標を出力するため構成されている、並列レイトレーシングに基づいて3次元シーンの2次元表現をレンダリングするのに用いられるコンピューティング構成を含む。   Yet another aspect is a processor coupled to a local cache configured to store data defining a plurality of rays to be tested for intersection with a specified geometric shape, and provided by the processor. And the data received in the input queue can be interpreted by the processor as including a plurality of ray identifiers to be tested for intersection with a specified geometric shape, Retrieve definition data for only the identified ray in the input queue where the data stored in the processor's local cache is present, cross test such ray with the identified geometry, and detect the detected intersection A 2D table of 3D scenes based on parallel ray tracing, configured to output an index of The includes a computing arrangement used to render.

さらに別の観点は、プリミティブの選択の境界を定めるジオメトリ・アクセラレイション要素と交差していると決定されたレイの識別子のパケットにアクセスすることと、交差したジオメトリ・アクセラレイション要素によって境界を定められたプリミティブの一部分の境界を定める他のジオメトリ・アクセラレイション要素を決定することとを有するレイトレーシング方法を実施する機械読み取り可能な命令を含む、コンピュータ読み取り可能な媒体を含む。この方法は、各パケットがレイ識別子を収容している複数のパケット、および、他のジオメトリ・アクセラレイション要素のうちの異なるジオメトリ・アクセラレイション要素のそれぞれの指標をインスタンス化する工程と、複数のパケットを各パケットの中で特定されたすべてのレイの交差テストのためそれぞれに構成された複数のコンピューティング資源の1つずつへ提供する工程とをさらに有する。この方法は、複数のコンピューティング資源から検出された交差の指標を受信する工程と、ジオメトリ・アクセラレイション要素に応じて、受信された指標を追跡する工程とをさらに有する。   Yet another aspect is bounded by accessing a packet of ray identifiers that have been determined to intersect a geometry acceleration element that delimits the selection of the primitive, and by the intersected geometry acceleration element. A computer readable medium comprising machine readable instructions for performing a ray tracing method having determining other geometry acceleration elements that delimit a portion of the primitive. The method includes instantiating a plurality of packets, each packet containing a ray identifier, and a respective indication of a different geometry acceleration element among other geometry acceleration elements, and a plurality of packets. Providing to each one of a plurality of computing resources each configured for cross-testing of all the rays identified in each packet. The method further includes receiving an indication of intersection detected from the plurality of computing resources and tracking the received indication as a function of the geometry acceleration factor.

さらに別の観点は、3次元シーンを構成するプリミティブとの交差に関してテストされるべき複数のレイを定義するレイ定義データを決定する工程を含む、レイトレーシングの方法を含む。この方法は、レイ定義データのサブセットを幾何学的形状とレイを交差テストするため構成された複数のコンピューティング資源のそれぞれのローカルメモリの間に分散させる工程と、管理モジュール内で、コンピューティング資源によって交差テストされるべき複数のレイからレイのコレクションを決定する工程とをさらに含む。コレクションは、各々がレイの定義データ以外のデータを含む複数のレイ識別子によって定義され、プリミティブの一部分の境界を定める境界形状と関連付けられている。この方法は、決定されたコレクションのためのレイ識別子をコンピューティング資源の間で伝えることにより、コンピューティング資源に決定されたコレクションのレイをテストさせる工程をさらに含み、定義データがコンピューティング資源のためのローカルメモリの中に格納されている特定されたレイを交差テストすることによって各コンピューティング資源がそれぞれに応答する。   Yet another aspect includes a method of ray tracing that includes determining ray definition data defining a plurality of rays to be tested for intersection with primitives comprising a three-dimensional scene. The method includes the steps of distributing a subset of ray definition data among respective local memories of a plurality of computing resources configured to cross-test geometric shapes and rays, and within a management module, computing resources Determining a collection of rays from a plurality of rays to be cross tested by. A collection is defined by a plurality of ray identifiers, each containing data other than ray definition data, and is associated with a boundary shape that delimits a portion of the primitive. The method further includes causing the computing resource to test the ray of the determined collection by communicating a ray identifier for the determined collection between the computing resources, wherein the definition data is for the computing resource. Each computing resource responds to it by cross-testing the identified ray stored in its local memory.

いずれの観点においても、ローカルキャッシュに格納されている複数のレイは、第2の複数のレイの互いに素なサブセットであることが可能であり、複数のレイ識別子のうちのいくつかは、ローカルキャッシュに格納されたレイを特定し、第2の複数のレイのうちのいくつかのレイはローカルキャッシュに格納されていない。   In any aspect, the plurality of rays stored in the local cache can be disjoint subsets of the second plurality of rays, and some of the plurality of ray identifiers are stored in the local cache. , And some of the second plurality of rays are not stored in the local cache.

記載されている機能的観点は、適切なハードウェア資源を記載されているように入力および出力を生成するため動作できるように構成するコンピュータ実行可能なコードのモジュールのようなモジュールとして実施可能である。
本明細書中に開示された態様および実施例のより十分な理解のため、以下の記載において添付図面が参照される。
The functional aspects described can be implemented as modules, such as modules of computer-executable code that configures the appropriate hardware resources to be operable to generate inputs and outputs as described. .
For a fuller understanding of the aspects and examples disclosed herein, reference is made to the accompanying drawings in the following description.

図1は、レイトレーシングを用いてシーンをレンダリングするシステムの第1の実施例を図示する。FIG. 1 illustrates a first embodiment of a system for rendering a scene using ray tracing. 図2は、図1の一部の付加的な態様を図示する。FIG. 2 illustrates some additional aspects of FIG. 図3は、レイトレーシング・レンダリング・システムの交差テスト部の別の実施を図示する。FIG. 3 illustrates another implementation of the intersection test portion of the ray tracing rendering system. 図4は、図1〜3のシステムで用いられる交差テストのコンピューティング資源の実施例を図示する。FIG. 4 illustrates an example of cross-test computing resources used in the systems of FIGS. 図5は、レイトレーシングで用いられる交差テスト・システム・アーキテクチャのさらなる実施例を図示する。FIG. 5 illustrates a further example of a cross test system architecture used in ray tracing. 図6は、交差テストのアーキテクチャの別の実施例の態様を図示する。FIG. 6 illustrates aspects of another embodiment of a cross test architecture. 図7は、キューによって連結された交差テスト資源およびシェーディング資源を含む図1〜6による開示内容の態様を実施するシステムアーキテクチャを図示する。FIG. 7 illustrates a system architecture that implements aspects of the disclosure according to FIGS. 1-6 including cross-test resources and shading resources concatenated by queues. 図8aは、図1〜7によるシステムにおいてレイトレーシングを制御する際に使用可能であるレイの識別子を提供する態様を図示する。FIG. 8a illustrates an aspect of providing ray identifiers that can be used in controlling ray tracing in the systems according to FIGS. 図8bは、図1〜7によるシステムにおいてレイトレーシングを制御する際に使用可能であるレイの識別子を提供する態様を図示する。FIG. 8b illustrates an aspect of providing a ray identifier that can be used in controlling ray tracing in the system according to FIGS. 図9aは、図1〜7のいずれかの交差テスト資源に提供可能であるメモリ内のレイデータを特定するためにレイIDを使用する実施例を図示する。FIG. 9a illustrates an example of using a ray ID to identify ray data in memory that can be provided to any of the cross test resources of FIGS. 図9bは、図1〜7のいずれかの交差テスト資源に提供可能であるメモリ内のレイデータを特定するためにレイIDを使用する実施例を図示する。FIG. 9b illustrates an example of using a ray ID to identify ray data in memory that can be provided to any of the cross test resources of FIGS. 図10は、図1〜7のシステムにおいて実施可能である複数の交差テスト資源の間での交差テスト制御および形状分散の態様を図示する。FIG. 10 illustrates aspects of cross-test control and shape distribution among multiple cross-test resources that can be implemented in the systems of FIGS. 図11は、図1〜10のシステムの態様がレイトレーシングのアーキテクチャを使用するときに実施可能であるマルチプロセッサアーキテクチャを図示する。FIG. 11 illustrates a multiprocessor architecture that can be implemented when the system aspects of FIGS. 1-10 use a ray tracing architecture. 図12は、図1〜11による開示内容の実施を達成可能である資源間通信およびローカライズされたレイデータ記憶装置を用いる複数のコンピューティング資源の体系化を図示する。FIG. 12 illustrates the organization of multiple computing resources using inter-resource communications and localized ray data storage that can accomplish the implementation of the disclosure according to FIGS. 図13は、図12のコンピューティング資源の一部として動作する複数のスレッドまたはコアの実施例を図示する。FIG. 13 illustrates an example of multiple threads or cores operating as part of the computing resource of FIG. 図14aは、図1〜13によるシステムおよびアーキテクチャのために役立つ様々なキューイングの実装を図示する。FIG. 14a illustrates various queuing implementations useful for the systems and architectures according to FIGS. 図14bは、図1〜13によるシステムおよびアーキテクチャのために役立つ様々なキューイングの実装を図示する。FIG. 14b illustrates various queuing implementations useful for the system and architecture according to FIGS. 図14cは、図1〜13によるシステムおよびアーキテクチャのために役立つ様々なキューイングの実装を図示する。FIG. 14c illustrates various queuing implementations useful for the system and architecture according to FIGS. 図15は、レイデータが複数のコンピューティング資源によって共有されるL2キャッシュからプライベートL1キャッシュの間に分散可能である様々な方法を図示するため使用される。FIG. 15 is used to illustrate various ways in which ray data can be distributed between an L2 cache shared by multiple computing resources and a private L1 cache. 図16は、これらの開示内容を通じてキューの中に存在可能であるパケットの中のデータの実施例を図示する。FIG. 16 illustrates an example of data in a packet that can exist in a queue through these disclosures. 図17は、特有のコンピューティング資源が、交差テスト中にローカルに利用可能なレイデータを使用し、このテストの結果をライトバックして、パケットからのレイIDを処理する方法に関係する開示を行う。FIG. 17 shows disclosure relating to how a particular computing resource uses locally available ray data during a cross test and writes back the results of this test to process the ray ID from the packet. Do. 図18Aは、レイID情報の例示的なSIMDアーキテクチャ処理パケットの態様を図示する。FIG. 18A illustrates aspects of an exemplary SIMD architecture processing packet of ray ID information. 図18Bは、レイID情報の例示的なSIMDアーキテクチャ処理パケットの態様を図示する。FIG. 18B illustrates an exemplary SIMD architecture processing packet aspect of ray ID information. 図19は、レイ識別子を分散し、レイをテストし、テスト結果をさらなるテストのためさらなるパケットに融合する概念を図示する。FIG. 19 illustrates the concept of distributing ray identifiers, testing rays, and fusing test results into additional packets for further testing. 図20は、データ構造との関連で、上述の図によるシステムに一般に適用可能である方法ステップを図示する。FIG. 20 illustrates the method steps that are generally applicable to the system according to the above diagram in the context of the data structure. 図21は、本開示内容によるさらなる方法の態様を図示する。FIG. 21 illustrates a further method aspect according to the present disclosure.

以下の説明は、当業者が本発明の様々な態様を構成し、使用することを可能にさせるため提示されている。具体的な技術、実施、および用途の説明は単に実施例として与えられている。本明細書中に記載された実施例に対する種々の変更は当業者に明白であり、本明細書中に記載された一般的な原理は、本発明の範囲から逸脱することなく他の実施例および用途に適用される。本説明は、最初に、図2の実施例の場合と同様に、ジオメトリ・アクセラレイション・データを使って抽出できる3次元(3−D)シーン(図1)の実施例に関係する態様を紹介することにより進む。このような3次元シーンは、図示され説明された実施例によるシステムおよび方法を使って2次元表現としてレンダリングできる。   The following description is presented to enable any person skilled in the art to make and use various aspects of the present invention. Descriptions of specific techniques, implementations, and applications are provided only as examples. Various modifications to the examples described herein will be apparent to those skilled in the art, and the general principles described herein may be used in other examples and without departing from the scope of the invention. Applicable for use. This description first introduces aspects related to the embodiment of a three-dimensional (3-D) scene (FIG. 1) that can be extracted using geometry acceleration data, as in the embodiment of FIG. To proceed. Such a three-dimensional scene can be rendered as a two-dimensional representation using the system and method according to the illustrated and described embodiment.

背景技術の欄に紹介されているように、3次元シーンは、表示用の2次元表現に変換されるべきである。このような変換は、シーンが観察されるカメラ位置を選択することを必要とする。カメラ位置は、シーンの観察者(例えば、ゲームをする人、動画を見る人など)の位置を示すことがよくある。2次元表現は、通常は、2次元表現が所望の解像度で画素のアレイを含むように、カメラとシーンとの間の平面位置にある。各画素の色ベクトルはレンダリングを通じて決定される。レイトレーシング中に、レイは、所望の点で2次元表現の平面と交差するように、最初にカメラ位置から放たれることが可能であり、その後に3次元シーンに続く。レイが2次元表現と交差する位置は、そのレイと関連付けられたデータ構造体の中に保持される。   As introduced in the background section, the 3D scene should be converted into a 2D representation for display. Such a conversion requires selecting the camera position at which the scene is observed. The camera position often indicates the position of a scene observer (eg, a person playing a game, a person watching a movie, etc.). The two-dimensional representation is usually in a planar position between the camera and the scene so that the two-dimensional representation includes an array of pixels at the desired resolution. The color vector for each pixel is determined through rendering. During ray tracing, the ray can first be released from the camera position so that it intersects the plane of the two-dimensional representation at the desired point, followed by a three-dimensional scene. The location where a ray intersects the two-dimensional representation is kept in the data structure associated with that ray.

カメラ位置は、必ずしも空間内に定義された単一の点でなくてもよく、その代わりに、カメラ位置は、レイがカメラ位置の範囲内であるとみなされる数の点から放たれるように、拡散してもよい。各レイは、サンプルと呼ばれることもある画素の範囲内で2次元表現と交差する。いくつかの実施では、レイが画素と交差するロケーションのより正確な位置が記録され、色のより正確な補間および混合を可能にする。   The camera position does not necessarily have to be a single point defined in space; instead, the camera position is released from the number of points that the ray is considered to be within the range of the camera position. , May diffuse. Each ray intersects the two-dimensional representation within a range of pixels, sometimes called samples. In some implementations, a more accurate location of where the ray intersects the pixel is recorded, allowing more accurate interpolation and blending of colors.

説明を明確にするため、ある一定のタイプの物体のデータ、例えば、プリミティブ(例えば、三角形の3頂点の座標)は、物体のデータを参照するのではなく、物体自体として簡単に記載されることがよくある。例えば、「プリミティブをフェッチする」というとき、そのプリミティブの物理的な実現ではなく、そのプリミティブを表すデータがフェッチされると理解されるべきである。しかし、特にレイに関して、本開示は、レイの識別子とレイ自体を定義するデータとを区別し、用語「レイ」が使用されるとき、文脈がそうではないことを明らかにしない限り、レイIDとレイを定義するデータとの両方の総称であるとみなされる。   For the sake of clarity, certain types of object data, eg primitives (eg the coordinates of the three vertices of a triangle) are simply described as the object itself, rather than referencing the object data. There is often. For example, when “fetching a primitive” is to be understood, the data representing the primitive is fetched, not the physical realization of the primitive. However, particularly with respect to rays, this disclosure distinguishes between ray identifiers and the data that defines the rays themselves, and when the term “ray” is used, unless the context reveals otherwise, the ray ID and It is considered to be a generic term for both the data defining a ray.

3次元シーンの中の現実的、かつ、精細な物体の輪郭の表現は、通常は、物体の表面を近似する多数の小さい幾何学的プリミティブを設けることによって行われる(すなわち、ワイヤ・フレーム・モデル)。したがって、より複雑な物体は、より単純な物体より多くのプリミティブおよび小さいプリミティブを使って表現されることが必要である。より高い解像度という利点を与えるが、特に、複雑なシーンは多数のオブジェクトを有することができるので、(上述のように、および下記にさらに詳細に示される)レイと多数のプリミティブとの間で交差テストを実行することは計算集約的である。交差テストのためシーンに何らかの外部からの体系化を加えることなく、各レイは各プリミティブとの交差をテストされるべきことになり、非常に遅い交差テストをもたらすことになる。したがって、レイ毎に必要とされるレイ/プリミティブ交差テストの回数を削減する方法は、シーンの中のレイ交差テストを加速するために役立つ。このような交差テストの回数を削減する一つの方法は、ある程度の数のプリミティブの表面を抽出する過剰なバウンディング面を設けることである。レイは、各レイと交差テストするプリミティブのより小さいサブセットを特定するため、最初にバウンディング面に対して交差テスト可能である。このようなバウンディング面形状は種々の形状で設けることが可能である。本開示では、このようなバウンディング面要素のコレクションはジオメトリ・アクセラレイション・データ(以下、GADと称される)と称される。   A realistic and fine representation of the contour of an object in a 3D scene is usually done by providing a number of small geometric primitives that approximate the surface of the object (ie, a wire frame model). ). Thus, more complex objects need to be represented using more primitives and smaller primitives than simpler objects. Provides the advantage of higher resolution, but in particular, a complex scene can have a large number of objects, so it intersects between a ray and a large number of primitives (as described above and shown in more detail below) Running the test is computationally intensive. Without adding any external systematization to the scene for intersection testing, each ray should be tested for intersection with each primitive, resulting in a very slow intersection test. Thus, a method that reduces the number of ray / primitive intersection tests required per ray is useful for accelerating ray intersection testing in a scene. One way to reduce the number of such cross tests is to provide an excess bounding surface that extracts a certain number of primitive surfaces. Rays can first be cross-tested against the bounding plane to identify a smaller subset of primitives that cross-test with each ray. Such a bounding surface shape can be provided in various shapes. In this disclosure, such a collection of bounding surface elements is referred to as geometry acceleration data (hereinafter referred to as GAD).

GAD体系化、要素、および用途のより広範囲にわたる取り扱いは、2007年9月17日付で出願され、参照により本明細書に組み込まれる米国特許出願第11/856,612号に見られる。よって、GADのより簡便な取り扱いが前後関係のためここに記載され、これらの問題に関するさらなる詳細は上述の参照された出願から入手できる。   A more extensive treatment of GAD organization, elements, and applications can be found in US patent application Ser. No. 11 / 856,612, filed Sep. 17, 2007 and incorporated herein by reference. Thus, a simpler handling of GAD is described here for context and further details regarding these issues can be obtained from the above referenced applications.

紹介されているように、GAD要素は、一般に、幾何学的形状の表面とレイとが交差しないことが、レイがその形状によって境界を定められたいずれのプリミティブとも交差しないことを示すように、3次元空間の中で、プリミティブのそれぞれのコレクションを囲む幾何学的形状を含む。GAD要素は、球体、軸方向整列バウンディングボックス、kdツリー、オクツリー、および他の種類のバウンディングボリューム階層を含むことが可能であり、したがって、本開示による実施は、kdツリーのカッティングプレーン法、または、1若しくはそれ以上のシーンプリミティブの境界を定めるバウンディング面を見出し、バウンディング面の広がりを特定する別の方法のようなバウンディングスキームを使用可能である。要約すると、GAD要素は、主に、レイとプリミティブとの間の交差をより迅速に特定するためプリミティブの抽出に役立つので、GAD要素は、好ましくは、レイとの交差を容易にテストできる形状である。   As introduced, GAD elements generally indicate that a geometric surface and a ray do not intersect indicates that the ray does not intersect any primitive bounded by that shape, In a three-dimensional space, it contains geometric shapes that surround each collection of primitives. GAD elements can include spheres, axially aligned bounding boxes, kd-trees, octrees, and other types of bounding volume hierarchies, so implementations according to the present disclosure can be implemented by kd-tree cutting plane methods, or A bounding scheme such as another method of finding the bounding surface that bounds one or more scene primitives and identifying the extent of the bounding surface can be used. In summary, the GAD element is preferably in a shape that can be easily tested for intersection with a ray, since it primarily helps to extract primitives to more quickly identify intersections between rays and primitives. is there.

GAD要素は互いに相互に関係付け可能である。GAD要素の相互関係付けは、本明細書中では、GAD要素を表現するノードと、2つのGAD要素の間の相互関係付けを表現するエッジとを含むグラフであることが可能である。1対の要素がエッジによって接続される場合、エッジは、ノードのうちの一方がもう一方とは異なる相対的な粒度を有することを示すことがあり、すなわち、そのエッジによって接続されたノードのうちの一方はもう一方のノードより多いまたは少ないプリミティブの境界を定めるエッジによって接続されることを意味することが可能である。いくつかの場合、グラフは、グラフに方向付きであるように階層的であることが可能であり、グラフは親ノードから子ノードの順序にトラバース可能であり、残りの境界が定められたプリミティブを途中で狭小化する。いくつかの場合、グラフは、所定のGAD要素が他のGAD要素の境界を定める場合に、その所定のGAD要素がプリミティブの境界を直接的に定めることがないように(すなわち、均一なGAD構造では、プリミティブがリーフノードGAD要素によって直接的に境界を定められ、非リーフノードがプリミティブではなく他のGAD要素の境界を直接的に定めるように)均一なGAD要素を有することが可能である。   GAD elements can be related to each other. The interrelationship of GAD elements can be a graph that includes nodes that represent GAD elements and edges that represent interrelationships between two GAD elements herein. When a pair of elements are connected by an edge, the edge may indicate that one of the nodes has a relative granularity different from the other, ie, of the nodes connected by that edge Can be connected by edges that delimit more or fewer primitives than the other node. In some cases, the graph can be hierarchical so that it is oriented to the graph, the graph can be traversed from parent node to child node order, and the remaining bounded primitives Narrows along the way. In some cases, the graph may be such that when a given GAD element delimits another GAD element, that given GAD element does not directly delimit the primitive (ie, a uniform GAD structure). It is possible to have uniform GAD elements (so that primitives are bounded directly by leaf node GAD elements and non-leaf nodes directly bound other GAD elements rather than primitives).

GAD要素のグラフは、各GAD要素によって境界を定められたある程度の数の要素および/またはプリミティブにおいてある均一性を維持することを目標として構築可能である。所定のシーンは、このような目標が達成できるまで細分可能である。   A graph of GAD elements can be constructed with the goal of maintaining a certain uniformity in a certain number of elements and / or primitives bounded by each GAD element. A given scene can be subdivided until such a goal is achieved.

以下の説明中、所定のGAD要素と交差することが決定されたレイに基づいて、他のどのGAD要素が呼応して次にテストされるべきであるかを決定する仕組みが存在するとされる。階層グラフの実施例では、したがって、次にテストされる要素は、一般に、テストされたノードの子ノードである。   In the following description, it is assumed that there is a mechanism for determining which other GAD elements should be tested next in response based on the ray determined to cross a given GAD element. In the hierarchical graph embodiment, therefore, the next element to be tested is generally a child node of the tested node.

ある程度の数の実施例において実施されるGADの一用法は、本明細書中では、レイが所定のGAD要素と交差することが見出されたとき、このレイが同様にこの要素と交差することが決定されている他のレイと共に収集されることである。ある程度の数のレイが収集されたとき、この要素に接続されているGAD要素のストリームは、主メモリからフェッチされ、各テスタが異なる収集されたレイを有するテスタを通じてストリーム化される。したがって、各テスタは、各テスタのレイをローカル高速メモリの中に固定的に維持し、一方、ジオメトリは、必要とされるときに、遅いメモリからフェッチされ、書き換えが許可される。より一般的には、この説明は、コンピューティング資源が、このようなレイと幾何学的形状(GAD要素およびプリミティブ)との交差を検出するためレイを処理し、最終的に、どのレイがどのプリミティブにヒットするかを特定するように体系化可能である方法についての一連の実施例を提供する。   One usage of GAD implemented in a certain number of embodiments is that when a ray is found to intersect a given GAD element, this ray will also intersect this element as well. Is collected along with other rays that have been determined. When a certain number of rays are collected, the stream of GAD elements connected to this element is fetched from main memory and streamed through testers where each tester has a different collected ray. Thus, each tester keeps each tester's ray fixed in local high-speed memory, while the geometry is fetched from slow memory and allowed to be rewritten when needed. More generally, this description describes how a computing resource processes a ray to detect the intersection of such a ray with a geometry (GAD elements and primitives), and finally which ray A series of examples are provided for methods that can be organized to identify hits on primitives.

これらの実施例が実施可能である他の態様は、(1)交差テストからシェーディングへの出力のためのキューが設けられていること、(2)そのレイデータが計算資源にある程度までローカライズされ、ある一定のレイを幾何学的形状とテストすることが決定されたときにそれらの幾何学的形状がより遅いメモリからフェッチされること、および、(3)その交差テストが交差テストを実行する計算資源へのレイを(レイ識別子を使用して)特定することにより駆動され、各計算資源に各計算資源のローカライズされた(複数の)メモリから特定された(複数の)レイに対応するデータをフェッチさせることと、のうちのいずれかを含む。   Other aspects in which these embodiments can be implemented are: (1) a queue is provided for output from the cross test to the shading; (2) the ray data is localized to some extent in computational resources; Those geometric shapes are fetched from slower memory when it is decided to test certain rays with the geometry, and (3) the computation that the intersection test performs the intersection test Driven by identifying a ray to a resource (using a ray identifier), each compute resource has data corresponding to the identified ray (s) from the localized memory (s) of each compute resource Or fetching.

以下の説明は、レイトレーシングを使用して3次元シーンの2次元表現をレンダリングするシステムおよびシステムの一部の実施例を提示する。このようなシステムの2つの主な機能コンポーネントは、(1)交差を特定するレイをトレーシングすること、および、(2)特定された交差をシェーディングすることである。   The following description presents examples of systems and portions of systems that render a two-dimensional representation of a three-dimensional scene using ray tracing. The two main functional components of such a system are (1) tracing the rays that identify the intersection, and (2) shading the identified intersection.

図1は、プリミティブで構成されたシーンをレイトレーシングする際に用いられるシステムの態様を図示する。一般に、図1および他の図におけるいずれかの機能ユニットのいずれかの機能または役目は、複数のハードウェアユニット、または、ソフトウェア部品、ソフトウェアサブルーチンで実施されることがあり、異なるコンピュータで実行されることさえある。いくつかの場合、このような実施は、システム機能および性能に影響を与えることが可能であるので、より具体的に記載されている。   FIG. 1 illustrates aspects of a system used in ray tracing a scene composed of primitives. In general, any function or role of any of the functional units in FIG. 1 and other figures may be implemented in multiple hardware units, software components, software subroutines, and executed on different computers. There is even a thing. In some cases, such implementations are described more specifically because they can affect system functionality and performance.

図1は、ジオメトリユニット101と、交差処理ユニット102と、サンプル処理資源110と、フレームバッファ111と、GAD要素およびプリミティブを含むジオメトリ形状(プリミティブおよびGAD記憶装置103)、サンプル106、レイ・シェーディング・データ107、および、テクスチャデータ108を格納するため動作可能であるか、若しくは、構成され、または、格納しているメモリ資源139と、を図示する。ジオメトリユニット101は、レンダリングされるべきシーンの記述を入力し、プリミティブ、および、プリミティブの境界を定めるGAD要素を含むアクセラレイション構造を出力する。交差処理102は、レイとプリミティブとの間の特定された交差をシェードし、テクスチャ、シェーディングコード、および、図示されたデータ源から取得される他のサンプル情報のような入力を使用する。交差処理102の出力は、レンダリングされているシーンの2次元表現を生成する際に使用される新しいレイ(後述される)およびカラー情報を含む。これらの機能コンポーネントのすべては、破線185によって全体的に指定された1若しくはそれ以上のホスト処理資源で実施可能である。   FIG. 1 shows a geometry unit 101, an intersection processing unit 102, a sample processing resource 110, a frame buffer 111, a geometry shape including GAD elements and primitives (primitive and GAD storage 103), a sample 106, a ray shading A memory resource 139 that is operable, configured, or storing data 107 and texture data 108 is illustrated. The geometry unit 101 inputs a description of the scene to be rendered and outputs an acceleration structure that includes primitives and GAD elements that define the boundaries of the primitives. The intersection process 102 shades the identified intersection between the ray and the primitive and uses inputs such as texture, shading code, and other sample information obtained from the illustrated data source. The output of the intersection process 102 includes new rays (described below) and color information that are used in generating a two-dimensional representation of the scene being rendered. All of these functional components can be implemented with one or more host processing resources designated generally by dashed line 185.

上述されているように、特定されたレイ/プリミティブ交差のシェーディング中に、交差処理102は、交差テストされるべき新しいレイを発生可能である。ドライバ188は、交差処理102とインターフェイスをとって、これらの新しいレイを受信し、交差処理資源102と、レイデータ記憶装置105および交差テストユニット109を含むローカライズされた交差テスト領域140との間の通信を管理する。交差テスト領域140は、交差に関してレイをテストし、インターフェイス112を介して、プリミティブおよびGAD記憶装置103へのリードアクセス権を有し、結果インターフェイス121を介して特定された交差の指標を交差処理102へ出力する。ローカル・レイ・データ記憶装置105は、比較的小さいサイズであることが可能な比較的高速なメモリで実施されることが好ましいが、プリミティブおよびアクセラレイション構造記憶装置は、ホスト185の主ダイナミックメモリであることが可能である比較的大規模かつ遅い主メモリ139で実施される。   As described above, during shading of the identified ray / primitive intersection, the intersection process 102 can generate a new ray to be intersection tested. The driver 188 interfaces with the intersection process 102 to receive these new rays, and between the intersection process resource 102 and the localized intersection test area 140 that includes the ray data store 105 and the intersection test unit 109. Manage communications. Intersection test area 140 tests rays for intersections, has read access to primitives and GAD storage 103 via interface 112, and cross-processes 102 the intersection indicator identified via results interface 121. Output to. While local ray data storage 105 is preferably implemented with relatively fast memory, which can be relatively small in size, primitive and acceleration structure storage is the main dynamic memory of host 185. It is implemented with a relatively large and slow main memory 139 that can be.

レイトレーシング高解像度シーンの一態様は、膨大な量のレイデータおよび形状データが含まれている。例えば、毎秒30フレームでフルHD解像度フィルムをレンダリングすることは、1秒間に6000万画素(1920×1080>2M、30回毎秒)以上の色を決定することを必要とする。さらに、各画素色を決定するため、多数のレイが必要とされることがある。したがって、数億のレイが毎秒処理されるべきことがあり、あらゆるレイが数バイトの格納場所を必要とする場合、フルHDシーンのレイトレーシングは、毎秒数ギガバイト以上のレイデータを必要とすることが可能である。さらに、いずれかの所定の時間に、多数のレイデータがメモリに格納されるべきである。アクセス速度とメモリサイズとの間には、費用対効果のよい大規模メモリは比較的低速であるという程度に、殆ど常にトレードオフの状況が存在する。さらに、大規模メモリは、十分に大規模なデータのブロックがアクセス可能かつ使用可能でない限りメモリが効率的に使用されないように構築される。したがって、1つの難問は、メモリから効率的にアクセスするため十分に大規模なレイのグループを一貫して特定できるようにすることである。しかし、類似した始点および方向をもつレイの検出およびグループテストのようなアプローチによってわかるように、このようなレイを特定する際に、処理オーバーヘッドが存在し、場合によっては非常に高い処理オーバーヘッドが存在することが可能である。一態様では、以下の例示的なアーキテクチャは、シーンレンダリングのためレイ交差テストおよびシェーディングのスループットを高めるために、複数のコンピューティング資源と、高速で高価なメモリと、低速で大規模なメモリとを体系化し使用する方法を開示する。   One aspect of the ray-tracing high resolution scene includes a vast amount of ray data and shape data. For example, rendering a full HD resolution film at 30 frames per second requires determining more than 60 million pixels (1920 × 1080> 2M, 30 times per second) per second. In addition, a large number of rays may be required to determine each pixel color. Thus, hundreds of millions of rays may be processed every second, and if every ray requires several bytes of storage, ray tracing for a full HD scene requires more than a few gigabytes of ray data per second. Is possible. In addition, a large number of ray data should be stored in memory at any given time. There is almost always a trade-off between access speed and memory size to the extent that large, cost-effective memories are relatively slow. Furthermore, large scale memories are constructed such that the memory is not used efficiently unless a sufficiently large block of data is accessible and usable. Thus, one challenge is to be able to consistently identify sufficiently large groups of rays for efficient access from memory. However, there is processing overhead and sometimes very high processing overhead in identifying such rays, as can be seen by approaches like ray detection and group testing with similar start points and directions. Is possible. In one aspect, the following exemplary architecture uses multiple computing resources, fast and expensive memory, and slow and large memory to increase ray intersection testing and shading throughput for scene rendering. Disclose how to organize and use.

図1は、このように、GAD要素およびプリミティブとの交差に関してレイをテストする計算資源109にローカライズされた高速メモリに格納されているレイ定義データを含むデータのフローによって、特定された交差のシェーディングからの交差テストの分離を図示する。交差テスト109の出力は、特定されたプリミティブと交差する特定されたレイの指標を含む。交差処理102は、これらの指標を受け取り、これらの交差に従ってシェーディングを実行し、テストのため、最終的に高速レイ・データ・メモリ105に格納される新しいレイをインスタンス化可能である。このような分離は、使用される処理資源に応じて選択された通信手段と共に、1若しくはそれ以上の固定機能ハードウェアおよびこの説明に応じたソフトウェアでプログラムされた汎用コンピュータを使用する種々の実施において行われることが可能である。しかし、これらの実施における一つの反復性のある態様は、レイとの交差に関してテストされた形状データがレイ定義データと比較すると交差テスト領域140において一過性であるということである。換言すると、適用できる場合には、高速メモリが主としてレイデータに割り当てられ、一方、形状はテスタを通じてストリーム化されるが、このような形状データのキャッシュ化を最適化するため計算資源は殆ど使用されない。種々の以下の図は、このような分離、データフロー、レイデータ記憶装置、および、交差テスト資源との結び付きのより具体的な実施例を図示する。   FIG. 1 illustrates the intersection shading identified by the flow of data including ray definition data stored in high-speed memory localized to computational resources 109 that test the rays for intersection with GAD elements and primitives. Figure 2 illustrates the separation of the cross test from. The output of the intersection test 109 includes an indication of the identified ray that intersects the identified primitive. Intersection process 102 can receive these indicators, perform shading according to these intersections, and can instantiate new rays that are ultimately stored in high-speed ray data memory 105 for testing. Such separation is in various implementations using one or more fixed function hardware and a general purpose computer programmed with software according to this description, along with communication means selected according to the processing resources used. It can be done. However, one repetitive aspect in these implementations is that the shape data tested for intersection with the ray is transient in the intersection test region 140 when compared to the ray definition data. In other words, where applicable, high-speed memory is primarily allocated to ray data, while shapes are streamed through a tester, but little computational resources are used to optimize the caching of such shape data. . The various figures below illustrate more specific examples of such separation, data flow, ray data storage, and association with cross-test resources.

図1は、最終的にフレームバッファ111の出力がディスプレイ197を駆動するため使用可能であることをさらに図示する。しかし、これは、便宜上レンダリングと称されることがある交差テストおよびシェーディング操作から生じることが可能である出力の単なる実施例である。例えば、出力はさらに、後で表示するため、若しくは、有形的なコンピュータ読み取り可能な媒体で配布するため、レンダリングされた画像の系列のようなレンダリング生成物を含むコンピュータ読み取り可能な媒体に書き込まれるか、または、通信リンクによって相互接続されたコンピューティング資源を含むネットワークを介して伝送されることが可能である。いくつかの場合に、レンダリングされる3次元シーンは、没入型の仮想現実会議の場合、または、3次元CADモデルの斜視図を含む画像のレンダリングの場合のように、現実の世界の3次元シーンを表すことが可能である。そのような場合、レンダリングの方法が、物理的な物体を表すデータに影響を及ぼす、または別の方法でデータを変換する。他の場合に、3次元シーンは、物理的な物体および物理的でない他の物体を表すいくつかの物体を有することができる。さらに別の3次元シーンでは、シーンの全体は、ビデオゲームなどの場合と同様に、架空であることがある。最終的には、しかし、一般的に、これらの方法は、メモリ、ディスプレイ、および/または、コンピュータ読み取り可能な媒体の物の変形である。   FIG. 1 further illustrates that the output of the frame buffer 111 can ultimately be used to drive the display 197. However, this is just an example of the output that can result from cross-testing and shading operations, sometimes referred to as rendering for convenience. For example, the output is further written to a computer readable medium containing a rendering product, such as a series of rendered images, for later display or distribution on a tangible computer readable medium. Or transmitted over a network that includes computing resources interconnected by communication links. In some cases, the rendered 3D scene is a real world 3D scene, such as in the case of an immersive virtual reality conference or rendering an image that includes a perspective view of a 3D CAD model. Can be expressed. In such cases, the method of rendering affects the data representing the physical object or otherwise transforms the data. In other cases, the three-dimensional scene may have several objects representing physical objects and other non-physical objects. In yet another 3D scene, the entire scene may be fictitious, as in a video game or the like. Ultimately, but in general, these methods are variations of objects in memory, displays, and / or computer readable media.

さらに、1979年以来、レイトレーシングを用いるレンダリングが実施され、種々の手法が交差テストおよびレイトレーシングを用いるレンダリングを実施するため必要とされる他の機能のため開発されている。したがって、本明細書中に記載されている具体的なアーキテクチャおよび方法は、3次元シーンを2次元表現にレンダリングする際に用いられるレイトレーシングの基本的原理の占有権を行使しない。   Furthermore, since 1979, rendering using ray tracing has been performed, and various approaches have been developed for other functions required to perform cross testing and rendering using ray tracing. Thus, the specific architectures and methods described herein do not exercise the occupancy rights of the basic principles of ray tracing used in rendering 3D scenes into 2D representations.

図2は、交差テスト領域140の交差テストユニット109が、レイに対して幾何学的形状をテスト可能である1若しくはそれ以上の個別のテスト資源(別名テストセル)を含むことを図示する。領域140は、それぞれがレイデータ記憶装置105からレイデータを受信し、メモリ139から幾何学的形状データを受信するテストセル205aから205nを含む。各テストセル205a〜205nは、結果インターフェイス121を介した交差処理102への通信のための、所定のレイが所定のプリミティブに交差したかどうかの指標を含むことが可能である結果を生成する。それに反して、GAD要素とレイとの交差テストの結果はロジック203に提供される。ロジック203は、レイをレイが交差していると決定されたGAD要素に関係付けるレイへの参照情報のコレクション210を維持する。   FIG. 2 illustrates that the intersection test unit 109 in the intersection test area 140 includes one or more individual test resources (also known as test cells) that can test the geometry against the ray. Region 140 includes test cells 205a-205n that each receive ray data from ray data storage device 105 and receive geometric shape data from memory 139. Each test cell 205a-205n produces a result that may include an indication of whether a given ray has crossed a given primitive for communication to the intersection process 102 via the result interface 121. On the other hand, the result of the GAD element and ray cross test is provided to logic 203. Logic 203 maintains a collection of reference information 210 to the ray that relates the ray to the GAD element that was determined to be intersecting.

一般に、システムコンポーネントは、所定の特定のレイテストの未知の終了までの時間をサポートするように設計される。交差テストユニット109は、ジオメトリメモリへのリードアクセス権を有し、入力としてレイへの参照情報のキューを有する。交差テストの出力として、各レイは、各レイが最初に交差したジオメトリの部分(便宜上本開示ではプリミティブと称される)と関連付けられる。他のジオメトリの部分(すなわち、複数のプリミティブ)は無関係であると見なすことができる。   In general, system components are designed to support the time to an unknown end of a given specific ray test. The intersection test unit 109 has read access to the geometry memory and has a queue of reference information to the ray as input. As the output of the intersection test, each ray is associated with the portion of the geometry that each ray first intersected (referred to as a primitive in this disclosure for convenience). Other pieces of geometry (ie, primitives) can be considered irrelevant.

上述されているように、領域140は、テストセル205a〜205nにおいてテストされるべきレイコレクションのリスト210を維持するレイ参照情報バッファおよび関連付けられたマネージメントロジック203を含む。バッファ・マネージメント・ロジック203は、固定機能処理資源、または、コンピュータ読み取り可能な媒体から取得された命令を使って構成されたハードウェアで実施可能である。このような命令は、本明細書中ではロジック203に帰属させられた機能およびタスクに応じたモジュールの中に体系化可能である。当業者は、これらの開示内容に基づいてロジック203のさらなる実施を提供することも可能である。   As described above, region 140 includes a ray reference information buffer and associated management logic 203 that maintains a list 210 of ray collections to be tested in test cells 205a-205n. The buffer management logic 203 can be implemented in fixed function processing resources or hardware configured using instructions obtained from a computer readable medium. Such instructions can be organized into modules according to functions and tasks assigned to logic 203 herein. One skilled in the art can also provide further implementations of logic 203 based on these disclosures.

ロジック203は、レイおよびジオメトリをテストセルに割り当て可能であり、設計の中の他のユニットとの通信を取り扱い可能である。一態様では、リスト210の中の各レイコレクションは、1若しくはそれ以上の幾何学的形状との交差をテストされるべき複数のレイ識別子だけを含み、ロジック203はこのようなレイコレクションを維持する。より具体的な実施例では、複数のレイ識別子は、コレクションの中に特定されたGAD要素と交差することが決定され、複数のレイとの交差をテストされるべき次のGAD要素は、GAD要素のグラフの中のその交差したGAD要素に関係付けられる。所定のコレクションに対し関係付けられた要素は、これらの要素との交差テストが開始されるときにメモリ139からフェッチされる。   Logic 203 can assign rays and geometry to test cells and can handle communication with other units in the design. In one aspect, each ray collection in list 210 includes only a plurality of ray identifiers to be tested for intersection with one or more geometric shapes, and logic 203 maintains such ray collections. . In a more specific embodiment, a plurality of ray identifiers are determined to intersect with a GAD element identified in the collection, and a next GAD element to be tested for intersection with a plurality of rays is a GAD element. Related to that crossed GAD element in the graph. Elements associated with a given collection are fetched from memory 139 when cross testing with these elements is initiated.

換言すると、ロジック203は、一時的なレイ参照情報バッファの中のそれぞれの子ノードに対応するジオメトリデータの小部分と交差するレイを表す参照情報を保持可能であり、このようなレイのさらなる処理の延期を可能にする。階層的に配置されたGADの実施例では、このような延期は、子ノードのジオメトリの小部分と交差するレイの累積数がさらなる処理のため適当であることが判明するその後の時点まで、子ノードより下位にあるジオメトリ・アクセラレイション・データの小部分に対する処理を延期可能である。   In other words, the logic 203 can hold reference information representing rays that intersect a small portion of the geometry data corresponding to each child node in the temporary ray reference information buffer, and further processing such rays. Allows postponement of. In the hierarchically-arranged GAD embodiment, such deferrals may occur until a later point in time when the cumulative number of rays intersecting a small portion of the child node's geometry is found to be suitable for further processing. Processing for a small portion of the geometry acceleration data below the node can be postponed.

ロジック203は、テスト用の幾何学的形状をテストセル205a〜205nへ提供するメモリトランザクションをセットアップするためメモリ139とさらに通信可能である。ロジック203は、レイデータ記憶装置105とさらに通信し、そこにデータが格納されているレイを決定する。いくつかの実施では、ロジック203は、メモリ139または交差処理ユニット102の中で実行するシェーディングプロセスからレイを取得または受信し、スペースが利用可能であるとき、交差テスト中の格納および使用のためこれらのレイをメモリ105へ提供する。   Logic 203 can further communicate with memory 139 to set up memory transactions that provide test geometry to test cells 205a-205n. The logic 203 further communicates with the ray data storage device 105 to determine the ray in which the data is stored. In some implementations, the logic 203 obtains or receives rays from the shading process executing in the memory 139 or the intersection processing unit 102, and these are stored and used during intersection tests when space is available. Are provided to the memory 105.

よって、ロジック203は、GAD形状の識別子とのレイ識別子の関連性を含む一時的なレイ参照情報バッファを維持可能である。実施では、GAD要素のための識別子は、そのGAD要素と関連付けられた所定のコレクションを格納するバッファの中の位置を特定するためハッシュ化可能である。関連性は、このようなデータのメモリへの格納または収集を記述するとき、本明細書中ではコレクションと総称され、本願のいくつかの場所では、一般に、テスト中のコレクションデータの移動と、交差テストからの結果の返送を意味するために、用語「パケット」が使用される。このような返送された結果は、後述されるように、GAD形状と関連付けられているメモリ内に格納されたコレクションに融合可能である。   Thus, the logic 203 can maintain a temporary ray reference information buffer that includes the relevance of the ray identifier to the GAD shape identifier. In an implementation, an identifier for a GAD element can be hashed to identify a location in a buffer that stores a predetermined collection associated with that GAD element. Relevance is collectively referred to herein as collections when describing the storage or collection of such data in memory, and in some places in the present application, generally, the movement of collection data during testing, The term “packet” is used to mean returning a result from a test. Such returned results can be merged into a collection stored in the memory associated with the GAD shape, as described below.

要約すると、図2は、レイ定義データが高速メモリ105に格納され、このようなレイとの交差に関してテストされるべき形状データがメモリ139から到来することを引き続き図示する。上記開示は、複数の次にテストされるべき形状が同時にメモリ139からフェッチされ、「親」GAD要素と交差していることが既知であるレイのグループとの交差に関して順次にテストされることが好ましいということをさらに明らかにする。   In summary, FIG. 2 continues to illustrate that ray definition data is stored in the high speed memory 105 and that shape data to be tested for such ray intersections comes from the memory 139. The above disclosure allows multiple next shapes to be tested to be fetched from memory 139 at the same time and tested sequentially for intersection with a group of rays known to intersect the “parent” GAD element. Further clarify that it is preferable.

今度は、図3は、3次元シーンの2次元表現をレイトレーシングするレンダリングシステムで使用可能である領域140(図1)の交差テストユニット(ITU)350による実施の実施例のブロック図を含む。ITU350は、複数のテストセル310a〜310nおよび340a〜340nを含む。GAD要素は、GADデータ記憶装置103bから提供されるものとして図示され、プリミティブデータはプリミティブデータ記憶装置103aから提供される。   FIG. 3 now includes a block diagram of an embodiment of an implementation by an intersection test unit (ITU) 350 of a region 140 (FIG. 1) that can be used in a rendering system that ray-traces a two-dimensional representation of a three-dimensional scene. The ITU 350 includes a plurality of test cells 310a to 310n and 340a to 340n. The GAD element is illustrated as being provided from the GAD data store 103b, and the primitive data is provided from the primitive data store 103a.

テストセル310a〜310nは、GAD要素、および、これらのGAD要素とテストされるレイデータを受信する(すなわち、これらのテストセルがGAD要素をテストする)。テストセル340a〜340nは、プリミティブデータ、および、これらのプリミティブとテストされるレイデータを受信する(すなわち、これらのテストセルがプリミティブをテストする)。よって、ITU350は、プリミティブとの交差に関してレイのコレクションをテスト可能であり、GAD要素との交差に関して別個のレイのコレクションをテスト可能である。   Test cells 310a-310n receive GAD elements and ray data to be tested with these GAD elements (ie, these test cells test the GAD elements). Test cells 340a-340n receive primitive data and ray data to be tested with these primitives (ie, these test cells test the primitives). Thus, ITU 350 can test a collection of rays for intersection with primitives and can test a collection of separate rays for intersection with GAD elements.

ITU350は、コレクション・マネージメント・ロジック203aおよびコレクションバッファ203bをさらに含む。コレクションバッファ203bおよびレイデータ105は、(例えば)メモリ139からレイデータを受信可能であるメモリ340に格納可能である。コレクションバッファ203bは、GAD要素と関連付けられたレイ参照情報を維持する。コレクション・マネージメント203aは、テストセルからの交差情報に基づいてこれらのコレクションを維持する。コレクション・マネージメント203aは、レイコレクションをテストするためメモリ139からのプリミティブおよびGAD要素のフェッチを開始することもできる。   The ITU 350 further includes a collection management logic 203a and a collection buffer 203b. The collection buffer 203b and the ray data 105 can be stored in a memory 340 that can receive ray data from the memory 139 (for example). The collection buffer 203b maintains ray reference information associated with the GAD element. Collection management 203a maintains these collections based on intersection information from test cells. Collection management 203a may also initiate fetching of primitives and GAD elements from memory 139 to test ray collection.

ITU350は、結果インターフェイス121を介して交差処理102へ最終的に提供するため出力バッファ375に一時記憶可能である特定された交差の指標を返送する。指標情報は、レイと、所定の精度の範囲内でレイが交差すると決定されたプリミティブとを特定するために十分である。   The ITU 350 returns an indication of the identified intersection that can be temporarily stored in the output buffer 375 for final provision to the intersection process 102 via the results interface 121. The indicator information is sufficient to identify the ray and the primitive that is determined to intersect the ray within a predetermined accuracy.

ITU350は、ITU350にレイと、レイが交差に関してテストされることになる幾何学的形状とを与える制御プロセスまたはドライバ(例えば、ドライバ188)を通じて呼び出すことができる関数またはユーティリティであるとみなすことができる。例えば、ITU350は、ドライバ188を介して、すなわち、ITU350をシェーディングのような他のレンダリングプロセスおよび初期レイ生成関数とインターフェイス接続するプロセスを介して情報を提供されることが可能である。ITU350の観点から、ITU350は、領域140が、提供されるか、または、提供された他の情報に基づいて取得されるレイ、GAD、およびプリミティブ(または、より一般的にはシーンジオメトリ)を使用して交差テストを実行できるので、提供された情報の基点に気付く必要がない。   The ITU 350 can be viewed as a function or utility that can be called through a control process or driver (eg, driver 188) that gives the ITU 350 a ray and the geometry that the ray will be tested for crossing. . For example, ITU 350 may be provided with information via driver 188, i.e., through a process that interfaces ITU 350 with other rendering processes such as shading and initial ray generation functions. From an ITU 350 perspective, ITU 350 uses rays, GADs, and primitives (or more generally scene geometry) where region 140 is provided or obtained based on other information provided. Cross-testing can be performed, so there is no need to be aware of the origin of the information provided.

上述されているように、ITU350は、ITU350が受動的でないように、どのように、いつ、そして、どのようなデータがITU350に提供されるかを制御し、そして、例えば、交差テストのため必要に応じて、レイ、または、ジオメトリデータ、または、アクセラレイションデータをフェッチすることができる。例えば、ITU350は、レイがテストされるべきシーンを特定するために十分な情報と共に、交差テストのための多数のレイを提供されることができる。例えば、ITU350は、所定の時点に交差テストのため10000より多くのレイを提供されることができ、そして、これらのレイのテストが終了するとき、後述されるように、(交差処理102によって発生させられた)新しいレイがITU350の中で処理されているレイの数をおおよそ初期数に保つために提供されることができる。ITU350は、その後、処理中に(レイ・コレクション・バッファ203bにおいて(図3を参照のこと)、レイの一時的格納を制御し(ロジック203aにおいて(図3を参照のこと))、処理中に必要に応じてプリミティブおよびGADの要素のフェッチを開始することができる。   As described above, the ITU 350 controls how, when, and what data is provided to the ITU 350 so that the ITU 350 is not passive and is needed, for example, for cross testing Depending on the, ray or geometry data or acceleration data can be fetched. For example, the ITU 350 can be provided with a number of rays for intersection testing, along with sufficient information to identify the scene where the rays are to be tested. For example, the ITU 350 can be provided with more than 10,000 rays for a crossover test at a given time, and when these ray tests are finished, as described below (generated by the crossover process 102). New rays) can be provided to keep the number of rays being processed in the ITU 350 at approximately the initial number. The ITU 350 then controls the temporary storage of rays (in the logic 203a (see FIG. 3)) during processing (in the ray collection buffer 203b (see FIG. 3)) and during processing. Fetching of primitive and GAD elements can be initiated as needed.

上述されているように、レイを定義するデータがレイデータ105に維持されている間に、レイ識別子はバッファ203bの中に維持され、GAD要素に関して体系化されるので、GAD要素およびプリミティブは、レイと比べるとITU350において一時的である。バッファ203bおよびレイデータ105のそれぞれは、SRAMキャッシュの1若しくはそれ以上のバンクのような様々な方法で物理的に実施でき、メモリ340に維持することができる。   As described above, while the data defining the ray is maintained in the ray data 105, the ray identifier is maintained in the buffer 203b and organized with respect to the GAD element, so that the GAD element and primitive are Compared to Ray, it is temporary in ITU 350. Each of the buffer 203b and the ray data 105 can be physically implemented in various ways, such as one or more banks of the SRAM cache, and can be maintained in the memory 340.

上述されているように、ロジック203aは、メモリ340に格納されたレイコレクションの状態を追跡し、処理の準備ができているコレクションを決定する。図3に示されているように、ロジック203aは、メモリ340に通信的に連結され、テストのため接続されたテストセルの1つずつへのレイの分散を開始できる。GAD要素が、GAD要素およびプリミティブの組み合わせではなく、GAD要素だけ、または、プリミティブだけの境界を定める状況では、ロジック203aは、特有のコレクションがプリミティブまたは他のGAD要素の境界を定めるGAD要素と関連付けられているかどうかに依存して、テストセル340a〜340nまたはテストセル310a〜310nのいずれかにレイを割り当てることが可能である。   As described above, the logic 203a tracks the state of ray collection stored in the memory 340 and determines which collection is ready for processing. As shown in FIG. 3, logic 203a is communicatively coupled to memory 340 and can initiate distribution of rays to each of the connected test cells for testing. In situations where a GAD element is not a combination of a GAD element and a primitive, but only a GAD element or a primitive-only boundary, the logic 203a associates a GAD element with a specific collection that defines the boundary of the primitive or other GAD element. Depending on whether or not the test cell 340a to 340n or the test cells 310a to 310n can be assigned a ray.

特有のGAD要素が他のGAD要素およびプリミティブの両方の境界を定めることができる実施例では、ITU350は、レイと共に、GAD要素およびプリミティブの両方を各テストセルへ提供するデータ経路を有することになるので、ロジック203aは、テスト資源の間でコレクションのテスト用レイを準備することになる。このような実施例では、GAD要素とプリミティブとの間の形状の典型的な差(例えば、球体対三角形)のため、テストロジックを切り替えるか、または、テストされる形状のため最適化された交差テストアルゴリズムをロードする指標がロジック203aから提供されることができる。   In embodiments where a unique GAD element can delimit both other GAD elements and primitives, ITU 350 will have a data path that, along with the ray, provides both GAD elements and primitives to each test cell. Thus, the logic 203a prepares a collection test ray among the test resources. In such an embodiment, because of the typical difference in shape between GAD elements and primitives (eg, sphere-to-triangle), the test logic is switched or the intersection optimized for the shape being tested An indicator for loading a test algorithm can be provided from logic 203a.

ロジック203aは、テストセル310a〜310nおよびテストセル340a〜340nへの情報の提供を直接的または間接的に引き起こすことができる。間接的な状況では、ロジック203aは、各テストセルがメモリ340からテスト用のレイデータのフェッチを開始するように、各テストセルに情報を提供可能である。ロジック203aは、説明を簡単にするため、メモリ340とは別個に図示されているが、ロジック203aによって実行されるマネージメント機能はメモリ340に格納されたデータに主として関係するので、ロジック203aはメモリ340の回路の内部に組み込まれることができる。   The logic 203a can cause the provision of information to the test cells 310a-310n and the test cells 340a-340n directly or indirectly. In an indirect situation, logic 203a can provide information to each test cell such that each test cell begins fetching test ray data from memory 340. The logic 203a is illustrated separately from the memory 340 for the sake of simplicity, but the management functions performed by the logic 203a are primarily related to the data stored in the memory 340, so the logic 203a is not included in the memory 340. Can be incorporated into the circuit.

交差テスト資源によるメモリ340へのアクセスの並列化を高める能力は、本明細書中に記載されているいくつかの態様の利点である。したがって、好ましくは、テストセル1つ当たりに少なくとも1つまでメモリ340へのアクセスポートの数を増加することは有利である。このような並列化に関係付けられた例示的な編成はさらに後述される。   The ability to enhance parallelization of access to memory 340 by cross-test resources is an advantage of some aspects described herein. Therefore, it is advantageous to increase the number of access ports to memory 340, preferably to at least one per test cell. An exemplary organization associated with such parallelization is further described below.

さらに、ITU350は、入力データをITUへ提供するか、または、ITUから出力を受信するユニットに関して非同期式に動作することができる。ここで、「非同期」は、交差テストが前に受信されたレイに対して継続している間に、ITUが付加的なレイを受信し、付加的なレイの交差テストを開始することを含むことができる。さらに、「非同期」は、ITU350がレイを受信した順序にレイが交差テストを終了しなくてもよいことを含むことができる。非同期は、ITU350の中の交差テスト資源が、3次元シーンの中のレイの位置、または、シーンに重畳されたスケジューリンググリッドを考慮することなく、交差テストの割り当てまたはスケジューリングのため、または、親レイおよび少数の親レイから生み出された子レイのような世代間関係を有するテスト専用レイ、あるいは、特殊な世代のレイ、例えば、カメラレイ若しくは2次レイだけをテストするために利用できることをさらに含む。   Further, the ITU 350 can operate asynchronously with respect to units that provide input data to the ITU or receive output from the ITU. Here, “asynchronous” includes the ITU receiving additional rays and initiating additional ray crossing tests while the crossing test continues for previously received rays. be able to. In addition, “asynchronous” may include that a ray may not finish the cross test in the order in which the ITU 350 received the ray. Asynchronous means that the intersection test resource in ITU 350 does not take into account the position of the ray in the 3D scene or the scheduling grid superimposed on the scene, or for the assignment or scheduling of the intersection test, or the parent ray. And test-only rays that have intergenerational relationships, such as child rays generated from a small number of parent rays, or can be used to test only special generation rays, such as camera rays or secondary rays .

ITU350は、プリミティブおよびプリミティブと交差したレイの特定された交差の指標を受信する出力バッファ375をさらに含む。実施例では、指標は、プリミティブと交差したレイを特定するために十分な情報とペアにされたプリミティブの特定情報を含む。レイの特定情報は、ホストプロセッサが利用できる資源の中に維持されているレイのリストの中の特定のレイを特定するインデックスのような参照情報を含むことができる。例えば、リストは、ホストプロセッサ上で動くドライバ188によって維持されることができ、リストはメモリ139の中に維持されることができる。好ましくは、メモリ139は、メモリ340の中にすべてのレイの定義データを含むことができる。しかし、レイ特定情報は、レイを再構成するために十分な、レイの始点および方向のような情報を含むことができる。通常の場合には、より少数のビットが参照情報に合格することが必要とされることになり、有利である。   The ITU 350 further includes an output buffer 375 that receives the indication of the identified intersection of the primitive and the ray that intersected the primitive. In an embodiment, the indicator includes identifying information for the primitive paired with sufficient information to identify the ray that intersected the primitive. Ray identification information may include reference information such as an index identifying a particular ray in a list of rays maintained in resources available to the host processor. For example, the list can be maintained by a driver 188 running on the host processor, and the list can be maintained in memory 139. Preferably, memory 139 can include definition data for all rays in memory 340. However, ray specific information can include information such as ray start and direction sufficient to reconstruct the ray. In the normal case, fewer bits will be required to pass the reference information, which is advantageous.

図4は、ワーキングメモリ410およびテストロジック420を含むテストセル310aの実施例を図示している。ワーキングメモリ410は、表面との交差に関して線分をテストするために十分な情報を収容する数個のレジスタであることができ、または、他の実施ではより複雑であることができる。例えば、ワーキングメモリ410は、交差に関して受信された特定の形状をテストするためテストロジック420を構成する命令を格納することができ、そして、どのような形状が受信されたかを受信されたデータに基づいて検出することができる。ワーキングメモリ410は、さらに検出されたヒットをキャッシュすることができ、各テストセルは幾何学的形状に対し一連のレイをテストするため構成され、または、逆もまた同様であり、したがって、キャッシュされたヒットはグループとして出力されることができる。ワーキングメモリは記憶装置103bから着信する形状データを受信することもできる。   FIG. 4 illustrates an example of a test cell 310 a that includes a working memory 410 and test logic 420. The working memory 410 can be several registers that contain enough information to test the line segment for intersection with the surface, or it can be more complex in other implementations. For example, the working memory 410 can store instructions that configure the test logic 420 to test a particular shape received for an intersection, and based on the received data what shape was received. Can be detected. The working memory 410 can further cache detected hits, each test cell being configured to test a series of rays against the geometry, or vice versa, and therefore cached. Hits can be output as a group. The working memory can also receive shape data received from the storage device 103b.

テストロジック420は利用可能または選択可能な解像度で交差テストを実行し、交差が検出されたかどうかを示すバイナリ値を返すことができる。バイナリ値は、GAD要素テストのためのメモリ340におけるリードサイクルのようなリードサイクル中のラッチングのための読み出し、キャッシュ化、または、出力のためワーキングメモリの中に格納可能である。   Test logic 420 may perform a cross test with available or selectable resolutions and return a binary value indicating whether a cross was detected. Binary values can be stored in working memory for reading, caching, or output for latching during a read cycle, such as a read cycle in memory 340 for GAD element testing.

図5は、例示的なメモリ編成により詳細に重点を置いて、交差テストユニット500の実施の態様を図示している。ITU500において、テストセル510a〜510nおよび540a〜540nが現れ、本実施例では、310a〜310nおよび540a〜540nと対応する。これは、テストセルの数に関する何らかの要件を意味するものではない。よって、ITU500において、プリミティブとGAD要素の両方が並列にテストされることができる。しかし、1種類または別の種類のそれ以上のテストセルが必要であると決定された場合、どのようなテストセルでも必要に応じて再構成可能である(ハードウェアの場合に再割り当てされ、ソフトウェアの場合に再プログラムされる)。トランジスタ密度が増加し続けると共に、それ以上のこのようなセルをハードウェア実施に(または、ソフトウェアを実行するため利用可能な資源として)収容することができる。記載されるように、テストセルの一部は、共通形状(すなわち、プリミティブまたはGAD要素)に対してレイをテストするので、オペレーショナル・グループとして取り扱うことができる。テストセル540a〜540nは、指定された精度レベル(例えば、16ビット)でプリミティブとの交差を示すバイナリ値を返すことができ、より大きいプリミティブの場合に役立つことができる、レイが交差したプリミティブ上の場所のより正確な指標を返すこともできる。   FIG. 5 illustrates an embodiment of a cross test unit 500 with more emphasis on details with an exemplary memory organization. In the ITU 500, test cells 510a to 510n and 540a to 540n appear, and correspond to 310a to 310n and 540a to 540n in this embodiment. This does not imply any requirement on the number of test cells. Thus, in ITU 500, both primitives and GAD elements can be tested in parallel. However, if it is determined that more test cells of one type or another type are needed, any test cell can be reconfigured as needed (reassigned in the case of hardware, software Will be reprogrammed). As transistor density continues to increase, more such cells can be accommodated in a hardware implementation (or as a resource available to run software). As described, some of the test cells test rays against a common shape (ie, primitive or GAD element) and can be treated as an operational group. Test cells 540a-540n can return a binary value indicating intersection with a primitive at a specified accuracy level (e.g., 16 bits) and can be useful for larger primitives on ray intersected primitives. It is also possible to return a more accurate indicator of the location.

ITU500において、メモリ540は、それぞれが2ポート(特定されたバンク515のポート531および532)を有する複数の独立した演算バンク510〜515を含む。一方のポートはGADテストロジック505を介してアクセスされ、もう一方はプリミティブ・テスト・ロジック530を介してアクセスされる。GADテストロジック505およびプリミティブ・テスト・ロジック530のそれぞれは、それぞれのワーキングバッファ560〜565と570〜575との間でデータのフローを管理し、それぞれにGAD記憶装置103aおよびプリミティブ記憶装置103bからテストのためのGAD要素を取得するため動作する。   In ITU 500, memory 540 includes a plurality of independent computing banks 510-515 each having two ports (ports 531 and 532 of identified bank 515). One port is accessed via GAD test logic 505 and the other is accessed via primitive test logic 530. Each of GAD test logic 505 and primitive test logic 530 manages the flow of data between the respective working buffers 560-565 and 570-575, and tests from GAD storage 103a and primitive storage 103b, respectively. Operates to get the GAD element for.

バンク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要素とプリミティブの両方のためのテスト領域を構成する。   Banks 510-515 are primarily intended to operate to allow non-competing access to ray data by GAD test logic 505 and primitive test logic 530 so that each test cell 510a- 510n and test cells 540a-540n may be provided with rays from separate banks 510-515. Such non-contention access is to be understood from these disclosures, but can be implemented, for example, by separate cache banks, and similarly, the cross bar architecture is a different physical part of the memory by port. Enable access to. If testing of a ray stored in a bank with one or more test cells is allowed, a conflict occurs when two rays to be tested are in the same bank, in such a case, Access can be handled sequentially by test logic 505 and 530. In some cases, working buffers 560-565 and 570-575 are loaded for subsequent processing while other processing is complete. The ITU 500 can be further organized into regions. For example, since region 578 includes GAD tester 510a and memory bank 510, it constitutes a test region for GAD elements, and region 579 includes testers 510a and 540a (one for each of GAD and primitive), and Access to the memory bank 510 that stores the ray data to be used in tests related to the test cells in regions 578 and 579, thus forming a test region for both GAD elements and primitives.

一貫性のある配置でレイをテストすることにより、どのレイがどのテストセルに割り当てられているかの追跡を軽減することが可能である。例えば、各コレクションは、32レイを有することができ、32のテストセル310a〜310n(510a〜510n)が存在することができる。例えば、コレクションの中の4番目のレイをテストセル310dへ一貫して提供することにより、テストセル310dは、提供されたレイに関する情報を維持する必要はなく、交差の指標を返すことだけが必要である。明らかなように、テストセルの間にレイ識別子のパケットを伝え、テストセルが交差結果をパケットに書き込むことを可能にすることを含む、一貫性を維持する他の実施が提供できる。   By testing rays in a consistent arrangement, it is possible to reduce tracking of which rays are assigned to which test cells. For example, each collection can have 32 rays and there can be 32 test cells 310a-310n (510a-510n). For example, by consistently providing the fourth ray in the collection to test cell 310d, test cell 310d need not maintain information about the provided ray, but only need to return an intersection indicator. It is. As will be apparent, other implementations can be provided that maintain consistency, including passing a ray identifier packet between test cells and allowing the test cell to write the intersection result into the packet.

レイコレクションの格納は、所定のレイコレクションがレイ・コレクション・バッファ203bまたは520のn箇所のうちの1つに格納されることができるように、レイコレクションのためのnウェイ・インターリーブ・キャッシュとして実施されることができる。レイ・コレクション・バッファ203bまたは520は、したがって、バッファのn箇所のそれぞれに格納されたレイコレクションのリストを維持することができる。レイ・コレクション・バッファ203bまたは520の実施は、レイコレクションと関連付けられたGADの要素の識別用特性を使用することを含むことができ、例えば、シーンをレンダリングする際にしようされるGADの要素の間で一意である識別子文字列が使用できる。英数文字列は、数字、ハッシュなどでもよい。例えば、ハッシュは、レイ・コレクション・バッファ203bおよび520のn箇所のうちの1つを参照可能である。   Ray collection storage is implemented as an n-way interleaved cache for ray collection so that a given ray collection can be stored in one of n locations of ray collection buffer 203b or 520. Can be done. The ray collection buffer 203b or 520 can thus maintain a list of ray collections stored in each of the n locations of the buffer. Implementation of the ray collection buffer 203b or 520 can include using the identifying characteristics of the GAD element associated with the ray collection, for example, the GAD element used in rendering the scene. A unique identifier string can be used. The alphanumeric character string may be a number, hash, or the like. For example, the hash can reference one of the n locations of the ray collection buffers 203b and 520.

他の実施では、GADの要素は、レイ・コレクション・バッファ203bおよび520の所定の箇所への格納を予定されることができ、例えば、使用される英数文字列のセグメントをこのようなバッファの(複数の)箇所へマッピングする。プリミティブ/レイ交差出力580は、潜在的なプリミティブ/レイ交差を特定する出力を表現し、出力580は直列または並列であることが可能である。例えば、32のプリミティブ・テスト・セル540a〜540nが存在する場合、出力580は、直前にテストされたプリミティブに対する各レイの交差の有無を指定する32ビットを含むことが可能である。当然ながら、出力は、例えば、パケット実施のような他の実施の場合のテストセルから直接的に来ることがある。出力は直列であることが可能であり、テストセルによってパケットの中に直列に格納されることが可能である。   In other implementations, elements of the GAD can be scheduled for storage in predetermined locations in the ray collection buffers 203b and 520, for example, the segments of alphanumeric strings used can be stored in such buffers. Map to the location (s). Primitive / ray intersection output 580 represents an output that identifies a potential primitive / ray intersection, and output 580 can be serial or parallel. For example, if there are 32 primitive test cells 540a-540n, the output 580 may include 32 bits that specify the presence or absence of each ray intersection for the last tested primitive. Of course, the output may come directly from the test cell in other implementations, eg, packet implementation. The outputs can be serial and can be stored serially in the packet by the test cell.

レイデータは、シェーダのような光線源からメモリ340(520)に受け取られる。コレクション・マネージメント・ロジック(例えば、図2および3の203a)は、各コレクションがGADの要素と関連付けられている場合、レイをコレクションに初期的に割り当てるため動作する。例えば、GADの要素は、グラフのルートノードであることができ、受け取られたすべてのレイは、ルートノードと関連付けられた1若しくはそれ以上のコレクションに初期的に割り当てられる。レイの受け取りは、例えば、入力キューから完全なコレクションになるサイズにされたグループで行われることもでき、各コレクションは、例えば、レイ・コレクション・バッファ203bの中で特定されたコレクションのように取り扱われることが可能である。   Ray data is received into memory 340 (520) from a light source such as a shader. Collection management logic (eg, 203a in FIGS. 2 and 3) operates to initially assign a ray to a collection when each collection is associated with a GAD element. For example, a GAD element can be the root node of a graph, and all received rays are initially assigned to one or more collections associated with the root node. The receipt of a ray can also be done, for example, in a group sized to be a complete collection from the input queue, with each collection treated as a collection identified in the ray collection buffer 203b, for example. Is possible.

ある程度の数のコレクションが並列にテストされることができるという理解の下で、1コレクションの処理に重点を置くと、テストノードと関連付けられたコレクションのレイをメモリ340から取り出すことは、例えば、コレクションの中にデータとして格納された、メモリ340からの、または、図5の実施例によって、テストセル(例えば、テストセル560〜565)による受信のため複数の出力ポート上にレイデータを提供するバンク510〜515からの、このようなレイの取り出しを可能にするこのようなレイのアドレス(レイ識別子)の提供によってコレクション・マネージメント・ロジック203aによって開始される。   With the understanding that a certain number of collections can be tested in parallel, with an emphasis on processing one collection, retrieving the collection ray associated with the test node from memory 340 can be, for example, a collection A bank that provides ray data on a plurality of output ports for reception by a test cell (eg, test cells 560-565) from memory 340, or as stored in FIG. 5, in accordance with the embodiment of FIG. Initiated by collection management logic 203a by providing such ray addresses (ray identifiers) from 510-515 that allow such ray retrieval.

テストのため選択されたノードによって境界を定められたGAD要素のテストに関して(すなわち、選択されたノードと関連付けられたGAD要素が他のGAD要素の境界を定める)、テスト中のコレクションのレイに関するレイデータの分散が終了し、境界を定められたGAD要素のフェッチもまた実行される(このようなフェッチは必ずしもレイ分散の次に行われなくてもよい)。このようなフェッチのため、ロジック203aはアドレス指定情報をGAD記憶装置103bへ入力可能であり(または、どのようなメモリマネージメント手段が設けられているかとは無関係であり)、GAD記憶装置は、アドレス指定された(複数の)GAD要素をテストセル310a〜310nへ出力する。通常のとおり多数のGAD要素の境界が定められる場合、要素は、多数のGAD要素のブロック読み出しを可能にするように、例えば、シリアル化バッファを用いて、テストセルへ直列ストリーム化されるように配置される。   For testing a GAD element bounded by a selected node for testing (ie, the GAD element associated with the selected node bounds another GAD element), the ray for the ray of the collection under test The data distribution ends and a bounded GAD element fetch is also performed (such a fetch does not necessarily have to be done next to the ray distribution). Because of such fetching, the logic 203a can input addressing information to the GAD storage device 103b (or regardless of what memory management means is provided), and the GAD storage device The designated GAD element (s) is output to the test cells 310a to 310n. If multiple GAD elements are delimited as usual, the elements are streamed serially to the test cell, eg, using a serialization buffer, to allow block reading of multiple GAD elements. Be placed.

テストセル(たとえば、310a〜310n)において、コレクションのレイは、直列に提供されたGAD要素との交差に関してテストすることが可能である(例えば、各テストセルにおいて異なるレイ)。レイが交差すると決定された場合、交差したGAD要素に関するコレクションが存在するかどうかが決定され、存在するならば、レイが余地を許すそのコレクションに追加され、存在しないならば、コレクションが作成され、レイが追加される。既存のコレクションに余地がない場合、新しいコレクションが作成される。   In test cells (eg, 310a-310n), collection rays can be tested for intersection with GAD elements provided in series (eg, different rays in each test cell). If a ray is determined to intersect, it is determined whether a collection exists for the intersected GAD elements, and if so, the ray is added to that collection that allows room, otherwise a collection is created, Ray is added. If there is no room in the existing collection, a new collection is created.

いくつかの実施では、コレクションのすべてのレイが所定のGAD要素に対し並列にテストできるように、コレクションの中のレイの最大数対テストセル310a〜310nの数の1:1の対応関係が与えられ、この実施は、スループットが概ねレイ対テストセルの1:1の対応関係を用いて取得できる程度であるアーキテクチャを含むことが可能であるが、しかし、所定のコレクションのうちのレイ全体が並列にテスト可能であると見なされるとしても、異なるテストセルが異なるパケットからのレイをテストできるように、異なるテストセルの間でパケット(例えば、上述されているようにコレクションを表す情報)の逐次的な受け渡しを行うことが可能である。   In some implementations, there is a 1: 1 correspondence between the maximum number of rays in the collection versus the number of test cells 310a-310n so that all rays in the collection can be tested in parallel against a given GAD element. This implementation can include an architecture where the throughput is such that it can be obtained using a 1: 1 ray-to-test cell correspondence, but the entire ray of a given collection is parallel. Sequential transmission of packets (e.g., information representing a collection as described above) between different test cells so that different test cells can test rays from different packets even though they are considered testable Can be delivered.

その後、レイは、テストセルに提供されたプリミティブとの交差に関してテストされ(すなわち、本実施例では、各テストセルは異なるレイを有し、そのレイと共通プリミティブとをテストする)。テスト後、各テストセルは検出された交差を知らせる。   The rays are then tested for intersection with the primitive provided to the test cell (ie, in this example, each test cell has a different ray and tests that ray and the common primitive). After the test, each test cell informs the detected intersection.

コレクションのうちの各レイは、テストセルに提供されたGAD要素との交差に関してそのテストセルでテストされる(例えば、図5の複数のバックの実施例(図示されている領域578および579)では、レイは、例えば、バンクが各種の1若しくはそれ以上のテスタにレイデータを提供するように、GAD要素テスト領域および/またはプリミティブテスト領域にローカライズされていると見なされる)。   Each ray in the collection is tested in that test cell for intersection with the GAD element provided to the test cell (eg, in the multiple back embodiments of FIG. 5 (regions 578 and 579 shown)). Rays are considered localized to the GAD element test area and / or the primitive test area, for example, so that the bank provides ray data to various one or more testers).

GAD要素との交差に関するレイのテストからの出力はプリミティブ交差に関して同じレイをテストする場合と異なるので(すなわち、GAD要素との交差はそのGAD要素のためのコレクションの中への収集を生じるが、プリミティブとの交差はそのプリミティブとの最近接交差の決定と、このような交差の出力とを生じるので)、特定のレイが偶然に並行してテストされている2つのコレクションの中に存在するとしても、コレクションデータまたは出力された交差についてのライトバックへの競合が通常は起こるべきではない。さらなる並列化が、例えば、テストセル340a〜340nの複数のインスタンス化においてプリミティブ交差に関してレイの複数のコレクションをテストすることにより実施されるならば、複数の交差の格納のようなこのようなテストの順序正しい終了を強制する、ビットをロックするなどのように特徴が実施されることもできる。そして、図5の実施例では、所定のレイのためのデータが唯一のバンクから1つのテスタタイプに提供可能である場合(すなわち、所定のレイが1つのメモリバンクに位置している場合)、複数のGADテスタは、例えば、同時に同じレイをテストすることがないので、ライトバック競合の問題を回避する。   Because the output from testing a ray for an intersection with a GAD element is different from testing the same ray for a primitive intersection (ie, an intersection with a GAD element results in a collection into the collection for that GAD element, Since an intersection with a primitive results in the determination of the closest intersection with that primitive and the output of such an intersection), it is assumed that a particular ray exists in two collections that are accidentally tested in parallel However, contention to writeback for collection data or output intersections should not normally occur. If further parallelization is performed, for example, by testing multiple collections of rays for primitive intersections in multiple instantiations of test cells 340a-340n, such tests such as storage of multiple intersections. Features can also be implemented, such as forcing an orderly end, locking bits, etc. And in the embodiment of FIG. 5, if data for a given ray can be provided from a single bank to one tester type (ie, if a given ray is located in one memory bank), Multiple GAD testers avoid the problem of write-back contention, for example, because they do not test the same ray at the same time.

要約すると、方法は、レイを受信する工程と、レイをコレクションに割り当てる工程と、準備状況がアルゴリズム的に決定可能である場合にテストの準備ができているコレクションを選択する工程と、選択されたコレクションの中のレイを適切なテストセルに割り当てる工程と、交差テストのため適切なジオメトリをテストセルの中でストリーム化する工程とを含む。出力は、ジオメトリがシーンプリミティブであるか、または、GAD要素であるかに依存する。GAD要素に対してテストされたレイの場合、GAD要素はテスト中のコレクションと関連付けられたノードとのグラフ接続に基づいて特定され、レイはテスト中のGAD要素と関連付けられたコレクションに追加される。コレクションは準備状況に関して見直され、テストの準備ができたとき選択される。プリミティブとのレイ交差に関して、最近接交差がレイを用いて追跡される。レイは準備完了コレクションと関連付けられたときにテストされるので、暗黙のうちに、特定のレイのための交差テストは、特定のレイが関連付けられたコレクションがテストの準備ができていると決定されるまで延期される。レイは、このようなレイがシーンジオメトリの異なる部分に対しテストされることを可能にする複数のコレクションへ同時に収集可能である(すなわち、レイはトラバースの順序にテストされなくてもよい)。   In summary, the method comprises: receiving a ray; assigning a ray to the collection; selecting a collection that is ready for testing if the readiness is algorithmically determinable; Assigning the rays in the collection to the appropriate test cell and streaming the appropriate geometry in the test cell for intersection testing. The output depends on whether the geometry is a scene primitive or a GAD element. For a ray tested against a GAD element, the GAD element is identified based on the graph connection between the collection under test and the associated node, and the ray is added to the collection associated with the GAD element under test. . The collection is reviewed for readiness and selected when ready for testing. For ray intersections with primitives, the closest intersection is tracked using rays. Since a ray is tested when associated with a ready collection, an implicit cross test for a particular ray is determined that the collection with which the particular ray is associated is ready for testing. Postponed until Rays can be collected simultaneously into multiple collections that allow such rays to be tested against different parts of the scene geometry (ie, the rays may not be tested in traversal order).

上述されているように、ITUは、レイ入力から前に受信されたレイを表す情報をメモリに格納する。ITUは、これらのレイに対し、各レイと複数のコレクションのうちの1若しくはそれ以上のレイコレクションとの関連性を維持する。ITUは、メモリに格納された複数のコレクションに関するコレクションフルネスの指標をさらに維持する。これらの指標は、フルコレクションを指定するそれぞれのフラグであること、または、所定のコレクションと関連付けられたある程度の数のレイを表現する数字であることができる。実施のさらなる詳細および他の実施例と、テストアルゴリズムの実施に関係した変形とは、前述の参照された関連出願に記載され、ここで文字通りに提示されている情報がそれらの排他的な取り扱いでないことを明らかにしている。   As described above, the ITU stores in memory information representative of rays previously received from ray inputs. For these rays, the ITU maintains the association of each ray with one or more of the multiple collections. The ITU further maintains a collection fullness measure for multiple collections stored in memory. These indicators can be each flag designating a full collection or a number representing a certain number of rays associated with a given collection. Further details of implementation and other examples and variations related to the implementation of the test algorithm are described in the above referenced referenced related applications, where the information presented literally is not their exclusive treatment It is made clear.

ここまでの開示内容から明らかであるように、レイは、レイのコレクションの中に設けられた情報に基づいてメモリからロード(またはメモリの中でアクセス)される。したがって、このようなローディングは、各レイを表すデータが格納されるそれぞれのメモリロケーションを決定することを含むことができる。このようなデータはそのレイコレクションの中に含まれることができ、たとえば、レイコレクションは、それらのレイのためのレイデータがそのコレクションの中で格納されているメモリロケーション、または、格納場所への他の参照情報のリストを含むことができる。例えば、レイコレクションは、メモリ、例えば、メモリ340、または、メモリのバンク(例えば、バンク510)におけるロケーションへの参照情報を含むことができ、または、他の実施では、これらの参照情報は、絶対値、ベースからのオフセット、または、このようなデータを参照するための別の適当な方式であることができる。しかし、いくつかの実施では、レイ・コレクション・データおよびレイデータが、例えば、内容連想データベースとして維持されることが可能であるので。その分離は、それほど明示的または明白であることは必要でなく、コレクションとレイとの間の関連性、および、コレクションとGADの要素との間の関連性が維持され、テストのためコレクションと関連付けられたレイ、および、同様にコレクションと関連付けられたGADの要素を特定するため使用される。   As is apparent from the disclosure so far, a ray is loaded (or accessed in memory) from memory based on information provided in the collection of rays. Thus, such loading can include determining a respective memory location where data representing each ray is stored. Such data can be included in the ray collection, for example, ray collection can be a memory location where ray data for those rays is stored in the collection, or to a storage location. A list of other reference information can be included. For example, ray collection can include reference information to locations in memory, eg, memory 340, or banks of memory (eg, bank 510), or in other implementations these reference information can be absolute It can be a value, an offset from the base, or another suitable way to reference such data. However, in some implementations, ray collection data and ray data can be maintained, for example, as a content association database. The separation need not be so explicit or obvious, the relationship between the collection and the ray, and the relationship between the collection and the elements of the GAD are maintained and associated with the collection for testing Used to identify the ray and the GAD elements that are also associated with the collection.

同様に、プリミティブまたはGAD要素のいずれかがテストサイクルの中を循環させられているので、レイデータがテストセルの中で「静止」しているということは明白である。関連出願に記載されているように、他の実施が可能であるが、これらの開示内容の主な焦点は、ローカライズされるか、または、そうでなければ、セルに関して静止するようにレイを準備し、その間に、ジオメトリがフェッチされテストされることである。   Similarly, it is clear that ray data is “quiesced” within a test cell because either primitives or GAD elements are cycled through the test cycle. Other implementations are possible, as described in the related application, but the main focus of these disclosures is localized or otherwise prepare the ray to be stationary with respect to the cell In the meantime, the geometry is fetched and tested.

このような実施の態様は図6に関連して提案される。特に、交差テストロジックの別の実施は、メモリインターフェイス625に連結するフェッチユニット620を含む(図2のテストロジック203に類似した)テスト制御ロジック603と、命令キャッシュ630と、命令デコーダ645と、データキャッシュ650とを含むプロセッサ605を含むことが可能である。データキャッシュ650はテストセル610a〜610nにデータを入力する。命令デコーダ645は、入力をテストセル610a〜610nへさらに提供する。命令ジェネレータ665は、命令入力を命令デコーダ645へ提供する。テストセルは検出された交差の指標をライトバックユニット660へ出力し、ライトバックユニットは次にデータをデータキャッシュ650に格納可能である。ライトバックユニット66からの出力は、命令を生成するとき命令ジェネレータ665への入力としても使用される。このようなプロセッサ605で使用される命令は単一データ複数命令の系統でもよく、テストセルの中で処理される命令が定義された面(たとえば、プリミティブおよびGAD要素)とレイとの間の交差テストであると考えられる。   Such an embodiment is proposed in connection with FIG. In particular, another implementation of the cross test logic includes a fetch control unit 620 (similar to the test logic 203 of FIG. 2), an instruction cache 630, an instruction decoder 645, and data, coupled to a memory interface 625. A processor 605 including a cache 650 may be included. The data cache 650 inputs data to the test cells 610a to 610n. Instruction decoder 645 further provides inputs to test cells 610a-610n. Instruction generator 665 provides instruction input to instruction decoder 645. The test cell outputs an indication of the detected intersection to the write-back unit 660, which can then store the data in the data cache 650. The output from write back unit 66 is also used as an input to instruction generator 665 when generating instructions. The instructions used in such a processor 605 may be a single data, multi-instruction series, where the intersection between the plane (eg, primitives and GAD elements) on which the instructions to be processed in the test cell are defined and the ray. Considered a test.

実施例では、「命令」は、プリミティブ、または、GADの要素のような幾何学的形状を定義するデータを含むことができ、複数のデータ要素は、「命令」として提供された幾何学的形状に対するテストを行う別個のレイの参照情報を含むことができる。したがって、幾何学的形状と複数のレイ参照情報との組み合わせは、複数の図示されたテストセルに分散可能である別々の情報のパケットであると考えられる。いくつかの場合に、パケット分散は順次に進行することが可能であり、その結果、複数のパケットが複数のテストセルの間で「衝突」する。   In an embodiment, an “instruction” may include data defining a geometric shape, such as a primitive or GAD element, and a plurality of data elements may be provided with a geometric shape provided as an “instruction”. Reference information for a separate ray to test against can be included. Thus, the combination of geometry and multiple ray reference information is considered to be a packet of separate information that can be distributed across multiple illustrated test cells. In some cases, packet distribution can proceed sequentially, so that multiple packets “collide” between multiple test cells.

このようなテストセルは、大規模命令セットをもつフル機能プロセッサとの関連で存在することが可能であり、各パケットは、その場合、パケットの目的を識別するために十分な他の情報を含むことができる。例えば、交差テストのため作成されたパケットを他の演算が実行されるための他の目的のため存在するパケットと区別するためにある程度の数のビットが含まれることが可能である。同様に、種々の交差テスト命令が、異なるプリミティブ形状および異なるGAD要素形状と、さらに、必要に応じて、異なるテストアルゴリズムとを含む目的のため、提供されることができる。   Such a test cell can exist in the context of a full-function processor with a large instruction set, and each packet then contains sufficient other information to identify the purpose of the packet be able to. For example, a certain number of bits may be included to distinguish a packet created for cross-testing from a packet that exists for other purposes for other operations to be performed. Similarly, various cross test instructions can be provided for purposes including different primitive shapes and different GAD element shapes, and, optionally, different test algorithms.

典型的な実施例では、各交差テストパケットは、最初に、GADの要素またはプリミティブへの参照情報のいずれかであるジオメトリ要素への参照情報またはジオメトリ要素のためのデータと、ジオメトリ要素との交差に関してテストされるある程度の数のレイへの参照情報(すなわち、前述の「パケット」)とを収容することが可能である。   In an exemplary embodiment, each intersection test packet first intersects a geometry element with reference information to the geometry element or data for the geometry element, which is either reference information to a GAD element or primitive. It is possible to accommodate reference information (ie, the aforementioned “packets”) to a certain number of rays to be tested for.

デコーダ645は、ジオメトリ要素への参照情報を決定するため命令を解釈し、フェッチ620(メモリインターフェイス625のようなメモリインターフェイスのための制御)を介して要素のフェッチを開始できる。いくつかの実施では、デコーダ645は、将来に必要とされるジオメトリ要素のフェッチを開始するためにある程度の数の命令に備えることができる。ジオメトリ要素はフェッチ620によってデコーダ645へ提供でき、デコーダ645はジオメトリ要素をテストセル610a〜610nへ提供する。   Decoder 645 can interpret the instruction to determine reference information to the geometry element and initiate fetching of the element via fetch 620 (control for a memory interface such as memory interface 625). In some implementations, the decoder 645 can provide for a certain number of instructions to begin fetching the geometry elements needed in the future. Geometry elements can be provided to decoder 645 by fetch 620, which provides the geometry elements to test cells 610a-610n.

デコーダ645は、関数アドレスとして命令からのレイ参照情報をデータキャッシュ650へさらに提供し、データキャッシュは、各レイの交差テストのため十分なそれぞれのデータをテストセル610a〜610nのそれぞれに提供する。交差テストのため必要とされないレイと関連付けられたデータは提供される必要がない。したがって、データキャッシュ650は、交差セルテストとして動作する1若しくはそれ以上のコンピューティング資源のためのローカライズされたレイデータ記憶設備としての役割を果たすことができる。   The decoder 645 further provides ray reference information from the instruction as a function address to the data cache 650, which provides each of the test cells 610a-610n with sufficient respective data for each ray cross test. Data associated with rays that are not needed for cross testing need not be provided. Thus, the data cache 650 can serve as a localized ray data storage facility for one or more computing resources that operate as a cross-cell test.

ジオメトリ要素は、各テストセル610a〜610nにおいてそれぞれのレイとの交差に関してテストされ、交差の指標がライトバック660による受信のため各テストセル610a〜610nから出力される。テストされるジオメトリ要素の性質に依存して、ライトバック660は、2つの異なる機能のうちの一方を実行する。テストセル610a〜610nが交差に関してプリミティブをテストしている場合、ライトバック660はテストされているプリミティブと交差した各レイの指標を出力する。テストセル610a〜610nがGADの要素をテストしている場合、ライトバックはテストセル610a〜610nの出力を命令ユニット665へ提供する。   The geometry elements are tested for intersection with their respective rays in each test cell 610a-610n, and an indication of the intersection is output from each test cell 610a-610n for reception by writeback 660. Depending on the nature of the geometric element being tested, write back 660 performs one of two different functions. If test cells 610a-610n are testing a primitive for intersection, writeback 660 outputs an indication of each ray that intersected the primitive being tested. Writeback provides the output of test cells 610a-610n to instruction unit 665 when test cells 610a-610n are testing elements of GAD.

命令ユニット665は、さらなる交差テスト中にテストセルに指令することになる将来の命令を組み立てるため動作する。命令ユニット665は、以下の通り、GADの所定の要素と交差したレイを指定するテストセル610a〜610nの入力と、命令キャッシュ630と、GAD入力670からの入力を使って動作する。テストセル610a〜610nからの入力を使って、命令ユニット665は、GAD入力に基づいて、テストセル610a〜610nからの入力の中で指定されたGADの要素に接続されたGADの要素を決定する(すなわち、命令ユニット665は、所定のGAD要素に対して指示された交差に基づいて次にテストされるべき要素を決定する)。   The instruction unit 665 operates to assemble future instructions that will be commanded to the test cell during further cross-tests. The instruction unit 665 operates using the inputs from the test cells 610a-610n that specify a ray crossing a predetermined element of the GAD, the instruction cache 630, and the input from the GAD input 670 as follows. Using the inputs from test cells 610a-610n, instruction unit 665 determines GAD elements connected to the specified GAD elements among the inputs from test cells 610a-610n based on the GAD inputs. (Ie, the instruction unit 665 determines the next element to be tested based on the indicated intersection for a given GAD element).

命令ユニット665は、命令キャッシュ630に格納された命令が交差した要素に接続しているとして特定されたGADの要素毎に既に存在するかどうかと、命令がさらなるレイ参照情報を許容するかどうか(すなわち、命令のすべてのデータスロットが満たされているか?)と、を決定する。命令ユニット665は、テストセル入力の中で交差しているとして特定されたレイと同数をその命令に加え、残りのレイ参照情報を受信するため十分な他の命令を作成する。命令ユニット665は、テストセル入力の中で特定された要素と接続しているとして特定されたGADの要素毎にこれを実行する。このように、テストセル入力(交差指標)を処理した後、同じGAD要素と交差しているとして特定されたレイはそれぞれがその同じGAD要素に接続されたGADの要素に対するレイのテストを指定する命令に加えられる。このようにして作成された命令は命令キャッシュ630に格納されることができる。   Instruction unit 665 determines whether an instruction stored in instruction cache 630 already exists for each element of the GAD identified as connected to the crossed element and whether the instruction allows further ray reference information ( That is, are all data slots of the instruction filled?). Instruction unit 665 adds the same number of rays identified as intersecting in the test cell input to the instruction and creates enough other instructions to receive the remaining ray reference information. The instruction unit 665 does this for each element of the GAD identified as being connected to the element identified in the test cell input. Thus, after processing test cell inputs (intersection indicators), rays identified as intersecting the same GAD element each specify a ray test for the GAD element connected to that same GAD element. Added to the order. The instruction thus created can be stored in the instruction cache 630.

命令は、GAD入力670から受信されたGADの要素の編成に基づいて命令キャッシュ630の中に編成されることができる。命令ユニット665は、ロジック203aおよび命令ユニット665の両方がどのレイがどの要素にヒットしたかの指標を受信し、このようなレイを将来のテストのためグルーピングするので、ロジック203aと類似した機能を実行する。図6のシステムは、テストされるレイのパケットが異なる機能を達成する複数のタイプのうちのある種のパケットであることが可能であるので、より汎用的であることが意図されている。   Instructions can be organized in instruction cache 630 based on the organization of elements of GAD received from GAD input 670. Instruction unit 665 receives an indication of which ray hits which element, both of logic 203a and instruction unit 665, and groups such rays for future testing, thus providing a function similar to logic 203a. Run. The system of FIG. 6 is intended to be more versatile because the ray packets to be tested can be some type of packet that accomplishes different functions.

例えば、GAD入力670はGADのグラフを提供することができ、グラフのノードはGADの要素を表現し、ノードのペアはエッジによって接続されている。エッジは、どのノードが他のどのノードに接続されているかを特定し、命令ユニット665は、GADの所定の要素のためキャッシュの中に既に存在する命令と、新しいレイが追加される場所とを特定するために、ノードを接続するエッジを辿ることにより命令キャッシュ630を探索する。複数の命令が所定のGAD要素に対し存在する場合、複数の命令はリストの中でリンクされるか、または、そうでなければ、順序付けられるか、若しくは、互いに関連付けられることができる。関連した命令が見出されることがある命令キャッシュ630の中の潜在的なロケーションを特定するためのGAD要素IDのハッシングのようなその他の方法が同様に実施できる。   For example, the GAD input 670 can provide a GAD graph, where the nodes of the graph represent elements of the GAD, and pairs of nodes are connected by edges. The edge identifies which nodes are connected to which other nodes, and the instruction unit 665 determines which instructions are already in the cache for a given element of the GAD and where new rays are added. To identify, the instruction cache 630 is searched by following the edges connecting the nodes. If multiple instructions exist for a given GAD element, the multiple instructions can be linked in a list or otherwise ordered or associated with each other. Other methods such as hashing of GAD element IDs to identify potential locations in the instruction cache 630 where related instructions may be found can be implemented as well.

命令は、(接続された各ノードのための命令を格納するのに反して)発行され復号化された命令に応答して、命令がGADの接続されたノードのフェッチを引き起こすように、テスト中のGADのノードをさらに参照できる。このような接続された要素のそれぞれは、各テストセルの中に維持されているそれぞれのレイとのテストのためテストセル610a〜610nの中へストリーム可能である(すなわち、レイデータは、複数のGAD要素がそれぞれのテストセルに提供され、各テストセルがそのレイを各GAD要素と順々にテストする間、テストセルの中で静止し続ける)。   The instruction is being tested so that in response to an issued and decoded instruction (as opposed to storing an instruction for each connected node), the instruction causes a fetch of the GAD connected node. Further reference can be made to the GAD nodes. Each such connected element can be streamed into test cells 610a-610n for testing with a respective ray maintained in each test cell (i.e. GAD elements are provided to each test cell, and each test cell remains stationary in the test cell as it tests each ray in turn with each GAD element).

よって、これらの実施例にしたがって実施されたプロセッサは、接続されたノードに対する交差テストのための第1のノードとの交差に関して特定されたレイを収集する命令を取得するか、そうでなければ作成するために機能を提供することになる。上述された実施例と同様に、プロセッサ605に提供されたGADが階層的である場合、GADのグラフは階層的な順序でトラバースされることがある。   Thus, a processor implemented in accordance with these embodiments obtains or otherwise creates an instruction to collect the specified ray for intersection with the first node for intersection testing for connected nodes. Will provide functionality to do. Similar to the embodiments described above, if the GAD provided to the processor 605 is hierarchical, the GAD graph may be traversed in a hierarchical order.

GADの例示的な接続および供給源は典型的であり、他の配置も考えられる。例えば、メモリ615は、GAD要素の供給源であるかもしれないが、好ましくは、所定の処理アーキテクチャが許可する場合、ジオメトリデータではなく、レイ(すなわち、レイを定義するデータ、および、見出された現在の最近傍プリミティブ交差のような他のデータ)を高速メモリに格納し続ける。同様に、上記実施例では、テスト結果に基づいてテストされるべき次のノード(すなわち、次のアクセラレイション要素、またはプリミティブ)が決定され、パケットが幾何学的形状毎にそれぞれにインスタンス化された。上記開示内容から明らかである他の実施は、所定のノードの子のテストを開始することを決定し次第に、「子」ノード毎にパケットをインスタンス化することを含むことができ、後の時点で子命令/コレクションを作成する。   Exemplary connections and sources of GAD are typical, and other arrangements are possible. For example, the memory 615 may be the source of GAD elements, but preferably, if the given processing architecture permits, it is not the geometry data, but the ray (ie, the data defining the ray and found). Other data such as the current nearest neighbor intersection) continue to be stored in high speed memory. Similarly, in the above example, the next node to be tested (ie, the next acceleration element or primitive) is determined based on the test results, and the packet is instantiated for each geometry. . Other implementations that are apparent from the above disclosure can include instantiating a packet for each “child” node as soon as it decides to start testing a child of a given node, at a later point in time. Create child instructions / collections.

図7は、交差テストと、カメラレイといった新しいレイの生成を含むレイシェーディングとの動作を分離するためキューを使用できるレイトレーシング・システム(例えば、システム700)の態様をさらに図示する。システム700は、交差テストのためのレイのサブミッションと、交差テストの完了とを可能にさせ、図1〜6のシステムと同様に、異なる順序でシェーディングのための出力を生じる。同様に、交差テスト資源は、前に特定された交差のシェーディング解決のため停滞することなく、レイの交差テストを進めることが可能である。   FIG. 7 further illustrates aspects of a ray tracing system (eg, system 700) that can use cues to separate the operation of intersection testing and ray shading that includes the generation of new rays such as camera rays. System 700 allows for ray submission for intersection testing and completion of intersection testing, and produces outputs for shading in a different order, similar to the systems of FIGS. Similarly, the intersection test resource can proceed with ray intersection tests without stagnation due to the previously identified intersection shading resolution.

図7は、交差に関してテストされるべきレイを定義するデータを交差テスト資源に格納するレイデータ記憶装置766a〜766nにそれぞれが連結された複数の交差テスト資源(ITR)705a〜705nを図示する。ITRの各グループおよびレイデータ記憶装置(例えば、レイデータ766およびITR705a)は、テスト資源およびレイデータ記憶装置のローカライズされたグルーピング、例えば、前のグルーピング、例えば、図5のグルーピング578および579に類似している図示されたグルーピング704と見なすことができる。   FIG. 7 illustrates a plurality of intersection test resources (ITR) 705a-705n each coupled to ray data stores 766a-766n that store data defining the rays to be tested for intersections in the intersection test resource. Each group of ITRs and ray data stores (eg, ray data 766 and ITR 705a) are similar to localized groupings of test resources and ray data stores, eg, previous groupings, eg, groupings 578 and 579 of FIG. The illustrated grouping 704 can be considered.

レイデータ記憶装置766a〜766nは、プライベートL1キャッシュ、L2の共有部分またはマップ部分などのようなメモリであることが可能である。上述の実施例では、高速メモリを幾何学的データではなく、特定の処理資源にローカルであるレイデータの格納に当てるのが好ましい。レイデータのローカライズされた格納は、ここで使用される交差テストアルゴリズムによって簡単化され、レイがローカライズされた高速メモリに格納されることが可能である期間を増大させ、この小規模メモリのスラッシングの量を削減する。したがって、このレイ格納は、所定のレイのためのデータがシーンの中の交差テストを完了するまで通常は同じローカルメモリに格納されるので、準静的であると見なすことができる。   The ray data storage devices 766a-766n can be memory such as a private L1 cache, a shared or mapped portion of L2, and so on. In the embodiment described above, the high speed memory is preferably dedicated to storing ray data that is local to a particular processing resource rather than geometric data. Localized storage of ray data is simplified by the cross-test algorithm used here, increasing the time period during which rays can be stored in localized high-speed memory, and this small memory thrashing. Reduce the amount. Thus, this ray storage can be considered quasi-static because the data for a given ray is usually stored in the same local memory until it completes the intersection test in the scene.

レイを定義するデータは、(上述の図におけるロジック203bなどに類似した)テスト制御703から出力743を介してロードされる。テスト制御703は、レイ終了キュー730を介して、ITR70a〜705nにおいて交差テストを終了したレイの識別子を含む入力を受信する。   Data defining a ray is loaded via output 743 from test control 703 (similar to logic 203b, etc. in the above diagram). The test control 703 receives input including the identifier of the ray that has completed the cross test in the ITRs 70a to 705n via the ray end queue 730.

キュー730はレイ識別子を格納する(いくつかの例示的なレイID1、18、10および480が図示されている)。キュー730は、ITR705a〜705nから、交差した最近傍交差を特定するためにテストされ、シーン内のテストを終了するレイを表現する入力を取得する。したがって、キュー730は、ITR705a〜705nからの所定の出力がGAD要素の情報、または、最近傍と思われるプリミティブ交差(ITR705a〜705nが両方のタイプの形状をテスト可能である場合に役立つ)を表現するかどうかを決定可能である決定ポイント751からデータ入力されることが可能である。   Queue 730 stores ray identifiers (some exemplary ray IDs 1, 18, 10 and 480 are shown). Queue 730 obtains inputs from ITRs 705a-705n that are tested to identify the closest intersection that intersected and represent a ray that ends the test in the scene. Thus, the queue 730 represents GAD element information, or a primitive intersection that appears to be the nearest neighbor (helpful if the ITRs 705a-705n can test both types of shapes) from the ITRs 705a-705n. Data can be entered from decision point 751, which can determine whether to do.

決定ポイント751は、したがって、上述された2種類の交差制御機能を表現する。一方の交差制御機能では、GAD/レイ交差が交差テスタの近くで維持/管理され、もう一方では、最近傍の検出されたプリミティブ/レイ交差だけがシェーディングのため出力される。いくつかの上述のアーキテクチャにおいて、別個のテストセルがそれぞれに使用される場合、決定ポイントは、最近傍と思われるプリミティブ交差が見出されたときだけを追跡することができる。   Decision point 751 thus represents the two types of crossing control functions described above. In one intersection control function, the GAD / Ray intersection is maintained / managed near the intersection tester, while on the other hand, only the nearest detected primitive / ray intersection is output for shading. In some of the above architectures, if a separate test cell is used for each, the decision point can only track when a primitive intersection that appears to be the nearest neighbor is found.

決定ポイント751から、GAD結果は、レイ制御703から提供され、そして、入力742から受信されたレイIDを格納するキュー725からレイID入力も受信するマルチプレクサ752に入る。レイ制御703は、テスト制御703から出力743を介してレイデータ766a〜766nに提供されているレイ情報に対応するレイ識別子と共に入力742を投入する。よって、(レイ識別子(レイID))によってキュー725の中で特定されたレイを定義するデータは、出力743を介して、レイデータ766a〜766nに提供され、これらのメモリに格納される。レイIDがどのように形成されるかについての実施例は後述される。   From decision point 751, the GAD result is provided from ray control 703 and enters multiplexer 752, which also receives a ray ID input from queue 725 that stores the ray ID received from input 742. The ray control 703 inputs the input 742 together with the ray identifier corresponding to the ray information provided to the ray data 766a to 766n from the test control 703 via the output 743. Therefore, data defining the ray specified in the queue 725 by (Ray identifier (Ray ID)) is provided to the ray data 766a to 766n via the output 743 and stored in these memories. Examples of how ray IDs are formed are described below.

両方のキュー730および725は、レイの一連の識別子(レイID)を図示する。しかし、後述されるように、レイは、一般に、所定の幾何学的形状に対して並行にテストされる。よって、このような場合、キュー725は、好ましくは、レイIDのパケットのためのレイIDを格納することになるので、キュー730は、各エントリが所定の形状と関連付けられたある程度の数のレイIDを有する一連のエントリを表現できる。   Both queues 730 and 725 illustrate a series of ray identifiers (Ray IDs). However, as described below, rays are generally tested in parallel against a given geometric shape. Thus, in such a case, the queue 725 will preferably store a ray ID for a ray ID packet, so that the queue 730 has a certain number of rays with each entry associated with a predetermined shape. A series of entries having IDs can be represented.

特有の実施例として、このアーキテクチャを駆動するアルゴリズムは、ある程度の数のレイが所定の形状に対してテストされるべきであると決定されるまで一般に待機するので、多数のレイがほぼ同時にテストを終了し、そして、テストを開始すると一般に考えられる。有利な点として、これらの終了レイは、最初にインスタンス化された方法または時点に関して、または、これらの終了レイがどの経路を使ってアクセラレイション階層をトラバースしたかに関して、互いに完全に無関係にできる。逆に、キュー725は、シーンのデフォルトGAD要素、たとえば、GAD要素の階層の中のルートノードに対してテストされるべき新しいレイのグループまたはパケットを収容すると考えることができる。   As a specific example, the algorithm driving this architecture generally waits until it is determined that a certain number of rays should be tested against a given shape, so that a large number of rays test at about the same time. It is generally considered to finish and start the test. Advantageously, these end rays can be completely independent of each other with respect to the method or time instantiated initially or with respect to which path these end rays used to traverse the acceleration hierarchy. Conversely, queue 725 can be considered to contain a new ray group or packet to be tested against the scene's default GAD element, eg, the root node in the hierarchy of GAD elements.

このような新しいレイは、カメラシェーダ735および他のシェーダ710a〜710nを含む光線源に由来する。カメラシェーダ735は、シーンの中でテストされるべき1次レイを生成するので、別個に特定される。シェーダ710a〜710nは、例えば、スレッドの形でコンピューティング資源の上で、および/または、1若しくはそれ以上のプロセッサのコアの上で動き、レイとプリミティブとの間で特定された交差に適切な応答を指定する命令または他のロジックの実行を表現する。通常は、このような応答は、プリミティブと関連付けられたコードをシェードすることにより少なくとも部分的に決定され、様々な他の影響および考慮事項を明らかにすることができる。   Such a new ray comes from a light source that includes a camera shader 735 and other shaders 710a-710n. The camera shader 735 is identified separately because it generates the primary ray to be tested in the scene. The shaders 710a-710n are suitable for the specified intersection between rays and primitives, for example, running on computing resources in the form of threads and / or on the core of one or more processors. Represents the execution of an instruction or other logic that specifies a response. Typically, such a response is determined at least in part by shading the code associated with the primitive and can reveal various other effects and considerations.

シェーダ710a〜710nは、テスト制御703の出力745からこのようなレイデータを受信する分散ポイント772を介して(図8aを参照のこと)、交差したレイおよびプリミティブの識別子を受信する。分散ポイント772は、このようなレイデータを所定のプリミティブのためのコードを実行する利用可能性を有する計算資源へ提供するために使用できるので、このような利用可能性決定手段は、負荷測定、計算資源によってセットされるフラグ、フルネス指標を使うFIFO分離、または、ラウンドロビン若しくは疑似ランダム分散スキームを含むこのような分散を制御するため使用可能である。   Shaders 710a-710n receive crossed ray and primitive identifiers via distribution points 772 that receive such ray data from output 745 of test control 703 (see FIG. 8a). Since the distribution point 772 can be used to provide such ray data to computational resources with the availability to execute code for a given primitive, such availability determination means can be used to measure load, It can be used to control such distribution including flags set by computational resources, FIFO separation using fullness index, or round robin or pseudo-random distribution schemes.

これらのシェーダ710a〜710nの出力は、便宜上2次レイと呼ばれる他のレイを含むことが可能である(カメラ735からの出力もレイを含む)。本実施例では、このようなレイは、この時点で、レイを定義する始点および方向を少なくとも含むが、この時点で、好ましくは、テスト制御703によって提供されるレイIDが関連付けられている必要はない。   The outputs of these shaders 710a to 710n can include other rays called secondary rays for convenience (the output from the camera 735 also includes rays). In this example, such a ray now includes at least the starting point and direction that define the ray, but at this point, it is preferable that the ray ID provided by the test control 703 should be associated at this point. Absent.

識別できるように、テスト制御703は、交差テスト資源におけるレイ状態を監視可能であり、図8〜9に関連してより詳細に記載されるように、新しいレイがレイデータ766a〜766nの中の終了したレイを置き換えることを可能にする。レイIDのITR705a〜705nへの分散は、図10に関して詳述されるディストリビュータ780によって実行される。このような分散は、レイデータ766a〜766nのメモリが所定の識別子によって特定されたレイを定義するデータを格納することによって主として制御される。同様に、ディストリビュータ780は、図10に関してさらに後述されるように、コレクション準備完了のような考慮事項に基づいて、レイIDがキュー725から取得される時点を制御する。   As can be identified, the test control 703 can monitor the ray status in the cross-test resource, and a new ray in the ray data 766a-766n as described in more detail in connection with FIGS. Allows you to replace a finished ray. The distribution of ray IDs to ITRs 705a-705n is performed by distributor 780, which is described in detail with respect to FIG. Such distribution is mainly controlled by storing the data defining the ray specified by the predetermined identifier in the memory of the ray data 766a to 766n. Similarly, the distributor 780 controls when a ray ID is acquired from the queue 725 based on considerations such as collection ready, as will be further described below with respect to FIG.

今度は、図8aを参照すると、レイデータ766a〜766nのそれぞれと関連付けられたメモリのバンクを含み、各バンクがレイデータで占められているスロットを有し、メモリアドレスによってアドレス指定可能である、テスト制御703の一部分が図示されている。図8aは、レイ終了キュー730からの出力744がレイ識別子1、18、106および480を含み、各識別子がメモリ803の中にスペースを割り付けられていることを図示している。このようなスペースは、出力744からのこれらのレイ識別子の受信に応答して上書き/記入されることが許可される。分散ポイント722への出力745は、シェーディングの際に用いられるレイデータを含む。出力745は他のデータをさらに含むことができる。実際には、メモリ803は、シェーダ710a〜710nを実行するプロセスのような他のプロセスによっても使用されるメモリで実施されることができる。このような場合、出力745は、計算資源によるメモリ803からのこのようなデータの取り出しを表現可能である(または、取り出しによって実施可能である)。   Referring now to FIG. 8a, it includes a bank of memory associated with each of the ray data 766a-766n, each bank having a slot occupied by ray data, and addressable by a memory address. A portion of test control 703 is shown. FIG. 8 a illustrates that output 744 from ray end queue 730 includes ray identifiers 1, 18, 106 and 480, each identifier being allocated space in memory 803. Such spaces are allowed to be overwritten / filled in response to receipt of these ray identifiers from output 744. The output 745 to the distribution point 722 includes ray data used during shading. The output 745 can further include other data. In practice, memory 803 may be implemented with memory that is also used by other processes, such as processes that execute shaders 710a-710n. In such cases, output 745 can represent the retrieval of such data from memory 803 by computational resources (or can be implemented by retrieval).

リンク741、742、743、744、745、750、790のような種々の通信リンクは図7において特定され、これらのリンクのうちのいずれかが全体的なアーキテクチャ実施に従って実施可能であり、共有メモリ領域、物理リンク、拡張バスの上に確立された仮想チャネル、共有レジスタスペースなどを含むことが可能である。   Various communication links, such as links 741, 742, 743, 744, 745, 750, 790, are identified in FIG. 7, and any of these links can be implemented according to the overall architectural implementation, shared memory It can include regions, physical links, virtual channels established on expansion buses, shared register space, and the like.

図8bは、新しいデータのためのデータは、(例えば、カメラシェーダ735のようなシェーディング動作からの)出力741から到来する。このようなレイデータは、レイ始点および方向情報を少なくとも含む。次に、テスト制御703は、これらの新しいレイをメモリ803の中で様々なレイデータ766a〜766nのためのロケーションに割り当てる。各レイ始点および方向と関連付けられた識別子は、それぞれが格納された場所に依存する。よって、入力742(キュー725に関する入力)はそれに基づいて決定されたレイ識別子を受信する。同様に、出力743は、レイ識別子と、それらと関連付けられ、メモリ803に格納された始点および方向情報との両方を含む。レイIDは関連データを特定するためメモリをインデックス付けするため使用できるが、ITR705a〜705nおよびメモリ803の中のレイデータの特定がレイ識別データを使用して実行できる限り、レイのための他の種類の識別子も使用できるので、図8aおよび8bに図示されたレイIDの割り当ては便宜的である。   FIG. 8b shows that data for new data comes from output 741 (eg, from a shading operation such as camera shader 735). Such ray data includes at least a ray start point and direction information. Test control 703 then assigns these new rays to locations for various ray data 766a-766n in memory 803. The identifier associated with each ray start point and direction depends on the location where each is stored. Thus, input 742 (input for queue 725) receives a ray identifier determined based thereon. Similarly, output 743 includes both ray identifiers and start point and direction information associated with them and stored in memory 803. Ray IDs can be used to index memory to identify related data, but as long as the identification of ray data in ITRs 705a-705n and memory 803 can be performed using ray identification data, Since type identifiers can also be used, the ray ID assignments illustrated in FIGS. 8a and 8b are convenient.

図9aは、内容連想メモリ910がそれぞれ異なるレイデータと関連付けられているキー905を維持するこのような代替案の実施例を図示する。   FIG. 9a illustrates an example of such an alternative where the content associative memory 910 maintains a key 905 that is associated with different ray data.

図9bは、各レイデータ766a〜766nの内部において、スロットがテスト制御703からインターフェイス743を介してレイデータを受け入れるため設けられていることを図示する。これらのスロットは、複数のバンクにさらに細分すること、または、インターリーブ化することが可能であり、および/または、キャッシュからのデータのより簡単な取り出しを可能にする他のキャッシュ編成メカニズムであることが可能である。レイは、ここでは、格納のため分散されることが必要であり、このような分散は、レイIDの最下位ビット、若しくは、レイIDのハッシュに基づいて、または、分散が行われるバンクの数によるモジュロ除算を用いて、ラウンド・ロビン・キューイングを用いて、もしくは、レイデータをメモリへ分散するため使用できる他の分散メカニズムを用いて進むことができる。所定の部分の範囲内で、レイデータはレイIDに基づいてソートされることも可能である。   FIG. 9 b illustrates that within each ray data 766 a-766 n, a slot is provided for receiving ray data from the test control 703 via the interface 743. These slots can be further subdivided into multiple banks, or can be interleaved, and / or other cache organization mechanisms that allow easier retrieval of data from the cache Is possible. Rays here need to be distributed for storage, and such distribution is based on the least significant bit of the ray ID, or the hash of the ray ID, or the number of banks where the distribution takes place We can proceed with modulo division by, using round robin queuing, or other distributed mechanisms that can be used to distribute ray data to memory. Within a predetermined portion, ray data can be sorted based on ray IDs.

要約すると、図7〜9bは、テストされるべきレイが制御ロジックによって収集され、好ましくは、レイ定義データが異なる交差テスト資源に連結されたそれぞれのキャッシュに格納されるメモリロケーションに基づいている識別子が割り当てられるアーキテクチャを図示する。プリミティブ交差テスト結果は、テストが終了したときにこれらのテスト資源から到来し、テスト制御ロジックは、その後に、これらの終了したレイのメモリロケーションをテストされることを必要とする新しいレイに再割り当て可能である。終了したレイは、テストされるべきさらなるレイを生成可能である複数の異なる交差処理/シェーディング資源のいずれかで共用可能である。レイは、一般に、アクセラレイション構造のトラバースの間中、かつ、最近傍プリミティブ交差が特定されるまで(または、レイがシーン背景以外と交差しないことが決定されるまで)交差テスト資源の中を循環させられる。   In summary, FIGS. 7-9b show identifiers based on the memory locations where the rays to be tested are collected by control logic and preferably the ray definition data is stored in respective caches linked to different cross test resources. 1 illustrates an architecture to which is assigned. Primitive intersection test results come from these test resources when the test is finished, and the test control logic then reassigns the memory locations of these finished rays to new rays that need to be tested. Is possible. The finished ray can be shared by any of a number of different cross processing / shading resources that can generate additional rays to be tested. Rays typically cycle through intersection test resources throughout the acceleration structure traversal and until the nearest primitive intersection is identified (or until it is determined that the ray does not intersect anything other than the scene background). Be made.

図10を参照すると、レンダリングシステムのさらなるアーキテクチャ態様が図示されている。図10における一態様は、レイデータが交差テストのため構成されたプロセッサに連結されたそれぞれのキャッシュメモリに格納できることである。別の態様は、ディストリビュータ780がITR705a〜705nとインターフェイスをとることができる方法である。図示されているさらなる態様は、テスト用の形状データが交差テスタへ提供できる方法である。   Referring to FIG. 10, a further architectural aspect of the rendering system is illustrated. One aspect in FIG. 10 is that ray data can be stored in respective cache memories coupled to processors configured for cross testing. Another aspect is how the distributor 780 can interface with the ITRs 705a-705n. A further aspect shown is a method in which shape data for testing can be provided to the intersection tester.

ディストリビュータ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要素データおよび/またはプリミティブデータを格納するメモリへのインターフェイスを有することもできる。   Distributor 780 receives ray identifiers from multiplexer 752 (FIG. 7) via communication link 790 (implemented as hardware, inter-process or inter-thread communication, etc.). Each of these ray IDs is sent to a collection management 1075 where the association between the ray ID and each GAD element bounding object to be tested next is maintained. Ray IDs are further distributed between queues 1021, 1022, and 1023 by decisions 1013, 1014 and 1015, where ray IDs wait for decisions from collection management and storage 1075 to test their collections. Is possible. For example, collection 1045 is determined to be ready for testing, and ray IDs are sent to respective ITRs 705a-705n where caches 1065a-1065n contain data for each such ray ID. The Collection management 1075 may also have an interface to a memory that stores GAD element data and / or primitive data to initiate retrieval of the geometric shapes required for testing.

これらの形状は、(例えば)リンク112を介して記憶装置103(図1)からキュー1040に達する。これらの形状は、所定のコレクションと関連付けられたGADの要素との関連性に基づいて特定されている。例えば、階層GADの場合、これらの形状は、親GAD要素の子であることが可能である。各ITRは、キュー1040からの形状に対してそれぞれのレイを順次にテスト可能である。よって、所定のコレクションのレイがキャッシュ1065a〜1065nの間に均等に分散しているとき、最高スループットが実現され、コレクション・マネージメント1075は、所定のレイコレクションをテストした結果に基づいて最も簡単にコレクションを更新できる。所定のコレクションの中の複数のレイが1つのキャッシュにあるとき、他の交差テスタはストールすることが可能であるか、または、次のコレクションからのレイをテストすることが可能である。コレクションテスト同期が再び必要とされる前に、順序が乱れているテストの最大数が受け入れられる。   These shapes reach the queue 1040 from the storage device 103 (FIG. 1) via the link 112 (for example). These shapes are identified based on their association with GAD elements associated with a given collection. For example, in the case of hierarchical GAD, these shapes can be children of the parent GAD element. Each ITR can test each ray sequentially against the shape from the queue 1040. Thus, the highest throughput is achieved when the rays of a given collection are evenly distributed among the caches 1065a-1065n, and the collection management 1075 is the easiest to collect based on the results of testing the given ray collection. Can be updated. When multiple rays in a given collection are in one cache, other cross testers can either stall or test the rays from the next collection. The maximum number of out-of-order tests is accepted before collection test synchronization is required again.

出力は、出力750a〜750n(リンク750(図7)のコンポーネントであることが可能である)で生成され、決定ポイント751(図7)に提供される。上述の通り、このアーキテクチャは、どのような形状でも(すなわち、プリミティブまたはGAD要素のいずれかを)テストするITRを提供する。さらに、コレクション・マネージメント1075と連結された決定ポイント751は、GAD交差テストの結果が、所定のレイが所定のGAD要素にヒットする決定を含むことを表し、特定されたレイをそのGAD要素に対応するコレクションに追加させる。よって、別の実施は、GADテスト結果をコレクション・マネージメント1075へ直接的に提供することを含むことができる。より一般的には、上記実施例は、潜在的な情報のフローを例示し、他のフローがそこから明白である。   Output is generated at outputs 750a-750n (which can be a component of link 750 (FIG. 7)) and provided to decision point 751 (FIG. 7). As described above, this architecture provides an ITR that tests any shape (ie, either primitives or GAD elements). In addition, decision point 751 coupled with collection management 1075 indicates that the result of the GAD cross test includes a decision that a given ray hits a given GAD element, and the identified ray corresponds to that GAD element. To be added to the collection. Thus, another implementation can include providing GAD test results directly to collection management 1075. More generally, the above example illustrates the flow of potential information and other flows are apparent therefrom.

注意すべき他の態様は、所定のレイコレクションの1若しくはそれ以上のレイIDがキュー1021、1022、1023(コレクション1047によって示されている)のいずれかに格納できることである。このような場合、そのキューのためのITRは両方のレイをテスト可能であり、利用可能になるとき2回目のテスト(または、多数の後続のテスト)の結果を出力する。決定ポイント751は、組み立てられるべきコレクションのすべての結果を待つことができ、または、「散在する」結果が利用できる限りで伝搬させられる。   Another aspect to note is that one or more ray IDs of a given ray collection can be stored in any of the queues 1021, 1022, 1023 (indicated by collection 1047). In such a case, the ITR for that queue can test both rays and outputs the result of the second test (or multiple subsequent tests) when it becomes available. Decision point 751 can wait for all the results of the collection to be assembled, or propagated as long as “scattering” results are available.

要約すると、図10は、1若しくはそれ以上の形状と関連付けられたレイ識別子のパケットが複数のテスト資源のためのキューに分散されることを可能にさせ、各キューがレイデータのサブセットを格納するシステム編成を図示する。各テスト資源は、テスト資源にロードされた形状に対して各レイ識別子によって特定されたレイデータをフェッチする。好ましくは、形状は並行してすべてのテスト資源の中で順次にストリーム化可能である。形状は、主メモリの中のアドレスから始まる一連の子として特定することができる。よって、図10は、形状が一般に複数のレイに対して並行してテストされるシステム編成を図示する。   In summary, FIG. 10 allows a packet of ray identifiers associated with one or more shapes to be distributed into queues for multiple test resources, each queue storing a subset of ray data. The system organization is illustrated. Each test resource fetches the ray data specified by each ray identifier for the shape loaded into the test resource. Preferably, the shapes can be streamed sequentially among all test resources in parallel. A shape can be specified as a series of children starting from an address in main memory. Thus, FIG. 10 illustrates a system organization whose shape is typically tested in parallel against multiple rays.

しかし、他の実施例は一連の異なる交差テスト資源の中の形状を順次にテストし、形状データおよびレイ識別子のパケットが交差テスト資源の間を進む。複数のパケットを進行させることにより、テストのスループットが増加する。本アプローチによる実施例は後述される。   However, other embodiments sequentially test shapes in a series of different cross test resources, and the shape data and ray identifier packets travel between the cross test resources. Progressing multiple packets increases test throughput. Examples according to this approach are described below.

図11は、複数の計算資源1104〜1108のリングバス配置が実施可能であるコンピュータアーキテクチャの第1の実施例を図示する。各計算資源は、交差テストのため使用される計算資源のため、メモリ340の中の形状データ記憶装置1115からそのコンピューティング資源へ提供された幾何学的形状と交差テストされるべきレイデータを収容するプライベートL1キャッシュ1125a〜1125nにアクセス可能である。計算資源1104〜1108の間の通信は、複数のポイント・ツー・ポイント、または、このようなプロセッサ間通信のため利用可能である他のアーキテクチャを含むことができるバス1106によって行うことが可能である。   FIG. 11 illustrates a first embodiment of a computer architecture in which a ring bus arrangement of multiple computing resources 1104-1108 can be implemented. Each computational resource contains ray data to be cross-tested with the geometry provided to that computing resource from shape data store 1115 in memory 340 for the computational resource used for the cross-test. The private L1 caches 1125a to 1125n can be accessed. Communication between computing resources 1104-1108 can be performed by a bus 1106, which can include multiple point-to-point or other architectures available for such interprocessor communication. .

計算資源がL2キャッシュ1130および1135のようなある一定のメモリ構造を共有する場合、これらの計算資源、例えば、L2キャッシュ1130を共有する計算資源1107および1106の間の通信は、ある目的のためそのキャッシュを介して互いに通信することができる。付加的に、システムの中でテストされているレイのためのデータのコピーは、レイデータ1101a〜1110nの間でのデータのサブセットの分散のため、レイデータ1110に維持されることができ、(後述されるように)これらのL2キャッシュに格納されることもできる。形状データ1115は、メモリ340に存在することもでき、L2 1130、1135のうちの1若しくはそれ以上と、キャッシュ1125a〜1125nのうちのいずれかに一時的に存在することもできる。しかし、このようなキャッシュに格納されたレイデータは、このような形状データによって上書きされることから保護され、このような形状のため割り付けられたスペースの大きさは、一般に、テストにおいて次に使用される時点についての指標がない場合に形状データを周りに維持しようとすることなく、形状データ1115へのレイテンシを遮断するため足りるように、テストの準備ができているとして現在特定されているパケットのために使える大きさに制限される。換言すると、レイデータのため、最大未使用置換のような、典型的なキャッシュ・マネージメント・アルゴリズムの使用を回避することが好ましい。   When computing resources share certain memory structures such as L2 caches 1130 and 1135, communication between these computing resources, eg computing resources 1107 and 1106 sharing L2 cache 1130, is They can communicate with each other via a cache. Additionally, a copy of the data for the ray being tested in the system can be maintained in the ray data 1110 due to the distribution of the subset of data among the ray data 1101a-1110n, ( It can also be stored in these L2 caches (as described below). The shape data 1115 can exist in the memory 340, or can temporarily exist in one or more of the L2 1130, 1135, and in any of the caches 1125a-1125n. However, ray data stored in such a cache is protected from being overwritten by such shape data, and the amount of space allocated for such a shape is generally used next in a test. Packets currently identified as being ready for testing so that it is sufficient to block latency to shape data 1115 without trying to keep shape data around when there is no indication of when Is limited to the size that can be used for. In other words, because of ray data, it is preferable to avoid the use of typical cache management algorithms, such as maximum unused replacement.

図11は、アプリケーションおよび/またはドライバ1120が交差テストに加えて計算資源1104上で実行可能であることをさらに図示する。同様に、レイプロセス1121は計算資源1108上で実行可能であり、パケットデータ1116はパケットプロセス1121によって用いるためキャッシュ1125aに格納可能である。他のパケットデータはL2 1129に格納可能であるが、レイデータと同様に、パケットデータを最高速であると考えられるメモリに格納することが好ましい。パケットプロセスは、コレクションおよび他のマネージメントロジックが上述の図面において実行した同じ機能のうちの大半を実行し、すなわち、どのレイがどのGAD要素と交差したかを記録し、そして、例えば、交差したGAD要素の子に対してテストされる準備ができている十分なレイを有することによって、例えば、テストの準備ができているGAD要素を選択する。   FIG. 11 further illustrates that the application and / or driver 1120 can be executed on the computational resource 1104 in addition to the cross test. Similarly, ray process 1121 can be executed on computing resource 1108 and packet data 1116 can be stored in cache 1125 a for use by packet process 1121. Other packet data can be stored in the L2 1129, but it is preferable to store the packet data in the memory considered to be the highest speed, similarly to the ray data. The packet process performs most of the same functions that collection and other management logic performed in the above-mentioned drawings, i.e. records which ray intersects which GAD element and, for example, intersected GAD By having enough rays ready to be tested against the children of the element, for example, select a GAD element that is ready for testing.

本実施例では、パケットプロセス1121は集中化されているので、複数のレイ識別子と、特定されたレイとの交差に関してテストされるべき(複数の)形状への参照情報または複数の形状のデータのいずれかと、を収容するパケットを発行することにより、動作することになる。交差テストを実行する各計算資源1104〜1107はパケットを受信する。例えば、複数のポイント・ツー・ポイント・リンクにおいて順番に(さらに後述される)、または、共有バス型の媒体においてほぼ同時に(図10のアーキテクチャに類似することが可能である)。各計算資源1104〜1107は、それぞれのローカライズされたレイデータ1110a〜1110nがパケットの中で特定されたレイに関するデータを格納するかどうかを決定し、格納する場合、そのレイに関するデータを取り出し、テストし、結果を出力する。   In this example, the packet process 1121 is centralized so that multiple ray identifiers and reference information to the shape (s) or data of the shape to be tested for intersections with the identified ray (s). Any one of them is issued to issue a packet. Each computing resource 1104-1107 that performs the intersection test receives the packet. For example, sequentially in multiple point-to-point links (further described below) or almost simultaneously in a shared bus type medium (which can be similar to the architecture of FIG. 10). Each computational resource 1104-1107 determines whether the respective localized ray data 1110 a-1110 n stores data relating to the ray specified in the packet, and if so, retrieves the data relating to that ray and tests And output the result.

GAD要素交差の結果はパケットプロセス1121によって追跡されるので、このような結果をパケットプロセス1121へ戻す通信メカニズムが許容できる。このようなメカニズムは、システムの全体的なアーキテクチャに基づいて選択できる。いくつかの例示的なアプローチは後述され、見出された交差毎に別個の指標を含むことができるか、または、各テスト資源が循環するパケットに交差結果を投入することを可能にする。   Since the result of the GAD element crossing is tracked by the packet process 1121, a communication mechanism that returns such a result to the packet process 1121 is acceptable. Such a mechanism can be selected based on the overall architecture of the system. Some exemplary approaches are described below and can include a separate indicator for each intersection found, or allow each test resource to inject the intersection result into a circulating packet.

図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のためその形状データへのリードアクセスを提供する。   FIG. 12 illustrates a further embodiment of the organization of computing resources 1205-1208 with associated caches 1281-1284 storing ray data 1266a-1266n and packet data 1216a-1216n, respectively. Each computing resource 1205-1208 is connected to at least one other computing resource by queues 1251-1254. Ray process 1210 provides input to computing resource 1205 via queue 1250. Ray process 1210 communicates with application / driver 1202. Output 1255 from computing resource 1208 communicates with ray process 1210. Another output 1256 communicates with the computational resource 1205. Primitive and GAD storage 103 provides read access to its shape data for computational resources 1205-1208.

レイプロセス1210は、テストのためのレイを受信または作成し、特定されたレイのレイ識別子およびレイデータを収容するパケットを形成する。パケットは、キュー1250〜1254を介して計算資源1205〜1208のそれぞれへ伝えられる。各計算資源1205〜1208は、所定のパケットの中のレイの一部分、いくつかの実施例では、1つのレイを要し、レイのその部分を計算資源のレイデータ1266a〜1266nの中に格納する。他の実施例は、特有の計算資源1205〜1208へ向けられたパケットを送信することを含むことができ、レイプロセス1210はどのレイデータがどのローカライズされたレイデータ1266a〜1266nに格納されるかを決定することになる。   Ray process 1210 receives or creates a ray for testing and forms a packet containing the ray identifier and ray data for the identified ray. The packet is transmitted to each of the computing resources 1205-1208 via the queues 1250-1254. Each computational resource 1205-1208 requires a portion of a ray in a given packet, in some embodiments one ray, and stores that portion of the ray in the computational resource ray data 1266a-1266n. . Other embodiments may include sending packets destined for specific computational resources 1205-1208, where ray process 1210 stores which ray data is stored in which localized ray data 1266a-1266n. Will be determined.

レイがローカライズされた記憶装置にロードされた後、レイは、次に、始点および方向データをもたずに、レイIDだけを収容するパケットによって特定される。このようなパケットは、そのパケットの中で特定されたレイに対してテストされるべき形状への参照情報または形状のデータのいずれかをさらに収容する。いくつかの実施例では、このようなパケットを形成するデータは、計算資源1205〜1208のローカライズされたメモリ1281〜1284の間に分散される。よって、計算資源1205〜1208のそれぞれは、どのレイがどの形状に対して次にテストされるべきかに関する情報が分散されるように、所定の時刻にシステムの中でテストされているレイのためのパケットデータの一部分を維持する。かくして、各計算資源1205〜1208は、テストの準備ができているコレクションのテストを開始するため、レイIDおよび形状情報のパケットを発行可能である。   After a ray is loaded into a localized storage device, the ray is then identified by a packet that contains only the ray ID, with no starting point and direction data. Such a packet further contains either reference information or shape data to the shape to be tested for the ray identified in the packet. In some embodiments, the data forming such packets is distributed among the localized memories 1281-1284 of computing resources 1205-1208. Thus, each of the computational resources 1205-1208 is for the ray being tested in the system at a given time so that information about which ray should be tested next for which shape is distributed. A portion of the packet data is maintained. Thus, each computational resource 1205-1208 can issue a ray ID and shape information packet to start testing a collection ready for testing.

各パケットは、キューおよび計算資源を一周し、次に、パケットの中に投入された交差テストの結果と共に発信元の計算資源へ返送される。一実施では、各計算資源1205〜1208は、各計算資源が発行するパケットのための形状データをフェッチする。例えば、計算資源1205は、テストのための準備が整ったパケット(たとえば、所定のGAD要素のためのレイのコレクション)を有し、次に、計算資源は、このような関連性(例えば、GAD要素の子)によってテストされるべき形状をフェッチし、各形状のためのデータを有するパケットを作り、キュー1251から各パケットを送出することが可能である。   Each packet goes around the queue and computational resources and is then sent back to the originating computational resource along with the results of the cross test put into the packet. In one implementation, each computational resource 1205-1208 fetches shape data for the packet issued by each computational resource. For example, the computational resource 1205 has packets ready for testing (eg, a collection of rays for a given GAD element), and the computational resource then has such an association (eg, GAD It is possible to fetch the shapes to be tested by the children of the element, create a packet with data for each shape, and send each packet out of the queue 1251.

順番に、計算資源1205は、パケットが他の計算資源の中を移動した後、この計算資源が送出した各パケットを受信する。受信されたとき、各パケットは、他の計算資源1206〜1208に格納された/格納されるパケットの中の特定されたレイとの交差に関してそのパケットの中の形状をテストした結果(参照情報または定義データ)が投入される。計算資源1205は、他の計算資源がそれぞれのテストを実行する前または後のいずれかに、計算資源がレイデータ1266aの中にローカルに保有しているいずれかの特定されたレイをテスト可能である。よって、レイ定義データは、交差テスト資源に連結された複数の高速メモリの間に分散させることができ、テスト結果は分散された方式で収集可能である。   In turn, the computational resource 1205 receives each packet sent by this computational resource after the packet has moved through the other computational resources. When received, each packet is the result of testing the shape in that packet for intersection with the specified ray stored / stored in the other computational resources 1206-1208 (reference information or Definition data). The computational resource 1205 can test any identified ray that the computational resource has locally in the ray data 1266a either before or after the other computational resources perform their respective tests. is there. Thus, ray definition data can be distributed among a plurality of high-speed memories linked to cross test resources, and test results can be collected in a distributed manner.

図12に従ってアーキテクチャを実施することは、使用されている物理的なシステムの種々の特性を考慮に入れることができる。例えば、キューは、パケットを一方向へ送信するものとして表されている。しかし、利益はパケットを両方向へ送信することによって実現されることができる(双方向キューまたは複数のキュー)。同様に、図12は、パケットデータが計算資源の間に分散され、より多くのL2キャッシュへのより分散したメモリアクセスと、潜在的に主メモリ103のようなより大規模なメモリへの他のポートのアクセスとを可能にすることを図示する。   Implementing the architecture according to FIG. 12 can take into account various characteristics of the physical system being used. For example, a queue is represented as sending a packet in one direction. However, benefits can be realized by sending packets in both directions (bidirectional queue or multiple queues). Similarly, FIG. 12 shows that packet data is distributed among computing resources, more distributed memory access to more L2 caches, and potentially other memory to larger memories such as main memory 103. Figure 2 illustrates enabling port access.

パケットが集中化される場合、データ参照情報と共に一方向に送信されたパケットは、例えば、計算資源1205によってフェッチされたデータを有することができ、データ参照情報と共にもう一方の方向へ送信されたパケットは、計算資源1208によってフェッチされたデータを有することができる。この状況は、このようなリングバス・アーキテクチャ(一方向または双方向)にエントリポイントを設けるため一般化が可能である。   When packets are centralized, a packet sent in one direction with data reference information can have, for example, data fetched by computational resource 1205, and a packet sent in the other direction with data reference information May have data fetched by the computational resource 1208. This situation can be generalized to provide entry points in such a ring bus architecture (one-way or two-way).

開示内容から明白であるように、上記キューは、交差テストのための新しいレイを複数の交差テスト資源を含むシステムに導入するための1若しくはそれ以上のキューと、交差テスト資源を互いに相互接続するキューとを含むことができる。いくつかの場合に、新しいレイを導入するキューはレイ定義データを収容可能である(例えば、交差テスト資源に接続されたキャッシュにデータを格納するのを待機するキュー)。このようなキューは、レイ定義データを格納する主メモリの中にリストとして実施可能である。パケットを伝える交差テスト資源を相互接続するキューは、好ましくは、レイ識別子だけを含み、レイ定義データを含まないことができる。   As will be apparent from the disclosure, the queue interconnects the cross-test resources with one or more queues for introducing a new ray for cross-test into a system that includes multiple cross-test resources. And queues. In some cases, a queue that introduces a new ray can accommodate ray definition data (eg, a queue that waits to store data in a cache connected to a cross-test resource). Such queues can be implemented as a list in main memory that stores ray definition data. The queue that interconnects the cross-test resources that carry packets preferably contains only ray identifiers and no ray definition data.

図13は、計算資源1205が一方のコアであり、計算資源1206が別のコアであるように、計算資源がチップのコアを用いて実施されることができ、そして、キュー1251がコア間通信であるシステム1200の潜在的な実施の一部分を図示する。同様に図示するのは、レイデータを形状データと共に格納可能である中間L2キャッシュ1305である。前述の図に関して説明されているように、L2キャッシュ1305は、シーンジオメトリおよびアクセラレイションデータのいくつかの部分を格納することができ、このようなデータを格納する限りは、レイデータのスラッシュ化の増加はない(すなわち、レイデータは、好ましくは、キャッシュ格納において優先される)。   FIG. 13 shows that the computational resource can be implemented using the core of the chip so that the computational resource 1205 is one core and the computational resource 1206 is another core, and the queue 1251 is an inter-core communication. FIG. 2 illustrates a portion of a potential implementation of the system 1200. Also illustrated is an intermediate L2 cache 1305 that can store ray data along with shape data. As described with respect to the previous figure, the L2 cache 1305 can store several portions of scene geometry and acceleration data, and as long as such data is stored, the slashing of the ray data There is no increase (i.e., ray data is preferably preferred in cache storage).

図14a〜14cは、それぞれが、例示的なシステムの種々の実施によるキューが取ることができる種々の関係を図示する。一般に、計算資源間の通信は、直列または1:1であることが必要とされない。例えば、図14aは、1入力1404が、1つの計算1407および1408にそれぞれに専用である両方のキュー1405および1406にデータ入力可能であることを図示する。例えば、計算1407および1408が単一の物理的なチップで実施される場合、入力1404はチップレベル入力であることが可能であり、各キュー1405、1406は特有のコアのため使われることが可能である。   FIGS. 14a-14c illustrate various relationships that can each be queued by various implementations of the exemplary system. In general, communication between computing resources is not required to be serial or 1: 1. For example, FIG. 14a illustrates that one input 1404 can be entered into both queues 1405 and 1406 that are dedicated to one calculation 1407 and 1408, respectively. For example, if calculations 1407 and 1408 are performed on a single physical chip, input 1404 can be a chip level input and each queue 1405, 1406 can be used for a specific core. It is.

図14bは、単一入力が複数のコアにデータ入力可能であり、複数のコアのそれぞれが計算1407、1408にデータ入力可能であり、計算のそれぞれが同様にデータを反対側のキュー1406、1405へそれぞれに送信可能であることを図示する。図14cは、キュー1411が入力1410を受信可能であり、出力を両方の計算1407および1408へ提供可能であることを図示する。よって、図14a〜14cは、種々のキューイング戦略がこれらの態様に従ってパケットを伝達するため実施可能であることを図示する。   FIG. 14b shows that a single input can input data into multiple cores, each of the multiple cores can input data into calculations 1407, 1408, and each of the calculations can similarly send data to the opposite queue 1406, 1405. It is illustrated that transmission can be made to each. FIG. 14 c illustrates that queue 1411 can receive input 1410 and can provide output to both calculations 1407 and 1408. Thus, FIGS. 14a-14c illustrate that various queuing strategies can be implemented to convey packets in accordance with these aspects.

図15は、複数のキャッシュ階層のレベルが存在すること(例えば、レベル1のキャッシュ1502および1503と、レベル2のキャッシュ1504と、レイデータの種々の組み合わせを設けることができること)を図示する。例えば、レイデータ1507は、レイデータ1505と1506との互いに素な部分集合と、1505または1506のいずれにも存在しないレイデータとを含むことが可能である。レイデータ1505および1506は、動的に変化することが可能であり、例えば、一方のキューが1若しくはそれ以上の計算資源(図14c)にデータ入力する場合、レイデータは、いずれかのレイデータ1505または1506へのレイデータ1507に格納されたレイの動的な割り当てを反映することができる。   FIG. 15 illustrates that there are multiple levels of cache hierarchy (eg, various combinations of level 1 caches 1502 and 1503, level 2 cache 1504, and ray data may be provided). For example, ray data 1507 can include disjoint subsets of ray data 1505 and 1506 and ray data that does not exist in either 1505 or 1506. Ray data 1505 and 1506 can change dynamically; for example, if one queue enters data into one or more computational resources (FIG. 14c), the ray data can be any ray data. The dynamic allocation of rays stored in ray data 1507 to 1505 or 1506 can be reflected.

図16は、キュー1251と、キューが格納可能であるデータとの例示的な実施をより詳細に図示する。各パケットがそれぞれのレイ識別子1605a〜1605p、1606a〜1606p、および1607a〜1607pと、対応するヒット情報フィールド1610a〜1610p、1611a〜1611p、および1612a〜1612pとを有するパケット1601a〜1601nが図示されている。パケット1601aは形状1のためのデータ1615aを収容し、パケット1601bは形状2のためのデータ1615bを収容し、パケット1601nは形状nのためのデータ1615nを収容する。識別できるように、キュー1251は、計算資源1205によってデータ入力され、計算資源1206によって読み取られる。当然ながら、図14a〜14cに一部が図示されている様々な他のキューイング戦略が実施できる。   FIG. 16 illustrates in greater detail an exemplary implementation of the queue 1251 and the data that the queue can store. Packets 1601a to 1601n are shown, each packet having a respective ray identifier 1605a to 1605p, 1606a to 1606p, and 1607a to 1607p, and corresponding hit information fields 1610a to 1610p, 1611a to 1611p, and 1612a to 1612p. . Packet 1601a contains data 1615a for shape 1, packet 1601b contains data 1615b for shape 2, and packet 1601n contains data 1615n for shape n. As can be seen, the queue 1251 is data input by the computational resource 1205 and read by the computational resource 1206. Of course, various other queuing strategies, some of which are illustrated in FIGS.

キューイングは、その用語がここで使用されているように、いずれかの所定の計算資源においてテストされたレイに対する先入れ/先出し要件を意味しない。概して、所定のパケットの中で特定されたレイは、異なる計算資源のためのローカライズされたレイ記憶装置の間にほぼ均等に分散し、その結果、所定のパケットがある程度の数の計算資源の間に分散したそのパケットのレイを見出すはずであり、その結果、並列化が各パケットに対し実現される。1パケットに対するある程度の数のパケットが1つの計算資源においてテストされるべき場合、別の計算資源がそのパケットに対して交差するレイをもたないバブルが形成されることができる。このようなバブルは、別のパケットの他の交差テストを含む他の計算によって埋めることが可能である。いくつかの実施例では、各計算資源は、複数のスレッドの状態を維持し、所定のパケットのストール条件でスレッドを切り替えることが可能である。パケット間の各交差テストのための重大なデータがレジスタの中に維持できる限り、正味のスループットの利点が実現できるはずである。   Queuing does not mean a first-in / first-out requirement for a ray tested on any given computational resource, as that term is used herein. In general, the rays identified in a given packet are approximately evenly distributed among localized ray stores for different computational resources, so that a given packet is between some number of computational resources. Should find a ray of that packet distributed across the network, so that parallelism is achieved for each packet. If a certain number of packets for one packet are to be tested in one computational resource, a bubble can be formed that does not have a ray that another computational resource intersects for that packet. Such a bubble can be filled by other calculations including other cross tests of other packets. In some embodiments, each computational resource can maintain the state of multiple threads and switch threads with a predetermined packet stall condition. As long as critical data for each cross-test between packets can be maintained in the register, a net throughput advantage should be realized.

例示的なシステムの動作の態様を部分的に要約すると、各計算資源はパケットの受信に応答して作用する。パケットが特有の計算資源のための入力キューから到着するとき、計算資源は、そのパケットの中のレイ識別子を調べ、そのパケットの中で特定されたどのレイがそれぞれのメモリにそれらのレイのためのデータを格納したかを決定する。換言すると、パケットは、どの計算資源がそのパケットの中で特定されたレイのためのレイデータを収容するか、または、レイデータへの高速アクセス権を有するかについてのアプリオリな知識なしで、レイ識別子を用いて形成可能である。さらに、各計算資源は、パケットの中で特定されたすべてのレイのためのレイデータを取得することを応答的に試みることがなく、計算資源がそのローカル高速メモリの中にパケットの中で特定されたいずれかのレイのためのレイデータを有するかどうかを決定するだけであり、特定された(複数の)形状との交差に関してその(複数の)レイだけをテストする。   To summarize in part the operational aspects of the exemplary system, each computational resource acts in response to receiving a packet. When a packet arrives from an input queue for a particular computational resource, the computational resource looks up the ray identifier in that packet and which rays identified in that packet are in their memory for those rays. Determine whether the data is stored. In other words, a packet does not have a priori knowledge of which computational resources contain ray data for the ray specified in the packet or have fast access to ray data. It can be formed using an identifier. In addition, each computational resource does not responsively attempt to obtain ray data for all the rays identified in the packet, and the computational resource is identified in the packet in its local high speed memory. It only determines whether it has ray data for any of the rays that were made, and only tests that ray (s) for intersection with the identified shape (s).

図17は、パケットが例示的な計算資源において処理できる方法の態様を記載することを目的とする。図17は、パケット1601aが計算資源1206に入ることを図示する。計算資源1605aは、パケット1601aからのレイ識別情報を使用して、そのレイデータを問い合わせる(例えば、レイ1605aはレイID31を有し、レイデータ記憶装置1266bの中でレイID31と照合する)。レイID31と関連付けられた始点および方向は1290を介して取り出される。同様に、形状データは、パケットの中で特定された場合、形状データが現在格納されているメモリ資源1291から取得1715される。形状データがパケットの中に設けられる場合、形状データは直接的に使用される。次に、レイ31は、形状1(または取り出されたデータによって定義された形状)との交差に関してテスト1720される。   FIG. 17 is intended to describe an aspect of how a packet can be processed in an exemplary computing resource. FIG. 17 illustrates the packet 1601a entering the computational resource 1206. FIG. The computing resource 1605a uses the ray identification information from the packet 1601a to inquire about the ray data (for example, ray 1605a has ray ID 31 and collates with ray ID 31 in ray data storage device 1266b). The starting point and direction associated with ray ID 31 are retrieved via 1290. Similarly, if shape data is specified in a packet, it is acquired 1715 from memory resource 1291 where shape data is currently stored. If shape data is provided in the packet, the shape data is used directly. Next, ray 31 is tested 1720 for intersection with shape 1 (or the shape defined by the retrieved data).

テストされた形状がGAD要素である場合(1725)、このような交差テストの効果は、テストされたレイと交差する可能性を依然として有することがあるシーンプリミティブの小さいサブセットを決定することである。従って、肯定的なヒット結果は、レイ識別子、すなわち、レイ31の識別子のためのロケーション1610aの中のパケットにライトバック1726される。いくつかの実施では、パケットの放出は、どのレイIDがパケットの中でどの順番で放出されたかを追跡できるので、結果だけがライトバックされる必要があり、暗黙的な順番は放射と同じである。よって、テスタを通過した後、資源から出るパケットはテスト結果を処理できる。   If the tested shape is a GAD element (1725), the effect of such an intersection test is to determine a small subset of scene primitives that may still have the potential to intersect the tested ray. Thus, the positive hit result is written back 1726 to the packet in location 1610a for the ray identifier, ie, the identifier of ray 31. In some implementations, packet emission can track which ray IDs are emitted in which order in the packet, so only the results need to be written back, and the implicit order is the same as radiation. is there. Thus, after passing through the tester, packets exiting the resource can process the test results.

逆に、テストされた形状がプリミティブである場合(1733)、最近傍プリミティブ交差決定(1731)は、この検出されたプリミティブが前のプリミティブより近接しているかどうかを決定するために実施可能である。近接している場合、交差したプリミティブと、選択的に交差距離とがパケットと共に格納されるか、または、そうでなければ、出力されることが可能である。所定のレイが複数のパケット(すなわち、同時に複数のGAD要素)と関連付けられることができるので、カウントは、毎回レイがGAD要素と関連付けられる期間に亘って維持1733できるので、カウントは、レイが依然としてテストを必要とする他のパケットに存在しないときが決定できるように毎回デクリメントされ、そのレイに専用にされたメモリが別のレイの投入のため開放されることを可能にする。   Conversely, if the tested shape is a primitive (1733), the nearest neighbor intersection decision (1731) can be implemented to determine if this detected primitive is closer than the previous primitive. . If so, the intersected primitives and optionally the intersection distance can be stored with the packet or otherwise output. Since a given ray can be associated with multiple packets (ie, multiple GAD elements at the same time), the count can be maintained 1733 over the period each time a ray is associated with a GAD element, so the count is still It is decremented each time so that it can be determined when it is not present in other packets that need testing, allowing the memory dedicated to that ray to be freed up for the introduction of another ray.

要約すると、レイのローカル高速記憶装置の中の各レイと関連付けられたデータは、好ましくは、最近傍の検出されたプリミティブ交差識別子を含み、プリミティブ参照情報およびその交差までのパラメータ化された距離とを含むことができる。各レイと関連付けられた他のデータは、レイが存在するGAD要素レイコレクションのカウントを含む。各コレクションがテストされた後、カウントはデクリメントされ、別のコレクションが作成されたとき、カウントはインクリメントされる。カウントがゼロであるとき、その後に最近傍交差として特定されたプリミティブはそのレイが交差したと決定されるプリミティブである。   In summary, the data associated with each ray in the ray's local high-speed storage preferably includes the nearest detected primitive intersection identifier, the primitive reference information and the parameterized distance to that intersection, and Can be included. Other data associated with each ray includes a count of GAD element ray collections in which the ray exists. After each collection is tested, the count is decremented, and when another collection is created, the count is incremented. When the count is zero, then the primitive identified as the nearest intersection is the primitive that is determined to have intersected the ray.

図18は、パケットがテストのための幾何学的形状のストリップの開始を特定できる例示的な単一命令複数データ(SIMD)アーキテクチャに関係する。実施例では、GAD要素グラフのノードはエッジによって1若しくはそれ以上の他のノードに接続され、各ノードは、球体または軸方向整列バウンディングボックスのようなジオメトリ・アクセラレイション・データの要素を表す。いくつかの実施例では、グラフは階層的であるので、所定のノードをテストしたとき、所定のノードの子は、親ノードによって同様に境界を定められたプリミティブの選択の境界を定めることが知られている。GAD要素は、最終的に、プリミティブの選択の境界を定める。   FIG. 18 relates to an exemplary single instruction multiple data (SIMD) architecture that allows a packet to identify the start of a geometric strip for testing. In an embodiment, nodes in the GAD element graph are connected by edges to one or more other nodes, each node representing an element of geometry acceleration data, such as a sphere or an axial alignment bounding box. In some embodiments, the graph is hierarchical, so when testing a given node, it is known that the children of a given node will delimit the selection of primitives that are also bounded by the parent node. It has been. The GAD element ultimately delimits the selection of primitives.

実施では、所定の要素の子であるアクセラレイション要素の文字列は、文字列の中の第1の要素のメモリアドレスによって特定可能である。従って、このアーキテクチャは、次の要素の開始時に、予め定められたデータのストライド長を設けることが可能である。フラグが所定のノードの子である所定の要素の文字列の終わりを指定するため設けることが可能である。同様に、プリミティブのストリップは、次のプリミティブを定義するために既知のストライド長を用いて開始メモリアドレスによって特定することが可能である。より具体的には三角形ストリップに関して、連続した2頂点がそれぞれに複数の三角形を定義することが可能である。   In the implementation, the character string of the acceleration element that is a child of the predetermined element can be specified by the memory address of the first element in the character string. Thus, the architecture can provide a predetermined data stride length at the beginning of the next element. A flag can be provided to specify the end of the string of a given element that is a child of a given node. Similarly, a strip of primitives can be identified by a starting memory address using a known stride length to define the next primitive. More specifically, for a triangle strip, two consecutive vertices can each define a plurality of triangles.

図18は、図6に関連して図示されたSIMDアーキテクチャに類似したSIMDアーキテクチャの態様を図示するため使用される。本実施例では、複数のレイ識別子1605a〜1605nと、選択的に受信交差テスト結果1610a〜1610nを格納するスペースと、テストされるべき形状(例えば、三角形プリミティブ)の形状定義データ、形状の識別子、または、ストリップの開始のための識別子1815aを含む形状データとを格納するパケット1601aが受信される。   FIG. 18 is used to illustrate aspects of a SIMD architecture similar to the SIMD architecture illustrated in connection with FIG. In the present embodiment, a plurality of ray identifiers 1605a to 1605n, a space for selectively storing received intersection test results 1610a to 1610n, shape definition data of a shape to be tested (for example, a triangle primitive), a shape identifier, Alternatively, a packet 1601a storing shape data including an identifier 1815a for starting a strip is received.

この例示的なアーキテクチャは、より大規模なキャッシュを備えた、より少数のより強力な別々の処理資源が交差テストのため使用される場合に適切であることがある。ここで、別々の処理資源のそれぞれは、概して、SIMD命令によってテスト可能であるレイの数とおよそ同数のレイを処理資源のローカル記憶装置の中に保有する(これに反して、図10は、各キャッシュが、好ましくは、コレクション毎に1本のレイを保有する実施例を図示した)。例えば、4本のレイがSIMD実行ユニットにおいて同時にテスト可能である場合、順々に送られているパケット毎に、そのSIMDユニットのためのローカル記憶装置の中に統計的に約4本のレイを保有することが好ましい。例えば、4つの別々の処理資源が設けられ、各処理資源が4本のレイをテストする能力をもつSIMDユニットを保有する場合、パケットは、参照される約16本のレイを保有することが可能である。代替的に、別個のパケットがSIMDユニットを備える各処理資源のため設けられるので、例えば、パケットは、参照される4本のレイを保有することが可能であり、4倍のSIMDユニットが存在する。   This exemplary architecture may be appropriate when a smaller number of more powerful separate processing resources with a larger cache are used for cross-testing. Here, each of the separate processing resources generally has approximately the same number of rays in the processing resource's local storage as can be tested by the SIMD instruction (as opposed to FIG. An embodiment is shown in which each cache preferably has one ray per collection). For example, if 4 rays can be tested at the same time in the SIMD execution unit, for each packet sent in sequence, about 4 rays are statistically stored in the local storage for that SIMD unit. It is preferable to possess. For example, if four separate processing resources are provided and each processing resource has a SIMD unit capable of testing four rays, a packet can have about 16 rays referenced. It is. Alternatively, a separate packet is provided for each processing resource comprising a SIMD unit, so for example, a packet can carry four referenced rays and there are four times as many SIMD units. .

一実施例では、パケット1601aを受信する第1の計算資源1205は、形状のストリップのためのデータを取得するため識別子1815aを使用することが可能である。次に、レイデータ1266aに格納されたパケット1601aの中で参照される各レイは、計算ユニット1818a〜1818dにおいてテストされる。形状ストリップの実施例では、形状ストリップ1816が取り出され、形状1〜4を含む。各形状は、各計算ユニット1818a〜1818dを通じてストリーム化されることが可能であり、その計算ユニットにロードされたレイとの交差に関して各形状をテストする。ストリップの形状毎に、計算資源は、それぞれが形状のうちの1つに対してレイをテストした結果を格納するパケット(図示されたパケット1820)を作成可能である。   In one embodiment, the first computational resource 1205 that receives the packet 1601a can use the identifier 1815a to obtain data for the strip of shapes. Next, each ray referenced in packet 1601a stored in ray data 1266a is tested in computing units 1818a-1818d. In the shape strip embodiment, shape strip 1816 is removed and includes shapes 1-4. Each shape can be streamed through each computation unit 1818a-1818d, testing each shape for intersection with a ray loaded into that computation unit. For each strip shape, the computational resource can create a packet (packet 1820 shown), each storing the results of testing a ray against one of the shapes.

代替的に、別個のビットが交差結果を受け入れるため各レイの結果セクションの中に設けられることができ、1パケットが渡されることができる。低速メモリからの再度のフェッチを回避するため、このアプローチは、複数の計算資源がL2を共有できる場合、または、第1の計算資源によるフェッチが同様に他の計算資源への形状データの転送を引き起こす場合、最も適切であることが予想される。例えば、DMAトランザクションは、それぞれがテストされるべき所定の形状のストリームを必要とする異なる計算資源である複数のターゲットを有することが可能であり、いくつかの実施のための適切なメモリ・トランザクション・モデルの実施例である。主な検討事項は、主メモリ103から同じデータを2回以上フェッチすることを削減することである。   Alternatively, separate bits can be provided in the result section of each ray to accept the cross result, and one packet can be passed. In order to avoid re-fetching from slow memory, this approach can be used if multiple computational resources can share L2, or fetching by the first computational resource will similarly transfer shape data to other computational resources. If caused, it is expected to be most appropriate. For example, a DMA transaction can have multiple targets, each of which is a different computational resource that requires a predetermined shaped stream to be tested, and an appropriate memory transaction transaction for some implementations. It is an example of a model. The main consideration is to reduce fetching the same data from the main memory 103 more than once.

上述されているように、各交差テスト資源は、どのレイ識別子がそのレイデータ記憶装置の中にレイデータを格納しているかを決定する。いずれかのこのようなレイに関して、レイ始点および方向が取り出される。これまでに、実施例は、テスト資源が所定の特定されたレイを1若しくはそれ以上の特定された形状の系列とテストできることが仮定されている。しかし、処理資源が実質的な余分のレイテンシを伴うことなく所定のレイとの交差に関して複数の形状をテスト可能である場合、若しくは、複数のレイを1形状とテスト可能である場合、または、両方の組み合わせの場合がある。図18では、SIMDアーキテクチャが示され、交差テストのため構成された1コンピューティング資源の内部で、4つのSIMDユニットのそれぞれがこのSIMDユニットに順次に提供された形状との交差に関して異なるレイをテスト可能である。形状の系列は、一連の形状の初期的な取り出しを開始するためシーンデータ記憶装置340へのインデックスとして使用される形状ストリップ参照情報に基づいてフェッチすることが可能であり、1つずつの形状または4つの形状が計算ユニット123でテストされる。   As described above, each intersection test resource determines which ray identifier stores ray data in its ray data store. For any such ray, the ray start point and direction are retrieved. To date, embodiments have assumed that the test resource can test a given identified ray with one or more identified shape sequences. However, if the processing resources can test multiple shapes for intersection with a given ray without substantial extra latency, or if multiple rays can be tested with one shape, or both May be a combination of In FIG. 18, the SIMD architecture is shown, and within one computing resource configured for intersection testing, each of the four SIMD units tests a different ray with respect to the intersection with the shape provided sequentially to this SIMD unit. Is possible. A sequence of shapes can be fetched based on the shape strip reference information used as an index into the scene data store 340 to initiate an initial retrieval of the sequence of shapes, one by one or Four shapes are tested in the calculation unit 123.

好ましくは、レイは、収集されたレイとアクセラレイションデータのうちの要素との間で検出された交差に基づいてコレクションの中に収集される。従って、本実施例では、異なるレイが4個の異なる形状に対してそれぞれのSIMDユニットにおいてテストされ、SIMDユニットを収容するコンピューティング資源は、それぞれが形状を参照するレイのパケットに結果を再フォーマット化できる。   Preferably, rays are collected in the collection based on the detected intersection between the collected rays and elements of the acceleration data. Thus, in this embodiment, different rays are tested in each SIMD unit against four different shapes, and the computing resource that houses the SIMD unit reformats the result into a packet of rays each referring to the shape. Can be

SIMDユニットを使用する他のアーキテクチャは、代わりに、コレクションに収集された複数のレイをフェッチすることが可能である。上述の通り、このようなレイは、コレクションと関連付けられた形状に関係した形状に対して次に交差テストされることになる。例えば、収集された対照形状に接続された16または32の形状が存在することができる。これらの形状のうちの第1のサブセットは、異なるSIMDユニットにロードされることが可能であり、収集されたレイは、各SIMDユニットの中でストリーム化されることが可能である(すなわち、同じレイが同時にそれぞれのSIMDユニットを通過する)。結果パケットは各SIMDユニットによって独立に形成可能であり、次の形状がSIMDユニットにロードされる。レイは、次に、SIMDユニットの中で再循環させることが可能である。このプロセスは、すべての関係した形状が収集されたレイに対してテストされるまで継続可能である。   Other architectures that use SIMD units can instead fetch multiple rays collected in a collection. As described above, such a ray will then be cross-tested against a shape related to the shape associated with the collection. For example, there can be 16 or 32 shapes connected to the collected control shapes. The first subset of these shapes can be loaded into different SIMD units and the collected rays can be streamed within each SIMD unit (ie, the same Ray passes through each SIMD unit at the same time). The result packet can be formed independently by each SIMD unit and the next shape is loaded into the SIMD unit. The ray can then be recycled in the SIMD unit. This process can continue until all relevant shapes have been tested against the collected rays.

図18bは、このような実施例のための計算ユニット1818aの時間ベースの経過を図示する。時点1で、形状1およびレイ1がテストされる。形状は1からqまで番号付けされ、コレクションからのレイは1からnまで番号付けされている。時点nで形状1およびレイnがテストされる。次のサイクルの開始時(時点q−1*n+1)に、最後の形状が計算ユニット1818aにおいてテストを開始する。   FIG. 18b illustrates the time-based course of the calculation unit 1818a for such an embodiment. At time 1, shape 1 and ray 1 are tested. Shapes are numbered from 1 to q, and rays from the collection are numbered from 1 to n. At time n, shape 1 and ray n are tested. At the start of the next cycle (time point q-1 * n + 1), the last shape starts testing in the calculation unit 1818a.

図19は、パケット1905が計算資源の間で交差テストのため分散させることができる方法の態様と、特定された形状と関連付けられたパケット1905の中のレイのためのメモリを維持する計算資源1910においてそれぞれが最終的に融合されるテスト結果とを図示する。図19は、処理中の例示的なシステム状態を図示する。特に、計算資源1910〜1914は、それぞれが、その計算資源でアクセス可能なメモリに格納されたレイのレイ識別情報を受信し、その特定された形状を交差に関してテストし、特定されたヒット1915、1917、1919を含む結果1915〜1919を出力している。ヒットまたはミスのいずれかがデフォルト挙動であることが可能であるので、例えば、ミスは正の値によって指定されることがなく、または、パケットの中のデフォルト値がミスにセットされることが可能である。テスト後、計算資源1910は少なくともヒット情報を収集し、ここで、計算資源1910は、テストシステムの中のすべてのパケット情報、または、この特有の形状を含むこのすべてのパケット情報のサブセットを管理していることが可能である。   FIG. 19 illustrates how aspects of how packets 1905 can be distributed among computing resources for cross-testing and computing resources 1910 that maintain memory for the rays in the packet 1905 associated with the identified shape. Figure 5 illustrates the test results in which each is finally fused. FIG. 19 illustrates an exemplary system state during processing. In particular, each computational resource 1910-1914 receives ray identification information for a ray stored in memory accessible by the computational resource, tests its identified shape for intersection, and identifies identified hit 1915, Results 1915 to 1919 including 1917 and 1919 are output. Since either a hit or a miss can be the default behavior, for example, a miss can not be specified by a positive value, or the default value in a packet can be set to miss It is. After testing, the computational resource 1910 collects at least hit information, where the computational resource 1910 manages all packet information in the test system or a subset of all this packet information including this unique shape. It is possible that

メモリ1966の例示的な編成は、ある程度の数のレイID、すなわち、レイA、レイBなどにマップされた形状参照情報の論理的な編成を表している。さらに図示されているのは、参照番号1に関係した行のいくつかのスロット(すなわち、テスト中の形状への参照情報)が空であることである。よって、計算資源1910がヒット結果を受信するとき、計算資源は、最初に所定の参照番号1の残りの空のスロットにデータ投入し、次に、レイnがメモリ1966の内部で参照番号1のための新しいパケットを開始することが1966に図示されている。今度は、参照番号1のためのパケットがフル状態であるので、このパケットはテストされる準備ができていると決定することが可能である。いくつかの実施例では、参照番号1によって参照された形状の子GAF要素がフェッチされ、パケットが各パケットの中の参照番号1と関連付けられたレイのすべてを使って形成される。例えば、参照番号1の32個の子が存在することが可能であるので、32個のパケットが形成されることが可能であり、パケット1922〜1924が図示されている。いくつかの実施例では、計算資源1910は、子形状を定義するデータをフェッチし、そのデータをパケット1922〜1924に格納することが可能である。代替的に、他の計算資源がこのようなデータをフェッチすることを可能にする参照情報が提供されることが可能である。   The exemplary organization in memory 1966 represents a logical organization of shape reference information mapped to a certain number of ray IDs, ie, ray A, ray B, etc. Further illustrated is that some slots in the row associated with reference number 1 (ie, reference information to the shape under test) are empty. Therefore, when the calculation resource 1910 receives the hit result, the calculation resource first inputs data into the remaining empty slot of the predetermined reference number 1, and then the ray n is the reference number 1 in the memory 1966. Starting a new packet for it is illustrated in 1966. This time, since the packet for reference number 1 is full, it can be determined that this packet is ready to be tested. In some embodiments, a child GAF element of the shape referenced by reference number 1 is fetched and a packet is formed using all of the rays associated with reference number 1 in each packet. For example, since there can be 32 children with reference number 1, 32 packets can be formed, and packets 1922-1924 are shown. In some embodiments, computing resource 1910 may fetch data defining child shapes and store the data in packets 1922-1924. Alternatively, reference information can be provided that allows other computing resources to fetch such data.

いくつかの場合に、計算資源1910は、作成されたパケットの内部で特定されたレイをさらに記憶することができるので、パケットを送出する前にそのレイを最初にテストすることができる。このような場合に、計算資源1910は、送出されたパケットの中で既にフェッチされた形状データを記憶することができる。図12に関連して説明されているように、実施は、このようなパケットを1若しくはそれ以上の他の計算資源へ送信すること、例えば、双方向キューイング、または、あらゆる方向の通信を可能にすることができる。   In some cases, computing resource 1910 can further store a ray identified within the created packet, so that the ray can be tested first before sending the packet. In such a case, the computing resource 1910 can store the shape data that has already been fetched in the transmitted packet. As described in connection with FIG. 12, implementations can send such packets to one or more other computational resources, eg, bi-directional queuing, or communication in any direction Can be.

図20は、上記態様による方法がどのように実施可能であるかについてのいくつかの実施例を説明することを目的としている。パケットは、形状情報、レイID、および、ヒット情報がライトバックされることができるロケーションと共に放出2005され、ヒット情報は、この時点で、ゼロ化されるか、または、そうでなければ、「ドントケア」にされることが可能である。1回目のテストは、レイ1のIDに対して実施2006され、ヒットすることが見出されるので、1がパケットに書き込まれ、そのパケットが第2のテスト2007のため伝達され、レイ3が2回目のテストのためローカライズされていることが見出され、ミスしていることが見出されるので、0が書き込まれ(または維持され)、テスト2006からのヒット情報がパケットの中で前方へ運ばれる(すなわち、パケットの中のレイは順序と無関係にテストされることが可能である)。3回目のテストがレイ2に対して実施され、ヒットすることが見出される。本実施例は、パケットの中のレイがパケットの中に出現した順序とは無関係にテストされることが可能であることを表し、テストの順序は、どのテスタが所定のレイIDに対するレイデータを最良にアクセスすることができるかに依存する。テストは、すべてのレイIDがテストされるまで続く(2009)。その後、パケットは融合されることが可能であり、すなわち、ヒット情報だけが維持される必要がある。このような融合は、パケットを放出した計算資源において行うことが可能である。新しいヒット結果は、既存のパケットからのヒット結果と組み合わせることが可能である(図19を参照のこと)。その後、パケットの中のレイのコレクションが(例えば、フル状態に基づいて)テストされる準備ができているかどうかが決定2025される。準備ができていない場合、異なるパケットが処理2040されることが可能である。準備ができている場合、パケットと関連付けられた形状の子形状がフェッチ2030されることが可能であり、親ノード2041は形状であり、そのノードの子は、例えば、2042によって特定される。次に、新しいパケットは、親と関連付けられたパケットからのレイ識別子と子形状毎に生成2035されることが可能である。   FIG. 20 is intended to illustrate some examples of how the method according to the above aspect can be implemented. The packet is released 2005 with the shape information, ray ID, and the location where the hit information can be written back, and the hit information is now zeroed or otherwise “don't care” Can be done. The first test is performed 2006 on the ID of ray 1 and is found to hit, so 1 is written to the packet, the packet is communicated for the second test 2007, and ray 3 is the second time. Is found to be localized for the test, and a zero is found, so 0 is written (or maintained) and the hit information from test 2006 is carried forward in the packet ( That is, the rays in the packet can be tested out of order). A third test is performed on ray 2 and found to hit. This example shows that rays in a packet can be tested regardless of the order in which they appear in the packet, and the order of testing determines which tester has the ray data for a given ray ID. Depends on the best access possible. The test continues until all ray IDs have been tested (2009). The packets can then be merged, i.e. only hit information needs to be maintained. Such a fusion can be performed on the computational resource that released the packet. New hit results can be combined with hit results from existing packets (see FIG. 19). Thereafter, a determination 2025 is made whether the collection of rays in the packet is ready to be tested (eg, based on full status). If not ready, a different packet can be processed 2040. If ready, the child shape of the shape associated with the packet can be fetched 2030, the parent node 2041 is the shape, and the child of that node is identified, for example, by 2042. A new packet can then be generated 2035 for each ray identifier and child shape from the packet associated with the parent.

図21および22は、上述された方法の態様を実施するために使用することができる状況のシステムにおいて、上述された方法の態様を要約するのに役立つ。特に、図21は、方法2100が、プリミティブおよびGAD要素を主メモリに格納する工程(2105)と、レイ定義データ(例えば、始点および方向情報)を使用して、交差テストのためのレイを定義する工程(2110)とを含むことを示す。各レイは識別子を用いて特定できるようにされる(2115)。レイ定義データのサブセットは、複数のこのような資源のうちのそれぞれの処理資源と関連付けられたローカライズされたメモリに格納される。レイは、これらのレイの識別子および形状データを処理資源の間に分散(2125)することにより、テストの予定が入れられる。レイは、これらのレイのための定義データがローカルに格納された処理資源においてテストされる(2130)。いくつかの状況では、各レイは、1つのローカルメモリだけに定義データを有することができる。   21 and 22 serve to summarize the method aspects described above in a system in a situation that can be used to implement the method aspects described above. In particular, FIG. 21 shows that method 2100 uses primitive definition and GAD elements to be stored in main memory (2105) and ray definition data (eg, start and direction information) to define a ray for intersection testing. Including a step (2110). Each ray is identified using an identifier (2115). The subset of ray definition data is stored in a localized memory associated with each processing resource of the plurality of such resources. Rays are scheduled for testing by distributing (2125) these ray identifiers and shape data among the processing resources. Rays are tested 2130 in processing resources where definition data for these rays is stored locally. In some situations, each ray can have definition data in only one local memory.

レイとプリミティブとの間の交差の指標が計算資源の第1のサブセットから第2のサブセットへ通信される(2135)。第2のサブセットは交差をシェードする(2140)。シェーディングは、定義データがローカライズされたメモリの間で分散2145され、好ましくは、終了したレイの定義データを置き換える新しいレイを生じることが可能である。これらのレイはその後に上述の通りテストされる。計算資源のサブセットは、マルチスレッド化されたプロセッサまたはコアの上で動くスレッドをインスタンス化することを含む計算資源のインスタンス化またはそうでなければ割り付けにより実施されることが可能である。割り付けは長時間に亘って変化することが可能であり、交差テスト用の資源とシェーディング用の資源との間で静的割り付けであることは必要でない。例えば、交差テストのスレッドを実行するコアは、メモリスペースをプリミティブとのレイ交差のある程度の数の指標で埋めて、一連の交差テストを終了することが可能であり、その後、コアはこれらの交差のシェーディングに切り替わることが可能である。   An indication of the intersection between the ray and the primitive is communicated from the first subset of computing resources to the second subset (2135). The second subset shades the intersection (2140). Shading is distributed 2145 between the memory in which the definition data is localized, and can preferably result in new rays replacing the definition data of the finished ray. These rays are then tested as described above. A subset of computational resources can be implemented by instantiating or otherwise allocating computational resources, including instantiating threads that run on multithreaded processors or cores. The allocation can vary over time and it is not necessary to be a static allocation between cross-testing resources and shading resources. For example, a core executing a cross-test thread can fill the memory space with some number of indications of ray crossings with primitives and finish a series of cross-tests, after which the core It is possible to switch to shading.

上記のいくつかの実施例は、交差に関してGAD要素をテストする観点から主として説明され、このようなテストの結果は、より小規模のプリミティブのグルーピングに対する(レイIDと特有のGAD要素との関連性による)レイのグルーピングである。最終的に、テストによって特定されたGAD要素は、そのGAD要素と関連付けられたグループの一部であるとして特定されたレイに対してテストされるべきプリミティブの境界を定めることが開示されている。プリミティブを有するパケットに関して、交差テストの結果は、所定のレイに対して検出された少なくとも最近傍のこのような交差を追跡することにより考慮された、通常はレイを定義する他のデータとのレイ/プリミティブ交差の識別情報である(便宜のため)。   Some of the embodiments described above are primarily described in terms of testing GAD elements for intersection, and the results of such tests are related to the grouping of smaller primitives (relationships between ray IDs and specific GAD elements). ) Grouping of rays. Finally, it is disclosed that the GAD element identified by the test delimits the primitive to be tested against the ray identified as being part of the group associated with that GAD element. For packets with primitives, the result of the intersection test is that the ray with other data, usually defining the ray, considered by tracking at least the nearest such intersection detected for a given ray. / Primitive intersection identification information (for convenience).

次に、所定のレイがシーンの全体に対してテストされた後、レイ毎の最近傍の検出された交差が、もしあるならば、レイIDと共に、アプリケーション若しくはドライバ、または、シェーディングプロセスを開始するためこのような結果を使用できる別のプロセスへ返送されることができる。レイ識別子は、本明細書中の様々な実施形態によるキューイング戦略のようなキューイング戦略を介して返送されることが可能である(すなわち、どの計算資源が特有の交差のためのシェーディングコードを実行しているかを指定することは不要であり、特有の交差テスト資源は所定のシェーディング資源によってテストされた交差を検出していない)。いくつかの交差テストでは、重心座標が交差テストのため計算され、これらの座標は、必要に応じて、シェーディングのため利用できるようにされる。これは、交差テスタからシェーダへ送信可能である他のデータの実施例である。   Next, after a given ray is tested against the entire scene, the nearest detected intersection for each ray, if any, starts the application or driver or shading process with the ray ID. Thus, such a result can be sent back to another process that can use it. Ray identifiers can be returned via a queuing strategy, such as a queuing strategy according to various embodiments herein (i.e., which computing resource has a shading code for a particular intersection). It is not necessary to specify whether it is running, and the specific intersection test resource does not detect the intersection tested by a given shading resource). In some intersection tests, barycentric coordinates are calculated for the intersection test, and these coordinates are made available for shading as needed. This is an example of other data that can be transmitted from the intersection tester to the shader.

一般に、本明細書中に記載された機能、特徴、および他のロジックのいずれかが種々のコンピューティング資源を用いて実施されることが可能である。コンピューティング資源は、スレッド、コア、プロセッサ、固定機能処理要素などであることが可能である。同様に、コレクションまたはパケット管理のような他の機能が、1つのコンピューティング資源にローカライズされること、または、複数のコンピューティング資源の間に分散されることが可能であるプロセス、スレッド、または、タスク(例えば、複数の物理的な計算資源の間に分散した複数のスレッド)として提供または実施されることが可能である。タスクは、基本的に、そのコンピューティング資源によって管理されたコレクションを有する形状に関する交差テスト結果を保有する進行中のパケットを特定する工程を含む。   In general, any of the functions, features, and other logic described herein can be implemented using various computing resources. Computing resources can be threads, cores, processors, fixed function processing elements, and the like. Similarly, other functions, such as collection or packet management, can be localized to one computing resource or can be distributed among multiple computing resources, threads, or It can be provided or implemented as a task (eg, multiple threads distributed among multiple physical computational resources). The task basically involves identifying an ongoing packet that holds cross test results for a shape having a collection managed by that computing resource.

同様に、交差テストのため使用されているコンピューティング資源は、検出された交差をシェードするため使用されるシェーディングプロセスのような他のプロセスをホストすることも可能である。例えば、交差テストを実行するプロセッサは、シェーディング用スレッドを実行することも可能である。例えば、リングバス実施では、1つの処理資源のためのキューが現時点で交差テストのためのパケットを保有しない場合、データ処理資源は、代わりに、前に特定された交差をシェーディングするスレッドを開始することが可能である。所定のプロセッサ上に交差テストスレッドを有するという要件またはそのこととの間に一般的な関係が存在しないという主要な相違点は、そのスレッドによって検出されたレイ交差のためのシェーディング用スレッドをさらに動かす。その代わり、キューに入れられたレイ/プリミティブ交差は、シェーディング用スレッドに入力を提供するので、交差テスト資源とシェーディング資源との間のマッピングは、あらゆる方向であることが可能であるので、異なるハードウェアユニットまたはソフトウェアユニットが同じレイに対し交差テストとシェードとを行うことが可能である。   Similarly, the computing resource being used for the intersection test may host other processes, such as a shading process used to shade the detected intersection. For example, a processor that performs a cross test can also execute a shading thread. For example, in a ring bus implementation, if the queue for one processing resource does not currently have a packet for intersection testing, the data processing resource instead starts a thread that shades the previously identified intersection. It is possible. The main difference is that there is no general relationship between or having a cross test thread on a given processor, which further drives the shading thread for ray crossing detected by that thread. . Instead, queued ray / primitive intersections provide input to the shading thread, so the mapping between intersection test resources and shading resources can be in any direction, so different hard It is possible for a wear unit or software unit to cross test and shade the same ray.

同様に、異なる機能の間(例えば、交差テスト資源間、および、交差テストとシェーディングとの間)の通信に介在する様々なキューおよび他のインターフェイスは、メモリを実施するため利用できる物理的な資源に関係する検討事項に基づいて選択可能である種々のバッファリング戦略のうちのいずれかに従って1若しくはそれ以上のメモリにおいて実施可能である。キューは、発信側資源または着信側資源によって制御可能である。換言すると、着信側は、共有バス上のデータをリスニングすることが可能であり、必要とするデータを取ることが可能であり、または、データは、メモリマッピング、直接的な通信などによって、着信側へアドレス指定されることが可能である。   Similarly, various queues and other interfaces that mediate communication between different functions (eg, between cross test resources, and between cross test and shading) are physical resources available to implement memory. Can be implemented in one or more memories according to any of a variety of buffering strategies that can be selected based on considerations related to. The queue can be controlled by the originating resource or the terminating resource. In other words, the called party can listen to the data on the shared bus and take the data it needs, or the data can be received by memory mapping, direct communication, etc. Can be addressed.

さらなる実施例として、コアがマルチスレッド化をサポートできる場合、あるスレッドはシェーディングに専用であることが可能であり、別のスレッドは交差処理に専用であることが可能である。しかし、レイデータを維持することを犠牲にしてテクスチャおよび他のシェーディング情報をフェッチすることから生じるキャッシュ非コヒーレンスを回避するために注意する必要があり、交差テスト資源のためのキャッシュ割り付けを優先したままである。   As a further example, if the core can support multithreading, one thread can be dedicated to shading and another thread can be dedicated to cross processing. However, care must be taken to avoid cache non-coherence resulting from fetching textures and other shading information at the expense of maintaining ray data, while still prioritizing cache allocation for cross-test resources. It is.

本アーキテクチャの利点は、形状データのためのキャッシング要件が緩和されることであると考えられるので、その種類のデータのためのキャッシュコヒーレンスの検討事項が削減される。実際に、いくつかの実施では、ある一定の形状データを利用可能な状態に保つこと、または、形状データが再び使用されるときを予測することに費やされるべき努力は殆どない。その代わり、レイIDの所定のパケットがテストの準備を完了したとき、これらの(複数の)パケットのための形状データは、最高速メモリから取得可能であり、次に、形状データを格納し、そして、一般に、他のパケットを処理する既存のワークロードは、このようなフェッチの際に被るレイテンシを遮断する。交差に関してこれらの形状をテストした後、形状データは上書きされることが許されることを可能にする。   The advantage of this architecture is thought to be that the caching requirements for shape data are relaxed, thus reducing cache coherence considerations for that type of data. In fact, in some implementations, little effort should be spent on keeping certain shape data available or predicting when shape data will be used again. Instead, when a given packet of ray IDs is ready for testing, shape data for these packet (s) can be obtained from the fastest memory, then the shape data is stored, In general, existing workloads that process other packets block the latency incurred during such fetching. After testing these shapes for intersection, shape data can be allowed to be overwritten.

本明細書中で特定されたキューはいずれも、共有メモリ資源において、SRAMにおいて、リンクドリストとして、循環バッファとして、メモリのシーケンシャルなロケーション若しくはストライプ状のメモリロケーションで、または、キューの技術において公知である他の機能的な形式で実施されることが可能である。キューは、要件ではないが、最初に到達するパケットが最初に出て行くように、パケットの順序付けを維持するため動作可能である。いくつかの実施では、各計算資源は、パケットを順序と無関係に処理することが有利であるかどうかを決定するために、各計算資源のキュー内の所定の数のパケットを検査する能力が与えられることができる。このような実施は、順序正しいシステムより複雑であるが、必要に応じて提供されることが可能である。   Any of the queues identified herein are known in shared memory resources, in SRAM, as a linked list, as a circular buffer, in sequential or striped memory locations in memory, or in queue technology. Can be implemented in other functional forms. The queue is not a requirement, but is operable to maintain packet ordering so that the first packet arrives first. In some implementations, each computational resource is given the ability to inspect a predetermined number of packets in each computational resource queue to determine whether it is advantageous to process the packets out of order. Can be done. Such an implementation is more complex than an ordered system, but can be provided as needed.

コンピュータ実行可能な命令は、例えば、汎用コンピュータ、専用コンピュータ、または、専用処理装置にある特定の関数または関数のグループを実行させるか、そうでなければ、構成する命令およびデータを含む。コンピュータ実行可能な命令は、例えば、バイナリ、アセンブリ言語のような中間フォーマット命令、またはソースコードでもよい。いくつかの主題は構造的特徴および/または方法の工程の実施例に固有の言語で記載されているが、請求項に記載された主題は必ずしもこれらの記載された特徴または作用に限定されないことが理解されるべきである。それどころか、記載された特徴および工程は、請求項に記載された事項の範囲内でシステムおよび方法のコンポーネントの実施例として開示されている。   Computer-executable instructions comprise, for example, instructions and data which cause a general purpose computer, special purpose computer, or special purpose processing device to perform or otherwise configure a particular function or group of functions. Computer-executable instructions may be, for example, binary, intermediate format instructions such as assembly language, or source code. Although some subject matter is described in language specific to an example of structural features and / or method steps, claimed subject matter is not necessarily limited to those described features or acts. Should be understood. On the contrary, the described features and steps are disclosed as examples of components of a system and method within the scope of the appended claims.

以上、コンピューティングハードウェアおよび/またはソフトウェアプログラミングの様々な実施例と、さらにこのようなハードウェア/ソフトウェアがどのように相互に通信できるかについての実施例とが説明された。ハードウェア、または、ソフトウェアを使って構成されたハードウェアと、このような通信インターフェイスとのこれらの実施例は、これらのそれぞれに帰属した機能を達成する手段を提供する。例えば、本明細書中のいくつかの実施例による交差テストの手段は、(1)それぞれがレイ定義データのローカライズされた記憶装置を有し、(複数の)レイの識別子および形状データが設けられるのに応答して、形状との交差に関してこれらの(複数の)レイをテストするため動作可能である複数の独立に動作可能なコンピューティング資源のうちのいずれかを含むことが可能である。   Thus, various embodiments of computing hardware and / or software programming and embodiments of how such hardware / software can communicate with each other have been described. These embodiments of such a communication interface with hardware or hardware configured using software provide a means to achieve their respective functions. For example, the means of cross-testing according to some embodiments herein includes (1) localized storage of ray definition data, each provided with ray identifier (s) and shape data. Can include any of a plurality of independently operable computing resources operable to test these ray (s) for intersection with a shape.

例えば、レイのコレクションを管理する手段は、レイ識別子のグループの追跡を実施し、グループをアクセラレイションデータの要素と関連付ける、プログラミングを使って構成されたコンピューティング資源、または、FPGA若しくはASIC、または、それらの一部分を含み、レイ識別子と、レイ識別子のグループと関連付けられた形状によって決定された形状への参照情報または形状データのいずれかと、を備えるパケットを形成させるか、または、形成させる情報を提供することが可能である。   For example, a means for managing a collection of rays may include tracking a group of ray identifiers and associating the group with an element of acceleration data, a computing resource configured using programming, or an FPGA or ASIC, or Including or forming a packet comprising ray identifiers and either reference information or shape data to a shape determined by a shape associated with a group of ray identifiers. Is possible.

例えば、上述された機能は、交差テストを終了し、これらの交差をシェードするため構成されたコンピューティング資源における処理のため、プリミティブと交差したレイの識別子を、キューを介して、通信することを含む。この機能を実施する手段は、ハードウェアキュー、または、リングバッファ若しくはリンクドリストなどとして構成されたメモリのようなキューまたはリストとして編成された共有メモリスペースを含むことが可能である。従って、この手段は、レイ識別子およびプリミティブ識別子がキューの中の次のスロット若しくは指定されたスロット、または、メモリ内のロケーションから取得されることをもたらすプログラミングおよび/またはロジックを含むことが可能である。コントローラは、レイ識別子およびプリミティブ識別子を発信および着信する次のリード位置および次のライト位置を維持するため、キューまたはメモリを管理することが可能である。このようなキューイング手段は、交差テスト資源がレイ識別子および形状データのパケットを互いに伝達するとき、交差テスト資源を一緒にインターフェイスをとるため使用されることがさらに可能である。このようなキューイング手段は、交差テストの開始を待機している新しいレイのためのレイ識別子を受信するため使用されることがさらに可能である。よって、このようなより具体的なキューイング機能のそれぞれは、これらの手段または均等物によって実施されることが可能である。   For example, the function described above may terminate the intersection test and communicate the identifier of the ray that intersected the primitive via a queue for processing in a computing resource configured to shade these intersections. Including. Means for performing this function may include a hardware queue or a shared memory space organized as a queue or list, such as a memory configured as a ring buffer or linked list. Thus, this means may include programming and / or logic that causes the ray identifier and primitive identifier to be obtained from the next slot in the queue or a designated slot, or a location in memory. . The controller can manage the queue or memory to maintain the next read position and the next write position for sending and receiving ray and primitive identifiers. Such queuing means can further be used to interface the cross-test resources together when the cross-test resources communicate a ray identifier and a packet of shape data to each other. Such queuing means can further be used to receive a ray identifier for a new ray waiting for the start of an intersection test. Thus, each such more specific queuing function can be implemented by these means or equivalents.

例えば、上述の機能は、レイとプリミティブとの間で特定された交差をシェードする工程を含む。この機能は、交差したプリミティブと関連付けられたプログラミングを用いて構成されたコンピューティングハードウェアを含む手段によって実施されることが可能である。プログラミングは、プリミティブがプリミティブにヒットする光に与える影響を決定するためどのような他の情報が必要とされるかを決定するために、コンピューティングハードウェアにテクスチャ、手続き的ジオメトリ変形などのようなデータを取得させる。プログラミングは、新しいレイの放射がさらに交差テストされることを引き起こすことが可能である(例えば、シャドーレイ、屈折レイ、反射レイ)。プログラミングは、このようなレイの放射を引き起こすため、アプリケーション・プログラミング・インターフェイスとインターフェイスをとることが可能である。シェーディングプログラムによって定義されるようなレイは、始点および方向定義情報を含むことが可能であり、コントローラはこのような定義されたレイのレイ識別子を決定可能である。固定機能ハードウェアは、このような機能の一部分を実施するため使用されることが可能である。しかし、交差したプリミティブと関連付けられたコード、および/または、要求または必要に応じて他のコードに従って構成されることが可能であるコンピューティング資源を使用するプログラマブルシェーディングを許可することが好ましい。   For example, the functions described above include shaded intersections specified between rays and primitives. This functionality can be implemented by means including computing hardware configured with programming associated with the intersected primitives. Programming, to determine primitive is required what other information to determine the effect on the light hits the primitive, texture computing hardware, such as procedural geometry deformation Get data. Programming can cause new ray radiation to be further cross-tested (eg, shadow rays, refraction rays, reflection rays). Since programming causes such ray emission, it is possible to interface with an application programming interface. Rays as defined by the shading program can include start and direction definition information, and the controller can determine the ray identifiers of such defined rays. Fixed function hardware can be used to implement some of these functions. However, it is preferred to allow programmable shading using computing resources that can be configured according to code associated with the intersected primitives and / or other code as required or required.

例えば、上述された別の機能は、交差に関してテスト中、および/または、交差テストを待機中のレイのマスタリストを維持し、これらのマスタレイのサブセットを交差テストの手段と関連付けられた分散型キャッシュメモリの間に分散させた。このような機能は、これらの機能を実施するプログラミングの制御下でデータを格納するメモリとインターフェイスをとるために集積型または別個のメモリコントローラを使用することが可能であるプロセッサまたはプロセッサのグループを含む手段を用いて実施されることが可能である。このようなプログラミングは、交差テスト機能と関連付けられるか、または、そうでなければ、交差テスト機能を制御するドライバの中に少なくとも部分的に組み入れられることが可能である。   For example, another feature described above may be a distributed cache that maintains a master list of rays that are being tested for intersections and / or waiting for intersection tests, and a subset of these master rays associated with the means of intersection tests. Distributed among the memory. Such functions include a processor or group of processors that can use an integrated or separate memory controller to interface with memory that stores data under the control of programming that implements these functions. It can be implemented using means. Such programming can be associated with the cross test function or otherwise incorporated at least partially in the driver that controls the cross test function.

上述されたおよび/または請求項に記載された機能および方法の態様は、以下に詳述されるようにコンピュータハードウェアを含む専用または汎用コンピュータで実施されることがある。このようなハードウェア、ファームウェア、およびソフトウェアは、ビデオカードまたはその他の外部若しくは内部コンピュータシステム周辺機器に具現化することも可能である。種々の機能はカスタム化されたFPGA若しくはASIC、または、他の再構成可能なプロセッサの中に提供可能であるが、いくつかの機能はマネージメントまたはホストプロセッサの中に提供可能である。このような処理機能は、パーソナルコンピュータ、デスクトップコンピュータ、ラップトップコンピュータ、メッセージプロセッサ、ハンドヘルド装置、マルチプロセッサシステム、マイクロプロセッサベースまたはプログラマブルな民生エレクトロニクス、ゲームコンソール、ネットワークPC、ミニコンピュータ、メインフレームコンピュータ、携帯電話機、PDA、ページャなどで使用されることがある。   The functions and method aspects described above and / or in the claims may be implemented on a special purpose or general purpose computer including computer hardware, as described in detail below. Such hardware, firmware, and software can also be embodied on a video card or other external or internal computer system peripheral. Various functions can be provided in a customized FPGA or ASIC, or other reconfigurable processor, but some functions can be provided in a management or host processor. Such processing functions include personal computers, desktop computers, laptop computers, message processors, handheld devices, multiprocessor systems, microprocessor-based or programmable consumer electronics, game consoles, network PCs, minicomputers, mainframe computers, mobile phones It may be used in telephones, PDAs, pagers, etc.

さらに、図1のリンク112、121および118のような図に表された通信リンクおよび他のデータフローと、他の図における類似したリンクとは、特定された機能の実施に依存する種々の方式で実施することが可能である。例えば、交差テストユニット109が、1若しくはそれ以上のCPUで動く複数のスレッドを含む場合、リンク118は、レイデータ記憶装置105にアクセスできるようにするため、このような(複数の)CPUおよび適切なメモリ・コントローラ・ハードウェア/ファームウェア/ソフトウェアの物理的なメモリアクセス資源を含むことが可能である。さらなる実施例として、交差テスト領域140がPCIエクスプレスバスによってホスト140に接続されたグラフィックスカード上にある場合、リンク121および112はPCIエクスプレスバスを使用して実施される。   In addition, communication links and other data flows represented in diagrams such as links 112, 121 and 118 in FIG. 1 and similar links in other diagrams can vary in various ways depending on the implementation of the specified function. Can be implemented. For example, if the intersection test unit 109 includes multiple threads running on one or more CPUs, the link 118 may be configured with such CPU (s) and appropriate to allow access to the ray data storage device 105. Physical memory access resources of various memory controllers, hardware / firmware / software. As a further example, if cross test area 140 is on a graphics card connected to host 140 by a PCI express bus, links 121 and 112 are implemented using the PCI express bus.

本明細書中に記載されているような交差テストは、大規模システムおよびシステムのコンポーネントとの関係において一般に存在する。例えば、処理は、ローカルまたはワイド・エリア・ネットワークのようなネットワーク上に分散させることが可能であり、そうでなければ、ピア・ツー・ピア・テクノロジなどを使用して実施されることもできる。タスクの分割は、製品若しくはシステムの所望の性能、所望の価格、または、これらの何らかの組み合わせに基づいて決定可能である。上記ユニットのいずれかを少なくとも部分的にソフトウェアで実施する実施形態では、単位機能を示すコンピュータ実行可能な命令は、例えば、磁気ディスク、光ディスク、フラッシュメモリ、USB装置、または、NAS若しくはSAS機器のようなネットワーク型のストレージ装置などのようなコンピュータ読み取り可能な媒体に格納可能である。処理のためのデータのような他の適当な情報もまたこのような媒体に格納可能である。   Cross testing as described herein generally exists in the context of large systems and system components. For example, the processing can be distributed over a network such as a local or wide area network, otherwise it can be implemented using peer-to-peer technology or the like. The division of tasks can be determined based on the desired performance of the product or system, the desired price, or some combination thereof. In embodiments in which any of the above units is implemented at least in part by software, the computer-executable instructions indicating the unit function are, for example, a magnetic disk, an optical disk, a flash memory, a USB device, or a NAS or SAS device. It can be stored in a computer-readable medium such as a network-type storage device. Other suitable information such as data for processing can also be stored on such media.

同様に、いくつかの場合に、専門用語は、要点を当業者により合理的に伝えると考えられるので、本明細書中で使用されているが、このような専門用語は開示された実施例および他の態様によって包含される実施の範囲を暗黙的に制限するように考えられるべきではない。例えば、レイは、時には始点および方向を有しているといわれることがあり、これらの別個の項目のうちの1つずつは、本開示内容の態様を理解するため、3次元空間内の点、および、3次元空間内の方向ベクトルをそれぞれ表現しているとして見なすことが可能である。しかし、レイを表現するための種々の他の方法のいずれかが提供されることが可能であり、本開示内容の範囲内にとどまる。例えば、レイ方向は極座標で表現されることも可能である。一つのフォーマットで提供されたデータは、当初に表現されていたデータの情報の有意性を維持したまま、別のフォーマットに変換されるか、または、マップされることが可能であることも理解されることになる。   Similarly, in some cases, terminology will be used herein because it is believed that the gist will be reasonably conveyed by one of ordinary skill in the art, such terminology may be used in the disclosed examples and It should not be considered to implicitly limit the scope of implementation encompassed by other aspects. For example, a ray is sometimes referred to as having a starting point and direction, each one of these separate items being a point in three-dimensional space to understand aspects of the present disclosure, In addition, it can be considered that each direction vector in the three-dimensional space is expressed. However, any of a variety of other ways to represent a ray can be provided and remain within the scope of this disclosure. For example, the ray direction can be expressed in polar coordinates. It is also understood that data provided in one format can be converted or mapped to another format while maintaining the significance of the data information originally represented. Will be.

同様に、ある程度の数の実施例が先行の開示内容において図示され、説明され、各実施例は、特許請求の範囲に従って具現化されたシステム、方法、および、コンピュータ読み取り可能な媒体に格納されたコンピュータ実行可能な命令である種々の態様を図示する。必然的に、必ずしもあらゆる実施例があらゆる態様を図示できなくてもよく、実施例はこのような態様の排他的なコンポーネントを図示しない。その代わりに、1つの図面または実施例に関連して図示され、説明された態様は使用されることが可能であり、または、他の図に関して図示され、説明された態様との組み合わせが可能である。従って、当業者は、これらの開示内容から、上記開示内容が請求項による実施形態の構成要素に関して制限的ではなく、それどころか、請求項の範囲は本明細書中の発明の実施形態の広がりおよび範囲を定義することを理解することになる。   Similarly, a number of embodiments are illustrated and described in the preceding disclosure, each embodiment stored in a system, method and computer-readable medium embodied in the claims. Fig. 3 illustrates various aspects of computer-executable instructions. Naturally, not all embodiments may illustrate every aspect, and examples do not illustrate the exclusive components of such aspects. Instead, the aspects illustrated and described in connection with one drawing or example can be used, or can be combined with the aspects illustrated and described with respect to other figures. is there. Accordingly, those skilled in the art from this disclosure will not be construed as limiting the disclosure above with respect to the components of the claimed embodiments, but rather the scope of the claims is the breadth and scope of the embodiments of the invention herein. You will understand defining.

Claims (12)

シーン内のレイを交差テストする装置によって実行される方法であって、
一又は複数のプロセッサによって、
階層的なアクセラレイション構造体にある複数の点に第1レイグループのレイをトレースするステップであって、前記階層的なアクセラレイション構造体の前記点の各々が、レイトレース中のシーンのプリミティブのグループの境界3次元空間で示すステップと、
前記階層的なアクセラレイション構造体にある前記複数の点の少なくとも幾つかに第2レイグループのレイをトレースするステップと、
レイがトレースされた前記階層的なアクセラレイション構造体の点の共通性に基づいて、前記第1のグループのレイ及び前記第2のグループのレイをそれぞれ、第3レイグループへと組み合わせるステップと、
テストされる第3レイグループの各々に関連する、前記アクセラレイション構造体にあるそれぞれの点の子である複数のノードとの交差について、一又は複数の前記第3のレイグループのレイを同時にテストすることによって、前記第3レイグループの少なくとも幾つかからさらに前記階層的なアクセラレイション構造体へとレイグループをトレースすることを継続するステップとを備える、
装置によって実施される方法。
A method performed by an apparatus for cross-testing rays in a scene,
By one or more processors
Tracing a ray of a first ray group to a plurality of points in a hierarchical acceleration structure, wherein each of the points of the hierarchical acceleration structure includes a primitive of a scene being raytraced; Showing the boundaries of the group in a three-dimensional space ;
Tracing a ray of a second ray group to at least some of the plurality of points in the hierarchical acceleration structure;
Combining the ray of the first group and the ray of the second group into a third ray group, respectively, based on the commonality of the points of the hierarchical acceleration structure in which rays are traced;
Test one or more of the third ray groups simultaneously for intersections with nodes that are children of respective points in the acceleration structure associated with each of the third ray groups being tested. Continuing to trace ray groups from at least some of the third ray groups further into the hierarchical acceleration structure.
A method implemented by an apparatus.
シーン内のレイを交差テストする装置によって実行される方法であって、
一又は複数のプロセッサによって、
階層的なアクセラレイション構造体にある複数の点に第1レイグループのレイをトレースするステップであって、前記階層的なアクセラレイション構造体の前記点の各々が、レイトレース中のシーンのプリミティブのグループの境界3次元空間で示すステップと、
前記階層的なアクセラレイション構造体にある前記複数の点の少なくとも幾つかに第2レイグループのレイをトレースするステップと、
レイがトレースされた前記階層的なアクセラレイション構造体の点の共通性に基づいて、前記第1グループのレイ及び前記第2グループのレイをそれぞれ、第3レイグループへと組み合わせるステップと、
該第3レイグループのそれぞれに関連する前記アクセラレイション構造体にある点の子である複数のノードとの交差について、前記第3レイグループの一つからレイを同時にテストすることによって、前記第3のレイグループの少なくとも幾つかからさらに前記階層的なアクセラレイション構造体へとレイグループをトレースするステップと、
階層的なアクセラレイション構造体にある複数の点に第1レイグループのレイをトレースするステップであって、前記階層的なアクセラレイション構造体の前記点の各々が、レイトレース中のシーンのプリミティブのグループの境界3次元空間で示すステップと、
前記階層的なアクセラレイション構造体にある前記複数の点の少なくとも幾つかに第2レイグループのレイをトレースするステップと、
前記アクセラレイション構造体にある前記複数の点の内の一又は複数の子である前記複数のノードを伴う前記複数の点の内の前記一又は複数の点からレイを交差について同時にテストすることによって、前記階層的なアクセラレイション構造体にある前記複数の点の少なくとも幾つかからさらに前記階層的なアクセラレイション構造体へとレイグループをトレースするステップと、
を備える装置によって実施される方法。
A method performed by an apparatus for cross-testing rays in a scene,
By one or more processors
Tracing a ray of a first ray group to a plurality of points in a hierarchical acceleration structure, wherein each of the points of the hierarchical acceleration structure includes a primitive of a scene being raytraced; Showing the boundaries of the group in a three-dimensional space ;
Tracing a ray of a second ray group to at least some of the plurality of points in the hierarchical acceleration structure;
Combining the first group of rays and the second group of rays into a third ray group, respectively, based on the commonality of points of the hierarchical acceleration structure in which the rays are traced;
The third ray group is tested by simultaneously testing rays from one of the third ray groups for intersections with a plurality of nodes that are children of points in the acceleration structure associated with each of the third ray groups. Tracing ray groups from at least some of the ray groups further into the hierarchical acceleration structure;
Tracing a ray of a first ray group to a plurality of points in a hierarchical acceleration structure, wherein each of the points of the hierarchical acceleration structure includes a primitive of a scene being raytraced; Showing the boundaries of the group in a three-dimensional space ;
Tracing a ray of a second ray group to at least some of the plurality of points in the hierarchical acceleration structure;
By simultaneously testing a ray for intersection from the one or more points of the plurality of points with the plurality of nodes being one or more children of the plurality of points in the acceleration structure Tracing a ray group from at least some of the plurality of points in the hierarchical acceleration structure to the hierarchical acceleration structure;
A method implemented by an apparatus comprising:
前記階層的なアクセラレイション構造体でさらに移動するために、前記第3レイグループからレイグループを選択するステップをさらに含み、
前記選択するステップは、どの第3のグループがさらに移動する準備ができているかを決定し、当該決定が、コレクションのいずれもさらに移動することについて準備ができていないものである場合には、異なるレイグループのために前記移動と組み合わせを繰り返すことを含む、
請求項1に記載の装置によって実施される方法。
Selecting a ray group from the third ray group for further movement in the hierarchical acceleration structure;
The step of selecting determines which third group is ready to move further, and the decision is different if none of the collection is ready to move further Including repeating the move and combination for a ray group,
A method performed by the apparatus of claim 1.
前記トレーシングは、各レイグループのレイを、これらのレイを有する前記レイグループに関連する前記アクセラレイション構造体の前記点のそれぞれに基づいて識別される前記階層的なアクセラレイション構造体の一連の要素と同時に、テストすることによって実施される、
請求項1に記載の装置によって実施される方法。
The tracing is a series of hierarchical acceleration structures that are identified based on each of the points of the acceleration structure associated with the ray group having those rays. Carried out by testing at the same time as the element,
A method performed by the apparatus of claim 1.
前記階層的なアクセラレイション構造体の前記点は、軸方向整列バウンディングボックス、球体及びkDツリーの平面を切断することによって定められる容量からの選択を含む、
請求項1に記載の装置によって実施される方法。
The points of the hierarchical acceleration structure include a selection from a capacity defined by cutting the plane of the axial alignment bounding box, sphere, and kD tree;
A method performed by the apparatus of claim 1.
シーン内のレイのトレーシングを制御する装置であって、
メモリ及び、形状との交差についてレイをテストすることができるテスタに結合されるプロセッサを備え、
前記プロセッサは、
前記メモリ内にあるデータの格納を制御し、
前記メモリ内において、第1コレクションのレイが交差テストされるシーンの第1領域を伴う前記第1コレクションのレイに関連するデータ及び前記第1領域の各部分と複数の第2コレクションのレイと関連するデータを格納し、
前記シーンの前記第1領域との交差について、前記第1コレクションのレイの各レイのテスト結果を受け取り、前記シーンの前記第1領域と交差することが明らかとなった各レイに関して、追加を示すデータを前記メモリに格納することによって、当該レイを前記複数の第2コレクションの各々に追加して、前記第2コレクションの各々に関連する前記シーンの前記第1領域の一部のそれぞれとの交差に関するテストを待つ、
ことによって、前記テスタから交差テストの結果を受け取る、
ことを特徴とする装置。
A device that controls the tracing of rays in a scene,
A processor coupled to a memory and a tester capable of testing a ray for intersection with a shape;
The processor is
Control the storage of data in the memory;
In the memory, data associated with the first collection of rays with a first region of the scene in which the first collection of rays is cross-tested and associated with each portion of the first region and a plurality of second collection of rays Store the data you want to
For the intersection with the first region of the scene, receive the test results for each ray of the first collection of rays and indicate additions for each ray found to intersect the first region of the scene By storing data in the memory, the ray is added to each of the plurality of second collections and intersects with each of the portions of the first region of the scene associated with each of the second collections. Wait for the test,
By receiving the result of the cross test from the tester,
A device characterized by that.
前記プロセッサは、前記複数の第2コレクション及び前記第1コレクションのレイに関連する前記シーンの領域に関する識別子に基づいて参照可能な複数のロケーションにメモリを論理的に分離するためのものである、
ことを特徴とする請求項6に記載の装置。
The processor is for logically separating memory into a plurality of locations that can be referenced based on identifiers for regions of the scene associated with the plurality of second collections and the rays of the first collection;
The apparatus according to claim 6.
前記プロセッサは、前記第1のコレクション及び前記複数の第2のコレクションの各々にある前記レイの識別子を、そのようなレイコレクションに関連する前記シーンの前記領域に関する前記識別子のハッシュ値に基づいて識別可能な各コレクションに対するそれぞれのロケーションで、前記メモリに格納するためのものである、
ことを特徴とする請求項7に記載の装置。
The processor identifies an identifier of the ray in each of the first collection and the plurality of second collections based on a hash value of the identifier for the region of the scene associated with such ray collection. For storage in the memory at a respective location for each possible collection;
The apparatus according to claim 7.
前記プロセッサは、前記シーンの領域に関する前記識別子をハッシュして、前記シーンの当該領域に関連するレイのコレクションが格納され得る前記メモリの候補ロケーションを識別するように動作する、
ことを特徴とする請求項7に記載の装置。
The processor operates to hash the identifier for the region of the scene to identify candidate locations in the memory where a collection of rays associated with the region of the scene can be stored.
The apparatus according to claim 7.
前記プロセッサは、コレクション全体及び、全体より少ないコレクションの混合を選択することによって、前記第1のコレクション及び前記複数の第2のコレクションのレイの交差テストをスケジューリングするためのものである、
ことを特徴とする請求項6に記載の装置。
The processor is for scheduling ray-crossing tests of the first collection and the plurality of second collections by selecting a whole collection and a mixture of collections less than the whole;
The apparatus according to claim 6.
前記プロセッサは、前記レイのコレクションを格納するためのメモリにおける空間の消費量が使用量基準を超えることを決定することに応答して、全体より少ないコレクションの数を増やす、
ことを特徴とする請求項10に記載の装置。
The processor increases the number of collections less than the total in response to determining that the amount of space consumed in memory to store the collection of rays exceeds a usage criterion;
The apparatus according to claim 10.
前記プロセッサは、選択されたコレクション全体及び全体より少ないコレクションの混合をコレクションの準備完了リストに出力するためのものであり、前記準備完了リストからコレクションのレイの識別子を読み取り、前記テスタを備える複数のテストセル間にレイの前記識別子を分散するためのアービターをさらに備える、
ことを特徴とする請求項10に記載の装置。
The processor is for outputting an entire selected collection and a mixture of less than collections to a collection ready list, reads a collection ray identifier from the ready list, and comprises a plurality of testers Further comprising an arbiter for distributing said identifiers of rays between test cells;
The apparatus according to claim 10.
JP2014029356A 2008-03-21 2014-02-19 Parallelized cross-test and shading architecture for ray-trace rendering Active JP5740704B2 (en)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US3873108P 2008-03-21 2008-03-21
US61/038,731 2008-03-21
US9589008P 2008-09-10 2008-09-10
US61/095,890 2008-09-10

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2011500994A Division JP5485257B2 (en) 2008-03-21 2009-03-20 Parallelized cross-test and shading architecture for ray-trace rendering

Publications (2)

Publication Number Publication Date
JP2014089773A JP2014089773A (en) 2014-05-15
JP5740704B2 true JP5740704B2 (en) 2015-06-24

Family

ID=40886951

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2011500994A Active JP5485257B2 (en) 2008-03-21 2009-03-20 Parallelized cross-test and shading architecture for ray-trace rendering
JP2014029356A Active JP5740704B2 (en) 2008-03-21 2014-02-19 Parallelized cross-test and shading architecture for ray-trace rendering

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2011500994A Active JP5485257B2 (en) 2008-03-21 2009-03-20 Parallelized cross-test and shading architecture for ray-trace rendering

Country Status (4)

Country Link
JP (2) JP5485257B2 (en)
KR (1) KR101550477B1 (en)
CN (2) CN104112291B (en)
WO (1) WO2009117691A2 (en)

Families Citing this family (45)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100064291A1 (en) * 2008-09-05 2010-03-11 Nvidia Corporation System and Method for Reducing Execution Divergence in Parallel Processing Architectures
CN101826215B (en) * 2010-04-19 2012-05-09 浙江大学 Real-time secondary ray tracing concurrent rendering method
CN102074039B (en) * 2010-09-29 2012-12-19 深圳市蓝韵网络有限公司 Method for drawing volume rendering cutting surface
KR101845231B1 (en) 2011-06-14 2018-04-04 삼성전자주식회사 Image processing apparatus and method
US20130033507A1 (en) * 2011-08-04 2013-02-07 Nvidia Corporation System, method, and computer program product for constructing an acceleration structure
CN102426710A (en) * 2011-08-22 2012-04-25 浙江大学 Surface area heuristic construction KD (K-dimension) tree parallel method on graphics processing unit
US9595074B2 (en) 2011-09-16 2017-03-14 Imagination Technologies Limited Multistage collector for outputs in multiprocessor systems
KR102042539B1 (en) * 2012-07-24 2019-11-08 삼성전자주식회사 Method and apparatus for ray tracing
CN102855655A (en) * 2012-08-03 2013-01-02 吉林禹硕动漫游戏科技股份有限公司 Parallel ray tracing rendering method based on GPU (Graphic Processing Unit)
KR102080851B1 (en) 2012-09-17 2020-02-24 삼성전자주식회사 Apparatus and method for scheduling of ray tracing
GB2546020B (en) * 2012-11-02 2017-08-30 Imagination Tech Ltd Method of scheduling discrete productions of geometry
US10970912B2 (en) 2013-03-14 2021-04-06 Imagination Technologies Limited 3-D graphics rendering with implicit geometry
GB2513699B (en) * 2013-03-14 2017-01-11 Imagination Tech Ltd 3-D Graphics rendering with implicit geometry
GB2550091B (en) * 2013-03-15 2018-04-04 Imagination Tech Ltd Rendering with point sampling and pre-computed light transport information
CN103279974A (en) * 2013-05-15 2013-09-04 中国科学院软件研究所 High-accuracy high-resolution satellite imaging simulation engine and implementation method
US11257271B2 (en) 2013-09-26 2022-02-22 Imagination Technologies Limited Atomic memory update unit and methods
CN104516831B (en) * 2013-09-26 2019-02-22 想象技术有限公司 Atomic memory updating unit and method
KR102116981B1 (en) * 2013-10-02 2020-05-29 삼성전자 주식회사 Method and Apparatus for accelerating ray tracing
KR102193684B1 (en) * 2013-11-04 2020-12-21 삼성전자주식회사 Apparatus and method for processing ray tracing
US9697640B2 (en) * 2014-04-21 2017-07-04 Qualcomm Incorporated Start node determination for tree traversal in ray tracing applications
KR102219289B1 (en) * 2014-05-27 2021-02-23 삼성전자 주식회사 Apparatus and method for traversing acceleration structure in a ray tracing system
EP3012805A1 (en) * 2014-10-21 2016-04-27 The Procter and Gamble Company Synthesizing an image of fibers
KR102282896B1 (en) 2014-12-23 2021-07-29 삼성전자주식회사 Image processing apparatus and method
KR102493461B1 (en) * 2015-08-31 2023-01-30 삼성전자 주식회사 System and Method of rendering
US10262456B2 (en) 2015-12-19 2019-04-16 Intel Corporation Method and apparatus for extracting and using path shading coherence in a ray tracing architecture
US9892544B2 (en) * 2015-12-22 2018-02-13 Intel Corporation Method and apparatus for load balancing in a ray tracing architecture
US10282890B2 (en) * 2016-09-29 2019-05-07 Intel Corporation Method and apparatus for the proper ordering and enumeration of multiple successive ray-surface intersections within a ray tracing architecture
US10445852B2 (en) * 2016-12-22 2019-10-15 Apple Inc. Local image blocks for graphics processing
KR101826123B1 (en) 2017-07-14 2018-02-07 한국과학기술정보연구원 Unstructured Grid Volume Rendering METHOD AND APPARATUS
US10438397B2 (en) * 2017-09-15 2019-10-08 Imagination Technologies Limited Reduced acceleration structures for ray tracing systems
CN107895400A (en) * 2017-11-09 2018-04-10 深圳赛隆文化科技有限公司 A kind of three-dimensional cell domain object of virtual reality renders analogy method and device
US11138009B2 (en) * 2018-08-10 2021-10-05 Nvidia Corporation Robust, efficient multiprocessor-coprocessor interface
KR102143155B1 (en) * 2018-08-14 2020-08-10 국방과학연구소 Asymptotic high frequency method and device using Grouping of Rays
US10970914B1 (en) * 2019-11-15 2021-04-06 Imagination Technologies Limited Multiple precision level intersection testing in a ray tracing system
CN111105341B (en) * 2019-12-16 2022-04-19 上海大学 Framework method for solving computational fluid dynamics with low power consumption and high operational performance
CN111177014B (en) * 2020-02-24 2023-02-24 重庆长安新能源汽车科技有限公司 Software automatic test method, system and storage medium
US11373358B2 (en) * 2020-06-15 2022-06-28 Nvidia Corporation Ray tracing hardware acceleration for supporting motion blur and moving/deforming geometry
US11508112B2 (en) * 2020-06-18 2022-11-22 Nvidia Corporation Early release of resources in ray tracing hardware
US11367242B2 (en) * 2020-07-30 2022-06-21 Apple Inc. Ray intersect circuitry with parallel ray testing
US11875448B2 (en) 2020-07-30 2024-01-16 Apple Inc. SIMD group formation techniques during ray intersection traversal
CN114331801B (en) * 2020-09-30 2024-04-02 想象技术有限公司 Intersection testing for ray tracing
CN112190937A (en) * 2020-10-10 2021-01-08 网易(杭州)网络有限公司 Illumination processing method, device, equipment and storage medium in game
GB2599182B (en) * 2021-03-23 2022-10-26 Imagination Tech Ltd Intersection testing in a ray tracing system
US11922026B2 (en) 2022-02-16 2024-03-05 T-Mobile Usa, Inc. Preventing data loss in a filesystem by creating duplicates of data in parallel, such as charging data in a wireless telecommunications network
CN115640138B (en) * 2022-11-25 2023-03-21 摩尔线程智能科技(北京)有限责任公司 Method and apparatus for ray tracing scheduling

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01149183A (en) * 1987-12-05 1989-06-12 Fujitsu Ltd Method for forming
EP0439260B1 (en) * 1990-01-23 1998-08-19 Hewlett-Packard Company Distributed processing apparatus and method for use in global rendering
KR100300969B1 (en) * 1996-04-25 2001-10-22 윤종용 Method for extracting crossfoot test area in ray tracing and rendering device thereof
JPH11353496A (en) * 1998-06-10 1999-12-24 Ken Nishimura Intersection search device for light ray tracing
US6556200B1 (en) * 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
US6724856B2 (en) * 2002-04-15 2004-04-20 General Electric Company Reprojection and backprojection methods and algorithms for implementation thereof
DE10239672B4 (en) * 2002-08-26 2005-08-11 Universität des Saarlandes Method and device for generating a two-dimensional image of a three-dimensional structure
US7043579B2 (en) * 2002-12-05 2006-05-09 International Business Machines Corporation Ring-topology based multiprocessor data access bus
DE102004007835A1 (en) * 2004-02-17 2005-09-15 Universität des Saarlandes Device for displaying dynamic complex scenes
FR2896895B1 (en) * 2006-02-01 2008-09-26 Redway Soc Par Actions Simplifiee METHOD FOR SYNTHESIZING A VIRTUAL IMAGE BY LAUNCHING BEAMS
CA2649745A1 (en) * 2006-04-19 2007-11-01 Mental Images Inc. Instant ray tracing
CN101127126B (en) * 2006-08-16 2012-09-26 腾讯科技(深圳)有限公司 Method and device for emulating secondary surface dispersion effect of non-physical model
US8237711B2 (en) 2007-11-19 2012-08-07 Caustic Graphics, Inc. Tracing of shader-generated ray groups using coupled intersection testing

Also Published As

Publication number Publication date
CN104112291B (en) 2017-03-29
WO2009117691A2 (en) 2009-09-24
WO2009117691A4 (en) 2009-12-30
WO2009117691A3 (en) 2009-11-12
JP2014089773A (en) 2014-05-15
JP5485257B2 (en) 2014-05-07
CN104112291A (en) 2014-10-22
CN102037497A (en) 2011-04-27
JP2011515766A (en) 2011-05-19
KR20100128337A (en) 2010-12-07
KR101550477B1 (en) 2015-09-04
CN102037497B (en) 2014-06-11

Similar Documents

Publication Publication Date Title
JP5740704B2 (en) Parallelized cross-test and shading architecture for ray-trace rendering
US10789758B2 (en) Ray tracing in computer graphics using intersection testing at selective resolution
US8854369B2 (en) Systems and methods for concurrent ray tracing
EP3483838B1 (en) Systems and methods for rendering with ray tracing
US9183668B2 (en) Ray tracing system architectures and methods
US11205295B2 (en) Ray tracing system architectures and methods
Rincón-Nigro Cost-Based Workload Balancing for Ray Tracing on a Heterogeneous Platform

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20140219

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20141222

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150107

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150303

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20150401

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20150403

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150407

R150 Certificate of patent or registration of utility model

Ref document number: 5740704

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250