IP Library Granted Patent US 12,260,488
Granted Patent B2
US 12,260,488 · App. 18/387,171 · Granted Mar 25, 2025

Methods and graphics processing units for determining differential data for rays of a ray bundle

Inventors: Luke T. Peterson (San Francisco, CA); James Jones (Kings Langley, GB); Aaron Dwyer (San Francisco, CA)
Assignee: Imagination Technologies Limited
G06T15/06G06T1/20G06T15/20G06T15/80G06T17/20G06T2200/04
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,260,488
App. No.
18/387,171
Granted
Mar 25, 2025
Kind
B2
Abstract

Graphics processing system configured to perform ray tracing. Rays are bundled together and processed together. When differential data is needed by a shader, the data of a true ray in the bundle can be used rather than processing separate tracker rays.

Claims (38)

1. A computer-implemented method of processing rays in a ray bundle in a graphics processing system, the method comprising:

executing a plurality of instances of a shader program, an instance corresponding to a ray of the ray bundle;

wherein the shader program is operable to utilize data determined by the execution of an instance of the shader program corresponding to a first ray of the ray bundle in the execution of an instance of the shader program for a further ray of the ray bundle.

2. The method of claim 1 , further comprising:

emitting a secondary ray from each of two or more instances of the shader program; and

grouping the secondary rays into another ray bundle.

3. The method of claim 2 , wherein said two or more instances of the shader program correspond to rays of the ray bundle.

4. The method of claim 1 , further comprising performing intersection testing on the rays of the ray bundle.

5. The method of claim 4 , wherein said executing a plurality of instances of a shader program is performed in response to results of said performing intersection testing on the rays of the ray bundle.

6. The method of claim 4 , further comprising using results of the intersection testing for the rays of the ray bundle to determine whether the rays are to be maintained in the ray bundle, wherein rays are maintained in the ray bundle if they have matching intersection testing results, wherein rays are considered to have matching intersection testing results if:

the rays intersect with the same primitive;

the rays intersect with the same mesh;

the rays intersect with the same object;

the intersections invoke the same one or more shader programs to be executed;

the difference between surface normals at the intersection points is below an angular threshold; or

the difference between the ray depths in the intersection points is below a depth threshold.

7. The method of claim 1 , further comprising receiving an indication via an API to indicate that a plurality of rays are intended to be coherent, wherein the method further comprises grouping said plurality of rays together into the ray bundle on the basis of the received indication.

8. The method of claim 1 , further comprising constructing a data structure representing the rays in the ray bundle, wherein full precision ray data is stored in the data structure, and wherein difference data is stored in the data structure for one or more of the rays of the ray bundle representing differences in the ray data compared to the full precision ray data stored in the data structure.

9. The method of claim 8 , wherein said full precision ray data is stored in the data structure for one of the rays of the ray bundle, and wherein said difference data is stored in the data structure for the other rays of the ray bundle.

10. The method of claim 1 , wherein the execution of an instance of the shader program for said further ray of the ray bundle comprises determining differential data for said further ray of the ray bundle using data for said first ray of the ray bundle.

11. The method of claim 10 , wherein the differential data is indicative of a gradient for the further ray.

12. The method of claim 1 , wherein the instances of the shader program are executed in parallel for different rays of the ray bundle.

13. The method of claim 1 , further comprising splitting a ray from the ray bundle if the ray does not have matching intersection testing results with other rays in the ray bundle.

14. The method of claim 1 , further comprising, if a ray of the ray bundle does not have matching intersection testing results with other rays in the ray bundle, marking the ray as a tracker ray in the ray bundle, wherein tracker rays are used to determine differential data for other rays in the bundle.

15. The method of claim 1 , wherein the rays to be grouped together are emitted due to the execution of a shader program, wherein a decision as to which rays to group together into a ray bundle is defined in the shader program causing the rays to be emitted.

16. The method of claim 1 , wherein a ray bundle comprises:

four rays corresponding to a 2×2 block of fragments; or

sixteen rays corresponding to a 4×4 block of fragments, wherein only a 3×3 block of the rays are valid rays and the remaining rays are tracker rays.

17. A graphics processing unit configured to process rays in a ray bundle, the graphics processing unit comprising processing logic configured to execute a plurality of instances of a shader program, an instance corresponding to a ray of the ray bundle, wherein the shader program is operable to utilize data determined by the execution of an instance of the shader program corresponding to a first ray of the ray bundle in the execution of an instance of the shader program for a further ray of the ray bundle.

18. The graphics processing unit of claim 17 , further comprising ray memory for storing ray data for the rays of the ray bundle, wherein the ray memory is configured to store data for the rays of a ray bundle in a data structure, wherein the data structure for the ray bundle comprises:

full precision ray data for one of the rays of the ray bundle; and

difference data for the other rays of the ray bundle representing differences in the ray data compared to the full precision ray data stored in the data structure.

19. The graphics processing unit of claim 17 ,

wherein the full precision ray data comprises: (i) a floating point 3-component vector to represent a ray origin, and (ii) a floating point 3-component vector to represent a ray direction; and

wherein the difference data comprises, for each of said one or more of the rays of the ray bundle: (i) three limited precision delta vectors for a ray origin, and (ii) three limited precision delta vectors for a ray direction.

20. 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 processing rays in a ray bundle in a graphics processing system, the method comprising:

executing a plurality of instances of a shader program, an instance corresponding to a ray of the ray bundle;

wherein the shader program is operable to utilize data determined by the execution of an instance of the shader program corresponding to a first ray of the ray bundle in the execution of an instance of the shader program for a further ray of the ray bundle.

Assignments (1)
SECURITY INTEREST Recorded Jul 31, 2024
From: IMAGINATION TECHNOLOGIES LIMITED
To: FORTRESS INVESTMENT GROUP (UK) LTD
Reel/Frame 068221/0001 →
Continuity (4)
Continuation 16116699 · Aug 29, 2018
Continuation 15458110 · Mar 14, 2017
Provisional Application 62307817 · Mar 14, 2016
Related Publication 20240070966A1 · Feb 29, 2024
References Cited (49)
US 8035898B2 · Minano et al. · 2011 [cited by applicant]
US 8310481B2 · Bailey · 2012 [cited by applicant]
US 8441477B2 · Kho et al. · 2013 [cited by applicant]
US 8482561B2 · McCombe et al. · 2013 [cited by applicant]
US 8525826B2 · Nutter et al. · 2013 [cited by applicant]
US 8587588B2 · Smyth · 2013 [cited by applicant]
US 8593458B2 · McCombe et al. · 2013 [cited by applicant]
US 8665271B2 · Nutter et al. · 2014 [cited by applicant]
US 8797322B2 · Peterson et al. · 2014 [cited by applicant]
US 8952961B2 · Peterson et al. · 2015 [cited by applicant]
US 9228921B2 · Yamazoe · 2016 [cited by applicant]
US 9460546B1 · Stich · 2016 [cited by examiner]
US 9460547B2 · McCombe et al. · 2016 [cited by applicant]
US 9704283B2 · Ozdas et al. · 2017 [cited by applicant]
US 10089777B2 · Peterson et al. · 2018 [cited by applicant]
US 10217266B2 · Howson et al. · 2019 [cited by applicant]
US 10453245B2 · Ozdas et al. · 2019 [cited by applicant]
US 10832371B2 · Doyle et al. · 2020 [cited by applicant]
US 20090167763A1 · Waechter et al. · 2009 [cited by applicant]
US 20090322752A1 · Peterson · 2009 [cited by examiner]
US 20100073369A1 · McCombe et al. · 2010 [cited by applicant]
US 20100328310A1 · Peterson et al. · 2010 [cited by applicant]
US 20120133654A1 · Redgrave · 2012 [cited by examiner]
US 20120139926A1 · Clohset · 2012 [cited by examiner]
US 20130050213A1 · McCombe et al. · 2013 [cited by applicant]
US 20130328871A1 · Piemonte · 2013 [cited by examiner]
US 20140333623A1 · Ozdas et al. · 2014 [cited by applicant]
US 20160063753A1 · Peterson · 2016 [cited by examiner]
US 20160275718A1 · Subr · 2016 [cited by examiner]
US 20170263044A1 · Peterson et al. · 2017 [cited by applicant]
EP 2610814A1 · 2013 [cited by applicant]
JP H10293782A · 1998 [cited by applicant]
JP 2012503259A · 2012 [cited by applicant]
WO 2010033942A1 · 2010 [cited by applicant]
Christensen et al., “Ray Differentials and Multiresolution Geometry Caching for Distribution Ray Tracing in Complex Scenes,” Computer Graphics Forum, vol. 22, No. 3, Blackwell Publishing, Inc. 2003. [cited by applicant]
Igehy, “Tracing Ray Differentials,” Proceedings of the 26th annual conference on Computer graphics and interactive techniques (SIGGRAPH '99), pp. 179-186, 1999. [cited by applicant]
Hanika et al., “Two-Level Ray Tracing with Reordering for Highly Complex Scenes,” GI '10: Proceedings of Graphics Interface 2010, pp. 145-152, May 2010. [cited by applicant]
Lauterbach, “Interactive Ray Tracing of Massive and Deformable Models,” ProQuest LLC, UMI No. 3428375 (2010). [cited by applicant]
Mansson et al., “Deep Coherent Ray Tracing,” IEEE Symposium on Ray Tracing (2007). [cited by applicant]
Reshetov et al., “Multi-Level Ray Tracing Algorithm,” ACM Transactions on Graphics ,vol. 24, Issue 3, pp. 1176-1185 (2005). [cited by applicant]
Shirayanagi, “Methods for Calculating the Vergence of an Astigmatic Ray Bundle in an Optical System that Contains a Freeform Surface,” Opt. Rev (2016) 23:730-745. [cited by applicant]
Sporring et al., “Spatial and Temporal Ray Differentials,” Department of Computer Science: Museum Tusculanum, Technical Report No. 09/04, 2009. [cited by applicant]
Szirmay-Kalos et al., “Specular Effects on the GPU: State of the Art,” Journal Compilation, The Eurographics Association and Blackwell Publishing Ltd., 2009. [cited by applicant]
Van Der Zwaan et al., “Pyramid Clipping for Efficient Ray Traversal,” Rendering Techniques'95, 10.1007/978-3-7091-9430-0_1, (1998). [cited by applicant]
Wald et al., “Interactive Rendering with Coherent Ray Tracing,” Eurographics, vol. 20, the Eurographics Association and Blackwell Publishers 2001. [cited by applicant]
Wald et al., “Realtime Ray Tracing and its use for Interactive Global Illumination,” STAR-State of the Art Report, Eurographics, 2003. [cited by applicant]
Wald et al., “State of the Art in Ray Tracing Animated Scenes,” STAR Proceedings of Eurographics 2007, pp. 89-116, 2007. [cited by applicant]
Bigler et al; “Design for Parallel Interactive Ray Tracing Systems”; IEEE Symposium on Interactive Ray Tracing; Sep. 2006; pp. 187-196. [cited by applicant]
Boulos et al; “Packet-based whited and distribution ray tracing”; Graphics Interface 2005; May 28, 2007; pp. 177-184. [cited by applicant]