IP Library Granted Patent US 12,469,204
Granted Patent B2
US 12,469,204 · App. 18/096,133 · Granted Nov 11, 2025

Building an acceleration structure for use in ray tracing

Inventors: Gregory Clark (Hertfordshire, GB); Bruno Char (Hertfordshire, GB)
Assignee: Imagination Technologies Limited
G06T15/06G06T17/10G06T2210/36
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,469,204
App. No.
18/096,133
Granted
Nov 11, 2025
Kind
B2
Abstract

A computer implemented method of building an acceleration structure for use in ray tracing includes (i) assigning, in a memory, a different one or more blocks of memory to each of a plurality of threads, each of the blocks of memory comprising one or more memory locations; (ii) for each element of a plurality of elements of a scene for which nodes of the acceleration structure are to be built, assigning that element of the scene to a block of memory so as to assign that element to a thread; and (iii) building one or more nodes of the acceleration structure by processing each of the plurality of threads in parallel.

Claims (41)

1 . A ray tracing system for building an acceleration structure for use in ray tracing, the ray tracing system comprising thread assigning logic, node building logic, and a memory;

the thread assigning logic being configured to:

assign, in the memory, a different one or more blocks of memory to each of a plurality of threads, each of the blocks of memory comprising one or more memory locations, and

for each element of a plurality of elements of a scene for which nodes of the acceleration structure are to be built, assign that element of the scene to a block of memory so as to assign that element to a thread; and

the node building logic being configured to:

build one or more nodes of the acceleration structure by processing each of the plurality of threads in parallel.

2 . A non-transitory computer readable storage medium having stored thereon computer readable instructions that, when executed at a computer system, cause the computer system to perform a method of building an acceleration structure for use in ray tracing, the method comprising:

(i) assigning, in a memory, a different one or more blocks of memory to each of a plurality of threads, each of the blocks of memory comprising one or more memory locations;

(ii) for each element of a plurality of elements of a scene for which nodes of the acceleration structure are to be built, assigning that element of the scene to a block of memory so as to assign that element to a thread; and

(iii) building one or more nodes of the acceleration structure by processing each of the plurality of threads in parallel.

3 . A computer implemented method of building an acceleration structure for use in ray tracing, the method comprising:

(i) assigning, in a memory, a different one or more blocks of memory to each of a plurality of threads, each of the blocks of memory comprising one or more memory locations;

(ii) for each element of a plurality of elements of a scene for which nodes of the acceleration structure are to be built, assigning that element of the scene to a block of memory so as to assign that element to a thread; and

(iii) building one or more nodes of the acceleration structure by processing each of the plurality of threads in parallel.

4 . The computer implemented method of claim 3 , wherein elements of the scene are distributed across a number of levels-of-detail, each level-of-detail dividing the scene into one or more voxels, wherein finer levels-of-detail represent the scene using a greater number of smaller voxels and coarser levels-of-detail represent the scene using a smaller number of larger voxels.

5 . The computer implemented method of claim 4 , wherein the scene is a three-dimensional scene, and a voxel is a volume containing a portion of the scene.

6 . The computer implemented method of claim 4 , wherein each voxel has a voxel address, each voxel address comprising a set of coordinates and data identifying the level-of-detail at which that voxel is present.

7 . The computer implemented method of claim 6 , wherein the set of coordinates are defined relative to a scene origin.

8 . The computer implemented method of claim 4 , the method further comprising, for each of a plurality of levels-of-detail in turn, starting at a finer level-of-detail, performing said steps (i), (ii) and (iii).

9 . The computer implemented method of claim 3 , the method further comprising using a hash function to assign that element of the scene to the block of memory.

10 . The computer implemented method of claim 9 , wherein elements of the scene are distributed across a number of levels-of-detail, each level-of-detail dividing the scene into one or more voxels, wherein finer levels-of-detail represent the scene using a greater number of smaller voxels and coarser levels-of-detail represent the scene using a smaller number of larger voxels, and wherein that element of the scene is associated with a voxel address at a current level-of-detail, and the hash function used to assign that element to the block of memory is dependent on a corresponding voxel address at a coarser level-of-detail.

11 . The computer implemented method of claim 10 , wherein the corresponding voxel address at the coarser level-of-detail is determined by:

dividing, by two, each coordinate of the voxel address associated with that element at the current level-of-detail; and

rounding each divided coordinate value down to the nearest integer coordinate value.

12 . The computer implemented method of claim 3 , wherein building one or more nodes of the acceleration structure comprises, for each thread of the plurality of threads:

for each element of the elements of the scene assigned to that thread, assigning that element to a memory location in a block of memory; and

evicting data representing the assigned element(s) from each memory location to which one or more elements of the scene have been assigned so as to form nodes of the acceleration structure grouping elements assigned to same memory location.

13 . The computer implemented method of claim 12 , further comprising defining a bounding box for each node of the acceleration structure encompassing each of the elements of the scene assigned to same memory location.

14 . The computer implemented method of claim 12 , the method further comprising assigning that element of the scene to the memory location in the block of memory in dependence on a hash function.

15 . The computer implemented method of claim 14 , wherein elements of the scene are distributed across a number of levels-of-detail, each level-of-detail dividing the scene into one or more voxels, wherein finer levels-of-detail represent the scene using a greater number of smaller voxels and coarser levels-of-detail represent the scene using a smaller number of larger voxels, and wherein that element of the scene is associated with a voxel address at a current level-of-detail, and the hash function in dependence on which that element is assigned to the memory location in the block of memory is dependent on a corresponding voxel address at a coarser level-of-detail.

16 . The computer implemented method of claim 3 , wherein an element of the scene is a primitive, a portion of a sub-divided primitive or a node of the acceleration structure built for a finer level-of-detail.

17 . The computer implemented method of claim 3 , wherein the memory is a cache or a software-representation of a cache.

18 . The computer implemented method of claim 17 , wherein:

the memory is a set-associative cache, each of the blocks of memory is a group of one or more sets of cachelines, and each of the memory locations is a cacheline; or

the memory is a direct-mapped cache, each of the blocks of memory is a group of one or more cachelines, and each of the memory locations is a cacheline; or

the memory is a software-representation of a set-associative cache, each of the blocks of memory is a software-representation of a group of one or more sets of cachelines, and each of the memory locations is a software-representation of a cacheline; or

the memory is a software-representation of a direct-mapped cache, each of the blocks of memory is a software-representation of a group of one or more cachelines, and each of the memory locations is a software-representation of a cacheline.

19 . The computer implemented method of claim 3 , wherein the scene comprises a plurality of primitives, and the method further comprises, prior to said steps (i), (ii), and (iii):

sorting the primitives into multiple groups of primitives, such that each primitive of the scene is allocated to only one group and all of the primitives are allocated to a group; and

for each group of primitives, independently performing said steps (i), (ii) and (iii).

20 . The computer implemented method of claim 19 , the method further comprising sorting the primitives into multiple groups of primitives in dependence on the position of each of the primitives within in the scene.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 1, 2025
From: CLARK, GREGORY; CHAR, BRUNO
To: IMAGINATION TECHNOLOGIES LIMITED
Reel/Frame 072435/0523 →
SECURITY INTEREST Recorded Jul 31, 2024
From: IMAGINATION TECHNOLOGIES LIMITED
To: FORTRESS INVESTMENT GROUP (UK) LTD
Reel/Frame 068221/0001 →
Priority Claims (1)
GB 2200347 · Jan 12, 2022 · national
Continuity (1)
Related Publication 20230260194A1 · Aug 17, 2023
References Cited (21)
US 8717357B2 · McCombe · 2014 [cited by examiner]
US 9430864B2 · McCombe et al. · 2016 [cited by applicant]
US 10217267B2 · McCombe et al. · 2019 [cited by applicant]
US 10930052B2 · McCombe et al. · 2021 [cited by applicant]
US 11302056B2 · Muthler · 2022 [cited by examiner]
US 11481954B2 · McCombe et al. · 2022 [cited by applicant]
US 11574434B2 · Ozdas · 2023 [cited by examiner]
US 11861786B2 · Ozdas · 2024 [cited by examiner]
US 20130016109A1 · Garanzha · 2013 [cited by applicant]
US 20130033507A1 · Garanzha · 2013 [cited by examiner]
US 20130113800A1 · McCombe et al. · 2013 [cited by applicant]
US 20160371876A1 · McCombe · 2016 [cited by examiner]
US 20210366177A1 · Viitanen et al. · 2021 [cited by applicant]
US 20210398340A1 · Muthler et al. · 2021 [cited by applicant]
US 20230019499A1 · Wada · 2023 [cited by examiner]
US 20230252718A1 · Fenney · 2023 [cited by examiner]
US 20230316642A1 · Mory · 2023 [cited by examiner]
US 20240177392A1 · Murali · 2024 [cited by examiner]
CN 112712581A · 2021 [cited by applicant]
WO 2013022804A1 · 2013 [cited by applicant]
Pineda; “Exploring Material Representations for Sparse Voxel Dags”; Jun. 30, 2021; URL:https://digitalcommons.calpoly.edu/cgi/viewcontent.cgi?article=3860&context=theses; 91 pages. [cited by applicant]