IP Library › Granted Patent US 12,548,235
Granted Patent B2
US 12,548,235 · App. 18/457,660 · Granted Feb 10, 2026

Graphics processing

Inventor: Richard Edward Bruce (Great Shelford, GB)
Assignee: Arm Limited
G06T15/06G06T15/005G06T2210/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 12,548,235
App. No.
18/457,660
Granted
Feb 10, 2026
Kind
B2
Abstract

Disclose herein is a method of operating a graphics processor when performing ray tracing. During a traversal of the nodes of an acceleration data structure, when a parent node that encompasses multiple child node volumes is encountered, a group of rays is tested against the child node volumes to determine which child nodes may need to be visited next. Rather than simply visiting the nodes based on the order in which they are found to be interested, the node traversal order is instead determined based on the group of rays.

Claims (51)

1 . A method of operating a graphics processor when performing ray tracing, wherein the ray tracing uses a ray tracing acceleration data structure indicative of the distribution of geometry to be rendered to determine geometry that may be intersected by a ray being used for a ray tracing operation, the ray tracing acceleration data structure comprising a plurality of nodes, each node representing a respective volume,

at least one node of the ray tracing acceleration data structure comprising a parent node being associated with a respective set of plural child nodes, wherein the volume represented by the parent node encompasses the respective volumes for each of its plural child nodes;

the method comprising:

performing a traversal operation comprising traversing the ray tracing acceleration data structure for a group of plural rays together such that all of the rays in the group of rays visit the nodes of the ray tracing acceleration data structure in the same node order,

wherein when the traversal operation encounters a parent node, an intersection testing operation is performed for the group of rays in respect of the parent node comprising testing at least one ray in the group of rays for intersection with one or more of the respective volumes for the child nodes associated with the parent node to determine which of the child nodes represent volumes containing geometry that may be intersected by at least one ray in the group of rays,

the method further comprising:

when the testing that is performed for the group of rays in respect of a parent node determines that the respective volumes for multiple ones of the child nodes associated with the parent node are intersected:

determining, based on the group of rays, an order in which the child nodes whose volumes were found to be intersected by at least one ray in the group of rays during the testing of the parent node should be visited,

wherein determining the order in which the child nodes should be visited comprises at least selecting a first child node from the child nodes whose volumes were found to be intersected by at least one ray in the group of rays during the testing of the parent node that should be visited first; and

the traversal operation continuing by visiting the selected first child node,

wherein when the set of child nodes associated with the parent node being tested includes one or more end child nodes representing actual geometry that has been defined for the render output and one or more non-end child nodes that do not represent actual geometry that has been defined for the render output, and wherein the testing that is performed for the group of rays in respect of the parent node determines that the multiple ones of the child nodes whose respective volumes are intersected include one or more end child nodes and one or more non-end child nodes, the traversal operation continues by visiting the end child nodes first.

2 . The method of claim 1 , wherein the selected first child node is visited next, the traversal operation continuing by testing the group of rays against the selected first child node directly after the testing of the parent node.

3 . The method of claim 1 , wherein the step of determining, based on the group of rays, an order in which the child nodes whose volumes were found to be intersected by at least one ray in the group of rays during the testing of the parent node should be visited is performed using a hit count based on the number of rays determined to intersect each of the child node volumes.

4 . The method of claim 3 , wherein determining the order comprises determining the child node that is intersected by the greatest number of rays.

5 . The method of claim 1 , wherein the step of determining, based on the group of rays, an order in which the child nodes whose volumes were found to be intersected by at least one ray in the group of rays during the testing of the parent node should be visited is performed using a distance between an origin of the at least one ray for which the testing is being performed and one or more of the child node volumes.

6 . The method of claim 5 , wherein determining the order comprises determining the child node comprises determine which of the child node volumes is closest to the origin of a ray for which the testing is being performed.

7 . The method of claim 5 , wherein the distances between the origins of the rays and the one or more child node volumes are determined for each ray for which testing is being performed, and wherein the child node whose volume is globally closest to one of the rays for which the testing is being performed is selected as the first child node.

8 . The method of claim 5 , wherein each ray for which testing is being performed votes for the child node that is closest to the origin of the ray, and the child node with the most votes is selected as the first child node.

9 . The method of claim 8 , wherein each ray for which testing is being performed ranks the one or more child nodes based on the respective distances from the origin of the ray to the child node volume, and wherein child node rankings for multiple rays are used together to select the first child node.

10 . A graphics processor that is operable to perform a ray tracing process,

wherein the ray tracing process uses a ray tracing acceleration data structure indicative of the distribution of geometry to be rendered to determine geometry that may be intersected by a ray being used for a ray tracing operation, the ray tracing acceleration data structure comprising a plurality of nodes, each node representing a respective volume,

at least one node of the ray tracing acceleration data structure comprising a parent node being associated with a respective set of plural child nodes, wherein the volume represented by the parent node encompasses the respective volumes for each of its plural child nodes;

the graphics processor comprising:

a traversal circuit that is configured to perform, for a group of plural rays, a traversal operation comprising traversing the ray tracing acceleration data structure for the group of plural rays together such that all of the rays in the group of rays visit the nodes of the ray tracing acceleration data structure in the same node order,

wherein when the traversal operation encounters a parent node, an intersection testing operation is performed for the group of rays in respect of the parent node comprising testing at least one ray in the group of rays for intersection with one or more of the respective volumes for the child nodes associated with the parent node to determine which of the child nodes represent volumes containing geometry that may be intersected by at least one ray in the group of rays:

the graphics processor further comprising:

a traversal optimisation circuit that is configured to:

when a group of plural rays is performing a traversal of the ray tracing acceleration data structure: and

when the testing of rays in the group of plural rays that are performing the traversal together in respect of a parent node determines that the respective volumes for multiple ones of the child nodes associated with the parent node are intersected:

determine, based on the group of rays, an order in which the child nodes whose volumes were found to be intersected by at least one ray in the group of rays during the testing of the parent node should be visited,

wherein determining the order in which the child nodes should be visited comprises at least selecting a first child node from the child nodes whose volumes were found to be intersected by at least one ray in the group of rays during the testing of the parent node that should be visited first; and

cause the traversal operation to continue by visiting the selected first child node,

wherein when the set of child nodes associated with the parent node being tested includes one or more end child nodes representing actual geometry that has been defined for the render output and one or more child nodes that do not represent actual geometry that has been defined for the render output, and wherein the testing that is performed for the group of rays in respect of the parent node determines that the multiple ones of the child nodes whose respective volumes are intersected include one or more end child nodes and one or more non-end child nodes, the traversal optimisation circuit causes the traversal operation to continue by visiting the end child nodes first.

11 . The graphics processor of claim 10 , wherein the traversal operation is caused to continue by testing the group of rays against the selected first child node directly after the testing of the parent node.

12 . The graphics processor of claim 10 , wherein the step of determining, based on the group of rays, an order in which the child nodes whose volumes were found to be intersected by at least one ray in the group of rays during the testing of the parent node should be visited is performed using a hit count based on the number of rays determined to intersect each of the child node volumes.

13 . The graphics processor of claim 12 , wherein determining the order comprises determining the child node that is intersected by the greatest number of rays.

14 . The graphics processor of claim 10 , wherein the step of selecting, based on the group of rays, a first one of the child nodes whose volume was found to be intersected by at least one ray in the group of rays during the testing of the parent node that the traversal operation should visit first is performed using a distance between an origin of the at least one ray for which the testing is being performed and one or more of the child node volumes.

15 . The graphics processor of claim 14 , wherein determining the order comprises determining the child node comprises determine which of the child node volumes is closest to the origin of a ray for which the testing is being performed.

16 . The graphics processor of claim 14 , wherein the distances between the origins of the rays and the one or more child node volumes are determined for each ray for which testing is being performed, and wherein the child node whose volume is globally closest to one of the rays for which the testing is being performed is selected as the first child node.

17 . The graphics processor of claim 14 , wherein each ray for which testing is being performed votes for the child node that is closest to the origin of the ray, and the child node with the most votes is selected as the first child node, wherein each ray for which testing is being performed ranks the one or more child nodes based on the respective distances from the origin of the ray to the child node volume, and wherein child node rankings for multiple rays are used together to select the first child node.

18 . A non-transitory computer readable medium comprising a set of instructions that when executed by a data processor will cause the data processor to perform a method of operating a graphics processor when performing ray tracing, wherein the ray tracing uses a ray tracing acceleration data structure indicative of the distribution of geometry to be rendered to determine geometry that may be intersected by a ray being used for a ray tracing operation, the ray tracing acceleration data structure comprising a plurality of nodes, each node representing a respective volume,

at least one node of the ray tracing acceleration data structure comprising a parent node being associated with a respective set of plural child nodes, wherein the volume represented by the parent node encompasses the respective volumes for each of its plural child nodes;

the method comprising:

performing a traversal operation comprising traversing the ray tracing acceleration data structure for a group of plural rays together such that all of the rays in the group of rays visit the nodes of the ray tracing acceleration data structure in the same node order,

wherein when the traversal operation encounters a parent node, an intersection testing operation is performed for the group of rays in respect of the parent node comprising testing at least one ray in the group of rays for intersection with one or more of the respective volumes for the child nodes associated with the parent node to determine which of the child nodes represent volumes containing geometry that may be intersected by at least one ray in the group of rays,

the method further comprising:

when the testing that is performed for the group of rays in respect of a parent node determines that the respective volumes for multiple ones of the child nodes associated with the parent node are intersected:

determining, based on the group of rays, an order in which the child nodes whose volumes were found to be intersected by at least one ray in the group of rays during the testing of the parent node should be visited,

wherein determining the order in which the child nodes should be visited comprises at least selecting a first child node from the child nodes whose volumes were found to be intersected by at least one ray in the group of rays during the testing of the parent node that should be visited first; and the traversal operation continuing by visiting the selected first child node,

wherein when the set of child nodes associated with the parent node being tested includes one or

more end child nodes representing actual geometry that has been defined for the render output and one or more non-end child nodes that do not represent actual geometry that has been defined for the render output, and wherein the testing that is performed for the group of rays in respect of the parent node determines that the multiple ones of the child nodes whose respective volumes are intersected include one or more end child nodes and one or more non-end child nodes, the traversal operation continues by visiting the end child nodes first.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 29, 2023
From: BRUCE, RICHARD EDWARD
To: ARM LIMITED
Reel/Frame 064736/0798 →
Priority Claims (1)
GB 2213007 · Sep 6, 2022 · national
Continuity (1)
Related Publication 20240078741A1 · Mar 7, 2024
References Cited (32)
US 5197140A · Balmer · 1993 [cited by applicant]
US 5588152A · Dapp et al. · 1996 [cited by applicant]
US 7353369B1 · Coon et al. · 2008 [cited by applicant]
US 7999808B1 · Aila et al. · 2011 [cited by applicant]
US 8072454B1 · Aila et al. · 2011 [cited by applicant]
US 10964086B2 · Croxford et al. · 2021 [cited by applicant]
US 11315303B2 · Saeed et al. · 2022 [cited by applicant]
US 20040125103A1 · Kaufman · 2004 [cited by applicant]
US 20080079713A1 · Mejdrich · 2008 [cited by applicant]
US 20090262132A1 · Peterson · 2009 [cited by applicant]
US 20090295805A1 · Ha · 2009 [cited by examiner]
US 20110069067A1 · Ozdas et al. · 2011 [cited by applicant]
US 20120050289A1 · Park · 2012 [cited by examiner]
US 20140168228A1 · Luebke et al. · 2014 [cited by applicant]
US 20140168238A1 · Luebke et al. · 2014 [cited by applicant]
US 20150262408A1 · Lee et al. · 2015 [cited by applicant]
US 20160350960A1 · Yi et al. · 2016 [cited by applicant]
US 20190035138A1 · Fuetterling · 2019 [cited by examiner]
US 20190057539A1 · Stanard · 2019 [cited by examiner]
US 20220391216A1 · Bruce et al. · 2022 [cited by applicant]
US 20220392145A1 · Bruce · 2022 [cited by applicant]
US 20220392146A1 · Bruce et al. · 2022 [cited by applicant]
US 20220392147A1 · Bruce · 2022 [cited by applicant]
US 20230298127A1 · Barczak · 2023 [cited by examiner]
EP 3675046A1 · 2020 [cited by applicant]
JP 2001148028A · 2001 [cited by applicant]
WO 2014068400A2 · 2014 [cited by applicant]
WO 2016060874A1 · 2016 [cited by applicant]
Combined Search and Examination Report under Sections 17 and 18(3) dated Nov. 10, 2021, GB Patent Application No. GB2108050.2. [cited by applicant]
Search Report under Section 17 dated Dec. 7, 2021, GB Patent Application No. GB2108052.8. [cited by applicant]
Combined Search and Examination Report under Section 17 and 18(3) dated Dec. 9, 2021, GB Patent Application No. GB2108053.6. [cited by applicant]
Search Report under Section 17(6) dated Jun. 6, 2022, GB Patent Application No. GB2108053.6. [cited by applicant]