KR20100128337A - Architectures for parallelized intersection testing and shading for ray-tracing rendering - Google Patents
Architectures for parallelized intersection testing and shading for ray-tracing rendering Download PDFInfo
- Publication number
- KR20100128337A KR20100128337A KR1020107023579A KR20107023579A KR20100128337A KR 20100128337 A KR20100128337 A KR 20100128337A KR 1020107023579 A KR1020107023579 A KR 1020107023579A KR 20107023579 A KR20107023579 A KR 20107023579A KR 20100128337 A KR20100128337 A KR 20100128337A
- Authority
- KR
- South Korea
- Prior art keywords
- ray
- test
- data
- rays
- cross
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/06—Ray-tracing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/50—Lighting effects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T17/00—Three dimensional [3D] modelling, e.g. data description of 3D objects
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computer Graphics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Image Generation (AREA)
- Geometry (AREA)
- Software Systems (AREA)
- Image Processing (AREA)
Abstract
일 예에서, 장면에 대한 광선 추적 방법은, 링크/큐를 통해 집합적으로 통신 가능한, 복수의 세이딩 자원에 연결된 복수의 교차 테스트 자원을 사용하는 것을 포함한다. 세이딩에 대한 테스트로부터 생성된 큐는 개별적인 광선/원형 교차부 식별결과를 포함하고, 이는 광선 식별기를 포함한다. 테스트 큐의 세이딩은 테스트를 위한 새로운 광선의 식별기를 포함하고, 광선을 정의하는 데이터는 교차 테스트 자원 사이에 분산된 메모리에 개별적으로 저장된다. 광선 정의 데이터는, 광선이 교차 테스트를 완료할 때까지 분산된 메모리에서 유지될 수 있으며, 광선 식별기에 근거하여 여러 번 테스트를 위해 선택될 수 있다. 가속 모양의 구조가 사용될 수 있다. 광선 식별기 및 모양 데이터의 패킷은 교차 테스트 자원 사이에서 순환할 수 있고, 각각의 자원은 패킷에서 식별되며, 그 정의 데이터가 메모리에 존재하는 광선을 테스트할 수 있다. 가속 모양 테스트 결과는 교차된 모양에 근거하여 광선의 수집을 허용하고, 가장 인접한 검출 광선/원형 교차부가 세이딩을 위해 광신 식별기를 큐잉함으로서 식별된다. In one example, the ray tracing method for the scene includes using a plurality of cross test resources coupled to the plurality of shading resources, which are collectively communicateable via a link / queue. The cue generated from the test for shading contains individual ray / circular intersection identifications, which include ray identifiers. The shading of the test queue includes an identifier of the new beam for testing, and the data defining the beam are stored separately in memory distributed among the cross test resources. The ray definition data may be maintained in distributed memory until the ray completes the crossover test and may be selected for testing multiple times based on the ray identifier. Acceleration shaped structures can be used. Packets of ray identifiers and shape data may cycle between cross test resources, each resource identified in the packet, and the ray of definition data being tested in the memory being tested. The accelerated shape test results allow the collection of light rays based on the crossed shape and the closest detected light / circular intersections are identified by queuing the fanatic identifier for shading.
Description
본 발명은 3차원 장면으로부터 이차원 표현(representations)을 렌더링하는 방법에 관한 것으로, 더 구체적으로는 장면의 실사 이차원 표현을 가속 렌더링하기 위해 광선 추적법(ray tracing)을 사용하는 방법에 관한 것이다.The present invention relates to a method of rendering two-dimensional representations from a three-dimensional scene, and more particularly to a method of using ray tracing to accelerate rendering a photorealistic two-dimensional representation of a scene.
광선 추적법을 이용하여 실사 이미지를 렌더링하는 방법은 컴퓨터 그래픽 기술 분야에 공지되어 있다. 광선 추적법(ray tracing)은 실사 이미지(현실적인 그림자 및 조명 효과를 포함하는)를 생성하기 위한 것으로 알려져 있다. 광선 추적법은 장면의 구성요소와 빛의 상호 작용에 대한 물리적 동작을 모델링할 수 있기 때문이다. 그러나, 광선 추적법은 계산 집약적으로 알려져 있으며, 현재, 아트 그래픽 워크 스테이션에서도, 광선 추적법을 사용하여 복합적인 장면을 렌더링하기 위해서 상당한 시간을 요한다.Methods of rendering photorealistic images using ray tracing are known in the computer graphics art. Ray tracing is known to produce photorealistic images (including realistic shadows and lighting effects). This is because ray tracing can model the physical behavior of light's interaction with components in the scene. However, ray tracing is known computationally intensive, and even now, even in art graphics workstations, it takes considerable time to render complex scenes using ray tracing.
광선 추적법은 보통, 장면 내 구조물(structure)들의 표면을 묘사하는 삼각형과 같은 기하학적 원형(primitive)으로 구성된 장면 디스크립션(description)을 획득하는 것, 그리고 카메라로부터 시작하여, 장면 객체와의 수많은 가능한 상호작용을 거쳐, 광원을 차단하거나 또는 광원과 교차하지 않고 장면을 빠져나갈 때까지, 광선을 추적함으로써, 장면 내 원형들과 빛이 어떻게 상호작용하는지를 모델링하는 것과 관련된다.Ray tracing usually involves obtaining a scene description consisting of geometric primitives, such as triangles, that depict the surfaces of the structures in the scene, and starting with the camera, numerous possible interactions with scene objects. Actions involve modeling how light interacts with the circles in the scene by tracing the rays until they exit the scene without blocking or intersecting the light source.
예를 들어, 장면(scene)은 거리의 어느 한 편에 위치한 빌딩과 함께, 거리 상의 자동차를 포함할 수 있다. 이러한 장면 내의 자동차는 연속적인 표면에 근접하는 다량의 삼각형(예, 100만 개의 삼각형)에 의해 정의될 수 있다. 장면이 보이는 카메라 위치가 정의된다. 카메라로부터 나온 광선(ray)을 종종 일차 광선(primiary ray)이라 하며, 예를 들면 반사를 가능하기 하기 위해, 하나의 객체에서 다른 객체로 방출된 광선을 이차 광선이라 한다. 선택된 해상도(예, SVGA 디스플레이 용의 1024x768)의 이미지 평면이 카메라와 장면(secence) 사이의 선택된 위치에 배치된다.For example, a scene may include a car on a street, along with a building located on either side of the street. The car in such a scene can be defined by a large amount of triangles (eg, one million triangles) proximate a continuous surface. The camera position at which the scene is visible is defined. Rays from cameras are often called primary rays, and rays emitted from one object to another, for example to enable reflection, are called secondary rays. An image plane of a selected resolution (eg, 1024x768 for SVGA display) is placed at a selected location between the camera and the scene.
알고리즘을 추적하는 가장 간단한 광선 추적법은 카메라로부터 이미지의 각 픽셀을 통해 장면으로 하나 이상의 광선을 주사(casting)하는 것을 포함한다. 각각의 광선은 이어서 이 광선이 교차하는 원형(primitive)을 식별하기 위한 장면을 구성하는 각각의 원형에 대해 테스트되고, 이 원형이 예를 들면, 반사 및/또는 회절시키는 광선에 미치는 영향을 판단한다. 이러한 반사 및/또는 회절은 서로 다른 방향으로 광선이 진행하도록 하며, 광선을, 서로 다른 경로를 취하는 여러 개의 이차 광선으로 분할한다. 이러한 이차 광선 모두는 이어서 이들이 교차하는 원형을 결정하기 위해 장면 원형들에 대해 테스트되고, 이차(및 삼차, 등) 광선이 예를 들면 장면 이탈 또는 광원 충돌에 의해 소거될 때까지, 반복적으로 계속된다. 이러한 광선/원형이 모두 결정되는 동안 이들을 맵핑하는 트리가 생성된다. 광선이 소거된 후, 광원의 기여도(contribution)가 트리를 통해 역 추적되고, 장면의 픽셀에 대한 효과가 결정된다. 이미 이해할 수 있는 바와 같이, 수백만 개의 삼각형과의 교차에 대해 (예를 들면) 1024x768 개의 광선을 테스트하는 계산상의 복잡성으로 인해, 계산상 고비용이 되며, 이러한 광선 수(numbers)는 광선 교차를 이용한 물질 교차의 결과로 발생된 모든 추가 광선을 고려하지 않은 것이다. The simplest ray tracing method of tracking algorithms involves casting one or more rays into the scene from each camera through each pixel of the image. Each ray is then tested for each circle that constitutes a scene to identify primitives that the ray intersects, and determines the effect of the circle on the ray that reflects and / or diffracts, for example. . This reflection and / or diffraction causes the light to travel in different directions and splits the light into several secondary rays that take different paths. All of these secondary rays are then tested against scene primitives to determine the circles with which they intersect, and then repeat repeatedly until secondary (and tertiary, etc.) rays are canceled by, for example, out of scene or light source collision. . While all these rays / circles are determined, a tree is created that maps them. After the ray is canceled, the contribution of the light source is traced back through the tree, and the effect on the pixels of the scene is determined. As can be appreciated, the computational complexity of testing 1024x768 rays (for example) against the intersection with millions of triangles is computationally expensive, and these numbers of rays are the materials that use ray intersection. It does not take into account any additional rays generated as a result of the intersection.
광선 추적법을 이용하여 장면을 렌더링하는 것을 "난감한 병렬 문제(embarrassingly paralle problem)"라 하는데, 이는 생성되는 이미지의 각 픽셀에 누적된 색 정보가 이미지의 나머지 픽셀과 독립적으로 누적될 수 있기 때문이다. 따라서, 최종 이미지를 출력하기 전에 픽셀에 대한 일정한 필터링, 보간 또는 그 외의 처리가 존재함에도, 이미지 픽셀에 대한 색 정보는 병렬적으로 결정될 수 있다. 따라서, 프로세싱 자원들 중 렌터링 될 픽셀을 분할하고, 이러한 픽셀의 렌더링을 병렬로 수행함으로써 지정된 세트의 처리 자원에 대한 이미지를 광선 추적하는 작업(task)을 분할하는 것이 간단하다.Rendering a scene using ray tracing is called an "embarrassingly paralle problem," because the color information accumulated in each pixel of the resulting image can be accumulated independently of the rest of the pixels in the image. . Thus, even though there is constant filtering, interpolation, or other processing for the pixels before outputting the final image, the color information for the image pixels can be determined in parallel. Thus, it is simple to divide the task of ray tracing an image for a specified 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 상에 연결된 컴퓨터 클러스터 또는 컴퓨터 코어 클러스터에 관련된다. 이러한 유형의 시스템에 관하여, 지정된 프로세싱 자원(예, 스레드)는 교차 테스팅 및 세이딩(shading)의 완료를 통해 할당된 광선 또는 광선 그룹을 처리하기 위한 예가 될 수 있다. 다르게 설명하면, 픽셀이 서로 독립적으로 렌더링될 수 있는 속성을 이용하여, 서로 다른 픽셀에 기여한 것으로 알려진 광선이, 교차 테스트 될 스레드 또는 프로세싱 자원 사이에 분할도리 수 있으며, 이어서 이러한 교차(intersections)가 세이딩(shade)되고, 이러한 세이딩 연산의 결과를 처리 또는 디스플레이될 스크린 버퍼에 기록한다.In some cases, the processing resource may be a computing platform that supports multiple threading, in other cases involving a computer cluster or computer core cluster connected on a LAN. With respect to this type of system, the designated processing resource (e.g., thread) may be an example for processing allocated rays or groups of rays through the completion of cross testing and shading. In other words, with the property that pixels can be rendered independently of one another, rays known to contribute to different pixels can be split between threads or processing resources to be cross-tested, and then these intersections It is shaded and writes the result of this shading operation to the screen buffer to be processed or displayed.
이러한 종류의 문제를 해결하기 위한 일부 알고리즘 접근법이 제안되었다. 이러한 접근법의 하나는 Matt Pharr 등에 의해 "Rendering Complex Secene with Memory-Coherent Ray Tracing"(Proceedings of SigGraph(1997), 이하에서 "Pharr" 라 함)에 개시된다. Pharr는 광선 추적될 장면을 기하학적 3D 화소(voxel, 복셀) 분할하는 방법에 대해 기술하며, 여기서 각각의 기하학적 복셀은 장면 원형(primitive, 예, 삼각형)을 둘러싸는 정육면체이다. Pharr는 또한 스케줄링 그리드를 중첩(superimposing)하는 방법에 대해 기술하며, 여기서 스케줄링 그리드의 각각의 구성요소는 기하학적 복셀의 일부와 겹쳐질 수 있는 스케줄링 복셀이다(즉, 스케줄링 복셀은 기하학적 복셀의 정육면체와 다른 크기를 가지는 장면 내 볼륨 정육면체이다. 각각의 스케줄링 복셀은 관련 광선 큐(queue)를 가지며, 이는 스케줄링 복셀 내부에 현재 존재하는 광선, 즉 스케줄링 복셀 내에 둘러싸인 광선과, 어떠한 기하학적 복셀이 스케줄링 복셀과 겹치는지에 관한 정보를 포함한다. Some algorithmic approaches have been proposed to solve this kind of problem. One such approach is described by Matt Pharr et al in "Rendering Complex Secene with Memory-Coherent Ray Tracing" (Proceedings of SigGraph (1997), hereinafter referred to as "Pharr"). Pharr describes a method of segmenting a scene to be ray traced into geometric 3D pixels (voxels), where each geometric voxel is a cube surrounding a primitive (eg, triangle). Pharr also describes a method of superimposing a scheduling grid, where each component of the scheduling grid is a scheduling voxel that may overlap with a portion of the geometric voxel (ie, the scheduling voxel is different from the cube of the geometric voxel). Each scheduling voxel has an associated ray queue, which depends on the rays currently present inside the scheduling voxel, i.e. the rays enclosed within the scheduling voxel, and which geometric voxels overlap the scheduling voxel. Contains information about
Pharr는 스케줄링 복셀이 처리될 때, 관련 큐 내의 광선이 스케줄링 복셀에 둘러싸인 기하학적 복셀 내의 원형과의 교차부(intersection)가 테스트된다. 광선과 원형 사이의 교차부가 발견된 경우에, 세이딩 연산이 수행되고, 이는 결과적으로 광선 큐에 부가되는 광선을 생성한다. 이러한 스케줄링 복셀에 교차부가 발견되지 않으면, 광선이 다음의 비-공백 스케줄링 복셀로 진행하고 스케줄링 복셀의 광선 큐에 배치된다. Pharr is tested for the intersection with a circle in a geometric voxel where the rays in the associated queue are surrounded by the scheduling voxel when the scheduling voxel is processed. If the intersection between the ray and the circle is found, a shading operation is performed, which results in the ray being added to the ray queue. If no intersection is found in this scheduling voxel, the beam proceeds to the next non-blank scheduling voxel and is placed in the beam queue of the scheduling voxel.
Pharr는, 이러한 접근법이 추구하는 목적이 장면의 도형을 범용 프로세서에 의해 통상적으로 제공되는 캐시에 맞게 하여, 각각의 스케줄링 복셀 내의 장명 도형이 캐시에 맞춰지는 경우에, 캐시가 이러한 장면 도형과 광선의 교차 테스트 중에 과도한 트래시(하중)를 받지 않도록 한다는 내용을 기술한다.Pharr believes that the goal of this approach is to adapt the scene's geometry to a cache typically provided by a general purpose processor, so that if the lifespan geometry in each scheduling voxel fits into the cache, the cache will be State that you are not subjected to excessive trash (load) during the cross test.
또한, Pharr는, 스케줄링 복셀 내 테스트를 위한 광선을 큐잉함으로써, 원형이 기하학적 캐시로 페치(fetch)될 때, 더 많은 작업이 캐시 상에서 수행될 수 있다는 내용을 기술한다. 다중 스케줄링 복셀에 다음 처리가 이루어지는 경우에, 스케줄링 알고리즘은 기하학적 캐시로 로드될 필요가 있는 도형의 양을 최소화하는 스케줄링 복셀을 선택할 수 있다. Pharr also describes that by queuing a ray for testing in a scheduling voxel, more work can be performed on the cache when the prototype is fetched into the geometric cache. If the next processing is to a multiple scheduling voxel, the scheduling algorithm may select a scheduling voxel that minimizes the amount of geometry that needs to be loaded into the geometric cache.
Pharr는, 특정한 장면이 불균일한 복잡성(에, 장면의 일부에서의 원형의 고 밀도)을 가지는 경우에, 제안된 규칙적인 스케줄링 그리드가 잘 동작하지 않는다는 것을 인식한다. Pharr는 팔진트리(Octree, 옥트리)와 같은 적응성 데이터 구조가 규칙적인 스케줄링 그리드 대신에 사용될 수 있다고 가정한다. 옥트리는 계층(hierarchy)의 각 레벨에서, 장면의 각각의 주 축(예, x, y, 및 z 축)을 따라 부분분할(subdivision) 되도록 함으로써 삼차원 장면 내의 공간적 부분분할을 도입하여, 옥트리 부분분할이 8개의 작은 서브-볼륨을 생성하고, 이들은 예를 들면 각각 8 개의 더 작은 서브-볼륨을 생성할 수 있다. 각각의 서브-볼륨에서, 분할/비분할 플래그(divide/do not divide flag)는 서브-볼륨이 추가로 분할되는지 아닌지 여부를 결정하도록 설정된다. 이러한 서브-볼륨들은, 서브-볼륨 내의 원형(primitive)의 수가 테스트하기에 충분할 만큼 작아질 때까지 부분분할을 표시한다. 따라서, 옥트리에 관하여, 부분분할의 양은 장면의 특정한 부분에 얼마나 많은 원형이 존재하는가에 따라 제어될 수 있다. 이와 같이, 옥트리는 렌더링 될 볼륨의 부분분할의 정도를 변경할 수 있다.Pharr recognizes that the proposed regular scheduling grid does not work well when a particular scene has non-uniform complexity (eg, high density of prototypes in a portion of the scene). Pharr assumes that adaptive data structures such as octrees can be used in place of regular scheduling grids. The octree introduces spatial subdivision within the three-dimensional scene by subdivisioning at each level of the hierarchy along each major axis of the scene (e.g., the x, y, and z axes), thereby octet subdivision. These eight small sub-volumes are produced, which can for example produce eight smaller sub-volumes each. In each sub-volume, a divide / do not divide flag is set to determine whether or not the sub-volume is further divided. These sub-volumes indicate partial partitioning until the number of primitives in the sub-volume is small enough to test. Thus, with respect to the octree, the amount of subdivision can be controlled depending on how many prototypes exist in a particular part of the scene. In this way, the octree can change the degree of subdivision of the volume to be rendered.
Pfister의 미국 특허 번호 6,556,200(이하 'Pfister'라 함)에 유사한 접근법이 설명된다. Pfister는 복수의 스케줄링 블록으로 장면을 분할하는 방법에 대해 기술한다. 광선 큐(queue)가 각각의 블럭으로 제공되고, 각각의 큐 내의 광선이 공간적으로 그리고 임시적으로 의존도 그래프(dependency graph)를 이용하여 순서가 매겨진다. 광선은 의존도 그래프 내에 정의된 순서에 따라 각각의 스케줄링 블록을 통해 추적된다. Pfister는 Pharr의 논문을 참조하고, 하나 이상의 단일형의 그래픽 원형(예, 삼각형에만 한정되는 것은 아님)을 렌더링하고, 스케줄링 블록에 대해 더 복잡한 스케줄링 알고리즘을 고안하기 위한 Pfister의 목적을 추가한다. Pfister는 또한 메모리 계층 내의 다중 캐시 레벨에서 장면 도형의 스테이지 상 하위-부분을 고려한다.A similar approach is described in Pfister US Pat. No. 6,556,200 (hereinafter referred to as 'Pfister'). Pfister describes a method of dividing a scene into a plurality of scheduling blocks. Ray queues are provided in each block, and the rays in each queue are ordered spatially and temporarily using a dependency graph. Rays are tracked through each scheduling block in the order defined in the dependency graph. Pfister consults Pharr's paper, adds the purpose of Pfister to render one or more single graphical prototypes (eg, not limited to triangles), and to devise more complex scheduling algorithms for scheduling blocks. Pfister also considers the sub-parts on the stage of the scene figure at multiple cache levels in the memory hierarchy.
또 다른 접근법은 패킷 추적법(packet tracing)에 관한 것이며, 이러한 패킷 추적법에 대한 일반적인 참조문헌은 Ingo Wald, Philip Slusallek Carsten Benthin 등에 의한 논문 "Interactive Rendering through Coherent Ray Tracing)(Proceedings of EUROGRAPHICS 2001, pp 153-164, 20(3), Machester, United Kindom (Sep. 2001)"이다. 이와 같은 참조문헌에서, 패킷 추적법은 그리드를 통해 유사한 원점(origins)과 방향을 가지는 광선의 패킷을 추적하는 것과 관련된다. 이 광선을 실질적으로 동일한 그리드 위치에서 나와 실질적으로 유사한 방향으로 이동하기 때문에, 이러한 광선의 대부분이 동일한 그리드 위치를 통과해 진행한다. 따라서, 유사한 원점으로부터, 유사한 방향으로 이동하는 광선을 식별하는 것이 필요하다. 이러한 패킷 추적법의 다른 변형예는 광선 패킷의 에지를 구분하기 위해 귀퉁이가 잘린(frustrum, 절두) 광선을 사용하여, 절두 광선이 교차된 복셀을 결정하는데 사용되도록 하고, 이는 지정된 광선 패킷에 대한 연산 수를 줄이는데 도움을 준다(즉, 모든 광선이 교차에 관해 테스트되는 것이 아니라, 패킷의 외부 에지상의 광선만이 테스트 됨). 패킷 추적법은 여전히 유사한 장소에서 나와 유사한 방향으로 진행하는 광선을 식별하여야 한다. 광선 추적 중에 광선이 반사, 회절 및/또는 생성되기 때문에, 이러한 광선을 식별하는 것이 점점 더 어려워질 수 있다. Another approach relates to packet tracing, and a general reference to such packet tracing is described by Ingo Wald, Philip Slusallek Carsten Benthin et al. "Interactive Rendering through Coherent Ray Tracing (Proceedings of EUROGRAPHICS 2001, pp 153-164, 20 (3), Machester, United Kindom (Sep. 2001). ”In these references, packet tracking is similar to tracking packets of rays with similar origins and directions through the grid. Most of these rays travel through the same grid position as they move out of substantially the same grid position, thus identifying rays that move in similar directions from similar origins. Another variant of this packet tracing method is the frustration to distinguish the edges of a ray packet. Using rum truncation, the truncation beam is used to determine the crossed voxels, which helps to reduce the number of operations for a given beam packet (ie, not all beams are tested for crossing, but packets). Only the rays on the outer edge of are tested.) The packet tracing method should still identify the rays traveling from a similar location in a similar direction, as these rays are reflected, diffracted and / or generated during ray tracing. It can be harder and harder to do.
또 다른 접근법은 광선 추적법을 가속화하는 분야에 존재한다. 즉, 하나의 접근법은 광선 상태를 더 능동적으로 관리함으로 캐시 사용을 개선하려는 시도를 한다. Navratil 등의 논문 "Dynamic Ray Scheduling for improved System Performance"(2007 IEEE Symposium on Interactive Ray Tracing (Sep. 2007))은 Pharr의 접근법은 메인 메모리가 프로세서 캐시 트래픽에 적합하지 않게 하는 "광선 상태 폭발(ray state explosion)"(이하, 'Navratil' 이라함)의 단점을 가지는 것으로 설명하고 있다. 이를 해결하기 위해, Navratil은 광선 추적 중에, 광선 상태 및 도형 상태를 "능동적으로 관리"하는데 필요한 제한사항을 가짐으로써, "광선 상태 폭발"을 방지할 것을 제안한다. 하나의 제안사항은 여러 광선의 생성을 별개로 추적하고, 이에 따라 Navratil은 먼저 일차 광선을 추적하고, 이어서 일차 광선이 끝난 뒤에 이차 광선을 추적하는 등과 같은 내용을 설명한다.Another approach exists in the field of accelerating ray tracing. In other words, one approach attempts to improve cache usage by more actively managing ray conditions. Navratil et al. "Dynamic Ray Scheduling for improved System Performance" (2007 IEEE Symposium on Interactive Ray Tracing (Sep. 2007)) suggests that Pharr's approach is a "ray state explosion" that makes main memory unsuitable for processor cache traffic. explosion) "(hereinafter referred to as" Navratil "). To address this, Navratil proposes to prevent "ray state explosion" by having the necessary constraints to "actively manage" ray state and figure state during ray tracing. One suggestion is to track the generation of several rays separately, so Navratil first tracks the primary rays, then the secondary rays after the primary rays are finished.
위와 같은 배경지식은 렌더링에 근거한 광선-추적법을 가속화하는 영역에서 일반적인 사상 및 접근방식의 다양성을 보여준다. 또한, 이러한 참조문헌은 광선 추적법 분야에서 추가적인 장점을 가지는 것으로 보여진다. 그러나, 이러한 참조문헌 및 기술 중 어느 하나에 대한 논의가, 이러한 참조문헌 중 어느 하나 또는 이들의 중심 주제가 이 명세서에 개시된 임의의 주제에 대한 종래 기술이라는 시인 또는 암시인 것은 아니다. 오히려, 이러한 참조문헌은 광선 추적법을 이용한 렌더링에 대한 접근방식으로 차이점을 부각시키는 것을 돕기 위한 것이다. 나아가, 명확한 설명을 위해 이러한 참조문헌 중 임의의 것의 처리가 생략되어야 하고, 명확히 설명될 필요는 없다. The background above shows a variety of general ideas and approaches in the area that accelerate ray-tracing based rendering. This reference also appears to have additional advantages in the field of ray tracing. However, a discussion of any one of these references or techniques is not an admission or suggestion that any one of these references or their central subject matter is prior art on any subject disclosed herein. Rather, these references are intended to help highlight the differences with an approach to ray tracing rendering. Furthermore, the processing of any of these references should be omitted for clarity and need not be clearly described.
일 측면에서, 본 발명의 방법은 3-D 장면의 2-D 표현(representation)을 광선 추적할 시에 복수의 연산 자원을 이용한다. 이 방법은 3-D 장면에서 광선 이동을 이용하여, 하나 이상의 원형 및 도형 가속 구성요소를 포함하는 기하학적 모양을 교차 테스트하기 위한 연산 자원으로 구성된 제 1 서브세트를 사용하는 단계를 포함한다. 제 1 서브세트의 각각의 연산 자원은 장면에서 이동하는 광선의 개별적인 서브세트를 저장하는 개개의 로컬화된 메모리 자원과 통신하도록 동작할 수 있다. 이 방법은 연산 자원의 제 1 서브세트로부터 연산 자원의 제 2 서브세트로 광선과 원형들 사이의 교차부를 식별기를 전송하고, 광선과 원형들 사이의 식별된 교차부와 관련된 세이딩 루틴을 실행하기 위해 연산 자원의 제 2 세트를 사용하는 단계를 포함하며, 세이딩 루틴으로부터의 출력은 교차 테스트 될 새로운 광선을 포함한다. 서브세트 내의 멤버십이 시간-변수일 수 있으며, 또는 시스템 환경 설정시 또는 장면이나 일련의 장면 중 하나를 렌더링하는 동안 인식 포인트 중에 통계적으로 결정된다. In one aspect, the method utilizes a plurality of computational resources in ray tracing a 2-D representation of a 3-D scene. The method includes using a first subset of computational resources for cross testing a geometric shape comprising one or more circular and geometric acceleration components using ray movement in a 3-D scene. Each computing resource of the first subset may be operable to communicate with an individual localized memory resource that stores an individual subset of rays traveling in the scene. The method sends an identifier between the rays and the circles from the first subset of the computational resources to the second subset of the computational resources and executes a shading routine associated with the identified intersection between the rays and the circles. Using a second set of computational resources, and the output from the shading routine includes a new ray to be cross tested. Membership in a subset can be a time-variable, or is determined statistically during recognition point during system configuration or while rendering a scene or one of a series of scenes.
또한, 이 방법은, 로컬화 된 메모리 자원 중 새로운 광선을 정의하는 데이터를 분배하는 단계와, 모양 데이터를 이용하여 제 1 서브세트의 연산 자원에 대한 광선 식별기를 그룹화를 통과하는 단계를 포함한다. 각각의 광선 식별기는 이 광선에 대한 광선 정의 데이터와 다른 데이터를 포함한다. 광선 식별기의 통과는 모양 데이터에 의해 식별된 모양을 가지는 식별 광선의 교차 테스트를 활성화한다. 이러한 테스트는, 각각의 연산 자원에 의해 이의 로컬화된 메모리에 저장된 식별된 광선을 정의하는 데이터를 인출하고, 인출된 정의 데이터에 근거하여 교차부에 대해 식별된 모양을 테스트하며, 통신을 위해 검출된 교차부의 식별 결과(indication)를 출력하는 단계를 포함한다.The method also includes distributing data defining new rays of the localized memory resources and passing the grouping of ray identifiers for the first subset of computational resources using shape data. Each ray identifier includes different ray definition data for this ray. The passage of the ray identifier identifies the cross test of the identification rays having the shape identified by the shape data. This test retrieves the data defining the identified rays stored in its localized memory by each computing resource, tests the identified shape for the intersection based on the retrieved definition data, and detects for communication. Outputting an identification indication of the intersection.
다른 측면에서, 본 발명은 광선 추적을 이용하여 원형으로 구성된 3-D 장면의 2-D 표현을 렌더링하기위한 시스템을 포함한다. 이 시스템은 개별적인 캐시 메모리에 대한 액세스를 포함하는 복수의 교차 테스트 자원을 포함하며, 각각의 캐시 메모리는 광선 정의 데이터의 마스터 카피로 구성된 서브세트를 포함하고, 각각의 광선에 대한 광선 정의 데이터는 그 광선에 대한 테스트가 완료될 때까지 캐시 메모리에 유지된다.In another aspect, the present invention includes a system for rendering a 2-D representation of a 3-D scene constructed in a circle using ray tracing. The system includes a plurality of cross test resources including access to individual cache memories, each cache memory comprising a subset consisting of a master copy of the ray definition data, and the ray definition data for each ray It stays in cache memory until the test for the beam is complete.
또한, 시스템은 개별적인 캐시 메모리 내의 광선에 대한 정의 데이터에 대한 액세스를 가지는 개별적인 테스트 자원에 의해 각각의 광선에 대한 테스트를 제어하도록, 그리고 각각의 광선에 식별기(identifier)를 할당하도록 동작하는 제어 로직을 포함한다. 테스트 제어는 테스트될 광선에 대한 데이터를 저장하는 개별적인 테스트 셀에 광선 식별기를 제공함으로써 영향을 받는다. 시스템은 교차 테스트를 완료한 광선과 교차된 개별적인 원형을 식별하기 위한 출력 큐(queue)를 포함한다. 제어 로직은 캐시 메모리에서 교차 테스트를 완료한 광선을 교체하도록 세이딩 연산의 결과로 얻어진 새로운 광선을 할당한다.The system also has control logic that operates to control the test for each light ray by an individual test resource having access to definition data for the light rays in a separate cache memory, and to assign an identifier to each light ray. Include. Test control is affected by providing ray identifiers to individual test cells that store data for the ray to be tested. The system includes an output queue to identify the individual prototypes crossed with the beams that completed the cross test. The control logic allocates a new beam obtained as a result of the shading operation to replace the cross-tested beam in cache memory.
일부 측면에서, 다음 중 하나 이상이 제공될 수 있다. 제어 로직은 새로운 광선에 대한 식별기로서 완료된 광선에 대한 식별기를 재사용함으로써 교체를 하고, 광선 식별기는 그 광선을 정의하는 개별적인 데이터를 저장하는 메모리 위치에 관계되며, 새로운 광선을 정의하는 데이터는 완료된 광선의 메모리 위치에 저장된 데이터를 대신한다. In some aspects one or more of the following may be provided. The control logic replaces by reusing the identifier for the completed ray as an identifier for the new ray, and the ray identifier relates to a memory location that stores the individual data defining the ray, and the data defining the new ray is the It replaces the data stored in the memory location.
본 발명의 또 다른 측면은 광선 추적법을 이용하여, 원형으로 구성된 3-D 장면의 2-D 표현을 렌더링하는 시스템을 포함한다. 시스템은 3-D 장면을 구성하는 원형을 저장하는 메모리와, 복수의 교차 테스트 자원을 포함한다. 각각의 교차 테스트 자원은 위의 원형 중 하나 이상을 이용하여 장면 내에서 이동하는 하나 이상의 광선을 테스트하도록 동작하고, 검출된 교차부(intersection)의 식별결과를 출력한다. 또한 시스템은 복수의 세이딩 자원을 포함하며, 이들은 각각 검출된 광선/원형 교차부의 삭별 결과로부터 원형과 관련된 세이딩 루틴을 가동하도록 동작한다. 또한 이 시스템은 세이딩 자원으로 검출된 교차부의 식별 결과를 출력하기 위한 제 1 통신 링크와, 교차 테스트 자원으로 세이딩 루틴의 가동 결과 생성된 새로운 광선을 전달하기 위한 제 2 통신 링크를 포함한다. 여기서, 새로운 광선은 교차 테스트 자원으로 보내질 수 있으며, 이들이 보내진 상대적인 순서와 다른 교차 테스트를 완료할 수 있다. 통신 링크들은 FIFO 큐와 같은 큐로 구현될 수 있다.Another aspect of the invention includes a system for rendering a 2-D representation of a 3-D scene constructed in a circle using ray tracing. The system includes a memory for storing prototypes constituting the 3-D scene and a plurality of cross test resources. Each cross test resource operates to test one or more rays moving within the scene using one or more of the above prototypes, and outputs an identification result of the detected intersection. The system also includes a plurality of shading resources, each of which operates to run a shading routine associated with the circle from the result of the detection of the detected ray / circular intersection. The system also includes a first communication link for outputting an identification result of the intersection detected as the shading resource, and a second communication link for delivering a new light beam generated as a result of the operation of the shading routine to the cross test resource. Here, new rays can be sent to the cross test resources and complete cross tests that differ from the relative order in which they were sent. Communication links may be implemented as a queue, such as a FIFO queue.
또 다른 본 발명의 측면은 메인 메모리와 연산 자원들 사이에 분산 메모리를 포함하는 계층적 메모리 구조에 연결된 복수의 연산 자원을 가지는 시스템에서 원형으로 구성된 장면을 광선 추적하는 방법을 포함한다. 여기서, 메인 메모리는 분산 메모리보다 레이턴시가 크다. 이 방법은 분산 메모리 중에 장면에서 교차 테스트될 광선을 정의하는 데이터를 분산시켜, 광선의 서브세트들이 분산 메모리 중 서로 다른 메모리에 저장되도록 하는 단계와, 하나 이상의 기하학적 모양을 가지는 광선 그룹의 교차 테스트를 결정하는 단계를 포함한다. 여기서, 광선 그룹의 멤버들은 여러 분산 메모리에 저장된다. 이 방법은 주 메모리로부터 하나 이상의 모양을 정하는 데이터를 페치하는 단계, 광선 그룹에 관한 기하학적 모양 및 식별기가 이 광선 그룹의 하나의 광선에 대한 데이터를 저장하는 각각의 분산 메모리와 관련된 하나 이상의 연산 자원에 제공하는 단계를 포함한다. 또한 이 방법은 광선에 대한 데이터를 저장하는 분산 메모리 중 하나 이상의 메모리와 관련된 연산 자원을 이용하여 교차에 관한 광선 그룹의 각각의 광선을 테스트하는 단계와, 연산 자원으로부터의 교차 테스트 결과를 수집하는 단계를 포함한다.Another aspect of the invention includes a method for ray tracing a scene comprised in a circle in a system having a plurality of computational resources coupled to a hierarchical memory structure including distributed memory between main memory and computational resources. Here, the main memory has a greater latency than the distributed memory. The method distributes data defining the rays to be cross-tested in the scene in distributed memory, such that subsets of the rays are stored in different memories of the distributed memory, and cross-tests of groups of rays having one or more geometric shapes. Determining. Here, the members of the ray group are stored in several distributed memories. The method involves fetching one or more shape data from main memory, the geometric shape for the ray group and the one or more computational resources associated with each distributed memory where the identifier stores data for one ray of this ray group. Providing a step. The method also includes testing each ray of the ray group with respect to the intersection using a computational resource associated with one or more of the distributed memories that store data for the ray, and collecting cross-test results from the computational resource. It includes.
또 다른 측면은, 3-D 장면을 구성하는 원형을 이용하여 광선을 교차 테스트하는 시스템을 포함한다. 이 시스템은 복수의 교차 테스트 자원을 포함하고, 각각의 교차 테스트 자원은 기하학적 모양을 이용하여 교차에 관해 개개의 광선을 테스트하도록 동작한다. 각각의 개별적인 광선은 각 교차 테스트 자원에 제공된 레퍼런스(reference)에 의해 식별되고, 테스트 자원은 제 1 출력 또는 제 2 출력으로 광선과 기하학적 모양 간의 교차부의 식별 결과(indication)를 출력하도록 동작한다.Another aspect includes a system for cross testing light rays using prototypes that make up a 3-D scene. The system includes a plurality of cross test resources, each cross test resource being operative to test individual rays with respect to cross using geometric shapes. Each individual light ray is identified by a reference provided to each cross test resource, and the test resource is operative to output an identification indication of the intersection between the light ray and the geometry to the first or second output.
하나의 출력은 원형 교차부에 관한 것이고, 다른 출력은 기하학적 가속 요소 교차에 관한 것이다. 예를 들어, 제 1 출력은 복수의 세이딩 자원으로 입력을 제공할 수 있으며, 광선과 원형 사이 교차부의 식별 결과에 관한 것이다. 한편, 제 2 출력은 입력을 광선 컬렉션 매니저로 제공하고, 광선과 기하학적 가속 요소 사이의 교차부의 식별 결과를 수신한다. One output relates to the circular intersection and the other output relates to the geometric acceleration element intersection. For example, the first output may provide an input with a plurality of shading resources, and relates to the result of the identification of the intersection between the beam and the circle. On the other hand, the second output provides an input to the ray collection manager and receives a result of the identification of the intersection between the ray and the geometric acceleration element.
또 다른 측면은 광선 추적 방법을 포함하며, 이 방법은 메인 메모리 자원 내의 원형의 선택을 개별적으로 제한하는 기하학적 가속 요소와 3-D 표현을 구성하는 원형을 저장하는 단계, 장면 내의 교차 테스트 될 광선을 정의하는 단계, 그리고 각 광선에 대한 식별기를 정의하는 단계를 포함한다. 이 방법은 복수의 개별적으로 프로그램가능한 프로세싱 자원을 포함하는 시스템에서, 각각의 프로세싱 자원과 개별적으로 관련된 로컬화 된 메모리 자원에 광선 원점 및 방향 데이터의 일부를 저장하는 단계를 포함한다. 이 방법은 또한 테스트를 위해 스케줄된 광선에 대한 식별기 및 프로세싱 자원에 대한 기하학적 모양의 식별 결과를 제공함으로써 교차 테스트를 위한 광선 스케줄링을 구현하는 단계를 포함한다. 각각의 프로세싱 자원은 자신의 로컬화된 메모리 자원이 임의의 식별된 광선에 대한 광선 정의 데이터를 저장하는지 여부 및 그러한 경우에, 이러한 식별된 기하학적 모양을 이용하여 이러한 광선을 교차 테스트할지 여부를 결정한다.Another aspect includes a ray tracing method, which stores geometric acceleration elements that individually limit the selection of a circle within a main memory resource and a circle that constitutes a 3-D representation; Defining and defining an identifier for each ray. The method includes storing a portion of the ray origin and direction data in a localized memory resource individually associated with each processing resource in a system comprising a plurality of individually programmable processing resources. The method also includes implementing ray scheduling for cross testing by providing an identifier for a ray scheduled for testing and a geometric shape identification result for processing resources. Each processing resource determines whether its localized memory resource stores ray definition data for any identified ray and, in such cases, whether to cross test such ray using this identified geometry. .
또 다른 측면은, 3-D 장면의 2-D 표현을 렌더링하는 데 사용하기 위한 광선을 이용하여 기하학적 모양의 교차 테스트를 할 수 있도록 복수의 프로세싱 자원을 제어하는 시스템을 위한 컴퓨터 판독형 명령을 포함하는 컴퓨터 판독형 매체을 포함한다. 이러한 명령은 원형의 제 1 선택을 제한하는 제 1 기하학적 가속 요소를 교차시키도록 정해진 광선에 대한 식별기 패킷을 액세스하는 단계, 그리고 제 1 기하학적 가속 요소에 의해 제한된 원형의 일부를 제한하는 다른 기하학적 가속 요소를 결정하는 단계를 포함하는 방법을 구현하기 위한 것이다. 또한 이 방법은 각각 광선 식별기를 포함하는 복수의 패킷 그리고 다른 기하학적 가속 소자 중 다른 하나에 대한 개별적인 식별결과를 인스턴스화 하는 단계, 그리고 각각 패킷 내에 식별된 모든 광선보다 적은 수의 광선을 교차 테스트하도록 개별적으로 구성된 복수의 자원들 각각으로 복수의 패킷을 제공하는 단계를 포함한다. 또한, 이 방법은 복수의 연산 자원으로부터 검출된 교차부의 식별 결과를 수신하는 단계, 그리고 임계치의 수신된 식별결과 수보다 적은 식별결과를 가지는 다음의 기하학적 가속 요소를 식별할 때까지 기하학적 가속 요소에 의해 수신된 식별결과를 추적하고, 다음 패킷과의 액세스를 반복하는 단계를 포함한다.Another aspect includes computer readable instructions for a system that controls a plurality of processing resources to enable crossover testing of geometric shapes using light rays for use in rendering a 2-D representation of a 3-D scene. Computer-readable media. Such instructions may include accessing an identifier packet for a beam determined to intersect a first geometric acceleration element that limits the first selection of a circle, and other geometric acceleration elements that limit a portion of the circle limited by the first geometric acceleration element. To implement the method comprising the step of determining. The method also instantiates individual identification results for a plurality of packets each including a beam identifier and another of the other geometric acceleration elements, and individually for cross-testing fewer rays than all the rays identified in each packet. Providing a plurality of packets with each of the configured plurality of resources. In addition, the method further includes receiving an identification result of the intersection detected from the plurality of computational resources, and by means of the geometric acceleration element until identifying the next geometric acceleration element that has fewer identification results than the number of received identification results of the threshold. Tracking the received identification and repeating access to the next packet.
본 발명의 또 다른 추가 측면은, 광선을 이용하여 모양을 교차 테스트하도록 구성된 복수의 연산 자원과, 연산 자원들과 각각 연결된 개별적인 캐시(여기서 각각의 캐시는 장면에서 이동하는 복수의 광선 중 일부를 정의하는 데이터를 저장함)를 포함하는 광선 추적 시스템을 포함하며, 또한, 복수의 연산 자원 사이의 메시지 전달을 위한 채널을 포함한다. 여기서 연산 자원 각각은 복수의 광선 식별기를 포함함에 따라 연산 자원에 의해 수신된 메시지 내의 데이터를 해석하고, 캐시에 저장된 복수의 광선 중 하나를 가지는지 여부를 결정하고, 관련 모양을 이용하여 저장된 임의의 광선을 테스트하도록 구성된다. Another additional aspect of the invention is a plurality of computational resources configured to cross-test shapes using rays, and a separate cache each associated with the computational resources, where each cache defines some of the plurality of rays traveling in the scene. And a channel for message transfer between a plurality of computational resources. Wherein each computational resource includes a plurality of ray identifiers to interpret data in a message received by the computational resource, determine whether to have one of a plurality of rays stored in the cache, and use any associated shape to store any Configured to test the beam.
또 다른 추가 측면은 3-D 장면을 구성하는 원형을 이용하여 광선을 교차 테스트하는 시스템을 포함한다. 이 시스템은 복수의 교차 테스트 자원을 포함하며, 각각이 기하학적 모양과 교차에 관하여 개별적인 광선을 테스트하도록 동작한다. 개별적인 광선은 각각의 교차 테스트 자원에 제공된 레퍼런스(reference)에 의해 식별된다. 각각의 교차 테스트 자원은 또한 제 1 출력이나 제 2 출력으로, 광선과 원형 사이의 교차부의 식별결과를 출력하도록 구성된다. 이 시스템은 또한 복수의 세이딩 자원(이들 각각은 검출된 교차부에 대한 세이딩 코드를 실행하도록 동작함)을 포함하며, 광선에 대한 레퍼런스을 유지하고 테스트될 광선을 식별하기 위한 복수의 교차 테스트 자원으로 광선 레퍼런스(reference)을 제공하도록 동작하는 광선 컬렉션 매니저를 포함한다. 제 1 출력은 복수의 세이딩 자원으로 입력을 제공하고, 광선과 원형 사이의 교차부의 식별결과를 수신하며, 그리고 제 2 출력은 광선 컬렉션 매니저에 입력을 제공하고 광선과 기하학적 가속 요소 사이의 교차부의 식별결과를 수신한다.Another additional aspect includes a system for cross testing light rays using prototypes that make up a 3-D scene. The system includes a plurality of cross test resources, each operative to test individual rays with respect to geometric shapes and crosses. Individual rays are identified by the reference provided to each cross test resource. Each cross test resource is also configured to output, as a first output or a second output, the identification result of the intersection between the ray and the circle. The system also includes a plurality of shading resources, each of which operates to execute shading code for the detected intersection, and a plurality of cross testing resources for maintaining a reference to the rays and identifying the rays to be tested. It includes a ray collection manager that operates to provide ray references. The first output provides an input with a plurality of shading resources, receives an identification of the intersection between the light beam and the circle, and the second output provides an input to the light beam collection manager and provides the input of the intersection between the light beam and the geometric acceleration element. Receive the identification result.
또 다른 추가 측면은 3-D 장면의 2-D 표현을 광선 추적법에 근거한 렌더링을 병렬식으로 사용하기 위한 연산 구성(configuration)을 포함한다. 이는 로컬 캐시에 연결된 프로세서(로컬 캐시는 특정된 기하학적 모양과 교차에 대해 테스트될 복수의 광선을 정의하는 데이터를 저장함); 그리고 이 프로세서에 의해 제공된 입력 큐를 포함한다. 입력 큐에 수신된 데이터는, 식별된 기하학적 모양과의 교차에 관해 테스트 될 광선에 관한 복수의 식별기를 포함함에 따라, 프로세서에 의해 해석될 수 있고, 이 프로세서는 프로세서의 로컬 캐시에 저장된 데이터가 존재하는 큐의 식별된 임의의 광선에 대해서만 정의 데이터를 인출하고, 식별된 기하학적 모양과 이러함 임의의 광선을 교차 테스트하며, 임의의 선택된 교차부의 식별결과를 출력하도록 구성된다.Another further aspect includes a computational configuration for using ray tracing based rendering in parallel with a 2-D representation of a 3-D scene. This includes a processor coupled to a local cache (the local cache stores data defining a plurality of rays to be tested for intersection with a specified geometric shape); And an input queue provided by this processor. The data received in the input queue can be interpreted by the processor as it includes a plurality of identifiers for the light beams to be tested with respect to their intersection with the identified geometric shapes, where the processor has data stored in the processor's local cache. Extract definition data only for the identified arbitrary rays of the queue, cross-test any identified rays with the identified geometric shapes, and output the identification result of any selected intersection.
또 다른 추가 측면은 컴퓨터 판독형 매체를 포함한다. 이 매체는 원형의 선택을 제한하는 기하학적 가속 요소와 교차하도록 정해진 광선에 대한 식별기 패킷에 액세스하고, 교차된 기하학적 가속 요소에 의해 정해진 원형의 일부를 제한하는(경계를 정하는) 다른 기하학적 가속 요소를 결정하는 단계들을 포함하는 광선 추적 방법을 구현하기 위한 컴퓨터 판독형 명령을 포함한다. 또한, 이 방법은 복수의 패킷(각각의 패킷은 광선 식별기를 포함함)과 기하학적 가속 요소들 중 하나의 개별적인 식별결과를 인스턴스화(intantiating)하는 단계, 그리고 복수의 패킷을 각각의 패킷에서 식별된 광선을 교차 테스트하도록 개별적으로 구성된 복수의 연산 자원들 각각으로 제공하는 단계를 포함한다. 또한, 이 방법은 복수의 연산 자원으로부터 검출된 식별결과를 수신하고, 기하학적 가속 요소에 따라 수신된 식별결과를 추적하는 단계를 포함한다. Still further aspects include computer readable media. This medium accesses the identifier packet for a ray defined to intersect the geometric acceleration element that limits the selection of the circle, and determines other geometric acceleration elements that limit (bound) the portion of the circle defined by the crossed geometric acceleration element. Computer-readable instructions for implementing a ray tracing method comprising the steps of: In addition, the method instantiates individual identification results of a plurality of packets (each packet comprising a beam identifier) and one of the geometric acceleration elements, and a plurality of packets of the beams identified in each packet. Providing each of the plurality of computing resources individually configured to cross-test. The method also includes receiving an identification result detected from the plurality of computational resources and tracking the received identification result according to the geometric acceleration factor.
또 다른 추가적인 측면은, 광선 추적 방법을 포함한다. 이 방법은 3-D 정면을 구성하는 원형과 교차에 관해 테스트될 복수의 광선을 정의하는 광선 정의 데이터를 결정하는 단계를 포함한다. 또한 이 방법은 복수의 연산 자원의 개별적인 로컬 메모리 중에 광선 정의 데이터의 서브세트를 분산시키는 단계를 포함하며, 여기서 연산 자원은 기하학적 모양을 이용하여 광선을 교차 테스트하고, 관리 모듈에서, 연산 자원에 의해 교차 테스트 될 복수의 광선 중 수집될 광선을 결정하도록 구성된다. 이러한 컬렉션은 복수의 광선 식별기에 의해 정의되고, 광선 식별기 각각은 광선에 대한 정의 데이터와 다른 데이터를 포함하며, 원형의 일부를 규정하는 규정된 모양과 연관된다. 이 방법은 또한 연산 자원들 간에 이러한 컬렉션을 위한 광선 식별기를 전달함으로써 결정된 컬렉션 광선을 연산 자원이 테스트하도록 하는 단계를 포함하며, 각각의 연산 자원은 연산 자원의 로컬 메모리에 정의 데이터가 저장된 식별된 광선을 교차 테스트함으로써 개별적으로 응답한다.Yet another additional aspect includes a ray tracing method. The method includes determining ray definition data defining a plurality of rays to be tested for intersection with the circles constituting the 3-D facade. The method also includes distributing a subset of the ray definition data in separate local memories of the plurality of computational resources, wherein the computational resource cross-tests the rays using geometric shapes and, in the management module, by the computational resources And determine which of the plurality of light rays to be cross-tested to be collected. This collection is defined by a plurality of ray identifiers, each of which includes definition data for the ray and other data and is associated with a defined shape that defines a portion of the circle. The method also includes causing the computing resource to test the collection beam determined by passing the ray identifier for this collection between the compute resources, each computed resource having an identified ray in which definition data is stored in the local memory of the compute resource. Answer individually by cross-testing
이러한 측면들에서, 로컬 캐시에 저장된 복수의 광선은 제 2 복수의 광선의 분리된 서브세트일 수 있으며, 복수의 광선 식별기 중 일부가 로컬 캐시에 저장된 광선을 식별하고, 제 2 복수의 광선 중 일부가 로컬 캐시에 저장되지 않는다. In these aspects, the plurality of rays stored in the local cache may be a separate subset of the second plurality of rays, wherein some of the plurality of ray identifiers identify rays stored in the local cache and some of the second plurality of rays. Is not stored in the local cache.
설명된 기능적 측면들은 모듈과 같이 구현될 수 있으며, 이는 예를 들면 설명된 것과 같은 입력 및 출력을 생성하도록 동작하는 적합한 하드웨어 자원을 구성하는, 컴퓨터로 실행가능한 코드의 모듈이다.The described functional aspects can be implemented like a module, which is, for example, a module of computer executable code that constitutes suitable hardware resources that operate to generate input and output as described.
이 명세서에 설명된 측면 및 실시예에 대한 더 완전한 이해를 위해, 다음에 설명된 첨부 도면을 참조한다.
도 1은 광선 추적법을 이용하여 장면을 렌더링하는 시스템의 제 1 실시예를 나타낸다.
도 2는 도 1의 일부에 대한 추가 측면을 나타낸다.
도 3은 광선 추적 렌터링 시스템의 교차 테스트 부분에 대한 다른 구현예를 나타낸다.
도 4는 도 1-3의 시스템에 사용될 수 있는 교차 테스트를 위한 연산 자원의 일 예를 나타낸다.
도 5는 광선 추적에 사용하기 위한 교차 테스트 시스템 아키텍처의 추가적인 일 실시예를 나타낸다.
도 6은 교차 테스트를 위한 아키텍처의 다른 실시예의 측면을 나타낸다.
도 7은 도 1-6의 예들의 여러 측면들을 구현하는 시스템 아키텍처를 나타내며, 이는 교차 테스트 자원을 포함하고 큐에 의해 연결된 세이딩 자원을 포함한다.
도 8a는 도 1-7에 따른 시스템에서 광선 추적을 제어하는 데 사용될 수 있는 광선에 대한 식별기를 제공하는 방법의 여러 측면을 나타낸다.
도 9a 및 9b는 도 1-7 중 임의의 교차 테스트 자원에 제공될 수 있는 메모리 내의 광선 데이터를 식별하기 위한 광선 ID를 사용하는 실시예들을 나타낸다.
도 10은 도 1-7의 시스템에 구현될 수 있는 복수의 교차 테스트 자원간에 분산된 교차 테스트 제어(기능) 및 모양의 여러 측면을 나타낸다.
도 11은 광선 추적을 위한 아키텍처를 이용할 때 도 1-10의 시스템의 여러 측면이 구현될 수 있는 다중 프로세서 아키텍처를 나타낸다.
도 12는 도 1-11의 구현예에 영향을 미칠 수 있는 자원 간 통신 및 로컬화된 광선 데이터 저장 매체를 이용한 복수의 연산 자원의 구조화(organization)를 나타낸다.
도 13은 도 12의 연산 자원의 일부로서 동작하는 다중 스레스 또는 코어의 일 예를 나타낸다.
도 14a-14c는 도 1-13에 따라 시스템 및 아키텍처에 사용될 수 있는 여러 다른 큐 구현예들을 나타낸다.
도 15는 복수의 연산 자원에 의해 공유된 L2 캐시로부터 프라이빗 L1 캐시 사이에 광선 데이터가 분산될 수 있는 여러 다른 방식을 나타내는 데 사용된다.
도 16은 본 발명의 실시예 마다, 큐 내에 존재할 수 있는 패킷들의 예를 나타낸다.
도 17은 교차 테스트에서 로컬 가용 광선 데이터를 사용하여, 특정한 연산 자원이 패킷으로부터 광선 ID를 처리하고, 이러한 테스트 결과를 재기록하는 방법을 제공한다.
도 18A 및 18B는 광선 ID 정보의 패킷을 처리하는 예시적인 SIMD 아키텍처의 실시예들을 나타낸다.
도 19는 광선 식별기를 보급하고, 광선을 테스트하며, 추가 테스트를 위해 추가 패킷으로 테스트 결과를 합하는 내용을 나타낸다.
도 20은 이전 도면에 따라 시스템에 일반적으로 적용가능한, 데이터 구조의 내용면에서, 방법적 단계를 나타낸다.
도 21은 본 발명에 따른 추가 방법적 측면들을 나타낸다.For a more complete understanding of the aspects and embodiments described in this specification, reference is made to the accompanying drawings described in the following.
1 shows a first embodiment of a system for rendering a scene using ray tracing.
2 shows a further aspect of the portion of FIG. 1.
3 illustrates another implementation of a cross test portion of a ray tracing renting system.
4 illustrates an example of computational resources for cross testing that may be used in the systems of FIGS. 1-3.
5 illustrates a further embodiment of a cross test system architecture for use in ray tracing.
6 illustrates aspects of another embodiment of an architecture for cross testing.
FIG. 7 shows a system architecture implementing various aspects of the examples of FIGS. 1-6, which include cross test resources and includes shading resources connected by queues.
8A illustrates various aspects of a method of providing an identifier for a ray that may be used to control ray tracing in the system according to FIGS. 1-7.
9A and 9B illustrate embodiments that use ray IDs to identify ray data in memory that may be provided to any of the cross test resources of FIGS. 1-7.
10 illustrates various aspects of cross test control (function) and appearance distributed among a plurality of cross test resources that may be implemented in the system of FIGS. 1-7.
11 illustrates a multiprocessor architecture in which various aspects of the system of FIGS. 1-10 may be implemented when using an architecture for ray tracing.
12 illustrates the organization of a plurality of computational resources using localized ray data storage media and inter-resource communications that may affect the implementations of FIGS. 1-11.
FIG. 13 shows an example of multiple threads or cores operating as part of the computational resource of FIG. 12.
14A-14C illustrate several different queue implementations that may be used in systems and architectures according to FIGS. 1-13.
FIG. 15 is used to illustrate different ways in which ray data can be distributed between an L2 cache shared by a plurality of computational resources and a private L1 cache.
16 shows an example of packets that may exist in a queue, per embodiment of the present invention.
FIG. 17 provides a method for using a locally available ray data in a cross test, where a particular computational resource processes a ray ID from a packet and rewrites these test results.
18A and 18B illustrate embodiments of an exemplary SIMD architecture for processing packets of ray ID information.
19 shows propagation of the ray identifier, testing the ray, and summing the test results into additional packets for further testing.
20 illustrates methodological steps in terms of the content of a data structure, which is generally applicable to a system according to the previous figures.
21 shows further method aspects according to the invention.
이하에서, 첨부된 도면 및 실시예와 함께 본 발명을 상세히 설명한다.Hereinafter, the present invention will be described in detail with the accompanying drawings and examples.
다음의 설명은 본 발명이 속하는 분야의 기술자가 본 발명의 다양한 실시예들을 제조 및 사용할 수 있도록 하기 위한 것이다. 이 명세서에 설명된 예에 대한 다양한 변경예는 본 발명이 속하는 분야의 기술자가 분명히 이해할 수 있으며, 이 명세서에 설명된 포괄적인 원리는 본 발명의 범위를 벗어나지 않는 한 다른 예 및 응용예에 적용될 수 있다. 이러한 설명은 먼저 삼차원(3-D) 장면(도 1)의 예에 관한 복수의 측면들을 소개함으로써 시작되며, 삼차원 장면은 도 2의 예에서와 같이, 기하학적 가속 데이터를 이용하여 압축될 수 있다. 이러한 삼차원 정면은 표현 및 설명된 예에 따른 시스템 및 방법을 이용하여 이차원 표현으로 렌더링될 수 있다.The following description is intended to enable those skilled in the art to make and use the various embodiments of the present invention. Various modifications to the examples described herein will be apparent to those skilled in the art, and the generic principles described herein may be applied to other examples and applications without departing from the scope of the present invention. have. This description begins by introducing a plurality of aspects relating to an example of a three-dimensional (3-D) scene (FIG. 1), which can be compressed using geometric acceleration data, as in the example of FIG. 2. Such three-dimensional facades can be rendered in two-dimensional representations using systems and methods in accordance with the representations and examples described.
기술분야에서 소개된 것과 같이, 삼차원 장면(scene)은 디스플레이를 위한 이차원 표현으로 변활될 필요가 있다. 이러한 변환은, 장면이 보이는 곳으로부터 카메라 위치를 선택하는 것이 필요하다. 카메라 위치는 종종 장면을 보는 사람(예, 게이머, 애니메이션 필름을 보는 사람 등)의 위치를 표현한다. 이차원 표현은 일반적으로 카메라와 장면 사이의 평면 위치에 존재하여, 이차원 장면은 바람직한 해상도의 픽셀 어레이를 포함한다. 각 픽셀에 대한 컬러 벡터가 렌더링을 통해 결정된다. 광선 추적중에, 광선은 카메라위치로부터 시작하여 원하는 포인트의 이차원 표현의 평면과 교차할 수 있다. 이어서, 3차원 장면으로 계속된다. 광선이 이차원 표현과 교차하는 위치는 그 광선과 관련된 데이터 구조에 유지된다. As introduced in the art, a three dimensional scene needs to be transformed into a two dimensional representation for display. This conversion requires selecting the camera position from where the scene is visible. Camera position often represents the position of the person viewing the scene (eg gamers, viewers of animated films, etc.). The two-dimensional representation is generally in a planar position between the camera and the scene, so that the two-dimensional scene includes a pixel array of the desired resolution. The color vector for each pixel is determined through rendering. During ray tracing, the ray can intersect the plane of the two-dimensional representation of the desired point starting from the camera position. Then continues to the three-dimensional scene. The position at which the ray intersects the two-dimensional representation is maintained in the data structure associated with the ray.
카메라 위치는 반드시 공간에 정의된 단일 포인트일 필요는 없으며, 대신에 카메라 위치가 분산되어, 광선이 카메라 위치 내에서 고려된 많은 수의 포인트로 부터 방출될 수 있다. 각각의 광선은 픽셀 내의 이차원 표현과 교차하며, 이를 샘플이라 부를 수 있다. 일부 실시예에서, 픽셀과 교차된 광선이 기록될 수 있는 위치가 더 정확할수록, 더 정밀한 색의 보간 및 혼합이 가능하다.The camera position does not necessarily need to be a single point defined in space, but instead the camera position is distributed so that light rays can be emitted from a large number of points considered within the camera position. Each ray intersects a two-dimensional representation in the pixel, which may be called a sample. In some embodiments, the more accurate the location at which light rays intersected with the pixel can be recorded, the more accurate color interpolation and blending is possible.
설명의 명확성을 위해, 소정의 유형의 객체에 대한 데이터(예, 삼각형의 세 개의 꼭짓점에 대한 좌표)가 종종 객체에 대한 데이터에 관해서라기 보다 객체 자체로 간단히 설명된다. 예를 들어, "원형의 페치"라고 할 때, 이는 그 원형의 물리적 실현물이라기 보다는 원형의 데이퍼 표현이 페치되는 것으로 이해되어야 한다. 그러나, 특히 광선에 관하여, 본 발명에서는 광선에 대한 식별기와 광선 자체를 정의하는 데이터를 구별하며, 여기서, "광선(ray)"이라는 표현을 사용하는 경우에, 반대되는 내용을 나타내지 않는 한, 광선을 정의하는 데이터와 광선 ID 양자에 관한 것으로 넓게 이해된다.For clarity of explanation, data for a given type of object (eg, coordinates for three vertices of a triangle) is often described simply as the object itself rather than as to the data for the object. For example, when referred to as "circular fetch", it should be understood that the circular data representation is fetched rather than the physical manifestation of the circular. However, in particular with respect to light rays, the present invention distinguishes the identifier for a light ray from the data defining the light beam itself, where the term "ray" is used, unless otherwise indicated. It is broadly understood to be both data and ray IDs that define.
삼차원 장면 내의 실제적인 그리고 매우 상세한 객체 표현은 이반적으로 객체의 표면(즉, 와이어 프레임 모델)에 근접한 많은 수의 작은 기하학적 원형을 제공함으로써 이루어진다. 이와 같이, 복잡한 객체는 간단한 객체에 비해 더 많은 원형 및 더 작은 원형으로 표현될 필요가 있다. 고 해상도의 이점을 제공하나, 광선 및 많은 수의 원형 사이의 교차 테스트를 수행하는 것은(위에 설명한 바와 같이, 그리고 이하에 추가로 설명될 바와 같이) 연상이 심화되며, 이는 특히 복잡한 장면이 많은 수의 객체를 가지기 때문이다. 교차 테스트를 위해 장면에 강제된 일정한 외부 구조화 없이, 각각의 광선이 각 원형과 교차에 대해 테스트되어야 하며, 이는 결과적으로 매우 느린 교차 테스트가 된다. 따라서, 광선마다 필요한 광선/원형 교차 테스트의 수를 줄이는 방법이 장면 내 광선 교차 테스트를 가속화하는 데 도움이된다. 이러한 교차 테스트의 수를 줄이는 한가지 방법은 많은 수의 원형의 표면을 압축한 엑스트라 경계 표면(extra bounding surface)를제공하는 것이다. 광선은 각각의 광선과 교차 테스트를 위해 원형보다 작은 원형의 서브세트를 식별하기 위한 경계 표면에 대해 먼저 교차 테스트될 수 있다. 이러한 경계 표면 모양은 다양한 모양에 제공될 수 있다. 이 명세서에서, 이러한 경계 표면 요소의 컬렉션를 GAD(Geometry Acceleration Data)라 한다.Actual and highly detailed object representation in a three-dimensional scene is achieved by providing a large number of small geometric primitives which are in close proximity to the surface of the object (ie wireframe model). As such, complex objects need to be represented in more circles and smaller circles than simple objects. While providing the advantages of high resolution, performing cross-tests between light rays and a large number of circles (as described above, and as described further below) intensifies associations, particularly in large numbers of complex scenes. This is because it has an object of. Without constant external structuring forced into the scene for the cross test, each ray must be tested for each circle and cross, which results in a very slow cross test. Thus, a method of reducing the number of ray / circle cross tests required per ray helps to accelerate the ray cross test in the scene. One way to reduce the number of such cross tests is to provide an extra bounding surface that compresses a large number of circular surfaces. The light beams may first be cross-tested against the boundary surface to identify a subset of circles smaller than the circle for cross-testing with each light beam. Such boundary surface shapes may be provided in various shapes. In this specification, this collection of boundary surface elements is referred to as Geometry Acceleration Data (GAD).
GAD 구조화(oranization), 요소 및 용도에 대한 더 광범위한 처리법을 미국특허 출원 번호 11/856,612(2007년, 9월 17일 출원)에서 찾을 수 있으며, 이는 이 명세서에 참조문헌으로 포함된다. 따라서,내용에 대해 GAD에 대한 더 간단한 처리가 이하에서 제공되며, 그리고 이러한 문제에 관한 더 상세한 내용을 위에 참조된 출원으로부터 얻을 수 있다.More extensive treatments for GAD oranization, elements and uses can be found in US patent application Ser. No. 11 / 856,612, filed Sep. 17, 2007, which is incorporated herein by reference. Thus, a simpler treatment of GAD for the content is provided below, and more details on this issue can be obtained from the above referenced application.
소개한 바와 같이, GAD 요소는 일반적으로 삼차원 공간에서, 원형들의 개별적인 컬렉션를 둘러싸는 기하학적 모양을 포함하여, 광선과 기하학적 모양의 표면의 교차 실패는 광선이 그 모양 내의 임의의 원형과 교차되지 않는다는 것을 나타낸다. GAD 요소는 모양, 축-정렬 경계 박스, kd-트리, 옥트리 및 그 외 종류의 경계 볼륨 계층을 포함할 수 있으며, 이와 같이 본 발명에 따른 구현예가 kd-트리의 절단 평면과 같은 경계 스킴을 사용하거나, 하나 이상의 원형의 경계를 정하는 경계 표면의 범위를 지정하거나 구체화하는 다른 방법을 사용할 수 있다. 요약하면, GAD 요소는 일차적으로 광선과 원형 사이의 교차부를 더 빠르게 식별하기 위해 원형을 압축하데 유용하기 때문에, GAD 요소는 광선과의 교차에 대해 쉽게 테스트될 수 있는 모양인 것이 바람직하다.As introduced, the GAD element generally includes a geometric shape surrounding a separate collection of circles in three-dimensional space, so that the failure of the ray to intersect the surface of the geometric shape indicates that the ray does not intersect any circle within that shape. . GAD elements may include shapes, axis-aligned bounding boxes, kd-trees, octrees, and other types of boundary volume hierarchies, and thus embodiments in accordance with the present invention employ boundary schemes such as the kd-tree's cut plane. Alternatively, other methods of specifying or specifying a range of boundary surfaces delimiting one or more circular boundaries may be used. In summary, since the GAD element is primarily useful for compressing the circle to more quickly identify the intersection between the ray and the circle, the GAD element is preferably in a shape that can be easily tested for intersection with the ray.
GAD 요소는 서로 관련될 수 있다. GAD 요소의 상관(interrelation)은 이 명세서에서 노드 및 에지를 포함하는 그래프일 수 있으며, 여기서,노드는 GAD 요소를 나타내고, 에지는 GAD 요소 중 두 개 사이의 상관을 나타낸다. 한 쌍의 요소가 에지에 의해 연결되는 경우에, 에지는 노드들 중 하나가 다른 노드와 다른 단편 모양(granularity, 입상)을 가지는 것을 표시하며, 이는 그 에지에 연결된 노드 중 하나가 다른 노드에 비해 많거나 적은 원형의 경계를 정한다는 것을 의미할 수있다. 일부의 경우에, 그래프는 계층화될 수 있으며, 이에 따라 그래프에 대한 방향이 존재하며, 그래프가 모 노드로부터 자 노드의 순서로 가로질러 이러한 방식으로 잔여의 경계가 정해진 원형들을 좁힌다. 일부의 경우에, 그래프는 동종의 GAD 요소를 포함할 수 있으며, 이로써 지정된 GAD 요소가 다른 GAD 요소를 규정하는 경우에, 지정된 GAD 요소는 직접적으로 원형을 규정하지 않는다(즉, 동종의 GAD 구조에서, 원형은 리프 노드 GAD 요소에 의해 직접 정해지며, 비-리프 노드가 직접적으로 원형이 아니라, 다른 GAD 요소를 규정한다). GAD elements may be related to each other. The correlation of a GAD element may be a graph that includes nodes and edges in this specification, where the node represents a GAD element and the edge represents a correlation between two of the GAD elements. In the case where a pair of elements are connected by an edge, the edge indicates that one of the nodes has a different granularity than the other node, which means that one of the nodes connected to that edge is compared to the other node. It can mean that you are delimiting more or less circles. In some cases, the graph may be layered, such that there is a direction for the graph, where the graph narrows the remaining bounded circles in this manner across from the parent node to the child node. In some cases, the graph may include homogeneous GAD elements, such that if the designated GAD element specifies another GAD element, the designated GAD element does not directly define a prototype (ie, in a homogeneous GAD structure). , The prototype is directly determined by the leaf node GAD element, and the non-leaf node directly defines another GAD element, not directly).
GAD 요소에 대한 그래프는 각각의 GAD 요소에 의해 규정된 요소 및/또는 원형의 수적인 면에서 균일성을 유지하는 것을 목표로 구성될 수 있다. 지정된 장면은 이러한 목표가 달성될 때까지 하위분할될 수 있다.The graph for the GAD elements may be configured to maintain uniformity in the numerical aspects of the elements and / or primitives defined by each GAD element. The designated scene may be subdivided until this goal is achieved.
다음의 설명에서, 지정된 GAD 요소를 교차하도록 결정된 광선에 근거하여, 어느 GAD 요소가 다음에 응답하여 테스트되어야 하는지를 결정하는 메커니즘이 존재한다는 사실이 제공된다. 계층적 그래프의 일 예에서, 다음에 테스트될 요소는 일반적으로 테스트된 노드의 자 노드(child node)이다.In the following description, the fact is provided that there is a mechanism for determining which GAD element should be tested in response in the next, based on the light rays determined to intersect the designated GAD element. In one example of a hierarchical graph, the next element to be tested is typically the child node of the node being tested.
이 명세서에서 많은 실시예로 구현된 GAD에 대한 하나의 사용 방법은, 광선이 지정된 GAD 요소와 교차하는 것으로 발견된 때, 그 요소와 교차하도록 결정된 다른 광선과 함께 수집된다는 것을 포함한다. 많은 광선이 수집된 경우에, 그 요소와 연결된 GAD 요소의 스트림이 메인 메모리로부터 페치되고, 각각 다른 컬렉션 광선을 가지는 테스터를 통해 스트림화된다. 따라서, 각각의 테스터는, 기하학적 도형이 중복 기록이 필요하거나 허용된 때 슬로우 메모리로부터 페치되는 동안, 로컬 패스트 메모리에 광선을 변하지 않게 유지한다. 더 일반적으로, 이러한 설명은 연산 자원이 이러한 광선과 기하학적 모양(GAD 요소와 원형)의 교차를 검출하기 위해 광선을 진행시키고, 결과적으로 어떤 광선이 어떤 원형과 충돌하는지를 식별하도록 어떻게 구조화되는가에 대한 일련의 예를 제공한다. One method of use for a GAD implemented in many embodiments herein includes that when a ray is found to intersect a specified GAD element, it is collected with another ray determined to intersect that element. If many rays are collected, the stream of GAD elements associated with that element is fetched from main memory and streamed through a tester, each having a different collection ray. Thus, each tester keeps the rays unchanged in the local fast memory while the geometry is fetched from slow memory when redundant writing is needed or allowed. More generally, this description is a series of how computational resources are structured to advance the rays to detect the intersection of these rays with geometric shapes (GAD elements and circles) and consequently identify which rays collide with which circles. Provide an example.
이러한 실시예가 구현할 수 있는 본 발명의 또 다른 측면은, 다음 중 하나를 포함한다. (1) 교차 테스트로부터 세이디으로 출력을 제공하도록 큐가 제공됨, (2)이러한 모양에 대해 특정한 광선을 테스트하기 위한 결정이 있을 때, 기하학적 모양이 슬로우 메모리로부터 페치되는 동안, 광선 데이터가 자원을 연산하기 위해 어느 정도 로컬화됨, 그리고 (3) 교차 테스트를 수행하는 연산 자원으로 광선을 식별함으로써(광선 식별기를 사용함으로써) 교차 테스트가 구동되고, 이는 각각의 연산 자원이 자신의 로컬화된 메모리로부터 식별된 광선에 대응하는 데이터를 페치하도록 함.Another aspect of the invention in which this embodiment may be implemented includes one of the following. (1) a cue is provided to provide output from the cross-test to the sadie, (2) when a decision is made to test a particular ray for such a shape, while the geometry is fetched from slow memory, the ray data may Some localization to compute, and (3) cross testing is driven by identifying the rays with a computational resource that performs the cross-test (by using a ray identifier), in which each computational resource is derived from its localized memory. Fetch data corresponding to the identified rays.
다음의 설명은 광선 추적법을 사용하여 삼차원 장면의 이차원 표현을 렌더링하기 위한 시스템 및 장치의 예를 나타낸다. 이러한 시스템의 두 개의 개념적 기능 컴포넌트는 (1) 교차를 식별하기 위한 광선 추적 그리고 (2) 식별된 교차부의 세이딩이다.The following description shows an example of a system and apparatus for rendering a two-dimensional representation of a three-dimensional scene using ray tracing. Two conceptual functional components of such a system are (1) ray tracing to identify intersections and (2) shading of identified intersections.
도 1은 원형으로 구성된 장면을 광선 추적할 때 사용하기 위한 시스템의 여러 측면을 도시한다. 일반적으로, 도 1 및 그 외의 도면의 기능성 유닛 중 하나의 기능 또는 역할 중 하나가 다중 하드웨어 유닛 또는 소프트웨어, 소프트웨어 서브루틴에 구현될 수 있으며, 서로 컴퓨터에서 가동될 수 있다. 일부의 경우에, 시스템 기능 및 성능에 영향을 미칠 수 있기 때문에, 이러한 구현예가 더 구체적으로 설명된다.1 illustrates various aspects of a system for use in ray tracing a scene consisting of a circle. In general, one of the functions or roles of one of the functional units in FIG. 1 and the other figures may be implemented in multiple hardware units or software, software subroutines, and may run on a computer with each other. In some cases, such implementations are described in more detail as they may affect system functionality and performance.
도 1은, 기하학적 유닛(101), 교차 프로세싱 유닛(102), 샘플 프로세싱 자원(110), 프레임 버퍼(111), 그리고 GAD 요소 및 원형(원형 및 GAD 저장장치(103))을 포함하는 기하학적 모양, 샘플(106), 광선 세이딩 데이터(107), 그리고 텍스처 데이터(108)를 저장하거나 저장하도록 구성된, 그렇지 않은 경우에 이들을 저장하도록 동작하는 메모리 자원(139)을 도시한다. 기하학적 유닛(101)은 렌더링 도리 장면의 디스크립션(description) 및 원형의 경계를 규정하는 GAD 요소를 포함하는 가속 구조를 입력한다. 교차 프로세싱(102)은 광선과 원형 사이의 식별된 교차부를 세이드하고, 텍스처, 세이딩 코드 및 도시된 데이터 자원으로부터 획득된 그 외의 샘플 정보와 같은 입력을 이용한다. 교차 프로세싱(102)의 출력은 렌더링 될 장면의 이차원 표현을 생성하는 사용될 새로운 광선(이하에서 설명됨)과 색 정보를 포함한다. 이러한 기능성 컴포넌트 모두는 점선(185)에 의해 포괄적으로 표시된 하나 이상의 호스트 프로세싱 자원에 구현될 수 있다.1 shows a geometric shape comprising a
위에 설명한 것과 같이, 식별된 광선/원형 교차부의 세이딩 중에, 교차 프로세싱(102)은 교차 테스트될 새로운 광선을 생성할 수 있다. 드라이버(188)는 새로운 광선을 수신하고, 교차 프로세싱 자원(102)과, 광선 데이터 저장장치(105) 및 교차 테스트 유닛(109)을 포함하는 로컬화된 교차 테스트 영역(140) 사이의 통신을 관리하하기 위한 교차 프로세싱(102)과의 인터페이스일 수 있다. 교차 테스트 영역(104)은 교차에 대해 광선을 테스트하고, 인터페이스(112)를 거쳐 원형 및 GAD 저장장치(103)로의 판독 액세스를 가지며, 교차 프로세싱(102)으로 결과 인터페이스(121)를 통해 식별된 교차부의 식별결과를 출력한다. 로컬 광선 데이터 저장장치(105)는 사이즈 면에서 상대적으로 작아질 수 있는 상대적으로 빠른 메모리에 구현되는 것이 바람직하다. 반면에 원형 및 가속 구조 저장장치는 호스트(185)의 메인 동적 메모리일 수 있는 상대적으로 크고 느린 메인 메모리(139)에 구현된다.As described above, during shading of the identified light / circular intersections,
고 해상도 장면을 광선 추적하는 하나의 방법은 관련된 광선 데이터 및 모양 데이터의 볼륨에 관련된다. 예를 들어, 초당 30 프레임으로 풀 HD 해상도 필름을 렌더링하는 것은 일 초에 6천만 픽셀 이상(1920 x 1080 > 2M, 초당 30회)의 색 결정을 요한다. 그리고, 각각의 픽셀 색을 결정하기 위해, 많은 광선이 필요할 수 있다. 따라서, 매 초마다 수억 개 광선이 처리되어야 하고, 모든 광선은 수 바이트의 저장용량을 필요로 하며, 풀 HD 장면의 광선 추적은 초당 수 기가바이트 이상의 광선 데이터와 관련된다. 또한, 임의의 지정 시간에서, 많은 양의 광선 데이터가 메모리에 저장되어야 한다. 거의 항상 액세스 속도와 메모리 사이즈 간의 교환이 이루지며, 따라서 비용-효율적인 큰 사이즈의 메모리는 비교적 느리다. 또한, 큰 사이즈의 메모리는 충분히 큰 데이터 블록이 액세스 되거나 사용되지 않는 한 효과적으로 사용될 수 없다. 따라서, 하나의 과제는 메모리로부터 효과적으로 데이터에 액세스할 만큼 큰 그룹의 광선을 동시에 식별할 수 있어야 한다는 것이다. 그러나, 유사한 원점 및 방향을 가지는 광선의 검색 및 그룹 테스트와 같은 접근방법에 의해 보인 바와 같이, 이와 같은 광선을 식별할 때 프로세싱 과잉, 때로는 심각한 과잉이 존재할 수 있다. 일 측면에서, 다음의 예시적인 아키텍처는 장면 렌더링에 대한 광선 교차 테스트 및 세이딩의 처리효율을 증가시킬 수 있도록, 복수의 연산 자원, 더 빠르고 더 비싼 메모리, 느리고 용량이 큰 메모리를 구조화하고 사용하는 방법을 설명한다.One method of ray tracing a high resolution scene is related to the volume of related ray data and shape data. For example, rendering a full HD resolution film at 30 frames per second requires more than 60 million pixels per second (1920 x 1080> 2M, 30 times per second). And, to determine each pixel color, many rays may be needed. Thus, hundreds of millions of rays need to be processed every second, every ray needs several bytes of storage, and ray tracing of a full HD scene involves more than a few gigabytes of ray data per second. Also, at any given time, a large amount of light ray data must be stored in the memory. Almost always there is a trade-off between access speed and memory size, and therefore large cost-efficient memory is relatively slow. Also, large memory sizes cannot be effectively used unless sufficiently large blocks of data are accessed or used. Thus, one challenge is to be able to simultaneously identify groups of rays that are large enough to effectively access data from memory. However, as shown by approaches such as searching and group testing of rays having similar origins and directions, there may be processing excess, sometimes serious excess, when identifying such rays. In one aspect, the following example architecture structures and uses multiple computational resources, faster and more expensive memory, and slower, larger memory to increase the throughput of ray cross testing and shading for scene rendering. Explain how.
따라서, 도 1은 GAD 요소 및 원형과 교차에 대해 광선을 테스트하는 연산 자원(109)에 로컬화 된 고속 메모리에 저장될 광선 정의 데이터를 포함하는 데이터 플로우에 의한 식별된 교차부의 세이딩(shading)으로부터 교차 테스트를 분리하는 것을 나타낸다. 교차 테스트(109)의 출력은 식별된 원형과 교차하는 식별된 광선에 대한 식별결과를 포함한다. 교차 프로세싱(102)은 이러한 식별결과를 수신하고, 이러한 식별결과에 따른 세이딩을 수행하며, 테스트를 위해 새로운 광선의 인턴스를 생성할 수 있으며, 이는 궁극적으로는 고속 광선 데이터 메모리(105)에 저장된다. 이러한 분리(decoupling)는 사용된 프로세싱 자원에 따라 선택된 통신 수단을 이용하여, 이러한 기술 내용에 따라 소프트웨어로 프로그램된 범용 컴퓨터 및 고정 기능 하드웨어 중 하나 이상을 사용하는 다양한 구현예로 제공될 수 있다. 그러나, 이러한 구현예에서 일어나는 하나의 측면은 광선 정의 데이터와 비교된 교차 테스트 영역(140)에서 광선과의 교차에 관해 테스트 된 모양 데이터가 순간적(transient)이라는 것이다. 다르게 설명하며, 적용가능한 경우에, 고속 메모리가 광선 데이터에 일차도 할당되 는 한편, 모양은 테스터를 통해 스트림화되고 이러한 모양 데이터의 캐싱을 최적화하는 데 사용될 연산 자원이 거의 없다. 다양한 다음의 도면은 이러한 분리(decoupling), 데이터 흐름, 광선 데이터 저장장치 및 교차 테스트 자원과의 병치(collocation)에 대한 더 구체적인 예를 도시한다.Thus, Figure 1 shows the shading of identified intersections by a data flow that includes ray definition data to be stored in a fast memory localized to a GAD element and a
또한, 도 1은 최종적으로 프레임 버퍼(111)가 디스플레이(197)를 구동하는데 사용될 수 있다는 사실을 나타낸다. 그러나. 이는 편의를 위해 렌더링이라 불릴 수 있는 교차 테스트 및 세이딩 동작의 결과인 출력의 일 예일 뿐이다. 예를 들어, 출력이 컴퓨터 판독형 매체에 기록될 수 있다. 이 컴퓨터 판독형 매체는 통신 링크에 의해 연결된 연산 자원을 포함하는 네트워크 상으로 전송되거나, 또는 실체가 있는 컴퓨터 판독형 매체 상에 보급되거나 후에 디스플레이하기 위한 렌더링된 이미지의 시퀀스와 같은 렌더링 생성물을 포함한다. 일부의 경우에, 렌더링도리 3-D 장면은, 3-D CAD 모델의 투시도를 포함하는 이미지를 렌더링 또는 몰입형(immersive) 가상 현실 컨퍼런싱의 경우에서와 같은, 실사 3-D 장면의 표현일 수 있다. 이러한 경우에, 렌더링 방법은 물리적 객체의 데이터 표현에 작용하거나 이를 변환한다. 다른 경우에, 3-D 장면은 물리적 객체 및 존재하지 않는 그 외의 객체를 표현하는 일부 객체를 가질 수 있다. 또 다른 추가적인 3-D 장면에서, 장면의 완전성은 비디오 게임 등에서와 같이, 허구일 수 있다. 그러나 결과적으로, 이 방법은 메모리, 디스플레이 및/또는 컴퓨터 판독형 매체의 아티클(article)의 변형인 것이 일반적이다.1 also shows that the
또한, 1979년 이래로 광선 추적법을 이용한 렌더링이 구현되어 왔으며, 다양한 기술이 광선 추적법을 이용하여 렌더링을 구현하는 데 필요한 교차 테스트 및 그 외의 기능에 관해 개발되어 왔다. 따라서, 이 명세서에 설명된 특정한 아키텍처 및 방법은 3-D 장면을 2-D 표현으로 렌더링시 사용하기 위한 광선 추적법의 기능적 원리를 대신하지 않는다.In addition, rendering using ray tracing has been implemented since 1979, and various techniques have been developed for cross-testing and other functions required to implement rendering using ray tracing. Thus, the particular architectures and methods described in this specification do not replace the functional principles of ray tracing for use in rendering 3-D scenes in 2-D representations.
도 2는 교차 테스트 영역(140)의 교차 테스트 유닛(109)이 하나 이상의 개별적인 테스트 자원(테스트 셀로도 알려짐)을 포함하는 것을 나타내며, 테스트 자원은 광선에 대한 기하학적 모양을 테스트할 수 있다. 영역(140)은 광선 데이터 저장장치(105)로부터 광선 데이터를 그리고 메모리(139)로부터 기하학적 데이터를 각각 수신하는 테스트 셀(205a-205n)을 포함한다. 각각의 테스트 셀(205a-205n)은 교차 프로세싱(102)으로 결과 인터페이스(121)를 통해 통신에 대한 결과를 생성하고, 이는 지정된 광선이 지정된 원형과 교차하였는지에 대한 식별결과를 포함할 수 있다. 반대로, 광선과 GAD 요소의 교차 테스트의 결과가 로직(203)으로 제공된다. 로직(203)은 광선이 교차한 것으로 결정된 GAD 요소에 이러한 광선을 관련시키는 광선에 대한 레퍼런스의 컬렉션(210)을 유지한다. 2 shows that the
일반적으로, 시스템 컴포넌트는 공지되지 않은, 시간-완료형의, 지정된, 특정한 광선 테스트를 지원하도록 디자인된다. 교차 테스트 유닛(109)은 기하학적 메모리에 대한 판독 액세를 가지며, 입력으로 광선에 대한 참조 큐를 가진다. 교차 테스트의 출력으로서, 각각의 광선은 광선 처음 교차하는 하나의 기하학적 도형(편의를 위해 이 명세서에서 원형(primitive)라 함)과 상관된다. 다른 기하학적 도형(즉, 원형)은 비상관으로 도시될 수 있다.In general, system components are designed to support unknown, time-completed, designated, specific light tests. The
위에 소개한 바와 같이, 영역(140)은 광선 참조 버퍼와 관련된 관리 로직(203)을 포함하며, 이는 테스트 셀(205a-205n)에서 테스트 될 광선 컬렉션의 리스트(210)를 보관한다. 버퍼 관리 로직(203)은 고정 기능 프로세싱 자원 또는 컴퓨터 판독형 매체로부터 획득된 명령으로 구성된 하드웨어에서 구현될 수 있다. 이러한 명령은 이 명세서에서 로직(203)에 특정된 기능 및 테스크에 따라 모듈에 구조화될 수 있다. 본 발명이 속하는 분야의 기술자는 이러한 설명에 근거하여 로직(203)에 대한 추가 구현예를 제공할 수 있다.As introduced above,
로직(203)은 테스트 셀에 광선과 기하학적 도형을 할당할 수 있으며, 이 디자인 내의 다른 유닛과의 통신을 처리할 수 있다. 일 측면에서, 리스트(210) 내의 각 광선 컬렉션은 하나 이상의 기하학적 모양과의 교차에 대해 테스트 될 모든 것인 복수의 광선 식별기를 포함하며, 로직(203)은 이러한 광선 컬렉션을 보관한다. 더 구체적인 예에서, 복수의 광선 식별기는 이러한 컬렉션 내의 식별된 GAD 요소와 교차하도록 정해지며, 복수의 광선과의 교차에 대해 테스트 될 다음 GAD 요소가 GAD 요소의 그래프 내의 교차된 GAD 요소와 관련된다. 지정된 컬렉션에 대해 관련된 요소는 이러한 요소와의 교차 테스트가 시작될 때 메모리(139)로부터 페치된다.
택일적으로 언급된, 로직(203)은 임시 광선 레퍼런스 버퍼 내의 개별적인 자 노드에 대응하는 기하학적 데이터의 하위-부분과 교차하는 광선을 나타내는 레퍼런스를 보관할 수 있으며, 이는 이러한 광선의 추가 프로세싱의 실행을 연기시킨다. 계층적으로 정렬된 GAD의 예에서, 이러한 실행 연기는, 자 노드의 기하학적 하위-부분과 교차하는 광선의 누적 개수가 추가 프로세싱에 적합한 것으로 밝혀진 후속 시간까지, 자 노드 이하의 기하학적 가속 데이터의 하위-부분에 대한 프로새상을 연기할 수 있다.Alternatively,
로직(203)은 셀(205a- 205n)에 대한 테스트를 위한 기하학적 모양을 제공하는 메모리 트랜잭션을 설정하기 위해 메모리(139)와 통신할 수 있다. 로직(203)은 또한 광선 데이터 저장장치(105)와 통신하며, 어떤 광선이 거기에 저장될지를 결정한다. 일부 구현예에서, 로직(203)은 메모리(139)로부터 또는 교차 프로세싱 유닛(102)에서 실행되는 세이딩 프로세스로부터 획득 또는 수신될 수 있으며, 공간이 가용상태일 때, 저장을 위해 메모리(105)로 이러한 광선을 제공하고, 교차 테스트 중에 이용할 수 있다.
따라서, 로직(203)은 GAD 모양의 식별기에 대한 광선 식별기의 연관 데이터를 포함하는 임시 광선 레퍼런스 버퍼를 포함할 수 있다. 하나의 구현예에서, GAD 요소에 대한 식별기는 GAD 요소와 관련된 지정된 컬렉션을 저장하기 위해 버퍼 내의 위치를 식별하도록 해시(hash)될 수 있다. 연관 데이터는, 메모리 내에서 그리고 현재 애플리케이션 내의 일부 장소에서의, 이러한 데이터의 저장 또는 수집을 나타낼 때, 일반적으로 컬렉션이라 하며, "패킷"이라는 용어는 테스트 및 교차 테스트의 결과의 리턴 중에 컬렉션 데이터의 이동을 의미하기 위한 일반적으로 사용된다. 이와 같이 리턴된 결과는 이하에 설명된 바와 같이, GAD 모양과 연관된 메모리 내에 저장된 컬렉션에 합체된다. Thus,
요약하면, 계속하여 도 2는 광선과의 교차에 관해 테스트 될 모양 데이터가 메모리 부터(139) 인출되는 동안, 제 1 메모리(105) 내에 광선 정의 데이터가 저장되는 것을 나타낸다. 위의 설명은 또한, 다음번-테스트 될 복수의 모양이 일단 메모리(139)로부터 페치되고, 이어서 "모" GAD 요소와 교차된 것으로 알려진 일 그룹의 광선과 교차에 대해 테스트 되는 것이 바람직하다는 것을 보여준다.In summary, FIG. 2 shows that the ray definition data is stored in the
이제, 도 3은 삼차원 장면의 이차원 표현을 광선 추적하기 위한 렌더링 시스템에 사용될 수 있는 영역(140, 도 1)의 ITU(intersection testing unit, 350) 구현예에 대한 블록도를 포함한다. ITU(350)는 복수의 테스트 셀(310a-310n 및 340a-340n)을 포함한다. GAD 요소는 GAD 데이터 저장장치(103b)로부터 기원한 것으로 도시되며, 원형 데이터는 원형 데이터 저장장치(103a)로부터 기원한 것으로 도시된다. 3 now includes a block diagram of an implementation of an intersection testing unit 350 (ITU) of area 140 (FIG. 1) that can be used in a rendering system for ray tracing a two-dimensional representation of a three-dimensional scene.
테스트 셀(310a-310n)은 GAD 요소와, 이러한 요소에 대해 테스트하기 위한 광선 데이터(즉, 이러한 테스트 셀은 GAD 요소를 테스트함)를 수신한다. 테스트 셀(40a-340n)은 원형과 이러한 원형에 대해 테스트하기 위한 광선 데이터(즉, 이러한 테스트 셀은 원형을 테스트 함)를 수신한다. 따라서, ITU(350)는 원형과의 교차에 대해 광선의 컬렉션을 테스트하고, GAD 요소와의 교차에 대해 별개의 광선 컬렉션을 테스트할 수 있다.
ITU(350)는 또한 컬렉션 관리 로직(203a) 및 컬렉션 버퍼(203b)를 포함한다. 컬렉션 버퍼(203b) 및광선 데이터(105)는 메모리(139)(예를 들면)로부터 광선 데이터를 수신할 수 있는 메모리(340) 내에 저장된다. 컬렉션 버퍼(203b)는 GAD 요소와 연관된 광선 레퍼런스를 유지한다. 컬렉션 관리자(203a)는 이러한 컬렉션을 테스트 셀로부터의 교차 정보에 근거하여 관리한다. 컬렉션 관리자(203a)는 또한 광선 컬렉션을 테스트하기 위해, 메모리(139)로부터 원형 및 GAD 요소의 페치를 시작할 수 있다.
ITU(350)는 식별된 교차부의 식별결과를 리턴한다. 이는 결과 인터페이스(121)를 거쳐 교차 프로세싱(102)으로의 최종적인 준비를 위해 출력 버퍼(375)에서 버퍼링될 수 있다. 식별 정보는, 광선 및 지정 범위에서, 광선이 교차하는 것으로 정해진 원형을 식별하는데 충분하다.
ITU(350)는 제어 프로세스 또는 드라이버(예, 드라이버(188))를 통해 호출될 수 있는 기능이나 유틸리티로 보여질 수 있다. 이러한 제어 프로세스나 드라이버는 광선들과 이 광선이 교차에 관해 테스트될 모양을 ITU(350)에 제공한다. 예를 들어, ITU(350)는 드라이버(188)(즉, 세이딩과 같은 렌더링 프로세스 및 초기 광선 생성 기능 유닛와 ITU(350)를 연결하는 프로세스)를 통해 정보를 공급받는다. ITU(350)의 투시도에서, ITU(350)는 자신에게 제공된 정보의 기원을 알 필요가 없다. 왜냐하면 영역(140)이 광선, GAD, 및 자신에 공급되거나 공급된 다른 정보에 근거하여 획득된 원형(더 일반적으로 장면 도형)을 이용하여 교차 테스트를 수행할 수 있기 때문이다.
위에 설명한 것과 같이, ITU(350)는 어떻게, 언제, 그리고 어떤 데이터가 공급되는 지를 제어할 수 있으며, 이에 따라 ITU(350)는 수동형이 아니며, 예를 들면, 교차 테스트를 위해 요구되는 광선 또는 기하학적 데이터 또는 가속 데이터를 페치할 수 있다. 예를 들어, ITU(350)에는 테스트 될 광선 내의 장면을 식별하기에 충분한 정보와 함께, 교차 테스트하기 위한 많은 수의 광선이 제공될 수 있다. 예를 들어, 지정된 시간에 교차 테스트를 위해 만 개 이상의 광선을 제공받을 수 있으며, 이러한 광선에 대한 테스트를 완료함에 따라, 새로운 광선(교차 프로세싱(102)에 의해 생성됨)이, 이하에 설명된 것과 같이, 대략 초기 개수(initial number)에서 ITU(350)에서 처리될 광선의 수를 유지하기 위해 공급받을 수 있다. ITU(350)는 이후에 프로세싱(광선 컬렉션 버퍼(203b)(도 3 참조)에서) 중에 광선의 임시 저장을 제어한다(로직(203a)(도 3 참조)에서). 또한 이 프로세싱 중에 필요한 원형과 GAD의 요소에 대한 페치 동작을 시작할 수 있다.As described above, the
위에 설명한 것과 같이, GAD 요소는 광선과 비교하여 ITU(350)에서 임시적이다. 왜냐하면, 광선을 정의하는 데이터가 보관된 광선 데이터(105)인데 반해 광선 식별기는 버퍼(203b)에 보관되며 GAD에 관하여 구조화되기 때문이다. 버퍼(203) 및 광선 데이터(105)는 각각 메모리(340)에 보관될 수 있으며, 이는 다양한 방식으로, SRAM 캐시의 하나 이상의 뱅크와 같이, 물리적으로 구현될 수 있다. As described above, the GAD element is temporary at the
위에 설명했듯이, 로직(203a)은 메모리(340)에 저장된 광선 컬렉션에 대한 상태를 추적하고, 프로세싱을 위해 준비된 컬렉션을 결정한다. 도 3에 도시된 바와 같이, 로직(203a)는 메모리(340)에 통신가능하게 연결되며, 연결된 테스트 셀 각각으로 테스트를 위한 광선의 전달을 초기화할 수 있다. GAD 요소가 GAD 요소만을 또는 원형만을(이들의 조합이 아님) 규정하는 상황에서, 로직(203a)은 원형이나 그 외의 GAD 요소를 규정하는 특정한 컬렉션이 GAD 요소와 연관되는지 여부에 따라, 광선을 테스트 셀(340a-340n) 또는 테스트 셀(310a-310n)에 할당할 수 있다. As described above,
특정한 GAD 요소가 GAD 요소와 원형 모두를 규정할 수 있는 예에서, ITU(350)는 GAD 요소 및 원형 모두를 각각의 테스트 셀에 광선과 함께 제공하기 위한 데이터 경로를 가질 수 있으며, 이로써 로직(203a)은 테스트 자원 사이의 컬렉션의 광선 테스트를 준비할 수 있다. 이러한 예에서, GAD 요소와 원형 사이의(예를 들면, 구 대 삼각형) 모양 상의 전형적인 차이 때문에, 테스트 로직을 선택거나 또는 테스트 될 모양에 대해 최적화된 교차 테스트 알고리즘을 로드하기 위한 식별결과가 로직(203a)으로부터 제공될 수 있다.In an example where a particular GAD element may define both a GAD element and a circle, the
로직(203a)은 테스트 셀(340a-340n) 및 테스트 셀(310a-310n)에 대한 정보를 직접 또는 간접적으로 제공할 수 있다. 간접적인 경우에, 로직(203a)는 각각의 테스트 셀에 정보를 제공하여, 각 테스트 셀이 메모리(340)에 대한 광선 데이터의 페치를 시작할 수 있다. 로직(203a)은 메모리(340)와 별개로 도시되었으나, 설명을 간략히 하기 위해, 로직(203a)이 메모리(340)의 회로 내에 구현될 수 있다. 왜냐하면 로직(203a)에 의해 광범위하게 수행되는 관리 기능이 메모리(340)에 저장된 데이터와 관련되기 때문이다.The
교차 테스트 자원에 의한 메모리(340)로의 액세스의 병렬화(parallelization)를 증가시키는 능력은 이 명세서에 설명된 발명의 일부 측면의 장점이다. 이와 같이, 메모리(340)에 대한 액세스 포트의 수의 증가(바람직하게는 테스트 셀당 하나 이상)가 장점이 된다. 이러한 병렬화에 관련된 예시적인 구조화가 이하에서 추가로 설명된다.The ability to increase parallelization of access to
또한, ITU(350)는 입력 데이터를 제공하고, ITU(350)로부터의 출력을 수신하는 유닛과 비동기식으로 동작할 수 있다. 여기서, "비동기식(asynchronous)"은, 이전에 수신된 광선에 대해 교차 테스트가 계속되는 동안, ITU가 추가적인 광선의 교차 테스트를 수신 및 시작하는 것을 포함할 수 있다. 또한, "비동기식"은 ITU(350)가 광선을 수신하는 순서로 광선에 대한 교차 테스트가 완료될 필요가 없다는 것을 포함한다. 또한, 비동기식은 ITU(350) 내의 교차 테스트 자원이 삼차원 장면 내의 광선 또는 장면에 중첩된 스케줄링 격자의 위치에 관계없이, 또는 모 광선과 적은 수의 모 광선으로부터 나온 자 광선과 같은 세대 관계를 가지는 광선만을 또는 특정한 세대의 광선만(예, 카메라 광선 또는 이차 광선)을 테스트하는 것에 관계없이, 교차 테스트를 할당하거나 배정하는 것이 가능하다. In addition,
ITU(350)는 또한 원형 및 이 원형과 교차된 광선의 식별된 교차부의 식별결과를 수신하는 출력 버퍼(375)를 포함한다. 일 예에서, 식별결과는 원형과 교차된 광선을 식별하는데 충분한 정보와 쌍을 이루는 원형에 대한 식별결과를 포함한다. 광선에 대한 식별 정보는 레퍼런스(가령 인덱스)를 포함할 수 있으며, 이는 광선의 리스트에서 특정한 광선을 식별한다. 예를 들어, 이 리스트는 호스트(185)에서 동작하는 드라이버(188)에 의해 관리될 수 있으며, 이 리스트는 메모리(139)에 보관될 수 있다. 바람직하게는, 메모리(139)가 이러한 정보를 포함하지 않는 경우에, 메모리(139)가 광선의 원점이나 방향과 같은 정보(이는 광선을 재구성하기에 충분함)를 포함할 수 있다. 보통 레퍼런스를 통과시키는데 소수의 비트가 필요하며, 이는 이점이 될 수 있다.The
도 4는 테스트 셀(310a)의 예를 도시하며, 작업 메모리(410)와 테스트 로직(420)을 포함할 수 있다. 작업 메모리(410)는 수 개의 레지스터를 포함하며, 이는 표면과의 교차에 관해 라인 세그먼트를 테스트하기에 충분한 정보를 포함하며, 다르 실시예에서는 더 복잡해질 수 있다. 예를 들어, 작업 메모리(410)는 교차에 관해 수신된 특정한 모양을 테스트하기 위한 테스트 로직(420)을 구성하는 명령을 저장하고, 수신된 데이터에 근거하여 어느 모양이 수신되었는지를 검출할 수 있다. 작업 메모리(410)는 검출된 히트를 임시저장할 수 있으며, 여기서, 각각의 테스트 셀은 기하학적 모양에 대해 일련의 광선을 테스트하도록, 또는 그 역으로 구성된다. 이어서 임시저장된 히트(hit)가 그룹으로 출력될 수 있다. 작업 메모리는 또한 저장장치(103b)로부터 입력된 모양 데이터를 수신한다.4 illustrates an example of a
테스트 로직(140)은 가용한 또는 선택가능한 해상도로 교차 테스트를 수행하고, 검출된 교차부가 존재하는지 여부를 표시하는 이진 값을 리턴할 수 있다. 이러한 이진 값은 판독, 캐싱(임시저장) 또는, GAD 요소 테스트를 위한 메모리(340) 내의 판독 사이클과 같은 판독 사이클 중의 래치를 위한 출력을 위해 작업 메모리에 저장될 수 있다.The
도 5는 예시적인 메모리 구조화에 대해 상세히 초점을 맞춘, 교차 테스트 유닛(500)의 구현예에 대한 여러 측면을 도시한다. ITU(500)에서, 테스트 셀(510a-510n 및 540a-540n)이 도시되고, 이 예에서 테스트 셀(310a-310n 및 340a-340n)과 대응한다. 이는 테스트 셀의 수에 관한 임의의 제한사항을 의미하는 것은 아니다. 따라서, ITU(500)에서, 원형 및 GAD 요소는 병렬로 테스트될 수 있다. 그러나, 하나의 변형예 등에서의 추가 테스트 셀이 필요한 것으로 결정된 경우에, 임의 테스트 셀이 적절히 재구성될 수있다(하드웨어의 경우에 재배치되고, 소프트웨어의 경우에는 재프로그램됨). 트랜지스터 밀도가 점자 증가함에 따라, 이러한 테스트 셀이 하드웨어 구현시(또는 소프웨어를 실행할 수 있는 자원으로서) 더 많이 수용될 수 있다. 위에 설명한 것과 같이, 테스트 셀의 일부가, 공통 모양(즉, 원형 또는 GAD 요소)에 대해 광선을 테스트할 것이라는 점에서, 동작 그룹으로 취급될 수 있다. 테스트 셀(540a-540n)은 특정한 정밀도 레벨(예, 16 비트)에서 원형과의 교차를 표시하는 이진 값을 리턴할 수 있으며, 더 큰 원형의 경우에 유용한, 원형에서 광선이 교차한 지점에 대한 더 정확한 식별결과를 리턴할 수 있다.5 illustrates various aspects of an implementation of a
ITU(500)에서, 메모리(540)는 독립적인 복수의 동작 뱅크(510-515)를 포함하며, 이들 각각은 두 개의 포트(식별된 뱅크(515)의 포트(531) 및 포트(532)를 가진다. 하나의 포트는 GAD 테스트 로직(505)을 통해 액세스되고, 다른 하나의 포트는 원형 테스트 로직(530)을 통해 액세스된다. GAD 및 원형 테스트 로직(505 및 530)은 각각 개별적인 작업 버퍼(650-565 및 570-575) 사이의 데이터 플로우를 관리하고, 각각 GAD 저장장치(103a) 및 원형 저장장치(103b)로부터 테스트를 위한 GAD 요소를 획득한다. In
뱅크(510-515)는, 대부분, GAD 및 원형 테스트 로직(505 및 530)에 의한 광선 데이터로의 비-충돌 액세스를 제공하도록 동작하여, 테스트 셀(510a-510n) 및 테스트 셀(540a-540n)이 각각 별개의 뱅크(510-515)로부터 광선을 제공받을 수 있다. 이러한 비-충돌 액세스는, 이 명세서에서 이해할 수 있는 것과 같이, 예를 들면 별개의 캐시 뱅크와 크로스-바 아키텍처(이는 메모리의 서로 다른 물리적 부분에 대한 포트에 의한 액세스를 가능하게 함)에 의해 구현될 수 있다. 하나 이상의 테스트 셀에 의한 뱅크에 저장된 광선의 테스트가 허용되는 경우에, 테스트 될 두 개의 광선이 동일한 뱅크에 존재할 때 충돌이 일어날 수 있으며, 이러한 경우에, 액세스가 테스트 로직(505 및 530)에 의해 순차적으로 처리될 수 있다. 일부의 경우에, 작업 버퍼(560-565 및 570-575)는 다른 프로세싱이 완료되는 동안, 다음 프로세싱 사이클을 로드할 수 있다. 예를 들어, 영역(578)은 GAD 요소에 대한 테스트 영역을 포함한다. 왜냐하면 이 영역은 GAD 테스터(510a) 및 메모리 뱅크(510)를 포함하기 때문이다. 반면, 영역(579)은, 테스터(510a 및 540a, GAD 및 원형 각각에 대해 하나씩)를 포함하고 영역(578 및 579)의 테스트 셀에 관계된 테스트 시에 사용될 광선 데이터를 저장하는 메모리 뱅크(510)에 액세스를 가지기 때문에, GAD 요소 원형 모두에 대한 테스트 영역을 포함한다. The banks 510-515 mostly operate to provide non-conflict access to the ray data by the GAD and
일관되게 광선을 테스트함으로써, 어느 광선이 어느 테스트 셀에 어느 광선이 배정되는지를 추적하는 동작이 감소될 수 있다. 예를 들어, 각각의 컬렉션은 32개의 광선을 가질 수 있으며, 테스트 셀(310a-310n) 중 32개가 존재할 수 있다(510a-510n) . 예를 들어, 컬렉션 내의 4번째 광선을 테스트 셀(310d)에 일관되게 제공함으로써, 셀(310d)은 이에 제공되었던 광선에 관한 정보를 유지할 필요가 없고, 교차의 식별결과만을 리턴하면 된다. 도시된 바와 같이, 일관성을 유지하기 위한 다른 구현예가 제공될 수 있으며, 이는 테스트 셀 중의 광선 식별기들의 패킷을 전송하고, 테스트 셀이 패킷에 교차 결과를 기록하도록 한다. By consistently testing the rays, the operation of tracking which rays are assigned to which test cells can be reduced. For example, each collection may have 32 rays, and there may be 32 of the
광선 컬렉션을 위한 저장장치가 광선 컬렉션을 위한 n-웨이 인터리빙 캐시로 구현될 수 있으며, 이에 따라 임의의 지정된 광선 컬렉션이 광선 컬렉션 버퍼(203b 또는 520)의 n개의 부분 중 하나에 저장될 수 있다. 광선 컬렉션 버퍼(203b 또는 520)은 버퍼의 n개의 부분들 각각에 저장된 광선 컬렉션의 리스트를 보관할 숭 lT다 광선 컬렉선 버퍼(203b 또는 520)의 구현예는 광선 컬렉션과 연관된 GAD의 요소의 식별 특성을 사용할 수 있으며, 예를 들면 장면을 렌더링하는데 사용된 GAD 요소 사이에 고유한 식별기 스트링가 사용될 수 있다. 영숫자 스트링 캐릭터 스틜은 숫자, 또는 해시(hash) 등이다. 예를 들어, 해시는 광선 수집 버퍼(203b, 520)의 n개의 부분 중 하나를 참조할 수 있다.Storage for the ray collection may be implemented as an n-way interleaving cache for the ray collection, such that any designated ray collection may be stored in one of the n portions of the
다른 구현예에서, GAD의 요소는, 예를 들면 버퍼의 일부에 사용된 영숫자 스트링의 세그먼트를 매핑함으로써, 광선 수집 버퍼(203b, 520)의 지정 부분에 저장되도록 정해질 수 있다. 원형/광선 교차 출력(580)은 잠정적인 원형/광선 교차를 식별하기 위한 출력을 표현하며, 출력(580)은 직렬 또는 병렬일 수 있다. 예를들어, 32개의 원형 테스트 셀(540a-540n)이 존재하는 경우에, 출력(580)은 방금 테스트 된 원형에 대한 각각의 광선의 교차부의 존재 또는 비 존재를 표시하는 32비트를 포함할 수 있다. 물론, 예를 들면 패킷 구현예와 같은 다른 구현예에서, 출력이 테스트 셀로부터 직접 나올 수도 있다. 출력은 직렬일 수있으며 패킷 내의 테스트 셀에 의해 직렬로 저장될 수 있다.In other implementations, elements of the GAD may be arranged to be stored in designated portions of the
광선 데이터가 광원(가령, 세이더(shader))으로부터 메모리(340)(520)에 수신된다. 컬렉션 관리 로직(예, 도 2 및 3의 203a)은 컬렉션으로 초기에 광선을 할당하도록 동작하며, 여기서 각각의 컬렉션은 GAD의 요소와 연관된다. 예를 들어, GAD의 요소는 그래프의 루트 노드일 수 있으며, 수신된 모든 광선이 루트 노드에 연관된 하나 이상의 컬렉션에 초기에 할당된다. 광선의 수신은 또한 전체 컬렉션이 되도록 크기가 정해진 그룹(예, 입력 큐로부터)에 포함될 수 있으며, 이러한 각각의 컬렉션은 예를 들면, 광선 컬렉션 버퍼(203b)에서 식별된 컬렉션과 같이 취급될 수 있다. Light ray data is received in the
하나의 컬렉션의 처리에 집중하여, 다수의 컬렉션이 병렬로 처리될 수 있으며, 메모리(340)로부터의 테스트 노드와 연관된 컬렉션의 광선의 검색은, 예를 들면 컬렉션 내에 데이터로 저장된 이러한 광선의 어드레스(광선 식별기)를 메모리 (340)로부터 또는 도 5의 예에 의하면, 테스트 셀(예, 테스트 셀(560-565))의 수신을 위한 복수의 출력 포트 상에 광선 데이터를 제공하는 뱅크(510-515)로부터, 이러한 광선을 검색하기 위해 제공함으로써, 컬렉션 관리 로직(203a)에 의해 시작된다.Concentrating on the processing of one collection, multiple collections can be processed in parallel, and retrieval of the rays of the collection associated with the test node from the
테스트를 위해 선택된 노드에 의해 규정된 GAD 소자의 테스트에 관하여(즉, 선택된 노드와 연관된 GAD 요소는 다른 GAD 요소를 규정함), 테스트 중인 컬렉션의 광선을 위한 광선 데이터의 분산이 종료되고, 규정된 GAD 요소의 페칭이 수행된다(광선 분산에 연이은 이러한 페칭이 필수적인 것은 아님). 이러한 페칭에 관하여, 로직(203a)은 GAD 저장장치(103b)로 어드레스 정보를 입력할 수 있으며(또는 제공된 메모리 관리 수단이라면 어느 것에 의해서든), 어드레스 GAD 요소를 테스트 셀(310a-310n)로 출력한다. 이러한 경우에서와 같이, 다중 GAD 요소가 규정되는 경우에, 다중 GAD 소자의 블록 판독을 위해, 이 요소는 테스트 셀로 직렬적으로 스트림화 되도록 배열될 수 있다(예를 들면 직렬 버퍼를 이용).Regarding the testing of the GAD element defined by the node selected for testing (ie, the GAD element associated with the selected node defines another GAD element), the distribution of the ray data for the ray of the collection under test is terminated, and Fetching of the GAD elements is performed (this subsequent fetching is not necessary for ray dispersion). With respect to this fetching, the
테스트 셀(예, 310a-310n)에서, 컬렉션의 광선은 직렬로 제공된 GAD 요소(예, 각각의 테스트 셀 내의 서로 다른 광선)와의 교차를 위해 테스트 될 수 있다. 광선이 교차되는 것으로 결정된 경우에, 교차된 GAD 요소에 대한 컬렉션이 존재하는지 여부가 결정되고, 그러한 경우에 광선이 그 컬렉션(공간이 허락됨) 부가되고, 그렇지 않은 경우에 그 컬렉션이 생성되며, 광선이 부가된다. 존재하는 컬렉션에 공간이 없으면, 새로운 컬렉션이 생성될 수 있다.In test cells (eg, 310a-310n), the light rays of the collection can be tested for intersection with the GAD elements provided in series (eg, different light rays in each test cell). If it is determined that the rays intersect, it is determined whether a collection exists for the crossed GAD elements, in which case the rays are added to that collection (space allowed), otherwise the collection is created, Rays are added. If there is no space in an existing collection, a new collection can be created.
일부 구현예에서, 테스트 셀(310a-310n)의 번호에 대한 컬렉션 내 광선의 최대 수의 1:1 대응 관계가 제공되어, 컬렉션의 모든 광선이 지정된 GAD 요소에 병렬로 테스트될 수 있으며, 이는 하나의 아키텍처를 포함할 수 있다. 이 아키텍처에서, 처리량은 일반적으로 광선 대 테스트 셀의 1:1 대응관계를 이용하여 획득될 수 있는 것과 유사하다. 그러나 서로 다른 테스트 셀 사이에서 패킷(예, 위에 설명된 것과 같이 컬렉션을 나타내는 정보)의 직렬적 전달을 위해 제공하여, 지정된 컬렉션의 전체 광선이 병렬로 테스트 된 것으로 보이더라도, 서로 다른 패킷으로부터의 광선을 테스트할 수 있게 한다.In some implementations, a 1: 1 correspondence of the maximum number of rays in a collection to a number of
이후에, 광선은 테스트 셀에 제공된 원형과 교차에 대해 테스트된다(즉, 이 실시예에서, 각각의 테스트 셀은 서로 다른 광선을 가지며 공통 원형을 가지는 광선을 테스트 함). 테스트 후에, 각각의 테스트 셀은 검출된 교차부를 식별한다.Thereafter, the ray is tested for intersection with the circle provided to the test cell (ie, in this embodiment, each test cell has a different ray and tests the ray with a common circle). After the test, each test cell identifies the detected intersection.
컬렉션의 각 광선은 테스트 셀에 제공된 GAD 소자와의 교차에 대해 테스트 셀 내에서 테스트 된다(예를 들어, 도 5의 다중 뱅크 예(영역(578, 579)가 도시됨)에서, 광선이 예를 들면, GAD 요소 테스트 영역 및/또는 원형 테스트 영역에 로컬화되는 것으로 간주할 수 있으며, 이에 따라 뱅크는 광선 테이터를 이용하여 각 종류의 하나 이상의 테스터를 돕는다). Each ray of the collection is tested in the test cell for intersection with the GAD element provided in the test cell (eg, in the multi-bank example of FIG. 5 (
GAD 요소와의 교차에 관한 광선 테스트로부터의 출력이 원형 교차에 관한 동일한 광선의 테스트와 다르기 때문에(즉, 결과적으로 GAD 요소와의 교차부가 GAD 요소를 위한 컬렉션으로의 컬렉션이 되며, 반면에 원형과의 교차부는 그 원형과 가장 인접한 교차부의 결정 및 이러한 교차부의 출력이 됨), 특정한 광선이 병렬로 테스트될 두 개의 컬렉션에 존재하는 경우에도, 컬렉션 데이터를 재기록하거나 교차결과를 출력하는데 충돌이 발생하지 않는 것이 일반적이다. 예를 들어, 테스트 셀(340a-340n)의 다중 인스턴스화 중에 원형 교차부에 대한 광선의 다중 컬렉션을 테스트함으로써, 추가적인 병렬화가 구현되는 경우에, 다중 교차부의 저장과 같은 테스트의 순차적 완료, 또는 비트 잠금 등을 강제하도록 구성될 수 있다. 도 5의 실시예에서, 지정 광선에 관한 데이터가 단 하나의 뱅크에서 하나의 테스터 타입(예, 지정 관선이 하나의 메모리 뱅크에 위치함) 제공될 수 있는 경우에, 다중 GAD 테스터는 예를 들면 동시에 동일한 광선을 테스트하지 않으며, 이로써 재기록 충돌 문제를 회피할 수 있다.Since the output from the ray test on the intersection with the GAD element differs from the test of the same ray on the circular intersection (ie, the intersection with the GAD element becomes a collection into the collection for the GAD element, whereas The intersection of is the determination of the intersection closest to its circle and the output of these intersections), even if a particular ray exists in two collections to be tested in parallel, no collisions occur in rewriting the collection data or outputting the intersection result. It is not common. For example, if additional parallelization is implemented by testing multiple collections of rays for circular intersections during multiple instantiations of
요약하면, 이 방법은 광선을 수신하고, 이 광선을 컬렉션에 할당하며, 테스트 대기 컬렉션을 선택하며, 선택된 컬렉션의 광선을 적절한 테스트 셀에 할당하고, 테스트 셀을 통해 교차 테스트를 위한 적합한 기하학적 도형을 스트리밍하는 단계를 포함할 수 있고, 여기서, 대기상태(radiness)는 알고리즘적으로 결정될 수 있다. 출력은 기하학적 도형이 장면 원형 또는 GAD 요소인지에 달려있다. GAD 요소에 대해 테스트된 광선에 관하여, GAD 요소는 테스트될 컬렉션과 연관된 노드와의 그래프 연결에 근거하여 식별되며, 광서은 테스트될 GAD 요소와 연관된 컬렉션에 추가된다. 컬렉션은 대기상태를 보여주며, 대기된 때 테스트하도록 선택된다. 원형과 광선의 교차에 관하여, 가장 인접한 교차부가 광선에 의해 추적된다. 광선은 광선 컬렉션과 연관된 대 테스트되기 때문에, 특정한 광선에 대한 교차 테스트는 관련된 컬렉션이 테스트를 위해 대기인 것으로 결정될 때까지, 연기되는 것으로 가정한다. 광선은 다중 컬렉션으로 일관성 있게 수집될 수 있으며, 이는 이러한 광선이 장면 기하학적 도형의 서로 별개의 부분에 대해 테스트되도록 한다(즉, 이들은 중위순회(in order of traversal) 식으로 테스트 될 필요가 없다).In summary, this method receives a ray, assigns it to a collection, selects a test-waiting collection, assigns the ray of the selected collection to the appropriate test cell, and creates a suitable geometric shape for cross-testing through the test cell. Streaming, wherein the radiance may be determined algorithmically. The output depends on whether the geometry is a scene circle or a GAD element. With respect to the rays tested for the GAD element, the GAD element is identified based on a graph connection with the node associated with the collection to be tested, and the optical document is added to the collection associated with the GAD element to be tested. The collection shows the wait state and is selected to test when it waits. Regarding the intersection of the circle and the ray, the nearest intersection is tracked by the ray. Since the ray is tested vs. associated with the ray collection, the cross-test for a particular ray is assumed to be postponed until the associated collection is determined to be waiting for testing. Rays can be collected consistently in multiple collections, which allows these rays to be tested against distinct parts of the scene geometry (ie they do not need to be tested in an in order of traversal).
이전에 설명한 것과 같이, ITU는 메모리에 저장되고, 광선으로부터 이전에 수신된 광선의 정보 표현이 입력된다. ITU는 이러한 광선에 대해, 복수의 컬렉션의 하나 이상의 광선 컬렉션을 이용하여 각각의 광선의 조합(association)을 유지한다. ITU는, 또한 메모리에 저장된 복수의 컬렉션에 대한 컬렉션 포화(fullness)의 식별결과를 보관한다. 이러한 식별결과는 전체 컬렉션을 나타내는 개개의 플래그일 수 있으며, 또는 기전 컬렉션과 연관된 복수의 광선을 표현하는 번호일 수 있다. 더 구체적으로, 그리고 테스트 알고리즘을 구현하는 것에 관련된 다른 구현예 및 변형예가 위에 참조된 관련 애플리케이션에 제공되며, 여기에 문자적으로 제공된 정보는 이들의 제한적으로 취급하는 것이 아니라는 것을 보여준다. As previously described, the ITU is stored in memory, and an informational representation of the ray previously received from the ray is input. The ITU uses one or more ray collections of a plurality of collections for these rays to maintain the association of each ray. The ITU also stores the identification of collection fullness for a plurality of collections stored in memory. This identification may be an individual flag representing the entire collection or may be a number representing a plurality of rays associated with the mechanism collection. More specifically, and other implementations and variations related to implementing the test algorithms are provided in the relevant applications referenced above, which show that the information provided herein is not to be taken as their limiting.
이러한 포인트에 대한 설명으로부터 분명히 알 수 있듯이, 광선은 광선의 컬렉션에 제공된 정보에 근거하여 메모리로부터 로드(또는 액세스)된다. 따라서, 이러한 로딩은 각각의 광선을 나타내는 데이터가 저장된 개별적인 메모리 위치를 결정한다. 이러한 데이터는 그 광선 컬렉션에 포함되며, 예를 들면 하나의 광선 컬렉션은 메모리 위치 또는 저장장치에 대한 그 외의 레퍼런스의 리스트를 포함하며, 저장장치에 컬렉션 내의 광선에 관한 광선 데이터가 저장된다. 예를 들어, 광선 컬렉션은 메모리(예, 메모리(340)), 도는 메모리의 뱅크(예, 뱅크(510), 도는 다른 구현예 내의 위치에 대한 레퍼런스를 포함한다. 이러한 레퍼런스는 베이스(base)로부터의 오프셋의 절대값이거나 이러한 데이터를 참조하는 다른 적합한 방식일 수 있다. 이러한 측면은 별개의 광선 데이터와 광선 컬렉션 데이터가 유지되는 투시도에 표현된다. 그러나, 일부 구현예에서, 이러한 구분은, 광선 컬렉션 데이터 및 광선 테이터가 예를 들면 내용 연관적 데이터베이스에 보관될 수 있다는 점에서, 매우 명시적이거나 분명할 필요가 없다. 여기서, 컬렉션 및 광선 사이 및 컬렉션과 GAD의 요소 사이의 연관성이 유지되고 테스트를 위해 컬렉션과 연관된 광선 및 컬렉션과 연관된 GAD 요소를 식별하는 데 사용된다. As is apparent from the description of these points, the rays are loaded (or accessed) from the memory based on the information provided in the collection of rays. Thus, this loading determines the individual memory locations where data representing each ray is stored. Such data is included in the ray collection, for example one ray collection contains a list of memory locations or other references to storage, where the ray data about the rays in the collection is stored. For example, the ray collection includes references to locations in memory (e.g., memory 340), or banks of memory (e.g.,
또한, 광선 데이터는, 원형 또는 GAD 요소가 테스트 셀을 통해 순회됨에 따라 테스트 셀 내에 "고정(stationa)"되는 것이 분명하다. 관련 애플리케이션에서 설명한 것과 같이, 다른 구현예가 가능하다. 그러나, 이러한 설명의 주요 초점은, 기하학적 도형이 페치 및 테스트되는 중에 로컬화 되거나 테스트 셀과 함께 고정될 광선을 제공한다는 것이다.It is also evident that the ray data is “stationa” within the test cell as the circular or GAD element is traversed through the test cell. As described in the related application, other implementations are possible. However, the main focus of this description is that the geometric figure provides a ray to be localized or fixed with the test cell during fetching and testing.
이러한 구현예의 여러 측면이 도 6을 참조하여 제공된다. 특히, 교차 테스트 로직의 또 다른 구현예는 테스트 제어 로직(603)(도 2의 테스트 로직과 유사)을 포함하는 프로세서(605)를 포함하며, 여기서 테스트 제어 로직은 메모리 인터페이스(625), 명령 캐시(630), 명령 디코더(645) 및 데이터 캐시(650)에 연결하기 위한 페치 유닛(620)을 포함한다. 데이터 캐시(650)는 테스트 셀(610a- 610n)을 공급한다. 명령 디코더(645)는 또한 입력을 테스트 셀(610a- 610n)에 제공한다. 명령 생성기(665)가 명령 입력을 명령 디코더(645)로 제공한다. 테스트 셀은 재기록 유닛(660)으로 검출된 교차부의 식별결과를 출력하고, 재기록 유닛은 순차적으로 데이터를 데이터 캐시(650)에 저장할 수 있다. 재기록 유닛(660)으로부터의 출력은 또한 명령이 생성될 때, 명령 생성기(665)로의 입력으로 사용된다. 프로세서(605)에서 사용된 명령들은 단일 명령, 다중 데이터 다양성을 가지는 것으로 가정하며, 이 경우에 테스트 셀에서 처리된 명령은 정의된 표면(예, 원형 및 GAD 요소) 및 광선 사이의 교차 테스트이다. Various aspects of this embodiment are provided with reference to FIG. 6. In particular, another implementation of cross test logic includes a processor 605 that includes test control logic 603 (similar to the test logic of FIG. 2), where the test control logic includes a
일 예에서, "명령"은 원형 또는 GAD 요소와 같은 기하학적 모양을 정의하는 데이터를 포함하며, 다중 데이터 요소들은 "명령"으로 제공된 기하학적 모양에 대해 테스트를 하기 위한 광선에 대한 개별적인 레퍼런스를 포함할 수 있다. 이와 같이, 기하학적 모양 및 다중 광선 레퍼런스의 조합은 여러 개의 도시된 테스트 셀로 전달가능한 정보로 이루어진 별개의 패킷이라 가정한다. 일부의 경우에, 패킷 전달이 연속적으로 처리되어, 다중 패킷들이 복수의 테스트 셀 사이에서 "인 플라이트(in flight)" 상태가 된다. In one example, the "command" includes data defining a geometric shape, such as a circular or GAD element, and the multiple data elements may include a separate reference to a ray for testing against the geometric shape provided by the "command". have. As such, the combination of geometric shape and multi-beam reference is assumed to be a separate packet of information that can be delivered to several illustrated test cells. In some cases, packet delivery is processed continuously, resulting in multiple packets being " in flight " between a plurality of test cells.
이러한 테스트 셀은 큰 명령 세트를 가지는 풀-피처(full-featured) 프로세서의 형태로 존재할 수 있으며, 이와 같은 패킷은 각각 패킷의 목적을 구별하는데 충분한 다른 정보를 포함할 수 있다. 예를 들어, 여러 다른 목적으로 존재하는 패킷들로부터 교차 테스트를 위해 형성된 패킷을 구분하기 위해 포함된 다수의 비트가 존재할 수 있다. 또한, 다양한 교차 테스트 명령이 제공될 수 있으며, 이는 서로 다른 원형 모양 및 서로 다른 GAD 요소 모양에 관하여, 또는 서로 다른 테스트 알고리즘에 관하여, 포함된다.Such test cells may exist in the form of a full-featured processor with a large instruction set, and such packets may each contain other information sufficient to distinguish the purpose of the packet. For example, there may be a number of bits included to distinguish packets formed for cross testing from packets that exist for several different purposes. In addition, various cross test commands may be provided, which are included with respect to different circular shapes and different GAD element shapes, or with respect to different test algorithms.
전형적인 예에서, 각각의 교차 테스트 패킷은 초기에 기하학적 요소에 관한 레퍼런스 또는 기하학적 요소(이들 중 하나는 GAD 요소임)에 관한 데이터를 포함하거나, 원형에 대한 레퍼런스를 포함할 수 있다. 그리고 기하학적 요소와의 교차에 대한 테스트를 위해 복수의 광선에 대한 레퍼런스(즉, 위에 설명한 "패킷")를 포함할 수 있다.In a typical example, each cross test packet may initially contain a reference to a geometric element or data about a geometric element (one of which is a GAD element) or a reference to a prototype. And reference to a plurality of rays (ie, "packets" as described above) for testing for intersection with the geometric elements.
디코더(645)는 기하학적 요소에 관한 레퍼런스를 결정하기 위한 명령을 해석하고, 페치(620)(메모리 인터페이스(625)와 같은 메모리 인터페이스에 대한 제어)를 통해 요소의 페치를 개시할 수 있다. 일부 구현예에서, 디코더(645)는 미래에 필요한 기하학적 요소의 페치를 시작하기 위한 다수의 명령을 예상할 수 있다. 기하학적 요소는 페치(620)에 의해 디코더(645)로 제공될 수 있으며, 여기서 디코더(645)는 기하학적 요소를 테스트 셀(610a-610n)로 제공한다.
디코더(645)는 또한 데이터 캐시(650)에 대한 기능적 어드레스와 같은 명령으로부터 광선 레퍼런스를 제공하며, 이는 테스트 셀(610a-610n) 각각으로 각각의 광선을 교차 테스트하는데 충분한 개별적인 데이터를 제공한다. 광선과 연관된 데이터(교차 테스트에 필요하지 않음)는 제공될 필요가 없다. 따라서, 데이터 캐시(650)는 교차 테스트 셀과 같이 동작하는 하나 이상의 연산 자원에 대해 로컬화된 광선 데이터로 기능을 할 수 있다.
기하학적 요소는 각각의 테스트 셀(610a-610n)에서 개개의 광선과 함께 교차 테스트되며, 교차부의 식별결과가 재기록 유닛(660)에 의해 수신되도록 각각의 테스트 셀(610a-610n)로부터 출력된다. 테스트된 기하학적 요소의 속성에 따라, 재기록 유닛(660)은 두 개의 서로 다른 기능 유닛 중 하나를 수행한다. 테스트 셀(610a-610n)이 교차에 관해 원형을 테스트한 경우에, 재기록 유닛(660)은 테스트될 원형과 교차된 각각의 광선의 교차부부를 출력한다. 테스트 셀(610a-610n)이 GAD 요소를 테스트한 경우에, 재기록 유닛은 테스트 셀(610a-610n)의 출력을 명령 유닛(665)으로 제공한다. The geometric elements are cross tested with individual light beams in each
명령 유닛(665)은 추가 교차 테스트 시 테스트 셀에 명령을 할 가상 명령을 조합하도록 동작한다. 명령 유닛(665)은 지정된 GAD 요소와 교차한 광선을 특정하하는 테스트 셀(610a-610n) 입력, 명령 캐시(630), 그리고 GAD 입력(679)으로부터의 입력을 이용하여 다음과 같이 동작한다. 테스트 셀(610a-610n)로부터의 입력을 이용하여, 명령 유닛(665)은, 테스트 셀(610a-610n)로부터의 입력에 특정된 GAD 요소에 연결된 GAD 요소를, GAD 입력에 근거하여 결정한다(즉, 명령 유닛(665)은 어떤 GAD 요소가 지정된 GAD 요소에 대해 식별된 교차부에 근거하여 다음으로 테스트되어야 하는지를 결정한다).The
명령 유닛(665)은 교차된 요소와 연결됨으로써 식별된 GAD의 각 요소를 위해 명령 캐시에 저장된 명령이 이미 존재하는지, 그리고 그 명령은 임의의 추가 광선 레퍼런스를 수용할 수 있는지(즉, 명령의 모든 데이터 슬롯이 파일되었나?)를 결정한다. 명령 유닛(665)은 식별된 광선 수만큼 그 명령으로 테스트 셀 입력에서 교차하는 것으로 식별된 광선을 부가하고, 자연 광선 레퍼런스를 수신할 만큼 다른 멸영을 생성한다. 명령 유닛(665)은 테스트 셀 입력에서 식별된 요소와 연결됨으로써 식별된 GAD의 각 요소에 대해서도 이를 실행한다. 따라서, 테스트 셀 입력(교차 식별결과)을 처리한 후에, 동일한 GAD 요소와 교차하는 것으로 식별된 광선이 동일한 GAD 요소에 연결된 GAD의 요소에 대한 광선의 테스트를 특정하는 명령에 각각 부가된다. 생성된 이러한 명령은 명령 캐시(630)에 저장된다.The
명령은 GAD 입력(670)으로부터 수신된 GAD 요소의 구조화에 근거하여 명령 캐시(630)에서 구조화될 수 있다. 명령 유닛(665)은, 로직(203a)과 명령 유닛(665) 모두가 어느 광선이 어느 GAD 요소와 충돌하는지에 대한 식별결과를 수신하고 이러한 광선을 이후 테스트를 위해 서로 그룹화된다는 점에서, 로직(203a)과 유사한 기능을 수행한다. 도 6의 시스템은, 테스트를 위한 광선 패킷이 서로 다른 기능을 수용하기 위한 여러 타입 중 한 타입의 패킷일 수 있다는 점에서, 범용 시스템이 된다.The instructions may be structured in the
예를 들어, GAD 입력(670)은 GAD의 그래프를 제공할 수 있으며, 여기서 그래프의 노드는 GAD의 요소를 나타내고, 여러 쌍의 노드는 에지가 연결된다. 에지는 어느 노드가 다른 노드와 연결되는지를 표시하며, 명령 유닛(665)은 지정된 GAD 요소에 대한 캐시에 명령이 이미 존재하는지를 식별하기 위해, 노드를 연결하는 다음의 에지에 의해 명령 캐시(630)를 검색할 수 있다. 다중 명령이 지정된 GAD 요소를 위해 존재하는 경우에, 이들은 하나의 리스트에 링크되거나, 순서가 정해지거나 또는 서로 연관될 수 있다. 가령, 관련 명령이 발견될 수 있는 명령 캐시(630) 내의 잠정적인 위치를 식별하기 위한 GAD 요소 ID를 해싱하는 것과 같은 다른 방법 구현될 수 있다.For example, the
명령은 테스트 중인 GAD 노드를 참조할 수 있으며, 이에 따라 이 명령은 발행 및 디코드(각각의 연결 노드에 관해 명령을 저장하는 것과 반대임) 된 명령에 응답하여, GAD의 연결 노드를 페치하도록 한다. 이러한 각각의 연결 노드는 각 테스트 셀에 보관된 개개의 광선으로 테스트하기 위한 테스트 셀(610a-610n)을 통해 스트림화될 수 있다(즉, 광선 데이터는 각각의 테스트 셀에 복수의 GAD 요소가 제공되는 동안 테스트 셀에 고정상태로 남아 있으며, 각각의 테스트 셀은 각각의 GAD 소자에 대해 광선을 차례로 테스트한다).The command may refer to the GAD node under test, thereby causing the command to fetch the connected node of the GAD in response to the issued and decoded instructions (as opposed to storing the command for each connected node). Each of these connection nodes can be streamed through
따라서, 이러한 실시예에 따라 구현된 프로세서는 연결된 노드에 대해 교차 테스트를 위한 제 1 노드와의 교차에 관해 식별된 광선을 수집하는 명령을 생성하거나 획득하기 위한 기능성을 제공한다. 위에 설명된 예에서와 같이, 프로세서(605)로 제공된 GAD가 계층적인 경우에, GAD의 그래프는 계층적 순서로 연결될 수 있다. Thus, a processor implemented in accordance with this embodiment provides functionality for generating or obtaining instructions for connecting nodes to collect the identified rays with respect to the intersection with the first node for cross testing. As in the example described above, where the GAD provided to the processor 605 is hierarchical, the graphs of the GADs may be concatenated in a hierarchical order.
GAD의 예시적인 연결 및 소스가 예시되며, 다른 배치도 가능하다. 예를 들어, 메모리(615)는 GAD 요소에 대한 소스일 수 있다. 그러나 이는 기하학적 데이터보다는 고속 메모리에 광선(즉, 광선을 정의하는 데이터 및 발견된 현재 가장 인접한 원형 교차부와 같은 데이터)을 저장하는 것이 바람직하다. 여기서 지정된 프로세싱 아키텍처가 허용된다. 또한, 위의 예에서, 테스트 결과에 근거하여 테스트 될 다음 노드(즉, 다음 가속 요소 또는 원형)가 결정되었으며, 응답적으로, 패킷이 기하학적 모양마다 인스터스화 되었다. 이러한 설명으로부터 명백하게 알 수 있는 다른 구현예는, 지정된 노드의 자 노드에 대한 테스트를 시작하도록 결정하는 때 "자" 노드마다 패킷을 인스턴스화하는 것을 포함할 수 있으며, 지정된 노드는 시간 상 뒤에 자 명령/컬렉션을 생성한다.Exemplary connections and sources of GAD are illustrated and other arrangements are possible. For example,
도 7은 교차 테스트 및 광선 세이딩(카메라 광선을 포함하는 새로운 광선 생성을 포함)의 분리 동작에 관한 큐를 사용할 수 있는 광선 추적 시스템(예, 시스템(700))의 여러 측면을 추가로 도시한다. 시스템(700)은 교차 테스트를 위한 광선의 제공 및 교차 테스트의 오나료를 가능하게 하며, 이로써 도 1-6의 시스템과 같이, 다른 순서로, 세이딩에 대한 출력을 생성한다. 마찬가지로, 교차 테스트 자원은 이전에-식별된 교차부의 세이딩 해상도를 제한하지 않고, 광선의 교차 테스트를 진행할 수 있다.FIG. 7 further illustrates various aspects of a ray tracing system (eg, system 700) that may use cues for cross testing and separation operations of ray shading (including generating new rays including camera rays). .
도 7은 복수의 교차 테스트 자원(ITR, 705a-705n)을 도시하며, 각각의 자원은 광선 데이터 저장장치(766a-766n)에 각각 연결된다. 이 저장장치는 자원에서의 교차에 관해 테스트될 광선을 정의하는 데이터를 저장한다. ITR의 각 그룹 및 광선 데이터 저장장치(예, 광선 데이터(766a) 및 ITR(705a))는 테스트 자원의 로컬화된 그룹화(예, 704에 도시된 그룹화)와 같이 도시될 수 있다. 이는 예를 들면 도 5의 그룹화(578 및 579)와 같은 이전 그룹화와 유사하다.7 shows a plurality of cross test resources (ITRs) 705a-705n, each resource coupled to a
광선 데이터 저장장치(766a-766n)는 프라이빗 L1 캐시, L2 캐시의 공유 또는 매핑된 부분, 등과 같은 메모리일 수 있으며, 이전 예에서와 같이, 고속 메모리가 기하학적 데이터보다는, 특정된 프로세싱 자원에 로컬화된 광선 데이터를 저장하는 데 쓰이는 것이 바람직하다. 광선 데이터의 로컬화된 저장장치는 여기에 사용된 교차 테스트 알고리즘에 의해 더 쉽게 만들어지며, 이는 광선이 더 많은 로컬화된, 고속 메모리 저장될 수 있게 시간 길이를 증가시키고, 소형 메모리의 스래시 량을 감소시킨다. 이와 같이, 이러한 광선 저장장치는, 지정된 광선에 대한 데이터가, 장면의 교차 테스트가 완료될 때까지, 동일한 로컬 메모리에 저장된다는 점에서 준정적(quasistatic) 형인 것으로 보일 수 있다.
데이터 정의 광선은 테스트 제어 유닛(703)(이전 도면에서 로직(203b) 등과 유사)으로부터 출력(743)을 거쳐 로드된다. 테스트 제어 유닛(703)은 광선 완료 큐(730)를 통해 ITR(705a-705n)에서의 교차 테스트가 완료되도록 하는 광선에 대한 식별기를 포함하는 입력을 수신한다.The data defining light beam is loaded via the
큐(730)는 광선 식별기(일부 예로서 Ray ID(1, 18, 106, 480)이 도시됨)를 저장한다. 큐(730)는 ITR(705a-705n)로부터 입력을 얻으며, 이는 교차된 가장 인접한 교차부를 식별하기 위해 테스트 된 장면에서 테스트를 완료한 광선을 나타낸다. 이와 같이, 큐(730)는 ITR(705a-705n)로부터 지정된 출력이 GAD 요소에 대한 정보 또는 가장 인접한 원형(ITR(705a-705n)이 두 타입의 모양을 모두 테스트할 수 있는 경우에 사용될 수 있음)의 교차부를 나타내는지를 결정할 수 있는 결정 포인트(751)로부터 공급될 수 있다.Queue 730 stores ray identifiers (in some
결정 포인트(751)는 이전에 설명된 두 가지 타입의 교차 제어 기능 유닛를 표현한다. 하나는 GAD/광선 교차부가 교차 테스터에 더 가깝다는 것이고, 다른 하나는 가장 인접한 검출 원형/광선 교차부가 세이딩을 위해 출력된다는 것이다. 일부 앞선 아키텍처에서, 별개의 테스트 셀이 각각 사용되는 경우에, 결정 포인트는 가장 인접한 (가능한) 원형 교차부가 존재할 때 추적할 수 있다.
결정 포인트(751)로부터, GAD 결과가 먹스(752)로 입력되고, 먹스는 큐(725)로부터 광선 ID 입력을 수신하며, 이 큐는 입력(742)로부터 수신된 광선 ID를 저장하고, 입력은 광선 제어 유닛(703)으로부터 순차적으로 입력된다. 광선 제어 유닛(703)은, 테트스 제어 유닛(703)으로부터 출력(743)을 통해 광선 데이터(766a-766n)에 제공될 광선 정보에 대응하는 광선 식별기를 가지는 입력(742)을 포함한다. 따라서, 큐(725)에서 식별된 데이터 정의 광선(광선 식별기에 의해(광선 ID)에 의해 식별됨)이 출력(743)을 거쳐, 위와 같은 메모리에 저장하기 위해 광선 데이터(766a-766n) 제공된다. 광선 ID가 형성되는 방법에 관한 예가 이하에 제공된다. From
두 개의 큐(730, 725)는 광선에 대한 일련의 식별기(광선 ID)를 표현한다. 그러나 이하에 설명할 것과 같이, 복수의 광선은 일반적으로 지정된 기하학적 모양에 대해 동시에 테스트된다. 따라서, 이러한 경우에 큐(725)는 광선 ID의 패킷에 대한 광선 ID를 저장하는 것이 바람직하며, 따라서 큐(730)는 지정된 모양과 연관된 복수의 광선 ID를 각각 가지는 일련의 엔트리들을 나타낼 수 있다.Two
구체적인 예로서, 이러한 아키텍처를 구동하는 알고리즘은 일반적으로 복수의 고아선이 지정된 모양에 대해 테스트 될 필요가 있는 것으로 결정될 때까지 대기하며, 이후에 이러한 테스트가 수행되고 결과가 출력된다. 따라서, 복수의 광선이 동시에 테스트를 완료하고 거의 동시에 테스트를 시작할 것이라고 가정하는 것이 일반적이다. 효과적으로, 이러한 테스트가 완료된 광선은, 광선들이 초기에 인스턴스화 하는 방법 및 시점의 면에서 또는 광선들이 가속 계층구조(hierachy)를 통과하는 경로에 의해 완전히 서로 분리될 수 있다. 역으로, 큐(725)는 장면의 고정 GAD 요소(예, GAD 요소의 계층 구조의 루트 노드)에 대해 테스트 될 새로운 광선의 그룹 또는 패킷을 포함하는 것으로 간주될 수 있다. As a specific example, the algorithm driving this architecture generally waits until it is determined that a plurality of orphans need to be tested for a given shape, after which such a test is performed and the results are output. Thus, it is common to assume that a plurality of rays will complete the test at the same time and begin testing at about the same time. Effectively, these tested light rays can be completely separated from each other in terms of how and when the rays initially instantiate or by the path through which the rays pass through the acceleration hierarchy. Conversely,
이러한 새로운 광선은 카메라 세이더(735)와 그 외의 세이더(710a-710n)을 포함하는 광원으로부터 발생한다. 카메라 세이더(735)는 장면에서 테스트될 일차 광선을 생성함에 따라, 별개로 식별된다. 세이더(710a-710n)는 스레드 및/또는 하나 이상의 프로세서의 코어와 같은 연산 자원에서 동작하고, 광선과 원형 사이의 식별된 교차부에 적절한 응답을 구체화하는 명령 또는 로직의 실행을 나타낸다. 보통, 이러한 응답은 원형과 연관된 세이딩 코드에 의해 적어도 부분적으로 결정되며, 다양한 여러 다른 영향 및 고려가 이루어질 수 있다.These new rays originate from light sources including
세이더(710a-710n)는 분산 포인트(772)를 통해 교차된 광선 및 원형의 식별기를 수신하고, 테스트 제어 유닛(703)(도 8a 참조)의 출력(745)으로부터 이러한 광선 데이터를 수신한다. 분산 포인트(772)는 지정된 원형에 대한 코드를 실행할 능력을 가지는 연산 자원으로 이러한 광선 데이터를 제공하는 데 사용될 수 있으며, 따라서 이러한 능력 결정을 위한 임의의 수단이, 로드 측정, 연산 자원에 의해 설정된 플래그, 포화 식별기(fullness indicator)와 FIFO 분리를 포함하는 이러한 분산을 제어하는데 사용될 수 있다. 또는 라운드 로빈이나 의사 랜덤 분산 스킴이 사용될 수 있다.The
세이더(710a-710n)의 출력은 다른 광선(편의를 위해 이차 광선이라 함, 또한 카메라(735)로부터의 출력은 광선을 포함함)을 포함할 수 있다. 이 예에서, 이 시점에 광선은 광선을 정의하는 원점 또는 방향 데이터를 포함한다. 그러나 테스트 제어 유닛(703)에 의해 제공되는 것이 바람직한 연된 광선 ID를 가질 필요는 없다.The outputs of the
알 수 있는 바와 같이, 테스트 제어 유닛(703)은 교차 테스트 자원의 광선 상태를 모니터할 수 있으며, 도 8-9를 참조하여 더 상세히 설명할 것과 같이, 완료된 광선 데이터(766a-766n)의 광선을 교체하도록 새로운 광선을 할당한다. ITR(705ㅁ-705n)로의 광선 ID의 분산이 분산기(780)에 의해 수행되며, 이는 도 10을 참조하여 상세히 설명된다. 이러한 분산은 지정된 식별기에 의해 식별된 광선을 정의하는 데이터를 광선 데이터(766a-766n)의 메모리가 저정함으로써 일차적으로 제어된다. 또한, 도 10을 참조하여 설명되는 것과 같이, 컬렉션 대기상태와 같인 고려조건에 근거하여, 분산기(780)는 광선 ID가 큐(725)로부터 획득되는 시점을 제어한다.As can be seen, the
이제, 도 8a로 돌아가서, 테스트 제어 유닛(703)의 일부가 도시된다. 이 제어 유닛은 광선 데이터(766a-766n)와 각각 연관된 메모리 뱅크를 포함하며, 각 뱅크는 광선 데이터가 밀집된 슬롯을 가지며 메모리 어드레스에 의해 어드레스될 수 있다. 도 8a는 광선 완료 큐(730)로부터의 출력(744)이 광선 식별기(1, 18, 106, 480)을 포함하는것을 도시하며, 식별기들 각각은 메모리(803) 내에 할당된 공간을 가진다. 이러한 공간은 출력(744)으로부터 이러한 광선 식별기의 수신에 응답하여 겹쳐 쓰기/채위지도록 허용된다. 분산 포인트(722)에 대한 출력(745)은 세이딩에서 사용하기 위한 광선 데이터를 포함한다. 출력(745)은 또한 다른 데이터를 포함할 수 있다. 실제로, 메모리(803)는 프로세스 실행 세이더(710a-710n)와 같은, 다른 프로세스에 의해서도 사용되는 메모리에 구현될 수 있다. 이러한 경우에, 출력(745)은 연산 자원에 의해 메모리(803)로부터 이러한 데이터의 인출을 표현할 수 있다(또는 인출에 의해 구현될 수 있다).Turning now to FIG. 8A, a portion of the
링크(741, 742, 743, 744, 745, 750, 790)와 같이, 도 7에서 다양한 통신 링크가 확인된다. 이러한 링크 중 하나는 전체 아키텍처 구현예에 따라 구현될 수 있으며, 고유 메모리 영역, 물리적 링크, 확장 버스상에 설치된 가상 채널, 공유 레지스터 공간 등을 포함할 수 있다.Various communications links are identified in FIG. 7, such as
도 8b는 출력(741)에서(예를 들면, 카메라 세이더(735)와 같은 세이딩 동작으로부터) 새로운 광선에 대한 데이터가 나오는 것을 도시한다. 이러한 광선 데이터는 적어도 광선 원점과 방향 정보를 포함한다. 이제, 테스트 제어 유닛(703)은 이러한 새로운 광선을, 광선 데이터(766a-766n)와 다르게 메모리(803) 내의 위치에 새로운 광선을 할당한다. 각각의 광선 원점과 방향에 연관된 식별기는 식별기가 저장되었던 위치에 따라 달라진다. 따라서, 입력(742)(큐(725)에 관한 입력)은 이러한 근거에 따라 정해진 광선 식별기를 수신한다. 또한, 출력(743)은 광선 식별기 및 메모리(803)에 저장된 이들과 관련된 원점 및 방향 정보를 모두 포함한다. 도 8a 및 8b에 도시된 광선 ID의 배치는, 광선 ID가 관련 데이터를 식별하기 위한 메모리를 인덱스하는데 사용될 수 있다는 점에서 편리하다. 그러나, 결과적으로 ITR(705a-705n) 및 메모리(803) 내의 광선 데이터의 식별결과가 광선 식별 데이터 사용에 의해 영향을 받는 한, 광선에 관한 다른 종류의 식별기가 사용될 수 있다. 8B shows data for new light rays coming out of output 741 (eg, from a shading operation such as camera shader 735). Such ray data includes at least ray origin and direction information. The
도 9a는, 내용 연관 메모리(content associative memory, 910)가 서로 다른 광선 데이터와 각각 연관된 키(905)를 유지하는 경우의 예를 도시한다.9A shows an example where a content
도 9b는 각각의 광선 데이터(766a-766n) 내의 슬롯이 인터페이스(743)를 통해 테스트 제어 유신(703)으로부터 광선 데이터를 수신하도록 제공되는 것을 도시한다. 이러한 슬롯은 다중 뱅크로 추가적으로 하위분할되거나, 인터리브될 수 있으며, 및/또는 캐시로부터 데이터의 검색을 쉽게 하도록 하는 다른 캐시 구조화 메커니즘일 수 있다. 여기서 광선이 저장을 위해 분산될 필요가 있는 경우에, 이러한 분산은 광선 ID의 최하위 비트에 근거하여, 광선 ID의 해시에 의해, 또는 분산이 발생할 다수의 뱅크를 이용한 모듈 분할에 의해, 라운드 로빈 큐잉(queuing), 또는 그 외에 메모리로 광선 데이터를 분산시키는데 사용될 수 있는 분산 메커니즘에 의해 진해될 수 있다. 임의 지정 부분 내에서, 광선 데이터가 광선 Id에 근거하여 저장될 수 있다.9B shows that a slot in each
요약하면, 도 7-9b는 테스트될 광선이 제어 로직에 의해 수집되고, 식별기가 할당되는 아키텍처를 도시하며, 식별기는 서로 다른 교차 테스트 자원에 연결된 개개의 캐시에 광선 정의 데이터가 저장될 수 있는 메모리 위치에 근거하는 바람직하다. 원형 교차 테스트 결과는 완성됨에 따라 테스트 자원으로부터 나오며, 테스트 로직은 이후에 테스트 될 필요가 하는 새로운 광선으로 이러한 완료된 광선에 대한 메모리 위치를 재할당한다. 완료된 광선은 복수의 서로 다른 교차 프로세싱/세이딩 자원 중 하나에서 공유될 수 있으며, 이는 테스트될 추가 광선을 생성할 수 있다. 일반적으로 광선은 가속 구조 전체를, 가장 인접한 원형 교차부가 식별될 때까지(또는 광선이 장면 배경 이와의 것과 교차하지 못하 것으로 결정될 때까지), 교차 테스트 자원을 통해 순회하는 것이 일반적이다.In summary, Figures 7-9B illustrate an architecture in which the beams to be tested are collected by the control logic and the identifiers are assigned, the identifiers being memory where the beam definition data can be stored in individual caches connected to different cross test resources. Preferred based on location. The prototype cross test results come from the test resources as they are completed, and the test logic reallocates memory locations for these completed rays with new rays that need to be tested later. The completed rays may be shared in one of a plurality of different cross processing / saiding resources, which may create additional rays to be tested. In general, light rays traverse the entire accelerated structure through cross test resources until the closest circular intersection is identified (or until the light is determined not to intersect with the scene background).
도 10으로 돌아가서, 시스템을 렌더링하기 위한 추가적인 아키텍처 측면을 도시한다. 도 10의 일 측면은 교차 테스트를 위해 구성된 프로세서에 연결된 개별적인 캐시 메모리에 광선 데이터가 저장될 수 있다는 것이다. 다른 측면은, 분산기(780)가 어떻게 ITR(705a-705n)과 인터페이스할 수 있는 가이다. 도시된 추가 측면은 테스트에 관한 모양 데이터가 테스터에 제공되는 방식에 관한 것이다.Returning to FIG. 10, additional architectural aspects for rendering the system are shown. One aspect of FIG. 10 is that ray data may be stored in a separate cache memory coupled to a processor configured for cross testing. Another aspect is how the
분산기(780)는 통신 링크(790)(하드웨어, 인터ㅍ로세스 또는 인터스레드 통신 등으로 구현됨)를 통해 먹스(751, 도 7)로부터 광선 식별기를 수신한다. 이러한 광선 ID는 컬렉션 관리 유닛(1075)으로 전송되며, 여기서 다음으로 테스트 될 객체를 규정하는 광선 ID와 개별적인 GAD 요소 사이의 연관성이 유지된다. 또한 광선 ID는, 광선 ID가 이들의 컬렉션을 테스트하기 위해 컬렉션 관리 및 저장 유닛(1075)으로부터 결정결과를 기다리는 큐(1021, 1022, 1023) 사이의 결정(dicision, 1013, 1014, 1015)에 의해 분산될 수 있다. 예를 들어, 컬렉션(1045)은 테스트를 위해 준비하는 것으로 결정되고, 광선 ID가 개별적인 ITR(705a-705n)로 송신되며, ITR의 캐시(1065a-1065n)은 이러한 광선 ID 각각에 대한 데이터를 포함한다. 컬렉션 관리 유닛(1075)는 또한, 테스트에 필요한 기하학적 모양의 검색을 시작하기 위해, GAD 요소 데이터 및/또는 원형 데이터를 저장하기 위한 인터페이스를 가질 수 있다.
이러한 모양은 예를 들면 링크(112)를 거쳐 저장장치(103, 도 1)로부터의 큐(1040)에 도달한다. 이러한 모양은 지정된 컬렉션과 연관된 GAD의 요소와의 연관성에 근거하여 식별된다. 예를 들어, 계층적 GAD의 경우에, 이러한 모양은 모 GAD 요소의 자일 수 있다. 각각의 ITR은 자신의 광선을 큐(1040)로부터의 모양에 대해 직렬적으로 테스트할 수 있다. 따라서, 최고 처리량은 캐시(1065a-1065n) 사이에 지정된 컬렉션의 광선이 동일하게 분산된 때 획득될 수 있으며, 컬렉션 관리 유닛(1075)은 지정된 광선 컬렉션의 테스트 결과에 근거하여 컬렉션을 가장 쉽게 업데이트할 수 있다. 지정된 컬렉션의 여러 광선이 하나의 캐시에 존재할 때, 나머지 교차 테스트가 지연된다. 또는 이들은 다음 컬렉션으로부터의 광선을 테스트할 수 있다. 컬렉션 테스트 동기화가 다시 요구되기 전에, 최대치의 순서가 뒤바뀐 테스트가 조절될 수 있다.This shape reaches the
출력단(750a-750n)에서 출력이 생성되고(이 출력 단은 링크(750, 도 7)의 컴포넌트일 수 있음), 이는 결정 포인트(751, 도 7)로 제공된다. 위에 설명한 것과 같이, 이러한 아키텍처는 임의의 모양(예, 원형 또는 GAD 요소)을 테스트하는 ITR로 제공된다. 또한, 컬렉션 관리 유닛(1075)에 연결된 결정 포인트(751)는, GAD 교차 테스트의 결과가 지정된 GAD 요소에 지정된 광선이 충돌한다는 결정을 포함한다는 것을 나타내고, 이는 식별된 광선이 GAD 요소에 대응하는 컬렉션에 부가되도록 한다. 따라서, 다른 구현예는 GAD 테스트 결과를 컬렉션 관리 유닛(1075)에 직접 제공하는 단계를 포함할 수 있다. 더 일반적으로, 설명된 예들은 잠정적인 정보의 플로우를 예시하며, 이와 다른 플로우도 이들로부터 알 수 있다.An output is generated at the
주의해야한 본 발명의 다른 측면들은, 지정된 광선 컬렉션에 대한 하나 이상의 광선 ID가 큐(1021, 1022, 1023, 컬렉션(1047)에 의해 도시됨) 중 어느 하나에 저장될 수 있다는 것이다. 이러한 경우에, 그 큐에 대한 ITR은, 광선 및 이차 테스트(또는 많은 후속 테스트)에 대한 결과, 양자를, 가용하게 됨에 따라, 테스트할 수 있다. 결정 포인트(751)는 컬렉션의 모든 결과 모아지기를 기다리거나, "스트래글러(straggler)" 결과가 필요에 따라 전파될 수 있다.Another aspect of the invention to be noted is that one or more ray IDs for a given ray collection may be stored in any of the
요약하면, 도 10은 복수의 테스트 자원에 대한 큐에 분산될 하나 이상의 모양과 광선 식별기의 패킷이 연관되도록 하는 시스템 구조화를 나타내며, 복수의 자원은 각각 광선 데이터의 서브세트를 저장한다. 각각의 테스트 자원은 테스트 자원으로 로드된 모양에 대해 각 광선 식별기에 의해 식별된 광선 데이터를 페치한다. 바람직하게, 이 모양은 모든 테스트 자원을 통해 일관되게 직렬로 스트림화 될 수 있다. 모양은 메인 메모리 내의 하나의 어드레스에서 시작하는 자(children)의 시퀀스로 식별될 수 있다. 따라서, 도 10은 하나의 모양이 다중 광선에 대해 동시에 테스트되는 시스템 구조화를 설명한다. In summary, FIG. 10 illustrates a system structure that allows packets of ray identifiers to be associated with one or more shapes to be distributed in a queue for a plurality of test resources, each of which stores a subset of ray data. Each test resource fetches the ray data identified by each ray identifier for the shape loaded into the test resource. Preferably, this shape can be streamed serially consistently across all test resources. The shape can be identified by a sequence of children starting at one address in main memory. Thus, FIG. 10 illustrates system structuring in which one shape is tested simultaneously for multiple rays.
그러나, 다른 예는 일련의 서로 다른 교차 테스트 자원에서 연이어 모양을 테하는 단계를 제공하며, 여기서 모양 데이터와 광선 식별기 패킷은 교차 테스트 자원들 사이를 이동한다. 복수의 패킷을 인 플라이트 상태로 만듦으로서, 테스트의 처리량이 증가한다. 이러한 방식의 여러 예가 이하에서 설명된다.However, another example provides for the step-by-step shape in a series of different cross test resources, where the shape data and the ray identifier packet move between cross test resources. By putting multiple packets in flight, the throughput of the test is increased. Several examples of this approach are described below.
도 11은 복수의 연산 자원(1104-1108)의 링 버스 배치가 구현될 수 있는 컴퓨터 아키텍처의 제 1 예를 도시한다. 각각의 연산 자원은 프라이빗 L1 캐시(1125a-1125n)에 대한 액세스를 가지고, 이는 교차 테스트에 사용된 임의의 연산 자원에 대해, 메모리(340) 내의 모양 데이터 저장장치(1115)로부터 그 연산 자원으로 제공된 기하학적 모양을 이용하여 교차 테스트될 광선 데이터를 포함한다. 연산 자원(1104-1108) 사이의 통신은 버스(1106)에 의해 이루어질 수 있고, 이는 복수의 포인트 투 포인트 링크 또는 이러한 인터-프로세서 통신에 적합한 임의 다른 아키텍처를 포함할 수 있다. 11 illustrates a first example of a computer architecture in which ring bus placement of a plurality of computing resources 1104-1108 may be implemented. Each computing resource has access to a
연산 자원이 특정한 메모리 구조(가령, L2 캐시(1130, 1135))를 공유하는 경우에, 이들 연산 자원(예, L2 캐시(1130))를 공유하는 연산 자원(1107, 1106)) 사이의 통신은 일정한 목적의 캐시를 통해 서로 통신할 수 있다. 추가적으로, 시스템에서 테스트 중인 광선에 관한 데이터의 사본이 광선 데이터(1110) 내에, 광선 데이터(1110a-1110n) 사이의 이들의 서브세트의 분산을 위해, 보관될 수 있으며, 이러한 광선 데이터가 L2(1130) 및 L2(1135)를 통해 전송될 수 있고, 이들의 많은 부분이 L2 캐시(이하에 설명됨)에 저장될 수 있다. 모양 데이터(115)는 또한 메모리(340)에 존재할 수 있고, L2(1130, 1135) 중하나 이상에 그리고 캐시(1125a-1125n) 중 어느 하나에 임시로 존재한다. 그러나, 이러한 캐시에 저장된 광선 데이터는 모양 데이터가 중복기록되지 않게 보호되며, 이러한 모양에 할당된 공간의 크기는 일반적으로, 테스트에서 다음에 사용될 시점에 대한 표시 없이, 모양 데이터를 유지하려 하지 않고도, 테스트를 위해 대기하며 모양 데이터(115)에 대한 레이턴시를 방어하기에 충분한 것으로 현재 식별된 광선 패킷에 대해 사용될 수 있는 것으로 한정된다. 다르게 설명하면, 광선 데이터에 대해, Where computational resources share a particular memory structure (eg,
도 11은 또한, 최근 최소 사용(least recently used) 교체와 같은 전형적인 캐시 관리 알고리즘을 사용하는 것을 피하는 것이 바람직하다.11 also preferably avoids using a typical cache management algorithm, such as replacing a least recently used.
도 11은 또한 교체 테스트에 부가하여, 연산 자원(1104)에서 애플리케이션 및/또는 드라이버(120)가 실행될 수 있다는 것을 설명한다. 또한, 광선 프로세스(1121)는 연산 자원(1108)에서 실행될 수 있고, 패킷 데이터(1116)는 패킷 프로세스(1121)에 의해 사용되도록 캐시(1125a)에 저장될 수 있다. 다른 패킷 데이터는 L2(1129)에 저장될 수 있다. 그러나 광선 데이터와 유사하게, 최고속 가용 메모리에 패킷 데이터를 저장항하는 것이 바람직하다. 패킷 프로세스는 이전 도면에서 수생된 컬렉션 및 그외 관리 로직과 동일한 많은 기능을 수행한다. 즉, 어느 광선이 어느 GAD 요소와 교차되는지를 추적하고, 예를 들면 충분한 광선이 교차된 GAD 요소의 자에 대해 충분한 광선이 테스트되도록 함으로써, 테스트 대기 중인 GAD 요소를 선택한다. 11 also illustrates that in addition to the replacement test, the application and / or driver 120 can be executed on the
이러한 예에서, 패킷 프로세스(1121)가 중심화되기 때문에, 복수의 광선 식별기 및, 식별된 광선과의 교차에 대해 테스트될 모양에 대한 레퍼런스 또는 모양에 대한 데이터 중 하나가 를 포함하는 패킷을 발행함으로써 동작한다. 교차 테스트를 수행하는 각각의 연산 자원(1104-1107)은 패킷을 수신한다. 예를 들어, 복수의 포인트 투 포인트 링크(이하에 설명됨)에서 연속적으로 또는 공유 버스 타입 매체(이는 도 10의 아키텍처와 유사함)에서 동시에 수신된다. 각각의 연산 자원(1104-1107)은 로컬화된 광선 데이터(1110a-1110n)가 패킷에 식별된 임의의 광선에 대한 데이터를 저장하는지 여부를 결정하고, 그러한 경우에 그 광선에 대한 데이터를 검색하며 이를 테스트하고 결과를 출력한다.In this example, because the
GAD 요소 교차에 대한 결과는 패킷 프로세스(1121)에 의해 추적되기 때문에, 패킷 프로세스91121)로 이러한 결과를 되돌려주는 임의의 통신 메커니즘이 적합하다. 이러한 메커니즘은 시스템의 전체 아키텍처에 근거하여 선택될 수 있다. 일부 예시적인 접근 방식이 이하에 설명되며, 각각의 발견된 교차부에 대한 개별적인 식별결과을 포함할 수 있다. 또는 각각의 테스트 자원이 교차 결과를 이용하여 순환 패킷을 밀집시킬 수 있다.Since the results for GAD element intersections are tracked by the
도 12는 캐시(1281-1284)와 연관된, 연산 자원(1205-1208)의 구조화의 추가 실시예를 도시하며, 캐시들 각각은 광선 데이터(1266a-1266n)와 패킷 데이터(1216a-1216n)를 저장한다. 각각의 연산 자원(1205-1208)은 큐(1251-1208)에 의해 하나 이상의 다른 연산 자원으로 연결된다. 광선 프로세스(1210)는 큐(1250)를 통해 입력을 연산 자원(1205)으로 제공한다. 광선 프로세스(1210)는 애플리케이션/드라이버(1202)와 통신한다. 연산 자원(1208)으로부터의 출력(1255)은 광선 프로세스(1210)에 연결된다. 또 다른 출력(1256)은 연산 자원(1205)에 연결된다. 원형 및 GAD 저장장치(103)는 모양 데이터에 대한 판독 속을 연산 자원(1205-1208)으로 제공한다.12 shows a further embodiment of the structure of the computational resources 1205-1208, associated with the caches 1281-1284, each of which stores
광선 프로세스(1210)은 테스트를 위한 광선을 수신하거나 생성하고, 식별된 광선에 대한 광선 식별기 및 광선 데이터를 포함하는 패킷을 형성한다. 패킷은 큐(1250-1254)를 통해 연산 자원(1205-1208) 각각으로 전달된다. 각각의 연산 자원(1205-1208)은 지정된 패킷 내 광선의 일부를 취득하고, 일부예에서 단 하나의 광선만을 취득하며, 광선 데이터(1266a-1266n) 내의 광선의 일부를 저장한다. 다른 예는 특정한 연산 자원(1205-1208)에 예정된 패킷을 송신하여 광선 프로세스(1210)가 어느 광선 데이터가 어느 로컬화된 광선 데이터(1266a-1266n)에 저장될 것인지를 결정하도록 하는 것을 포함한다.
광선이 로컬화된 저장장치에 로딩된 후에, 이들은 이후에, 원점 및 방향 데이터 없이 광선 ID 만을 포함하는 패킷에 의해 식별된다. 이러한 패킷은 또한 그 패킷에서 식별된 광선에 대해 테스트될 모양에 대한 레퍼런스 또는 데이터 중 하나를 포함한다. 일부 예에서, 이러한 패킷을 형성하는 데이터가 연산 자원((1205-1208)의 로컬화된 메모리(1281-1284) 사이에 분산된다. 따라서, 연산 자원(1205-1208)들 각각은 지정된 시점에 시스템에서 테스트 중인 광선에 대한 패킷 데이터의 일부를 보관하고 이로써 어느 광선이 어느 모양에 대해 다음번에 테스트될 것인가 관한 정보가 분산된다. 따라서, 각각의 연산 자원(1205-1208)은 테스트 대기중인 컬렉션의 테스트를 시작하기 위해, 광선 ID 및 모양 정보의 패킷을 발행할 수 있다.After the rays are loaded into the localized storage, they are then identified by packets containing only the ray ID without origin and direction data. This packet also contains either a reference or data to the shape to be tested for the light beam identified in that packet. In some examples, the data forming these packets is distributed between the localized memory 1281-1284 of the computational resources 1205-1208. Thus, each of the computational resources 1205-1208 is configured at a specified point in time. Keeps a portion of the packet data for the ray under test and distributes information about which ray will be tested next for which shape, so that each computational resource 1205-1208 can test the collection of pending tests. To begin with, it may issue a packet of ray ID and shape information.
각각의 패킷은 큐 및 연산 자원을 통과하는 라운드(round)를 만들고, 이어서 그 내부에 집약된 교차 테스트의 결과에 따라 발신 연산 자원으로 재 전송한다. 일 구현예에서, 각각의 연산 자원(1205-1208)은 발행할 패킷에 대한 모양 데이터를 페치한다. 예를 들어, 연산 자원(1205)이 테스트 대기 중인 패킷(예, 지정된 GAD 요소에 대한 광선의 컬렉션)을 가지는 경우에, 연산 자원은 이러한 어소시에이션(예, GAD 요소의 자)에 의해 테스트될 모양을 페치하고, 각각의 모양에 대한 데이터를 가지는 패킷을 만들고, 큐(1251)로부터 각각의 패킷을 전송할 수 있다.Each packet makes a round through the queue and computational resources, and then retransmits it to the originating computational resource according to the results of the cross-test aggregated therein. In one implementation, each computing resource 1205-1208 fetches shape data for the packet to issue. For example, if a
다음으로, 패킷이 다른 연산 자원을 통해 이동한 후에, 연산 자원(1205)은 자신이 방출한 각각의 패킷을 수신한다. 수신된 때, 각 패킷은 나머지 연산 자원들(1206-1208)에 저장되었거나/저장된 패킷에 식별된 광선과의 교차에 관한 패킷(레퍼런스 또는 정의 데이터) 내의 모양을 테스트한 결과가 포함되어 있다. 연산 자원(1205)은, 나머지 연산 자원이 그들의 테스트를 수행하기 전 또는 후에 아무때나, 광선 데이터(1266a)에 로컬화된 임의의 식별된 광선을 테스트할 수 있다. 따라서, 광선 정의 데이터는, 교차 테스트 자원에 연결된 복수의 고속 메모리 사이에 분산될 수 있으며, 테스트 결과가 분산 방식으로 수집될 있다.Next, after the packet has moved through another computational resource, the
도 12에 따른 아키텍처를 구현하는 방법은 사용 중인 물리적 시스템의 다양한 특성을 고려한다. 예를 들어, 큐가 일 방향으로 패킷을 전송하는 것으로 도시되었다. 그러나, 양 방향으로 모두 패킷을 전송하는 것도 구현될 수 있다(즉, 양방향 큐 또는 다중 큐). 또한, 도 12는 연산 자원 사이에 데이터 패킷이 퍼져 있어, 더 많은 L2 캐시, 그리고 잠재적으로 대용량 메모리(가령 메인 메모리(103))로의 다른 포트로의 더 분산된 형태의 메모리 액세스을 가능하게 한다.The method of implementing the architecture according to FIG. 12 takes into account various characteristics of the physical system in use. For example, a queue is shown that transmits packets in one direction. However, transmitting packets in both directions can also be implemented (i.e. bidirectional queues or multiple queues). 12 also spreads data packets between computational resources, allowing more L2 caches and potentially more distributed forms of memory access to other ports to potentially large memory (eg, main memory 103).
패킷 데이터가 중앙화되면, 데이터 레퍼런스와 함께 일 방향으로 전송된 패킷은 예를 들면, 연산 자원(1205)에 의해 페치도니 데이터를 가질 수 있고, 데이터 레퍼런스와 함께 다른 방향으로 전송된 패킷은 연산 자원(1208)에 의해 페치된 데이터를 가질 수있다. 이러한 상황은 링버스 아키텍처(단방향 또는 양방향)로 임의 엔트리 포인트를 제공하도록 일반화될 수 있다.If the packet data is centralized, a packet transmitted in one direction with the data reference may have fetched data, for example, by the
내용으로부터 입증된 바와 같이, 설명된 큐는, 복수의 교차 테스트 자원을 포함하는 시스템으로 교차 테스트를 위한 새로운 광선을 입력하기 위한, 그리고 교차 테스트 자원들을 서로 연결하는 하나 이상의 큐를 포함할 수 있다. 일부의 경우에, 새로운 광선을 입력하는 큐가 광선 정의 데이터(예, 교차 테스트 자원에 연결된 캐시 내의 데이터를 저장하기 위해 대기하는 큐)를 포함할 수 있다. 이러한 큐는 광선 정의 데이터를 저장하는 메인 메모리에 열거되는 식으로 구현될 수 있다. 패킷을 송신하는 교차 테스트 자원을 상호 연결하는 큐가 광선 정의 데이터가 아닌 광선 식별기만을 포함하는 것이 바람직하다. As demonstrated from the content, the described queue may include one or more queues for inputting new rays for cross testing into a system comprising a plurality of cross test resources, and for interconnecting cross test resources. In some cases, the queue for entering new rays may include ray definition data (eg, a queue waiting to store data in a cache connected to the cross test resource). Such a queue may be implemented in an enumerated manner in main memory that stores ray definition data. It is preferable that the queue interconnecting the cross test resources for sending packets only contain ray identifiers, not ray definition data.
도 13은 시스템(1200)의 잠재적인 구현예의 일부를 나타내며, 여기서 연산 자언은 칩의 코어들로 구현될 수 있으므로, 연산 자원(1205)은 하나의 코어이고, 연산 자원(1206)은 다른 코어이다. 여기서 큐(1251)가 인터코어 통신이다. 또한 모양 데이터와 마찬가지로 광선 데이터를 저장할 수 있는 중간삽입 L2 캐시(1305)가 도시된다. 13 illustrates some of the potential implementations of
이전 도면을 참조하여 설명한 바와 같이, L2 캐시(1305)는 장면 도형 및 가속 데이터의 일부를, 이러한 데이터를 저장함으로써, 광선 데이터의 스레싱이 증가되지 않는 한, 저장한다(즉, 광선 데이터가 캐시 저장장치의 우선순위를 지정한다).As described with reference to the previous figures, the
도 14a-14c는 각각 예시적인 시스템에 대한 다양한 구현예에 따라 큐가 가질 수 있는 다양한 관계를 도시한다. 일반적으로, 연산 자원간 통신은 직렬적이거나 1:1일 필요가 없다. 예를 들어, 도 14a는 큐(1405, 1406) 모두에 하나의 입력(1404)이 입력될 수 있고, 이 큐들은 각각 하나의 연산 유닛(1407, 1408)에 각각 특화될 수 있다. 예를 들어, 연산 유닛(1407, 1408)이 단일한 물리적 칩에 구현되는 경우에, 입력(1404)은 칩 레벨 입력일 수 있으며, 각각의 큐(1405, 1406)가 특정한 코어에 관한 것일 수 있다.14A-14C each illustrate various relationships a queue may have in accordance with various implementations of the exemplary system. In general, communication between computational resources need not be serial or 1: 1. For example, in FIG. 14A, one
도 14b는 단일 입력이 다중 코어에 입력되는 것을 도시하며, 이들 코어는 각각 연산 유닛(1407, 1408)에 입력을 할 수 있고, 이 연산 유닛은 각각 데이터를 반대 큐(1406, 1405)로 개별적으로 전송할 수 있다. 도 14c는 큐(1411)이 입력(1410)을 수신하고, 출력 연산 유닛(1407, 1408) 모두로 제공하는 것을 나타낸다. 따라서, 도 14a-14c는, 다양한 큐잉 전략이 이러한 측면들에 따른 패킷 전송을 구현할 수 있다는 것을 설명한다.FIG. 14B shows that a single input is input to multiple cores, which cores may input to
도 15는 캐시 계측구조의 다중 레벨이 존재하는 경우에(예를 들면, 레벨 1 캐시(1502, 1503) 및 레벨 2 캐시(1504), 광선 데이터의 다양한 조합이 제공될 수 있다는 것을 나타낸다. 예를 들어, 광선 데이터(1507)는 광선 데이터(1505, 1506)의 개별적인 서브세트를 포함할 수 있으며, 마찬가지로 다른 광선 데이터가 광선 데이터(1505 또는 1506) 중 하나 이상에 존재하지 않을 수 있다. 하나의 큐가 하나 이상의 연산 자원(도 14c)에 입력되는 경우에서와 같이, 광선 데이터(1505, 1506)가 동적으로 변할 수 있으며, 광선 데이터는 광선 데이터(1507)에 저장된 광선의, 광선 데이터(1505 또는 1506) 중 하나로의 할당결과를 반영할 수 있다.15 illustrates that where multiple levels of cache metrology exist (eg,
도 16은 저장할 수 있는 큐(1251) 및 데이터의 구현 예를 상세히 도시한다. 패킷(1601a-1601n)이 도시되고, 각각은 개개의 광선 식별기(1605a-1605p, 1606a-1606p, 1607a-1607p)와 대응하는 충돌 정보 필드(1610a-1610p, 1611a-1611p, 1612a-1612p)를 가진다. 패킷(1601a)은 모양 1에 대한 데이터(1615a)를 포함하고, 패킷(1601b)은 모양 2에 대한 데이터(1615b)를 포함하며, 패킷(1601n)은 모양 n에대한 데이터 (1615n)을 포함한다. 물론, 다양한 다른 큐잉 전략(이들 중 일부느 도 14a-14c에 도시됨)이 구현될 수 있다.16 illustrates in detail an implementation example of a
여기에 사용된 큐잉(queuing)이란 용어는 임의 지정된 연산 자원에서 테스트된 광선에 대해 퍼스트 인/퍼스트 아웃 조건을 부가하지 않는다. 평균적으로, 임의 지정된 패킷에서 식별된 광선은 서로 다른 연산 자원에 대해 로컬화된 광선 저장장치 사이에 균등하게 분산될 것이며, 이에 따라 각각의 패킷에 대해 병렬화가 이루어진다. 하나의 연산 자원에서 하나의 패킷에 대해 복수의 광선이 테스트될 필요가 없는 경우에, 다른 연산 자원이 그 패킷에 대해 교차할 광선을 가지지 않는 버블이 형성될 수 있다. 이러한 버블은 다른 연산에 의해 채워질 수 있으며, 다른 연산은 다른 패킷의 교차 테스트를 포함한다. 일부 예에서, 각각의 연산 자원은 다중 스레드에 대한 상태를 유지하고 지정된 패킷에 대해 고정 상태인 스레드들 사이의 스위칭을 할 수 있다. 패킷들 사이의 각각의 교차 테스트에 대한 임게 데이터가 레지스터에 보관될 수 있는 한, 기본 처리량 이득이 실현되어야 한다.The term queuing, as used herein, does not add a first in / first out condition for a ray tested on any specified computational resource. On average, the rays identified in any given packet will be evenly distributed among the ray storage localized for different computational resources, resulting in parallelization for each packet. In the case where a plurality of light rays need not be tested for one packet in one computing resource, a bubble may be formed in which no other computing resource has rays to intersect for that packet. These bubbles can be filled by other operations, which involve cross testing of other packets. In some examples, each computational resource may maintain state for multiple threads and switch between threads that are stationary for a given packet. Basic throughput gains should be realized as long as the data for each cross test between packets can be kept in a register.
예시적인 시스템의 동작의 측면에서 부분적으로 요약하면, 각각의 연산 자원은 패킷의 수신에 응답하여 동작한다. 특정한 연산 자원에 대한 입력 큐로부터 패킷이 도착하면, 연산 자원은 그 패킷 내의 광선 식별기를 검사하고, 패킷 내의 식별된 광선이 개별적인 메모리 내에 식별된 광선에 대해 저장된 데이터를 가지는지 결정한다. 다르게 설명하면, 패킷은 어느 연산 자원이 패킷 내에 식별된 광선에 대한 광선 데이터로의 고속 액세스를 포함하느냐에 대한 우선순위 정보 없이 광선 식별기를 이용하여 형성될 수 있다. 나아가, 각각의 연산 자원은 패킷 내 식별된 모든 광선에 대한 광선 데이터를 획득하기 위한 응답식 시도를 하지 않다. 다만 패킷 내 식별된 임의 광선에 대한 로컬 고속 메모리 내의 광선 데이터를 가지는지에 대해서만 결정하며, 식별된 모양과의 교차에 대한 광선 테스트만을 수행한다.Partly summarized in terms of operation of the example system, each computing resource operates in response to receipt of a packet. When a packet arrives from an input queue for a particular computational resource, the computational resource examines the ray identifier in that packet and determines whether the identified ray in the packet has data stored for the identified ray in a separate memory. Stated differently, a packet may be formed using a ray identifier without prioritization information on which computational resources include fast access to ray data for the ray identified in the packet. Furthermore, each computational resource does not make a responsive attempt to obtain ray data for all identified rays in the packet. It only determines if it has ray data in the local fast memory for any ray identified in the packet, and performs ray ray tests only for intersection with the identified shape.
도 17은 예시적인 연산 자원에서 패킷이 처리될 수 있는 방식에 대한 여러 측면을 설명하기 위한 것이다. 도 17은 연산 자원(1206)으로 패킷(1601)이 입력되는 것을 도시한다. 연산 자원(1206)은, 패킷(1601a)으로부터의 광선 식별결과를 이용하여 광선 데이터를 질의한다(예를 들면, 광선(1605a)이 광선 ID(31)를 가지며 광선 데이터 저장장치(1266b) 내의 광선 ID(31)와 일치되는가를 질의). 광선 ID)(31)과 관련된 원점 및 방향이 1290을 통해 검색된다. 또한, 모양 데이터(패킷에서 식별된 경우에)가 현재 모양 데이터가 저장된 메모리 자원(1291)으로부터 획득된다(1715). 패킷에 모양 데이터가 제공되지 않으면, 그 모양 데이터가 직접 사용된다. 이어서, 광선(31)은 모양 1(또는 검색된 데이터에 의해 정의된 모양)과 교차에 대해 테스트 된다.17 is intended to illustrate various aspects of how a packet can be processed in an exemplary computing resource. 17 illustrates that a packet 1601 is input to an
테스트된 모양이 GAD 요소이면(1725), 이러한 교차 테스트의 효과는 테스트된 광선과의 교차 가능성을 가질 수 있는 장면 원형의 소단위 서브세트를 결정하기 위한 것이다. 따라서, 포지티브 히트(충돌) 결과가 광선 식별기(즉 광선 식별기(31))에 관한 위치의 패킷(1610a)에 재기록 된다(1726). 일부 구현예에서, 패킷의 전송자가 전송된 광선 ID가 무엇인지, 패킷에서 어떤 순서인지를 추적할 수 있고, 유추된 순서가 전송과 동일한 순서인 것으로 하여, 결과만 재기록할 필요가 있다. 따라서, 테스터를 통과한 후에, 패킷 전송(방출) 자원은 테스트 결과를 처리할 수 있다.If the tested shape is a GAD element (1725), the effect of this crossover test is to determine a subset of scene prototypes that may have the potential to intersect with the tested ray. Thus, the positive hit (collision) result is rewritten (1726) in
다른 한편으로, 테스트된 모양이 원형(1730)인 경우에, 가장 가까운 원형 교차 결정 유닛(1731)은 검출된 교차부가 임의의 이전 것과 인접한 지 여부를 결정할 수 있다. 이어서 검출부가 교차된 원형인 경우에, 선택적으로 교차부 거리가 패킷을 이용하여 저장되거나 출력될 수 있다. 지정된 광선이 다중 패킷과(즉, 다중 GAD 요소와 동시에) 연관되기 때문에, 광선이 GAD 요소와 연관될 때마다 카운트가 보관될 수 있고(1733), 이에 따라 카운트는 광선이 테스트가 필요한 임의의 다른 패킷에 더 이상 존재하지 않는 시점을 결정할 수 있고, 그 광선을 위해 쓰인 메모리가 다른 광선의 입력을 위해 프리 상태가 되도록 한다. On the other hand, when the tested shape is a
요약하면, 로컬 고속 저장장치 내의 각 광선과 연관된 데이터가 가장 인접한 검출된 원형 교차 식별기를 포함하는 것이 바람직하며, 이 식별기는 교차부에 대해 파라미터화된 거리 및 원형 레퍼런스를 포함한다. 각 광선과 연관된 다른 데이터는 광선이 존재하는 GAD 요소 광선 컬렉션의 카운트를 포함한다. 각각의 컬렉션이 테스트된 후에, 카운트가 감소되고, 또 다른 컬렉션이 생성될 때 카운트가 증가한다. 카운트가 제로일 때, 가장 인접한 교차 원형인 것으로 식별된 원형이 그 광선에 의해 교차될 것으로 결정된다.In summary, it is preferred that the data associated with each ray in the local fast storage device include the nearest detected circular intersection identifier, which includes a parameterized distance and circular reference to the intersection. Other data associated with each ray includes the count of the GAD element ray collection in which the ray is present. After each collection is tested, the count is decremented and the count is incremented when another collection is created. When the count is zero, it is determined that the circle identified as the nearest intersection circle will be crossed by that ray.
도 18은 예시적인 SIMD(single instruction multiple data) 아키텍처에 관한 것이며, 이는 패킷이 테스트를 위한 기하학적 모양의 스트립의 시작부분을 식별할 수 있는 경우에 사용될 수 있다. 일 예에서, GAD 요소 그래프의 노드가 하나 이상의 다른 노드에 에지가 연결되며, 여기서 각각의 노드는, 박스를 규정하도록 정렬된 축이나 구와 같은 기하학적 가속 데이터의 요소를 나타낸다. 일부 예에서, 그래프가 계층적이고, 따라서 지정된 노드의 테스트 시, 지정된 노드의 자는 모 노드에 의해 규정된 원형의 선택을 규정하도록 알려진다. GAD 요소는 최종적으로 원형의 선택을 규정한다.18 relates to an exemplary single instruction multiple data (SIMD) architecture, which may be used where a packet can identify the beginning of a strip of geometric shape for testing. In one example, nodes in the GAD element graph are edge connected to one or more other nodes, where each node represents an element of geometric acceleration data, such as an axis or sphere, aligned to define a box. In some examples, the graph is hierarchical, and therefore, when testing a designated node, the chair of the designated node is known to define the selection of the circle defined by the parent node. The GAD element finally defines the selection of the prototype.
구현예에서, 가속 요소의 스트링(이는 지정된 요소의 자임)은 스트링 내의 제 1 요소의 메모리 어드레스에 의해 식별될 수 있다. 이어서, 아키텍처가 사전지정된 스트라이드 길이를 다음 요소의 시작점의 데이터에 제공한다. 플래그가 제공되어 지정된 노드의 자 노드인, 요소의 지정된 스트링의 말단을 표시하기 위해 제공될 수 있다. 유사하게, 원형의 스트립이 다음 원형을 정의하기 위해 알려진 스트라이드 길이를 가지는 시작 메모리에 의해 식별될 수 있다. 삼각형 스트립에 대해 더 구체적으로, 시퀀스의 두 개의 꼭짓점은 각각 여러 삼각형을 정의할 수 있다.In an implementation, the string of acceleration elements, which are children of the designated element, may be identified by the memory address of the first element in the string. The architecture then provides a predetermined stride length to the data of the starting point of the next element. A flag may be provided to indicate the end of the specified string of elements that is a child node of the designated node. Similarly, a circular strip can be identified by the starting memory having a known stride length to define the next prototype. More specifically for triangular strips, two vertices of a sequence may each define several triangles.
도 18은 도 6에 도시된 SIMD 아키텍처와 유사한 SIMD 아키텍처의 여러 측면을 도시하기 위한 것이다. 이 예에서, 다중 광선 식별기(1605a-1605n)와, 선택적으로 교차 테스트 결과(1610a-1610n)를 수신하기 위한 저장 공간, 그리고 모양 정의 데이터, 모양에 대한 식별기, 또는 테스트 될 모양의 스트립(예, 삼각형 원형)의 시작에 대한 식별기(1815a)를 포함하는 모양 데이터를 포함하는 패킷(1601)이 수신된다. FIG. 18 is intended to illustrate various aspects of a SIMD architecture similar to the SIMD architecture shown in FIG. 6. In this example, the
이러한 예시적인 아키텍처는, 적은 수의 강력한 개별적인 프로세싱 자원(대용량 캐시를 가짐)이 교차 테스트에 사용되는 경우에 적합하다. 여기서, 각각의 개별적인 프로세싱 자원은 평균적으로, SIMD 명령에 의해 테스트될 수 있는 광선의 수와 거의 동일한 로컬 저장장치의 광선의 수를 가지는 것으로 예상할 수 있다(대조적으로, 도 10은 각각의 컬렉션에 대해 각각의 캐시가 하나의 광선을 가지는 것이 바람직한 경우의 예를 도시함). 예를 들어, 네 개의 광선은 SIMD 실행 유닛에서 네 개의 광선이 동시에 테스트 될 수 있는 경우에, 각각의 패킷 내의 SIMD 유닛이 거치는 로컬 저장장치에 통계적으로 네 개의 광선을 가지는 것이 바람직하다. 예를 들어, 네 개의 별개의 프로세싱 자원이 제공된 경우에, 각각은 네 개의 광선을 테스트할 수 있는 SIMD 유닛을 가지고 하나의 패킷은 약 16 개의 참조된 광선을 가질 수 있다. 택일적으로, 개별적인 패킷이 SIMD 유닛을 가지는 각각의 프로세싱 자원으로 제공될 수 있으며, 이에 따라 예를 들면 패킷은 4 x SIMD 유닛이 존재하는 경우에 참조되는 4 개의 광선을 가질 수 있다. This example architecture is suitable when a small number of powerful individual processing resources (with large caches) are used for cross testing. Here, it can be expected that each individual processing resource will, on average, have a number of rays of local storage that is approximately equal to the number of rays that can be tested by the SIMD instruction (in contrast, FIG. 10 is in each collection). Shows an example where it is desirable for each cache to have one ray. For example, if four rays can be tested simultaneously in the SIMD execution unit, it is desirable to have four rays statistically in the local storage that the SIMD unit in each packet goes through. For example, if four separate processing resources are provided, each has a SIMD unit capable of testing four rays and one packet may have about 16 referenced rays. Alternatively, a separate packet may be provided to each processing resource having a SIMD unit, such that, for example, the packet may have four rays referenced when there is a 4 x SIMD unit.
일부 예에서, 패킷(1601)을 수신하는 제 1 연산 자원(1205)은 모양의 스트립에 대한 데이터를 획득하기 위해 식별기(1815a)를 사용할 수 있다. 이어서, 광선 데이터(1266a)에 저장된 패킷(1601a)에 참조된 각각의 광선이 연산 유닛(1818a-1818d)에서 테스트된다. 모양 스트립의 예에서, 모양 스트립(1816)이 검색되고, 이는 모양 1-4를 포함한다. 각각의 모양은 각각의 연산 유닛(1818a-1818d)을 통해 스트림화 될 수 있고, 그 유닛에 로드된 광선과의 교차에 대해 각각 테스트된다. 스트립의 각 모양에 대하여, 연산 자원은, 모양 중 하나에 대해 광선을 테스트 한 결과를 각각 포함하는 패킷(패킷(1820)이 도시됨)을 체계화할 수 있다.In some examples,
택일적으로, 별개의 비트가 교차 결과를 수신한 각각의 광선에 대한 결과 섹션에 제공될 수 있으며, 하나의 패킷이 통과될 수 있다. 저속 메모리로부터 다시 페치되는 것을 방지하기 위해, 이러한 방식은, 다중 연산 자원이 L2를 공유할 수 있는 경우에, 또는 제 1 연산 자원에 의한 패치가 다른 연산 자원으로 모양 데이터를 전송하도록 하는 경우에, 가장 적합한 것으로 여겨진다. 예를 들어, DMA 트랜잭션은 다중 타깃을 포함할 수 있다. 각각의 타깃은 테스트도리 모양의 지정도니 스트림을 수신할 필요가 있는 서로 다른 연산 자원이며, 일부 구현예에 적합한 메모리 트랜잭션 모델의 일 예이다. 원칙적인 고려 사항은 한번 이상 메인 메모리(103)로부터 동일한 데이터를 페치하는 것을 감소시켜야 한다는 것이다.Alternatively, a separate bit may be provided in the result section for each ray that received the intersection result, and one packet may be passed. To avoid being fetched back from the slow memory, this approach can be used when multiple computational resources can share L2, or when a patch by a first computational resource sends shape data to another computational resource. It is considered the most suitable. For example, a DMA transaction may include multiple targets. Each target is a different computational resource that needs to receive a testdori shaped stream and is an example of a memory transaction model suitable for some implementations. The principle consideration is to reduce the fetch of the same data from
이전에 설명한 바와 같이, 각각의 교차 테스트 자원은 어느 식별기가 자신의 광선 데이터 저장장치에 저장된 광선 데이터를 가지는지를 결정한다. 임의의 광선에 대해, 광선 원점 및 방향이 검색된다. 위에서, 테스트 자원이 하나 이상의 식별된 모양의 시퀀를 이용하여 지정된 식별 광선을 테스트할 수 있는 예가 제공되었다. 드러나, 프로세싱 자원은 실질적인 추가 레이턴시 없이, 동시에 지정된 광선과 교차하는 복수의 모양을 테스트하거나, 또는 하나의 모양과 복수의 광선을 테스트하거나, 또는 이 둘의 조합을 테스트할 수 있다. 도 18에서, SIMD 아키텍처가 도시되고, SIMD 아키텍처는 교차 테스트를 위해 구성된 하나의 연산 자원 내에 , 네 개의 SIMD 유닛 각각이 연이어 제공되는 모양과 교차하는 서로 다른 광선을 테스트할 수 있다. 모양의 시퀀스는 일련의 모양에 대한 검색을 시작하도록, 장면 데이터 저장장치(340)로의 인덱스로 사용된 모양 스트립 레퍼런스에 근거하여 페치될 수 있으며, 일련의 모양은 각각 연산 유닛(123) 내에서 테스트 되며 4 개이다. As previously described, each cross test resource determines which identifier has ray data stored in its ray data storage. For any ray, the ray origin and direction is retrieved. Above, an example has been provided in which a test resource can test a designated identifying ray using a sequence of one or more identified shapes. Apparently, processing resources can test a plurality of shapes that intersect a specified beam at the same time, or test one shape and a plurality of beams, or a combination of the two, without substantial additional latency. In FIG. 18, a SIMD architecture is shown, which can test different rays intersecting the shape of each of the four SIMD units successively provided within one computational resource configured for cross testing. The sequence of shapes can be fetched based on the shape strip reference used as an index into the
바람직하게, 광선들은 수집된 광선과 가속 데이터의 요소 사이의 검출된 교차부에 근거하여 컬렉션으로 수집된다. 따라서, 이 예에서, 다른 광선이 4의 서로 다른 모양에 대해 각각의 SIMD 유닛에서 테스트되는 경우에, SIMD 유닛을 포함하는 연산 자원은 광선의 패킷으로 결과를 재 포맷할 수 있고, 이들 패킷은 각각 모양을 참조한다. Preferably, the rays are collected into the collection based on the detected intersection between the collected rays and the elements of the acceleration data. Thus, in this example, when different rays are tested in each SIMD unit for different shapes of four, the computational resources containing the SIMD units may reformat the results into packets of rays, each of which is a packet of rays. See shape.
SIMD 유닛을 사용하는 다른 아키텍처가 컬렉션으로, 수집된 복수의 광선에 대한 페치를 대신 제공할 수 있다. 위에 설명된 것과 같이, 이러한 광선은 컬렉션과 연관된 모양에 관계된 모양에 대해 다음번에 교차 테스트된다. 예를 들어, 모양에 대해 수집된 것에 연결된 16 또는 32 개의 모양이 존재할 수 있다. 이러한 모양의 제 1 서브세트가 서로 다른 SIMD 유닛으로 로드될 수 있고, 수집된 광선은 각각의 SIMD 유닛을 통해 스트림화될 수 있다(즉, 동일한 광선이 동시에 각각의 SIMD를 통과한다). 결과 패킷은 각각의 SIMD 유닛에 의해 독립적으로 형성될 수 있으며, 다음 모양이 SIMD 유닛으로 로드된다. 광선은 이후에 SIMD 유닛을 통해 재 순환될 수 있다. 이러한 프로세스는 모든 관계된 모양이 수집된 광선에 대해 테스트될 때까지 계속된다.Other architectures using SIMD units may instead provide a fetch for a plurality of collected rays as a collection. As described above, these rays are next cross tested for the shape relative to the shape associated with the collection. For example, there may be 16 or 32 shapes linked to the collection for the shapes. This first subset of shapes can be loaded into different SIMD units, and the collected rays can be streamed through each SIMD unit (ie, the same rays pass through each SIMD at the same time). The resulting packet can be formed independently by each SIMD unit, and the next shape is loaded into the SIMD unit. The light beam can then be recirculated through the SIMD unit. This process continues until all relevant shapes have been tested for the collected rays.
도 18b는 이러한 예에 관한 연산 유닛(1818a)의 시간-기반 진행내용을 도시한다. 시간 1에서, 모양 1 및 광선 1이 테스트된다. 이러한 모양은 1 내지 q로 번호가 매겨지고, 컬렉션으로부터의 광선은 1 에서 n까지 번호가 매겨진다. 시간 n에서, 모양 1 과 광선 n이 테스트된다. 다음 사이클(시간 q - 1 * n+1)의 시작시점에서, 최종 모양이 연산 유닛(1818a)에서 테스트를 시작한다.18B shows the time-based progression of
도 19는 연산 자원 사이의 교차 테스트에 대해 패킷(1905)이 분산되는 방식 및 테스트 결과의 여러 측면을 도시하고, 테스트 결과는 식별된 모양(1905)과 연관된 패킷의 광선에 대한 메모리를 관리하는 연산 자원(1910) 내에 최종적으로 합쳐진다. 도 19는 프로세싱 중의 예시적인 시스템 상태를 도시한다. 구체적으로, 연산 자원(1910-1914)은 각각 연산 자원에 액세스 가능한 메모리에 저장된 광선에 대한 광선 ID 정보를 수신하고, 교차부에 대해 식별된 모양을 테스트하며, 결과(1915-1919)를 출력한다. 출력 결과는 식별된 충돌(1915, 1917, 1919)을 포함한다. 충돌(hit) 또는 비 충돌(miss) 어느 것이나 디폴트 동작이 될 수 있으므로, 예를 들어 비 충돌이 포지티브 값 또는 디폴트(고정) 값으로 표시되지 않거나, 패킷 내 디폴트 값이 비충돌로 설정될 수 있다. 테스트 후에, 연산 자원(1910)은 적어도 충돌 정보를 수집하고, 여기서 연산 자원(1910)은 테스트 시스템 내의 모든 패킷 정보 또는 특정한 모양에 대한 것을 포함하는 이들의 서브세트를 관리할 수 있다.FIG. 19 illustrates various aspects of test results and how the
메모리(1966)의 예시적인 구조화는, 복수의 광선 ID(광선 A, B 등)에 매핑된 모양 레퍼런스의 논리적 구조화를 나타낸다. 또한, Ref #1(테스트 중인 모양에 대한 레퍼런스)에 관계된 행(row)의 일부 슬롯이 빈 상태라는 것을 나타낸다. 따라서, 연산 자원(1910)이 충돌 결과를 수신한 때, 이는 먼저 지정된 Ref #1 컬렉션의 남은 빈 슬롯을 채우고, 이어서 1966에는, 광선 n이 메모리(1966) 내에 Ref #1에 대한 새로운 패킷을 시작하는 것이 도시된다. 이제, Ref #1에 대한 패킷이 포화 상태이기 때문에, 이러한 패킷은 테스트를 위해 대기상태인 것으로 결정될 수 있다. 일부 예에서, Ref #1에 의해 참조된 모양의 자 GAD 요소가 페치되고, 패킷이 각 패킷 내의 Ref #1과 관련된 모든 광선을 이용하여 형성된다. 예를 들어, Ref #1의 32개의 자(children) 패킷이 존재하며, 따라서 32개의 패킷이 도시된 패킷(1922-1924)를 이용하여 형성될 수 있다. 일부 실시예에서, 연산 자원(1910)은 자 모양(child shape)을 정의하는 데이터를 페치하고 패킷(1922-1924)에 데이터를 저장할 수 있다. 택일적으로, 다른 연산 자원들이 이러한 데이터를 페치할 수 있도록 하는 레퍼런스가 제공된다.Exemplary structuring of the
일부의 경우에, 연산 자원(1910)은 또한 생성된 패킷 내에 식별된 광선을 저장할 수 있으며, 따라서 패킷을 전송하기 전에 광선을 먼저 테스트할 수 있다. 이러한 경우에, 연산 자원(1910)은 전송된 패킷에 이미 페치된 모양 데이터를 저장할 수 있다. 도 12를 참조하여 설명된 것과 같이, 구혀예들은 이러한 패킷이 하나 이상의 다른 연산 자원으로 전송되도록 할 수 있다(예, 양방향 큐잉, 임의-대-임의 등). In some cases,
도 20은 설명된 여러 측면에 따른 방법이 구현되는 방식에 대한 일부 예를 설명하기 위한 것이다. 패킷이 모양 정보, 광선 ID 및 충돌 정보가 재 기록되는 위치를 포함하여 전송되며(2005), 충돌 정보는 제로화(zero'ed) 될 수 있고, 이 지점에서 "무시(don't care) 될 수 있다. 제 1 테스트는 광선 1 ID에 관해 수행되며(2006), 충돌을 발견한다. 따라서 하나의 1 이 패킷에 기록되고, 패킷이 제 2 테스트로 전달된다(2007). 여기서, 광선 3이 제 2 테스트에 대해 로컬화 된 것으로 밝혀지고, 비 충돌된 것으로 발견되었다. 따라서 하나의 0가 기록되고(또는 유지되고), 테스트(2006)로부터의 충돌 정보가 패킷 방향으로 이동된다(즉, 패킷 내 광선이 순차적으로 테스트 됨). 제 3 테스트(2008)가 광선 2에 대해 수행되고, 충돌로 발견된다. 이러한 예는 패킷 내 광선이 패킷에 존재하는 순서를 벗어나 테스트 될 수 있다는 것을 보여주고, 그리고 어느 테스터가 지정된 광선 ID에 관한 광선 데이터에 액세스하는데 가장 적합했느냐에 따라 테스트 순서가 결정된다는 것을 보여준다. 테스트는 모든 광선 ID가 테스트될 때까지 계속된다(2009). 이어서, 패킷이 합쳐지며, 이는 충돌 정보만이 유지될 필요가 있다는 것을 의미한다. 이러한 합체는 전송된 패킷을 발생한 연산 자원에서 일어날 수 있다. 새로운 충돌 결과가 이전에 존재한 패킷으로부터의 충돌 결과와 결합될 수 있다(도 19 참조). 이서, 패킷 내 광선의 컬렉션이 테스트 대기 상태인지 여부가 결정된다(2025)(에, 포화(fullness)에 근거). 그렇지 않으면, 다른 패킷이 처리될 수 있다(2040). 대기 상태이면, 이 패킷과 연관된 모양의 자 모양이 페치되고(2030), 여기서 모 노드(2041)는, 예를 들면 단계(2042)에서 식별된 노드의 모양 및 자 노드이다. 이어서, 새로운 패킷이 모와 연관된 패킷으로부터의 광선 식별기를 가지는 각각의 자 모양에 대해, 생성될 수 있다.20 is intended to illustrate some examples of how a method in accordance with the described aspects may be implemented. A packet is sent, including shape information, ray ID, and location where collision information is rewritten (2005), and collision information can be zero'ed and "don't care" at this point. The first test is performed on
도 21 및 22는, 구현하는 데 사용될 수 있는 시스템의 내용 면에서, 위에 설명된 방법적 측면들의 요약을 돕는다. 구체적으로, 도 21은 방법(2100)이 원형 및 GAD 요소를 메인 메모리에 정하는 단계(2105)와, 광선 정의 데이터(예, 원점 및 방향 정보)를 사용하여 교차 테스트를 위한 광선을 정의하는 단계(2110)를 포함하는 것을 나타낸다. 각각의 광선은 식별기를 이용하여 식별될 수 있다(2115). 광선 정의 데이터의 서브세트가 이러한 복수의 자원의 개별적인 프로세싱 자원과 연관된 로컬화된 메모리에 저장된다. 광선은 이러한 광선에 관한 식별기와 모양 데이터를 프로세싱 자원 사이에 분산시킴으로써(2125), 테스트를 위해 스케줄 된다. 광선은 로컬로 저장된 광선에 대한 정의 데이터를 가지는 프로세싱 자원에서 테스트된다(2130). 일부의 경우에, 각각의 광선은 하나의 로컬 메모리 내에 정의 데이터를 가질 수 있다. 21 and 22 help to summarize the method aspects described above in terms of the content of a system that can be used to implement. Specifically, FIG. 21 illustrates a
광선과 원형 사이의 교차부에 대한 식별결과가 연산 자원의 제 1 서브세트에서 제 2 서브세트로 전달된다(2135). 제 2 서브세트는 교차부를 세이딩(2140) 한다. 이러한 세이딩은 새로운 광선을 생성하고, 이에 대한 정의 데이터가 로컬화된 메모리 사이에 분산되며(2145), 바람직하게는 완료된 광선에 대한 정의 데이터를 교차한다. 이러한 광선은 이어서 위에 설명한 것과 같이 테스트된다. 연산 자원의 서브세트가 인스턴스화에 의해 또는 연산 자원 할당에 의해 구현될 수 있으며, 연산 자원은 멀티스레드 프로세서 또는 코어에서 동작하는 인스턴스화 스레드를 포함한다. 할당은 시간에 대해 변경될 수 있으며, 교차 테스트 및 세이딩을 위한 자원들 사이에 정적 할당(allocation)이 필요한 것은 아니다. 예를 들어, 교차 테스트의 스레드를 실행하는 코어가 일련의 교차 테스트를 완료할 수 있으며, 원형과의 광선 교차에 대한 많은 식별결과를 이용하여 메모리 공간을 채운다. 이어서 코어는 이러한 교차부를 세이딩하도록 스위치할 수 있다.The identification of the intersection between the ray and the circle is passed 2135 from the first subset of computational resources to the second subset. The second subset shades 2140 the intersections. This shading creates a new ray and the definition data for it is distributed between localized memories (2145), preferably crossing the definition data for the completed ray. This beam is then tested as described above. A subset of computational resources may be implemented by instantiation or by computational resource allocation, where the computational resources include instantiation threads running in a multithreaded processor or core. The allocation can change over time, and static allocation between resources for cross testing and shading is not required. For example, a core running a thread of cross-tests may complete a series of cross-tests and fill the memory space with many identifications for ray intersection with the prototype. The core may then switch to shade these intersections.
위의 일부 예는 교차에 대한 GAD 요소의 테스트의 관점에서 주로 설명되었다. 여기서 이러한 테스트의 결과는 점차 작아지는 원형의 그룹화에 대해 광선을 그룹화하는 것이다(특정한 GAD 요소를 이용한 광선 ID의 조합화를 통해). 최종적으로, 테스트에 의해 식별된 GAD 요소는, GAD 요소와 연관된 그룹의 일부가 됨에 따라, 식별된 광선에 대해 테스트될 원형을 규정할 것이라는 사실이 설명되었다. 원형을 가지는 패킷에 대하여, 교차 테스트의 결과는 광선/원형 교차부의 식별결과이며, 이는 (편의를 위해) 보통, 광선을 정의하는 다른 데이터를 이용하여, 지정된 광선에 관해 검출된 가장 인접한 교차부를 추적함으로써, 얻어진다.Some of the examples above have been described primarily in terms of testing GAD elements for intersections. The result of this test is to group the rays for a progressively smaller circular grouping (via a combination of ray IDs using specific GAD elements). Finally, it has been described that the GAD element identified by the test will define a prototype to be tested for the identified rays as it becomes part of the group associated with the GAD element. For packets with a circle, the result of the crossover test is the identification of the ray / circle intersection, which (for convenience) usually tracks the nearest intersection detected for a given ray, using other data defining the ray. It is obtained by doing this.
이어서, 지정된 광선이 장면 전체에 대해 테스트된 후에, 가장 인접한 검출된 교차부가, 존재하는 경우에, 각각의 광선에 관하여, 광선 ID를 애플리케이션 또는 드라이버로 또는 세이딩 프로세스를 시작하기 위해 이러한 결과를 사용하는 다른 프로세스로, 리턴한다. 이 명세서의 다양한 실시예에서와 같이, 광선 식별기는 큐잉 전략을 통해 리턴될 수 있다(즉, 어느 연산 자원이 특정한 교차에 대한 세이딩 코드를 실행할 것인지를 특정하거나 사전 지정된 세이딩 자원에 의해 테스트된 검출된 교차부를 가지는 특정한 교차 테스트 자원을 특정할 필요가 없다). 일부 교차 테스트에서, 무게중심좌표가 교차 테스트에 관하여 계산되고, 이러한 좌표는 필요한 경우에, 세이딩에 이용될 수 있다. 이는 교차 테스터로부터 세이더로 전송될 수 있는 다른 데이터의 예이다.Subsequently, after the specified ray has been tested for the entire scene, the nearest detected intersection, if any, is used for each ray, using these results to start the shading process or the ray ID to the application or driver. Return to the other process. As in various embodiments of this specification, ray identifiers may be returned via a queuing strategy (i.e. specifying which computational resources to execute the shading code for a particular intersection or tested by a predetermined shading resource. There is no need to specify a particular cross test resource with detected cross sections). In some crossover tests, the center of gravity coordinates are calculated with respect to the crossover test, and these coordinates can be used for shading if necessary. This is an example of other data that may be sent from the cross tester to the shader.
일반적으로, 이 명세서에 설명된 기능 유닛, 특성 및 그 외의 로직 중 어느 하나가 다양한 연산 자원을 구현하는 데 사용될 수 있다. 연산 자원은 스레드, 코어, 프로세서, 고정 기능 프로세싱 소자 등일 수 있다. 또한, 다른 기능 유닛(가령, 컬렉션 또는 패킷 관리 유닛)이 복수의 연산 자원사이에 분산되거나 하나의 연산 자원에 로컬화될 수 있는 프로세스, 스레드 또는 작업으로 제공되거나 구현될 수 있다(예, 복수의 물리적 연산 자원 사이에 분포된 복수의 스레드). 작업은 주로 연산 자원에 의해 관리된 컬렉션을 가지는 모양에 대한 교차 테스트 결과를 포함하는 인 플라이트 상태의 패킷을 식별하는 단계를 포함한다.In general, any of the functional units, features, and other logic described herein may be used to implement various computing resources. The computational resource may be a thread, core, processor, fixed function processing element, or the like. In addition, other functional units (eg, collections or packet management units) may be provided or implemented as a process, thread or task that may be distributed among a plurality of computing resources or localized to one computing resource (e.g., a plurality of Multiple threads distributed among physical compute resources). The task primarily involves identifying packets in an in-flight state that contain cross-test results for shapes having collections managed by the compute resource.
마찬가지로, 교차 테스트를 위해 사용된 연산 자원은 검출된 교차부를 세이딩하는데 사용된 세이딩 프로세스와 같은, 다른 프로세스를 주관할 수 있다. 예를 들어, 교차 테스트를 실행하는 프로세서는 세이딩 스레드를 실행할 수 있다. 예를 들어, 링버스 구현예에서, 하나의 프로세싱 자원에 대한 큐가 교차 테스트를 위한 임의의 패킷을 현재 가지지 않는 경우에, 데이터 프로세싱 자원은 이전에 식별된 교차부를 세이딩하기 위한 스레드를 대신에 시작할 수 있다. 지정된 프로세서에서 교차 테스트 스레드를 가지는 것과 이 스레드에 의해 검출된 광선 교차부에 관해 세이딩 스레드를 동작시키는 것 사이의 근본적인 차이는, 필요조건이나 일반적인 관계가 존재하지 않는다는 것이다. 대신에, 큐잉된 광선/원형 교차부가 세이딩 스레드에 광선 입력을 제공하고, 따라서 교차 테스트 자원과 세이딩 자원 사이의 매핑이 임의 대 임의 방식일 수 있으며, 이에 따라 서로 다른 하드웨어 유닛 또는 소프트웨어 유닛이 동일한 고아선에 대한 교차 테스트 및 세이딩을 수행할 수 있다.Similarly, the computational resources used for cross testing may host other processes, such as the shading process used to shade the detected intersections. For example, a processor executing a cross test can execute a shading thread. For example, in a Ringbus implementation, if the queue for one processing resource does not currently have any packets for cross testing, then the data processing resource replaces the thread for shading the previously identified intersection. You can start The fundamental difference between having a cross test thread on a given processor and operating the shading thread with respect to the ray intersection detected by this thread is that no requirement or general relationship exists. Instead, the queued ray / circular intersection provides ray input to the shading thread, so that the mapping between the cross test resource and the shading resource can be arbitrary versus arbitrary, so that different hardware units or software units Cross testing and shading can be performed on the same orphanage.
마찬가지로, 다양한 큐 및 서로 다른 기능 유닛 사이의 통신을 중재하는 여러 인터페이스(예, 교차 테스트 자원들 사이 및 교차 테스트 및 세이딩 사이)가 이들을 구현하는데 적합한 물리적 자원과 관련된 고려사상에 따라 선택될 수 있는 다양한 버퍼링 전략 중 하나에 따라 하나 이상의 메모리에 구현될 수 있다. 큐들은 발신지 자원 또는 종착지 자원에 의해 제어될 수 있다. 다르게 설명하면, 종착지가 공유 버스상의 데이터를 기대하고 필요한 데이터를 취득할 수 있으며, 또는 데이터가 메모리 매핑, 직접 통신 등에 의해 종착지로 어드레스될 수 있다.Similarly, various interfaces that mediate communication between various queues and different functional units (eg, between cross test resources and between cross test and shading) may be selected according to considerations related to the physical resources suitable for implementing them. It can be implemented in one or more memories according to one of various buffering strategies. Queues may be controlled by source resource or destination resource. In other words, the destination may expect data on the shared bus and obtain the required data, or the data may be addressed to the destination by memory mapping, direct communication, or the like.
추가 예에 의하면, 코어가 멀티스레딩을 지원하는 경우에, 스레드는 다른 스레드가 교차 프로세싱에 특화될 수 있는 동안, 세이딩에 특정될 수 있다. 그러나 광선 데이터(이는 교차 테스트 자원에 대한 캐시 할당 우선순위를 유지함)를 보관하는 대신에, 텍스처나 다른 세이딩 정보를 페치한 결과 발생하는 캐시의 비-일관성(혼동)을 피하도록 주의해야 한다. As a further example, where the core supports multithreading, a thread may be specific to shading while other threads may be specialized for cross processing. However, instead of keeping ray data (which maintains cache allocation priority for cross-test resources), care must be taken to avoid inconsistencies (confusing) of the cache resulting from fetching textures or other shading information.
이러한 아키텍처는 모양 데이터에 대한 캐시 조건을 줄이는 장점을 가지기 때문에, 데이터 종류에 관한 캐시 일관성(coherency)에 대한 고려사항이 감소된다. 사실상, 일부 구현예에서는, 특정한 모양 데이터를 계속 이용할 수 있도록 하는데, 그리고 모양 데이터가 다시 사용될 시점을 예측하는 것이 어렵지 않다. 대신에, 광선 ID의 지정된 패킷이 테스트를 위해 대기상태인 때, 이러한 패킷에 관한 모양 데이터가 최고속 메모리로부터 획득되고, 이를 저장하며, 다른 패킷을 처리하기 위한 현재 작업로드가 이와같은 패치 동작에서 발생된 레이턴시를 방어할 것이다. 교차를 위해 이러한 모양을 테스트한 후에, 모양 데이터가 겹쳐쓰기 되도록 허용될 수 있다. Since this architecture has the advantage of reducing cache conditions for shape data, considerations about cache coherency with respect to data types are reduced. In fact, in some implementations, it is possible to continue to use certain shape data, and it is not difficult to predict when the shape data will be used again. Instead, when a specified packet of rays IDs is waiting for testing, shape data about these packets is obtained from and stored in the fastest memory, and the current workload for processing other packets is in this patch operation. It will defend against latency incurred. After testing this shape for intersection, the shape data may be allowed to be overwritten.
여기에서 식별된 큐들 중 임의의 하나가, 링크된 리스트, 순환 버퍼, 메모리 직렬형 또는 스트링 메모리 위치와 같이, 또는 큐에 관하여 종래기술로 알려진 임의의 기능 유닛의 형태로 SRAM 내의 공유 메모리 자원에서 구현될 수 있다. 큐는 패킷의 순위를 유지하도록 동작하여, 먼저 동작한 패킷이 먼저 출력된다. 그러나 이것이 필수적인 사항은 아니다. 일부 예에서, 각각의 연산 자원에는, 순서와 다르게 패킷을 처리하는 것이 이익인지 여부를 결정하기 위해, 큐 내의 지정된 수의 패킷을 검사할 능력이 제공된다. 이러한 구현예는 순차적 동작 시스템보다 더 복잡하며 필요에 따라 제공될 수 있다. Any one of the queues identified herein is implemented in a shared memory resource in the SRAM, such as a linked list, circular buffer, memory serial or string memory location, or in the form of any functional unit known in the art with respect to the queue. Can be. The queue operates to maintain the priority of the packets, so that the first packet is output first. But this is not essential. In some examples, each computing resource is provided with the ability to examine a specified number of packets in a queue to determine whether it is beneficial to process the packets out of order. Such an implementation is more complex than a sequential operating system and can be provided as needed.
컴퓨터-실행형 명령은 예를 들어, 범용 컴퓨터, 특수 목적 컴퓨터, 또는 특수 목적 프로세싱 장치가 특정한 기능 또는 기능 그룹을 수행하도록 하는 명령 및 데이터를 포함한다. 컴퓨터 실행형 명령은 예를 들면, 어셈블리 언어 또는 소스 코드와 같은 바이너리, 중간 형식 명령일 수 있다. 일부 주된 목적이 구성적 특징 및.또는 방법적 단계의 실시예를 특정하는 언어로 설명되었으나, 첨부도니 청구항에 정의된 주된 목적이 설명된 특징 또는 동작에만 제한될 필요는 없다. 오히려, 설명된 특징 및 단계는, 첨부된 청구항의 범위 내에서 시스템 및 방법의 컴포넌트의 예로 개시된다.Computer-executable instructions include, for example, instructions and data that cause a general purpose computer, special purpose computer, or special purpose processing device to perform a particular function or group of functions. The computer executable instructions may be, for example, binary, intermediate format instructions such as assembly language or source code. Although some main objects have been described in language that specifies embodiments of constructive features and / or method steps, the main objects defined in the appended claims are not necessarily limited to the described features or operations. Rather, the described features and steps are disclosed as examples of components of systems and methods within the scope of the appended claims.
위에서, 연산 하드웨어 및/또는 소프트웨어 프로그램에 대한 다양한 예가 설명되었으며, 마찬가지로, 이러한 하드웨어/소프트웨어가 서로 통신하는 방법이 예시되었다. 소프트웨어와 이러한 통신 인터페이스로 구성된 하드웨어의 실시예는 이들 각각에 속한 기능을 달성하기 위한 수단을 제공한다. 예를 들어, 이 명세서의 일부 실시예에 따른 교차 테스트를 위한 수단은 다음 중 임의의 하나를 포함할 수 있다: (1) 복수의 독립적으로 동작하는 연산 자원(각각은 광선 정의 데이터의 로컬화된 저장영역을 가지며, 이러한 광선 및 모양 데이터에 관한 식별기의 제공에 응답하여 모양과 광선의 교차를 테스트하도록 동작).Above, various examples of computing hardware and / or software programs have been described, and likewise, how such hardware / software communicate with each other has been illustrated. Embodiments of software and hardware consisting of such communication interfaces provide a means for achieving the functions belonging to each of them. For example, the means for cross testing according to some embodiments of this specification may include any one of the following: (1) a plurality of independently operating computational resources, each of which is localized in ray definition data; Having a storage area and operative to test the intersection of a shape and a light beam in response to providing an identifier for such light and shape data.
예를 들면, 광선의 컬렉션을 관리하는 수단은, 광선 식별기의 그룹을 추적하고, 광선 식별기의 그룹과 연관된 모양에 의해 결정된 모양 또는 모양 데이터 및 광선 식별기를 가지는 패킷을 형성하기 위한 정보를 제공하는, 프로그래밍, FPGA나 ASIC, 이들의 일부로 구성된 연산 자원을 포함한다. For example, the means for managing the collection of rays tracks a group of ray identifiers and provides information for forming a packet having shape or shape data determined by the shape associated with the group of ray identifiers and the ray identifier, Contains computational resources consisting of programming, FPGAs or ASICs, and parts of them.
예를 들어, 위에 설명된 기능 유닛이 교차 테스트를 완료하고 원형과 교차된 광선에 대한 식별기를, 큐를 통해, 이러한 교차부를 세이딩 하도록 구성된 연산 자원에 프로세싱을 위해 전송하는 것을 포함한다. 일한 기능을 구현하는 수단은, 하드웨어 큐, 또는 큐나 리스트로 구조화된 공유 메모리 공간(가령 링 버퍼 또는 링크된 리스트로 구성된 메모리) 등을 포함할 수 있다. 따라서, 이러한 수단은 광선 식별기와 원형 식별기가 큐의 다음 또는 특정한 슬롯이나 메모리 내 위치로부터 획득되게 하는 프로그램 및/또는 로직을 포함할 수 있다. 컨트롤러는, 광선 및 원형 식별기를 출력 또는 입력하기 위한 다음 판독 위치 및 다음 기록 위치를 유지하도록, 큐 또는 메모리를 관리할 수 있다. 이러한 큐잉 수단은 또한, 이러한 자원이 광선 식별기 모양 데이터의 패킷을 서로에게 전달할 때, 교차 테스트 자원들이 함께 인터페이스하는데 사용될 수 있다. 이러한 큐잉 수단은 또한 교차 테스트의 시작을 기다리는 새로운 광선에 대한 광선 식별기를 수신하는 데 이용될 수 있다. 따라서, 더 상세한 큐잉 기능이 이러한 수단 또는 등가물에 의해 구현될 수 있다.For example, the functional unit described above includes completing the crossover test and sending an identifier for the ray intersected with the circle for processing to a computational resource configured to shade this crossover, via a queue. Means for implementing the functions may include hardware queues, or shared memory space structured as queues or lists (e.g., memory consisting of ring buffers or linked lists), and the like. Thus, such means may include programs and / or logic to cause the ray identifier and the circular identifier to be obtained from the next or specific slot or memory location in the queue. The controller may manage the queue or memory to maintain the next read position and the next write position for outputting or inputting the light and circular identifiers. This queuing means can also be used to interface cross test resources together when such resources deliver packets of ray identifier shape data to each other. This queuing means may also be used to receive a ray identifier for a new ray waiting for the start of the crossover test. Thus, more detailed queuing functionality can be implemented by such means or equivalent.
예를 들면, 위에 설명된 기능은 광선과 원형 사이의 식별된 교차부를 세이딩하는 것을 포함한다. 이러한 기능은 교차된 원형과 연관된 프로그래밍을 사용하여 구성된 연산 하드웨어를 포함하는 수단에 의해 구현될 수 있다. 프로그래밍은 연산 하드웨어가 이러한 텍스처, 절차상 기하학적 변경 등과 같은 데이터를 획득하여, 빛이 충돌된 원형에 미치는 영향을 결정하는데 어떠한 정보가 필요한지를 결정하도록 한다. 프로그래밍은 추가 교차부가 테스트되도록 새로운 광선을 발생하도록 할 수 있다(예, 세도우, 회절, 반산 광선). 프로그래밍은 이러한 광선을 발생시키기 위해 애플리케이션 프로그램 인터페이스와 인터페이스할 수 있다. 세이딩 프로그램에 의해 정의된 광선은 원점 및 방향 정의 정보를 포함하며, 컨트롤러가 이와 같이 정의된 광선에 대한 광선 식별기를 결정할 수 있다. 고정형 기능 하드웨어가 이러한 기능성의 일부를 구현하는데 사용될 수 있다. 그러나, 프로그램 가능한 세이딩이 원형 및/또는 그 외의 코드와 연관된 코드에 따라 구성될 수 있는 연산 자원을 필요에 따라 이용할 수 있도록 하는 것이 바람직하다.For example, the functionality described above includes shading the identified intersection between the ray and the circle. Such functionality may be implemented by means including computational hardware configured using programming associated with crossed primitives. Programming allows the computing hardware to acquire data such as textures, procedural geometric changes, etc., to determine what information is needed to determine the effect of light on the impacted prototype. Programming can cause additional intersections to be generated to generate new rays (eg shadows, diffractions, half-beams). Programming may interface with an application program interface to generate these rays. The rays defined by the shading program include origin and direction definition information, and the controller can determine the ray identifier for the rays thus defined. Fixed functional hardware can be used to implement some of this functionality. However, it is desirable to allow programmable shading to make use of computational resources that may be constructed in accordance with code associated with prototype and / or other code as needed.
예를 들어, 위에 설명된 다른 기능은 교차 테스트 중인 및/또는 교차 테스트를 기다리는 광선의 마스터 리스트를 보관하고, 마스터 광선의 서브세트를 교차 테스트를 위한 수단과 연관된 분산된 캐시 메모리들 사이에 분산시킨다. 이러한 기능은 이러한 기능을 구현하는 프로그래밍의 제어 하에 데이터를 저장하는 메모리와 인터페이스 하도록 통합되거나 분리된 메모리 제어 장치를 이용하는 프로세서 또는 프로세서 그룹을 포함하는 수단에 의해 구현될 수 있다. 이러한 프로그래밍은 교차 테스트 기능성과 연관되거나 이를 제어하는 드라이버에 부분적으로 포함될 수 있다.For example, another function described above maintains a master list of rays under cross testing and / or awaiting cross testing, and distributes a subset of the master rays between distributed cache memories associated with the means for cross testing. . Such functionality may be implemented by means including processors or groups of processors that utilize integrated or separate memory control devices to interface with memory for storing data under the control of programming that implements such functionality. Such programming can be partly included in drivers that are associated with or control cross test functionality.
설명 및/또는 청구된 기능 및 방법의 여러 측면들이 특정 목적 또는 범용 컴퓨터(컴퓨터 하드웨어 포함)에, 이에 상세히 설명될 바와 같이, 구현될 수 있다. 이러한 하드웨어, 펌웨어 및 소프트웨어는 또한 비디오 카드나, 외부 또는 내부 컴퓨터 시스템 주변회로에 실현될 수 있다. 다양한 기능성이 커스텀화 된 FPGA 또는 ASIC 또는 그 외의 구성형 프로세서에 제공될 수 있다. 반면, 일부 기능성은 관리 또는 호스트 프로세서에 제공된다. 이러한 프로세싱 기능성은 퍼스널 컴퓨터, 데스크 탑 컴퓨터, 랩탑 컴퓨터, 메시지 프로세서, 핸드-헬드 장치, 다중 프로세서 시스템, 마이크로프로세서 기반 또는 프로그램 가능형 소비자 전자장치, 게임 콘솔, 네트워크 PC, 미니컴퓨터, 메인프레임 컴퓨터, 모바일 전화, PDA, 호출기 등에 사용될 수 있다.Various aspects of the described and / or claimed functions and methods may be implemented on a specific purpose or general purpose computer (including computer hardware), as will be described in detail herein. Such hardware, firmware, and software can also be implemented on video cards or external or internal computer system peripherals. Various functionality can be provided in a customized FPGA or ASIC or other configurable processor. On the other hand, some functionality is provided to the management or host processor. This processing functionality includes personal computers, desktop computers, laptop computers, message processors, hand-held devices, multiprocessor systems, microprocessor-based or programmable consumer electronics, game consoles, network PCs, minicomputers, mainframe computers, It can be used for mobile phones, PDAs, pagers, and the like.
나아가, 도 1의 링크(112, 121, 및 118) 및 그 외의 도면의 유사 링크과 같이, 도면에 도시된 통신 링크와 그 외의 데이터 플로우 구성은 식별된 기능의 구현예에 따라 여러 가지 방식으로 구현될 수 있다. 예를 들어, 교차 테스트 유닛(109)이 하나 이상의 CPU에서 실행되는 복수의 스레드를 포함하는 경우에, 링크(118)는 이러한 CPU의 물리적 메모리 액세스 자원과, 적합한 메모리 컨틀롤러 하드웨어/펌웨어/소프트웨어를 포함하여, 광선 데이터 저장장치(105)로의 액세스를 제공할 수 있다. 추가 예에 의하면, 교차 테스트 영역(140)이 PCI 익스프레스 버스에 의해 호스트(140)에 연결된 그래픽 카드에 위치하며, 링크(121, 112)가 PCI 익스프레스 버스를 사용하여 구현될 수 있다.Further, as with
이 명세서에 설명된 것과 같은 교차 테스트는 일반적으로 대형 시스템 및 시스템 컴포넌트에서 일어난다. 예를 들어, 프로세싱이 네트워크(가령, 로컬 또는 광역 네트워크)에 걸쳐 분포될 수 있으며, 피어 투 피어 기술 등을 사용하여 구현될 수 있다. 작업(task)의 분리는 원하는 제품의 성능 또는 시스템, 원하는 가격 포인트, 또는 이들의 조합에 근거하여 결정될 수 있다. 소프트웨어로 설명된 임의의 유닛의 일부 또는 전부를 구현하는 구현예에서, 단위 기능성을 나타내는 컴퓨터-실행형 명령이 컴퓨터-판독형 매체(예를 들면 자기 또는 광학 디스크, 플래시 메모리, USB 장치)에 저장되거나, NAS 또는 SAN 장치 등과 같은 저장 장치의 네트워크에 저장될 수 있다. 그 외의 적절한 정보(예를 들면 프로세싱을 위한 데이터)가 이러한 매체에 저장될 수 있다.Cross testing, as described in this specification, generally occurs in large systems and system components. For example, processing may be distributed across a network (eg, a local or wide area network), and may be implemented using peer to peer technology, and the like. Separation of tasks may be determined based on the performance or system of the desired product, the desired price point, or a combination thereof. In an embodiment that implements some or all of any unit described in software, computer-executable instructions representing unit functionality are stored on a computer-readable medium (eg, magnetic or optical disk, flash memory, USB device). Or stored on a network of storage devices such as NAS or SAN devices. Other suitable information (eg, data for processing) may be stored on this medium.
또한, 이 명세서에 용어가 사용된 일부의 경우에, 본 발명이 속하는 분야의 기술자에게 특징적인 포인트를 전달하는 것으로 여겨지기 때문에, 이러한 용어가 개시된 실시예에 및 발명의 여러 측면을 포괄하는 구현예의 범위를 은연중에 제한하는 것으로 이해되어서는 안된다. 예를 들어, 광선은 종종 원점과 방향을 가지는 것으로 언급되며, 이러한 개별적인 아이템이 각각, 개시물의 여러 측면에 대한 이해를 위해, 삼차원 공간 내의 포인트 및 삼차원 공간의 방향 벡터를 나타내는 것으로 도시될 수 있다. 그러나, 본 발명의 범위 내에서, 광선을 표현하는 여러 다양한 방식이 제공될 수 있다. 예를 들어, 광선 방향은 구면 좌표로 표현될 수 있다. 또한, 원래 표현된 데이터의 정보에 대한 의미를 유지하면서, 하나의 형식으로 제공된 데이터 다른 형식으로 변형되거나 매핑될 수 있다.In addition, in some instances where terms are used herein, they are believed to convey characteristic points to those skilled in the art to which such terms relate to embodiments disclosed and that encompass aspects of the invention. It should not be understood as limiting scope. For example, light rays are often referred to as having origins and directions, and each such individual item may be shown to represent a point vector in three-dimensional space and a direction vector in three-dimensional space, respectively, for understanding of various aspects of the disclosure. However, within the scope of the present invention, various different ways of expressing light rays can be provided. For example, the ray direction may be expressed in spherical coordinates. In addition, data provided in one format may be transformed or mapped to another format while maintaining the meaning of the information of the originally expressed data.
상술한 본 발명의 실시예들은 단지 예시와 설명을 위한 것일 뿐이며, 본 발명을 설명된 형태로 한정하려는 것이 아니다. 따라서, 다양한 변화 및 변경을 할 수 있음은 본 발명이 속하는 분야의 당업자에게 자명하다. 또한, 이 명세서의 상세한 설명이 본 발명의 범위를 제한하는 것은 아니다. 본 발명의 범위는 첨부된 청구항에 의해서 정의된다.
The above-described embodiments of the present invention are for illustration and description only, and are not intended to limit the present invention to the described form. Accordingly, various changes and modifications can be made to those skilled in the art to which the present invention pertains. In addition, the detailed description of this specification does not limit the scope of the present invention. The scope of the invention is defined by the appended claims.
Claims (23)
광선 데이터의 마스터 사본의 서브세트를 저장하는 개별적인 캐시 메모리에 대한 액세스를 가지는 하나 이상의 교차 테스트 자원;
상기 개별적인 캐시 메모리에 광선에 대한 정의 데이터에 대한 액세스를 가지는 개별적인 테스트 자원에서, 각 광선에 대한 식별기를 할당하고, 각 광선의 테스트를 제어하기 위한 제어 로직으로서, 상기 제어는 광선 식별기를 복수의 개별적인 교차 테스트 자원으로 제공함으로써 이루어지는 것이 특징인, 제어 로직; 그리고
원형과 교차함으로써 교차 테스트를 완료한 광선을 식별하기 위한 데이터와 교차된 원형에 대한 데이터를 저장하는 출력 큐
를 포함하는 것을 특징으로 하는 광선 추적 제어 시스템.In a system for controlling ray tracing in rendering a two-dimensional representation of a three-dimensional scene consisting of primitives, the system is:
One or more cross test resources having access to a separate cache memory that stores a subset of the master copy of the ray data;
In a separate test resource having access to definition data for a ray in the respective cache memory, the control logic for assigning an identifier for each ray and controlling a test of each ray, wherein the control comprises a plurality of individual ray identifiers. Control logic, characterized in that by providing as a cross test resource; And
Output queue that stores data for the crossed circle and data for identifying the ray that completed the cross test by crossing the circle.
Ray tracing control system comprising a.
원형과 연관된 세이더(shader) 코드 루틴을 실행하기 위한 복수의 연산 자원을 더 포함하되,
상기 제어 로직은 상기 출력 큐로부터 획득된 데이터에 근거하여 실행될 세이더 코드 루틴을 식별하는 것을 특징으로 하는 광선 추적 제어 시스템.The method of claim 1,
Further comprising a plurality of computational resources for executing shader code routines associated with the prototype,
And the control logic identifies a shader code routine to be executed based on data obtained from the output queue.
상기 세이더 코드 루틴의 실행은 교차 테스트도리 새로운 광선을 생성하고,
상기 새로운 광선을 수신하는 복수의 교차 테스트 자원으로의 입력 큐를 더 포함하되,
상기 제어 로직은 상기 새로운 광선의 교차 테스트를, 다른 광선이 교차 테스트를 완료함에 따라 시작하는 것을 특징으로 하는 광선 추적 제어 시스템.The method of claim 2,
Execution of the shader code routine generates a new beam of cross tests,
Further comprising an input queue to a plurality of cross test resources for receiving the new ray,
And the control logic starts the cross test of the new light beam as another light beam completes the cross test.
각각의 교차 테스트 자원은, 개별적인 메모리 내에 저장된 광선 식별기의 수신에 응답하여, 광선 식별기가 제공한 데이터에 대하여, 일련의 기하학적 모양과 식별된 광선의 교차에 관해 테스트하도록 구성되는 것을 특징으로 하는 광선 추적 제어 시스템.The method according to any one of claims 1 to 3,
Each cross test resource is configured to, in response to receipt of a ray identifier stored in a separate memory, test against the intersection of the identified rays with a set of geometric shapes on the data provided by the ray identifier. Control system.
교차 테스트는, kD-트리의 절단 평면, 축방향으로 정렬된 바운딩 박스 및 구 중 하나 이상으로부터 선택된 가속 구조 요소를 포함하는 기하학적 모양과 광선 사이에서 이루어지는 것을 특징으로 하는 광선 추적 제어 시스템.The method according to any one of claims 1 to 4,
The crossover test is made between a ray and a geometric shape comprising an acceleration structural element selected from one or more of a cutting plane, an axially aligned bounding box and a sphere of the kD-tree.
각각의 교차 테스트 자원은 광선 식별기의 패킷을 수신하고, 개별적인 메모리가 식별된 광선에 대한 정의 데이터를 저장하는지 여부를 결정하며, 패킷 내 식별된 기하학적 모양과 식별된 광선을 테스트하도록 구성되는 것을 특징으로 하는 광선 추적 제어 시스템.6. The method according to any one of claims 1 to 5,
Each cross-test resource is configured to receive a packet of ray identifiers, determine whether individual memory stores definition data for the identified ray, and test the identified geometry and the identified ray in the packet. Ray tracing control system.
복수의 교차 테스트 자원은, 패킷 내 광선에 대한 데이터를 저장하는 모든 교차 테스트 자원이 패킷을 수신할 때까지, 상기 복수의 교차 테스트 자원 중 다음 자원으로 상기 패킷을 연속적으로 전달하도록 구성되는 것을 특징으로 하는 광선 추적 제어 시스템.The method according to claim 6,
The plurality of cross test resources is configured to continuously deliver the packet to a next one of the plurality of cross test resources until all cross test resources storing data for light in the packet have received the packet. Ray tracing control system.
각각의 교차 테스트 자원은, 상기 패킷에 가속 소자 테스트의 결과를 저장하고, 광선이 장면에서 교차 테스트를 완료할 때까지, 교차 테스트 자원의 개별적인 캐시 메모리에 각각의 광선에 대한 일차 테스트 결과를 저장하도록 구성되는 것을 특징으로 하는 광선 추적 제어 시스템.The method according to any one of claims 6 to 7,
Each cross test resource stores the results of an acceleration device test in the packet and stores the primary test results for each light in a separate cache memory of the cross test resources until the light beam completes the cross test in the scene. And a ray tracing control system.
상기 복수의 연산 자원의 로컬 메모리들 사이에, 장면에서 교차 테스트될 광선의 개별적인 서브세트를 정의하는 데이터를 분산시키는 단계;
광선의 그룹, 복수의 로컬 메모리에 집합적으로 저장된 상기 광선의 그룹의 멤버를 기하학적 모양과의 교차에 관해 테스트하도록 결정하는 단계;
상기 그룹의 각 광선에 대한 정의 데이터를 저장하는 로컬 메모리를 가지는 하나 이상의 연산 자원이 기하학적 모양 데이터와 광선 식별기를 수신하도록 기하학적 모양에 대한 데이터 및 광선 식별기를 하나 이상의 연산 자원으로 제공하는 단계; 그리고
상기 그룹의 광선 및 상기 기하학적 모양 사이의 검출된 교차부의 식별결과를 연산 자원으로부터 수신하는 단계를 포함하되,
상기 식별결과는 상기 광선에 대한 정의 데이터를 저장하는 로컬 메모리를 포함하는 하나 이상의 연산 자원에서 상기 그룹의 각 광선의 테스트한 결과인 것을 특징으로 하는 광선 추적 제어 방법.A method of controlling ray tracing of a scene consisting of a plurality of primitives in a system having a plurality of computational resources, each computational resource coupled to a separate local memory and a shared main memory, wherein the main memory has a greater latency than the local memory. Wherein the method is:
Distributing data defining local subsets of rays to be cross-tested in the scene between local memories of the plurality of computational resources;
Determining a group of rays, the members of the group of rays collectively stored in a plurality of local memories, to test for intersection with a geometric shape;
Providing data for the geometric shape and the ray identifier to the one or more computational resources such that the one or more computational resources having local memory storing definition data for each ray of the group receive the geometric shape data and the ray identifiers; And
Receiving from the computing resource an identification result of the detected intersection between the group of light rays and the geometric shape,
And the identification result is a test result of each ray of the group in one or more arithmetic resources including a local memory for storing definition data for the ray.
상기 메인 메모리로부터 상기 모양을 정의하는 데이터를 페치하는 단계를 더 포함하고, 상기 기하학적 모양에 대한 데이터를 제공하는 하는 것은 모양 정의 데이터를 상기 그룹의 광선 식별기를 가진 연산 자원으로 제공하도록 하는 것을 특징으로 하는 광선 추적 제어 방법.The method of claim 9,
Fetching data defining the shape from the main memory, wherein providing data for the geometric shape provides the shape definition data to an arithmetic resource having the group of ray identifiers. Ray tracing control method.
상기 식별결과는 기하학적 가속 요소와 광선 사이의 교차부에 대한 데이터를 포함하고, 광선의 그룹은 동일한 기하학적 가속 요소와 교차하도록 결정된 광선을 수집함으로써 형성되며,
상기 기하학적 가속 요소에 관계된 기하학적 가속 요소에 대한 추가 테스트를 테스트 필요한 만큼의 광선이 수집될 때까지, 연기하는 단계를 더 포함하는 것을 특징으로 하는 광선 추적 제어 방법. The method according to any one of claims 9 to 10,
The identification result includes data on the intersection between the geometric acceleration element and the ray, the group of rays being formed by collecting the rays determined to intersect the same geometric acceleration element,
And deferring further testing of the geometric acceleration elements associated with the geometric acceleration elements until the required number of rays have been collected.
상기 로컬 메모리는 캐시 멤버를 포함하고, 광선이 교차 테스트를 완료할 때까지, 지정된 광선이 캐시에 겹쳐 쓰기 되는 것을 방지하는 단계를 더 포함하는 것을 특징으로 하는 광선 추적 제어 방법.The method according to any one of claims 9 to 11,
And the local memory further comprises a cache member, and further comprising preventing a specified ray from being overwritten in the cache until the ray has completed the crossover test.
로컬 메모리에 저장된 광선 정의 데이터를 가지는 광선에 대해 검출된 현재 가장 인접한 교차부를 개별적인 로컬 메모리에 유지시키는 단계, 그리고 원형과 지정된 광선 사이의 가장 인접한 교차부의 식별결과에 응답하여 수신하기 위한 각각의 식별결과를 생성하는 단계
를 포함하는 것을 특징으로 하는 광선 추적 제어 방법.The method according to any one of claims 9 to 12,
Maintaining, in separate local memory, the current closest intersection detected for the ray having the ray definition data stored in the local memory, and each identification result for receiving in response to an identification result of the nearest intersection between the circular and the specified ray. Steps to generate
Ray tracing control method comprising a.
기하학적 모양에 대한 데이터는, 테스트 될 하나 이상의 모양을 식별하는 레퍼런스, 그리고 테스트 될 하나 이상의 모양을 정의하는 데이터의 세트로부터 선택되는 것을 특징으로 하는 광선 추적 제어 방법.14. The method according to any one of claims 9 to 13,
Data for the geometric shape is selected from a set of references identifying one or more shapes to be tested and a set of data defining one or more shapes to be tested.
상기 제공하는 단계는, 상기 연산 자원이 수신을 위해 연결된 제 1 큐로 광선 식별기를 큐잉하는 단계를 포함하고,
상기 수신하는 단계는 제 2 큐로부터 식별결과를 수신하는 단계를 포함하는 것을 특징으로 하는 광선 추적 제어 방법.15. The method according to any one of claims 9 to 14,
The providing step includes queuing a ray identifier with a first queue to which the computational resource is connected for reception;
And the receiving step comprises receiving an identification result from a second queue.
상기 메인 메모리 내의 광선의 마스터 사본을 보관하는 단계를 더 포함하는 것을 특징으로 하는 광선 추적 제어 방법.The method according to any one of claims 9 to 15,
And keeping a master copy of the rays in said main memory.
삼차원 장면을 구성하는 복수의 원형을 저장하는 메모리;
상기 복수의 원형 중 하나 이상과 상기 장면을 가로지르는 하나 이상의 광선을 각각 테스트하며, 검출된 교차부의 식별결과를 각각 출력하는 복수의 교차 테스트 자원;
검출된 광선/원형 교차부에 대한 세이딩 루틴을 구동하는, 복수의 세이더 자원;
상기 세이더 자원으로 검출된 교차부의 표시결괄르 출력하는 제 1 통신 링크; 그리고
상기 세이딩 루틴의 구동 결과 생성된 새로운 광선을, 상기 교차 테스트 자원으로 송신하기 위한 제 2 통신 링크를 포함하되,
새로운 광선은 상기 교차 테스트 자원으로 보내지고, 광선 보내진 관련 순서와 다르게 교차 테스트를 완료하는 것을 특징으로 하는 렌더링 시스템.In a system for rendering a two-dimensional representation of a three-dimensional scene consisting of a plurality of circles using ray tracing,
A memory for storing a plurality of prototypes constituting a three-dimensional scene;
A plurality of cross test resources for respectively testing at least one of the plurality of circles and at least one ray crossing the scene, and outputting identification results of the detected intersections;
A plurality of shader resources for driving a shading routine for the detected ray / circle intersections;
A first communication link for outputting display indices of intersections detected as the shader resources; And
A second communication link for transmitting a new light beam generated as a result of driving said shading routine to said cross test resource,
A new ray is sent to the cross test resource and completes the cross test in a different order than the ray sent relative order.
복수의 교차 테스트 자원 사이에 메시지를 전달하기 위한 채널을 더 포함하되,
상기 교차 테스트 자원은 각각 복수의 광선 식별기를 포함함에 따라 수신된 메시지내의 데이터를 해석하고, 상기 메시지에서 식별된 선택 광선을 교차 테스트하도록 구성되는 것을 특징으로 하는 렌더링 시스템.The method of claim 18,
Further comprising a channel for passing messages between a plurality of cross-test resources,
And the cross test resource is configured to interpret data in a received message as each includes a plurality of ray identifiers, and cross test the selected ray identified in the message.
상기 교차 테스트 자원은 교차 테스트 자원 사이의 광선 식별기의 패킷을 전달하기 위한 링으로 구성되는 것을 특징으로 하는 렌더링 시스템.The method of claim 18,
And wherein the cross test resource consists of a ring for passing packets of a ray identifier between the cross test resources.
상기 교차 테스트 자원은 각각, 상기 교차 테스트 자원에 연관된 캐시가, 상기 교차 테스트 자원 사이에 전달된 메시지에서 식별된 광선 중 하나에 대한 정의 데이터를 저장하는지에 대한 결정결과에 따라 테스트를 위한 개별적인 광선을 선택하는 것을 특징으로 하는 렌더링 시스템.The method of claim 18,
Each of the cross test resources may be configured to generate individual beams for testing according to a determination of whether the cache associated with the cross test resource stores definition data for one of the beams identified in the message passed between the cross test resources. Selecting rendering system.
상기 복수의 교차 테스트 자원은 하나 이상의 연산 코어에서 실행되는 컴퓨터 실행형 명령의 스레드로 구현되고, 연산 코어는 각각 상기 장면을 가로지르는 광선의 서브세트에 로컬화된 캐시 메모리가 액세스하도록 하는 것을 특징으로 하는 렌더링 시스템.The method of claim 18,
Wherein the plurality of cross-test resources are implemented as threads of computer-executable instructions executing on one or more computing cores, the computing cores each allowing localized cache memory access to a subset of rays traversing the scene. Rendering system.
삼차원 장면을 구성하는 원형을 저장하는 메모리가 하나 이상의 연산 코어를 위한 메인 메모리로 구현되고, 상기 하나 이상의 연산 코어는 집합적으로 복수의 스레드를 동시에 실행하며, 상기 복수의 스레드는, 시간-변화에 따라, 교차 테스트 자원과 세이더 자원을 구현하는 사이에 할당되는 것을 특징으로 하는 렌더링 시스템.
The method of claim 18,
A memory for storing prototypes constituting a three-dimensional scene is implemented as a main memory for one or more computing cores, wherein the one or more computing cores collectively execute a plurality of threads simultaneously, and the plurality of threads are subject to time-varying changes. Accordingly, the rendering system is allocated between implementing the cross test resource and the shader resource.
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 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20100128337A true KR20100128337A (en) | 2010-12-07 |
KR101550477B1 KR101550477B1 (en) | 2015-09-04 |
Family
ID=40886951
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020107023579A KR101550477B1 (en) | 2008-03-21 | 2009-03-20 | Architectures for parallelized intersection testing and shading for ray-tracing rendering |
Country Status (4)
Country | Link |
---|---|
JP (2) | JP5485257B2 (en) |
KR (1) | KR101550477B1 (en) |
CN (2) | CN104112291B (en) |
WO (1) | WO2009117691A2 (en) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9367949B2 (en) | 2012-09-17 | 2016-06-14 | Samsung Electronics Co., Ltd. | Apparatus and method for scheduling of ray tracing |
KR20170025989A (en) * | 2015-08-31 | 2017-03-08 | 삼성전자주식회사 | System and Method of rendering |
US9870644B2 (en) | 2011-06-14 | 2018-01-16 | Samsung Electronics Co., Ltd. | Apparatus and method for image processing |
KR20200019536A (en) * | 2018-08-14 | 2020-02-24 | 국방과학연구소 | Asymptotic high frequency method and device using Grouping of Rays |
WO2024072703A1 (en) * | 2022-09-30 | 2024-04-04 | Advanced Micro Devices, Inc. | Spatial test of bounding volumes for rasterization |
Families Citing this family (41)
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 |
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) |
GB2546020B (en) * | 2012-11-02 | 2017-08-30 | Imagination Tech Ltd | Method of scheduling discrete productions of geometry |
GB2541505B (en) * | 2013-03-14 | 2017-08-02 | Imagination Tech Ltd | Determining closest intersections during ray-tracing |
US10970912B2 (en) | 2013-03-14 | 2021-04-06 | Imagination Technologies Limited | 3-D graphics rendering with implicit geometry |
GB2544931B (en) * | 2013-03-15 | 2017-10-18 | 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 |
CN104516831B (en) * | 2013-09-26 | 2019-02-22 | 想象技术有限公司 | Atomic memory updating unit and method |
US11257271B2 (en) | 2013-09-26 | 2022-02-22 | Imagination Technologies Limited | Atomic memory update unit and methods |
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 |
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 |
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 |
US11335061B2 (en) | 2020-07-30 | 2022-05-17 | Apple Inc. | Ray intersection data structure with many-to-many mapping between bounding regions and primitives |
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)
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 |
WO2007124363A2 (en) * | 2006-04-19 | 2007-11-01 | Mental Images Gmbh | 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 |
-
2009
- 2009-03-20 JP JP2011500994A patent/JP5485257B2/en active Active
- 2009-03-20 WO PCT/US2009/037860 patent/WO2009117691A2/en active Application Filing
- 2009-03-20 CN CN201410189255.7A patent/CN104112291B/en active Active
- 2009-03-20 CN CN200980118357.7A patent/CN102037497B/en active Active
- 2009-03-20 KR KR1020107023579A patent/KR101550477B1/en active IP Right Grant
-
2014
- 2014-02-19 JP JP2014029356A patent/JP5740704B2/en active Active
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9870644B2 (en) | 2011-06-14 | 2018-01-16 | Samsung Electronics Co., Ltd. | Apparatus and method for image processing |
US9367949B2 (en) | 2012-09-17 | 2016-06-14 | Samsung Electronics Co., Ltd. | Apparatus and method for scheduling of ray tracing |
KR20170025989A (en) * | 2015-08-31 | 2017-03-08 | 삼성전자주식회사 | System and Method of rendering |
KR20200019536A (en) * | 2018-08-14 | 2020-02-24 | 국방과학연구소 | Asymptotic high frequency method and device using Grouping of Rays |
WO2024072703A1 (en) * | 2022-09-30 | 2024-04-04 | Advanced Micro Devices, Inc. | Spatial test of bounding volumes for rasterization |
Also Published As
Publication number | Publication date |
---|---|
CN102037497B (en) | 2014-06-11 |
WO2009117691A3 (en) | 2009-11-12 |
KR101550477B1 (en) | 2015-09-04 |
JP5485257B2 (en) | 2014-05-07 |
JP5740704B2 (en) | 2015-06-24 |
JP2014089773A (en) | 2014-05-15 |
JP2011515766A (en) | 2011-05-19 |
WO2009117691A2 (en) | 2009-09-24 |
WO2009117691A4 (en) | 2009-12-30 |
CN104112291B (en) | 2017-03-29 |
CN104112291A (en) | 2014-10-22 |
CN102037497A (en) | 2011-04-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10789758B2 (en) | Ray tracing in computer graphics using intersection testing at selective resolution | |
KR101550477B1 (en) | Architectures for parallelized intersection testing and shading for ray-tracing rendering | |
US8854369B2 (en) | Systems and methods for concurrent ray tracing | |
EP2335223B1 (en) | Ray tracing system architectures and methods | |
US8237711B2 (en) | Tracing of shader-generated ray groups using coupled intersection testing | |
EP2296117B1 (en) | Ray-aggregation for ray-tracing during rendering of imagery | |
CN113822788A (en) | Early release of resources in ray tracing hardware | |
US20240062452A1 (en) | Ray Tracing System Architectures and Methods |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
N231 | Notification of change of applicant | ||
E701 | Decision to grant or registration of patent right |