IP Library Granted Patent US 12,198,254
Granted Patent B2
US 12,198,254 · App. 18/385,032 · Granted Jan 14, 2025

Ray tracing system architectures and methods

Inventors: Luke T. Peterson (San Francisco, CA); James Alexander McCombe (San Francisco, CA); Ryan R. Salsbury (San Francisco, CA); Steven J. Clohset (San Francisco, CA)
Assignee: Imagination Technologies Limited
G06T15/06G06T1/60G06T15/08G06T15/80G06T2215/12G09G5/006G09G5/393G09G2360/121G09G2370/10
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,198,254
App. No.
18/385,032
Granted
Jan 14, 2025
Kind
B2
Abstract

Aspects comprise systems implementing 3-D graphics processing functionality in a multiprocessing system. Control flow structures are used in scheduling instances of computation in the multiprocessing system, where different points in the control flow structure serve as points where deferral of some instances of computation can be performed in favor of scheduling other instances of computation. In some examples, the control flow structure identifies particular tasks, such as intersection testing of a particular portion of an acceleration structure, and a particular element of shading code. In some examples, the aspects are used in 3-D graphics processing systems that can perform ray tracing based rendering.

Claims (53)

1. A method of determining mappings, in an n-dimensional space where n≥2, between input data elements and modules for processing input data elements for use in a ray tracing system, the method comprising:

providing a plurality of input data elements;

providing a plurality of modules arranged to process input data elements;

determining a module subset from the plurality of modules, said determining a module subset comprising:

identifying an association between i) at least one module of the plurality of modules and ii) a region of the n-dimensional space; and

allocating the at least one module to the module subset;

determining a mapping between an input data element, of the plurality of input data elements, and the module subset, said determining a mapping comprising:

determining that a spatial extent of the input data element in the n-dimensional space, defined by parameters of the input data element, is near or intersects with the region of the n-dimensional space associated with the module subset; and

scheduling the input data element for processing by at least one module comprised within the module subset.

2. The method of claim 1 , wherein each module of the plurality of modules is associated with one or more points in the n-dimensional space.

3. The method of claim 2 , wherein the region of the n-dimensional space associated with the module subset comprises a respective one or more points associated with each respective module comprised within the module subset.

4. The method of claim 1 , wherein the n-dimensional space is sub-divided into a plurality of regions defined by an acceleration structure, and wherein the region of the n-dimensional space associated with the module subset is a region defined by the acceleration structure.

5. The method of claim 4 , wherein acceleration elements of the acceleration structure define boundaries, wherein the boundaries define each respective region of the n-dimensional space associated with each respective module subset.

6. The method of claim 5 , wherein the boundaries are hypersurfaces within the n-dimensional space.

7. The method of claim 5 , wherein the determining that the spatial extent is near or intersects with the region of the n-dimensional space associated with the module subset comprises:

performing an intersection test to determine that the spatial extent, defined by parameters of the input data element, intersects with a boundary bounding the region of the n-dimensional space associated with the module subset.

8. The method of claim 1 , wherein the parameters that define the spatial extent of the input data element define, at least in part, a region or path in the n-dimensional space.

9. The method of claim 8 , wherein values of the parameters that define the spatial extent of the input data element further define, at least in part, a region or path in the n-dimensional space.

10. The method of claim 8 , wherein the input data element is a ray, and the parameters defining the spatial extent of the input data element comprise an origin and a direction in 3D space.

11. The method of claim 1 , wherein each module of the plurality of modules relates to at least a portion of code of a shader module, the shader module for shading primitives.

12. The method of claim 1 , wherein the identifying an association between i) at least one module of the plurality of modules and ii) a region of the n-dimensional space is performed in dependence on:

spatial information defining object data for at least a portion of an object;

information identifying a region of memory which has been loaded with the object data; and

information identifying which modules have access to the region of memory having been loaded with the object data.

13. The method of claim 1 , wherein processing the input data element comprises at least one of:

a) determining that no execution is needed in respect of the input data element;

b) identifying a portion of code to be executed to process the input data element

c) executing an identified portion of code associated with at least one module comprised within the module subset, using the input data element as input.

14. The method of claim 1 , further comprising:

determining a plurality of further mappings between a plurality of further input data elements and the module subset to thereby obtain a collection of input data elements associated with the module subset; and

scheduling the collection of input data elements for processing by at least one module comprised within the module subset.

15. The method of claim 14 , comprising deferring the processing of the collection of input data elements in preference for a further collection of input data elements comprising a greater number of input data elements.

16. The method of claim 14 , comprising concurrently executing code portions associated with at least one module within the module subset to process the collection of input data elements.

17. The method of claim 1 , further comprising processing the input data element by the at least one module comprised within the module subset to generate an output, wherein the output is used in the ray tracing system for rendering an image of a 3D scene.

18. The method of claim 1 , wherein processing the input data element comprises performing one or more operations to be performed during one or more of: acceleration structure traversal, primitive intersection testing, and primitive shading.

19. A scheduling unit configured to determine mappings, in a ray tracing system, in an n-dimensional space where n≥2, between input data elements and modules for processing input data elements, the scheduling unit configured to:

provide a plurality of input data elements;

provide a plurality of modules arranged to process input data elements;

determine a module subset from the plurality of modules, said determining a module subset comprising:

identifying an association between i) at least one module of the plurality of modules and ii) a region of the n-dimensional space; and

allocating the at least one module to the module subset;

determine a mapping between an input data element, of the plurality of input data elements, and the module subset, said determining a mapping comprising:

determining that a spatial extent of the input data element in the n-dimensional space, defined by parameters of the input data element, is near or intersects with the region of the n-dimensional space associated with the module subset; and

schedule the input data element for processing by at least one module comprised within the module subset.

20. A non-transitory computer readable storage medium having stored thereon an integrated circuit definition dataset that, when processed in an integrated circuit manufacturing system, configures the integrated circuit manufacturing system to manufacture a scheduling unit which is configured to determine mappings, in a ray tracing system, in an n-dimensional space where n≥2, between input data elements and modules for processing input data elements, the scheduling unit configured to:

provide a plurality of input data elements;

provide a plurality of modules arranged to process input data elements;

determine a module subset from the plurality of modules, said determining a module subset comprising:

identifying an association between i) at least one module of the plurality of modules and ii) a region of the n-dimensional space; and

allocating the at least one module to the module subset;

determine a mapping between an input data element, of the plurality of input data elements, and the module subset, said determining a mapping comprising:

determining that a spatial extent of the input data element in the n-dimensional space, defined by parameters of the input data element, is near or intersects with the region of the n-dimensional space associated with the module subset; and

schedule the input data element for processing by at least one module comprised within the module subset.

Assignments (1)
SECURITY INTEREST Recorded Jul 31, 2024
From: IMAGINATION TECHNOLOGIES LIMITED
To: FORTRESS INVESTMENT GROUP (UK) LTD
Reel/Frame 068221/0001 →
Continuity (14)
Continuation 17540137 · Dec 1, 2021
Continuation 14936986 · Nov 10, 2015
Continuation 14142831 · Dec 28, 2013
Continuation 13610651 · Sep 11, 2012
Continuation 13229566 · Sep 9, 2011
Continuation 12555766 · Sep 8, 2009
Continuation In Part 12408478 · Mar 20, 2009
Continuation In Part 11856612 · Sep 17, 2007
Provisional Application 61229705 · Jul 29, 2009
Provisional Application 61229258 · Jul 28, 2009
Provisional Application 61095890 · Sep 10, 2008
Provisional Application 61038731 · Mar 21, 2008
Provisional Application 60826201 · Sep 19, 2006
Related Publication 20240062452A1 · Feb 22, 2024
References Cited (25)
US 4625389A · Rockwood · 1986 [cited by applicant]
US 5933146A · Wrigley · 1999 [cited by applicant]
US 5973699A · Kent · 1999 [cited by applicant]
US 6097394A · Levoy et al. · 2000 [cited by applicant]
US 6313908B1 · McGill et al. · 2001 [cited by applicant]
US 6489955B1 · Newhall, Jr. · 2002 [cited by applicant]
US 6731304B2 · Sowizral et al. · 2004 [cited by applicant]
US 7030879B1 · Pharr · 2006 [cited by applicant]
US 7362332B2 · Gritz · 2008 [cited by applicant]
US 7483024B2 · Maillot · 2009 [cited by applicant]
US 7830379B2 · Peterson et al. · 2010 [cited by applicant]
US 8358305B2 · Yoon et al. · 2013 [cited by applicant]
US 20030151604A1 · Kaufman et al. · 2003 [cited by applicant]
US 20030174132A1 · Kunimatsu et al. · 2003 [cited by applicant]
US 20040114807A1 · Lelescu et al. · 2004 [cited by applicant]
US 20040125103A1 · Kaufman et al. · 2004 [cited by applicant]
US 20050017971A1 · Ard · 2005 [cited by applicant]
US 20060139349A1 · Reshetov et al. · 2006 [cited by applicant]
US 20070035545A1 · Hempel et al. · 2007 [cited by applicant]
US 20080074421A1 · Hayes · 2008 [cited by applicant]
US 20090189898A1 · Dammertz et al. · 2009 [cited by applicant]
Alexandre S. Nery; Nadia Nedjah; Felipe M.G. França; “A parallel architecture for Ray-Tracing;” 2010 First IEEE Latin American Symposium on Circuits and Systems (LASCAS); IEEE; 4 pages (Year: 2010). [cited by examiner]
Woop et al., “RPU: A Programmable Ray Processing Unit for Realtime Ray Tracing,” ACM 2005, pp. 434-444. [cited by applicant]
Lefer, “An Efficient Parallel Ray Tracing Scheme for Distributed Memory Parallel Computers,” Parallel Rendering Symposium, Oct. 25, 1993, pp. 77-80. [cited by applicant]
Note: NPL in parent application). [cited by applicant]