IP Library Granted Patent US 11,869,133
Granted Patent B2
US 11,869,133 · App. 17/490,784 · Granted Jan 9, 2024

Intersection testing for ray tracing

Inventor: Daniel Barnard (Hertfordshire, GB)
Assignee: Imagination Technologies Limited
G06T15/06G06T17/005G06T2210/21G06T2210/52
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 11,869,133
App. No.
17/490,784
Granted
Jan 9, 2024
Kind
B2
Abstract

A system and method for performing intersection testing of rays in a ray tracing system. The ray tracing system uses a hierarchical acceleration structure comprising a plurality of nodes, each identifying one or more elements able to be intersected by a ray. The system makes use of a serial-mode ray intersection process, in which, when a ray intersects a bounding volume, a limited number of new ray requests are generated.

Claims (56)

1. A computer-implemented method of performing intersection testing between one or more rays and elements identified by nodes of a hierarchical acceleration structure, wherein:

a ray is defined by ray information;

a node identifies one or more elements for intersection testing, wherein at least some of the elements identified by the overall hierarchical acceleration structure are represented by a further node of the hierarchical acceleration structure;

wherein the computer-implemented method comprises iteratively performing a serial-mode ray intersection process of:

obtaining one or more ray requests, each ray request identifying a ray and a node of the hierarchical structure identifying elements for which the ray of the ray request will undergo intersection testing;

processing the one or more ray requests and the hierarchical acceleration structure to identify, for each ray request, any actual intersections between the ray of the ray request and the elements identified by the node of the ray request; and

for each ray request:

determining if the ray actually intersects with more than a first predetermined number of elements represented by further nodes of the hierarchical acceleration structure; and

in response to the ray actually intersecting with more than the first predetermined number of elements represented by further nodes, generating up to the first predetermined number of new ray requests, each new ray request identifying the ray of the ray request and a further node that represents an element identified as intersecting the ray of the ray request.

2. The computer-implemented method of claim 1 , wherein the first predetermined number is 1, and the step of generating up to a first predetermined number of new ray requests comprises generating a single new ray request.

3. The computer-implemented method of claim 1 , wherein the step of generating up to a first predetermined number of new ray requests comprises:

generating a second predetermined number of new ray requests for the ray, each new ray request identifying the ray of the ray request and a respective further node of the hierarchical structure, wherein the further node represents an element identified as intersecting the ray of the ray request.

4. The computer-implemented method of claim 1 , further comprising, in response to the ray intersecting with more than the first predetermined number of elements represented by further nodes, generating and storing intersection information for the ray, the intersection information being usable to identify any further nodes for which no new ray request was generated and that represents an element identified as intersecting the ray of the ray request.

5. The computer-implemented method of claim 4 , wherein the intersection information identifies: the node represented by the ray request; and information identifying for which further nodes, associated with elements identified by the node, a new ray request has been generated.

6. The computer-implemented method of claim 4 , further comprising, for each ray request, in response to the number of intersections between the ray and elements represented by further nodes being zero:

determining whether the ray of the ray request is associated with any stored intersection information; and in response to determining that the ray is associated with stored intersection information: and

processing the stored intersection information to generate a third predetermined number of new ray requests, each identifying the ray and a node of the hierarchical structure for which a ray request has not yet been generated for that ray and which represents an element with which the ray intersected.

7. The computer-implemented method of claim 4 , wherein the intersection information comprises one or more sets of one or more data blocks, each set of data blocks representing a different ray, and wherein each data block identifies:

a node that identifies more than the first predetermined number of elements, each of which is represented by a further node, with which the respective ray is determined to intersect; and

information identifying for which elements, represented by further nodes, of the respective node a ray request for the respective ray has already been generated.

8. The computer-implemented method of claim 7 , wherein the step of processing the stored intersection information comprises:

identifying a most recently stored data block for the ray;

processing the most recently stored data block to generate the third predetermined number of new ray requests, each identifying the ray and a node of the hierarchical structure for which a ray request has not yet been generated for that ray and which represents an element with which the ray intersected; and

updating the stored intersection information.

9. The computer-implemented method of claim 4 , wherein the intersection information is stored in a memory pool shared by all rays.

10. The computer-implemented method of claim 4 , further comprising, for each ray request:

in response to the number of intersections between the ray and elements represented by further nodes being between one and the first predetermined number inclusively, generating a new ray request for each intersected element represented by a further node, each new ray request identifying the ray of the ray request and the respective further node that represents the intersected element.

11. The computer-implemented method of claim 1 , wherein the step of obtaining one or more ray requests comprises selecting and obtaining, if available, at least one of the new ray requests generated in a previous iteration of the serial-mode ray intersection process.

12. The computer-implemented method of claim 11 , wherein the selection of new ray requests is dependent upon the age of the new ray requests.

13. The computer-implemented method of claim 11 , further comprising in response to the ray intersecting with more than the first predetermined number of elements represented by further nodes, generating and storing intersection information for the ray, the intersection information being usable to identify any further nodes for which no new ray request was generated and that represents an element identified as intersecting the ray of the ray request,

wherein the selection of new ray requests is dependent upon the age of stored intersection information associated with rays identified by the new ray requests.

14. The computer-implemented method of claim 11 , further comprising, in response to the ray intersecting with more than the first predetermined number of elements represented by further nodes, generating and storing intersection information for the ray, the intersection information being usable to identify any further nodes for which no new ray request was generated and that represents an element identified as intersecting the ray of the ray request;

wherein the number of the new ray requests selected and obtained is dependent upon the total size of stored intersection information.

15. The computer-implemented method of claim 14 , wherein the number of the new ray requests selected and obtained reduces in response the total size of stored intersection information exceeding a first predetermined threshold size.

16. The computer-implemented method of claim 15 , wherein the number of ray requests selected and obtained further reduces in response the total size of stored intersection information exceeding a second predetermined threshold size, the second predetermined threshold size being larger than the first predetermined threshold size.

17. The computer-implemented method of claim 15 , wherein the selection of the at least one new ray requests, when the total size of the stored intersection information exceeds the first predetermined threshold size, is dependent upon the age of stored intersection information associated with rays identified by the ray requests.

18. The computer-implemented method of claim 17 , wherein the selection of the at least one new ray request, when the total size of the stored intersection information exceeds the first predetermined threshold size, comprises at least one ray request that each identify a ray associated with the oldest stored intersection information.

19. An intersection testing system for performing intersection testing between one or more rays and elements identified by nodes of a hierarchical acceleration structure, wherein:

a ray is defined by ray information;

a node identifies one or more elements for intersection testing, wherein at least some of the elements identified by the overall hierarchical acceleration structure are represented by a further node of the hierarchical acceleration structure;

wherein the intersection testing system comprises:

a ray request processor configured to iteratively obtain one or more ray requests, each ray request identifying a ray and a node of the hierarchical structure identifying elements for which the ray of the ray request will undergo intersection testing; and

an intersection test processor configured to, for each iteratively obtained ray request:

process the one or more ray requests and the hierarchical acceleration structure to identify, for each ray request, any actual intersections between the ray of the ray request and the elements identified by the node of the ray request; and

for each ray request:

determine if the ray of the ray request actually intersects with more than a first predetermined number of elements represented by further nodes of the hierarchical acceleration structure; and

in response to the ray actually intersecting with more than the first predetermined number of elements represented by further nodes, generate up to the first predetermined number of new ray requests, each new ray request identifying the ray of the ray request and a further node that represents an element identified as intersecting the ray of the ray request.

20. A non-transitory computer readable storage medium having stored thereon the computer readable code configured to cause to be performed, when the code is run, a method of performing intersection testing between one or more rays and elements identified by nodes of a hierarchical acceleration structure, wherein:

a ray is defined by ray information;

a node identifies one or more elements for intersection testing, wherein at least some of the elements identified by the overall hierarchical acceleration structure are represented by a further node of the hierarchical acceleration structure;

wherein the computer-implemented method comprises iteratively performing a serial-mode ray intersection process of:

obtaining one or more ray requests, each ray request identifying a ray and a node of the hierarchical structure identifying elements for which the ray of the ray request will undergo intersection testing;

processing the one or more ray requests and the hierarchical acceleration structure to identify, for each ray request, any actual intersections between the ray of the ray request and the elements identified by the node of the ray request; and

for each ray request:

determining if the ray actually intersects with more than a first predetermined number of elements represented by further nodes of the hierarchical acceleration structure; and

in response to the ray actually intersecting with more than the first predetermined number of elements represented by further nodes, generating up to the first predetermined number of new ray requests, each new ray request identifying the ray of the ray request and a further node that represents an element identified as intersecting the ray of the ray request.

Assignments (2)
SECURITY INTEREST Recorded Jul 31, 2024
From: IMAGINATION TECHNOLOGIES LIMITED
To: FORTRESS INVESTMENT GROUP (UK) LTD
Reel/Frame 068221/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 30, 2021
From: BARNARD, DANIEL
To: IMAGINATION TECHNOLOGIES LIMITED
Reel/Frame 057659/0770 →